obsidian-dev-utils 55.4.0 → 56.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.
Files changed (542) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/lib/cjs/abort-controller.cjs +8 -4
  3. package/dist/lib/cjs/array.cjs +7 -3
  4. package/dist/lib/cjs/async-events.cjs +9 -5
  5. package/dist/lib/cjs/async.cjs +8 -4
  6. package/dist/lib/cjs/blob.cjs +8 -4
  7. package/dist/lib/cjs/codemirror/index.cjs +7 -3
  8. package/dist/lib/cjs/codemirror/state-field-spec.cjs +7 -3
  9. package/dist/lib/cjs/css-class.cjs +7 -3
  10. package/dist/lib/cjs/debug-controller.cjs +7 -3
  11. package/dist/lib/cjs/debug.cjs +7 -3
  12. package/dist/lib/cjs/enum.cjs +7 -3
  13. package/dist/lib/cjs/error.cjs +7 -3
  14. package/dist/lib/cjs/function.cjs +7 -3
  15. package/dist/lib/cjs/html-element.cjs +20 -16
  16. package/dist/lib/cjs/index.cjs +7 -3
  17. package/dist/lib/cjs/library.cjs +8 -4
  18. package/dist/lib/cjs/object-utils.cjs +7 -3
  19. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +3 -3
  20. package/dist/lib/cjs/obsidian/app.cjs +7 -3
  21. package/dist/lib/cjs/obsidian/async-with-notice.cjs +10 -6
  22. package/dist/lib/cjs/obsidian/attachment-path.cjs +7 -3
  23. package/dist/lib/cjs/obsidian/backlink.cjs +7 -3
  24. package/dist/lib/cjs/obsidian/callout.cjs +7 -3
  25. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +7 -3
  26. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +355 -0
  27. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +178 -0
  28. package/dist/lib/cjs/obsidian/{commands/index.cjs → command-handlers/app-active-file-provider.cjs} +31 -34
  29. package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.d.cts +25 -0
  30. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +173 -0
  31. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.d.cts +41 -0
  32. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +164 -0
  33. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +26 -0
  34. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +174 -0
  35. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +143 -0
  36. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +269 -0
  37. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +114 -0
  38. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +261 -0
  39. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +112 -0
  40. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +261 -0
  41. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +112 -0
  42. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +177 -0
  43. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +38 -0
  44. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +170 -0
  45. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +9 -0
  46. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +8 -4
  47. package/dist/lib/cjs/obsidian/components/async-component.cjs +164 -0
  48. package/dist/lib/cjs/obsidian/components/async-component.d.cts +28 -0
  49. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +7 -3
  50. package/dist/lib/cjs/obsidian/components/index.cjs +10 -3
  51. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  52. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +7 -3
  53. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +7 -3
  54. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +7 -3
  55. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +7 -3
  56. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +7 -3
  57. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +7 -3
  58. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +7 -3
  59. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +7 -3
  60. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +7 -3
  61. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +7 -3
  62. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +7 -3
  63. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +7 -3
  64. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +7 -3
  65. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +7 -3
  66. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +7 -3
  67. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +7 -3
  68. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +7 -3
  69. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +7 -3
  70. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +7 -3
  71. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +7 -3
  72. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +7 -3
  73. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +7 -3
  74. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +7 -3
  75. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +7 -3
  76. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +9 -5
  77. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +7 -3
  78. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +7 -3
  79. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +7 -3
  80. package/dist/lib/cjs/obsidian/constructors/index.cjs +7 -3
  81. package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -3
  82. package/dist/lib/cjs/obsidian/dataview.cjs +8 -4
  83. package/dist/lib/cjs/obsidian/editor.cjs +7 -3
  84. package/dist/lib/cjs/obsidian/file-change.cjs +7 -3
  85. package/dist/lib/cjs/obsidian/file-manager.cjs +7 -3
  86. package/dist/lib/cjs/obsidian/file-system.cjs +7 -3
  87. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +7 -3
  88. package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -3
  89. package/dist/lib/cjs/obsidian/i18n/{custom-type-options-base.cjs → custom-type-options.cjs} +9 -5
  90. package/dist/lib/cjs/obsidian/i18n/custom-type-options.d.cts +37 -0
  91. package/dist/lib/cjs/obsidian/{plugin/plugin-settings-wrapper.cjs → i18n/default-translations.cjs} +10 -5
  92. package/dist/lib/cjs/obsidian/i18n/default-translations.d.cts +14 -0
  93. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +7 -3
  94. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +2 -13
  95. package/dist/lib/cjs/obsidian/i18n/index.cjs +13 -9
  96. package/dist/lib/cjs/obsidian/i18n/index.d.cts +2 -2
  97. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +7 -3
  98. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +7 -3
  99. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +7 -3
  100. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -2
  101. package/dist/lib/cjs/obsidian/index.cjs +10 -6
  102. package/dist/lib/cjs/obsidian/index.d.cts +1 -1
  103. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +7 -3
  104. package/dist/lib/cjs/obsidian/link.cjs +7 -3
  105. package/dist/lib/cjs/obsidian/logger.cjs +7 -3
  106. package/dist/lib/cjs/obsidian/loop.cjs +7 -3
  107. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +7 -3
  108. package/dist/lib/cjs/obsidian/markdown-view.cjs +7 -3
  109. package/dist/lib/cjs/obsidian/markdown.cjs +7 -3
  110. package/dist/lib/cjs/obsidian/metadata-cache.cjs +7 -3
  111. package/dist/lib/cjs/obsidian/modals/alert.cjs +10 -6
  112. package/dist/lib/cjs/obsidian/modals/confirm.cjs +10 -6
  113. package/dist/lib/cjs/obsidian/modals/index.cjs +10 -6
  114. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -1
  115. package/dist/lib/cjs/obsidian/modals/{modal-base.cjs → modal.cjs} +10 -6
  116. package/dist/lib/cjs/obsidian/modals/prompt.cjs +10 -6
  117. package/dist/lib/cjs/obsidian/modals/select-item.cjs +9 -5
  118. package/dist/lib/cjs/obsidian/monkey-around.cjs +7 -3
  119. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +7 -3
  120. package/dist/lib/cjs/obsidian/pdf.cjs +10 -6
  121. package/dist/lib/cjs/obsidian/{commands/non-editor-command-base.cjs → plugin/components/abort-signal-component.cjs} +31 -21
  122. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.d.cts +27 -0
  123. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +165 -0
  124. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.d.cts +29 -0
  125. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.cjs +160 -0
  126. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.d.cts +29 -0
  127. package/dist/lib/cjs/obsidian/{i18n/default-translations-base.cjs → plugin/components/i18n-component.cjs} +41 -6
  128. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.d.cts +23 -0
  129. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +170 -0
  130. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +9 -0
  131. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +207 -0
  132. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.d.cts +59 -0
  133. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +162 -0
  134. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.d.cts +25 -0
  135. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +161 -0
  136. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.d.cts +25 -0
  137. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +566 -0
  138. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +296 -0
  139. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +166 -0
  140. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.d.cts +28 -0
  141. package/dist/lib/cjs/obsidian/plugin/index.cjs +13 -18
  142. package/dist/lib/cjs/obsidian/plugin/index.d.cts +2 -5
  143. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +7 -3
  144. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +7 -3
  145. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +18 -7
  146. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +3 -2
  147. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +7 -3
  148. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +408 -0
  149. package/dist/lib/cjs/obsidian/plugin/{plugin-settings-tab-base.d.cts → plugin-settings-tab.d.cts} +28 -11
  150. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +137 -3
  151. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +106 -5
  152. package/dist/lib/cjs/obsidian/queue.cjs +7 -3
  153. package/dist/lib/cjs/obsidian/react/app-context.cjs +7 -3
  154. package/dist/lib/cjs/obsidian/react/index.cjs +7 -3
  155. package/dist/lib/cjs/obsidian/reference.cjs +7 -3
  156. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +7 -3
  157. package/dist/lib/cjs/obsidian/resource-url.cjs +7 -3
  158. package/dist/lib/cjs/obsidian/setting-ex.cjs +7 -3
  159. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +7 -3
  160. package/dist/lib/cjs/obsidian/validation.cjs +7 -3
  161. package/dist/lib/cjs/obsidian/vault-delete.cjs +7 -3
  162. package/dist/lib/cjs/obsidian/vault.cjs +7 -3
  163. package/dist/lib/cjs/obsidian/workspace.cjs +7 -3
  164. package/dist/lib/cjs/path.cjs +7 -3
  165. package/dist/lib/cjs/reg-exp.cjs +7 -3
  166. package/dist/lib/cjs/script-utils/build.cjs +7 -3
  167. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +7 -3
  168. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +7 -3
  169. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +7 -3
  170. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +8 -4
  171. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +7 -3
  172. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +7 -3
  173. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +7 -3
  174. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -3
  175. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +10 -6
  176. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +7 -3
  177. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +7 -3
  178. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +7 -3
  179. package/dist/lib/cjs/script-utils/bundlers/index.cjs +7 -3
  180. package/dist/lib/cjs/script-utils/cli-utils.cjs +7 -3
  181. package/dist/lib/cjs/script-utils/code-generator.cjs +7 -3
  182. package/dist/lib/cjs/script-utils/commitlint-config.cjs +7 -3
  183. package/dist/lib/cjs/script-utils/exec.cjs +7 -3
  184. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +8 -4
  185. package/dist/lib/cjs/script-utils/formatters/index.cjs +7 -3
  186. package/dist/lib/cjs/script-utils/fs.cjs +7 -3
  187. package/dist/lib/cjs/script-utils/index.cjs +7 -3
  188. package/dist/lib/cjs/script-utils/json.cjs +7 -3
  189. package/dist/lib/cjs/script-utils/linters/cspell.cjs +7 -3
  190. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +9 -13
  191. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +7 -3
  192. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +7 -3
  193. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +7 -3
  194. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +7 -3
  195. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +7 -3
  196. package/dist/lib/cjs/script-utils/linters/eslint.cjs +8 -4
  197. package/dist/lib/cjs/script-utils/linters/index.cjs +7 -3
  198. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +7 -3
  199. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +11 -5
  200. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +7 -3
  201. package/dist/lib/cjs/script-utils/npm-publish.cjs +7 -3
  202. package/dist/lib/cjs/script-utils/npm-run.cjs +7 -3
  203. package/dist/lib/cjs/script-utils/npm.cjs +7 -3
  204. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +7 -3
  205. package/dist/lib/cjs/script-utils/root.cjs +7 -3
  206. package/dist/lib/cjs/script-utils/test-runners/index.cjs +7 -3
  207. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +7 -3
  208. package/dist/lib/cjs/script-utils/version.cjs +7 -3
  209. package/dist/lib/cjs/strict-proxy.cjs +7 -3
  210. package/dist/lib/cjs/string.cjs +7 -3
  211. package/dist/lib/cjs/transformers/date-transformer.cjs +7 -3
  212. package/dist/lib/cjs/transformers/duration-transformer.cjs +7 -3
  213. package/dist/lib/cjs/transformers/group-transformer.cjs +7 -3
  214. package/dist/lib/cjs/transformers/index.cjs +7 -3
  215. package/dist/lib/cjs/transformers/map-transformer.cjs +7 -3
  216. package/dist/lib/cjs/transformers/set-transformer.cjs +7 -3
  217. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +7 -3
  218. package/dist/lib/cjs/transformers/transformer.cjs +7 -3
  219. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +7 -3
  220. package/dist/lib/cjs/transformers/typed-transformer.cjs +7 -3
  221. package/dist/lib/cjs/two-way-map.cjs +7 -3
  222. package/dist/lib/cjs/type-guards.cjs +7 -3
  223. package/dist/lib/cjs/type.cjs +7 -3
  224. package/dist/lib/cjs/url.cjs +7 -3
  225. package/dist/lib/cjs/value-provider.cjs +7 -3
  226. package/dist/lib/esm/abort-controller.mjs +4 -2
  227. package/dist/lib/esm/array.mjs +3 -1
  228. package/dist/lib/esm/async-events.mjs +5 -3
  229. package/dist/lib/esm/async.mjs +4 -2
  230. package/dist/lib/esm/blob.mjs +4 -2
  231. package/dist/lib/esm/codemirror/index.mjs +3 -1
  232. package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -0
  233. package/dist/lib/esm/css-class.mjs +3 -1
  234. package/dist/lib/esm/debug-controller.mjs +2 -0
  235. package/dist/lib/esm/debug.mjs +3 -1
  236. package/dist/lib/esm/enum.mjs +3 -1
  237. package/dist/lib/esm/error.mjs +3 -1
  238. package/dist/lib/esm/function.mjs +3 -1
  239. package/dist/lib/esm/html-element.mjs +16 -14
  240. package/dist/lib/esm/index.mjs +3 -1
  241. package/dist/lib/esm/library.mjs +4 -2
  242. package/dist/lib/esm/object-utils.mjs +3 -1
  243. package/dist/lib/esm/obsidian/@types/i18next.d.mts +3 -3
  244. package/dist/lib/esm/obsidian/app.mjs +3 -1
  245. package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -4
  246. package/dist/lib/esm/obsidian/attachment-path.mjs +3 -1
  247. package/dist/lib/esm/obsidian/backlink.mjs +3 -1
  248. package/dist/lib/esm/obsidian/callout.mjs +3 -1
  249. package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -0
  250. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +178 -0
  251. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +247 -0
  252. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.d.mts +25 -0
  253. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +46 -0
  254. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.d.mts +41 -0
  255. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +65 -0
  256. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +26 -0
  257. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +56 -0
  258. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +143 -0
  259. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +66 -0
  260. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +114 -0
  261. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +161 -0
  262. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +112 -0
  263. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +157 -0
  264. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +112 -0
  265. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +157 -0
  266. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +38 -0
  267. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +69 -0
  268. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +9 -0
  269. package/dist/lib/esm/obsidian/command-handlers/index.mjs +44 -0
  270. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +4 -2
  271. package/dist/lib/esm/obsidian/components/async-component.d.mts +28 -0
  272. package/dist/lib/esm/obsidian/components/async-component.mjs +56 -0
  273. package/dist/lib/esm/obsidian/components/async-events-component.mjs +3 -1
  274. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  275. package/dist/lib/esm/obsidian/components/index.mjs +5 -1
  276. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +3 -1
  277. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +3 -1
  278. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +3 -1
  279. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +3 -1
  280. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +3 -1
  281. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +3 -1
  282. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +3 -1
  283. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +3 -1
  284. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +3 -1
  285. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +3 -1
  286. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +3 -1
  287. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +3 -1
  288. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +3 -1
  289. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +3 -1
  290. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +3 -1
  291. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +3 -1
  292. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +3 -1
  293. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +3 -1
  294. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +3 -1
  295. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +3 -1
  296. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +3 -1
  297. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +3 -1
  298. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +3 -1
  299. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +3 -1
  300. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +5 -3
  301. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -0
  302. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +3 -1
  303. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +3 -1
  304. package/dist/lib/esm/obsidian/constructors/index.mjs +3 -1
  305. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -1
  306. package/dist/lib/esm/obsidian/dataview.mjs +4 -2
  307. package/dist/lib/esm/obsidian/editor.mjs +3 -1
  308. package/dist/lib/esm/obsidian/file-change.mjs +3 -1
  309. package/dist/lib/esm/obsidian/file-manager.mjs +3 -1
  310. package/dist/lib/esm/obsidian/file-system.mjs +3 -1
  311. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +3 -1
  312. package/dist/lib/esm/obsidian/frontmatter.mjs +3 -1
  313. package/dist/lib/esm/obsidian/i18n/custom-type-options.d.mts +37 -0
  314. package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +25 -0
  315. package/dist/lib/esm/obsidian/i18n/default-translations.d.mts +14 -0
  316. package/dist/lib/esm/obsidian/i18n/default-translations.mjs +25 -0
  317. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +2 -13
  318. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -1
  319. package/dist/lib/esm/obsidian/i18n/index.d.mts +2 -2
  320. package/dist/lib/esm/obsidian/i18n/index.mjs +7 -5
  321. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
  322. package/dist/lib/esm/obsidian/i18n/locales/index.mjs +3 -1
  323. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -2
  324. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +3 -1
  325. package/dist/lib/esm/obsidian/index.d.mts +1 -1
  326. package/dist/lib/esm/obsidian/index.mjs +5 -3
  327. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +3 -1
  328. package/dist/lib/esm/obsidian/link.mjs +3 -1
  329. package/dist/lib/esm/obsidian/logger.mjs +3 -1
  330. package/dist/lib/esm/obsidian/loop.mjs +3 -1
  331. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +3 -1
  332. package/dist/lib/esm/obsidian/markdown-view.mjs +3 -1
  333. package/dist/lib/esm/obsidian/markdown.mjs +3 -1
  334. package/dist/lib/esm/obsidian/metadata-cache.mjs +3 -1
  335. package/dist/lib/esm/obsidian/modals/alert.mjs +4 -2
  336. package/dist/lib/esm/obsidian/modals/confirm.mjs +4 -2
  337. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -1
  338. package/dist/lib/esm/obsidian/modals/index.mjs +5 -3
  339. package/dist/lib/esm/obsidian/modals/modal.mjs +54 -0
  340. package/dist/lib/esm/obsidian/modals/prompt.mjs +4 -2
  341. package/dist/lib/esm/obsidian/modals/select-item.mjs +4 -2
  342. package/dist/lib/esm/obsidian/monkey-around.mjs +3 -1
  343. package/dist/lib/esm/obsidian/obsidian-settings.mjs +3 -1
  344. package/dist/lib/esm/obsidian/pdf.mjs +6 -4
  345. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.d.mts +27 -0
  346. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +54 -0
  347. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.d.mts +29 -0
  348. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +57 -0
  349. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.d.mts +29 -0
  350. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +52 -0
  351. package/dist/lib/esm/obsidian/plugin/components/i18n-component.d.mts +23 -0
  352. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +48 -0
  353. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +9 -0
  354. package/dist/lib/esm/obsidian/plugin/components/index.mjs +44 -0
  355. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.d.mts +59 -0
  356. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +102 -0
  357. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.d.mts +25 -0
  358. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +57 -0
  359. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.d.mts +25 -0
  360. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +56 -0
  361. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +296 -0
  362. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +463 -0
  363. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.d.mts +28 -0
  364. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +58 -0
  365. package/dist/lib/esm/obsidian/plugin/index.d.mts +2 -5
  366. package/dist/lib/esm/obsidian/plugin/index.mjs +7 -11
  367. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +3 -1
  368. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +3 -1
  369. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +3 -2
  370. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +14 -5
  371. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +3 -1
  372. package/dist/lib/esm/obsidian/plugin/{plugin-settings-tab-base.d.mts → plugin-settings-tab.d.mts} +28 -11
  373. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +309 -0
  374. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +106 -5
  375. package/dist/lib/esm/obsidian/plugin/plugin.mjs +140 -2
  376. package/dist/lib/esm/obsidian/queue.mjs +3 -1
  377. package/dist/lib/esm/obsidian/react/app-context.mjs +3 -1
  378. package/dist/lib/esm/obsidian/react/index.mjs +3 -1
  379. package/dist/lib/esm/obsidian/reference.mjs +3 -1
  380. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +3 -1
  381. package/dist/lib/esm/obsidian/resource-url.mjs +3 -1
  382. package/dist/lib/esm/obsidian/setting-ex.mjs +3 -1
  383. package/dist/lib/esm/obsidian/setting-group-ex.mjs +3 -1
  384. package/dist/lib/esm/obsidian/validation.mjs +3 -1
  385. package/dist/lib/esm/obsidian/vault-delete.mjs +3 -1
  386. package/dist/lib/esm/obsidian/vault.mjs +3 -1
  387. package/dist/lib/esm/obsidian/workspace.mjs +3 -1
  388. package/dist/lib/esm/path.mjs +3 -1
  389. package/dist/lib/esm/reg-exp.mjs +3 -1
  390. package/dist/lib/esm/script-utils/build.mjs +3 -1
  391. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +3 -1
  392. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +3 -1
  393. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +3 -1
  394. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +3 -1
  395. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -1
  396. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +3 -1
  397. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +3 -1
  398. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +3 -1
  399. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -3
  400. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +3 -1
  401. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +3 -1
  402. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +3 -1
  403. package/dist/lib/esm/script-utils/bundlers/index.mjs +3 -1
  404. package/dist/lib/esm/script-utils/cli-utils.mjs +3 -1
  405. package/dist/lib/esm/script-utils/code-generator.mjs +3 -1
  406. package/dist/lib/esm/script-utils/commitlint-config.mjs +3 -1
  407. package/dist/lib/esm/script-utils/exec.mjs +3 -1
  408. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -1
  409. package/dist/lib/esm/script-utils/formatters/index.mjs +3 -1
  410. package/dist/lib/esm/script-utils/fs.mjs +3 -1
  411. package/dist/lib/esm/script-utils/index.mjs +3 -1
  412. package/dist/lib/esm/script-utils/json.mjs +3 -1
  413. package/dist/lib/esm/script-utils/linters/cspell.mjs +3 -1
  414. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +5 -11
  415. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +3 -1
  416. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +3 -1
  417. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +3 -1
  418. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +3 -1
  419. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +3 -1
  420. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -1
  421. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  422. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +3 -1
  423. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +6 -2
  424. package/dist/lib/esm/script-utils/nano-staged-config.mjs +3 -1
  425. package/dist/lib/esm/script-utils/npm-publish.mjs +3 -1
  426. package/dist/lib/esm/script-utils/npm-run.mjs +3 -1
  427. package/dist/lib/esm/script-utils/npm.mjs +3 -1
  428. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +3 -1
  429. package/dist/lib/esm/script-utils/root.mjs +3 -1
  430. package/dist/lib/esm/script-utils/test-runners/index.mjs +3 -1
  431. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +3 -1
  432. package/dist/lib/esm/script-utils/version.mjs +3 -1
  433. package/dist/lib/esm/strict-proxy.mjs +3 -1
  434. package/dist/lib/esm/string.mjs +3 -1
  435. package/dist/lib/esm/transformers/date-transformer.mjs +3 -1
  436. package/dist/lib/esm/transformers/duration-transformer.mjs +3 -1
  437. package/dist/lib/esm/transformers/group-transformer.mjs +3 -1
  438. package/dist/lib/esm/transformers/index.mjs +3 -1
  439. package/dist/lib/esm/transformers/map-transformer.mjs +3 -1
  440. package/dist/lib/esm/transformers/set-transformer.mjs +3 -1
  441. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +3 -1
  442. package/dist/lib/esm/transformers/transformer.mjs +3 -1
  443. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +3 -1
  444. package/dist/lib/esm/transformers/typed-transformer.mjs +3 -1
  445. package/dist/lib/esm/two-way-map.mjs +3 -1
  446. package/dist/lib/esm/type-guards.mjs +3 -1
  447. package/dist/lib/esm/type.mjs +3 -1
  448. package/dist/lib/esm/url.mjs +3 -1
  449. package/dist/lib/esm/value-provider.mjs +3 -1
  450. package/obsidian/Components/async-component/package.json +6 -0
  451. package/obsidian/Modals/modal/package.json +6 -0
  452. package/obsidian/Plugin/components/abort-signal-component/package.json +6 -0
  453. package/obsidian/Plugin/components/async-error-handler-component/package.json +6 -0
  454. package/obsidian/Plugin/components/console-debug-component/package.json +6 -0
  455. package/obsidian/Plugin/components/i18n-component/package.json +6 -0
  456. package/obsidian/Plugin/components/index/package.json +6 -0
  457. package/obsidian/Plugin/components/lifecycle-events-component/package.json +6 -0
  458. package/obsidian/Plugin/components/package.json +6 -0
  459. package/obsidian/Plugin/components/plugin-context-component/package.json +6 -0
  460. package/obsidian/Plugin/components/plugin-notice-component/package.json +6 -0
  461. package/obsidian/Plugin/components/plugin-settings-component/package.json +6 -0
  462. package/obsidian/Plugin/components/plugin-settings-tab-component/package.json +6 -0
  463. package/obsidian/Plugin/{plugin-settings-wrapper → plugin-settings-tab}/package.json +3 -3
  464. package/obsidian/command-handlers/abstract-file-command-handler/package.json +6 -0
  465. package/obsidian/command-handlers/app-active-file-provider/package.json +6 -0
  466. package/obsidian/command-handlers/app-menu-event-registrar/package.json +6 -0
  467. package/obsidian/command-handlers/command-handler/package.json +6 -0
  468. package/obsidian/command-handlers/command-handler-component/package.json +6 -0
  469. package/obsidian/command-handlers/editor-command-handler/package.json +6 -0
  470. package/obsidian/command-handlers/file-command-handler/package.json +6 -0
  471. package/obsidian/command-handlers/folder-command-handler/package.json +6 -0
  472. package/obsidian/command-handlers/global-command-handler/package.json +6 -0
  473. package/obsidian/command-handlers/index/package.json +6 -0
  474. package/obsidian/command-handlers/package.json +6 -0
  475. package/obsidian/i18n/{custom-type-options-base → custom-type-options}/package.json +3 -3
  476. package/obsidian/i18n/{default-translations-base → default-translations}/package.json +3 -3
  477. package/package.json +33 -12
  478. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +0 -439
  479. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +0 -264
  480. package/dist/lib/cjs/obsidian/commands/command-base.cjs +0 -253
  481. package/dist/lib/cjs/obsidian/commands/command-base.d.cts +0 -125
  482. package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +0 -280
  483. package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +0 -139
  484. package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +0 -341
  485. package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +0 -191
  486. package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +0 -333
  487. package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +0 -184
  488. package/dist/lib/cjs/obsidian/commands/index.d.cts +0 -6
  489. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +0 -34
  490. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +0 -37
  491. package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +0 -25
  492. package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +0 -407
  493. package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +0 -176
  494. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +0 -484
  495. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +0 -186
  496. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +0 -399
  497. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +0 -25
  498. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +0 -120
  499. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +0 -87
  500. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +0 -264
  501. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +0 -329
  502. package/dist/lib/esm/obsidian/commands/command-base.d.mts +0 -125
  503. package/dist/lib/esm/obsidian/commands/command-base.mjs +0 -146
  504. package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +0 -139
  505. package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +0 -176
  506. package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +0 -191
  507. package/dist/lib/esm/obsidian/commands/file-command-base.mjs +0 -240
  508. package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +0 -184
  509. package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +0 -232
  510. package/dist/lib/esm/obsidian/commands/index.d.mts +0 -6
  511. package/dist/lib/esm/obsidian/commands/index.mjs +0 -36
  512. package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +0 -34
  513. package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +0 -46
  514. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +0 -37
  515. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +0 -23
  516. package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +0 -25
  517. package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +0 -23
  518. package/dist/lib/esm/obsidian/modals/modal-base.mjs +0 -52
  519. package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +0 -176
  520. package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +0 -317
  521. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +0 -186
  522. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +0 -385
  523. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +0 -302
  524. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +0 -25
  525. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.mjs +0 -22
  526. package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +0 -87
  527. package/dist/lib/esm/obsidian/plugin/plugin-types-base.mjs +0 -22
  528. package/obsidian/Commands/abstract-file-command-base/package.json +0 -6
  529. package/obsidian/Commands/command-base/package.json +0 -6
  530. package/obsidian/Commands/editor-command-base/package.json +0 -6
  531. package/obsidian/Commands/file-command-base/package.json +0 -6
  532. package/obsidian/Commands/folder-command-base/package.json +0 -6
  533. package/obsidian/Commands/index/package.json +0 -6
  534. package/obsidian/Commands/non-editor-command-base/package.json +0 -6
  535. package/obsidian/Commands/package.json +0 -6
  536. package/obsidian/Modals/modal-base/package.json +0 -6
  537. package/obsidian/Plugin/plugin-base/package.json +0 -6
  538. package/obsidian/Plugin/plugin-settings-manager-base/package.json +0 -6
  539. package/obsidian/Plugin/plugin-settings-tab-base/package.json +0 -6
  540. package/obsidian/Plugin/plugin-types-base/package.json +0 -6
  541. /package/dist/lib/cjs/obsidian/modals/{modal-base.d.cts → modal.d.cts} +0 -0
  542. /package/dist/lib/esm/obsidian/modals/{modal-base.d.mts → modal.d.mts} +0 -0
