diff --git a/package-lock.json b/package-lock.json index 6fa98a564..a963ddf57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.39.5", + "version": "0.40.0-beta", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -63,9 +63,9 @@ } }, "@electron/get": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.1.tgz", - "integrity": "sha512-+BOIzkmYbe+oOBGqSByq8zXYXCFztccoymR3uNkvX5ckJ/5xU+4peVyEvFyH6+zfv58hCo99RxgIpwuaMfRtRg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.2.tgz", + "integrity": "sha512-LSE4LZGMjGS9TloDx0yO44D2UTbaeKRk+QjlhWLiQlikV6J4spgDCjb6z4YIcqmPAwNzlNCnWF4dubytwI+ATA==", "dev": true, "requires": { "debug": "^4.1.1", @@ -75,7 +75,7 @@ "global-tunnel-ng": "^2.7.1", "got": "^9.6.0", "sanitize-filename": "^1.6.2", - "sumchecker": "^3.0.0" + "sumchecker": "^3.0.1" }, "dependencies": { "@sindresorhus/is": { @@ -557,6 +557,12 @@ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/debug": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", @@ -727,41 +733,56 @@ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, "app-builder-bin": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz", - "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.1.tgz", + "integrity": "sha512-71FeTdKU+L4/afnKYeCS9S9g6wa2AyiMLxGtYms6sPnnzUEd81wBhfvRb8/O/f4tLrU1MDbkjA8aGGiK9/ZT6A==", "dev": true }, "app-builder-lib": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz", - "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.2.0.tgz", + "integrity": "sha512-0npUnokV4+mkUV14x/W8wjRaG6AZzsTcr9m4t0BARmgBwwhhU10Rd41RM+P55FvJtaDPMq8LYtvddcQraVPZTA==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@develar/schema-utils": "~2.1.0", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "21.2.0", - "builder-util-runtime": "8.3.0", + "builder-util": "22.2.0", + "builder-util-runtime": "8.5.0", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^2.6.2", - "electron-publish": "21.2.0", + "ejs": "^3.0.1", + "electron-publish": "22.2.0", "fs-extra": "^8.1.0", - "hosted-git-info": "^2.7.1", + "hosted-git-info": "^3.0.2", "is-ci": "^2.0.0", "isbinaryfile": "^4.0.2", "js-yaml": "^3.13.1", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", - "read-config-file": "5.0.0", - "sanitize-filename": "^1.6.2", + "read-config-file": "5.0.1", + "sanitize-filename": "^1.6.3", "semver": "^6.3.0", - "temp-file": "^3.3.4" + "temp-file": "^3.3.6" }, "dependencies": { + "ejs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", + "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", + "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1370,67 +1391,88 @@ } }, "builder-util": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz", - "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.2.0.tgz", + "integrity": "sha512-kkhDjcFuY6qGHmRhOfmYnk+raxsPauddUu7Z+TUOqMOyBVFX8ODnDjIFWQ7yDz5+KNtS9MTObJl9MTAKSRPAVQ==", "dev": true, "requires": { "7zip-bin": "~5.0.3", - "@types/debug": "^4.1.4", - "app-builder-bin": "3.4.3", + "@types/debug": "^4.1.5", + "app-builder-bin": "3.5.1", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.3.0", - "chalk": "^2.4.2", + "builder-util-runtime": "8.5.0", + "chalk": "^3.0.0", "debug": "^4.1.1", "fs-extra": "^8.1.0", "is-ci": "^2.0.0", "js-yaml": "^3.13.1", - "source-map-support": "^0.5.13", - "stat-mode": "^0.3.0", - "temp-file": "^3.3.4" + "source-map-support": "^0.5.16", + "stat-mode": "^1.0.0", + "temp-file": "^3.3.6" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "stat-mode": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", - "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "builder-util-runtime": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz", - "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.5.0.tgz", + "integrity": "sha512-ft0npBXQc5gp1AVkY/WkUXDLKWweux/R1L+YQHjtspSp9nRHqoBP6qBTxb8ca6CtBKe+yZbZYGvCw1l0ZBkx/w==", "dev": true, "requires": { "debug": "^4.1.1", @@ -2313,9 +2355,9 @@ } }, "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", + "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==", "dev": true }, "define-properties": { @@ -2413,6 +2455,108 @@ "sanitize-filename": "^1.6.2" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "app-builder-bin": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz", + "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==", + "dev": true + }, + "app-builder-lib": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz", + "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@develar/schema-utils": "~2.1.0", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "21.2.0", + "builder-util-runtime": "8.3.0", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.1.1", + "ejs": "^2.6.2", + "electron-publish": "21.2.0", + "fs-extra": "^8.1.0", + "hosted-git-info": "^2.7.1", + "is-ci": "^2.0.0", + "isbinaryfile": "^4.0.2", + "js-yaml": "^3.13.1", + "lazy-val": "^1.0.4", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.5.0", + "read-config-file": "5.0.0", + "sanitize-filename": "^1.6.2", + "semver": "^6.3.0", + "temp-file": "^3.3.4" + } + }, + "builder-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz", + "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@types/debug": "^4.1.4", + "app-builder-bin": "3.4.3", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.3.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^8.1.0", + "is-ci": "^2.0.0", + "js-yaml": "^3.13.1", + "source-map-support": "^0.5.13", + "stat-mode": "^0.3.0", + "temp-file": "^3.3.4" + } + }, + "builder-util-runtime": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz", + "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "sax": "^1.2.4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "electron-publish": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", + "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==", + "dev": true, + "requires": { + "bluebird-lst": "^1.0.9", + "builder-util": "~21.2.0", + "builder-util-runtime": "8.3.0", + "chalk": "^2.4.2", + "fs-extra": "^8.1.0", + "lazy-val": "^1.0.4", + "mime": "^2.4.4" + } + }, "iconv-lite": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", @@ -2421,6 +2565,47 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3" } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "read-config-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz", + "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==", + "dev": true, + "requires": { + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^8.1.0", + "js-yaml": "^3.13.1", + "json5": "^2.1.0", + "lazy-val": "^1.0.4" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "stat-mode": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", + "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -2600,53 +2785,187 @@ } }, "electron-builder": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.2.0.tgz", - "integrity": "sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.2.0.tgz", + "integrity": "sha512-VYplQwIJOwTLMWfh8nUKL0TdDdOpx1mma9dNbTShy1guySljffZvvD2T/EinBvX1s976Ymqzcq+b+uAUA5SfoA==", "dev": true, "requires": { - "app-builder-lib": "21.2.0", + "app-builder-lib": "22.2.0", "bluebird-lst": "^1.0.9", - "builder-util": "21.2.0", - "builder-util-runtime": "8.3.0", - "chalk": "^2.4.2", + "builder-util": "22.2.0", + "builder-util-runtime": "8.5.0", + "chalk": "^3.0.0", "dmg-builder": "21.2.0", "fs-extra": "^8.1.0", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", - "read-config-file": "5.0.0", - "sanitize-filename": "^1.6.2", + "read-config-file": "5.0.1", + "sanitize-filename": "^1.6.3", "update-notifier": "^3.0.1", - "yargs": "^13.3.0" + "yargs": "^15.0.2" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", + "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^16.1.0" } } } @@ -2900,9 +3219,9 @@ } }, "electron-osx-sign": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.14.tgz", - "integrity": "sha512-72vtrz9I3dOeFDaNvO5thwIjrimDiXMmYEbN0hEBqnvcSSMOWugjim2wiY9ox3dhuBFUhxp3owmuZCoH3Ij08A==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.15.tgz", + "integrity": "sha512-1QtPNpjIji9bGZ0VRFwtJUyU1uHi7q3XUAOG0qFsvAUfs5H0T8hbgUfyg3xvPzmF1ruV8T8pQmQ86vNfLrcRiA==", "dev": true, "requires": { "bluebird": "^3.5.0", @@ -2934,9 +3253,9 @@ } }, "electron-packager": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.1.1.tgz", - "integrity": "sha512-PODWJ8LFfwUCniTMy4Z5iiZyVHi4W71Pvn/SxJPC6kbI3EfZvo8n5H856XATxNUGVxlmAB5qeSbRym8/f9jISg==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.2.0.tgz", + "integrity": "sha512-6JHv0zfRpxpFta4MJBt7RtcS6zhtl4f76ombZKqicgl5I3Ighx8WBQRYUKMdAO3tNYEq/B0i1FYsBp6oXzlTfA==", "dev": true, "requires": { "@electron/get": "^1.6.0", @@ -2967,40 +3286,61 @@ } }, "electron-publish": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", - "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.2.0.tgz", + "integrity": "sha512-B5LTO3zVTPyDfA5ayyBCIrCQ0hBdJ+o7dNOghFYH9/v4s0NDF0cvM1w6EpjRsw/eATeo4c0I1GUObEwTS/ztYw==", "dev": true, "requires": { "bluebird-lst": "^1.0.9", - "builder-util": "~21.2.0", - "builder-util-runtime": "8.3.0", - "chalk": "^2.4.2", + "builder-util": "~22.2.0", + "builder-util-runtime": "8.5.0", + "chalk": "^3.0.0", "fs-extra": "^8.1.0", "lazy-val": "^1.0.4", "mime": "^2.4.4" }, "dependencies": { "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "mime": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", @@ -3008,12 +3348,12 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -3623,9 +3963,9 @@ } }, "file-type": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-13.0.3.tgz", - "integrity": "sha512-fe3+9mnMLbpP8nRQm/cJgehypv375SOFOXFdLYyYe7hWxdWgS5hkDpWnld5At/vvfVEN6rVqKA3EOKMP03tJGg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-13.1.0.tgz", + "integrity": "sha512-nr4fSvwYSlQl7YmaWS8rsvDrAm6VgCeb2ysHh18+YBSH4RxewhPKUQrj2XRuEMBNnH6E4xw+yWTL7+jiMrh6GA==", "requires": { "readable-web-to-node-stream": "^2.0.0", "strtok3": "^5.0.1", @@ -4240,13 +4580,6 @@ "serialize-error": "^5.0.0" }, "dependencies": { - "core-js": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.4.tgz", - "integrity": "sha512-vKea1DrcLA80Hrfc7AQgfoGvEaByfR5mH08t+zuWOWY94TFBmabdEL56mUbcijvadG9RxsXR2gUUFrfj4/iTcA==", - "dev": true, - "optional": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4279,15 +4612,13 @@ } }, "globalthis": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz", - "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", "dev": true, "optional": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "object-keys": "^1.0.12" + "define-properties": "^1.1.3" } }, "globby": { @@ -5233,9 +5564,9 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.3.tgz", - "integrity": "sha512-GQ9Gjhp3AsEbo8/L/pA+MYl/c4hRm5O/+uCkF4LMx1a556Wh4/d75H13qu9LldmhU4yKnlfNKBmEcCaze3b2Gw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.4.tgz", + "integrity": "sha512-pEutbN134CzcjlLS1myKX/uxNjwU5eBVSprvkpv3+3dqhBHUZLIWJQowC40w5c0Zf19vBY8mrZl88y5J4RAPbQ==", "dev": true }, "isexe": { @@ -8390,16 +8721,16 @@ } }, "read-config-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz", - "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.1.tgz", + "integrity": "sha512-75zp4PDbvtBlECoZK1KEkNlesr9OWdMWL8oi4xq+HXAM+kKHKU+Cx2ksFt+ie2BkrmkLBOKSfONDuz+WIKWoXA==", "dev": true, "requires": { - "dotenv": "^8.0.0", + "dotenv": "^8.2.0", "dotenv-expand": "^5.1.0", "fs-extra": "^8.1.0", "js-yaml": "^3.13.1", - "json5": "^2.1.0", + "json5": "^2.1.1", "lazy-val": "^1.0.4" } }, @@ -10309,9 +10640,9 @@ "dev": true }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", "dev": true }, "xmlhttprequest": { diff --git a/package.json b/package.json index 9988da573..86b65594e 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "electron-window-state": "5.0.3", "express": "4.17.1", "express-session": "1.17.0", - "file-type": "13.0.3", + "file-type": "13.1.0", "fs-extra": "8.1.0", "helmet": "3.21.2", "html": "1.0.0", @@ -78,8 +78,8 @@ }, "devDependencies": { "electron": "6.0.12", - "electron-builder": "21.2.0", - "electron-packager": "14.1.1", + "electron-builder": "22.2.0", + "electron-packager": "14.2.0", "electron-rebuild": "1.8.8", "jsdoc": "3.6.3", "lorem-ipsum": "2.0.3" diff --git a/src/public/javascripts/desktop.js b/src/public/javascripts/desktop.js index 5191209e6..e668db053 100644 --- a/src/public/javascripts/desktop.js +++ b/src/public/javascripts/desktop.js @@ -106,16 +106,6 @@ $(document).on("click", "button[data-help-page]", e => { window.open(wikiBaseUrl + $button.attr("data-help-page"), '_blank'); }); -$("#logout-button").toggle(!utils.isElectron()); - -$("#logout-button").on('click', () => { - const $logoutForm = $('
') - .append($(``)); - - $("body").append($logoutForm); - $logoutForm.trigger('submit'); -}); - $("body").on("click", "a.external", function () { window.open($(this).attr("href"), '_blank'); }); @@ -193,36 +183,6 @@ if (utils.isElectron()) { import("./services/spell_check.js").then(spellCheckService => spellCheckService.initSpellCheck()); } -optionService.waitForOptions().then(options => { - if (utils.isElectron() && !options.is('nativeTitleBarVisible')) { - $("#title-bar-buttons").show(); - - $("#minimize-btn").on('click', () => { - $("#minimize-btn").trigger('blur'); - const {remote} = require('electron'); - remote.BrowserWindow.getFocusedWindow().minimize(); - }); - - $("#maximize-btn").on('click', () => { - $("#maximize-btn").trigger('blur'); - const {remote} = require('electron'); - const focusedWindow = remote.BrowserWindow.getFocusedWindow(); - - if (focusedWindow.isMaximized()) { - focusedWindow.unmaximize(); - } else { - focusedWindow.maximize(); - } - }); - - $("#close-btn").on('click', () => { - $("#close-btn").trigger('blur'); - const {remote} = require('electron'); - remote.BrowserWindow.getFocusedWindow().close(); - }); - } -}); - const rightPane = $("#right-pane"); const $showRightPaneButton = $("#show-right-pane-button"); diff --git a/src/public/javascripts/services/app_context.js b/src/public/javascripts/services/app_context.js index cac3d6b9e..677f01f0d 100644 --- a/src/public/javascripts/services/app_context.js +++ b/src/public/javascripts/services/app_context.js @@ -18,6 +18,8 @@ import LinkMapWidget from "../widgets/link_map.js"; import SimilarNotesWidget from "../widgets/similar_notes.js"; import WhatLinksHereWidget from "../widgets/what_links_here.js"; import AttributesWidget from "../widgets/attributes.js"; +import TitleBarButtonsWidget from "../widgets/title_bar_buttons.js"; +import GlobalMenuWidget from "../widgets/global_menu.js"; class AppContext { constructor() { @@ -30,12 +32,21 @@ class AppContext { } showWidgets() { - const $leftPane = $("#left-pane"); + const $tabPane = $("#tab-pane"); this.tabRow = new TabRowWidget(this); - const contents = this.tabRow.render(); - $("#global-menu-wrapper").after(contents); + const tabPaneWidgets = [ + new GlobalMenuWidget(this), + this.tabRow, + new TitleBarButtonsWidget(this) + ]; + + for (const widget of tabPaneWidgets) { + widget.renderTo($tabPane); + } + + const $leftPane = $("#left-pane"); this.noteTreeWidget = new NoteTreeWidget(this); diff --git a/src/public/javascripts/services/entrypoints.js b/src/public/javascripts/services/entrypoints.js index 49f2e7965..dafd75fa8 100644 --- a/src/public/javascripts/services/entrypoints.js +++ b/src/public/javascripts/services/entrypoints.js @@ -85,24 +85,6 @@ function registerEntrypoints() { $noteTabContainer.on("click", ".show-link-map-button", showLinkMapDialog); keyboardActionService.setGlobalActionHandler("ShowLinkMap", showLinkMapDialog); - const showOptionsDialog = () => import(OPTIONS).then(d => d.showDialog()); - $("#options-button").on('click', showOptionsDialog); - keyboardActionService.setGlobalActionHandler("ShowOptions", showOptionsDialog); - - const showHelpDialog = () => import(HELP).then(d => d.showDialog()); - $("#show-help-button").on('click', showHelpDialog); - keyboardActionService.setGlobalActionHandler("ShowHelp", showHelpDialog); - - const showSqlConsoleDialog = () => import(SQL_CONSOLE).then(d => d.showDialog()); - $("#open-sql-console-button").on('click', showSqlConsoleDialog); - keyboardActionService.setGlobalActionHandler("ShowSQLConsole", showSqlConsoleDialog); - - const showBackendLogDialog = () => import(BACKEND_LOG).then(d => d.showDialog()); - $("#show-backend-log-button").on('click', showBackendLogDialog); - keyboardActionService.setGlobalActionHandler("ShowBackendLog", showBackendLogDialog); - - $("#show-about-dialog-button").on('click', () => import(ABOUT).then(d => d.showDialog())); - if (utils.isElectron()) { $("#history-navigation").show(); $("#history-back-button").on('click', window.history.back); @@ -112,26 +94,6 @@ function registerEntrypoints() { keyboardActionService.setGlobalActionHandler("ForwardInNoteHistory", window.history.forward); } - let zenModeActive = false; - - // hide (toggle) everything except for the note content for zen mode - const toggleZenMode = () => { - if (!zenModeActive) { - $(".hide-in-zen-mode,.gutter").addClass("hidden-by-zen-mode"); - $("#container").addClass("zen-mode"); - zenModeActive = true; - } - else { - // not hiding / showing explicitly since element might be hidden also for other reasons - $(".hide-in-zen-mode,.gutter").removeClass("hidden-by-zen-mode"); - $("#container").removeClass("zen-mode"); - zenModeActive = false; - } - }; - - $("#toggle-zen-mode-button").on('click', toggleZenMode); - keyboardActionService.setGlobalActionHandler("ToggleZenMode", toggleZenMode); - keyboardActionService.setGlobalActionHandler("InsertDateTimeToText", () => { const date = new Date(); const dateString = utils.formatDateTime(date); @@ -139,11 +101,6 @@ function registerEntrypoints() { linkService.addTextToEditor(dateString); }); - $("#reload-frontend-button").on('click', utils.reloadApp); - keyboardActionService.setGlobalActionHandler("ReloadFrontendApp", utils.reloadApp); - - $("#open-dev-tools-button").toggle(utils.isElectron()); - keyboardActionService.setGlobalActionHandler("PasteMarkdownIntoText", async () => { const dialog = await import("../dialogs/markdown_import.js"); @@ -187,26 +144,6 @@ function registerEntrypoints() { }); } - if (utils.isElectron()) { - const toggleFullscreen = () => { - const win = require('electron').remote.getCurrentWindow(); - - if (win.isFullScreenable()) { - win.setFullScreen(!win.isFullScreen()); - } - - return false; - }; - - $("#toggle-fullscreen-button").on('click', toggleFullscreen); - - keyboardActionService.setGlobalActionHandler("ToggleFullscreen", toggleFullscreen); - } - else { - // outside of electron this is handled by the browser - $("#toggle-fullscreen-button").hide(); - } - if (utils.isElectron()) { keyboardActionService.setGlobalActionHandler("ZoomOut", zoomService.decreaseZoomFactor); keyboardActionService.setGlobalActionHandler("ZoomIn", zoomService.increaseZoomFactor); diff --git a/src/public/javascripts/services/sync.js b/src/public/javascripts/services/sync.js index 6a747f80b..ad64d3f46 100644 --- a/src/public/javascripts/services/sync.js +++ b/src/public/javascripts/services/sync.js @@ -16,8 +16,6 @@ async function syncNow() { } } -$("#sync-now-button").on('click', syncNow); - async function forceNoteSync(noteId) { await server.post('sync/force-note-sync/' + noteId); diff --git a/src/public/javascripts/widgets/global_menu.js b/src/public/javascripts/widgets/global_menu.js new file mode 100644 index 000000000..9ee4429a4 --- /dev/null +++ b/src/public/javascripts/widgets/global_menu.js @@ -0,0 +1,185 @@ +import BasicWidget from "./basic_widget.js"; +import keyboardActionService from "../services/keyboard_actions.js"; +import utils from "../services/utils.js"; +import syncService from "../services/sync.js"; + +const OPTIONS = "../dialogs/options.js"; +const SQL_CONSOLE = "../dialogs/sql_console.js"; +const BACKEND_LOG = "../dialogs/backend_log.js"; +const HELP = "../dialogs/help.js"; +const ABOUT = "../dialogs/about.js"; + +const TPL = ` + +`; + +export default class GlobalMenuWidget extends BasicWidget { + render() { + this.$widget = $(TPL); + + let zenModeActive = false; + + // hide (toggle) everything except for the note content for zen mode + const toggleZenMode = () => { + if (!zenModeActive) { + $(".hide-in-zen-mode,.gutter").addClass("hidden-by-zen-mode"); + $("#container").addClass("zen-mode"); + zenModeActive = true; + } + else { + // not hiding / showing explicitly since element might be hidden also for other reasons + $(".hide-in-zen-mode,.gutter").removeClass("hidden-by-zen-mode"); + $("#container").removeClass("zen-mode"); + zenModeActive = false; + } + }; + + this.$widget.find(".toggle-zen-mode-button").on('click', toggleZenMode); + keyboardActionService.setGlobalActionHandler("ToggleZenMode", toggleZenMode); + + this.$widget.find(".reload-frontend-button").on('click', utils.reloadApp); + keyboardActionService.setGlobalActionHandler("ReloadFrontendApp", utils.reloadApp); + + this.$widget.find(".open-dev-tools-button").toggle(utils.isElectron()); + + const showOptionsDialog = () => import(OPTIONS).then(d => d.showDialog()); + this.$widget.find(".options-button").on('click', showOptionsDialog); + keyboardActionService.setGlobalActionHandler("ShowOptions", showOptionsDialog); + + const showHelpDialog = () => import(HELP).then(d => d.showDialog()); + this.$widget.find(".show-help-button").on('click', showHelpDialog); + keyboardActionService.setGlobalActionHandler("ShowHelp", showHelpDialog); + + const showSqlConsoleDialog = () => import(SQL_CONSOLE).then(d => d.showDialog()); + this.$widget.find(".open-sql-console-button").on('click', showSqlConsoleDialog); + keyboardActionService.setGlobalActionHandler("ShowSQLConsole", showSqlConsoleDialog); + + const showBackendLogDialog = () => import(BACKEND_LOG).then(d => d.showDialog()); + this.$widget.find(".show-backend-log-button").on('click', showBackendLogDialog); + keyboardActionService.setGlobalActionHandler("ShowBackendLog", showBackendLogDialog); + + this.$widget.find(".show-about-dialog-button").on('click', () => import(ABOUT).then(d => d.showDialog())); + + this.$widget.find(".sync-now-button").on('click', () => syncService.syncNow()); + + if (utils.isElectron()) { + const toggleFullscreen = () => { + const win = require('electron').remote.getCurrentWindow(); + + if (win.isFullScreenable()) { + win.setFullScreen(!win.isFullScreen()); + } + + return false; + }; + + this.$widget.find(".toggle-fullscreen-button").on('click', toggleFullscreen); + + keyboardActionService.setGlobalActionHandler("ToggleFullscreen", toggleFullscreen); + } + else { + // outside of electron this is handled by the browser + this.$widget.find(".toggle-fullscreen-button").hide(); + } + + this.$widget.find(".logout-button") + .toggle(!utils.isElectron()) + .on('click', () => { + const $logoutForm = $('') + .append($(``)); + + $("body").append($logoutForm); + $logoutForm.trigger('submit'); + }); + + return this.$widget; + } +} \ No newline at end of file diff --git a/src/public/javascripts/widgets/title_bar_buttons.js b/src/public/javascripts/widgets/title_bar_buttons.js new file mode 100644 index 000000000..bb03969af --- /dev/null +++ b/src/public/javascripts/widgets/title_bar_buttons.js @@ -0,0 +1,64 @@ +import BasicWidget from "./basic_widget.js"; +import optionService from "../services/options.js"; +import utils from "../services/utils.js"; + +const TPL = ` +
+ + + + + +
`; + +export default class TitleBarButtonsWidget extends BasicWidget { + render() { + if (!utils.isElectron()) { + return; + } + + this.$widget = $(TPL); + + optionService.waitForOptions().then(options => { + if (!options.is('nativeTitleBarVisible')) { + this.$widget.show(); + + const $minimizeBtn = this.$widget.find(".minimize-btn"); + const $maximizeBtn = this.$widget.find(".maximize-btn"); + const $closeBtn = this.$widget.find(".close-btn"); + + $minimizeBtn.on('click', () => { + $minimizeBtn.trigger('blur'); + const {remote} = require('electron'); + remote.BrowserWindow.getFocusedWindow().minimize(); + }); + + $maximizeBtn.on('click', () => { + $maximizeBtn.trigger('blur'); + const {remote} = require('electron'); + const focusedWindow = remote.BrowserWindow.getFocusedWindow(); + + if (focusedWindow.isMaximized()) { + focusedWindow.unmaximize(); + } else { + focusedWindow.maximize(); + } + }); + + $closeBtn.on('click', () => { + $closeBtn.trigger('blur'); + const {remote} = require('electron'); + remote.BrowserWindow.getFocusedWindow().close(); + }); + } + }); + + return this.$widget; + } +} \ No newline at end of file diff --git a/src/public/stylesheets/desktop.css b/src/public/stylesheets/desktop.css index 94df581a7..2b9e71263 100644 --- a/src/public/stylesheets/desktop.css +++ b/src/public/stylesheets/desktop.css @@ -271,9 +271,4 @@ body { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; -} - -#title-bar-buttons { - margin-top: 4px; - min-width: 100px; } \ No newline at end of file diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css index d99c1c274..92dc670fb 100644 --- a/src/public/stylesheets/style.css +++ b/src/public/stylesheets/style.css @@ -422,21 +422,6 @@ button.icon-button { width: 15em; } -#global-menu-wrapper { - height: 35px; - border-bottom: 1px solid var(--main-border-color); -} - -#global-menu button { - margin-right: 10px; - height: 33px; - border-bottom: none; -} - -#global-menu .dropdown-menu { - width: 20em; -} - .ck.ck-block-toolbar-button { transform: translateX(7px); color: var(--muted-text-color); diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs index 7a4ecb8c3..545742ead 100644 --- a/src/views/desktop.ejs +++ b/src/views/desktop.ejs @@ -11,86 +11,7 @@