sidebar & widget state management WIP

This commit is contained in:
zadam 2019-08-15 10:04:03 +02:00
parent 61520bc3b3
commit 59da25ef55
9 changed files with 286 additions and 97 deletions

252
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "trilium", "name": "trilium",
"version": "0.34.2", "version": "0.34.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -599,9 +599,9 @@
} }
}, },
"@types/debug": { "@types/debug": {
"version": "4.1.4", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.4.tgz", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
"integrity": "sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ==", "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==",
"dev": true "dev": true
}, },
"@types/events": { "@types/events": {
@ -795,27 +795,27 @@
"integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
}, },
"app-builder-bin": { "app-builder-bin": {
"version": "3.4.2", "version": "3.4.3",
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.2.tgz", "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz",
"integrity": "sha512-E9VvUrZm60oLl0rvLw/ErvZiEOIHkulZbJ9C9TWMD4ftNrkXFc2+a5JGlD19Bwvj329d4qz91zs/hWD01q18TQ==", "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==",
"dev": true "dev": true
}, },
"app-builder-lib": { "app-builder-lib": {
"version": "21.1.5", "version": "21.2.0",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.1.5.tgz", "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz",
"integrity": "sha512-hLsSVSstMTq33a9jbBStrF0e+fa6eWXWIpsatPvHnJlkjx7dAZ5d2cZPe/1bAO3bCL3afpRl5j+HU853eGfDCg==", "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==",
"dev": true, "dev": true,
"requires": { "requires": {
"7zip-bin": "~5.0.3", "7zip-bin": "~5.0.3",
"@develar/schema-utils": "~2.1.0", "@develar/schema-utils": "~2.1.0",
"async-exit-hook": "^2.0.1", "async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.9", "bluebird-lst": "^1.0.9",
"builder-util": "21.1.5", "builder-util": "21.2.0",
"builder-util-runtime": "8.3.0", "builder-util-runtime": "8.3.0",
"chromium-pickle-js": "^0.2.0", "chromium-pickle-js": "^0.2.0",
"debug": "^4.1.1", "debug": "^4.1.1",
"ejs": "^2.6.2", "ejs": "^2.6.2",
"electron-publish": "21.1.5", "electron-publish": "21.2.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"hosted-git-info": "^2.7.1", "hosted-git-info": "^2.7.1",
"is-ci": "^2.0.0", "is-ci": "^2.0.0",
@ -825,7 +825,7 @@
"minimatch": "^3.0.4", "minimatch": "^3.0.4",
"normalize-package-data": "^2.5.0", "normalize-package-data": "^2.5.0",
"read-config-file": "5.0.0", "read-config-file": "5.0.0",
"sanitize-filename": "^1.6.1", "sanitize-filename": "^1.6.2",
"semver": "^6.3.0", "semver": "^6.3.0",
"temp-file": "^3.3.4" "temp-file": "^3.3.4"
}, },
@ -874,27 +874,21 @@
}, },
"dependencies": { "dependencies": {
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true "dev": true
} }
} }
}, },
"resolve": { "resolve": {
"version": "1.11.1", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
"integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
} }
} }
}, },
@ -1233,6 +1227,14 @@
"url-regex": "^3.0.0" "url-regex": "^3.0.0"
}, },
"dependencies": { "dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"requires": {
"glob": "^7.1.3"
}
},
"tempfile": { "tempfile": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
@ -1609,14 +1611,14 @@
} }
}, },
"builder-util": { "builder-util": {
"version": "21.1.5", "version": "21.2.0",
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.1.5.tgz", "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz",
"integrity": "sha512-RBr06OnoTKTkg0W7Om2dnuKe8I82CiciU9EdsNnLO8DAfH0ZVCPsVpc3qYmr7g/7cH3zXA3yyQP73QDGNpbVYQ==", "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==",
"dev": true, "dev": true,
"requires": { "requires": {
"7zip-bin": "~5.0.3", "7zip-bin": "~5.0.3",
"@types/debug": "^4.1.4", "@types/debug": "^4.1.4",
"app-builder-bin": "3.4.2", "app-builder-bin": "3.4.3",
"bluebird-lst": "^1.0.9", "bluebird-lst": "^1.0.9",
"builder-util-runtime": "8.3.0", "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2", "chalk": "^2.4.2",
@ -1624,7 +1626,7 @@
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"is-ci": "^2.0.0", "is-ci": "^2.0.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"source-map-support": "^0.5.12", "source-map-support": "^0.5.13",
"stat-mode": "^0.3.0", "stat-mode": "^0.3.0",
"temp-file": "^3.3.4" "temp-file": "^3.3.4"
}, },
@ -2275,9 +2277,9 @@
} }
}, },
"content-security-policy-builder": { "content-security-policy-builder": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz", "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz",
"integrity": "sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w==" "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ=="
}, },
"content-type": { "content-type": {
"version": "1.0.4", "version": "1.0.4",
@ -2371,6 +2373,17 @@
"dev": true, "dev": true,
"requires": { "requires": {
"rimraf": "^2.5.2" "rimraf": "^2.5.2"
},
"dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
}
} }
}, },
"crypto-random-string": { "crypto-random-string": {
@ -2901,18 +2914,18 @@
} }
}, },
"dmg-builder": { "dmg-builder": {
"version": "21.1.5", "version": "21.2.0",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-21.1.5.tgz", "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-21.2.0.tgz",
"integrity": "sha512-o9rZua7mzNzZIo9SZJi57ZXe4zjNaajxEJ0LO/8k2z8Q2CL57RIaJZ95sA6G0dC1/g5Gm4cmW3O5nv9Ur8Ayow==", "integrity": "sha512-9cJEclnGy7EyKFCoHDYDf54pub/t92CQapyiUxU0w9Bj2vUvfoDagP1PMiX4XD5rPp96141h9A+QN0OB4VgvQg==",
"dev": true, "dev": true,
"requires": { "requires": {
"app-builder-lib": "~21.1.5", "app-builder-lib": "~21.2.0",
"bluebird-lst": "^1.0.9", "bluebird-lst": "^1.0.9",
"builder-util": "~21.1.5", "builder-util": "~21.2.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"iconv-lite": "^0.5.0", "iconv-lite": "^0.5.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"sanitize-filename": "^1.6.1" "sanitize-filename": "^1.6.2"
}, },
"dependencies": { "dependencies": {
"esprima": { "esprima": {
@ -3119,22 +3132,22 @@
} }
}, },
"electron-builder": { "electron-builder": {
"version": "21.1.5", "version": "21.2.0",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.1.5.tgz", "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.2.0.tgz",
"integrity": "sha512-2tEgBESGWQ661dC9/rZlpbtmhlofoNPwnkO6KUuCZUBYpFMRvpMzH2IF7vQYsCst78yxnrV0CtiBePhM1i+DfA==", "integrity": "sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw==",
"dev": true, "dev": true,
"requires": { "requires": {
"app-builder-lib": "21.1.5", "app-builder-lib": "21.2.0",
"bluebird-lst": "^1.0.9", "bluebird-lst": "^1.0.9",
"builder-util": "21.1.5", "builder-util": "21.2.0",
"builder-util-runtime": "8.3.0", "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"dmg-builder": "21.1.5", "dmg-builder": "21.2.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"is-ci": "^2.0.0", "is-ci": "^2.0.0",
"lazy-val": "^1.0.4", "lazy-val": "^1.0.4",
"read-config-file": "5.0.0", "read-config-file": "5.0.0",
"sanitize-filename": "^1.6.1", "sanitize-filename": "^1.6.2",
"update-notifier": "^3.0.1", "update-notifier": "^3.0.1",
"yargs": "^13.3.0" "yargs": "^13.3.0"
}, },
@ -3613,6 +3626,15 @@
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true "dev": true
}, },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"yargs": { "yargs": {
"version": "4.8.1", "version": "4.8.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",
@ -3648,9 +3670,9 @@
} }
}, },
"electron-context-menu": { "electron-context-menu": {
"version": "0.13.0", "version": "0.14.0",
"resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.13.0.tgz", "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-0.14.0.tgz",
"integrity": "sha512-a98UDykOn+tiyb2mQEz710ZNWj/L85wHv6jRUJFE9GNLSaRH5I5BR022RYoWInLTj1Mns66vh9SueyMPWc+aTQ==", "integrity": "sha512-7PuDz0Z3Eebhg/OS3JfPqHrQYl5ApokT/05PPUbNELk0EHBfFZwVcVneOJ05SlaGagK1bfQIXf75WSZt/K23VA==",
"requires": { "requires": {
"cli-truncate": "^2.0.0", "cli-truncate": "^2.0.0",
"electron-dl": "^1.2.0", "electron-dl": "^1.2.0",
@ -3803,6 +3825,17 @@
"dev": true, "dev": true,
"requires": { "requires": {
"rimraf": "^2.6.3" "rimraf": "^2.6.3"
},
"dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
}
} }
}, },
"tmp-promise": { "tmp-promise": {
@ -3932,13 +3965,13 @@
} }
}, },
"electron-publish": { "electron-publish": {
"version": "21.1.5", "version": "21.2.0",
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.1.5.tgz", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz",
"integrity": "sha512-EgFxZJBrb+EBUcEwg8RNKouoBaOEpACnjLi+ipUsk72x+/6kzhcofAYBchIkGns7meengoXy7QdoiThgpr6rew==", "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==",
"dev": true, "dev": true,
"requires": { "requires": {
"bluebird-lst": "^1.0.9", "bluebird-lst": "^1.0.9",
"builder-util": "~21.1.5", "builder-util": "~21.2.0",
"builder-util-runtime": "8.3.0", "builder-util-runtime": "8.3.0",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
@ -4856,6 +4889,16 @@
"pify": "^3.0.0", "pify": "^3.0.0",
"rimraf": "^2.5.4", "rimraf": "^2.5.4",
"tempfile": "^2.0.0" "tempfile": "^2.0.0"
},
"dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"requires": {
"glob": "^7.1.3"
}
}
} }
}, },
"exec-series": { "exec-series": {
@ -5457,9 +5500,9 @@
} }
}, },
"file-type": { "file-type": {
"version": "12.0.1", "version": "12.1.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-12.0.1.tgz", "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.1.0.tgz",
"integrity": "sha512-YIs1E51cmqcmgF38ODjy0+M/l5DyfIIy3vngTOujQr/lXqkaSskfBniaZoZ1HVIpa5FTf5e7hCXS4TzxfNGMRQ==" "integrity": "sha512-aZkf42yWGiH+vSOpbVgvbnoRuX4JiitMX9pHYqTHemNQ3lrx64iHi33YGAP7TSJSno56kxQY1lHmw8S6ujlFUg=="
}, },
"filename-regex": { "filename-regex": {
"version": "2.0.1", "version": "2.0.1",
@ -5643,6 +5686,17 @@
"graceful-fs": "^4.1.2", "graceful-fs": "^4.1.2",
"rimraf": "~2.6.2", "rimraf": "~2.6.2",
"write": "^0.2.1" "write": "^0.2.1"
},
"dependencies": {
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
}
} }
}, },
"flora-colossus": { "flora-colossus": {
@ -6519,9 +6573,9 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
}, },
"helmet": { "helmet": {
"version": "3.19.0", "version": "3.20.0",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-3.19.0.tgz", "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.20.0.tgz",
"integrity": "sha512-l58Q3unSpYatlurvFzkCbTRQ8oWUmdXbOs7h+pnwQbFJRhRJDjER6UMyqHxp9iFtWPcVA05VLcUGSi0EXIv7GA==", "integrity": "sha512-Ob+TqmQFZ5f7WgP8kBbAzNPsbf6p1lOj5r+327/ymw/IILWih3wcx9u/u/S8Mwv5wbBkO7Li6x5s23t3COhUKw==",
"requires": { "requires": {
"depd": "2.0.0", "depd": "2.0.0",
"dns-prefetch-control": "0.2.0", "dns-prefetch-control": "0.2.0",
@ -6530,7 +6584,7 @@
"feature-policy": "0.3.0", "feature-policy": "0.3.0",
"frameguard": "3.1.0", "frameguard": "3.1.0",
"helmet-crossdomain": "0.4.0", "helmet-crossdomain": "0.4.0",
"helmet-csp": "2.7.1", "helmet-csp": "2.8.0",
"hide-powered-by": "1.1.0", "hide-powered-by": "1.1.0",
"hpkp": "2.0.0", "hpkp": "2.0.0",
"hsts": "2.2.0", "hsts": "2.2.0",
@ -6553,12 +6607,12 @@
"integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA=="
}, },
"helmet-csp": { "helmet-csp": {
"version": "2.7.1", "version": "2.8.0",
"resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.7.1.tgz", "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.8.0.tgz",
"integrity": "sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ==", "integrity": "sha512-MlCPeM0Sm3pS9RACRihx70VeTHmkQwa7sum9EK1tfw1VZyvFU0dBWym9nHh3CRkTRNlyNm/WFCMvuh9zXkOjNw==",
"requires": { "requires": {
"camelize": "1.0.0", "camelize": "1.0.0",
"content-security-policy-builder": "2.0.0", "content-security-policy-builder": "2.1.0",
"dasherize": "2.0.0", "dasherize": "2.0.0",
"platform": "1.3.5" "platform": "1.3.5"
} }
@ -9066,17 +9120,17 @@
"integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q=="
}, },
"node-abi": { "node-abi": {
"version": "2.10.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.10.0.tgz", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz",
"integrity": "sha512-OT0WepUvYHXdki6DU8LWhEkuo3M44i2paWBYtH9qXtPb9YiKlYEKa5WUII20XEcOv7UJPzfB0kZfPZdW46zdkw==", "integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==",
"requires": { "requires": {
"semver": "^5.4.1" "semver": "^5.4.1"
}, },
"dependencies": { "dependencies": {
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
} }
} }
}, },
@ -9108,6 +9162,15 @@
"abbrev": "1" "abbrev": "1"
} }
}, },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"semver": { "semver": {
"version": "5.3.0", "version": "5.3.0",
"resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
@ -9133,6 +9196,14 @@
"tar": "^4" "tar": "^4"
}, },
"dependencies": { "dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"requires": {
"glob": "^7.1.3"
}
},
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
@ -11336,9 +11407,9 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
}, },
"rimraf": { "rimraf": {
"version": "2.6.3", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
"requires": { "requires": {
"glob": "^7.1.3" "glob": "^7.1.3"
} }
@ -11391,9 +11462,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"sanitize-filename": { "sanitize-filename": {
"version": "1.6.1", "version": "1.6.2",
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.2.tgz",
"integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "integrity": "sha512-cmTzND7RMxUB+f7gI+4+KAVHWEg0lfXvQJdko+FXDP5bNbGIdx4KMP5pX6lv5jfT9jSf6OBbjyxjFtZQwYA/ig==",
"requires": { "requires": {
"truncate-utf8-bytes": "^1.0.0" "truncate-utf8-bytes": "^1.0.0"
} }
@ -11412,9 +11483,9 @@
} }
}, },
"semver": { "semver": {
"version": "6.2.0", "version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}, },
"semver-diff": { "semver-diff": {
"version": "2.1.0", "version": "2.1.0",
@ -11834,9 +11905,9 @@
} }
}, },
"source-map-support": { "source-map-support": {
"version": "0.5.12", "version": "0.5.13",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
"integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
"dev": true, "dev": true,
"requires": { "requires": {
"buffer-from": "^1.0.0", "buffer-from": "^1.0.0",
@ -12488,6 +12559,17 @@
"dev": true, "dev": true,
"requires": { "requires": {
"rimraf": "^2.6.3" "rimraf": "^2.6.3"
},
"dependencies": {
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
}
} }
}, },
"tmp-promise": { "tmp-promise": {
@ -13323,9 +13405,9 @@
} }
}, },
"ws": { "ws": {
"version": "7.1.0", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.1.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.1.tgz",
"integrity": "sha512-Swie2C4fs7CkwlHu1glMePLYJJsWjzhl1vm3ZaLplD0h7OMkZyZ6kLTB/OagiU923bZrPFXuDTeEqaEN4NWG4g==", "integrity": "sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==",
"requires": { "requires": {
"async-limiter": "^1.0.0" "async-limiter": "^1.0.0"
} }

View File

@ -55,13 +55,13 @@
"mime-types": "2.1.24", "mime-types": "2.1.24",
"moment": "2.24.0", "moment": "2.24.0",
"multer": "1.4.2", "multer": "1.4.2",
"node-abi": "2.10.0", "node-abi": "2.11.0",
"open": "6.4.0", "open": "6.4.0",
"pngjs": "3.4.0", "pngjs": "3.4.0",
"portscanner": "2.2.0", "portscanner": "2.2.0",
"rand-token": "0.4.0", "rand-token": "0.4.0",
"rcedit": "2.0.0", "rcedit": "2.0.0",
"rimraf": "2.6.3", "rimraf": "3.0.0",
"sanitize-filename": "1.6.2", "sanitize-filename": "1.6.2",
"sax": "1.2.4", "sax": "1.2.4",
"semver": "6.3.0", "semver": "6.3.0",

View File

@ -513,19 +513,18 @@ function openTabsChanged() {
} }
async function saveOpenTabs() { async function saveOpenTabs() {
const activeTabEl = tabRow.activeTabEl;
const openTabs = []; const openTabs = [];
for (const tabEl of tabRow.tabEls) { for (const tabEl of tabRow.tabEls) {
const tabId = tabEl.getAttribute('data-tab-id'); const tabId = tabEl.getAttribute('data-tab-id');
const tabContext = tabContexts.find(tc => tc.tabId === tabId); const tabContext = tabContexts.find(tc => tc.tabId === tabId);
if (tabContext && tabContext.notePath) { if (tabContext) {
openTabs.push({ const tabState = tabContext.getTabState();
tabId: tabContext.tabId,
notePath: tabContext.notePath, if (tabState) {
active: activeTabEl === tabEl openTabs.push(tabState);
}); }
} }
} }
@ -573,5 +572,6 @@ export default {
openEmptyTab, openEmptyTab,
noteDeleted, noteDeleted,
refreshTabs, refreshTabs,
noteChanged noteChanged,
openTabsChanged
}; };

View File

@ -38,14 +38,27 @@ class Sidebar {
this.$hideSidebarButton.click(() => { this.$hideSidebarButton.click(() => {
this.$sidebar.hide(); this.$sidebar.hide();
this.$showSideBarButton.show(); this.$showSideBarButton.show();
this.ctx.stateChanged();
}); });
this.$showSideBarButton.click(() => { this.$showSideBarButton.click(() => {
this.$sidebar.show(); this.$sidebar.show();
this.$showSideBarButton.hide(); this.$showSideBarButton.hide();
this.ctx.stateChanged();
}); });
} }
isVisible() {
return this.$sidebar.is(":visible");
}
getSidebarState() {
return {
visible: this.isVisible(),
widgets: this.widgets.map(w => w.getWidgetState())
}
}
async noteLoaded() { async noteLoaded() {
this.widgets = []; this.widgets = [];
this.$widgets.empty(); this.$widgets.empty();

View File

@ -363,6 +363,23 @@ class TabContext {
this.sidebar.syncDataReceived(syncData); this.sidebar.syncDataReceived(syncData);
} }
} }
getTabState() {
if (!this.notePath) {
return null;
}
return {
tabId: this.tabId,
notePath: this.notePath,
active: this.tabRow.activeTabEl === this.$tab[0],
sidebar: this.sidebar && this.sidebar.getSidebarState()
}
}
stateChanged() {
noteDetailService.openTabsChanged();
}
} }
export default TabContext; export default TabContext;

