mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	widgetizing tab pane
This commit is contained in:
		
							parent
							
								
									bd0f7d3680
								
							
						
					
					
						commit
						209b1610f6
					
				
							
								
								
									
										589
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										589
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -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": {
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
@ -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 = $('<form action="logout" method="POST">')
 | 
			
		||||
                            .append($(`<input type="hidden" name="_csrf" value="${glob.csrfToken}"/>`));
 | 
			
		||||
 | 
			
		||||
    $("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");
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										185
									
								
								src/public/javascripts/widgets/global_menu.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								src/public/javascripts/widgets/global_menu.js
									
									
									
									
									
										Normal file
									
								
							@ -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 = `
 | 
			
		||||
<div class="global-menu-wrapper">
 | 
			
		||||
    <style>
 | 
			
		||||
    .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;
 | 
			
		||||
    }
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <div class="dropdown global-menu">
 | 
			
		||||
        <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="btn btn-sm dropdown-toggle">
 | 
			
		||||
            <span class="bx bx-menu"></span>
 | 
			
		||||
            Menu
 | 
			
		||||
            <span class="caret"></span>
 | 
			
		||||
        </button>
 | 
			
		||||
        <div class="dropdown-menu dropdown-menu-right">
 | 
			
		||||
            <a class="dropdown-item options-button">
 | 
			
		||||
                <span class="bx bx-slider"></span>
 | 
			
		||||
                Options
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item sync-now-button" title="Trigger sync">
 | 
			
		||||
                <span class="bx bx-recycle"></span>
 | 
			
		||||
                Sync (<span id="outstanding-syncs-count">0</span>)
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item open-dev-tools-button">
 | 
			
		||||
                <span class="bx bx-terminal"></span>
 | 
			
		||||
                Open Dev Tools
 | 
			
		||||
                <kbd data-kb-action="OpenDevTools"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item open-sql-console-button">
 | 
			
		||||
                <span class="bx bx-data"></span>
 | 
			
		||||
                Open SQL Console
 | 
			
		||||
                <kbd data-kb-action="ShowSQLConsole"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item show-backend-log-button">
 | 
			
		||||
                <span class="bx bx-empty"></span>
 | 
			
		||||
                Show backend log
 | 
			
		||||
                <kbd data-kb-action="ShowBackendLog"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item reload-frontend-button" title="Reload can help with some visual glitches without restarting the whole app.">
 | 
			
		||||
                <span class="bx bx-empty"></span>
 | 
			
		||||
                Reload frontend
 | 
			
		||||
                <kbd data-kb-action="ReloadFrontendApp"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item toggle-zen-mode-button">
 | 
			
		||||
                <span class="bx bx-empty"></span>
 | 
			
		||||
                Toggle Zen mode
 | 
			
		||||
                <kbd data-kb-action="ToggleZenMode"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item toggle-fullscreen-button">
 | 
			
		||||
                <span class="bx bx-empty"></span>
 | 
			
		||||
                Toggle fullscreen
 | 
			
		||||
                <kbd data-kb-action="ToggleFullscreen"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item show-help-button">
 | 
			
		||||
                <span class="bx bx-info-circle"></span>
 | 
			
		||||
                Show Help
 | 
			
		||||
                <kbd data-kb-action="ShowHelp"></kbd>
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item show-about-dialog-button">
 | 
			
		||||
                <span class="bx bx-empty"></span>
 | 
			
		||||
                About Trilium Notes
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
            <a class="dropdown-item logout-button">
 | 
			
		||||
                <span class="bx bx-log-out"></span>
 | 
			
		||||
                Logout
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
`;
 | 
			
		||||
 | 
			
		||||
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 = $('<form action="logout" method="POST">')
 | 
			
		||||
                .append($(`<input type="hidden" name="_csrf" value="${glob.csrfToken}"/>`));
 | 
			
		||||
 | 
			
		||||
            $("body").append($logoutForm);
 | 
			
		||||
            $logoutForm.trigger('submit');
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return this.$widget;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										64
									
								
								src/public/javascripts/widgets/title_bar_buttons.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/public/javascripts/widgets/title_bar_buttons.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
			
		||||
import BasicWidget from "./basic_widget.js";
 | 
			
		||||
import optionService from "../services/options.js";
 | 
			
		||||
import utils from "../services/utils.js";
 | 
			
		||||
 | 
			
		||||
