From 95149fb9c3c8e6ff0463abeb3b0bd908e2500505 Mon Sep 17 00:00:00 2001 From: Caleb Campbell Date: Tue, 10 Feb 2026 10:32:39 +1100 Subject: [PATCH] 18 - Modified settings to use new SettingGroup API. --- package-lock.json | 256 ++++++++++------ src/i18n/de/settings-labels.ts | 10 +- src/i18n/en/settings-labels.ts | 10 +- src/i18n/ko/settings-labels.ts | 10 +- src/i18n/models.ts | 2 - src/local-bible-ref-setting-tab.ts | 456 +++++++++++++++-------------- styles.css | 6 +- 7 files changed, 423 insertions(+), 327 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7f5270..4def6c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,9 +21,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", - "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.0.tgz", + "integrity": "sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==", "dev": true, "license": "MIT", "peer": true, @@ -32,9 +32,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.38.0", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.0.tgz", - "integrity": "sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==", + "version": "6.38.6", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.6.tgz", + "integrity": "sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==", "dev": true, "license": "MIT", "peer": true, @@ -53,6 +53,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -69,6 +70,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -85,6 +87,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -101,6 +104,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -117,6 +121,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -133,6 +138,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -149,6 +155,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -165,6 +172,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -181,6 +189,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -197,6 +206,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -213,6 +223,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -229,6 +240,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -245,6 +257,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -261,6 +274,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -277,6 +291,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -293,6 +308,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -309,6 +325,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -325,6 +342,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -341,6 +359,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -357,6 +376,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -373,6 +393,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -389,6 +410,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -398,9 +420,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "peer": true, @@ -418,9 +440,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "peer": true, @@ -518,6 +540,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -531,6 +554,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -540,6 +564,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -553,33 +578,38 @@ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", "integrity": "sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==", "dev": true, + "license": "MIT", "dependencies": { "@types/tern": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "16.18.98", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.98.tgz", - "integrity": "sha512-fpiC20NvLpTLAzo3oVBKIqBGR6Fx/8oAK/SSf7G+fydnXMY1x4x9RZ6sBXhqKlCU21g2QapUsbLlhv3+a7wS+Q==", - "dev": true + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/tern": { "version": "0.23.9", "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -589,6 +619,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz", "integrity": "sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "5.29.0", "@typescript-eslint/type-utils": "5.29.0", @@ -622,6 +653,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz", "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.29.0", "@typescript-eslint/types": "5.29.0", @@ -649,6 +681,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.29.0", "@typescript-eslint/visitor-keys": "5.29.0" @@ -666,6 +699,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz", "integrity": "sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.29.0", "debug": "^4.3.4", @@ -692,6 +726,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -705,6 +740,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.29.0", "@typescript-eslint/visitor-keys": "5.29.0", @@ -732,6 +768,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "@typescript-eslint/scope-manager": "5.29.0", @@ -756,6 +793,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.29.0", "eslint-visitor-keys": "^3.3.0" @@ -860,6 +898,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -889,6 +928,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -901,6 +941,7 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -992,12 +1033,13 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1021,6 +1063,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -1048,6 +1091,7 @@ "integrity": "sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -1156,6 +1200,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1169,6 +1214,7 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -1187,6 +1233,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -1196,6 +1243,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1232,20 +1280,6 @@ "node": ">=4.0" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -1266,9 +1300,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -1295,6 +1329,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1307,6 +1342,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1316,6 +1352,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1340,21 +1377,35 @@ "peer": true }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1372,10 +1423,11 @@ "peer": true }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -1399,6 +1451,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1460,13 +1513,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "peer": true, @@ -1486,15 +1540,17 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { @@ -1519,6 +1575,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -1554,10 +1611,11 @@ } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -1617,6 +1675,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1626,6 +1685,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1638,6 +1698,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1662,9 +1723,9 @@ "peer": true }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "peer": true, @@ -1755,15 +1816,17 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1791,15 +1854,17 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -1810,9 +1875,9 @@ "peer": true }, "node_modules/obsidian": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.8.7.tgz", - "integrity": "sha512-h4bWwNFAGRXlMlMAzdEiIM2ppTGlrh7uGOJS6w4gClrsjc+ei/3YAtU2VdFUlCiPuTHpY4aBpFJJW75S1Tl/JA==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.11.4.tgz", + "integrity": "sha512-n0KD3S+VndgaByrEtEe8NELy0ya6/s+KZ7OcxA6xOm5NN4thxKpQjo6eqEudHEvfGCeT/TYToAKJzitQ1I3XTg==", "dev": true, "license": "MIT", "dependencies": { @@ -1820,8 +1885,8 @@ "moment": "2.29.4" }, "peerDependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" + "@codemirror/state": "6.5.0", + "@codemirror/view": "6.38.6" } }, "node_modules/once": { @@ -1940,6 +2005,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1949,6 +2015,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1968,9 +2035,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -2012,13 +2079,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -2038,10 +2107,11 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -2084,15 +2154,17 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2130,6 +2202,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2163,9 +2236,9 @@ } }, "node_modules/style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", "dev": true, "license": "MIT", "peer": true @@ -2197,6 +2270,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2208,13 +2282,15 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -2229,7 +2305,8 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -2264,6 +2341,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/i18n/de/settings-labels.ts b/src/i18n/de/settings-labels.ts index eb1cbc5..99552f8 100644 --- a/src/i18n/de/settings-labels.ts +++ b/src/i18n/de/settings-labels.ts @@ -4,7 +4,7 @@ import { QuoteReferencePosition } from 'src/settings'; export const SETTINGS_LABELS: SettingsLabels = { required: { - name: 'Erforderliche Einstellungen', + name: 'Erforderlich', controls: { biblesPath: { name: 'Bibeldateien', @@ -15,7 +15,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, optional: { - name: 'Optionale Einstellungen', + name: 'Optional', controls: { defaultVersion: { name: 'Standardversion', @@ -48,8 +48,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, quoteFormat: { - name: 'Einstellungen für das Angebotsformat', - description: 'Einstellungen für das Zitatpassageformat.', + name: 'Angebotsformat', controls: { includeReference: { name: 'Referenz angeben', @@ -73,8 +72,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, calloutFormat: { - name: 'Einstellungen für das Callout-Format', - description: 'Einstellungen für das Format des Callout-Passages.', + name: 'Callout-Format', controls: { calloutType: { name: 'Callout-Typ', diff --git a/src/i18n/en/settings-labels.ts b/src/i18n/en/settings-labels.ts index 568bf6d..98e925b 100644 --- a/src/i18n/en/settings-labels.ts +++ b/src/i18n/en/settings-labels.ts @@ -4,7 +4,7 @@ import { QuoteReferencePosition } from 'src/settings'; export const SETTINGS_LABELS: SettingsLabels = { required: { - name: 'Required Settings', + name: 'Required', controls: { biblesPath: { name: 'Bibles path', @@ -15,7 +15,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, optional: { - name: 'Optional Settings', + name: 'Optional', controls: { defaultVersion: { name: 'Default version', @@ -47,8 +47,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, quoteFormat: { - name: 'Quote Format Settings', - description: 'Settings for the quote passage format.', + name: 'Quote format', controls: { includeReference: { name: 'Include reference', @@ -72,8 +71,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, calloutFormat: { - name: 'Callout Format Settings', - description: 'Settings for the callout passage format.', + name: 'Callout format', controls: { calloutType: { name: 'Callout type', diff --git a/src/i18n/ko/settings-labels.ts b/src/i18n/ko/settings-labels.ts index 6eb9033..1e9e4c5 100644 --- a/src/i18n/ko/settings-labels.ts +++ b/src/i18n/ko/settings-labels.ts @@ -4,7 +4,7 @@ import { QuoteReferencePosition } from 'src/settings'; export const SETTINGS_LABELS: SettingsLabels = { required: { - name: '필수 설정', + name: '필수의', controls: { biblesPath: { name: '성경의 길', @@ -15,7 +15,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, optional: { - name: '선택적 설정', + name: '선택 과목', controls: { defaultVersion: { name: '기본 버전', @@ -46,8 +46,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, quoteFormat: { - name: '견적 형식 설정', - description: '인용구 형식 설정입니다.', + name: '견적 형식', controls: { includeReference: { name: '참조 포함', @@ -69,8 +68,7 @@ export const SETTINGS_LABELS: SettingsLabels = { }, calloutFormat: { - name: '콜아웃 형식 설정', - description: '설명문 형식 설정입니다.', + name: '콜아웃 형식', controls: { calloutType: { name: '콜아웃 유형', diff --git a/src/i18n/models.ts b/src/i18n/models.ts index f44610a..72526ab 100644 --- a/src/i18n/models.ts +++ b/src/i18n/models.ts @@ -39,7 +39,6 @@ export interface SettingsLabels { quoteFormat: { name: string; - description: string; controls: { includeReference: Control; referencePosition: Control & { @@ -54,7 +53,6 @@ export interface SettingsLabels { calloutFormat: { name: string; - description: string; controls: { calloutType: Control; linkToPassage: Control; diff --git a/src/local-bible-ref-setting-tab.ts b/src/local-bible-ref-setting-tab.ts index 73a9282..80745c5 100644 --- a/src/local-bible-ref-setting-tab.ts +++ b/src/local-bible-ref-setting-tab.ts @@ -6,6 +6,7 @@ import { Notice, PluginSettingTab, Setting, + SettingGroup, TextComponent, } from 'obsidian'; import { PassageFormat } from './passage-reference'; @@ -16,7 +17,7 @@ import { SettingsLabels } from './i18n/models'; import { I18N } from './i18n'; export default class LocalBibleRefSettingTab extends PluginSettingTab { - private readonly hiddenClass = 'local-bible-ref-hidden'; + private readonly settingClass = 'local-bible-ref-setting'; private plugin: LocalBibleRefPlugin; private folderDoesNotExistText = ''; @@ -49,240 +50,265 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { this.settingsLabels; containerEl.empty(); - new Setting(containerEl).setName(required.name).setHeading(); - + // required settings --- let biblesPathTimeout: number; - new Setting(containerEl) - .setName(required.controls.biblesPath.name) - .setDesc(required.controls.biblesPath.description) - .addText((text) => { - text - .setPlaceholder(required.controls.biblesPath.placeholder) - .setValue(this.plugin.settings.biblesPath) - .onChange(async (value) => { - // toggle visibility of default version setting - if (value) { - defaultVersionSetting.settingEl.removeClass(this.hiddenClass); - } else { - defaultVersionSetting.settingEl.addClass(this.hiddenClass); - ( - defaultVersionSetting.components[0] as TextComponent - ).inputEl.value = ''; - this.plugin.settings.defaultVersionShorthand = ''; - } + new SettingGroup(containerEl) + .setHeading(required.name) + .addSetting((setting) => + setting + .setName(required.controls.biblesPath.name) + .setDesc(required.controls.biblesPath.description) + .setClass(this.settingClass) + .addText((text) => { + text + .setPlaceholder(required.controls.biblesPath.placeholder) + .setValue(this.plugin.settings.biblesPath) + .onChange(async (value) => { + // toggle editability of default version setting + if (value) { + defaultVersionSetting.setDisabled(false); + } else { + defaultVersionSetting.setDisabled(true); + const textComponent = defaultVersionSetting + .components[0] as TextComponent; + textComponent.inputEl.value = ''; + this.plugin.settings.defaultVersionShorthand = ''; + } - const path = value ? normalizePath(value) : ''; - this.plugin.settings.biblesPath = path; - await this.plugin.saveSettings(); + const path = value ? normalizePath(value) : ''; + this.plugin.settings.biblesPath = path; + await this.plugin.saveSettings(); - clearTimeout(biblesPathTimeout); - biblesPathTimeout = window.setTimeout(async () => { - if (!path) return; - const exists = this.app.vault.getFolderByPath(path); - if (!exists) - new Notice(`${this.folderDoesNotExistText} ${path}.`); - }, 1000); - }); - - new PathSuggest(this.app, text.inputEl); - }); + clearTimeout(biblesPathTimeout); + biblesPathTimeout = window.setTimeout(async () => { + if (!path) return; + const exists = this.app.vault.getFolderByPath(path); + if (!exists) + new Notice(`${this.folderDoesNotExistText} ${path}.`); + }, 1000); + }); + new PathSuggest(this.app, text.inputEl); + }) + ); // optional settings --- - new Setting(containerEl).setName(optional.name).setHeading(); - let defaultVersionTimeout: number; - const defaultVersionSetting = new Setting(containerEl) - .setName(optional.controls.defaultVersion.name) - .setDesc(optional.controls.defaultVersion.description) - .addText((text) => { - text - .setPlaceholder(optional.controls.defaultVersion.placeholder) - .setValue(this.plugin.settings.defaultVersionShorthand) - .onChange(async (value) => { - this.plugin.settings.defaultVersionShorthand = value; - await this.plugin.saveSettings(); + let defaultVersionSetting = {} as Setting; + new SettingGroup(containerEl) + .setHeading(optional.name) + .addSetting((setting) => { + setting + .setName(optional.controls.defaultVersion.name) + .setDesc(optional.controls.defaultVersion.description) + .setClass(this.settingClass) + .addText((text) => { + text + .setPlaceholder(optional.controls.defaultVersion.placeholder) + .setValue(this.plugin.settings.defaultVersionShorthand) + .onChange(async (value) => { + this.plugin.settings.defaultVersionShorthand = value; + await this.plugin.saveSettings(); - clearTimeout(defaultVersionTimeout); - defaultVersionTimeout = window.setTimeout(async () => { - const path = `${this.plugin.settings.biblesPath}/${value}`; - const exists = this.app.vault.getFolderByPath( - normalizePath(path) - ); - if (!exists) - new Notice(`${this.folderDoesNotExistText} ${path}.`); - }, 1000); + clearTimeout(defaultVersionTimeout); + defaultVersionTimeout = window.setTimeout(async () => { + const path = `${this.plugin.settings.biblesPath}/${value}`; + const exists = this.app.vault.getFolderByPath( + normalizePath(path) + ); + if (!exists) + new Notice(`${this.folderDoesNotExistText} ${path}.`); + }, 1000); + }); + + new VersionSuggest(this.app, text.inputEl, this.plugin.settings); }); - new VersionSuggest(this.app, text.inputEl, this.plugin.settings); - }); - - if (this.plugin.settings.biblesPath) { - defaultVersionSetting.settingEl.removeClass(this.hiddenClass); - } else { - defaultVersionSetting.settingEl.addClass(this.hiddenClass); - } - - new Setting(containerEl) - .setName(optional.controls.defaultPassageFormat.name) - .setDesc(optional.controls.defaultPassageFormat.description) - .addDropdown((dropdown) => - dropdown - .addOptions(optional.controls.defaultPassageFormat.options) - .setValue(this.plugin.settings.defaultPassageFormat) - .onChange(async (value) => { - this.plugin.settings.defaultPassageFormat = value as PassageFormat; - await this.plugin.saveSettings(); - }) + if (this.plugin.settings.biblesPath) setting.setDisabled(false); + else setting.setDisabled(true); + defaultVersionSetting = setting; + }) + .addSetting((setting) => + setting + .setName(optional.controls.defaultPassageFormat.name) + .setDesc(optional.controls.defaultPassageFormat.description) + .setClass(this.settingClass) + .addDropdown((dropdown) => + dropdown + .addOptions(optional.controls.defaultPassageFormat.options) + .setValue(this.plugin.settings.defaultPassageFormat) + .onChange(async (value) => { + this.plugin.settings.defaultPassageFormat = + value as PassageFormat; + await this.plugin.saveSettings(); + }) + ) + ) + .addSetting((setting) => + setting + .setName(optional.controls.bibleFormat.name) + .setDesc(optional.controls.bibleFormat.description) + .setClass(this.settingClass) + .addDropdown((dropdown) => + dropdown + .addOptions({ + [BibleFormat.LocalBibleRef]: 'Local Bible Ref', + [BibleFormat.BibleLinker]: 'Bible Linker', + }) + .setValue(this.plugin.settings.bibleFormat) + .onChange(async (value) => { + this.plugin.settings.bibleFormat = value as BibleFormat; + await this.plugin.saveSettings(); + }) + ) + ) + .addSetting((setting) => + setting + .setName(optional.controls.fullPreview.name) + .setDesc(optional.controls.fullPreview.description) + .setClass(this.settingClass) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.fullPreview) + .onChange(async (value) => { + this.plugin.settings.fullPreview = value; + await this.plugin.saveSettings(); + }) + ) ); - new Setting(containerEl) - .setName(optional.controls.bibleFormat.name) - .setDesc(optional.controls.bibleFormat.description) - .addDropdown((dropdown) => - dropdown - .addOptions({ - [BibleFormat.LocalBibleRef]: 'Local Bible Ref', - [BibleFormat.BibleLinker]: 'Bible Linker', - }) - .setValue(this.plugin.settings.bibleFormat) - .onChange(async (value) => { - this.plugin.settings.bibleFormat = value as BibleFormat; - await this.plugin.saveSettings(); - }) - ); - - new Setting(containerEl) - .setName(optional.controls.fullPreview.name) - .setDesc(optional.controls.fullPreview.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.fullPreview) - .onChange(async (value) => { - this.plugin.settings.fullPreview = value; - await this.plugin.saveSettings(); - }) - ); - - // quote format settings --- - new Setting(containerEl) - .setName(quoteFormat.name) - .setDesc(quoteFormat.description) - .setHeading(); + let quoteRefPositionSetting = {} as Setting; + let quoteRefLinkSetting = {} as Setting; + new SettingGroup(containerEl) + .setHeading(quoteFormat.name) + .addSetting((setting) => + setting + .setName(quoteFormat.controls.includeReference.name) + .setDesc(quoteFormat.controls.includeReference.description) + .setClass(this.settingClass) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.quote.includeReference) + .onChange(async (value) => { + // toggle editability of other paragraph reference settings + if (value) { + quoteRefPositionSetting.setDisabled(false); + quoteRefLinkSetting.setDisabled(false); + } else { + quoteRefPositionSetting.setDisabled(true); + quoteRefLinkSetting.setDisabled(true); + } - new Setting(containerEl) - .setName(quoteFormat.controls.includeReference.name) - .setDesc(quoteFormat.controls.includeReference.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.quote.includeReference) - .onChange(async (value) => { - // toggle visibility of other paragraph reference settings - if (value) { - quoteRefPositionSetting.settingEl.removeClass(this.hiddenClass); - quoteRefLinkSetting.settingEl.removeClass(this.hiddenClass); - } else { - quoteRefPositionSetting.settingEl.addClass(this.hiddenClass); - quoteRefLinkSetting.settingEl.addClass(this.hiddenClass); - } + this.plugin.settings.quote.includeReference = value; + await this.plugin.saveSettings(); + }) + ) + ) + .addSetting((setting) => { + setting + .setName(quoteFormat.controls.referencePosition.name) + .setDesc(quoteFormat.controls.referencePosition.description) + .setClass(this.settingClass) + .addDropdown((dropdown) => + dropdown + .addOptions(quoteFormat.controls.referencePosition.options) + .setValue(this.plugin.settings.quote.referencePosition) + .onChange(async (value) => { + this.plugin.settings.quote.referencePosition = + value as QuoteReferencePosition; + await this.plugin.saveSettings(); + }) + ); - this.plugin.settings.quote.includeReference = value; - await this.plugin.saveSettings(); - }) - ); - - const quoteRefPositionSetting = new Setting(containerEl) - .setName(quoteFormat.controls.referencePosition.name) - .setDesc(quoteFormat.controls.referencePosition.description) - .addDropdown((dropdown) => - dropdown - .addOptions(quoteFormat.controls.referencePosition.options) - .setValue(this.plugin.settings.quote.referencePosition) - .onChange(async (value) => { - this.plugin.settings.quote.referencePosition = - value as QuoteReferencePosition; - await this.plugin.saveSettings(); - }) - ); - - const quoteRefLinkSetting = new Setting(containerEl) - .setName(quoteFormat.controls.linkToPassage.name) - .setDesc(quoteFormat.controls.linkToPassage.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.quote.linkToPassage) - .onChange(async (value) => { - this.plugin.settings.quote.linkToPassage = value; - await this.plugin.saveSettings(); - }) - ); - - if (this.plugin.settings.quote.includeReference) { - quoteRefPositionSetting.settingEl.removeClass(this.hiddenClass); - quoteRefLinkSetting.settingEl.removeClass(this.hiddenClass); - } else { - quoteRefPositionSetting.settingEl.addClass(this.hiddenClass); - quoteRefLinkSetting.settingEl.addClass(this.hiddenClass); - } + const includeRef = this.plugin.settings.quote.includeReference; + if (includeRef) setting.setDisabled(false); + else setting.setDisabled(true); + quoteRefPositionSetting = setting; + }) + .addSetting((setting) => { + setting + .setName(quoteFormat.controls.linkToPassage.name) + .setDesc(quoteFormat.controls.linkToPassage.description) + .setClass(this.settingClass) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.quote.linkToPassage) + .onChange(async (value) => { + this.plugin.settings.quote.linkToPassage = value; + await this.plugin.saveSettings(); + }) + ); + const includeRef = this.plugin.settings.quote.includeReference; + if (includeRef) setting.setDisabled(false); + else setting.setDisabled(true); + quoteRefLinkSetting = setting; + }); // callout format settings --- - new Setting(containerEl) - .setName(calloutFormat.name) - .setDesc(calloutFormat.description) - .setHeading(); - - new Setting(containerEl) - .setName(calloutFormat.controls.calloutType.name) - .setDesc(calloutFormat.controls.calloutType.description) - .addDropdown((dropdown) => - dropdown - .addOptions({ - note: 'Note', - abstract: 'Abstract', - info: 'Info', - todo: 'Todo', - tip: 'Tip', - success: 'Success', - question: 'Question', - warning: 'Warning', - failure: 'Failure', - danger: 'Danger', - bug: 'Bug', - example: 'Example', - quote: 'Quote', - }) - .setValue(this.plugin.settings.callout.type) - .onChange(async (value) => { - this.plugin.settings.callout.type = value as CalloutType; - await this.plugin.saveSettings(); - }) + new SettingGroup(containerEl) + .setHeading(calloutFormat.name) + .addSetting((setting) => + setting + .setName(calloutFormat.controls.calloutType.name) + .setDesc(calloutFormat.controls.calloutType.description) + .setClass(this.settingClass) + .addDropdown((dropdown) => + dropdown + .addOptions({ + note: 'Note', + abstract: 'Abstract', + info: 'Info', + todo: 'Todo', + tip: 'Tip', + success: 'Success', + question: 'Question', + warning: 'Warning', + failure: 'Failure', + danger: 'Danger', + bug: 'Bug', + example: 'Example', + quote: 'Quote', + }) + .setValue(this.plugin.settings.callout.type) + .onChange(async (value) => { + this.plugin.settings.callout.type = value as CalloutType; + await this.plugin.saveSettings(); + }) + ) + ) + .addSetting((setting) => + setting + .setName(calloutFormat.controls.linkToPassage.name) + .setDesc(calloutFormat.controls.linkToPassage.description) + .setClass(this.settingClass) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.callout.linkToPassage) + .onChange(async (value) => { + this.plugin.settings.callout.linkToPassage = value; + await this.plugin.saveSettings(); + }) + ) + ) + .addSetting((setting) => + setting + .setName(calloutFormat.controls.collapsible.name) + .setDesc(calloutFormat.controls.collapsible.description) + .setClass(this.settingClass) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.callout.collapsible) + .onChange(async (value) => { + this.plugin.settings.callout.collapsible = value; + await this.plugin.saveSettings(); + }) + ) ); - new Setting(containerEl) - .setName(calloutFormat.controls.linkToPassage.name) - .setDesc(calloutFormat.controls.linkToPassage.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.callout.linkToPassage) - .onChange(async (value) => { - this.plugin.settings.callout.linkToPassage = value; - await this.plugin.saveSettings(); - }) - ); - - new Setting(containerEl) - .setName(calloutFormat.controls.collapsible.name) - .setDesc(calloutFormat.controls.collapsible.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.callout.collapsible) - .onChange(async (value) => { - this.plugin.settings.callout.collapsible = value; - await this.plugin.saveSettings(); - }) - ); + // just acts as a spacer for the issues link + new Setting(containerEl).setHeading(); const issuesLink = document.createElement('a'); issuesLink.href = 'https://github.com/camelChief/local-bible-ref/issues'; diff --git a/styles.css b/styles.css index ec8d37f..af43eaa 100644 --- a/styles.css +++ b/styles.css @@ -1,3 +1,3 @@ -div.setting-item.local-bible-ref-hidden { - display: none; -} +div.setting-item.local-bible-ref-setting.is-disabled { + opacity: 0.5; +} \ No newline at end of file