mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	create note from template WIP
This commit is contained in:
		
							parent
							
								
									88586b0f25
								
							
						
					
					
						commit
						98b579524c
					
				
							
								
								
									
										193
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										193
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -44,8 +44,8 @@
 | 
			
		||||
        "joplin-turndown-plugin-gfm": "1.0.12",
 | 
			
		||||
        "jsdom": "19.0.0",
 | 
			
		||||
        "mime-types": "2.1.35",
 | 
			
		||||
        "multer": "1.4.4",
 | 
			
		||||
        "node-abi": "3.21.0",
 | 
			
		||||
        "multer": "1.4.5-lts.1",
 | 
			
		||||
        "node-abi": "3.22.0",
 | 
			
		||||
        "normalize-strings": "1.1.1",
 | 
			
		||||
        "open": "8.4.0",
 | 
			
		||||
        "portscanner": "2.2.0",
 | 
			
		||||
@ -65,7 +65,7 @@
 | 
			
		||||
        "tmp": "0.2.1",
 | 
			
		||||
        "turndown": "7.1.1",
 | 
			
		||||
        "unescape": "1.0.1",
 | 
			
		||||
        "ws": "8.6.0",
 | 
			
		||||
        "ws": "8.7.0",
 | 
			
		||||
        "yauzl": "2.10.0"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
@ -2161,38 +2161,16 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/busboy": {
 | 
			
		||||
      "version": "0.2.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
 | 
			
		||||
      "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "dicer": "0.2.5",
 | 
			
		||||
        "readable-stream": "1.1.x"
 | 
			
		||||
        "streamsearch": "^1.1.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.8.0"
 | 
			
		||||
        "node": ">=10.16.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/busboy/node_modules/isarray": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/busboy/node_modules/readable-stream": {
 | 
			
		||||
      "version": "1.1.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "core-util-is": "~1.0.0",
 | 
			
		||||
        "inherits": "~2.0.1",
 | 
			
		||||
        "isarray": "0.0.1",
 | 
			
		||||
        "string_decoder": "~0.10.x"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/busboy/node_modules/string_decoder": {
 | 
			
		||||
      "version": "0.10.31",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/bytes": {
 | 
			
		||||
      "version": "3.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
 | 
			
		||||
@ -3267,39 +3245,6 @@
 | 
			
		||||
      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dicer": {
 | 
			
		||||
      "version": "0.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
 | 
			
		||||
      "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "readable-stream": "1.1.x",
 | 
			
		||||
        "streamsearch": "0.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.8.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dicer/node_modules/isarray": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dicer/node_modules/readable-stream": {
 | 
			
		||||
      "version": "1.1.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "core-util-is": "~1.0.0",
 | 
			
		||||
        "inherits": "~2.0.1",
 | 
			
		||||
        "isarray": "0.0.1",
 | 
			
		||||
        "string_decoder": "~0.10.x"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dicer/node_modules/string_decoder": {
 | 
			
		||||
      "version": "0.10.31",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/dir-compare": {
 | 
			
		||||
      "version": "2.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz",
 | 
			
		||||
@ -7359,21 +7304,20 @@
 | 
			
		||||
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/multer": {
 | 
			
		||||
      "version": "1.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==",
 | 
			
		||||
      "version": "1.4.5-lts.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
 | 
			
		||||
      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "append-field": "^1.0.0",
 | 
			
		||||
        "busboy": "^0.2.11",
 | 
			
		||||
        "busboy": "^1.0.0",
 | 
			
		||||
        "concat-stream": "^1.5.2",
 | 
			
		||||
        "mkdirp": "^0.5.4",
 | 
			
		||||
        "object-assign": "^4.1.1",
 | 
			
		||||
        "on-finished": "^2.3.0",
 | 
			
		||||
        "type-is": "^1.6.4",
 | 
			
		||||
        "xtend": "^4.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 0.10.0"
 | 
			
		||||
        "node": ">= 6.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/nanoid": {
 | 
			
		||||
@ -7407,9 +7351,9 @@
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/node-abi": {
 | 
			
		||||
      "version": "3.21.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.21.0.tgz",
 | 
			
		||||
      "integrity": "sha512-0ChvtQmmNYzXju0fjG0Vfg72q2D8FxUhluvV9uqivtXsKblSekJE2juxfg+9HoSgqPMqCmVEC/GHHtGzi4xYTg==",
 | 
			
		||||
      "version": "3.22.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz",
 | 
			
		||||
      "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "semver": "^7.3.5"
 | 
			
		||||
      },
 | 
			
		||||
@ -9463,11 +9407,11 @@
 | 
			
		||||
      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/streamsearch": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=",
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.8.0"
 | 
			
		||||
        "node": ">=10.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/string_decoder": {
 | 
			
		||||
@ -10594,9 +10538,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/ws": {
 | 
			
		||||
      "version": "8.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
 | 
			
		||||
      "version": "8.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=10.0.0"
 | 
			
		||||
      },
 | 
			
		||||
