From 30b9a60baf68b765613ebb2ab175407144ada052 Mon Sep 17 00:00:00 2001 From: Christian Jay Tautu-an Date: Sat, 31 Jan 2026 13:34:26 +0800 Subject: [PATCH 1/2] feat - added callout qoute collapsible setting; Feat - added show full suggestion setting; --- main.ts | 2 + package-lock.json | 142 +++++++++++++++++++++++------ package.json | 2 +- src/i18n/de/settings-labels.ts | 17 ++++ src/i18n/en/settings-labels.ts | 18 ++++ src/i18n/ko/settings-labels.ts | 17 ++++ src/i18n/models.ts | 9 ++ src/local-bible-ref-setting-tab.ts | 33 ++++++- src/passage-suggest.ts | 27 ++++-- src/settings.ts | 2 + 10 files changed, 231 insertions(+), 38 deletions(-) diff --git a/main.ts b/main.ts index fa7c0d5..9540968 100644 --- a/main.ts +++ b/main.ts @@ -32,6 +32,7 @@ export default class LocalBibleRefPlugin extends Plugin { const calloutSettings = { type: CalloutType.Quote, linkToPassage: true, + collapsible: true, }; this.settings ??= { @@ -41,6 +42,7 @@ export default class LocalBibleRefPlugin extends Plugin { bibleFormat: BibleFormat.LocalBibleRef, quote: quoteSettings, callout: calloutSettings, + fullSuggestion: true }; if (!this.settings.quote) this.settings.quote = quoteSettings; diff --git a/package-lock.json b/package-lock.json index 6c8095d..b7f5270 100644 --- a/package-lock.json +++ b/package-lock.json @@ -403,6 +403,7 @@ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -422,6 +423,7 @@ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -432,6 +434,7 @@ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -456,6 +459,7 @@ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -467,6 +471,7 @@ "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -482,6 +487,7 @@ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=12.22" }, @@ -496,14 +502,16 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/@marijn/find-cluster-break": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -614,7 +622,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz", "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.29.0", "@typescript-eslint/types": "5.29.0", @@ -766,7 +773,8 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/acorn": { "version": "8.15.0", @@ -788,6 +796,7 @@ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -798,6 +807,7 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -815,6 +825,7 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -825,6 +836,7 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -840,7 +852,8 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0" + "license": "Python-2.0", + "peer": true }, "node_modules/array-union": { "version": "2.1.0", @@ -856,7 +869,8 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/brace-expansion": { "version": "1.1.12", @@ -864,6 +878,7 @@ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -899,6 +914,7 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -909,6 +925,7 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -926,6 +943,7 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -938,21 +956,24 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/crelt": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -960,6 +981,7 @@ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -991,7 +1013,8 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1011,6 +1034,7 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -1061,6 +1085,7 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -1184,6 +1209,7 @@ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -1201,6 +1227,7 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -1211,6 +1238,7 @@ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -1224,6 +1252,7 @@ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -1242,6 +1271,7 @@ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -1255,6 +1285,7 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -1295,6 +1326,7 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1304,7 +1336,8 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fast-glob": { "version": "3.3.2", @@ -1327,14 +1360,16 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fastq": { "version": "1.17.1", @@ -1351,6 +1386,7 @@ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -1376,6 +1412,7 @@ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1393,6 +1430,7 @@ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -1407,14 +1445,16 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -1429,6 +1469,7 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1462,6 +1503,7 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1497,7 +1539,8 @@ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/has-flag": { "version": "4.0.0", @@ -1505,6 +1548,7 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -1524,6 +1568,7 @@ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1541,6 +1586,7 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.19" } @@ -1552,6 +1598,7 @@ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1562,7 +1609,8 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/is-extglob": { "version": "2.1.1", @@ -1600,6 +1648,7 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -1609,7 +1658,8 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -1617,6 +1667,7 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1629,21 +1680,24 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/keyv": { "version": "4.5.4", @@ -1651,6 +1705,7 @@ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "json-buffer": "3.0.1" } @@ -1661,6 +1716,7 @@ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1675,6 +1731,7 @@ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -1690,7 +1747,8 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -1720,6 +1778,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1747,7 +1806,8 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/obsidian": { "version": "1.8.7", @@ -1770,6 +1830,7 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "wrappy": "1" } @@ -1780,6 +1841,7 @@ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -1798,6 +1860,7 @@ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -1814,6 +1877,7 @@ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -1830,6 +1894,7 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -1843,6 +1908,7 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -1853,6 +1919,7 @@ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -1863,6 +1930,7 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -1894,6 +1962,7 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -1920,6 +1989,7 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -1962,6 +2032,7 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -1983,6 +2054,7 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -2034,6 +2106,7 @@ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2047,6 +2120,7 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -2066,6 +2140,7 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2079,6 +2154,7 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -2091,7 +2167,8 @@ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -2099,6 +2176,7 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2111,7 +2189,8 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -2158,6 +2237,7 @@ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2171,6 +2251,7 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=10" }, @@ -2183,7 +2264,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2198,6 +2278,7 @@ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -2207,7 +2288,8 @@ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/which": { "version": "2.0.2", @@ -2215,6 +2297,7 @@ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2231,6 +2314,7 @@ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -2240,7 +2324,8 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/yocto-queue": { "version": "0.1.0", @@ -2248,6 +2333,7 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 603a4d7..0646106 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "local-bible-ref", - "version": "1.2.2", + "version": "1.3.2", "description": "Quickly and easily reference Bible passages stored locally in your Obsidian vault.", "main": "main.js", "scripts": { diff --git a/src/i18n/de/settings-labels.ts b/src/i18n/de/settings-labels.ts index 1e996b6..309b9a2 100644 --- a/src/i18n/de/settings-labels.ts +++ b/src/i18n/de/settings-labels.ts @@ -81,6 +81,23 @@ export const SETTINGS_LABELS: SettingsLabels = { description: 'Ob Sie den Verweis auf die Passage in Ihrer Tresorbibel verlinken möchten.', }, + collapsible: { + name: 'Zusammenklappbar', + description: + 'Ob der für die Passage zu verwendende Hinweis einklappbar ist.', + }, + }, + }, + + suggestionFormat: { + name: 'Einstellungen für das Vorschlagsformat', + description: 'Einstellungen für das Format des Hinweistextes.', + controls: { + full: { + name: 'Vollständiger Vorschlag', + description: + 'Ob der für die Passage vorgeschlagene Hinweis vollständig ist.', + }, }, }, diff --git a/src/i18n/en/settings-labels.ts b/src/i18n/en/settings-labels.ts index 05b3f35..8ce1992 100644 --- a/src/i18n/en/settings-labels.ts +++ b/src/i18n/en/settings-labels.ts @@ -79,6 +79,24 @@ export const SETTINGS_LABELS: SettingsLabels = { description: 'Whether to link the reference to the passage in your vault Bible.', }, + collapsible: { + name: 'Collapsible', + description: + 'Whether the callout to use for the passage is collapsible.', + }, + }, + }, + + suggestionFormat: { + name: 'Suggestion Format Settings', + description: 'Settings for the callout suggestion passage format.', + controls: { + full: { + name: 'Full Suggestion', + description: + 'Whether the callout suggestion to use for the passage is full.', + + }, }, }, diff --git a/src/i18n/ko/settings-labels.ts b/src/i18n/ko/settings-labels.ts index bc6715c..6728d08 100644 --- a/src/i18n/ko/settings-labels.ts +++ b/src/i18n/ko/settings-labels.ts @@ -76,6 +76,23 @@ export const SETTINGS_LABELS: SettingsLabels = { name: '통로 바로가기', description: '보관된 성경의 해당 구절에 참조를 연결할지 여부.', }, + collapsible: { + name: '접을 수 있는', + description: + '해당 구절에 사용할 콜아웃이 접을 수 있는지 여부.', + }, + }, + }, + + suggestionFormat: { + name: '제안 형식 설정', + description: '콜아웃 제안 문구 형식에 대한 설정입니다.', + controls: { + full: { + name: '전체 제안', + description: + '본문에 사용할 콜아웃 제안이 완전한지 여부.', + }, }, }, diff --git a/src/i18n/models.ts b/src/i18n/models.ts index c486e99..04e5448 100644 --- a/src/i18n/models.ts +++ b/src/i18n/models.ts @@ -57,6 +57,15 @@ export interface SettingsLabels { controls: { calloutType: Control; linkToPassage: Control; + collapsible: Control; + }; + }; + + suggestionFormat: { + name: string; + description: string; + controls: { + full: Control; }; }; diff --git a/src/local-bible-ref-setting-tab.ts b/src/local-bible-ref-setting-tab.ts index 0da2d31..b1361c2 100644 --- a/src/local-bible-ref-setting-tab.ts +++ b/src/local-bible-ref-setting-tab.ts @@ -45,7 +45,7 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { display(): void { const { containerEl } = this; - const { required, optional, quoteFormat, calloutFormat, issues } = + const { required, optional, quoteFormat, calloutFormat, suggestionFormat, issues } = this.settingsLabels; containerEl.empty(); @@ -210,6 +210,7 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { quoteRefLinkSetting.settingEl.addClass(this.hiddenClass); } + // callout format new Setting(containerEl) .setName(calloutFormat.name) .setDesc(calloutFormat.description) @@ -254,6 +255,36 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { }) ); + 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(); + }) + ); + + //suggestion format + new Setting(containerEl) + .setName(suggestionFormat.name) + .setDesc(suggestionFormat.description) + .setHeading(); + + new Setting(containerEl) + .setName(suggestionFormat.controls.full.name) + .setDesc(suggestionFormat.controls.full.description) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.fullSuggestion) + .onChange(async (value) => { + this.plugin.settings.fullSuggestion = value; + await this.plugin.saveSettings(); + }) + ); + const issuesLink = document.createElement('a'); issuesLink.href = 'https://github.com/camelChief/local-bible-ref/issues'; issuesLink.textContent = issues.link; diff --git a/src/passage-suggest.ts b/src/passage-suggest.ts index ac823ba..ef466c5 100644 --- a/src/passage-suggest.ts +++ b/src/passage-suggest.ts @@ -295,16 +295,26 @@ export default class PassageSuggest extends EditorSuggest { /** Generates an excerpt for the suggestion. */ private generateExcerpt(text: string): string { - text = text.split(/<\/sup>/, 2)[1]; - text = text.replace(/\d+<\/sup>/g, ''); - text = text.replace(/^(?:> |- )/gm, ''); + if(this.settings.fullSuggestion){ + text = text.replace(/(?:)/g, ""); + text = text.replace(/(?:<\/sup>)/g, ""); + } + else{ + text = text.split(/<\/sup>/, 2)[1]; + text = text.replace(/\d+<\/sup>/g, ""); + text = text.replace(/^(?:> |- )/gm, ""); + } + text = text.replace( /([^<]+)<\/span>/g, - '$1' + "$1" ); - text = text.replace(/\n/g, ' '); - text = text.replace(/ {2,}/g, ' '); - return text.slice(0, 45) + '...'; + if(!this.settings.fullSuggestion) + text = text.replace(/\n/g, ' '); + text = text.replace(/ {2,}/g, " "); + if (this.settings.fullSuggestion) + return text; + return text.slice(0, 45) + "..."; } /** Formats the final text for suggestion. */ @@ -358,8 +368,9 @@ export default class PassageSuggest extends EditorSuggest { if (linkToPassage) stringRef = this.generatePassageLink(passageRef, context); else stringRef = passageRef.stringify(); + formatted = `> [!quote]${this.settings.callout.collapsible? '+' : ''} ${stringRef}\n`; - formatted = `> [!${type}] ${stringRef}\n`; + formatted = `> [!${type}]${this.settings.callout.collapsible? '+' : ''} ${stringRef}\n`; formatted += texts.join('\n\n').trim(); formatted = formatted.replace(/\n/gm, '\n> '); formatted += '\n\n'; diff --git a/src/settings.ts b/src/settings.ts index 54b6b1e..66511e3 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -14,7 +14,9 @@ export default interface LocalBibleRefSettings { callout: { type: CalloutType; linkToPassage: boolean; + collapsible: boolean; }; + fullSuggestion: boolean; } export enum QuoteReferencePosition { From 7f2c2589f39ca2ffbe4a881d47f862d90d5e7e22 Mon Sep 17 00:00:00 2001 From: Caleb Campbell Date: Tue, 10 Feb 2026 09:01:50 +1100 Subject: [PATCH 2/2] PR-17 - Fixed a minor bug where the full text for multi-chapter references wasn't being displayed in the passage preview and updated a few just stylistic things. --- main.ts | 2 +- package.json | 2 +- src/i18n/de/settings-labels.ts | 17 ++++--------- src/i18n/en/settings-labels.ts | 18 ++++---------- src/i18n/ko/settings-labels.ts | 16 +++--------- src/i18n/models.ts | 9 +------ src/local-bible-ref-setting-tab.ts | 39 +++++++++++++++--------------- src/passage-suggest.ts | 34 ++++++++++++-------------- src/settings.ts | 2 +- 9 files changed, 53 insertions(+), 86 deletions(-) diff --git a/main.ts b/main.ts index 9540968..0082473 100644 --- a/main.ts +++ b/main.ts @@ -40,9 +40,9 @@ export default class LocalBibleRefPlugin extends Plugin { defaultVersionShorthand: '', defaultPassageFormat: PassageFormat.Callout, bibleFormat: BibleFormat.LocalBibleRef, + fullPreview: false, quote: quoteSettings, callout: calloutSettings, - fullSuggestion: true }; if (!this.settings.quote) this.settings.quote = quoteSettings; diff --git a/package.json b/package.json index 0646106..603a4d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "local-bible-ref", - "version": "1.3.2", + "version": "1.2.2", "description": "Quickly and easily reference Bible passages stored locally in your Obsidian vault.", "main": "main.js", "scripts": { diff --git a/src/i18n/de/settings-labels.ts b/src/i18n/de/settings-labels.ts index 309b9a2..eb1cbc5 100644 --- a/src/i18n/de/settings-labels.ts +++ b/src/i18n/de/settings-labels.ts @@ -39,6 +39,11 @@ export const SETTINGS_LABELS: SettingsLabels = { description: 'Der Formatierungsstil, den Sie für Ihre Vault-Bibeln verwenden. Local Bible Ref benötigt diesen, um Textpassagen korrekt zu analysieren.', }, + fullPreview: { + name: 'Vollständige Passage-Vorschau', + description: + 'Ob in der Vorschau der vollständige Text oder nur ein Ausschnitt angezeigt werden soll.', + }, }, }, @@ -89,18 +94,6 @@ export const SETTINGS_LABELS: SettingsLabels = { }, }, - suggestionFormat: { - name: 'Einstellungen für das Vorschlagsformat', - description: 'Einstellungen für das Format des Hinweistextes.', - controls: { - full: { - name: 'Vollständiger Vorschlag', - description: - 'Ob der für die Passage vorgeschlagene Hinweis vollständig ist.', - }, - }, - }, - issues: { before: 'Falls Sie Probleme mit Local Bible Ref feststellen oder Verbesserungsvorschläge haben, ', diff --git a/src/i18n/en/settings-labels.ts b/src/i18n/en/settings-labels.ts index 8ce1992..568bf6d 100644 --- a/src/i18n/en/settings-labels.ts +++ b/src/i18n/en/settings-labels.ts @@ -38,6 +38,11 @@ export const SETTINGS_LABELS: SettingsLabels = { description: 'The formatting style you use for your vault bibles. Local Bible Ref relies on this to parse passages correctly.', }, + fullPreview: { + name: 'Full Passage Preview', + description: + 'Whether to display the full passage in the preview rather than just a snippet.', + }, }, }, @@ -87,19 +92,6 @@ export const SETTINGS_LABELS: SettingsLabels = { }, }, - suggestionFormat: { - name: 'Suggestion Format Settings', - description: 'Settings for the callout suggestion passage format.', - controls: { - full: { - name: 'Full Suggestion', - description: - 'Whether the callout suggestion to use for the passage is full.', - - }, - }, - }, - issues: { before: 'If you find any issues with Local Bible Ref or have suggestions for improvements, please ', diff --git a/src/i18n/ko/settings-labels.ts b/src/i18n/ko/settings-labels.ts index 6728d08..6eb9033 100644 --- a/src/i18n/ko/settings-labels.ts +++ b/src/i18n/ko/settings-labels.ts @@ -38,6 +38,10 @@ export const SETTINGS_LABELS: SettingsLabels = { description: '보관된 성경에 사용하는 서식 스타일입니다. Local Bible Ref는 이 스타일을 기반으로 구절을 정확하게 분석합니다.', }, + fullPreview: { + name: '전체 구절 미리보기', + description: '미리보기에서 전체 내용을 표시할지, 아니면 일부만 표시할지 여부.', + }, }, }, @@ -84,18 +88,6 @@ export const SETTINGS_LABELS: SettingsLabels = { }, }, - suggestionFormat: { - name: '제안 형식 설정', - description: '콜아웃 제안 문구 형식에 대한 설정입니다.', - controls: { - full: { - name: '전체 제안', - description: - '본문에 사용할 콜아웃 제안이 완전한지 여부.', - }, - }, - }, - issues: { before: 'Local Bible Ref에 문제가 있거나 개선 사항에 대한 제안이 있는 경우, ', diff --git a/src/i18n/models.ts b/src/i18n/models.ts index 04e5448..f44610a 100644 --- a/src/i18n/models.ts +++ b/src/i18n/models.ts @@ -33,6 +33,7 @@ export interface SettingsLabels { }; }; bibleFormat: Control; + fullPreview: Control; }; }; @@ -61,14 +62,6 @@ export interface SettingsLabels { }; }; - suggestionFormat: { - name: string; - description: string; - controls: { - full: Control; - }; - }; - issues: { before: string; link: string; diff --git a/src/local-bible-ref-setting-tab.ts b/src/local-bible-ref-setting-tab.ts index b1361c2..73a9282 100644 --- a/src/local-bible-ref-setting-tab.ts +++ b/src/local-bible-ref-setting-tab.ts @@ -45,7 +45,7 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { display(): void { const { containerEl } = this; - const { required, optional, quoteFormat, calloutFormat, suggestionFormat, issues } = + const { required, optional, quoteFormat, calloutFormat, issues } = this.settingsLabels; containerEl.empty(); @@ -87,6 +87,8 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { new PathSuggest(this.app, text.inputEl); }); + + // optional settings --- new Setting(containerEl).setName(optional.name).setHeading(); let defaultVersionTimeout: number; @@ -150,6 +152,20 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { }) ); + 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) @@ -210,7 +226,8 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { quoteRefLinkSetting.settingEl.addClass(this.hiddenClass); } - // callout format + + // callout format settings --- new Setting(containerEl) .setName(calloutFormat.name) .setDesc(calloutFormat.description) @@ -267,24 +284,6 @@ export default class LocalBibleRefSettingTab extends PluginSettingTab { }) ); - //suggestion format - new Setting(containerEl) - .setName(suggestionFormat.name) - .setDesc(suggestionFormat.description) - .setHeading(); - - new Setting(containerEl) - .setName(suggestionFormat.controls.full.name) - .setDesc(suggestionFormat.controls.full.description) - .addToggle((toggle) => - toggle - .setValue(this.plugin.settings.fullSuggestion) - .onChange(async (value) => { - this.plugin.settings.fullSuggestion = value; - await this.plugin.saveSettings(); - }) - ); - const issuesLink = document.createElement('a'); issuesLink.href = 'https://github.com/camelChief/local-bible-ref/issues'; issuesLink.textContent = issues.link; diff --git a/src/passage-suggest.ts b/src/passage-suggest.ts index ef466c5..7854ae1 100644 --- a/src/passage-suggest.ts +++ b/src/passage-suggest.ts @@ -117,7 +117,8 @@ export default class PassageSuggest extends EditorSuggest { }); // suggest - const excerpt = this.generateExcerpt(texts[0]); + const fullText = texts.join('\n\n'); + const excerpt = this.generateExcerpt(fullText); const text = this.formatTexts(texts, passageRef, context); return [{ excerpt, text }]; } @@ -295,26 +296,24 @@ export default class PassageSuggest extends EditorSuggest { /** Generates an excerpt for the suggestion. */ private generateExcerpt(text: string): string { - if(this.settings.fullSuggestion){ - text = text.replace(/(?:)/g, ""); - text = text.replace(/(?:<\/sup>)/g, ""); - } - else{ + const fullPreview = this.settings.fullPreview; + if (fullPreview) { + text = text.replace(//g, ''); + text = text.replace(/<\/sup>/g, ''); + } else { text = text.split(/<\/sup>/, 2)[1]; - text = text.replace(/\d+<\/sup>/g, ""); - text = text.replace(/^(?:> |- )/gm, ""); + text = text.replace(/\d+<\/sup>/g, ''); + text = text.replace(/^(?:> |- )/gm, ''); } text = text.replace( /([^<]+)<\/span>/g, - "$1" + '$1' ); - if(!this.settings.fullSuggestion) - text = text.replace(/\n/g, ' '); - text = text.replace(/ {2,}/g, " "); - if (this.settings.fullSuggestion) - return text; - return text.slice(0, 45) + "..."; + if (!fullPreview) text = text.replace(/\n/g, ' '); + text = text.replace(/ {2,}/g, ' '); + if (fullPreview) return text; + return text.slice(0, 45) + '...'; } /** Formats the final text for suggestion. */ @@ -362,15 +361,14 @@ export default class PassageSuggest extends EditorSuggest { break; } case PassageFormat.Callout: { - const { type, linkToPassage } = this.settings.callout; + const { type, linkToPassage, collapsible } = this.settings.callout; let stringRef = ''; if (linkToPassage) stringRef = this.generatePassageLink(passageRef, context); else stringRef = passageRef.stringify(); - formatted = `> [!quote]${this.settings.callout.collapsible? '+' : ''} ${stringRef}\n`; - formatted = `> [!${type}]${this.settings.callout.collapsible? '+' : ''} ${stringRef}\n`; + formatted = `> [!${type}]${collapsible ? '+' : ''} ${stringRef}\n`; formatted += texts.join('\n\n').trim(); formatted = formatted.replace(/\n/gm, '\n> '); formatted += '\n\n'; diff --git a/src/settings.ts b/src/settings.ts index 66511e3..c0c3959 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -6,6 +6,7 @@ export default interface LocalBibleRefSettings { defaultVersionShorthand: string; defaultPassageFormat: PassageFormat; bibleFormat: BibleFormat; + fullPreview: boolean; quote: { includeReference: boolean; referencePosition: QuoteReferencePosition; @@ -16,7 +17,6 @@ export default interface LocalBibleRefSettings { linkToPassage: boolean; collapsible: boolean; }; - fullSuggestion: boolean; } export enum QuoteReferencePosition {