const TPL = `
 | 
			
		||||
<div class="title-bar-buttons">
 | 
			
		||||
    <style>
 | 
			
		||||
    .title-bar-buttons {
 | 
			
		||||
        margin-top: 4px;
 | 
			
		||||
        min-width: 100px;
 | 
			
		||||
        display: none;
 | 
			
		||||
    }
 | 
			
		||||
    </style>
 | 
			
		||||
 | 
			
		||||
    <button class="btn icon-action bx bx-minus minimize-btn"></button>
 | 
			
		||||
    <button class="btn icon-action bx bx-checkbox maximize-btn"></button>
 | 
			
		||||
    <button class="btn icon-action bx bx-x close-btn"></button>
 | 
			
		||||
</div>`;
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -272,8 +272,3 @@ body {
 | 
			
		||||
    text-overflow: ellipsis;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#title-bar-buttons {
 | 
			
		||||
    margin-top: 4px;
 | 
			
		||||
    min-width: 100px;
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -11,86 +11,7 @@
 | 
			
		||||
<div id="toast-container" class="d-flex flex-column justify-content-center align-items-center"></div>
 | 
			
		||||
 | 
			
		||||
<div id="container" style="display: none;">
 | 
			
		||||
    <div id="tab-pane">
 | 
			
		||||
        <div id="global-menu-wrapper">
 | 
			
		||||
            <div class="dropdown" id="global-menu">
 | 
			
		||||
                <button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="btn btn-sm dropdown-toggle">
 | 
			
		||||
                    <span class="bx bx-menu"></span>
 | 
			
		||||
                    Menu
 | 
			
		||||
                    <span class="caret"></span>
 | 
			
		||||
                </button>
 | 
			
		||||
                <div class="dropdown-menu dropdown-menu-right">
 | 
			
		||||
                    <a class="dropdown-item" id="options-button">
 | 
			
		||||
                        <span class="bx bx-slider"></span>
 | 
			
		||||
                        Options
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="sync-now-button" title="Trigger sync">
 | 
			
		||||
                        <span class="bx bx-recycle"></span>
 | 
			
		||||
                        Sync (<span id="outstanding-syncs-count">0</span>)
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="open-dev-tools-button">
 | 
			
		||||
                        <span class="bx bx-terminal"></span>
 | 
			
		||||
                        Open Dev Tools
 | 
			
		||||
                        <kbd data-kb-action="OpenDevTools"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="open-sql-console-button">
 | 
			
		||||
                        <span class="bx bx-data"></span>
 | 
			
		||||
                        Open SQL Console
 | 
			
		||||
                        <kbd data-kb-action="ShowSQLConsole"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="show-backend-log-button">
 | 
			
		||||
                        <span class="bx bx-empty"></span>
 | 
			
		||||
                        Show backend log
 | 
			
		||||
                        <kbd data-kb-action="ShowBackendLog"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="reload-frontend-button" title="Reload can help with some visual glitches without restarting the whole app.">
 | 
			
		||||
                        <span class="bx bx-empty"></span>
 | 
			
		||||
                        Reload frontend
 | 
			
		||||
                        <kbd data-kb-action="ReloadFrontendApp"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="toggle-zen-mode-button">
 | 
			
		||||
                        <span class="bx bx-empty"></span>
 | 
			
		||||
                        Toggle Zen mode
 | 
			
		||||
                        <kbd data-kb-action="ToggleZenMode"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="toggle-fullscreen-button">
 | 
			
		||||
                        <span class="bx bx-empty"></span>
 | 
			
		||||
                        Toggle fullscreen
 | 
			
		||||
                        <kbd data-kb-action="ToggleFullscreen"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="show-help-button">
 | 
			
		||||
                        <span class="bx bx-info-circle"></span>
 | 
			
		||||
                        Show Help
 | 
			
		||||
                        <kbd data-kb-action="ShowHelp"></kbd>
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="show-about-dialog-button">
 | 
			
		||||
                        <span class="bx bx-empty"></span>
 | 
			
		||||
                        About Trilium Notes
 | 
			
		||||
                    </a>
 | 
			
		||||
 | 
			
		||||
                    <a class="dropdown-item" id="logout-button">
 | 
			
		||||
                        <span class="bx bx-log-out"></span>
 | 
			
		||||
                        Logout
 | 
			
		||||
                    </a>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div id="title-bar-buttons" style="display: none;">
 | 
			
		||||
            <button class="btn icon-action bx bx-minus" id="minimize-btn"></button>
 | 
			
		||||
            <button class="btn icon-action bx bx-checkbox" id="maximize-btn"></button>
 | 
			
		||||
            <button class="btn icon-action bx bx-x" id="close-btn"></button>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id="tab-pane"></div>
 | 
			
		||||
 | 
			
		||||
    <div id="top-pane" class="hide-in-zen-mode">
 | 
			
		||||
        <div id="history-navigation" style="display: none;">
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user