@ -12550,35 +12494,11 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "busboy": {
 | 
			
		||||
      "version": "0.2.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
 | 
			
		||||
      "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
 | 
			
		||||
      "version": "1.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "dicer": "0.2.5",
 | 
			
		||||
        "readable-stream": "1.1.x"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "isarray": {
 | 
			
		||||
          "version": "0.0.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 | 
			
		||||
        },
 | 
			
		||||
        "readable-stream": {
 | 
			
		||||
          "version": "1.1.14",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "core-util-is": "~1.0.0",
 | 
			
		||||
            "inherits": "~2.0.1",
 | 
			
		||||
            "isarray": "0.0.1",
 | 
			
		||||
            "string_decoder": "~0.10.x"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "string_decoder": {
 | 
			
		||||
          "version": "0.10.31",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 | 
			
		||||
        }
 | 
			
		||||
        "streamsearch": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "bytes": {
 | 
			
		||||
@ -13383,38 +13303,6 @@
 | 
			
		||||
      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "dicer": {
 | 
			
		||||
      "version": "0.2.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
 | 
			
		||||
      "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "readable-stream": "1.1.x",
 | 
			
		||||
        "streamsearch": "0.1.2"
 | 
			
		||||
      },
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "isarray": {
 | 
			
		||||
          "version": "0.0.1",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
 | 
			
		||||
          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 | 
			
		||||
        },
 | 
			
		||||
        "readable-stream": {
 | 
			
		||||
          "version": "1.1.14",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
 | 
			
		||||
          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
 | 
			
		||||
          "requires": {
 | 
			
		||||
            "core-util-is": "~1.0.0",
 | 
			
		||||
            "inherits": "~2.0.1",
 | 
			
		||||
            "isarray": "0.0.1",
 | 
			
		||||
            "string_decoder": "~0.10.x"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "string_decoder": {
 | 
			
		||||
          "version": "0.10.31",
 | 
			
		||||
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 | 
			
		||||
          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "dir-compare": {
 | 
			
		||||
      "version": "2.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz",
 | 
			
		||||
@ -16530,16 +16418,15 @@
 | 
			
		||||
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 | 
			
		||||
    },
 | 
			
		||||
    "multer": {
 | 
			
		||||
      "version": "1.4.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz",
 | 
			
		||||
      "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==",
 | 
			
		||||
      "version": "1.4.5-lts.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
 | 
			
		||||
      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "append-field": "^1.0.0",
 | 
			
		||||
        "busboy": "^0.2.11",
 | 
			
		||||
        "busboy": "^1.0.0",
 | 
			
		||||
        "concat-stream": "^1.5.2",
 | 
			
		||||
        "mkdirp": "^0.5.4",
 | 
			
		||||
        "object-assign": "^4.1.1",
 | 
			
		||||
        "on-finished": "^2.3.0",
 | 
			
		||||
        "type-is": "^1.6.4",
 | 
			
		||||
        "xtend": "^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
@ -16566,9 +16453,9 @@
 | 
			
		||||
      "dev": true
 | 
			
		||||
    },
 | 
			
		||||
    "node-abi": {
 | 
			
		||||
      "version": "3.21.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.21.0.tgz",
 | 
			
		||||
      "integrity": "sha512-0ChvtQmmNYzXju0fjG0Vfg72q2D8FxUhluvV9uqivtXsKblSekJE2juxfg+9HoSgqPMqCmVEC/GHHtGzi4xYTg==",
 | 
			
		||||
      "version": "3.22.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.22.0.tgz",
 | 
			
		||||
      "integrity": "sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "semver": "^7.3.5"
 | 
			
		||||
      }
 | 
			
		||||
@ -18169,9 +18056,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "streamsearch": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
 | 
			
		||||
      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
 | 
			
		||||
      "version": "1.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
 | 
			
		||||
    },
 | 
			
		||||
    "string_decoder": {
 | 
			
		||||
      "version": "1.1.1",
 | 
			
		||||
@ -19028,9 +18915,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "ws": {
 | 
			
		||||
      "version": "8.6.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz",
 | 
			
		||||
      "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==",
 | 
			
		||||
      "version": "8.7.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz",
 | 
			
		||||
      "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==",
 | 
			
		||||
      "requires": {}
 | 
			
		||||
    },
 | 
			
		||||
    "xdg-basedir": {
 | 
			
		||||
 | 
			
		||||
@ -59,8 +59,8 @@
 | 
			
		||||
    "joplin-turndown-plugin-gfm": "1.0.12",
 | 
			
		||||
    "jsdom": "19.0.0",
 | 
			
		||||
    "mime-types": "2.1.35",
 | 
			
		||||
    "multer": "1.4.4",
 | 
			
		||||
    "node-abi": "3.21.0",
 | 
			
		||||
    "multer": "1.4.5-lts.1",
 | 
			
		||||
    "node-abi": "3.22.0",
 | 
			
		||||
    "normalize-strings": "1.1.1",
 | 
			
		||||
    "open": "8.4.0",
 | 
			
		||||
    "portscanner": "2.2.0",
 | 
			
		||||
@ -80,7 +80,7 @@
 | 
			
		||||
    "tmp": "0.2.1",
 | 
			
		||||
    "turndown": "7.1.1",
 | 
			
		||||
    "unescape": "1.0.1",
 | 
			
		||||
    "ws": "8.6.0",
 | 
			
		||||
    "ws": "8.7.0",
 | 
			
		||||
    "yauzl": "2.10.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
 | 
			
		||||
@ -52,13 +52,13 @@ if (utils.isElectron()) {
 | 
			
		||||
                    title: suggestion,
 | 
			
		||||
                    command: "replaceMisspelling",
 | 
			
		||||
                    spellingSuggestion: suggestion,
 | 
			
		||||
                    uiIcon: "empty"
 | 
			
		||||
                    uiIcon: "bx bx-empty"
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            items.push({
 | 
			
		||||
                title: `Add "${params.misspelledWord}" to dictionary`,
 | 
			
		||||
                uiIcon: "plus",
 | 
			
		||||
                uiIcon: "bx bx-plus",
 | 
			
		||||
                handler: () => webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord)
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
@ -69,7 +69,7 @@ if (utils.isElectron()) {
 | 
			
		||||
            items.push({
 | 
			
		||||
                enabled: editFlags.canCut && hasText,
 | 
			
		||||
                title: `Cut <kbd>${platformModifier}+X`,
 | 
			
		||||
                uiIcon: "cut",
 | 
			
		||||
                uiIcon: "bx bx-cut",
 | 
			
		||||
                handler: () => webContents.cut()
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -78,7 +78,7 @@ if (utils.isElectron()) {
 | 
			
		||||
            items.push({
 | 
			
		||||
                enabled: editFlags.canCopy && hasText,
 | 
			
		||||
                title: `Copy <kbd>${platformModifier}+C`,
 | 
			
		||||
                uiIcon: "copy",
 | 
			
		||||
                uiIcon: "bx bx-copy",
 | 
			
		||||
                handler: () => webContents.copy()
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -86,7 +86,7 @@ if (utils.isElectron()) {
 | 
			
		||||
        if (!["", "javascript:", "about:blank#blocked"].includes(params.linkURL) && params.mediaType === 'none') {
 | 
			
		||||
            items.push({
 | 
			
		||||
                title: `Copy link`,
 | 
			
		||||
                uiIcon: "copy",
 | 
			
		||||
                uiIcon: "bx bx-copy",
 | 
			
		||||
                handler: () => {
 | 
			
		||||
                    electron.clipboard.write({
 | 
			
		||||
                        bookmark: params.linkText,
 | 
			
		||||
@ -100,7 +100,7 @@ if (utils.isElectron()) {
 | 
			
		||||
            items.push({
 | 
			
		||||
                enabled: editFlags.canPaste,
 | 
			
		||||
                title: `Paste <kbd>${platformModifier}+V`,
 | 
			
		||||
                uiIcon: "paste",
 | 
			
		||||
                uiIcon: "bx bx-paste",
 | 
			
		||||
                handler: () => webContents.paste()
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -109,7 +109,7 @@ if (utils.isElectron()) {
 | 
			
		||||
            items.push({
 | 
			
		||||
                enabled: editFlags.canPaste,
 | 
			
		||||
                title: `Paste as plain text <kbd>${platformModifier}+Shift+V`,
 | 
			
		||||
                uiIcon: "paste",
 | 
			
		||||
                uiIcon: "bx bx-paste",
 | 
			
		||||
                handler: () => webContents.pasteAndMatchStyle()
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -122,7 +122,7 @@ if (utils.isElectron()) {
 | 
			
		||||
            items.push({
 | 
			
		||||
                enabled: editFlags.canPaste,
 | 
			
		||||
                title: `Search for "${shortenedSelection}" with DuckDuckGo`,
 | 
			
		||||
                uiIcon: "search-alt",
 | 
			
		||||
                uiIcon: "bx bx-search-alt",
 | 
			
		||||
                handler: () => electron.shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(params.selectionText)}`)
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -82,7 +82,7 @@ class ContextMenu {
 | 
			
		||||
                const $icon = $("<span>");
 | 
			
		||||
 | 
			
		||||
                if (item.uiIcon) {
 | 
			
		||||
                    $icon.addClass("bx bx-" + item.uiIcon);
 | 
			
		||||
                    $icon.addClass(item.uiIcon);
 | 
			
		||||
                } else {
 | 
			
		||||
                    $icon.append(" ");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@ -6,9 +6,9 @@ function openContextMenu(notePath, e) {
 | 
			
		||||
        x: e.pageX,
 | 
			
		||||
        y: e.pageY,
 | 
			
		||||
        items: [
 | 
			
		||||
            {title: "Open note in a new tab", command: "openNoteInNewTab", uiIcon: "empty"},
 | 
			
		||||
            {title: "Open note in a new split", command: "openNoteInNewSplit", uiIcon: "dock-right"},
 | 
			
		||||
            {title: "Open note in a new window", command: "openNoteInNewWindow", uiIcon: "window-open"}
 | 
			
		||||
            {title: "Open note in a new tab", command: "openNoteInNewTab", uiIcon: "bx bx-empty"},
 | 
			
		||||
            {title: "Open note in a new split", command: "openNoteInNewSplit", uiIcon: "bx bx-dock-right"},
 | 
			
		||||
            {title: "Open note in a new window", command: "openNoteInNewWindow", uiIcon: "bx bx-window-open"}
 | 
			
		||||
        ],
 | 
			
		||||
        selectMenuItemHandler: ({command}) => {
 | 
			
		||||
            if (command === 'openNoteInNewTab') {
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import clipboard from './clipboard.js';
 | 
			
		||||
import noteCreateService from "./note_create.js";
 | 
			
		||||
import contextMenu from "./context_menu.js";
 | 
			
		||||
import appContext from "./app_context.js";
 | 
			
		||||
import server from "./server.js";
 | 
			
		||||
 | 
			
		||||
class TreeContextMenu {
 | 
			
		||||
    /**
 | 
			
		||||
@ -24,19 +25,35 @@ class TreeContextMenu {
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getNoteTypeItems(command) {
 | 
			
		||||
        return [
 | 
			
		||||
            { title: "Text", command: command, type: "text", uiIcon: "note" },
 | 
			
		||||
            { title: "Code", command: command, type: "code", uiIcon: "code" },
 | 
			
		||||
            { title: "Saved Search", command: command, type: "search", uiIcon: "file-find" },
 | 
			
		||||
            { title: "Relation Map", command: command, type: "relation-map", uiIcon: "map-alt" },
 | 
			
		||||
            { title: "Note Map", command: command, type: "note-map", uiIcon: "map-alt" },
 | 
			
		||||
            { title: "Render Note", command: command, type: "render", uiIcon: "extension" },
 | 
			
		||||
            { title: "Book", command: command, type: "book", uiIcon: "book" },
 | 
			
		||||
            { title: "Mermaid Diagram", command: command, type: "mermaid", uiIcon: "selection" },
 | 
			
		||||
            { title: "Canvas", command: command, type: "canvas", uiIcon: "pen" },
 | 
			
		||||
            { title: "Web View", command: command, type: "iframe", uiIcon: "globe-alt" },
 | 
			
		||||
    async getNoteTypeItems(command) {
 | 
			
		||||
        const items = [
 | 
			
		||||
            { title: "Text", command: command, type: "text", uiIcon: "bx bx-note" },
 | 
			
		||||
            { title: "Code", command: command, type: "code", uiIcon: "bx bx-code" },
 | 
			
		||||
            { title: "Saved Search", command: command, type: "search", uiIcon: "bx bx-file-find" },
 | 
			
		||||
            { title: "Relation Map", command: command, type: "relation-map", uiIcon: "bx bx-map-alt" },
 | 
			
		||||
            { title: "Note Map", command: command, type: "note-map", uiIcon: "bx bx-map-alt" },
 | 
			
		||||
            { title: "Render Note", command: command, type: "render", uiIcon: "bx bx-extension" },
 | 
			
		||||
            { title: "Book", command: command, type: "book", uiIcon: "bx bx-book" },
 | 
			
		||||
            { title: "Mermaid Diagram", command: command, type: "mermaid", uiIcon: "bx bx-selection" },
 | 
			
		||||
            { title: "Canvas", command: command, type: "canvas", uiIcon: "bx bx-pen" },
 | 
			
		||||
            { title: "Web View", command: command, type: "iframe", uiIcon: "bx bx-globe-alt" },
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        const templateNoteIds = await server.get("search-templates");
 | 
			
		||||
        const templateNotes = await froca.getNotes(templateNoteIds);
 | 
			
		||||
 | 
			
		||||
        if (items.length > 0) {
 | 
			
		||||
            items.push({ title: "----" });
 | 
			
		||||
 | 
			
		||||
            for (const templateNote of templateNotes) {
 | 
			
		||||
                items.push({
 | 
			
		||||
                    title: templateNote.title,
 | 
			
		||||
                    uiIcon: templateNote.getIcon()
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return items;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async getMenuItems() {
 | 
			
		||||
@ -58,60 +75,59 @@ class TreeContextMenu {
 | 
			
		||||
        const insertNoteAfterEnabled = isNotRoot && !isHoisted && parentNotSearch;
 | 
			
		||||
 | 
			
		||||
        return [
 | 
			
		||||
            { title: 'Open in a new tab <kbd>Ctrl+Click</kbd>', command: "openInTab", uiIcon: "empty", enabled: noSelectedNotes },
 | 
			
		||||
            { title: 'Open in a new split', command: "openNoteInSplit", uiIcon: "dock-right", enabled: noSelectedNotes },
 | 
			
		||||
            { title: 'Insert note after <kbd data-command="createNoteAfter"></kbd>', command: "insertNoteAfter", uiIcon: "plus",
 | 
			
		||||
                items: insertNoteAfterEnabled ? this.getNoteTypeItems("insertNoteAfter") : null,
 | 
			
		||||
            { title: 'Open in a new tab <kbd>Ctrl+Click</kbd>', command: "openInTab", uiIcon: "bx bx-empty", enabled: noSelectedNotes },
 | 
			
		||||
            { title: 'Open in a new split', command: "openNoteInSplit", uiIcon: "bx bx-dock-right", enabled: noSelectedNotes },
 | 
			
		||||
            { title: 'Insert note after <kbd data-command="createNoteAfter"></kbd>', command: "insertNoteAfter", uiIcon: "bx bx-plus",
 | 
			
		||||
                items: insertNoteAfterEnabled ? await this.getNoteTypeItems("insertNoteAfter") : null,
 | 
			
		||||
                enabled: insertNoteAfterEnabled && noSelectedNotes },
 | 
			
		||||
            { title: 'Insert child note <kbd data-command="createNoteInto"></kbd>', command: "insertChildNote", uiIcon: "plus",
 | 
			
		||||
                items: notSearch ? this.getNoteTypeItems("insertChildNote") : null,
 | 
			
		||||
            { title: 'Insert child note <kbd data-command="createNoteInto"></kbd>', command: "insertChildNote", uiIcon: "bx bx-plus",
 | 
			
		||||
                items: notSearch ? await this.getNoteTypeItems("insertChildNote") : null,
 | 
			
		||||
                enabled: notSearch && noSelectedNotes },
 | 
			
		||||
            { title: 'Delete <kbd data-command="deleteNotes"></kbd>', command: "deleteNotes", uiIcon: "trash",
 | 
			
		||||
            { title: 'Delete <kbd data-command="deleteNotes"></kbd>', command: "deleteNotes", uiIcon: "bx bx-trash",
 | 
			
		||||
                enabled: isNotRoot && !isHoisted && parentNotSearch },
 | 
			
		||||
            { title: "----" },
 | 
			
		||||
            { title: 'Search in subtree <kbd data-command="searchInSubtree"></kbd>', command: "searchInSubtree", uiIcon: "search",
 | 
			
		||||
            { title: 'Search in subtree <kbd data-command="searchInSubtree"></kbd>', command: "searchInSubtree", uiIcon: "bx bx-search",
 | 
			
		||||
                enabled: notSearch && noSelectedNotes },
 | 
			
		||||
            isHoisted ? null : { title: 'Hoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "empty", enabled: noSelectedNotes && notSearch },
 | 
			
		||||
            !isHoisted || !isNotRoot ? null : { title: 'Unhoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "door-open" },
 | 
			
		||||
            { title: 'Edit branch prefix <kbd data-command="editBranchPrefix"></kbd>', command: "editBranchPrefix", uiIcon: "empty",
 | 
			
		||||
            isHoisted ? null : { title: 'Hoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "bx bx-empty", enabled: noSelectedNotes && notSearch },
 | 
			
		||||
            !isHoisted || !isNotRoot ? null : { title: 'Unhoist note <kbd data-command="toggleNoteHoisting"></kbd>', command: "toggleNoteHoisting", uiIcon: "bx bx-door-open" },
 | 
			
		||||
            { title: 'Edit branch prefix <kbd data-command="editBranchPrefix"></kbd>', command: "editBranchPrefix", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: isNotRoot && parentNotSearch && noSelectedNotes},
 | 
			
		||||
            { title: "Advanced", uiIcon: "empty", enabled: true, items: [
 | 
			
		||||
                    { title: 'Expand subtree <kbd data-command="expandSubtree"></kbd>', command: "expandSubtree", uiIcon: "expand", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: 'Collapse subtree <kbd data-command="collapseSubtree"></kbd>', command: "collapseSubtree", uiIcon: "collapse", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: "Force note sync", command: "forceNoteSync", uiIcon: "refresh", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: 'Sort by ... <kbd data-command="sortChildNotes"></kbd>', command: "sortChildNotes", uiIcon: "empty", enabled: noSelectedNotes && notSearch },
 | 
			
		||||
                    { title: 'Recent changes in subtree', command: "recentChangesInSubtree", uiIcon: "history", enabled: noSelectedNotes }
 | 
			
		||||
            { title: "Advanced", uiIcon: "bx bx-empty", enabled: true, items: [
 | 
			
		||||
                    { title: 'Expand subtree <kbd data-command="expandSubtree"></kbd>', command: "expandSubtree", uiIcon: "bx bx-expand", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: 'Collapse subtree <kbd data-command="collapseSubtree"></kbd>', command: "collapseSubtree", uiIcon: "bx bx-collapse", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: "Force note sync", command: "forceNoteSync", uiIcon: "bx bx-refresh", enabled: noSelectedNotes },
 | 
			
		||||
                    { title: 'Sort by ... <kbd data-command="sortChildNotes"></kbd>', command: "sortChildNotes", uiIcon: "bx bx-empty", enabled: noSelectedNotes && notSearch },
 | 
			
		||||
                    { title: 'Recent changes in subtree', command: "recentChangesInSubtree", uiIcon: "bx bx-history", enabled: noSelectedNotes }
 | 
			
		||||
                ] },
 | 
			
		||||
            { title: "----" },
 | 
			
		||||
            { title: "Protect subtree", command: "protectSubtree", uiIcon: "check-shield", enabled: noSelectedNotes },
 | 
			
		||||
            { title: "Unprotect subtree", command: "unprotectSubtree", uiIcon: "shield", enabled: noSelectedNotes },
 | 
			
		||||
            { title: "Protect subtree", command: "protectSubtree", uiIcon: "bx bx-check-shield", enabled: noSelectedNotes },
 | 
			
		||||
            { title: "Unprotect subtree", command: "unprotectSubtree", uiIcon: "bx bx-shield", enabled: noSelectedNotes },
 | 
			
		||||
            { title: "----" },
 | 
			
		||||
            { title: 'Copy / clone <kbd data-command="copyNotesToClipboard"></kbd>', command: "copyNotesToClipboard", uiIcon: "copy",
 | 
			
		||||
            { title: 'Copy / clone <kbd data-command="copyNotesToClipboard"></kbd>', command: "copyNotesToClipboard", uiIcon: "bx bx-copy",
 | 
			
		||||
                enabled: isNotRoot && !isHoisted },
 | 
			
		||||
            { title: 'Clone to ... <kbd data-command="cloneNotesTo"></kbd>', command: "cloneNotesTo", uiIcon: "empty",
 | 
			
		||||
            { title: 'Clone to ... <kbd data-command="cloneNotesTo"></kbd>', command: "cloneNotesTo", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: isNotRoot && !isHoisted },
 | 
			
		||||
            { title: 'Cut <kbd data-command="cutNotesToClipboard"></kbd>', command: "cutNotesToClipboard", uiIcon: "cut",
 | 
			
		||||
            { title: 'Cut <kbd data-command="cutNotesToClipboard"></kbd>', command: "cutNotesToClipboard", uiIcon: "bx bx-cut",
 | 
			
		||||
                enabled: isNotRoot && !isHoisted && parentNotSearch },
 | 
			
		||||
            { title: 'Move to ... <kbd data-command="moveNotesTo"></kbd>', command: "moveNotesTo", uiIcon: "empty",
 | 
			
		||||
            { title: 'Move to ... <kbd data-command="moveNotesTo"></kbd>', command: "moveNotesTo", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: isNotRoot && !isHoisted && parentNotSearch },
 | 
			
		||||
            { title: 'Paste into <kbd data-command="pasteNotesFromClipboard"></kbd>', command: "pasteNotesFromClipboard", uiIcon: "paste",
 | 
			
		||||
            { title: 'Paste into <kbd data-command="pasteNotesFromClipboard"></kbd>', command: "pasteNotesFromClipboard", uiIcon: "bx bx-paste",
 | 
			
		||||
                enabled: !clipboard.isClipboardEmpty() && notSearch && noSelectedNotes },
 | 
			
		||||
            { title: 'Paste after', command: "pasteNotesAfterFromClipboard", uiIcon: "paste",
 | 
			
		||||
            { title: 'Paste after', command: "pasteNotesAfterFromClipboard", uiIcon: "bx bx-paste",
 | 
			
		||||
                enabled: !clipboard.isClipboardEmpty() && isNotRoot && !isHoisted && parentNotSearch && noSelectedNotes },
 | 
			
		||||
            { title: `Duplicate subtree <kbd data-command="duplicateSubtree">`, command: "duplicateSubtree", uiIcon: "empty",
 | 
			
		||||
            { title: `Duplicate subtree <kbd data-command="duplicateSubtree">`, command: "duplicateSubtree", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: parentNotSearch && isNotRoot && !isHoisted },
 | 
			
		||||
            { title: "----" },
 | 
			
		||||
            { title: "Export", command: "exportNote", uiIcon: "empty",
 | 
			
		||||
            { title: "Export", command: "exportNote", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: notSearch && noSelectedNotes },
 | 
			
		||||
            { title: "Import into note", command: "importIntoNote", uiIcon: "empty",
 | 
			
		||||
            { title: "Import into note", command: "importIntoNote", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: notSearch && noSelectedNotes },
 | 
			
		||||
            { title: "Bulk assign attributes", command: "bulkAssignAttributes", uiIcon: "empty",
 | 
			
		||||
            { title: "Bulk assign attributes", command: "bulkAssignAttributes", uiIcon: "bx bx-empty",
 | 
			
		||||
                enabled: true }
 | 
			
		||||
        ].filter(row => row !== null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async selectMenuItemHandler({command, type}) {
 | 
			
		||||
        const noteId = this.node.data.noteId;
 | 
			
		||||
        const notePath = treeService.getNotePath(this.node);
 | 
			
		||||
 | 
			
		||||
        if (command === 'openInTab') {
 | 
			
		||||
 | 
			
		||||
@ -217,11 +217,11 @@ export default class AttributeEditorWidget extends NoteContextAwareWidget {
 | 
			
		||||
            y: e.pageY,
 | 
			
		||||
            orientation: 'left',
 | 
			
		||||
            items: [
 | 
			
		||||
                {title: `Add new label <kbd data-command="addNewLabel"></kbd>`, command: "addNewLabel", uiIcon: "hash"},
 | 
			
		||||
                {title: `Add new relation <kbd data-command="addNewRelation"></kbd>`, command: "addNewRelation", uiIcon: "transfer"},
 | 
			
		||||
                {title: `Add new label <kbd data-command="addNewLabel"></kbd>`, command: "addNewLabel", uiIcon: "bx bx-hash"},
 | 
			
		||||
                {title: `Add new relation <kbd data-command="addNewRelation"></kbd>`, command: "addNewRelation", uiIcon: "bx bx-transfer"},
 | 
			
		||||
                {title: "----"},
 | 
			
		||||
                {title: "Add new label definition", command: "addNewLabelDefinition", uiIcon: "empty"},
 | 
			
		||||
                {title: "Add new relation definition", command: "addNewRelationDefinition", uiIcon: "empty"},
 | 
			
		||||
                {title: "Add new label definition", command: "addNewLabelDefinition", uiIcon: "bx bx-empty"},
 | 
			
		||||
                {title: "Add new relation definition", command: "addNewRelationDefinition", uiIcon: "bx bx-empty"},
 | 
			
		||||
            ],
 | 
			
		||||
            selectMenuItemHandler: ({command}) => this.handleAddNewAttributeCommand(command)
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
@ -65,8 +65,8 @@ export default class HistoryNavigationWidget extends BasicWidget {
 | 
			
		||||
            items.push({
 | 
			
		||||
                title,
 | 
			
		||||
                idx,
 | 
			
		||||
                uiIcon: idx == activeIndex ? "radio-circle-marked" : // compare with type coercion!
 | 
			
		||||
                    (idx < activeIndex ? "left-arrow-alt" : "right-arrow-alt")
 | 
			
		||||
                uiIcon: idx == activeIndex ? "bx bx-radio-circle-marked" : // compare with type coercion!
 | 
			
		||||
                    (idx < activeIndex ? "bx bx-left-arrow-alt" : "bx bx-right-arrow-alt")
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,9 +18,9 @@ class MobileDetailMenuWidget extends BasicWidget {
 | 
			
		||||
                x: e.pageX,
 | 
			
		||||
                y: e.pageY,
 | 
			
		||||
                items: [
 | 
			
		||||
                    { title: "Insert child note", command: "insertChildNote", uiIcon: "plus",
 | 
			
		||||
                    { title: "Insert child note", command: "insertChildNote", uiIcon: "bx bx-plus",
 | 
			
		||||
                        enabled: note.type !== 'search' },
 | 
			
		||||
                    { title: "Delete this note", command: "delete", uiIcon: "trash",
 | 
			
		||||
                    { title: "Delete this note", command: "delete", uiIcon: "bx bx-trash",
 | 
			
		||||
                        enabled: note.noteId !== 'root' }
 | 
			
		||||
                ],
 | 
			
		||||
                selectMenuItemHandler: async ({command}) => {
 | 
			
		||||
 | 
			
		||||
@ -262,9 +262,9 @@ export default class TabRowWidget extends BasicWidget {
 | 
			
		||||
                x: e.pageX,
 | 
			
		||||
                y: e.pageY,
 | 
			
		||||
                items: [
 | 
			
		||||
                    {title: "Move this tab to a new window", command: "moveTabToNewWindow", uiIcon: "window-open"},
 | 
			
		||||
                    {title: "Close all tabs", command: "removeAllTabs", uiIcon: "x"},
 | 
			
		||||
                    {title: "Close all tabs except for this", command: "removeAllTabsExceptForThis", uiIcon: "x"},
 | 
			
		||||
                    {title: "Move this tab to a new window", command: "moveTabToNewWindow", uiIcon: "bx bx-window-open"},
 | 
			
		||||
                    {title: "Close all tabs", command: "removeAllTabs", uiIcon: "bx bx-x"},
 | 
			
		||||
                    {title: "Close all tabs except for this", command: "removeAllTabsExceptForThis", uiIcon: "bx bx-x"},
 | 
			
		||||
                ],
 | 
			
		||||
                selectMenuItemHandler: ({command}) => {
 | 
			
		||||
                    this.triggerCommand(command, {ntxId});
 | 
			
		||||
 | 
			
		||||
@ -138,9 +138,9 @@ export default class RelationMapTypeWidget extends TypeWidget {
 | 
			
		||||
                x: e.pageX,
 | 
			
		||||
                y: e.pageY,
 | 
			
		||||
                items: [
 | 
			
		||||
                    {title: "Open in new tab", command: "openInNewTab", uiIcon: "empty"},
 | 
			
		||||
                    {title: "Remove note", command: "remove", uiIcon: "trash"},
 | 
			
		||||
                    {title: "Edit title", command: "editTitle", uiIcon: "pencil"},
 | 
			
		||||
                    {title: "Open in new tab", command: "openInNewTab", uiIcon: "bx bx-empty"},
 | 
			
		||||
                    {title: "Remove note", command: "remove", uiIcon: "bx bx-trash"},
 | 
			
		||||
                    {title: "Edit title", command: "editTitle", uiIcon: "bx bx-pencil"},
 | 
			
		||||
                ],
 | 
			
		||||
                selectMenuItemHandler: ({command}) => this.contextMenuHandler(command, e.target)
 | 
			
		||||
            });
 | 
			
		||||
@ -446,7 +446,7 @@ export default class RelationMapTypeWidget extends TypeWidget {
 | 
			
		||||
                contextMenu.show({
 | 
			
		||||
                    x: event.pageX,
 | 
			
		||||
                    y: event.pageY,
 | 
			
		||||
                    items: [ {title: "Remove relation", command: "remove", uiIcon: "trash"} ],
 | 
			
		||||
                    items: [ {title: "Remove relation", command: "remove", uiIcon: "bx bx-trash"} ],
 | 
			
		||||
                    selectMenuItemHandler: async ({command}) => {
 | 
			
		||||
                        if (command === 'remove') {
 | 
			
		||||
                            const confirmDialog = await import('../../dialogs/confirm.js');
 | 
			
		||||
 | 
			
		||||
@ -293,10 +293,20 @@ function getRelatedNotes(req) {
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function searchTemplates() {
 | 
			
		||||
    const query = formatAttrForSearch({type: 'label', name: "template"}, false);
 | 
			
		||||
 | 
			
		||||
    return searchService.searchNotes(query, {
 | 
			
		||||
        includeArchivedNotes: true,
 | 
			
		||||
        ignoreHoistedNote: false
 | 
			
		||||
    }).map(note => note.noteId);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    searchFromNote,
 | 
			
		||||
    searchAndExecute,
 | 
			
		||||
    getRelatedNotes,
 | 
			
		||||
    quickSearch,
 | 
			
		||||
    search
 | 
			
		||||
    search,
 | 
			
		||||
    searchTemplates
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -355,6 +355,7 @@ function register(app) {
 | 
			
		||||
    apiRoute(POST, '/api/search-and-execute-note/:noteId', searchRoute.searchAndExecute);
 | 
			
		||||
    apiRoute(POST, '/api/search-related', searchRoute.getRelatedNotes);
 | 
			
		||||
    apiRoute(GET, '/api/search/:searchString', searchRoute.search);
 | 
			
		||||
    apiRoute(GET, '/api/search-templates', searchRoute.searchTemplates);
 | 
			
		||||
 | 
			
		||||
    route(POST, '/api/login/sync', [], loginApiRoute.loginSync, apiResultHandler);
 | 
			
		||||
    // this is for entering protected mode so user has to be already logged-in (that's the reason we don't require username)
 | 
			
		||||
 | 
			
		||||
@ -51,6 +51,7 @@ module.exports = [
 | 
			
		||||
    { type: 'label', name: 'displayRelations' },
 | 
			
		||||
    { type: 'label', name: 'hideRelations' },
 | 
			
		||||
    { type: 'label', name: 'titleTemplate' },
 | 
			
		||||
    { type: 'label', name: 'template' },
 | 
			
		||||
 | 
			
		||||
    // relation names
 | 
			
		||||
    { type: 'relation', name: 'internalLink' },
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user