@@ -0,0 +1,355 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
111
+ var __getOwnPropNames = Object.getOwnPropertyNames;
112
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
113
+ var __export = (target, all) => {
114
+ for (var name in all)
115
+ __defProp(target, name, { get: all[name], enumerable: true });
116
+ };
117
+ var __copyProps = (to, from, except, desc) => {
118
+ if (from && typeof from === "object" || typeof from === "function") {
119
+ for (let key of __getOwnPropNames(from))
120
+ if (!__hasOwnProp.call(to, key) && key !== except)
121
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
122
+ }
123
+ return to;
124
+ };
125
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
126
+ var abstract_file_command_handler_exports = {};
127
+ __export(abstract_file_command_handler_exports, {
128
+ AbstractFileCommandHandler: () => AbstractFileCommandHandler
129
+ });
130
+ module.exports = __toCommonJS(abstract_file_command_handler_exports);
131
+ var import_async = require('../../async.cjs');
132
+ var import_global_command_handler = require('./global-command-handler.cjs');
133
+ class AbstractFileCommandHandler extends import_global_command_handler.GlobalCommandHandler {
134
+ /**
135
+ * Gets the item name to use in the single-file menu.
136
+ *
137
+ * @returns The item name, or `undefined` to use the command name.
138
+ */
139
+ get fileMenuItemName() {
140
+ return this._fileMenuItemName;
141
+ }
142
+ /**
143
+ * Gets the section to use in the single-file menu.
144
+ *
145
+ * @returns The section name, or `undefined` to use the plugin name.
146
+ */
147
+ get fileMenuSection() {
148
+ return this._fileMenuSection;
149
+ }
150
+ /**
151
+ * Gets the icon to use in the single-file menu submenu.
152
+ *
153
+ * @returns The icon, or `undefined` for no icon.
154
+ */
155
+ get fileMenuSubmenuIcon() {
156
+ return this._fileMenuSubmenuIcon;
157
+ }
158
+ /**
159
+ * Gets the item name to use in the multi-file menu.
160
+ *
161
+ * @returns The item name, or `undefined` to fall back to single-file item name.
162
+ */
163
+ get filesMenuItemName() {
164
+ return this._filesMenuItemName;
165
+ }
166
+ /**
167
+ * Gets the section to use in the multi-file menu.
168
+ *
169
+ * @returns The section name, or `undefined` to fall back to single-file section.
170
+ */
171
+ get filesMenuSection() {
172
+ return this._filesMenuSection;
173
+ }
174
+ /**
175
+ * Gets the icon to use in the multi-file menu submenu.
176
+ *
177
+ * @returns The icon, or `undefined` to fall back to single-file submenu icon.
178
+ */
179
+ get filesMenuSubmenuIcon() {
180
+ return this._filesMenuSubmenuIcon;
181
+ }
182
+ /**
183
+ * Gets whether to add the command to a submenu.
184
+ *
185
+ * @returns Whether to add to a submenu.
186
+ */
187
+ get shouldAddCommandToSubmenu() {
188
+ return this._shouldAddCommandToSubmenu;
189
+ }
190
+ _fileMenuItemName;
191
+ _fileMenuSection;
192
+ _fileMenuSubmenuIcon;
193
+ _filesMenuItemName;
194
+ _filesMenuSection;
195
+ _filesMenuSubmenuIcon;
196
+ _shouldAddCommandToSubmenu;
197
+ activeFileProvider;
198
+ /**
199
+ * Creates a new abstract file command handler.
200
+ *
201
+ * @param params - The parameters for the abstract file command handler.
202
+ */
203
+ constructor(params) {
204
+ super(params);
205
+ this._fileMenuItemName = params.fileMenuItemName;
206
+ this._fileMenuSection = params.fileMenuSection;
207
+ this._fileMenuSubmenuIcon = params.fileMenuSubmenuIcon;
208
+ this._filesMenuItemName = params.filesMenuItemName;
209
+ this._filesMenuSection = params.filesMenuSection;
210
+ this._filesMenuSubmenuIcon = params.filesMenuSubmenuIcon;
211
+ this._shouldAddCommandToSubmenu = params.shouldAddCommandToSubmenu;
212
+ }
213
+ /**
214
+ * Registers file-menu and files-menu event handlers.
215
+ *
216
+ * @param context - The registration context.
217
+ */
218
+ async onRegistered(context) {
219
+ await super.onRegistered(context);
220
+ this.activeFileProvider = context.activeFileProvider;
221
+ context.menuEventRegistrar.registerFileMenuEventHandler(this.handleAbstractFileMenu.bind(this));
222
+ context.menuEventRegistrar.registerFilesMenuEventHandler(this.handleAbstractFilesMenu.bind(this));
223
+ }
224
+ /**
225
+ * Checks whether the command can execute from the command palette.
226
+ * Uses the active file as the target.
227
+ *
228
+ * @returns Whether the command can execute.
229
+ */
230
+ canExecute() {
231
+ if (!this.shouldAddToCommandPalette()) {
232
+ return false;
233
+ }
234
+ const activeFile = this.getActiveFile();
235
+ return !!activeFile && this.canExecuteAbstractFile(activeFile);
236
+ }
237
+ /**
238
+ * Checks whether the command can execute for a single abstract file.
239
+ *
240
+ * @param _abstractFile - The file or folder.
241
+ * @returns Whether the command can execute.
242
+ */
243
+ canExecuteAbstractFile(_abstractFile) {
244
+ return true;
245
+ }
246
+ /**
247
+ * Checks whether the command can execute for multiple abstract files.
248
+ * Default implementation checks each file individually.
249
+ *
250
+ * @param abstractFiles - The files or folders.
251
+ * @returns Whether the command can execute.
252
+ */
253
+ canExecuteAbstractFiles(abstractFiles) {
254
+ return abstractFiles.length > 0 && abstractFiles.every((f) => this.canExecuteAbstractFile(f));
255
+ }
256
+ /**
257
+ * Executes the command from the command palette using the active file.
258
+ */
259
+ async execute() {
260
+ const activeFile = this.getActiveFile();
261
+ if (activeFile) {
262
+ await this.executeAbstractFile(activeFile);
263
+ }
264
+ }
265
+ /**
266
+ * Executes the command for multiple abstract files.
267
+ * Default implementation executes sequentially.
268
+ *
269
+ * @param abstractFiles - The files or folders.
270
+ */
271
+ async executeAbstractFiles(abstractFiles) {
272
+ for (const file of abstractFiles) {
273
+ await this.executeAbstractFile(file);
274
+ }
275
+ }
276
+ /**
277
+ * Checks whether the command should appear in the single-file context menu.
278
+ *
279
+ * @param _abstractFile - The file or folder.
280
+ * @param _source - The source of the event.
281
+ * @param _leaf - The workspace leaf, if available.
282
+ * @returns Whether to add to the file menu.
283
+ */
284
+ shouldAddToAbstractFileMenu(_abstractFile, _source, _leaf) {
285
+ return false;
286
+ }
287
+ /**
288
+ * Checks whether the command should appear in the multi-file context menu.
289
+ * Default implementation checks each file individually.
290
+ *
291
+ * @param abstractFiles - The files or folders.
292
+ * @param source - The source of the event.
293
+ * @param leaf - The workspace leaf, if available.
294
+ * @returns Whether to add to the files menu.
295
+ */
296
+ shouldAddToAbstractFilesMenu(abstractFiles, source, leaf) {
297
+ return abstractFiles.every((f) => this.shouldAddToAbstractFileMenu(f, source, leaf));
298
+ }
299
+ /**
300
+ * Checks whether the command should appear in the command palette.
301
+ *
302
+ * @returns Whether to add to the command palette.
303
+ */
304
+ shouldAddToCommandPalette() {
305
+ return true;
306
+ }
307
+ getActiveFile() {
308
+ return this.activeFileProvider?.getActiveFile() ?? null;
309
+ }
310
+ handleAbstractFileMenu(menu, abstractFile, source, leaf) {
311
+ if (!this.shouldAddToAbstractFileMenu(abstractFile, source, leaf)) {
312
+ return;
313
+ }
314
+ if (!this.canExecuteAbstractFile(abstractFile)) {
315
+ return;
316
+ }
317
+ const section = this.fileMenuSection ?? this.pluginName;
318
+ if (this.shouldAddCommandToSubmenu) {
319
+ menu.setSectionSubmenu(section, {
320
+ icon: this.fileMenuSubmenuIcon ?? "",
321
+ title: section
322
+ });
323
+ }
324
+ menu.addItem((item) => {
325
+ item.setTitle(this.fileMenuItemName ?? this.name).setIcon(this.icon).setSection(section).onClick(() => {
326
+ (0, import_async.invokeAsyncSafely)(() => this.executeAbstractFile(abstractFile));
327
+ });
328
+ });
329
+ }
330
+ handleAbstractFilesMenu(menu, abstractFiles, source, leaf) {
331
+ if (!this.shouldAddToAbstractFilesMenu(abstractFiles, source, leaf)) {
332
+ return;
333
+ }
334
+ if (!this.canExecuteAbstractFiles(abstractFiles)) {
335
+ return;
336
+ }
337
+ const section = this.filesMenuSection ?? this.fileMenuSection ?? this.pluginName;
338
+ if (this.shouldAddCommandToSubmenu) {
339
+ menu.setSectionSubmenu(section, {
340
+ icon: this.filesMenuSubmenuIcon ?? this.fileMenuSubmenuIcon ?? "",
341
+ title: section
342
+ });
343
+ }
344
+ menu.addItem((item) => {
345
+ item.setTitle(this.filesMenuItemName ?? this.fileMenuItemName ?? this.name).setIcon(this.icon).setSection(section).onClick(() => {
346
+ (0, import_async.invokeAsyncSafely)(() => this.executeAbstractFiles(abstractFiles));
347
+ });
348
+ });
349
+ }
350
+ }
351
+ // Annotate the CommonJS export names for ESM import in node:
352
+ 0 && (module.exports = {
353
+ AbstractFileCommandHandler
354
+ });
355
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tYW5kIGhhbmRsZXIgZm9yIGFic3RyYWN0IGZpbGUgY29tbWFuZHMgd2l0aCBmaWxlL2ZpbGVzIG1lbnUgaW50ZWdyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJY29uTmFtZSxcbiAgTWVudSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgQWN0aXZlRmlsZVByb3ZpZGVyLFxuICBDb21tYW5kSGFuZGxlclBhcmFtcyxcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vZ2xvYmFsLWNvbW1hbmQtaGFuZGxlci50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYW4gYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJQYXJhbXMgZXh0ZW5kcyBDb21tYW5kSGFuZGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGluIHRoZSBzaW5nbGUtZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpdGVtIG5hbWUgdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVJdGVtTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlc01lbnVTZWN0aW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgdGhlIGNvbW1hbmQgdG8gYSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tbWFuZCBoYW5kbGVyIGZvciBhYnN0cmFjdCBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEhhbmRsZXMgYm90aCBzaW5nbGUtZmlsZSBhbmQgbXVsdGktZmlsZSBjb250ZXh0IG1lbnVzLlxuICogU3ViY2xhc3NlcyBvdmVycmlkZSB7QGxpbmsgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZX0gYW5kIHtAbGluayBleGVjdXRlQWJzdHJhY3RGaWxlfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyIGV4dGVuZHMgR2xvYmFsQ29tbWFuZEhhbmRsZXIge1xuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBjb21tYW5kIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZU1lbnVJdGVtTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBwbHVnaW4gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVTZWN0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaWNvbiwgb3IgYHVuZGVmaW5lZGAgZm9yIG5vIGljb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51U3VibWVudUljb24oKTogSWNvbk5hbWUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW0gbmFtZSB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIGl0ZW0gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZXNNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51SXRlbU5hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VjdGlvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIHNlY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVzTWVudVNlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpY29uLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgc3VibWVudSBpY29uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlc01lbnVTdWJtZW51SWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgd2hldGhlciB0byBhZGQgdGhlIGNvbW1hbmQgdG8gYSBzdWJtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byBhIHN1Ym1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudUl0ZW1OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGFjdGl2ZUZpbGVQcm92aWRlcj86IEFjdGl2ZUZpbGVQcm92aWRlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlclBhcmFtcykge1xuICAgIHN1cGVyKHBhcmFtcyk7XG4gICAgdGhpcy5fZmlsZU1lbnVJdGVtTmFtZSA9IHBhcmFtcy5maWxlTWVudUl0ZW1OYW1lO1xuICAgIHRoaXMuX2ZpbGVNZW51U2VjdGlvbiA9IHBhcmFtcy5maWxlTWVudVNlY3Rpb247XG4gICAgdGhpcy5fZmlsZU1lbnVTdWJtZW51SWNvbiA9IHBhcmFtcy5maWxlTWVudVN1Ym1lbnVJY29uO1xuICAgIHRoaXMuX2ZpbGVzTWVudUl0ZW1OYW1lID0gcGFyYW1zLmZpbGVzTWVudUl0ZW1OYW1lO1xuICAgIHRoaXMuX2ZpbGVzTWVudVNlY3Rpb24gPSBwYXJhbXMuZmlsZXNNZW51U2VjdGlvbjtcbiAgICB0aGlzLl9maWxlc01lbnVTdWJtZW51SWNvbiA9IHBhcmFtcy5maWxlc01lbnVTdWJtZW51SWNvbjtcbiAgICB0aGlzLl9zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51ID0gcGFyYW1zLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGZpbGUtbWVudSBhbmQgZmlsZXMtbWVudSBldmVudCBoYW5kbGVycy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25SZWdpc3RlcmVkKGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9uUmVnaXN0ZXJlZChjb250ZXh0KTtcbiAgICB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlciA9IGNvbnRleHQuYWN0aXZlRmlsZVByb3ZpZGVyO1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIodGhpcy5oYW5kbGVBYnN0cmFjdEZpbGVNZW51LmJpbmQodGhpcykpO1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKHRoaXMuaGFuZGxlQWJzdHJhY3RGaWxlc01lbnUuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlLlxuICAgKiBVc2VzIHRoZSBhY3RpdmUgZmlsZSBhcyB0aGUgdGFyZ2V0LlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNob3VsZEFkZFRvQ29tbWFuZFBhbGV0dGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUZpbGUgPSB0aGlzLmdldEFjdGl2ZUZpbGUoKTtcbiAgICByZXR1cm4gISFhY3RpdmVGaWxlICYmIHRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShhY3RpdmVGaWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZSBmb3IgYSBzaW5nbGUgYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIF9hYnN0cmFjdEZpbGUgLSBUaGUgZmlsZSBvciBmb2xkZXIuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShfYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNoZWNrcyBlYWNoIGZpbGUgaW5kaXZpZHVhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlcyAtIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGVzLmxlbmd0aCA+IDAgJiYgYWJzdHJhY3RGaWxlcy5ldmVyeSgoZikgPT4gdGhpcy5jYW5FeGVjdXRlQWJzdHJhY3RGaWxlKGYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIHBhbGV0dGUgdXNpbmcgdGhlIGFjdGl2ZSBmaWxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWN0aXZlRmlsZSA9IHRoaXMuZ2V0QWN0aXZlRmlsZSgpO1xuICAgIGlmIChhY3RpdmVGaWxlKSB7XG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGUoYWN0aXZlRmlsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGZvciBhIHNpbmdsZSBhYnN0cmFjdCBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQgZm9yIG11bHRpcGxlIGFic3RyYWN0IGZpbGVzLlxuICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGV4ZWN1dGVzIHNlcXVlbnRpYWxseS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBleGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYWJzdHJhY3RGaWxlcykge1xuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBfYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKiBAcGFyYW0gX3NvdXJjZSAtIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoX2Fic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSwgX3NvdXJjZTogc3RyaW5nLCBfbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgbXVsdGktZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGxlYWYgLSBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gdGhlIGZpbGVzIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudShhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhYnN0cmFjdEZpbGVzLmV2ZXJ5KChmKSA9PiB0aGlzLnNob3VsZEFkZFRvQWJzdHJhY3RGaWxlTWVudShmLCBzb3VyY2UsIGxlYWYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9Db21tYW5kUGFsZXR0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlRmlsZSgpOiBudWxsIHwgVEFic3RyYWN0RmlsZSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRmlsZVByb3ZpZGVyPy5nZXRBY3RpdmVGaWxlKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlTWVudShtZW51OiBNZW51LCBhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUsIHNvdXJjZTogc3RyaW5nLCBsZWFmPzogV29ya3NwYWNlTGVhZik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlLCBzb3VyY2UsIGxlYWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmZpbGVNZW51U2VjdGlvbiA/PyB0aGlzLnBsdWdpbk5hbWU7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSkge1xuICAgICAgbWVudS5zZXRTZWN0aW9uU3VibWVudShzZWN0aW9uLCB7XG4gICAgICAgIGljb246IHRoaXMuZmlsZU1lbnVTdWJtZW51SWNvbiA/PyAnJyxcbiAgICAgICAgdGl0bGU6IHNlY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgaXRlbVxuICAgICAgICAuc2V0VGl0bGUodGhpcy5maWxlTWVudUl0ZW1OYW1lID8/IHRoaXMubmFtZSlcbiAgICAgICAgLnNldEljb24odGhpcy5pY29uKVxuICAgICAgICAuc2V0U2VjdGlvbihzZWN0aW9uKVxuICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZSkpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlc01lbnUobWVudTogTWVudSwgYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudShhYnN0cmFjdEZpbGVzLCBzb3VyY2UsIGxlYWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZmlsZXNNZW51U2VjdGlvbiA/PyB0aGlzLmZpbGVNZW51U2VjdGlvbiA/PyB0aGlzLnBsdWdpbk5hbWU7XG4gICAgaWYgKHRoaXMuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSkge1xuICAgICAgbWVudS5zZXRTZWN0aW9uU3VibWVudShzZWN0aW9uLCB7XG4gICAgICAgIGljb246IHRoaXMuZmlsZXNNZW51U3VibWVudUljb24gPz8gdGhpcy5maWxlTWVudVN1Ym1lbnVJY29uID8/ICcnLFxuICAgICAgICB0aXRsZTogc2VjdGlvblxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICBpdGVtXG4gICAgICAgIC5zZXRUaXRsZSh0aGlzLmZpbGVzTWVudUl0ZW1OYW1lID8/IHRoaXMuZmlsZU1lbnVJdGVtTmFtZSA/PyB0aGlzLm5hbWUpXG4gICAgICAgIC5zZXRJY29uKHRoaXMuaWNvbilcbiAgICAgICAgLnNldFNlY3Rpb24oc2VjdGlvbilcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMuZXhlY3V0ZUFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlcykpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLG1CQUFrQztBQUNsQyxvQ0FBcUM7QUFnRDlCLE1BQWUsbUNBQW1DLG1EQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU01RSxJQUFjLG1CQUF1QztBQUNuRCxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFB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
@@ -0,0 +1,178 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Command handler for abstract file commands with file/files menu integration.
5
+ */
6
+ import type { IconName, TAbstractFile, WorkspaceLeaf } from 'obsidian';
7
+ import type { CommandHandlerParams, CommandHandlerRegistrationContext } from './command-handler.cjs';
8
+ import { GlobalCommandHandler } from './global-command-handler.cjs';
9
+ /**
10
+ * Parameters for creating an abstract file command handler.
11
+ */
12
+ export interface AbstractFileCommandHandlerParams extends CommandHandlerParams {
13
+ /**
14
+ * The item name to use in the single-file menu.
15
+ */
16
+ readonly fileMenuItemName?: string | undefined;
17
+ /**
18
+ * The section to use in the single-file menu.
19
+ */
20
+ readonly fileMenuSection?: string | undefined;
21
+ /**
22
+ * The icon to use in the single-file menu submenu.
23
+ */
24
+ readonly fileMenuSubmenuIcon?: IconName | undefined;
25
+ /**
26
+ * The item name to use in the multi-file menu.
27
+ */
28
+ readonly filesMenuItemName?: string | undefined;
29
+ /**
30
+ * The section to use in the multi-file menu.
31
+ */
32
+ readonly filesMenuSection?: string | undefined;
33
+ /**
34
+ * The icon to use in the multi-file menu submenu.
35
+ */
36
+ readonly filesMenuSubmenuIcon?: IconName | undefined;
37
+ /**
38
+ * Whether to add the command to a submenu.
39
+ */
40
+ readonly shouldAddCommandToSubmenu?: boolean | undefined;
41
+ }
42
+ /**
43
+ * Command handler for abstract file commands.
44
+ *
45
+ * Handles both single-file and multi-file context menus.
46
+ * Subclasses override {@link canExecuteAbstractFile} and {@link executeAbstractFile}.
47
+ */
48
+ export declare abstract class AbstractFileCommandHandler extends GlobalCommandHandler {
49
+ /**
50
+ * Gets the item name to use in the single-file menu.
51
+ *
52
+ * @returns The item name, or `undefined` to use the command name.
53
+ */
54
+ protected get fileMenuItemName(): string | undefined;
55
+ /**
56
+ * Gets the section to use in the single-file menu.
57
+ *
58
+ * @returns The section name, or `undefined` to use the plugin name.
59
+ */
60
+ protected get fileMenuSection(): string | undefined;
61
+ /**
62
+ * Gets the icon to use in the single-file menu submenu.
63
+ *
64
+ * @returns The icon, or `undefined` for no icon.
65
+ */
66
+ protected get fileMenuSubmenuIcon(): IconName | undefined;
67
+ /**
68
+ * Gets the item name to use in the multi-file menu.
69
+ *
70
+ * @returns The item name, or `undefined` to fall back to single-file item name.
71
+ */
72
+ protected get filesMenuItemName(): string | undefined;
73
+ /**
74
+ * Gets the section to use in the multi-file menu.
75
+ *
76
+ * @returns The section name, or `undefined` to fall back to single-file section.
77
+ */
78
+ protected get filesMenuSection(): string | undefined;
79
+ /**
80
+ * Gets the icon to use in the multi-file menu submenu.
81
+ *
82
+ * @returns The icon, or `undefined` to fall back to single-file submenu icon.
83
+ */
84
+ protected get filesMenuSubmenuIcon(): IconName | undefined;
85
+ /**
86
+ * Gets whether to add the command to a submenu.
87
+ *
88
+ * @returns Whether to add to a submenu.
89
+ */
90
+ protected get shouldAddCommandToSubmenu(): boolean | undefined;
91
+ private readonly _fileMenuItemName?;
92
+ private readonly _fileMenuSection?;
93
+ private readonly _fileMenuSubmenuIcon?;
94
+ private readonly _filesMenuItemName?;
95
+ private readonly _filesMenuSection?;
96
+ private readonly _filesMenuSubmenuIcon?;
97
+ private readonly _shouldAddCommandToSubmenu?;
98
+ private activeFileProvider?;
99
+ /**
100
+ * Creates a new abstract file command handler.
101
+ *
102
+ * @param params - The parameters for the abstract file command handler.
103
+ */
104
+ constructor(params: AbstractFileCommandHandlerParams);
105
+ /**
106
+ * Registers file-menu and files-menu event handlers.
107
+ *
108
+ * @param context - The registration context.
109
+ */
110
+ onRegistered(context: CommandHandlerRegistrationContext): Promise<void>;
111
+ /**
112
+ * Checks whether the command can execute from the command palette.
113
+ * Uses the active file as the target.
114
+ *
115
+ * @returns Whether the command can execute.
116
+ */
117
+ protected canExecute(): boolean;
118
+ /**
119
+ * Checks whether the command can execute for a single abstract file.
120
+ *
121
+ * @param _abstractFile - The file or folder.
122
+ * @returns Whether the command can execute.
123
+ */
124
+ protected canExecuteAbstractFile(_abstractFile: TAbstractFile): boolean;
125
+ /**
126
+ * Checks whether the command can execute for multiple abstract files.
127
+ * Default implementation checks each file individually.
128
+ *
129
+ * @param abstractFiles - The files or folders.
130
+ * @returns Whether the command can execute.
131
+ */
132
+ protected canExecuteAbstractFiles(abstractFiles: TAbstractFile[]): boolean;
133
+ /**
134
+ * Executes the command from the command palette using the active file.
135
+ */
136
+ protected execute(): Promise<void>;
137
+ /**
138
+ * Executes the command for a single abstract file.
139
+ *
140
+ * @param abstractFile - The file or folder.
141
+ */
142
+ protected abstract executeAbstractFile(abstractFile: TAbstractFile): Promise<void>;
143
+ /**
144
+ * Executes the command for multiple abstract files.
145
+ * Default implementation executes sequentially.
146
+ *
147
+ * @param abstractFiles - The files or folders.
148
+ */
149
+ protected executeAbstractFiles(abstractFiles: TAbstractFile[]): Promise<void>;
150
+ /**
151
+ * Checks whether the command should appear in the single-file context menu.
152
+ *
153
+ * @param _abstractFile - The file or folder.
154
+ * @param _source - The source of the event.
155
+ * @param _leaf - The workspace leaf, if available.
156
+ * @returns Whether to add to the file menu.
157
+ */
158
+ protected shouldAddToAbstractFileMenu(_abstractFile: TAbstractFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
159
+ /**
160
+ * Checks whether the command should appear in the multi-file context menu.
161
+ * Default implementation checks each file individually.
162
+ *
163
+ * @param abstractFiles - The files or folders.
164
+ * @param source - The source of the event.
165
+ * @param leaf - The workspace leaf, if available.
166
+ * @returns Whether to add to the files menu.
167
+ */
168
+ protected shouldAddToAbstractFilesMenu(abstractFiles: TAbstractFile[], source: string, leaf?: WorkspaceLeaf): boolean;
169
+ /**
170
+ * Checks whether the command should appear in the command palette.
171
+ *
172
+ * @returns Whether to add to the command palette.
173
+ */
174
+ protected shouldAddToCommandPalette(): boolean;
175
+ private getActiveFile;
176
+ private handleAbstractFileMenu;
177
+ private handleAbstractFilesMenu;
178
+ }
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,17 +99,16 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
102
106
  })();