View File

@ -11,9 +11,13 @@ class AttributesWidget {
constructor(ctx, $widget) { constructor(ctx, $widget) {
this.ctx = ctx; this.ctx = ctx;
this.$widget = $widget; this.$widget = $widget;
this.$widget.on('show.bs.collapse', () => this.renderBody());
this.$widget.on('show.bs.collapse', () => this.ctx.stateChanged());
this.$widget.on('hide.bs.collapse', () => this.ctx.stateChanged());
this.$title = this.$widget.find('.widget-title'); this.$title = this.$widget.find('.widget-title');
this.$title.text("Attributes"); this.$title.text("Attributes");
this.$headerActions = this.$widget.find('.widget-header-actions'); this.$headerActions = this.$widget.find('.widget-header-actions');
this.$bodyWrapper = this.$widget.find('.body-wrapper');
const $showFullButton = $("<a>").append("show dialog").addClass('widget-header-action'); const $showFullButton = $("<a>").append("show dialog").addClass('widget-header-action');
$showFullButton.click(() => { $showFullButton.click(() => {
@ -24,13 +28,18 @@ class AttributesWidget {
} }
async renderBody() { async renderBody() {
if (!this.isVisible()) {
return;
}
const $body = this.$widget.find('.card-body'); const $body = this.$widget.find('.card-body');
const attributes = await this.ctx.attributes.getAttributes(); const attributes = await this.ctx.attributes.getAttributes();
const ownedAttributes = attributes.filter(attr => attr.noteId === this.ctx.note.noteId); const ownedAttributes = attributes.filter(attr => attr.noteId === this.ctx.note.noteId);
if (ownedAttributes.length === 0) { if (attributes.length === 0) {
$body.text("No own attributes yet..."); $body.text("No attributes yet...");
return;
} }
const $attributesContainer = $("<div>"); const $attributesContainer = $("<div>");
@ -96,6 +105,17 @@ class AttributesWidget {
this.renderBody(); this.renderBody();
} }
} }
getWidgetState() {
return {
id: 'attributes',
visible: this.isVisible()
};
}
isVisible() {
return this.$bodyWrapper.is(":visible");
}
} }
export default AttributesWidget; export default AttributesWidget;

View File

@ -30,9 +30,13 @@ class LinkMapWidget {
constructor(ctx, $widget) { constructor(ctx, $widget) {
this.ctx = ctx; this.ctx = ctx;
this.$widget = $widget; this.$widget = $widget;
this.$widget.on('show.bs.collapse', () => this.renderBody());
this.$widget.on('show.bs.collapse', () => this.ctx.stateChanged());
this.$widget.on('hide.bs.collapse', () => this.ctx.stateChanged());
this.$title = this.$widget.find('.widget-title'); this.$title = this.$widget.find('.widget-title');
this.$title.text("Link map"); this.$title.text("Link map");
this.$headerActions = this.$widget.find('.widget-header-actions'); this.$headerActions = this.$widget.find('.widget-header-actions');
this.$bodyWrapper = this.$widget.find('.body-wrapper');
const $showFullButton = $("<a>").append("show full").addClass('widget-header-action'); const $showFullButton = $("<a>").append("show full").addClass('widget-header-action');
$showFullButton.click(() => { $showFullButton.click(() => {
@ -43,6 +47,10 @@ class LinkMapWidget {
} }
async renderBody() { async renderBody() {
if (!this.isVisible()) {
return;
}
const $body = this.$widget.find('.card-body'); const $body = this.$widget.find('.card-body');
$body.html(TPL); $body.html(TPL);
@ -225,6 +233,17 @@ class LinkMapWidget {
noteIdToId(noteId) { noteIdToId(noteId) {
return "link-map-note-" + noteId; return "link-map-note-" + noteId;
} }
getWidgetState() {
return {
id: 'attributes',
visible: this.isVisible()
};
}
isVisible() {
return this.$bodyWrapper.is(":visible");
}
} }
export default LinkMapWidget; export default LinkMapWidget;

View File

@ -31,11 +31,19 @@ class NoteInfoWidget {
constructor(ctx, $widget) { constructor(ctx, $widget) {
this.ctx = ctx; this.ctx = ctx;
this.$widget = $widget; this.$widget = $widget;
this.$widget.on('show.bs.collapse', () => this.renderBody());
this.$widget.on('show.bs.collapse', () => this.ctx.stateChanged());
this.$widget.on('hide.bs.collapse', () => this.ctx.stateChanged());
this.$title = this.$widget.find('.widget-title'); this.$title = this.$widget.find('.widget-title');
this.$title.text("Note info"); this.$title.text("Note info");
this.$bodyWrapper = this.$widget.find('.body-wrapper');
} }
async renderBody() { async renderBody() {
if (!this.isVisible()) {
return;
}
const $body = this.$widget.find('.card-body'); const $body = this.$widget.find('.card-body');
$body.html(TPL); $body.html(TPL);
@ -60,6 +68,17 @@ class NoteInfoWidget {
this.renderBody(); this.renderBody();
} }
} }
getWidgetState() {
return {
id: 'attributes',
visible: this.isVisible()
};
}
isVisible() {
return this.$bodyWrapper.is(":visible");
}
} }
export default NoteInfoWidget; export default NoteInfoWidget;

View File

@ -13,11 +13,19 @@ class NoteRevisionsWidget {
constructor(ctx, $widget) { constructor(ctx, $widget) {
this.ctx = ctx; this.ctx = ctx;
this.$widget = $widget; this.$widget = $widget;
this.$widget.on('show.bs.collapse', () => this.renderBody());
this.$widget.on('show.bs.collapse', () => this.ctx.stateChanged());
this.$widget.on('hide.bs.collapse', () => this.ctx.stateChanged());
this.$title = this.$widget.find('.widget-title'); this.$title = this.$widget.find('.widget-title');
this.$title.text("Note revisions"); this.$title.text("Note revisions");
this.$bodyWrapper = this.$widget.find('.body-wrapper');
} }
async renderBody() { async renderBody() {
if (!this.isVisible()) {
return;
}
const $body = this.$widget.find('.card-body'); const $body = this.$widget.find('.card-body');
const revisionItems = await server.get(`notes/${this.ctx.note.noteId}/revisions`); const revisionItems = await server.get(`notes/${this.ctx.note.noteId}/revisions`);
@ -45,6 +53,17 @@ class NoteRevisionsWidget {
this.renderBody(); this.renderBody();
} }
} }
getWidgetState() {
return {
id: 'attributes',
visible: this.isVisible()
};
}
isVisible() {
return this.$bodyWrapper.is(":visible");
}
} }
export default NoteRevisionsWidget; export default NoteRevisionsWidget;