From 858fa25c480ce9dda02a73a7a1909b8d66e79af8 Mon Sep 17 00:00:00 2001 From: garrettmills Date: Mon, 30 Aug 2021 13:48:38 -0500 Subject: [PATCH] pnpm i monkeypatch; dark mode logout; node-link search fix --- README.md | 6 + package-lock.json | 394 ++++++++++++++++++ package.json | 3 +- src/app/app.component.ts | 17 +- src/app/components/search/Search.component.ts | 5 +- src/app/service/navigation.service.ts | 18 +- src/app/service/opener.service.ts | 8 + 7 files changed, 440 insertions(+), 11 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..42b3e2b --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +## `node_modules` +```sh +pnpm i +vim node_modules/ngx-monaco-editor/lib/monaco.d.ts +# comment the line "declare let MonacoEnvironment: monaco.Environment | undefined;" +``` diff --git a/package-lock.json b/package-lock.json index 4691bc5..5000f57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1847,6 +1847,349 @@ } } }, + "@ckeditor/ckeditor5-adapter-ckfinder": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-27.1.0.tgz", + "integrity": "sha512-qIuoMosLHf6AaWYs0mkBmdOGRuXg8lTbSg78IanBZy67Z+VZ+cdWnqWpYUhVhFtf8xzu8qwMe8SuScoJSOyjww==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-alignment": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-27.1.0.tgz", + "integrity": "sha512-CLYtOMh8AHf2V1VHwbJlVFNupVrf54Cz2e0PS6inSssTQkl9mznouxboi1VJtJbl6EA+JlrR0EjIljf4V8aoGQ==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-angular": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-angular/-/ckeditor5-angular-2.0.2.tgz", + "integrity": "sha512-V+L83wW8LiaJsR6roY3eau3aCSWP7QCRRlPIW4TdvxlPLBYT3N5vI46cHZPwVeBhz5vBwtYjNj3GmpCZD4M0cg==", + "requires": { + "@ckeditor/ckeditor5-watchdog": "^23.0.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@ckeditor/ckeditor5-autoformat": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-27.1.0.tgz", + "integrity": "sha512-iFhPa2284DhLpyd6fI3/SCwLdgePDplTzMRccqL5IEfRKBQiTsJDbdilR+q903pBS4ZBBBAszVtR3GSWTW53Sw==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-basic-styles": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-27.1.0.tgz", + "integrity": "sha512-a6pHvmo6z438aVwX5NdJUd5ksNIBOjqvHBUQegCXRvHmkwG/PfiNfTobYSgdyEs7hGi5fna0d9loBWjGGgLKmQ==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-block-quote": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-27.1.0.tgz", + "integrity": "sha512-V8o4ZklhO6pFnvTpWQZXkQ1wJ4SNf0tOX8KG9oRtm1FxuZ7KRNPJRJ0dW/bvtN3v0tzq0Gx/glcgJMhfjiO/8g==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-build-decoupled-document": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-decoupled-document/-/ckeditor5-build-decoupled-document-27.1.0.tgz", + "integrity": "sha512-HP5BQlVYolnCd13NuLw5JTt+boVFS7viFjd3SiAOl//a4X6ziLE/tMDLWc5uu/Onrw3TOHtUNSYK7j84lc553Q==", + "requires": { + "@ckeditor/ckeditor5-adapter-ckfinder": "^27.1.0", + "@ckeditor/ckeditor5-alignment": "^27.1.0", + "@ckeditor/ckeditor5-autoformat": "^27.1.0", + "@ckeditor/ckeditor5-basic-styles": "^27.1.0", + "@ckeditor/ckeditor5-block-quote": "^27.1.0", + "@ckeditor/ckeditor5-ckfinder": "^27.1.0", + "@ckeditor/ckeditor5-cloud-services": "^27.1.0", + "@ckeditor/ckeditor5-easy-image": "^27.1.0", + "@ckeditor/ckeditor5-editor-decoupled": "^27.1.0", + "@ckeditor/ckeditor5-essentials": "^27.1.0", + "@ckeditor/ckeditor5-font": "^27.1.0", + "@ckeditor/ckeditor5-heading": "^27.1.0", + "@ckeditor/ckeditor5-image": "^27.1.0", + "@ckeditor/ckeditor5-indent": "^27.1.0", + "@ckeditor/ckeditor5-link": "^27.1.0", + "@ckeditor/ckeditor5-list": "^27.1.0", + "@ckeditor/ckeditor5-media-embed": "^27.1.0", + "@ckeditor/ckeditor5-paragraph": "^27.1.0", + "@ckeditor/ckeditor5-paste-from-office": "^27.1.0", + "@ckeditor/ckeditor5-table": "^27.1.0", + "@ckeditor/ckeditor5-typing": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-ckfinder": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-27.1.0.tgz", + "integrity": "sha512-AiuH1dsKF1bA7SP0MAYMANkbEn01+yARw8sekmYU+OgCm+vzylyhkEAykPXhuJBOaosfMWsfVXZHu6kJ+2Yiiw==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-clipboard": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-27.1.0.tgz", + "integrity": "sha512-nJnJgv8Fuqol2cl6CkbSDwjCu3y8pTS5Y/KJnA/JnTG0QcZczdQTjMIFl3ZP2/53JR5QekATIKmp1wcUAP/L1A==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0", + "@ckeditor/ckeditor5-widget": "^27.1.0", + "lodash-es": "^4.17.11" + } + }, + "@ckeditor/ckeditor5-cloud-services": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-27.1.0.tgz", + "integrity": "sha512-qZQu8f6h1hYdbFCKRiW0w6tiRsWpz3XBnYLrVHzjl+FPYzDSsAHidHOqwOIxW1fah6j8jH2gArTM7pEOLRNonA==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-core": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-27.1.0.tgz", + "integrity": "sha512-4K30Qw2jYHMt6Yk4+Covi4b39XO3znM7/VPRh7mcq/MBbHxK4dTrX/UBWtsYrgFBg6KPteNKU03aT9GDMsbvBw==", + "requires": { + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-easy-image": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-27.1.0.tgz", + "integrity": "sha512-JX1VZhDGfZlxcAbeavV+KHfuOkRvvMDzRpLvFGeczeaXveCnMG0txDyiVFNHRR+NpSiCUO5gbTo9XMh4E8STAA==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-editor-decoupled": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-27.1.0.tgz", + "integrity": "sha512-rcG/pMKN/eVMCjxTGLM4LC36LafcznswYnD9qH4ZSXUEh4lkOehL1Y0C8KYaEzwVZbNc/EUueZCLU4EHROdljg==", + "requires": { + "ckeditor5": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-engine": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-27.1.0.tgz", + "integrity": "sha512-lGvIYexhhCTo5lZqf8EqS25hCpayPY/wQZXvnReFylB24aztUacOBYK2sgNOmwBnzKjpv90Y7GKEpdDL/8CDSg==", + "requires": { + "@ckeditor/ckeditor5-utils": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-enter": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-27.1.0.tgz", + "integrity": "sha512-vqldhUklSYQhpZDXyVJ9dEvl9zK0V8L5kPXicsONaICmnRO0uRD9Q2zIyv+R62sIrTvF3fTJvDCH4kjZog09lQ==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-essentials": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-27.1.0.tgz", + "integrity": "sha512-BneCm9uOD4ir+Tji2ADgYVwHWE54bJ6OpZza8UNIKvo9koGaFB5jmT6M2xXwK508RusiRlvgGrd2M4qa7CWM0A==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-font": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-27.1.0.tgz", + "integrity": "sha512-IKk4/6lD9NdOyuW5aCetsCZTos91MF3q0lPlADxn0F4YHP8VcEZdFxuAb/jKsfcJKPmhcQYJ+kVbcVbL7Vi38A==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-heading": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-27.1.0.tgz", + "integrity": "sha512-KLJXOWns3Hk1CbTl7gxDaO115fYn6eRUz8fBs/wI544qbpyX8xdnVtNGO+9CMbsA7StmIPEBzXAYbnqcIjc6lg==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-image": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-27.1.0.tgz", + "integrity": "sha512-RN35K95TdWfVQLjravmh7mRjtKXozbIv7Ox0pWRblMwUQO4/miZmNCdkVCae9FtWpTaKGMsehT5pDuACg5MU2A==", + "requires": { + "@ckeditor/ckeditor5-ui": "^27.1.0", + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-indent": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-27.1.0.tgz", + "integrity": "sha512-6yswg+LGMwQUWp77FTk1x5dFRfkC+4r2w79R2pT0QX/slw8/4eC32kflaVIKiVN+NoO38SWS48raqMu7iWdybw==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-link": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-27.1.0.tgz", + "integrity": "sha512-BCLvzqoFFWTNploi0WX9/Qn+zxmPN3gSySX4B4yTAl8K9mdJ6/diRXsWFjuzgt80Lp1USIX7MeGLJvxeep5tlw==", + "requires": { + "@ckeditor/ckeditor5-ui": "^27.1.0", + "ckeditor5": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-list": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-27.1.0.tgz", + "integrity": "sha512-Cq9lAnxpx6OrIQuOdqfy+O4JuUh30NVUHFhzJvj0A+p5pLOESyOkchZ2tRNYoK5J7pWJFi/rmM0uvCE3ESouRg==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-media-embed": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-27.1.0.tgz", + "integrity": "sha512-yINfmdvkO7W+hGadquuRr2X20eDS+2ewijhzdbegp+YWuARzTLdvrUTydtLY5IsCSzK5/80P4hYIKSw49IAAiQ==", + "requires": { + "@ckeditor/ckeditor5-ui": "^27.1.0", + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-paragraph": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-27.1.0.tgz", + "integrity": "sha512-zNy+GzWgcf0Oo/AshtwDbfgwQ8UlR1rs3tQpSPyYU7/8FbrqrdVv6JUzUlsBqcMHi06O+RT4HT5yFEaOYYbUVg==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-paste-from-office": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-27.1.0.tgz", + "integrity": "sha512-G+pQPSXH0QDHBKLZ+xQ3aaqgyqF3kRqBZHW/KWaJBzEmqFrgQSeGfuFnQmrQNInOuTJ/9wLF2ZRiyLZP6rbzow==", + "requires": { + "ckeditor5": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-select-all": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-27.1.0.tgz", + "integrity": "sha512-vTFgOpKNOLmBYEaK6pA/7XFzUZ6jaXChLVk1PW5LpfadAZ01xlL8ZK3YF4ZIQSjKct6LJgCF3BqfKpWgHvnObw==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-table": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-27.1.0.tgz", + "integrity": "sha512-2k0LEli45lD0vRu+sLj5Gs5o+kcDLg6IiMUB7/GtM+SN9JAclN1ZPtodagOCafR3rrkeixayZ4Lk0vomjuCtKw==", + "requires": { + "ckeditor5": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-typing": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-27.1.0.tgz", + "integrity": "sha512-MfwNEYaAuaz1kPyHwfT1gtRE4DwnjaYwRbW9EH53Dsu+eSTCAc/4A0z+VVJ4aBlRADkPeNAQ3ecK0kVJNb55yw==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-ui": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-27.1.0.tgz", + "integrity": "sha512-rGzGjgxSZjKFpkUB0MjpvYqQW9lZNVinBpBgOD/j0Q8OZ/HohLIJJBRaQbEKLJgIR0BXPNPQSC4NQt44Vc1YBw==", + "requires": { + "@ckeditor/ckeditor5-utils": "^27.1.0", + "ckeditor5": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-undo": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-27.1.0.tgz", + "integrity": "sha512-Z/iBrfcXgYOj5NBgqZqodvQ0tMhIqaErMamIX2DU0XCUbcWDomU+z5gHAHj6JzmX8C3cwpOhivOvgX2A+dUvAg==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-upload": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-27.1.0.tgz", + "integrity": "sha512-VYqvxl8zI9C2Lt3RFlqJv8li0p3yRCRpnyU1yRCzQCwihZMq4nK111C6IBAiUt7cdWPVPfP8vlPKzA2S0q1Tig==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0" + } + }, + "@ckeditor/ckeditor5-utils": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-27.1.0.tgz", + "integrity": "sha512-7hFK2jUmUJEcgYITr0YtXVf1/FZkOPgMG/wAkOfpd2EYZJ31szNXVFRiYucmxpdRYvqJ4F1YsQQcRITcMc5twg==", + "requires": { + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-watchdog": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-23.1.0.tgz", + "integrity": "sha512-LQSWhsNPDsFPvxU+8O40pu/rPE2U7s4WobPcJm/6qKcM+WkTGdDG4rVuo5sackua3MulUeLGlfZSqFtX6Zsuag==", + "requires": { + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-widget": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-27.1.0.tgz", + "integrity": "sha512-DpdwcWjXKHxoOZmFmc+2vIq8Nr4hA5140zxO3IIMrUiydcZJyOp2atHiPV7idBi5gR8ct+asQ3nW+cwVELQuhQ==", + "requires": { + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-enter": "^27.1.0", + "@ckeditor/ckeditor5-typing": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0", + "lodash-es": "^4.17.15" + } + }, + "@convergencelabs/monaco-collab-ext": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@convergencelabs/monaco-collab-ext/-/monaco-collab-ext-0.3.2.tgz", + "integrity": "sha512-yW5WI+pulIh4/fY5p2A9V8YkghQEfB6t33xqVAXkztjSG7MPBd9izlEtK13t0htVHk2vWj0JYhfWT853Gs60ow==", + "requires": { + "monaco-editor": ">=0.15.6" + } + }, "@fortawesome/fontawesome-free": { "version": "5.15.1", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.1.tgz", @@ -3923,6 +4266,25 @@ "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", "dev": true }, + "ckeditor5": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-27.1.0.tgz", + "integrity": "sha512-XBoMqrML4mmQozSBXgZfFUBJPN3ErTls0wQhP8YkOiglhNXSBaLIE07QKcB0/H/lA2luqxijJGSXw7sr5SWE1A==", + "requires": { + "@ckeditor/ckeditor5-clipboard": "^27.1.0", + "@ckeditor/ckeditor5-core": "^27.1.0", + "@ckeditor/ckeditor5-engine": "^27.1.0", + "@ckeditor/ckeditor5-enter": "^27.1.0", + "@ckeditor/ckeditor5-paragraph": "^27.1.0", + "@ckeditor/ckeditor5-select-all": "^27.1.0", + "@ckeditor/ckeditor5-typing": "^27.1.0", + "@ckeditor/ckeditor5-ui": "^27.1.0", + "@ckeditor/ckeditor5-undo": "^27.1.0", + "@ckeditor/ckeditor5-upload": "^27.1.0", + "@ckeditor/ckeditor5-utils": "^27.1.0", + "@ckeditor/ckeditor5-widget": "^27.1.0" + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -7079,6 +7441,16 @@ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", "dev": true }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + }, + "highlightjs-line-numbers.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/highlightjs-line-numbers.js/-/highlightjs-line-numbers.js-2.8.0.tgz", + "integrity": "sha512-TEf1gw0c8mb8nan0QwliqS7obT4cpUd9hzsGzsZLweteNnWea/VIqy5/aQqsa5wnz9lnvmtAkS1ZtDTjB/goYQ==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -9583,6 +9955,11 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, + "monaco-editor": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.27.0.tgz", + "integrity": "sha512-UhwP78Wb8w0ZSYoKXQNTV/0CHObp6NS3nCt51QfKE6sKyBo5PBsvuDOHoI2ooBakc6uIwByRLHVeT7+yXQe2fQ==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -9700,6 +10077,23 @@ "tslib": "^1.9.0" } }, + "ngx-highlightjs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/ngx-highlightjs/-/ngx-highlightjs-4.1.4.tgz", + "integrity": "sha512-yh5p8J+mUNHMm5kQM1CAyRdLT2KiW631l/Rky+rkxwT6NZHG80yImWXZt7RG3heTQzd1wDOWMQ8JznF3KeUv5g==", + "requires": { + "highlight.js": "^10.0.0", + "highlightjs-line-numbers.js": "^2.8.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, "ngx-markdown": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-10.1.1.tgz", diff --git a/package.json b/package.json index 7841b0a..15de499 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "build": "ng build", "test": "ng test", "lint": "ng lint", - "e2e": "ng e2e" + "e2e": "ng e2e", + "postinstall": "sed -i '/^declare let MonacoEnvironment/d' node_modules/ngx-monaco-editor/lib/monaco.d.ts" }, "private": true, "dependencies": { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index de47584..6d321f6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -540,6 +540,10 @@ export class AppComponent implements OnInit { async initializeApp() { const initializedOnce = this.navService.initialized$.getValue(); + if ( this.isDark() ) { + this.toggleDark(); + } + debug('app', this); this.loader = await this.loading.create({ message: 'Setting things up...', @@ -681,15 +685,18 @@ export class AppComponent implements OnInit { this.onMenuRefresh(quiet); }); - this.navService.navigationRequest$.subscribe(pageId => { - debug('Page navigation request: ', {pageId}); - if ( !pageId ) { + this.navService.navigationRequest$.subscribe(request => { + debug('Page navigation request: ', request); + if ( !request.pageId ) { debug('Empty page ID. Will not navigate.'); return; } - this.opener.currentPageId = pageId; - this.router.navigate(['/editor', { id: pageId }]); + this.opener.currentPageId = request.pageId; + this.router.navigate(['/editor', { + id: request.pageId, + ...(request.nodeId ? { node_id: request.nodeId } : {}), + }]); }); this.navService.initializationRequest$.subscribe((count) => { diff --git a/src/app/components/search/Search.component.ts b/src/app/components/search/Search.component.ts index 6f9a7fc..15c0031 100644 --- a/src/app/components/search/Search.component.ts +++ b/src/app/components/search/Search.component.ts @@ -4,7 +4,7 @@ import {ApiService} from '../../service/api.service'; import {BehaviorSubject} from 'rxjs'; import {Router} from '@angular/router'; import {NodeTypeIcons} from '../../structures/node-types'; -import {debounce} from '../../utility'; +import {debounce, debug} from '../../utility'; import {OpenerService} from '../../service/opener.service'; export interface SearchResult { @@ -122,6 +122,7 @@ export class SearchComponent implements OnInit { } async openResult(result: SearchResult) { + debug('Search result:', result); const nodeTypes = [ 'node', 'code', 'files', 'markdown', ]; @@ -136,6 +137,8 @@ export class SearchComponent implements OnInit { await this.opener.openDatabase(result.associated.id, result.id); } else if ( result.type.startsWith('file_box') ) { await this.opener.openFileBox(result.associated.id, result.id, result.boxId); + } else { + debug('No open handler for search result!'); } } diff --git a/src/app/service/navigation.service.ts b/src/app/service/navigation.service.ts index 9619f4d..6c1fc58 100644 --- a/src/app/service/navigation.service.ts +++ b/src/app/service/navigation.service.ts @@ -6,13 +6,20 @@ import {FileBoxPageComponent} from '../components/nodes/file-box/file-box-page.c import {ModalController} from '@ionic/angular'; import {ApiService} from './api.service'; +export interface NavigationRequest { + pageId: string; + nodeId?: string; +} + @Injectable({ providedIn: 'root' }) export class NavigationService { protected refreshCount = 0; public readonly sidebarRefresh$: BehaviorSubject<[number, boolean]> = new BehaviorSubject<[number, boolean]>([this.refreshCount, true]); - public readonly navigationRequest$: BehaviorSubject = new BehaviorSubject(''); + public readonly navigationRequest$: BehaviorSubject = new BehaviorSubject({ + pageId: '', + }); public readonly initializationRequest$: BehaviorSubject = new BehaviorSubject(0); public readonly initialized$: BehaviorSubject = new BehaviorSubject(false); @@ -26,11 +33,14 @@ export class NavigationService { this.sidebarRefresh$.next([this.refreshCount, quiet]); } - requestNavigation(pageId: string) { - debug('Requesting page navigation:', pageId); + requestNavigation(pageId: string, nodeId?: string) { + debug('Requesting page navigation:', pageId, nodeId); debug('Page navigation trace', new Error()); - this.navigationRequest$.next(pageId); + this.navigationRequest$.next({ + pageId, + nodeId + }); } requestInitialization() { diff --git a/src/app/service/opener.service.ts b/src/app/service/opener.service.ts index 712ed85..a8c57f9 100644 --- a/src/app/service/opener.service.ts +++ b/src/app/service/opener.service.ts @@ -4,6 +4,7 @@ import {FileBoxPageComponent} from '../components/nodes/file-box/file-box-page.c import {NavigationService} from './navigation.service'; import {EditorService} from './editor.service'; import {ModalController} from '@ionic/angular'; +import {debug} from '../utility'; @Injectable({ providedIn: 'root', @@ -36,6 +37,13 @@ export class OpenerService { if ( node.type === 'file_box' ) { return this.openFileBox(pageId, nodeId); } + + if ( node.type === 'paragraph' || node.type === 'markdown' ) { + this.currentPageId = pageId; + return this.nav.requestNavigation(pageId, node.UUID); + } + + debug('Unhandled opener node type:', node.type); } async openDatabase(pageId: string, nodeId: string) {