103
107
 
104
108
  "use strict";
105
- var __create = Object.create;
106
109
  var __defProp = Object.defineProperty;
107
110
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
108
111
  var __getOwnPropNames = Object.getOwnPropertyNames;
109
- var __getProtoOf = Object.getPrototypeOf;
110
112
  var __hasOwnProp = Object.prototype.hasOwnProperty;
111
113
  var __export = (target, all) => {
112
114
  for (var name in all)
@@ -120,38 +122,33 @@ var __copyProps = (to, from, except, desc) => {
120
122
  }
121
123
  return to;
122
124
  };
123
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
124
- // If the importer is in node compatibility mode or this is not an ESM
125
- // file that has been converted to a CommonJS file using a Babel-
126
- // compatible transform (i.e. "__esModule" has not been set), then set
127
- // "default" to the CommonJS "module.exports" for node compatibility.
128
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
129
- mod
130
- ));
131
125
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
132
- var commands_exports = {};
133
- __export(commands_exports, {
134
- abstract_file_command_base: () => abstract_file_command_base,
135
- command_base: () => command_base,
136
- editor_command_base: () => editor_command_base,
137
- file_command_base: () => file_command_base,
138
- folder_command_base: () => folder_command_base,
139
- non_editor_command_base: () => non_editor_command_base
126
+ var app_active_file_provider_exports = {};
127
+ __export(app_active_file_provider_exports, {
128
+ AppActiveFileProvider: () => AppActiveFileProvider
140
129
  });
141
- module.exports = __toCommonJS(commands_exports);
142
- var abstract_file_command_base = __toESM(__extractDefault(require('./abstract-file-command-base.cjs')), 1);
143
- var command_base = __toESM(__extractDefault(require('./command-base.cjs')), 1);
144
- var editor_command_base = __toESM(__extractDefault(require('./editor-command-base.cjs')), 1);
145
- var file_command_base = __toESM(__extractDefault(require('./file-command-base.cjs')), 1);
146
- var folder_command_base = __toESM(__extractDefault(require('./folder-command-base.cjs')), 1);
147
- var non_editor_command_base = __toESM(__extractDefault(require('./non-editor-command-base.cjs')), 1);
130
+ module.exports = __toCommonJS(app_active_file_provider_exports);
131
+ class AppActiveFileProvider {
132
+ /**
133
+ * Creates a new app-backed active file provider.
134
+ *
135
+ * @param app - The Obsidian app instance.
136
+ */
137
+ constructor(app) {
138
+ this.app = app;
139
+ }
140
+ app;
141
+ /**
142
+ * Gets the currently active file from the workspace.
143
+ *
144
+ * @returns The active file, or `null` if no file is active.
145
+ */
146
+ getActiveFile() {
147
+ return this.app.workspace.getActiveFile();
148
+ }
149
+ }
148
150
  // Annotate the CommonJS export names for ESM import in node:
149
151
  0 && (module.exports = {
150
- abstract_file_command_base,
151
- command_base,
152
- editor_command_base,
153
- file_command_base,
154
- folder_command_base,
155
- non_editor_command_base
152
+ AppActiveFileProvider
156
153
  });
157
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmRzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgYWJzdHJhY3RfZmlsZV9jb21tYW5kX2Jhc2UgZnJvbSAnLi9hYnN0cmFjdC1maWxlLWNvbW1hbmQtYmFzZS50cyc7XG5leHBvcnQgKiBhcyBjb21tYW5kX2Jhc2UgZnJvbSAnLi9jb21tYW5kLWJhc2UudHMnO1xuZXhwb3J0ICogYXMgZWRpdG9yX2NvbW1hbmRfYmFzZSBmcm9tICcuL2VkaXRvci1jb21tYW5kLWJhc2UudHMnO1xuZXhwb3J0ICogYXMgZmlsZV9jb21tYW5kX2Jhc2UgZnJvbSAnLi9maWxlLWNvbW1hbmQtYmFzZS50cyc7XG5leHBvcnQgKiBhcyBmb2xkZXJfY29tbWFuZF9iYXNlIGZyb20gJy4vZm9sZGVyLWNvbW1hbmQtYmFzZS50cyc7XG5leHBvcnQgKiBhcyBub25fZWRpdG9yX2NvbW1hbmRfYmFzZSBmcm9tICcuL25vbi1lZGl0b3ItY29tbWFuZC1iYXNlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxpQ0FBNEM7QUFDNUMsbUJBQThCO0FBQzlCLDBCQUFxQztBQUNyQyx3QkFBbUM7QUFDbkMsMEJBQXFDO0FBQ3JDLDhCQUF5QzsiLAogICJuYW1lcyI6IFtdCn0K
154
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbW1hbmQtaGFuZGxlcnMvYXBwLWFjdGl2ZS1maWxlLXByb3ZpZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXBwLWJhY2tlZCBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgQWN0aXZlRmlsZVByb3ZpZGVyfS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUZpbGVQcm92aWRlciB9IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuLyoqXG4gKiB7QGxpbmsgQWN0aXZlRmlsZVByb3ZpZGVyfSBiYWNrZWQgYnkgT2JzaWRpYW4ncyB7QGxpbmsgQXBwfS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcEFjdGl2ZUZpbGVQcm92aWRlciBpbXBsZW1lbnRzIEFjdGl2ZUZpbGVQcm92aWRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFwcC1iYWNrZWQgYWN0aXZlIGZpbGUgcHJvdmlkZXIuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHApIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgZmlsZSBmcm9tIHRoZSB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY3RpdmUgZmlsZSwgb3IgYG51bGxgIGlmIG5vIGZpbGUgaXMgYWN0aXZlLlxuICAgKi9cbiAgcHVibGljIGdldEFjdGl2ZUZpbGUoKTogbnVsbCB8IFRGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JPLE1BQU0sc0JBQW9EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhELFlBQTZCLEtBQVU7QUFBVjtBQUFBLEVBQVc7QUFBQSxFQUFYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTzdCLGdCQUE4QjtBQUNuQyxXQUFPLEtBQUssSUFBSSxVQUFVLGNBQWM7QUFBQSxFQUMxQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=