@mnaoumov/create-obsidian-plugin 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +341 -2
- package/dist/main.js +4184 -0
- package/package.json +78 -4
- package/src/main.ts +650 -0
- package/templates/default/.depcheckrc.json.ejs +19 -0
- package/templates/default/.editorconfig.ejs +11 -0
- package/templates/default/.env.ejs +1 -0
- package/templates/default/.env@vault_has-vault-false.ejs +2 -0
- package/templates/default/.env@vault_has-vault-true.ejs +1 -0
- package/templates/default/.gitattributes.ejs +7 -0
- package/templates/default/.github/FUNDING.yml.ejs +3 -0
- package/templates/default/.github/ISSUE_TEMPLATE/bug_report.yml.ejs +71 -0
- package/templates/default/.github/ISSUE_TEMPLATE/config.yml.ejs +1 -0
- package/templates/default/.github/ISSUE_TEMPLATE/feature_request.yml.ejs +61 -0
- package/templates/default/.github/workflows/attest-release-assets.yml.ejs +24 -0
- package/templates/default/.github/workflows/ci.yml.ejs +20 -0
- package/templates/default/.github/workflows/ci.yml@steps_biome-linter.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_cspell.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_dprint.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_eslint.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_jest.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_markdownlint.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_prettier.ejs +1 -0
- package/templates/default/.github/workflows/ci.yml@steps_vitest.ejs +1 -0
- package/templates/default/.github/workflows/release.yml.ejs +27 -0
- package/templates/default/.github/workflows/update-license-year.yml.ejs +38 -0
- package/templates/default/.gitignore_common.ejs +27 -0
- package/templates/default/.gitignore_scss.ejs +1 -0
- package/templates/default/.gitignore_tailwind.ejs +3 -0
- package/templates/default/.husky/commit-msg.ejs +1 -0
- package/templates/default/.husky/pre-commit.ejs +1 -0
- package/templates/default/.markdownlint-cli2.mjs.ejs +4 -0
- package/templates/default/.nano-staged.mjs.ejs +5 -0
- package/templates/default/.npmrc.ejs +1 -0
- package/templates/default/.parcelrc.ejs +9 -0
- package/templates/default/.parcelrc@transformers_svelte.ejs +1 -0
- package/templates/default/.prettierignore.ejs +10 -0
- package/templates/default/.typesafe-i18n.json.ejs +5 -0
- package/templates/default/CONTRIBUTING.md.ejs +49 -0
- package/templates/default/CONTRIBUTING.md@demo-vault_dev-utils.ejs +15 -0
- package/templates/default/CONTRIBUTING.md@scripts_biome-formatter.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_biome-linter.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_conventional-commits.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_cspell.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_dev-utils.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_dprint.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_eslint.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_jest.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_markdownlint.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_prettier.ejs +1 -0
- package/templates/default/CONTRIBUTING.md@scripts_vitest.ejs +1 -0
- package/templates/default/LICENSE.ejs +21 -0
- package/templates/default/README.md.ejs +28 -0
- package/templates/default/README.md@demo-vault_dev-utils.ejs +12 -0
- package/templates/default/README.md@preset_dev-utils.ejs +12 -0
- package/templates/default/README.md@support_has-funding.ejs +8 -0
- package/templates/default/babel.config.json.ejs +8 -0
- package/templates/default/babel.config.mjs.ejs +5 -0
- package/templates/default/biome.jsonc.ejs +47 -0
- package/templates/default/commitlint.config.ts.ejs +1 -0
- package/templates/default/cspell.json.ejs +67 -0
- package/templates/default/demo-vault/.gitignore.ejs +15 -0
- package/templates/default/demo-vault/.obsidian/app.json.ejs +4 -0
- package/templates/default/demo-vault/.obsidian/community-plugins.json.ejs +4 -0
- package/templates/default/demo-vault/00 Start.md.ejs +32 -0
- package/templates/default/demo-vault/00 Start.md@features_wasm.ejs +1 -0
- package/templates/default/demo-vault/01 Sample commands.md.ejs +38 -0
- package/templates/default/demo-vault/01 Sample commands.md@commands_wasm.ejs +4 -0
- package/templates/default/demo-vault/02 Settings.md.ejs +40 -0
- package/templates/default/demo-vault/03 WebAssembly.md.ejs +34 -0
- package/templates/default/demo-vault/Materials/01 Sample commands/Scratch note.md.ejs +5 -0
- package/templates/default/demo-vault/README.md.ejs +10 -0
- package/templates/default/demo-vault/_assets/CodeScriptToolkit/demoSetup.ts.ejs +88 -0
- package/templates/default/demo-vault/_assets/CodeScriptToolkit/demoSetup.ts@commands_wasm.ejs +10 -0
- package/templates/default/demo-vault/_assets/CodeScriptToolkit/startup.ts.ejs +17 -0
- package/templates/default/dprint.json_dev-utils.ejs +10 -0
- package/templates/default/dprint.json_standalone.ejs +26 -0
- package/templates/default/e2e/sample.spec.ts_obsidian-test.ejs +16 -0
- package/templates/default/e2e/sample.spec.ts_obsidian-test@lint-no-void-disable_dev-utils.ejs +3 -0
- package/templates/default/e2e/sample.spec.ts_obsidian-test@lint-no-void-enable_dev-utils.ejs +1 -0
- package/templates/default/e2e/sample.spec.ts_obsidian-test@unofficial_with-unofficial.ejs +13 -0
- package/templates/default/e2e/sample.spec.ts_wdio-obsidian.ejs +7 -0
- package/templates/default/e2e/sample.spec.ts_wdio-obsidian@unofficial_with-unofficial.ejs +15 -0
- package/templates/default/eslint.config.mts_dev-utils.ejs +1 -0
- package/templates/default/eslint.config.mts_standalone.ejs +119 -0
- package/templates/default/eslint.config.mts_standalone@extra-files_has-e2e.ejs +2 -0
- package/templates/default/jest.config.ts.ejs +57 -0
- package/templates/default/jest.config.ts@lint-root-dir_dev-utils.ejs +1 -0
- package/templates/default/jest.config.ts@ts-jest-tsconfig_solid.ejs +8 -0
- package/templates/default/linkinator.config.json.ejs +11 -0
- package/templates/default/manifest.json.ejs +11 -0
- package/templates/default/manifest.json@funding_has-funding.ejs +1 -0
- package/templates/default/manifest.json@platform_desktop-and-mobile.ejs +1 -0
- package/templates/default/manifest.json@platform_desktop-only.ejs +1 -0
- package/templates/default/package.json.ejs +32 -0
- package/templates/default/package.json@targets_parcel.ejs +36 -0
- package/templates/default/parcel-namer-obsidian.cjs.ejs +26 -0
- package/templates/default/parcel-resolver-obsidian.cjs.ejs +37 -0
- package/templates/default/parcel-transformer-inline-imports.cjs.ejs +39 -0
- package/templates/default/parcel-transformer-svelte.cjs.ejs +67 -0
- package/templates/default/pinned-versions.json.ejs +1 -0
- package/templates/default/pnpm-workspace.yaml.ejs +19 -0
- package/templates/default/postcss.config.cjs.ejs +12 -0
- package/templates/default/prettier.config.mjs.ejs +5 -0
- package/templates/default/rollup.config.mjs.ejs +7 -0
- package/templates/default/scripts/babel.config.ts_rollup.ejs +16 -0
- package/templates/default/scripts/babel.config.ts_rollup@babel-plugin_preact.ejs +1 -0
- package/templates/default/scripts/babel.config.ts_rollup@babel-preset_react.ejs +1 -0
- package/templates/default/scripts/babel.config.ts_rollup@babel-preset_solid.ejs +1 -0
- package/templates/default/scripts/build-clean.ts.ejs +4 -0
- package/templates/default/scripts/build-compile.ts.ejs +4 -0
- package/templates/default/scripts/build-styles.ts.ejs +12 -0
- package/templates/default/scripts/build.ts.ejs +6 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler.ejs +63 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@compile_svelte.ejs +4 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@fs-import_hot-reload-plugin.ejs +2 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@hot-reload_hot-reload-plugin.ejs +3 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@import_tailwind.ejs +2 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@lint-build-styles_dev-utils.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@reload_obsidian-cli.ejs +5 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@run_parcel.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@run_rollup.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@run_vite.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_cli-bundler@run_webpack.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild.ejs +3 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@compile_svelte.ejs +4 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +2 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@fs-import_hot-reload-plugin.ejs +2 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@hot-reload_hot-reload-plugin.ejs +4 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_postcss.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_scss.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_solid.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_svelte.ejs +10 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_tailwind.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@import_vue.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@options_preact.ejs +2 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@options_react.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@options_wasm.ejs +5 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@plugin_postcss.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@plugin_scss.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@plugin_solid.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@plugin_svelte.ejs +5 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@plugin_vue.ejs +1 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@preset_standalone.ejs +138 -0
- package/templates/default/scripts/build.ts@bundler_esbuild@reload_obsidian-cli.ejs +6 -0
- package/templates/default/scripts/commit.ts_dev-utils.ejs +3 -0
- package/templates/default/scripts/commit.ts_standalone.ejs +3 -0
- package/templates/default/scripts/commitlint-config.ts.ejs +5 -0
- package/templates/default/scripts/demo-vault-global-setup.ts.ejs +43 -0
- package/templates/default/scripts/dev.ts.ejs +6 -0
- package/templates/default/scripts/dev.ts@bundler_cli-bundler.ejs +8 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild.ejs +3 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild@dev-utils-pre-build_tailwind.ejs +2 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild@lint-build-styles_dev-utils.ejs +1 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/dev.ts@bundler_esbuild@preset_standalone.ejs +3 -0
- package/templates/default/scripts/esbuild-plugins.ts.ejs +20 -0
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-import_vue.ejs +2 -0
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_vue.ejs +1 -0
- package/templates/default/scripts/esbuild-plugins.ts@dev-utils-plugin_wasm.ejs +13 -0
- package/templates/default/scripts/eslint-config.ts.ejs +113 -0
- package/templates/default/scripts/eslint-config.ts@extra-files_has-e2e.ejs +7 -0
- package/templates/default/scripts/find-overexposed-fix.ts.ejs +26 -0
- package/templates/default/scripts/find-overexposed.ts.ejs +15 -0
- package/templates/default/scripts/format-check.ts.ejs +4 -0
- package/templates/default/scripts/format-check.ts@tool_biome-formatter.ejs +8 -0
- package/templates/default/scripts/format-check.ts@tool_dprint.ejs +3 -0
- package/templates/default/scripts/format-check.ts@tool_dprint@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/format-check.ts@tool_dprint@preset_standalone.ejs +8 -0
- package/templates/default/scripts/format-check.ts@tool_prettier.ejs +8 -0
- package/templates/default/scripts/format.ts.ejs +4 -0
- package/templates/default/scripts/format.ts@tool_biome-formatter.ejs +8 -0
- package/templates/default/scripts/format.ts@tool_dprint.ejs +3 -0
- package/templates/default/scripts/format.ts@tool_dprint@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/format.ts@tool_dprint@preset_standalone.ejs +8 -0
- package/templates/default/scripts/format.ts@tool_prettier.ejs +8 -0
- package/templates/default/scripts/framework-component-stub.ts.ejs +46 -0
- package/templates/default/scripts/gate.ts.ejs +10 -0
- package/templates/default/scripts/lint-fix.ts.ejs +6 -0
- package/templates/default/scripts/lint-fix.ts@tool_biome-linter.ejs +8 -0
- package/templates/default/scripts/lint-fix.ts@tool_eslint.ejs +3 -0
- package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/lint-fix.ts@tool_eslint@preset_standalone.ejs +8 -0
- package/templates/default/scripts/lint-md-fix.ts_dev-utils.ejs +7 -0
- package/templates/default/scripts/lint-md-fix.ts_standalone.ejs +37 -0
- package/templates/default/scripts/lint-md.ts_dev-utils.ejs +7 -0
- package/templates/default/scripts/lint-md.ts_standalone.ejs +37 -0
- package/templates/default/scripts/lint.ts.ejs +6 -0
- package/templates/default/scripts/lint.ts@tool_biome-linter.ejs +8 -0
- package/templates/default/scripts/lint.ts@tool_eslint.ejs +3 -0
- package/templates/default/scripts/lint.ts@tool_eslint@preset_dev-utils.ejs +7 -0
- package/templates/default/scripts/lint.ts@tool_eslint@preset_standalone.ejs +8 -0
- package/templates/default/scripts/markdownlint-cli2-config.ts_dev-utils.ejs +14 -0
- package/templates/default/scripts/markdownlint-cli2-config.ts_standalone.ejs +36 -0
- package/templates/default/scripts/nano-staged-config.ts.ejs +9 -0
- package/templates/default/scripts/postcss.config.ts.ejs +1 -0
- package/templates/default/scripts/postcss.config.ts@plugins_postcss.ejs +7 -0
- package/templates/default/scripts/prepare.ts_dev-utils.ejs +3 -0
- package/templates/default/scripts/prepare.ts_standalone.ejs +3 -0
- package/templates/default/scripts/prettier.config.ts.ejs +12 -0
- package/templates/default/scripts/rollup.config.ts.ejs +129 -0
- package/templates/default/scripts/rollup.config.ts@import_rollup-babel.ejs +5 -0
- package/templates/default/scripts/rollup.config.ts@import_rollup-json.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@import_rollup-postcss.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@import_scss.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@import_svelte.ejs +2 -0
- package/templates/default/scripts/rollup.config.ts@import_vue.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@import_wasm.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@lint-out-dir_dev-utils.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_preact.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_react.ejs +5 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_rollup-json.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_rollup-postcss.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_scss.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_solid.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@post-plugin_wasm.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@pre-plugin_svelte.ejs +4 -0
- package/templates/default/scripts/rollup.config.ts@pre-plugin_vue.ejs +13 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_rollup-babel.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_rollup-json.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_rollup-postcss.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_scss.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_svelte.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_vue.ejs +1 -0
- package/templates/default/scripts/rollup.config.ts@unwrap_wasm.ejs +1 -0
- package/templates/default/scripts/spellcheck.ts_dev-utils.ejs +7 -0
- package/templates/default/scripts/spellcheck.ts_standalone.ejs +8 -0
- package/templates/default/scripts/stylesheet-stub.ts.ejs +17 -0
- package/templates/default/scripts/test-coverage.ts.ejs +8 -0
- package/templates/default/scripts/test-e2e.ts.ejs +1 -0
- package/templates/default/scripts/test-e2e.ts@tool_obsidian-test.ejs +8 -0
- package/templates/default/scripts/test-e2e.ts@tool_wdio-obsidian.ejs +8 -0
- package/templates/default/scripts/test-integration-android.ts.ejs +8 -0
- package/templates/default/scripts/test-integration-demo-vault.ts.ejs +8 -0
- package/templates/default/scripts/test-integration-desktop-performance.ts.ejs +8 -0
- package/templates/default/scripts/test-integration-desktop.ts.ejs +8 -0
- package/templates/default/scripts/test-integration-no-app.ts.ejs +8 -0
- package/templates/default/scripts/test-integration.ts.ejs +22 -0
- package/templates/default/scripts/test-watch.ts_dev-utils.ejs +1 -0
- package/templates/default/scripts/test-watch.ts_dev-utils@tool_jest.ejs +13 -0
- package/templates/default/scripts/test-watch.ts_dev-utils@tool_vitest.ejs +8 -0
- package/templates/default/scripts/test-watch.ts_standalone.ejs +1 -0
- package/templates/default/scripts/test-watch.ts_standalone@tool_jest.ejs +13 -0
- package/templates/default/scripts/test-watch.ts_standalone@tool_vitest.ejs +8 -0
- package/templates/default/scripts/test.ts_dev-utils.ejs +1 -0
- package/templates/default/scripts/test.ts_dev-utils@tool_jest.ejs +13 -0
- package/templates/default/scripts/test.ts_dev-utils@tool_vitest.ejs +8 -0
- package/templates/default/scripts/test.ts_standalone.ejs +1 -0
- package/templates/default/scripts/test.ts_standalone@tool_jest.ejs +13 -0
- package/templates/default/scripts/test.ts_standalone@tool_vitest.ejs +8 -0
- package/templates/default/scripts/version.ts_dev-utils.ejs +10 -0
- package/templates/default/scripts/version.ts_standalone.ejs +317 -0
- package/templates/default/scripts/vite.config.ts.ejs +76 -0
- package/templates/default/scripts/vite.config.ts@import_preact.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@import_react.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@import_solid.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@import_svelte.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@import_vue.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@lint-empty-out-dir_dev-utils.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@lint-out-dir_dev-utils.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@plugin_preact.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@plugin_react.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@plugin_solid.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@plugin_svelte.ejs +1 -0
- package/templates/default/scripts/vite.config.ts@plugin_vue.ejs +1 -0
- package/templates/default/scripts/vitest-config.ts.ejs +75 -0
- package/templates/default/scripts/vitest-config.ts@post-config_solid.ejs +67 -0
- package/templates/default/scripts/wasm-module-stub.ts.ejs +21 -0
- package/templates/default/scripts/webpack.config.ts.ejs +124 -0
- package/templates/default/scripts/webpack.config.ts@import_svelte.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts@import_vue.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts@import_webpack-css-extract.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@lint-webpack-default_dev-utils.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts@plugin_vue.ejs +1 -0
- package/templates/default/scripts/webpack.config.ts@plugin_webpack-css-extract.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_css-modules.ejs +7 -0
- package/templates/default/scripts/webpack.config.ts@rule_css.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_postcss.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_scss.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_solid.ejs +17 -0
- package/templates/default/scripts/webpack.config.ts@rule_svelte.ejs +7 -0
- package/templates/default/scripts/webpack.config.ts@rule_tailwind.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_vue.ejs +4 -0
- package/templates/default/scripts/webpack.config.ts@rule_wasm.ejs +8 -0
- package/templates/default/scripts/webpack.config.ts@ts-loader-compiler-options_vue.ejs +5 -0
- package/templates/default/scripts/webpack.config.ts@ts-loader-options_vue.ejs +5 -0
- package/templates/default/src/demo-vault-buttons.demo-vault.integration.test.ts.ejs +12 -0
- package/templates/default/src/demo-vault.no-app.integration.test.ts.ejs +18 -0
- package/templates/default/src/editor-extensions/sample-state-field.ts_dev-utils.ejs +56 -0
- package/templates/default/src/editor-extensions/sample-state-field.ts_standalone.ejs +60 -0
- package/templates/default/src/editor-extensions/sample-view-plugin.ts.ejs +66 -0
- package/templates/default/src/editor-extensions/sample-widget.ts.ejs +22 -0
- package/templates/default/src/editor-suggests/sample-editor-suggest.ts.ejs +42 -0
- package/templates/default/src/i18n/en/index.ts.ejs +10 -0
- package/templates/default/src/i18n/index.ts_i18next.ejs +21 -0
- package/templates/default/src/i18n/index.ts_typesafe-i18n.ejs +14 -0
- package/templates/default/src/i18n/locales/en.json.ejs +3 -0
- package/templates/default/src/lit-elements/sample-lit-element.ts.ejs +54 -0
- package/templates/default/src/main.test.ts.ejs +11 -0
- package/templates/default/src/main.test.ts@test-imports_vitest.ejs +6 -0
- package/templates/default/src/main.ts.ejs +4 -0
- package/templates/default/src/main.ts@import_css-modules.ejs +1 -0
- package/templates/default/src/main.ts@import_css.ejs +1 -0
- package/templates/default/src/main.ts@import_postcss.ejs +1 -0
- package/templates/default/src/main.ts@import_scss.ejs +1 -0
- package/templates/default/src/main.ts@import_tailwind.ejs +1 -0
- package/templates/default/src/modals/sample-form-modal.ts.ejs +35 -0
- package/templates/default/src/modals/sample-suggest-modal.ts.ejs +37 -0
- package/templates/default/src/plugin-settings-component.test.ts_demo.ejs +49 -0
- package/templates/default/src/plugin-settings-component.test.ts_demo@test-imports_vitest.ejs +5 -0
- package/templates/default/src/plugin-settings-component.test.ts_enhanced.ejs +41 -0
- package/templates/default/src/plugin-settings-component.test.ts_enhanced@test-imports_vitest.ejs +5 -0
- package/templates/default/src/plugin-settings-component.ts_demo.ejs +87 -0
- package/templates/default/src/plugin-settings-component.ts_enhanced.ejs +27 -0
- package/templates/default/src/plugin-settings-tab.ts_demo.ejs +286 -0
- package/templates/default/src/plugin-settings-tab.ts_enhanced.ejs +26 -0
- package/templates/default/src/plugin-settings.test.ts_demo.ejs +14 -0
- package/templates/default/src/plugin-settings.test.ts_demo@test-imports_vitest.ejs +6 -0
- package/templates/default/src/plugin-settings.ts_demo.ejs +64 -0
- package/templates/default/src/plugin-settings.ts_enhanced.ejs +3 -0
- package/templates/default/src/plugin.test.ts_jest.ejs +9 -0
- package/templates/default/src/plugin.test.ts_vitest.ejs +14 -0
- package/templates/default/src/plugin.ts_demo.ejs +316 -0
- package/templates/default/src/plugin.ts_demo@import_i18next.ejs +1 -0
- package/templates/default/src/plugin.ts_demo@import_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_react.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_typesafe-i18n.ejs +1 -0
- package/templates/default/src/plugin.ts_demo@import_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@import_wasm.ejs +1 -0
- package/templates/default/src/plugin.ts_demo@method_ui-view.ejs +7 -0
- package/templates/default/src/plugin.ts_demo@onload_i18next.ejs +2 -0
- package/templates/default/src/plugin.ts_demo@onload_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_react.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_typesafe-i18n.ejs +8 -0
- package/templates/default/src/plugin.ts_demo@onload_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_demo@onload_wasm.ejs +2 -0
- package/templates/default/src/plugin.ts_enhanced.ejs +72 -0
- package/templates/default/src/plugin.ts_enhanced@import2_codemirror.ejs +3 -0
- package/templates/default/src/plugin.ts_enhanced@import2_i18next.ejs +2 -0
- package/templates/default/src/plugin.ts_enhanced@import2_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_react.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_typesafe-i18n.ejs +2 -0
- package/templates/default/src/plugin.ts_enhanced@import2_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@import2_wasm.ejs +1 -0
- package/templates/default/src/plugin.ts_enhanced@method_ui-view.ejs +7 -0
- package/templates/default/src/plugin.ts_enhanced@onload_codemirror.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_i18next.ejs +2 -0
- package/templates/default/src/plugin.ts_enhanced@onload_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_react.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_typesafe-i18n.ejs +8 -0
- package/templates/default/src/plugin.ts_enhanced@onload_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_enhanced@onload_wasm.ejs +2 -0
- package/templates/default/src/plugin.ts_standalone.ejs +56 -0
- package/templates/default/src/plugin.ts_standalone@import_codemirror.ejs +3 -0
- package/templates/default/src/plugin.ts_standalone@import_i18next.ejs +1 -0
- package/templates/default/src/plugin.ts_standalone@import_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_react.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_typesafe-i18n.ejs +1 -0
- package/templates/default/src/plugin.ts_standalone@import_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@import_wasm.ejs +1 -0
- package/templates/default/src/plugin.ts_standalone@method_ui-view.ejs +7 -0
- package/templates/default/src/plugin.ts_standalone@onload_codemirror.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_i18next.ejs +2 -0
- package/templates/default/src/plugin.ts_standalone@onload_lit.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_preact.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_react.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_solid.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_svelte.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_typesafe-i18n.ejs +8 -0
- package/templates/default/src/plugin.ts_standalone@onload_vue.ejs +4 -0
- package/templates/default/src/plugin.ts_standalone@onload_wasm.ejs +2 -0
- package/templates/default/src/preact-components/sample-preact-component.tsx_dev-utils.ejs +47 -0
- package/templates/default/src/preact-components/sample-preact-component.tsx_standalone.ejs +47 -0
- package/templates/default/src/react-components/sample-react-component.tsx_dev-utils.ejs +35 -0
- package/templates/default/src/react-components/sample-react-component.tsx_standalone.ejs +47 -0
- package/templates/default/src/settings.ts.ejs +32 -0
- package/templates/default/src/solid-components/sample-solid-component.tsx_dev-utils.ejs +47 -0
- package/templates/default/src/solid-components/sample-solid-component.tsx_standalone.ejs +47 -0
- package/templates/default/src/styles/css-modules.d.ts.ejs +4 -0
- package/templates/default/src/styles/main.css_dev-utils.ejs +17 -0
- package/templates/default/src/styles/main.css_dev-utils@content_tailwind.ejs +1 -0
- package/templates/default/src/styles/main.css_standalone.ejs +11 -0
- package/templates/default/src/styles/main.css_standalone@content_tailwind.ejs +1 -0
- package/templates/default/src/styles/main.module.css.ejs +3 -0
- package/templates/default/src/styles/main.scss_dev-utils.ejs +16 -0
- package/templates/default/src/styles/main.scss_standalone.ejs +10 -0
- package/templates/default/src/styles/styles.d.ts.ejs +4 -0
- package/templates/default/src/svelte-components/sample-svelte-component.d.ts.ejs +7 -0
- package/templates/default/src/svelte-components/sample-svelte-component.svelte.ejs +24 -0
- package/templates/default/src/views/sample-lit-view.ts.ejs +30 -0
- package/templates/default/src/views/sample-lit-view.ts@lint-register-element_dev-utils.ejs +1 -0
- package/templates/default/src/views/sample-preact-view.tsx_dev-utils.ejs +45 -0
- package/templates/default/src/views/sample-preact-view.tsx_standalone.ejs +42 -0
- package/templates/default/src/views/sample-react-view.tsx_dev-utils.ejs +47 -0
- package/templates/default/src/views/sample-react-view.tsx_standalone.ejs +49 -0
- package/templates/default/src/views/sample-solid-view.tsx_dev-utils.ejs +46 -0
- package/templates/default/src/views/sample-solid-view.tsx_standalone.ejs +46 -0
- package/templates/default/src/views/sample-svelte-view.ts.ejs +47 -0
- package/templates/default/src/views/sample-view.ts.ejs +37 -0
- package/templates/default/src/views/sample-vue-view.ts.ejs +34 -0
- package/templates/default/src/vue-components/sample-vue-component.d.ts.ejs +6 -0
- package/templates/default/src/vue-components/sample-vue-component.vue.ejs +25 -0
- package/templates/default/src/wasm/README.md.ejs +29 -0
- package/templates/default/src/wasm/answer.ts_esbuild.ejs +23 -0
- package/templates/default/src/wasm/answer.ts_parcel.ejs +29 -0
- package/templates/default/src/wasm/answer.ts_rollup.ejs +19 -0
- package/templates/default/src/wasm/answer.ts_vite.ejs +29 -0
- package/templates/default/src/wasm/answer.ts_webpack.ejs +29 -0
- package/templates/default/src/wasm/module.wasm +0 -0
- package/templates/default/src/wasm/module.wat.ejs +12 -0
- package/templates/default/src/wasm/sample-command.ts.ejs +33 -0
- package/templates/default/src/wasm.d.ts_esbuild.ejs +12 -0
- package/templates/default/src/wasm.d.ts_parcel.ejs +7 -0
- package/templates/default/src/wasm.d.ts_rollup.ejs +8 -0
- package/templates/default/src/wasm.d.ts_vite.ejs +8 -0
- package/templates/default/src/wasm.d.ts_webpack.ejs +7 -0
- package/templates/default/tsconfig.json_dev-utils.ejs +34 -0
- package/templates/default/tsconfig.json_dev-utils@compiler-options_i18next.ejs +1 -0
- package/templates/default/tsconfig.json_dev-utils@compiler-options_lit.ejs +2 -0
- package/templates/default/tsconfig.json_dev-utils@compiler-options_preact.ejs +2 -0
- package/templates/default/tsconfig.json_dev-utils@compiler-options_react.ejs +1 -0
- package/templates/default/tsconfig.json_dev-utils@compiler-options_solid.ejs +2 -0
- package/templates/default/tsconfig.json_dev-utils@include_has-e2e.ejs +1 -0
- package/templates/default/tsconfig.json_dev-utils@include_svelte.ejs +1 -0
- package/templates/default/tsconfig.json_dev-utils@include_vue.ejs +1 -0
- package/templates/default/tsconfig.json_dev-utils@types_jest.ejs +2 -0
- package/templates/default/tsconfig.json_dev-utils@types_svelte.ejs +2 -0
- package/templates/default/tsconfig.json_dev-utils@types_wdio-obsidian.ejs +5 -0
- package/templates/default/tsconfig.json_dev-utils@types_with-unofficial.ejs +2 -0
- package/templates/default/tsconfig.json_standalone.ejs +47 -0
- package/templates/default/tsconfig.json_standalone@compiler-options_i18next.ejs +1 -0
- package/templates/default/tsconfig.json_standalone@compiler-options_lit.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@compiler-options_preact.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@compiler-options_react.ejs +1 -0
- package/templates/default/tsconfig.json_standalone@compiler-options_solid.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@include-extra_preact.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@include-extra_react.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@include-extra_solid.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@include_has-e2e.ejs +1 -0
- package/templates/default/tsconfig.json_standalone@include_svelte.ejs +1 -0
- package/templates/default/tsconfig.json_standalone@include_vue.ejs +1 -0
- package/templates/default/tsconfig.json_standalone@types_jest.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@types_svelte.ejs +2 -0
- package/templates/default/tsconfig.json_standalone@types_wdio-obsidian.ejs +5 -0
- package/templates/default/tsconfig.json_standalone@types_with-unofficial.ejs +2 -0
- package/templates/default/versions.json.ejs +3 -0
- package/templates/default/vite.config.ts.ejs +3 -0
- package/templates/default/vitest.config.ts_dev-utils.ejs +1 -0
- package/templates/default/vitest.config.ts_standalone.ejs +55 -0
- package/templates/default/vitest.config.ts_standalone@jsx_solid.ejs +11 -0
- package/templates/default/wdio.conf.ts.ejs +21 -0
- package/templates/default/webpack.config.ts.ejs +3 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { Notice } from 'obsidian';
|
|
2
|
+
import { PluginSettingsTabBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-settings-tab';
|
|
3
|
+
import { SettingEx } from 'obsidian-dev-utils/obsidian/setting-ex';
|
|
4
|
+
|
|
5
|
+
import type { PluginSettings } from './plugin-settings.ts';
|
|
6
|
+
|
|
7
|
+
import { TypedItem } from './plugin-settings.ts';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Built imperatively via `displayLegacy()` rather than declaratively via `getSettingDefinitionItems()`,
|
|
11
|
+
* because this tab exists to show off every `SettingEx` component there is. A real plugin should prefer
|
|
12
|
+
* the declarative form — see the `enhanced` preset.
|
|
13
|
+
*/
|
|
14
|
+
export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
|
|
15
|
+
public override displayLegacy(): void {
|
|
16
|
+
this.containerEl.empty();
|
|
17
|
+
|
|
18
|
+
new SettingEx(this.containerEl)
|
|
19
|
+
.setName('Button setting name')
|
|
20
|
+
.setDesc('Button setting description.')
|
|
21
|
+
.addButton((button) => {
|
|
22
|
+
button.setButtonText('Button text')
|
|
23
|
+
.onClick(() => {
|
|
24
|
+
new Notice('Button clicked');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
new SettingEx(this.containerEl)
|
|
29
|
+
.setName('Checkbox setting name')
|
|
30
|
+
.setDesc('Checkbox setting description.')
|
|
31
|
+
.addCheckbox((checkbox) => {
|
|
32
|
+
this.bind({ propertyName: 'checkboxSetting', valueComponent: checkbox });
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
new SettingEx(this.containerEl)
|
|
36
|
+
.setName('Code highlighter setting name')
|
|
37
|
+
.setDesc('Code highlighter setting description.')
|
|
38
|
+
.addCodeHighlighter((codeHighlighter) => {
|
|
39
|
+
codeHighlighter.setLanguage('javascript');
|
|
40
|
+
this.bind({ propertyName: 'codeHighlighterSetting', valueComponent: codeHighlighter });
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
new SettingEx(this.containerEl)
|
|
44
|
+
.setName('Color setting name')
|
|
45
|
+
.setDesc('Color setting description.')
|
|
46
|
+
.addColorPicker((color) => {
|
|
47
|
+
this.bind({ propertyName: 'colorSetting', valueComponent: color });
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
new SettingEx(this.containerEl)
|
|
51
|
+
.setName('Date setting name')
|
|
52
|
+
.setDesc('Date setting description.')
|
|
53
|
+
.addDate((date) => {
|
|
54
|
+
this.bind({ propertyName: 'dateSetting', valueComponent: date });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
new SettingEx(this.containerEl)
|
|
58
|
+
.setName('Date time setting name')
|
|
59
|
+
.setDesc('Date time setting description.')
|
|
60
|
+
.addDateTime((dateTime) => {
|
|
61
|
+
this.bind({ propertyName: 'dateTimeSetting', valueComponent: dateTime });
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
new SettingEx(this.containerEl)
|
|
65
|
+
.setName('Dropdown setting name')
|
|
66
|
+
.setDesc('Dropdown setting description.')
|
|
67
|
+
.addDropdown((dropdown) => {
|
|
68
|
+
dropdown.addOptions({
|
|
69
|
+
Value1: 'Display 1',
|
|
70
|
+
Value2: 'Display 2',
|
|
71
|
+
Value3: 'Display 3'
|
|
72
|
+
});
|
|
73
|
+
this.bind({ propertyName: 'dropdownSetting', valueComponent: dropdown });
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
new SettingEx(this.containerEl)
|
|
77
|
+
.setName('Email setting name')
|
|
78
|
+
.setDesc('Email setting description.')
|
|
79
|
+
.addEmail((email) => {
|
|
80
|
+
this.bind({ propertyName: 'emailSetting', valueComponent: email });
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
new SettingEx(this.containerEl)
|
|
84
|
+
.setName('Extra button setting name')
|
|
85
|
+
.setDesc('Extra button setting description.')
|
|
86
|
+
.addExtraButton((extraButton) => {
|
|
87
|
+
extraButton
|
|
88
|
+
.onClick(() => {
|
|
89
|
+
new Notice('Extra button clicked');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
new SettingEx(this.containerEl)
|
|
94
|
+
.setName('File setting name')
|
|
95
|
+
.setDesc('File setting description.')
|
|
96
|
+
.addFile((file) => {
|
|
97
|
+
file.onChange((value) => {
|
|
98
|
+
new Notice(`File selected: ${value?.name ?? '(None)'}`);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
new SettingEx(this.containerEl)
|
|
103
|
+
.setName('Moment format setting name')
|
|
104
|
+
.setDesc('Moment format setting description.')
|
|
105
|
+
.addMomentFormat((momentFormat) => {
|
|
106
|
+
this.bind({ propertyName: 'momentFormatSetting', valueComponent: momentFormat });
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
new SettingEx(this.containerEl)
|
|
110
|
+
.setName('Month setting name')
|
|
111
|
+
.setDesc('Month setting description.')
|
|
112
|
+
.addMonth((month) => {
|
|
113
|
+
this.bind({ propertyName: 'monthSetting', valueComponent: month });
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
new SettingEx(this.containerEl)
|
|
117
|
+
.setName('Multiple dropdown setting name')
|
|
118
|
+
.setDesc('Multiple dropdown setting description.')
|
|
119
|
+
.addMultipleDropdown((multipleDropdown) => {
|
|
120
|
+
multipleDropdown.addOptions({
|
|
121
|
+
Value1: 'Display 1',
|
|
122
|
+
Value2: 'Display 2',
|
|
123
|
+
Value3: 'Display 3',
|
|
124
|
+
Value4: 'Display 4',
|
|
125
|
+
Value5: 'Display 5'
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
this.bind({ propertyName: 'multipleDropdownSetting', valueComponent: multipleDropdown });
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
new SettingEx(this.containerEl)
|
|
132
|
+
.setName('Multiple email setting name')
|
|
133
|
+
.setDesc('Multiple email setting description.')
|
|
134
|
+
.addMultipleEmail((multipleEmail) => {
|
|
135
|
+
this.bind({ propertyName: 'multipleEmailSetting', valueComponent: multipleEmail });
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
new SettingEx(this.containerEl)
|
|
139
|
+
.setName('Multiple file setting name')
|
|
140
|
+
.setDesc('Multiple file setting description.')
|
|
141
|
+
.addMultipleFile((multipleFile) => {
|
|
142
|
+
multipleFile.onChange((value) => {
|
|
143
|
+
const fileNames = value.map((file) => file.name);
|
|
144
|
+
new Notice(`Files selected: ${fileNames.join(', ')}`);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
new SettingEx(this.containerEl)
|
|
149
|
+
.setName('Multiple text setting name')
|
|
150
|
+
.setDesc('Multiple text setting description.')
|
|
151
|
+
.addMultipleText((multipleText) => {
|
|
152
|
+
this.bind({ propertyName: 'multipleTextSetting', valueComponent: multipleText });
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
new SettingEx(this.containerEl)
|
|
156
|
+
.setName('Number setting name')
|
|
157
|
+
.setDesc('Number setting description.')
|
|
158
|
+
.addNumber((number) => {
|
|
159
|
+
this.bind({ propertyName: 'numberSetting', valueComponent: number });
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
new SettingEx(this.containerEl)
|
|
163
|
+
.setName('Progress bar setting name')
|
|
164
|
+
.setDesc('Progress bar setting description.')
|
|
165
|
+
.addProgressBar((progressBar) => {
|
|
166
|
+
progressBar.setValue(this.pluginSettingsComponent.settings.progressBarSetting);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
new SettingEx(this.containerEl)
|
|
170
|
+
.setName('Search setting name')
|
|
171
|
+
.setDesc('Search setting description.')
|
|
172
|
+
.addSearch((search) => {
|
|
173
|
+
this.bind({ propertyName: 'searchSetting', valueComponent: search });
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
new SettingEx(this.containerEl)
|
|
177
|
+
.setName('Slider setting name')
|
|
178
|
+
.setDesc('Slider setting description.')
|
|
179
|
+
.addSlider((slider) => {
|
|
180
|
+
this.bind({ propertyName: 'sliderSetting', valueComponent: slider });
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
new SettingEx(this.containerEl)
|
|
184
|
+
.setName('Text setting name')
|
|
185
|
+
.setDesc('Text setting description.')
|
|
186
|
+
.addText((text) => {
|
|
187
|
+
this.bind({ propertyName: 'textSetting', valueComponent: text });
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
new SettingEx(this.containerEl)
|
|
191
|
+
.setName('Text area setting name')
|
|
192
|
+
.setDesc('Text area setting description.')
|
|
193
|
+
.addTextArea((textArea) => {
|
|
194
|
+
this.bind({ propertyName: 'textAreaSetting', valueComponent: textArea });
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
new SettingEx(this.containerEl)
|
|
198
|
+
.setName('Time setting name')
|
|
199
|
+
.setDesc('Time setting description.')
|
|
200
|
+
.addTime((time) => {
|
|
201
|
+
this.bind({ propertyName: 'timeSetting', valueComponent: time });
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
new SettingEx(this.containerEl)
|
|
205
|
+
.setName('Toggle setting name')
|
|
206
|
+
.setDesc('Toggle setting description.')
|
|
207
|
+
.addToggle((toggle) => {
|
|
208
|
+
this.bind({ propertyName: 'toggleSetting', valueComponent: toggle });
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
new SettingEx(this.containerEl)
|
|
212
|
+
.setName('Tri-state checkbox setting name')
|
|
213
|
+
.setDesc('Tri-state checkbox setting description.')
|
|
214
|
+
.addTriStateCheckbox((triStateCheckbox) => {
|
|
215
|
+
this.bind({ propertyName: 'triStateCheckboxSetting', valueComponent: triStateCheckbox });
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
new SettingEx(this.containerEl)
|
|
219
|
+
.setName('Typed dropdown setting name')
|
|
220
|
+
.setDesc('Typed dropdown setting description.')
|
|
221
|
+
.addTypedDropdown((typedDropdown) => {
|
|
222
|
+
const map = new Map<TypedItem, string>([
|
|
223
|
+
[TypedItem.Bar, 'Display Bar'],
|
|
224
|
+
[TypedItem.Baz, 'Display Baz'],
|
|
225
|
+
[TypedItem.Foo, 'Display Foo']
|
|
226
|
+
]);
|
|
227
|
+
typedDropdown.addOptions(map);
|
|
228
|
+
this.bind({
|
|
229
|
+
onChanged(newValue, oldValue) {
|
|
230
|
+
console.warn('Typed Dropdown setting changed', { newValue, oldValue });
|
|
231
|
+
},
|
|
232
|
+
propertyName: 'typedDropdownSetting',
|
|
233
|
+
valueComponent: typedDropdown
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
new SettingEx(this.containerEl)
|
|
238
|
+
.setName('Typed multiple dropdown setting name')
|
|
239
|
+
.setDesc('Typed multiple dropdown setting description.')
|
|
240
|
+
.addTypedMultipleDropdown((typedMultipleDropdown) => {
|
|
241
|
+
const map = new Map<TypedItem, string>([
|
|
242
|
+
[TypedItem.Bar, 'Display Bar'],
|
|
243
|
+
[TypedItem.Baz, 'Display Baz'],
|
|
244
|
+
[TypedItem.Foo, 'Display Foo']
|
|
245
|
+
]);
|
|
246
|
+
typedMultipleDropdown.addOptions(map);
|
|
247
|
+
this.bind({
|
|
248
|
+
onChanged(newValue, oldValue) {
|
|
249
|
+
console.warn('Typed Multiple Dropdown setting changed', { newValue, oldValue });
|
|
250
|
+
},
|
|
251
|
+
propertyName: 'typedMultipleDropdownSetting',
|
|
252
|
+
valueComponent: typedMultipleDropdown
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
new SettingEx(this.containerEl)
|
|
257
|
+
.setName('URL setting name')
|
|
258
|
+
.setDesc('URL setting description.')
|
|
259
|
+
.addUrl((url) => {
|
|
260
|
+
this.bind({ propertyName: 'urlSetting', valueComponent: url });
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
new SettingEx(this.containerEl)
|
|
264
|
+
.setName('Week setting name')
|
|
265
|
+
.setDesc('Week setting description.')
|
|
266
|
+
.addWeek((week) => {
|
|
267
|
+
this.bind({ propertyName: 'weekSetting', valueComponent: week });
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
new SettingEx(this.containerEl)
|
|
271
|
+
.setName('Advanced text setting name')
|
|
272
|
+
.setDesc('Advanced text setting description.')
|
|
273
|
+
.addText((text) => {
|
|
274
|
+
this.bind({
|
|
275
|
+
componentToPluginSettingsValueConverter: (uiValue: string) => uiValue.replace(' (converted)', ''),
|
|
276
|
+
onChanged: () => {
|
|
277
|
+
new Notice('Advanced text setting changed');
|
|
278
|
+
},
|
|
279
|
+
pluginSettingsToComponentValueConverter: (pluginSettingsValue: string) => `${pluginSettingsValue} (converted)`,
|
|
280
|
+
propertyName: 'textSetting',
|
|
281
|
+
valueComponent: text
|
|
282
|
+
})
|
|
283
|
+
.setPlaceholder('Enter a value');
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SettingDefinitionItem } from 'obsidian';
|
|
2
|
+
|
|
3
|
+
import { PluginSettingsTabBase } from 'obsidian-dev-utils/obsidian/plugin/plugin-settings-tab';
|
|
4
|
+
|
|
5
|
+
import type { PluginSettings } from './plugin-settings.ts';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The settings tab is declarative: return one definition per row from `getSettingDefinitionItems()` and
|
|
9
|
+
* Obsidian renders them. `bind` wires a component to a settings property in both directions, so there is
|
|
10
|
+
* no read/write plumbing to maintain.
|
|
11
|
+
*/
|
|
12
|
+
export class PluginSettingsTab extends PluginSettingsTabBase<PluginSettings> {
|
|
13
|
+
protected override getSettingDefinitionItems(): SettingDefinitionItem[] {
|
|
14
|
+
return [
|
|
15
|
+
this.settingEx({
|
|
16
|
+
desc: 'Text setting description.',
|
|
17
|
+
name: 'Text setting name',
|
|
18
|
+
render: (setting) => {
|
|
19
|
+
setting.addText((text) => {
|
|
20
|
+
this.bind({ propertyName: 'textSetting', valueComponent: text });
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<%- render('test-imports') -%>
|
|
2
|
+
import { TypedItem } from './plugin-settings.ts';
|
|
3
|
+
|
|
4
|
+
describe('TypedItem', () => {
|
|
5
|
+
it('deserializes a saved name back to the same instance', () => {
|
|
6
|
+
expect(TypedItem.deserialize(TypedItem.Bar.name)).toBe(TypedItem.Bar);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// A `data.json` edited by hand, or written by a version of the plugin that had another item, must not
|
|
10
|
+
// Load as a silently wrong value.
|
|
11
|
+
it('rejects a name it does not know', () => {
|
|
12
|
+
expect(() => TypedItem.deserialize('Unknown')).toThrow('Unknown item: Unknown');
|
|
13
|
+
});
|
|
14
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { IsoMonth } from 'obsidian-dev-utils/obsidian/setting-components/month-component';
|
|
2
|
+
import type { IsoWeek } from 'obsidian-dev-utils/obsidian/setting-components/week-component';
|
|
3
|
+
|
|
4
|
+
import { moment } from 'obsidian';
|
|
5
|
+
|
|
6
|
+
export class TypedItem {
|
|
7
|
+
public static readonly Bar = new TypedItem('Bar');
|
|
8
|
+
public static readonly Baz = new TypedItem('Baz');
|
|
9
|
+
public static readonly Foo = new TypedItem('Foo');
|
|
10
|
+
|
|
11
|
+
public constructor(public readonly name: string) {}
|
|
12
|
+
|
|
13
|
+
public static deserialize(name: string): TypedItem {
|
|
14
|
+
const items = [this.Bar, this.Baz, this.Foo];
|
|
15
|
+
const item = items.find((candidate) => candidate.name === name);
|
|
16
|
+
|
|
17
|
+
if (item === undefined) {
|
|
18
|
+
throw new Error(`Unknown item: ${name}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return item;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* eslint-disable no-magic-numbers -- Magic numbers are OK in settings defaults: the value IS the documentation. */
|
|
26
|
+
export class PluginSettings {
|
|
27
|
+
public checkboxSetting = true;
|
|
28
|
+
public codeHighlighterSetting = `function foo() {
|
|
29
|
+
console.log('bar');
|
|
30
|
+
}`;
|
|
31
|
+
|
|
32
|
+
public colorSetting = '#123456';
|
|
33
|
+
public dateSetting = new Date();
|
|
34
|
+
public dateTimeSetting = new Date();
|
|
35
|
+
public dropdownSetting = 'Value2';
|
|
36
|
+
public emailSetting = 'defaultEmail@example.com';
|
|
37
|
+
public momentFormatSetting = 'YYYY-MM-DD';
|
|
38
|
+
public monthSetting: IsoMonth = {
|
|
39
|
+
month: 2,
|
|
40
|
+
year: 2025
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
public multipleDropdownSetting: readonly string[] = ['Value2', 'Value5'];
|
|
44
|
+
public multipleEmailSetting: readonly string[] = ['defaultEmail@example.com', 'defaultEmail2@example.com'];
|
|
45
|
+
public multipleTextSetting: readonly string[] = ['defaultText1', 'defaultText2', 'defaultText3'];
|
|
46
|
+
public numberSetting = 123;
|
|
47
|
+
public progressBarSetting = 50;
|
|
48
|
+
public searchSetting = 'defaultSearch';
|
|
49
|
+
public sliderSetting = 50;
|
|
50
|
+
public textAreaSetting = 'defaultTextArea';
|
|
51
|
+
public textSetting = 'defaultText';
|
|
52
|
+
public timeSetting: moment.Duration = moment.duration({ hours: 12, minutes: 34 });
|
|
53
|
+
public toggleSetting = true;
|
|
54
|
+
public triStateCheckboxSetting: boolean | null = null;
|
|
55
|
+
public typedDropdownSetting: TypedItem = TypedItem.Foo;
|
|
56
|
+
public typedMultipleDropdownSetting: readonly TypedItem[] = [TypedItem.Bar, TypedItem.Baz];
|
|
57
|
+
public urlSetting = 'https://example.com';
|
|
58
|
+
|
|
59
|
+
public weekSetting: IsoWeek = {
|
|
60
|
+
weekNumber: 6,
|
|
61
|
+
year: 2025
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/* eslint-enable no-magic-numbers -- Magic numbers are OK in settings defaults: the value IS the documentation. */
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Plugin as ObsidianPlugin } from 'obsidian';
|
|
2
|
+
import {
|
|
3
|
+
describe,
|
|
4
|
+
expect,
|
|
5
|
+
it
|
|
6
|
+
} from 'vitest';
|
|
7
|
+
|
|
8
|
+
import { Plugin } from './plugin.ts';
|
|
9
|
+
|
|
10
|
+
describe('<%= pluginShortName %>', () => {
|
|
11
|
+
it('extends the Obsidian Plugin class', () => {
|
|
12
|
+
expect(Plugin.prototype).toBeInstanceOf(ObsidianPlugin);
|
|
13
|
+
});
|
|
14
|
+
});
|