@mnaoumov/obsidian-lib 10.12.0 → 11.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 (399) hide show
  1. package/components/worker-component/package.json +6 -0
  2. package/components/worker-pool-component/package.json +6 -0
  3. package/dist/lib/cjs/__merged.cjs +409 -292
  4. package/dist/lib/cjs/__merged.d.cts +17 -8
  5. package/dist/lib/cjs/anchored-suggest.cjs +1 -1
  6. package/dist/lib/cjs/app.cjs +2 -2
  7. package/dist/lib/cjs/async-with-notice.cjs +4 -4
  8. package/dist/lib/cjs/attachment-path.cjs +9 -9
  9. package/dist/lib/cjs/attachment-path.d.cts +3 -3
  10. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
  11. package/dist/lib/cjs/backlink-index.cjs +5 -5
  12. package/dist/lib/cjs/backlink.cjs +7 -7
  13. package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
  14. package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
  15. package/dist/lib/cjs/bug-report.cjs +3 -3
  16. package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
  17. package/dist/lib/cjs/bulk-operation.cjs +2 -2
  18. package/dist/lib/cjs/callout.cjs +6 -6
  19. package/dist/lib/cjs/canvas.cjs +11 -9
  20. package/dist/lib/cjs/canvas.d.cts +13 -0
  21. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
  22. package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
  23. package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
  24. package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
  25. package/dist/lib/cjs/codemirror/index.cjs +7 -7
  26. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
  27. package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
  28. package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
  29. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
  30. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
  31. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
  32. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
  33. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
  34. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
  35. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
  36. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
  37. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
  38. package/dist/lib/cjs/command-handlers/index.cjs +15 -15
  39. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +6 -6
  40. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
  41. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
  42. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
  43. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
  44. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
  45. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
  46. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
  47. package/dist/lib/cjs/community-plugins.cjs +3 -3
  48. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
  49. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  50. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +3 -3
  51. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  52. package/dist/lib/cjs/components/async-events-component.cjs +1 -1
  53. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
  54. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
  55. package/dist/lib/cjs/components/component-ex.cjs +21 -11
  56. package/dist/lib/cjs/components/component-ex.d.cts +11 -0
  57. package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
  58. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
  59. package/dist/lib/cjs/components/disposable-component.cjs +2 -2
  60. package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -1
  61. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +8 -8
  62. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
  63. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
  64. package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
  65. package/dist/lib/cjs/components/index.cjs +46 -40
  66. package/dist/lib/cjs/components/index.d.cts +2 -0
  67. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
  68. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
  69. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  70. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  71. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  72. package/dist/lib/cjs/components/plugin-gate-component.cjs +68 -28
  73. package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
  74. package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
  75. package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
  76. package/dist/lib/cjs/components/plugin-settings-component.cjs +113 -17
  77. package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
  78. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
  79. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
  80. package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
  81. package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
  82. package/dist/lib/cjs/components/registry-component.cjs +2 -2
  83. package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
  84. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
  85. package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
  86. package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
  87. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  88. package/dist/lib/cjs/components/shared-component-pool-component.cjs +6 -6
  89. package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
  90. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
  91. package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
  92. package/dist/lib/cjs/components/worker-component.cjs +363 -0
  93. package/dist/lib/cjs/components/worker-component.d.cts +156 -0
  94. package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
  95. package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
  96. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +7 -7
  97. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  98. package/dist/lib/cjs/constructors/index.cjs +1 -1
  99. package/dist/lib/cjs/data-handler.cjs +111 -4
  100. package/dist/lib/cjs/data-handler.d.cts +92 -1
  101. package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
  102. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
  103. package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
  104. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  105. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
  106. package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
  107. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
  108. package/dist/lib/cjs/data-stores/index.cjs +6 -6
  109. package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
  110. package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
  111. package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
  112. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
  113. package/dist/lib/cjs/dataview-link.cjs +2 -2
  114. package/dist/lib/cjs/dataview.cjs +27 -7
  115. package/dist/lib/cjs/dataview.d.cts +14 -0
  116. package/dist/lib/cjs/debug.cjs +3 -3
  117. package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
  118. package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
  119. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
  120. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
  121. package/dist/lib/cjs/desktop-git-runner.cjs +2 -2
  122. package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
  123. package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
  124. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
  125. package/dist/lib/cjs/disposable.cjs +150 -0
  126. package/dist/lib/cjs/disposable.d.cts +39 -0
  127. package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
  128. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
  129. package/dist/lib/cjs/editor-suggest.cjs +1 -1
  130. package/dist/lib/cjs/editor.cjs +6 -6
  131. package/dist/lib/cjs/events.cjs +2 -2
  132. package/dist/lib/cjs/extensions-registrar.cjs +1 -1
  133. package/dist/lib/cjs/feature-request.cjs +1 -1
  134. package/dist/lib/cjs/file-change.cjs +10 -10
  135. package/dist/lib/cjs/file-explorer.cjs +2 -2
  136. package/dist/lib/cjs/file-manager.cjs +5 -5
  137. package/dist/lib/cjs/file-system.cjs +10 -10
  138. package/dist/lib/cjs/folder-note.cjs +4 -4
  139. package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
  140. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
  141. package/dist/lib/cjs/frontmatter.cjs +5 -5
  142. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  143. package/dist/lib/cjs/hotkey.cjs +1 -1
  144. package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
  145. package/dist/lib/cjs/html-element.cjs +2 -2
  146. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
  147. package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
  148. package/dist/lib/cjs/i18n/i18n.cjs +7 -7
  149. package/dist/lib/cjs/i18n/index.cjs +4 -4
  150. package/dist/lib/cjs/i18n/locales/en.cjs +5 -1
  151. package/dist/lib/cjs/i18n/locales/en.d.cts +4 -0
  152. package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
  153. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
  154. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -0
  155. package/dist/lib/cjs/index.cjs +145 -127
  156. package/dist/lib/cjs/index.d.cts +6 -0
  157. package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
  158. package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
  159. package/dist/lib/cjs/library-styles.cjs +3 -3
  160. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
  161. package/dist/lib/cjs/link.cjs +76 -56
  162. package/dist/lib/cjs/link.d.cts +20 -14
  163. package/dist/lib/cjs/logger.cjs +4 -4
  164. package/dist/lib/cjs/loop.cjs +10 -16
  165. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
  166. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
  167. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
  168. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
  169. package/dist/lib/cjs/markdown-view.cjs +3 -3
  170. package/dist/lib/cjs/markdown.cjs +12 -12
  171. package/dist/lib/cjs/metadata-cache.cjs +23 -23
  172. package/dist/lib/cjs/metadata-cache.d.cts +5 -4
  173. package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
  174. package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
  175. package/dist/lib/cjs/mobile-app-info.cjs +1 -1
  176. package/dist/lib/cjs/modals/alert.cjs +4 -4
  177. package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
  178. package/dist/lib/cjs/modals/confirm.cjs +4 -4
  179. package/dist/lib/cjs/modals/copy-text-manually.cjs +4 -4
  180. package/dist/lib/cjs/modals/index.cjs +12 -12
  181. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  182. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
  183. package/dist/lib/cjs/modals/modal.cjs +3 -3
  184. package/dist/lib/cjs/modals/prompt.cjs +10 -10
  185. package/dist/lib/cjs/modals/prompt.d.cts +1 -1
  186. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +5 -5
  187. package/dist/lib/cjs/modals/select-item.cjs +6 -6
  188. package/dist/lib/cjs/modals/select-option.cjs +3 -3
  189. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  190. package/dist/lib/cjs/note-priority.cjs +2 -2
  191. package/dist/lib/cjs/notebook-navigator.cjs +12 -2
  192. package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
  193. package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
  194. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
  195. package/dist/lib/cjs/obsidian-settings.cjs +1 -1
  196. package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
  197. package/dist/lib/cjs/parse-link.cjs +14 -14
  198. package/dist/lib/cjs/path-compatibility.cjs +368 -0
  199. package/dist/lib/cjs/path-compatibility.d.cts +263 -0
  200. package/dist/lib/cjs/path-settings.cjs +3 -3
  201. package/dist/lib/cjs/pdf.cjs +2 -2
  202. package/dist/lib/cjs/plugin/index.cjs +16 -13
  203. package/dist/lib/cjs/plugin/index.d.cts +1 -0
  204. package/dist/lib/cjs/plugin/plugin-api.cjs +8 -8
  205. package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
  206. package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
  207. package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
  208. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
  209. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
  210. package/dist/lib/cjs/plugin/plugin-install-state.cjs +4 -4
  211. package/dist/lib/cjs/plugin/plugin-instance.cjs +14 -12
  212. package/dist/lib/cjs/plugin/plugin-instance.d.cts +7 -0
  213. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
  214. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
  215. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
  216. package/dist/lib/cjs/plugin/plugin.cjs +118 -34
  217. package/dist/lib/cjs/plugin/plugin.d.cts +28 -5
  218. package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
  219. package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
  220. package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
  221. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
  222. package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
  223. package/dist/lib/cjs/popovers/index.cjs +3 -3
  224. package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
  225. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  226. package/dist/lib/cjs/queue.cjs +8 -8
  227. package/dist/lib/cjs/react/app-context.cjs +3 -3
  228. package/dist/lib/cjs/react/index.cjs +1 -1
  229. package/dist/lib/cjs/reference-definition.cjs +1 -1
  230. package/dist/lib/cjs/reference.cjs +3 -3
  231. package/dist/lib/cjs/release-asset.cjs +5 -5
  232. package/dist/lib/cjs/rendered-markdown.cjs +4 -4
  233. package/dist/lib/cjs/request-url.cjs +4 -4
  234. package/dist/lib/cjs/resource-lock.cjs +46 -42
  235. package/dist/lib/cjs/resource-lock.d.cts +8 -7
  236. package/dist/lib/cjs/resource-url.cjs +3 -3
  237. package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
  238. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
  239. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
  240. package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
  241. package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
  242. package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
  243. package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
  244. package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
  245. package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
  246. package/dist/lib/cjs/setting-components/index.cjs +30 -30
  247. package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
  248. package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
  249. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
  250. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
  251. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
  252. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
  253. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
  254. package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
  255. package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
  256. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
  257. package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
  258. package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
  259. package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
  260. package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
  261. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
  262. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
  263. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
  264. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
  265. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
  266. package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
  267. package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
  268. package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
  269. package/dist/lib/cjs/setting-ex.cjs +26 -26
  270. package/dist/lib/cjs/setting-group-ex.cjs +2 -2
  271. package/dist/lib/cjs/settings-recovery.cjs +217 -0
  272. package/dist/lib/cjs/settings-recovery.d.cts +178 -0
  273. package/dist/lib/cjs/settings-tabs.cjs +5 -5
  274. package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
  275. package/dist/lib/cjs/templater.cjs +14 -4
  276. package/dist/lib/cjs/templater.d.cts +6 -0
  277. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
  278. package/dist/lib/cjs/transformers/index.cjs +1 -1
  279. package/dist/lib/cjs/trusted-input.cjs +1 -1
  280. package/dist/lib/cjs/validation.cjs +4 -4
  281. package/dist/lib/cjs/vault-delete.cjs +6 -6
  282. package/dist/lib/cjs/vault-transaction.cjs +5 -5
  283. package/dist/lib/cjs/vault.cjs +12 -12
  284. package/dist/lib/cjs/view-registrar.cjs +1 -1
  285. package/dist/lib/cjs/virtual-file.cjs +16 -14
  286. package/dist/lib/cjs/virtual-file.d.cts +2 -1
  287. package/dist/lib/cjs/wasm.cjs +119 -0
  288. package/dist/lib/cjs/wasm.d.cts +54 -0
  289. package/dist/lib/cjs/worker-protocol.cjs +209 -0
  290. package/dist/lib/cjs/worker-protocol.d.cts +282 -0
  291. package/dist/lib/cjs/workspace.cjs +1 -1
  292. package/dist/lib/esm/__merged.d.mts +17 -8
  293. package/dist/lib/esm/__merged.mjs +133 -3
  294. package/dist/lib/esm/app.mjs +2 -2
  295. package/dist/lib/esm/attachment-path.d.mts +3 -3
  296. package/dist/lib/esm/attachment-path.mjs +2 -2
  297. package/dist/lib/esm/backlink-index.mjs +2 -2
  298. package/dist/lib/esm/canvas.d.mts +13 -0
  299. package/dist/lib/esm/canvas.mjs +6 -5
  300. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
  301. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
  302. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
  303. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
  304. package/dist/lib/esm/components/component-ex.d.mts +11 -0
  305. package/dist/lib/esm/components/component-ex.mjs +19 -6
  306. package/dist/lib/esm/components/disposable-component.mjs +1 -1
  307. package/dist/lib/esm/components/index.d.mts +2 -0
  308. package/dist/lib/esm/components/index.mjs +5 -1
  309. package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
  310. package/dist/lib/esm/components/plugin-gate-component.mjs +57 -14
  311. package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
  312. package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
  313. package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
  314. package/dist/lib/esm/components/plugin-settings-component.mjs +99 -3
  315. package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
  316. package/dist/lib/esm/components/worker-component.d.mts +156 -0
  317. package/dist/lib/esm/components/worker-component.mjs +279 -0
  318. package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
  319. package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
  320. package/dist/lib/esm/components/workspace-layout-state-component.mjs +1 -1
  321. package/dist/lib/esm/data-handler.d.mts +92 -1
  322. package/dist/lib/esm/data-handler.mjs +112 -3
  323. package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
  324. package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
  325. package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
  326. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
  327. package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
  328. package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
  329. package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
  330. package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
  331. package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
  332. package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
  333. package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
  334. package/dist/lib/esm/dataview.d.mts +14 -0
  335. package/dist/lib/esm/dataview.mjs +19 -1
  336. package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
  337. package/dist/lib/esm/demo-vault-helper.mjs +29 -1
  338. package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
  339. package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
  340. package/dist/lib/esm/disposable.d.mts +39 -0
  341. package/dist/lib/esm/disposable.mjs +64 -0
  342. package/dist/lib/esm/file-system.mjs +2 -2
  343. package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
  344. package/dist/lib/esm/generated-during-build.mjs +1 -1
  345. package/dist/lib/esm/i18n/locales/en.d.mts +4 -0
  346. package/dist/lib/esm/i18n/locales/en.mjs +5 -1
  347. package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -0
  348. package/dist/lib/esm/index.d.mts +6 -0
  349. package/dist/lib/esm/index.mjs +13 -1
  350. package/dist/lib/esm/link.d.mts +20 -14
  351. package/dist/lib/esm/link.mjs +57 -38
  352. package/dist/lib/esm/loop.mjs +2 -8
  353. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
  354. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
  355. package/dist/lib/esm/metadata-cache.d.mts +5 -4
  356. package/dist/lib/esm/metadata-cache.mjs +6 -6
  357. package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
  358. package/dist/lib/esm/misplaced-attachment.mjs +212 -0
  359. package/dist/lib/esm/modals/prompt.d.mts +1 -1
  360. package/dist/lib/esm/modals/prompt.mjs +1 -1
  361. package/dist/lib/esm/notebook-navigator.d.mts +6 -0
  362. package/dist/lib/esm/notebook-navigator.mjs +11 -2
  363. package/dist/lib/esm/parse-link.mjs +4 -4
  364. package/dist/lib/esm/path-compatibility.d.mts +263 -0
  365. package/dist/lib/esm/path-compatibility.mjs +277 -0
  366. package/dist/lib/esm/plugin/index.d.mts +1 -0
  367. package/dist/lib/esm/plugin/index.mjs +4 -2
  368. package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
  369. package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
  370. package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
  371. package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
  372. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  373. package/dist/lib/esm/plugin/plugin-instance.d.mts +7 -0
  374. package/dist/lib/esm/plugin/plugin-instance.mjs +2 -1
  375. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
  376. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
  377. package/dist/lib/esm/plugin/plugin.d.mts +28 -5
  378. package/dist/lib/esm/plugin/plugin.mjs +103 -9
  379. package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
  380. package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
  381. package/dist/lib/esm/release-asset.mjs +1 -1
  382. package/dist/lib/esm/resource-lock.d.mts +8 -7
  383. package/dist/lib/esm/resource-lock.mjs +31 -26
  384. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
  385. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
  386. package/dist/lib/esm/settings-recovery.d.mts +178 -0
  387. package/dist/lib/esm/settings-recovery.mjs +125 -0
  388. package/dist/lib/esm/settings-tabs.mjs +2 -2
  389. package/dist/lib/esm/templater.d.mts +6 -0
  390. package/dist/lib/esm/templater.mjs +11 -2
  391. package/dist/lib/esm/vault.mjs +1 -1
  392. package/dist/lib/esm/virtual-file.d.mts +2 -1
  393. package/dist/lib/esm/virtual-file.mjs +7 -5
  394. package/dist/lib/esm/wasm.d.mts +54 -0
  395. package/dist/lib/esm/wasm.mjs +30 -0
  396. package/dist/lib/esm/worker-protocol.d.mts +282 -0
  397. package/dist/lib/esm/worker-protocol.mjs +113 -0
  398. package/package.json +9 -8
  399. package/plugin/third-party-plugin/package.json +6 -0
@@ -303,9 +303,9 @@ export interface EditBacklinksParams extends EditBacklinksOptions {
303
303
  */
304
304
  readonly pathOrFile: PathOrFile;
305
305
  /**
306
- * The function that converts each reference.
306
+ * The function that converts each reference: it returns the new link text, or `null` (or nothing) to leave the link unchanged.
307
307
  */
308
- readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<string>>;
308
+ readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<null | string>>;
309
309
  }
310
310
  /**
311
311
  * Options for {@link editBacklinksSnapshot}.
@@ -327,9 +327,9 @@ export interface EditBacklinksSnapshotParams<TPayload> extends EditBacklinksSnap
327
327
  */
328
328
  readonly linkUpdateProgressReporter?: LinkUpdateProgressReporter;
329
329
  /**
330
- * The function that converts each reference.
330
+ * The function that converts each reference: it returns the new link text, or `null` (or nothing) to leave the link unchanged.
331
331
  */
332
- readonly referenceConverter: (params: BacklinkConversionParams<TPayload>) => Promisable<MaybeReturn<string>>;
332
+ readonly referenceConverter: (params: BacklinkConversionParams<TPayload>) => Promisable<MaybeReturn<null | string>>;
333
333
  /**
334
334
  * Computes the identity key of a link.
335
335
  *
@@ -389,9 +389,9 @@ export interface EditReferencesInContentParams {
389
389
  */
390
390
  readonly offsetRange?: OffsetRange;
391
391
  /**
392
- * The function that converts each reference.
392
+ * The function that converts each reference: it returns the new link text, or `null` (or nothing) to leave the link unchanged.
393
393
  */
394
- readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<string>>;
394
+ readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<null | string>>;
395
395
  /**
396
396
  * The function that returns the new destination of each reference-style link definition
397
397
  * (`[id]: destination "title"`). Obsidian reports those in `CachedMetadata.referenceLinks`, not among the
@@ -409,7 +409,7 @@ export interface EditReferencesInContentParams {
409
409
  *
410
410
  * @default `undefined`, which leaves every definition unchanged
411
411
  */
412
- readonly referenceDefinitionConverter?: (definition: ReferenceLinkCache) => Promisable<MaybeReturn<string>>;
412
+ readonly referenceDefinitionConverter?: (definition: ReferenceLinkCache) => Promisable<MaybeReturn<null | string>>;
413
413
  /**
414
414
  * Whether to also edit external links parsed from the note body. When `true`, the converter also
415
415
  * receives references for external links.
@@ -491,9 +491,9 @@ export interface EditReferencesParams extends EditReferencesOptions {
491
491
  */
492
492
  readonly pathOrFile: PathOrFile;
493
493
  /**
494
- * The function that converts each reference.
494
+ * The function that converts each reference: it returns the new link text, or `null` (or nothing) to leave the link unchanged.
495
495
  */
496
- readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<string>>;
496
+ readonly referenceConverter: (reference: Reference) => Promisable<MaybeReturn<null | string>>;
497
497
  /**
498
498
  * The function that returns the new destination of each reference-style link definition
499
499
  * (`[id]: destination "title"`). Obsidian reports those in `CachedMetadata.referenceLinks`, not among the
@@ -511,7 +511,7 @@ export interface EditReferencesParams extends EditReferencesOptions {
511
511
  *
512
512
  * @default `undefined`, which leaves every definition unchanged
513
513
  */
514
- readonly referenceDefinitionConverter?: (definition: ReferenceLinkCache) => Promisable<MaybeReturn<string>>;
514
+ readonly referenceDefinitionConverter?: (definition: ReferenceLinkCache) => Promisable<MaybeReturn<null | string>>;
515
515
  /**
516
516
  * Whether to also edit external links parsed from the note body. When `true`, the converter also
517
517
  * receives references for external links.
@@ -1086,7 +1086,7 @@ export interface UpdateReferencesInFileParams extends ProcessOptions {
1086
1086
  */
1087
1087
  readonly linkStyle?: LinkStyle;
1088
1088
  /**
1089
- * Decides the style of one link, overriding {@link linkStyle} for it. Returning `undefined` keeps
1089
+ * Decides the style of one link, overriding {@link linkStyle} for it. Returning `null` keeps
1090
1090
  * {@link linkStyle}.
1091
1091
  *
1092
1092
  * Use it when one style for the whole file is wrong for some of its links. A caller forcing
@@ -1095,7 +1095,7 @@ export interface UpdateReferencesInFileParams extends ProcessOptions {
1095
1095
  *
1096
1096
  * @default `undefined`
1097
1097
  */
1098
- readonly linkStyleProvider?: (reference: Reference) => LinkStyle | undefined;
1098
+ readonly linkStyleProvider?: (reference: Reference) => LinkStyle | null;
1099
1099
  /**
1100
1100
  * A file to update the links in.
1101
1101
  */
@@ -1250,7 +1250,7 @@ interface UpdateReferencesInContentParams {
1250
1250
  */
1251
1251
  readonly linkStyle?: LinkStyle;
1252
1252
  /**
1253
- * Decides the style of one link, overriding {@link linkStyle} for it. Returning `undefined` keeps
1253
+ * Decides the style of one link, overriding {@link linkStyle} for it. Returning `null` keeps
1254
1254
  * {@link linkStyle}.
1255
1255
  *
1256
1256
  * Use it when one style for the whole content is wrong for some of its links. A caller forcing
@@ -1259,7 +1259,7 @@ interface UpdateReferencesInContentParams {
1259
1259
  *
1260
1260
  * @default `undefined`
1261
1261
  */
1262
- readonly linkStyleProvider?: (reference: Reference) => LinkStyle | undefined;
1262
+ readonly linkStyleProvider?: (reference: Reference) => LinkStyle | null;
1263
1263
  /**
1264
1264
  * A new source path or file.
1265
1265
  */
@@ -1415,6 +1415,12 @@ export declare function editBacklinksSnapshot<TPayload>(params: EditBacklinksSna
1415
1415
  /**
1416
1416
  * Edits the links for a file or path.
1417
1417
  *
1418
+ * A canvas (`.canvas`) holder is covered too. Obsidian's metadata cache holds an empty record for a canvas, so its
1419
+ * file-node and text-node links are read from the canvas content being rewritten (as `getCanvasReferences` reads them),
1420
+ * and the converter receives them as {@link CanvasReference}s. Options that only describe a note (external links,
1421
+ * links in headings, reference-style definitions) do not apply to a canvas, and a canvas reference carries no
1422
+ * position, so an `offsetRange` excludes every one of them.
1423
+ *
1418
1424
  * @param params - The parameters for editing the links.
1419
1425
  * @returns A {@link Promise} that resolves when the links have been edited.
1420
1426
  */
@@ -117,10 +117,10 @@ __export(logger_exports, {
117
117
  invokeAsyncAndLog: () => invokeAsyncAndLog
118
118
  });
119
119
  module.exports = __toCommonJS(logger_exports);
120
- var import_abort_controller = require('@mnaoumov/typescript-lib/abort-controller');
121
- var import_debug = require('@mnaoumov/typescript-lib/debug');
122
- var import_error = require('@mnaoumov/typescript-lib/error');
123
- var import_debug2 = require('./debug.cjs');
120
+ var import_abort_controller = require("@mnaoumov/typescript-lib/abort-controller");
121
+ var import_debug = require("@mnaoumov/typescript-lib/debug");
122
+ var import_error = require("@mnaoumov/typescript-lib/error");
123
+ var import_debug2 = require("./debug.cjs");
124
124
  async function invokeAsyncAndLog(params) {
125
125
  const {
126
126
  $function,
@@ -3,11 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
  (function () {
6
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
7
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
8
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
9
- }
10
-
11
6
  function ensureBrowserProcess() {
12
7
  const browserProcess = {
13
8
  browser: true,
@@ -32,7 +27,6 @@ function ensureBrowserProcess() {
32
27
  existingProcessRecord["browser"] = true;
33
28
  }
34
29
 
35
- ensureDisposeSymbols();
36
30
  ensureBrowserProcess();
37
31
  })();
38
32
  (function patchObsidianRequire() {
@@ -123,14 +117,14 @@ __export(loop_exports, {
123
117
  loop: () => loop
124
118
  });
125
119
  module.exports = __toCommonJS(loop_exports);
126
- var import_abort_controller = require('@mnaoumov/typescript-lib/abort-controller');
127
- var import_async = require('@mnaoumov/typescript-lib/async');
128
- var import_error = require('@mnaoumov/typescript-lib/error');
129
- var import_function = require('@mnaoumov/typescript-lib/function');
130
- var import_bulk_operation_progress = require('./bulk-operation-progress.cjs');
131
- var import_debug = require('./debug.cjs');
132
- var import_html_element = require('./html-element.cjs');
133
- var import_plugin_context = require('./plugin/plugin-context.cjs');
120
+ var import_abort_controller = require("@mnaoumov/typescript-lib/abort-controller");
121
+ var import_async = require("@mnaoumov/typescript-lib/async");
122
+ var import_error = require("@mnaoumov/typescript-lib/error");
123
+ var import_function = require("@mnaoumov/typescript-lib/function");
124
+ var import_bulk_operation_progress = require("./bulk-operation-progress.cjs");
125
+ var import_debug = require("./debug.cjs");
126
+ var import_html_element = require("./html-element.cjs");
127
+ var import_plugin_context = require("./plugin/plugin-context.cjs");
134
128
  async function loop(params) {
135
129
  const DEFAULT_OPTIONS = {
136
130
  abortSignal: (0, import_abort_controller.abortSignalNever)(),
@@ -218,7 +212,7 @@ async function loop(params) {
218
212
  await noticeMinTimeoutPromise;
219
213
  }
220
214
  } finally {
221
- delayedNotice?.[Symbol.dispose]();
215
+ delayedNotice?.dispose();
222
216
  }
223
217
  function buildProgressBarFragment() {
224
218
  const fragment = createFragment();
@@ -231,4 +225,4 @@ async function loop(params) {
231
225
  0 && (module.exports = {
232
226
  loop
233
227
  });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb29wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICBDdXN0b21TdGFja1RyYWNlRXJyb3IsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHJlcG9ydEJ1bGtPcGVyYXRpb25Qcm9ncmVzcyB9IGZyb20gJy4vYnVsay1vcGVyYXRpb24tcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHsgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZSB9IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBMb29wUGFyYW1zLmJ1aWxkTm90aWNlTWVzc2FnZX0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBpdGVtOiBUO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlcmF0aW9uU3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGxvb3B9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGJ1aWxkaW5nIHRoZSBub3RpY2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGROb3RpY2VNZXNzYWdlOiAocGFyYW1zOiBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBmb3IgdGhlIG5vdGljZSBiZWZvcmUgaXQgaXMgc2hvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDBgXG4gICAqL1xuICByZWFkb25seSBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBtaW5pbXVtIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBvbmVudCB0byBzaG93IG5vdGljZXMuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzSXRlbTogKGl0ZW06IFQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogUGFzcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSB0byBtYXJrIHVwIHBhcnQgb2YgdGhlIHRpdGxlLCBzdWNoIGFzIGEgcGx1Z2luIG5hbWUgcmVuZGVyZWQgYXMgY29kZS4gRWFjaFxuICAgKiByZW5kZXIgYXBwZW5kcyBhIGZyZXNoIGNsb25lIG9mIGl0LCBzbyB0aGUgY2FsbGVyJ3MgZnJhZ21lbnQgc3RheXMgaW50YWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb250aW51ZSB0aGUgbG9vcCBvbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd05vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRocmVzaG9sZCBmb3IgdGhlIFVJIHVwZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDEwMGBcbiAgICovXG4gIHJlYWRvbmx5IHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9vcHMgb3ZlciBhIGxpc3Qgb2YgaXRlbXMgYW5kIHByb2Nlc3NlcyBlYWNoIGl0ZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb29wPFQ+KHBhcmFtczogTG9vcFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgYWJvcnRTaWduYWw6IGFib3J0U2lnbmFsTmV2ZXIoKSxcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gYnVpbGROb3RpY2VNZXNzYWdlIGlzIHJlcXVpcmVkIGluIExvb3BQYXJhbXMgYW5kIGFsd2F5cyBvdmVycmlkZGVuIGJ5IHRoZSBzcHJlYWQuICovXG4gICAgYnVpbGROb3RpY2VNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBpdGVtczogW10sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzOiAyMDAwLFxuICAgIHByb2Nlc3NJdGVtOiBub29wLFxuICAgIHByb2dyZXNzQmFyVGl0bGU6ICcnLFxuICAgIHNob3VsZENvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICBzaG91bGRTaG93Tm90aWNlOiB0cnVlLFxuICAgIHNob3VsZFNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM6IDEwMFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ucGFyYW1zXG4gIH07XG5cbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG5cbiAgY29uc3QgaXRlbXMgPSBmdWxsT3B0aW9ucy5pdGVtcztcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcblxuICBjb25zdCBwcm9ncmVzc0JhckVsID0gY3JlYXRlRWwoJ3Byb2dyZXNzJyk7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMocHJvZ3Jlc3NCYXJFbCwgJ2xvb3AnKTtcbiAgcHJvZ3Jlc3NCYXJFbC5tYXggPSBpdGVtcy5sZW5ndGg7XG5cbiAgLy8gVGhlIGNvbnRlbnQgcHJvdmlkZXIgaXMgcmVzb2x2ZWQgb25seSBvbmNlIHRoZSBkZWxheSBlbGFwc2VzLCBzbyBpdCBkb3VibGVzIGFzIHRoZSBub3RpY2Utd2FzLXNob3duIHNpZ25hbC5cbiAgbGV0IGlzTm90aWNlU2hvd24gPSBmYWxzZSBhcyBib29sZWFuO1xuICBsZXQgbGF0ZXN0TWVzc2FnZSA9ICcnO1xuICAvLyBBIGRlbGF5ZWQgbm90aWNlIHN0YXlzIHVudGlsIGl0IGlzIGRpc3Bvc2VkLiBPYnNpZGlhbidzIGRlZmF1bHQgZHVyYXRpb24gd291bGQgaGlkZSBpdCBhIGZldyBzZWNvbmRzIGludG8gYVxuICAvLyBsb25nIHJ1biB3aGlsZSB0aGUgbG9vcCBjYXJyaWVzIG9uLlxuICBjb25zdCBkZWxheWVkTm90aWNlID0gZnVsbE9wdGlvbnMuc2hvdWxkU2hvd05vdGljZVxuICAgID8gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudD8uc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgICAgY29udGVudDogKCkgPT4ge1xuICAgICAgICBpc05vdGljZVNob3duID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZ1bGxPcHRpb25zLnNob3VsZFNob3dQcm9ncmVzc0JhciA/IGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpIDogbGF0ZXN0TWVzc2FnZTtcbiAgICAgIH0sXG4gICAgICBkZWxheUluTWlsbGlzZWNvbmRzOiBmdWxsT3B0aW9ucy5ub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgIH0pID8/IG51bGxcbiAgICA6IG51bGw7XG5cbiAgY29uc3Qgbm90aWNlTWluVGltZW91dFByb21pc2UgPSBzbGVlcChmdWxsT3B0aW9ucy5ub3RpY2VNaW5UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICBsZXQgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgICBjb25zdCBpdGVyYXRpb25TdHJpbmcgPSBgIyAke1N0cmluZyhpdGVyYXRpb25Db3VudCl9IC8gJHtTdHJpbmcoaXRlbXMubGVuZ3RoKX1gO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZ1bGxPcHRpb25zLmJ1aWxkTm90aWNlTWVzc2FnZSh7IGl0ZW0sIGl0ZXJhdGlvblN0cmluZyB9KTtcbiAgICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICAgIGxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBpZiAoaXNOb3RpY2VTaG93bikge1xuICAgICAgICAgIGRlbGF5ZWROb3RpY2U/LnNldENvbnRlbnQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gbGFzdFVJVXBkYXRlVGltZXN0YW1wID4gZnVsbE9wdGlvbnMudWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgICAgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGl0ZW0nLCBpdGVtKTtcbiAgICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICAgIGNhdXNlOiBlcnJvcixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdsb29wIGZhaWxlZCcsXG4gICAgICAgICAgICBzdGFja1RyYWNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgICAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICAgICAgbWVzc2FnZTogQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgICAgc3RhY2tUcmFjZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gICAgICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgICB9XG4gICAgaWYgKGlzTm90aWNlU2hvd24pIHtcbiAgICAgIGF3YWl0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBEaXNwb3NlZCBieSBhbiBleHBsaWNpdCBjYWxsIHJhdGhlciB0aGFuIGEgYHVzaW5nYCBkZWNsYXJhdGlvbjogYHVzaW5nYCBsb29rcyB0aGUgbWV0aG9kIHVwIHVuZGVyIGEgZGlmZmVyZW50XG4gICAgLy8ga2V5IHRoYW4gdGhlIGhhbmRsZSBpcyBidWlsdCB3aXRoIG9uIGFuIGVuZ2luZSBsYWNraW5nIGBTeW1ib2wuZGlzcG9zZWAsIGFuZCBgbG9vcCgpYCBydW5zIG9uIGV2ZXJ5IHBsYXRmb3JtLlxuICAgIGRlbGF5ZWROb3RpY2U/LltTeW1ib2wuZGlzcG9zZV0oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgICBjb25zdCBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50KCk7XG4gICAgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShmcmFnbWVudC5jcmVhdGVEaXYoKSwgZnVsbE9wdGlvbnMucHJvZ3Jlc3NCYXJUaXRsZSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kKHByb2dyZXNzQmFyRWwpO1xuICAgIHJldHVybiBmcmFnbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsOEJBQWlDO0FBQ2pDLG1CQUEyQztBQUMzQyxtQkFLTztBQUNQLHNCQUFxQjtB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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb29wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICBDdXN0b21TdGFja1RyYWNlRXJyb3IsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHJlcG9ydEJ1bGtPcGVyYXRpb25Qcm9ncmVzcyB9IGZyb20gJy4vYnVsay1vcGVyYXRpb24tcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHsgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZSB9IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBMb29wUGFyYW1zLmJ1aWxkTm90aWNlTWVzc2FnZX0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBpdGVtOiBUO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlcmF0aW9uU3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGxvb3B9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGJ1aWxkaW5nIHRoZSBub3RpY2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGROb3RpY2VNZXNzYWdlOiAocGFyYW1zOiBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBmb3IgdGhlIG5vdGljZSBiZWZvcmUgaXQgaXMgc2hvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDBgXG4gICAqL1xuICByZWFkb25seSBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBtaW5pbXVtIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBvbmVudCB0byBzaG93IG5vdGljZXMuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzSXRlbTogKGl0ZW06IFQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogUGFzcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSB0byBtYXJrIHVwIHBhcnQgb2YgdGhlIHRpdGxlLCBzdWNoIGFzIGEgcGx1Z2luIG5hbWUgcmVuZGVyZWQgYXMgY29kZS4gRWFjaFxuICAgKiByZW5kZXIgYXBwZW5kcyBhIGZyZXNoIGNsb25lIG9mIGl0LCBzbyB0aGUgY2FsbGVyJ3MgZnJhZ21lbnQgc3RheXMgaW50YWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb250aW51ZSB0aGUgbG9vcCBvbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd05vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRocmVzaG9sZCBmb3IgdGhlIFVJIHVwZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDEwMGBcbiAgICovXG4gIHJlYWRvbmx5IHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9vcHMgb3ZlciBhIGxpc3Qgb2YgaXRlbXMgYW5kIHByb2Nlc3NlcyBlYWNoIGl0ZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb29wPFQ+KHBhcmFtczogTG9vcFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgYWJvcnRTaWduYWw6IGFib3J0U2lnbmFsTmV2ZXIoKSxcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gYnVpbGROb3RpY2VNZXNzYWdlIGlzIHJlcXVpcmVkIGluIExvb3BQYXJhbXMgYW5kIGFsd2F5cyBvdmVycmlkZGVuIGJ5IHRoZSBzcHJlYWQuICovXG4gICAgYnVpbGROb3RpY2VNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBpdGVtczogW10sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzOiAyMDAwLFxuICAgIHByb2Nlc3NJdGVtOiBub29wLFxuICAgIHByb2dyZXNzQmFyVGl0bGU6ICcnLFxuICAgIHNob3VsZENvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICBzaG91bGRTaG93Tm90aWNlOiB0cnVlLFxuICAgIHNob3VsZFNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM6IDEwMFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ucGFyYW1zXG4gIH07XG5cbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG5cbiAgY29uc3QgaXRlbXMgPSBmdWxsT3B0aW9ucy5pdGVtcztcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcblxuICBjb25zdCBwcm9ncmVzc0JhckVsID0gY3JlYXRlRWwoJ3Byb2dyZXNzJyk7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMocHJvZ3Jlc3NCYXJFbCwgJ2xvb3AnKTtcbiAgcHJvZ3Jlc3NCYXJFbC5tYXggPSBpdGVtcy5sZW5ndGg7XG5cbiAgLy8gVGhlIGNvbnRlbnQgcHJvdmlkZXIgaXMgcmVzb2x2ZWQgb25seSBvbmNlIHRoZSBkZWxheSBlbGFwc2VzLCBzbyBpdCBkb3VibGVzIGFzIHRoZSBub3RpY2Utd2FzLXNob3duIHNpZ25hbC5cbiAgbGV0IGlzTm90aWNlU2hvd24gPSBmYWxzZSBhcyBib29sZWFuO1xuICBsZXQgbGF0ZXN0TWVzc2FnZSA9ICcnO1xuICAvLyBBIGRlbGF5ZWQgbm90aWNlIHN0YXlzIHVudGlsIGl0IGlzIGRpc3Bvc2VkLiBPYnNpZGlhbidzIGRlZmF1bHQgZHVyYXRpb24gd291bGQgaGlkZSBpdCBhIGZldyBzZWNvbmRzIGludG8gYVxuICAvLyBsb25nIHJ1biB3aGlsZSB0aGUgbG9vcCBjYXJyaWVzIG9uLlxuICBjb25zdCBkZWxheWVkTm90aWNlID0gZnVsbE9wdGlvbnMuc2hvdWxkU2hvd05vdGljZVxuICAgID8gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudD8uc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgICAgY29udGVudDogKCkgPT4ge1xuICAgICAgICBpc05vdGljZVNob3duID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZ1bGxPcHRpb25zLnNob3VsZFNob3dQcm9ncmVzc0JhciA/IGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpIDogbGF0ZXN0TWVzc2FnZTtcbiAgICAgIH0sXG4gICAgICBkZWxheUluTWlsbGlzZWNvbmRzOiBmdWxsT3B0aW9ucy5ub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgIH0pID8/IG51bGxcbiAgICA6IG51bGw7XG5cbiAgY29uc3Qgbm90aWNlTWluVGltZW91dFByb21pc2UgPSBzbGVlcChmdWxsT3B0aW9ucy5ub3RpY2VNaW5UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICBsZXQgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgICBjb25zdCBpdGVyYXRpb25TdHJpbmcgPSBgIyAke1N0cmluZyhpdGVyYXRpb25Db3VudCl9IC8gJHtTdHJpbmcoaXRlbXMubGVuZ3RoKX1gO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZ1bGxPcHRpb25zLmJ1aWxkTm90aWNlTWVzc2FnZSh7IGl0ZW0sIGl0ZXJhdGlvblN0cmluZyB9KTtcbiAgICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICAgIGxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBpZiAoaXNOb3RpY2VTaG93bikge1xuICAgICAgICAgIGRlbGF5ZWROb3RpY2U/LnNldENvbnRlbnQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gbGFzdFVJVXBkYXRlVGltZXN0YW1wID4gZnVsbE9wdGlvbnMudWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgICAgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGl0ZW0nLCBpdGVtKTtcbiAgICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICAgIGNhdXNlOiBlcnJvcixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdsb29wIGZhaWxlZCcsXG4gICAgICAgICAgICBzdGFja1RyYWNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgICAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICAgICAgbWVzc2FnZTogQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgICAgc3RhY2tUcmFjZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gICAgICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgICB9XG4gICAgaWYgKGlzTm90aWNlU2hvd24pIHtcbiAgICAgIGF3YWl0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBEaXNwb3NlZCBieSBhbiBleHBsaWNpdCBgZGlzcG9zZSgpYCBjYWxsIHJhdGhlciB0aGFuIGEgYHVzaW5nYCBkZWNsYXJhdGlvbjogYHVzaW5nYCBsb29rcyB0aGUgbWV0aG9kIHVwIHVuZGVyIGFcbiAgICAvLyBkaWZmZXJlbnQga2V5IHRoYW4gdGhlIGhhbmRsZSBpcyBidWlsdCB3aXRoIG9uIGFuIGVuZ2luZSBsYWNraW5nIGBTeW1ib2wuZGlzcG9zZWAsIGFuZCBgbG9vcCgpYCBydW5zIG9uIGV2ZXJ5XG4gICAgLy8gcGxhdGZvcm0uXG4gICAgZGVsYXllZE5vdGljZT8uZGlzcG9zZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRQcm9ncmVzc0JhckZyYWdtZW50KCk6IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGZyYWdtZW50LmNyZWF0ZURpdigpLCBmdWxsT3B0aW9ucy5wcm9ncmVzc0JhclRpdGxlKTtcbiAgICBmcmFnbWVudC5hcHBlbmQocHJvZ3Jlc3NCYXJFbCk7XG4gICAgcmV0dXJuIGZyYWdtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSw4QkFBaUM7QUFDakMsbUJBQTJDO0FBQzNDLG1CQUtPO0FBQ1Asc0JB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
@@ -117,7 +117,9 @@ __export(markdown_code_block_processor_registrar_exports, {
117
117
  PluginMarkdownCodeBlockProcessorRegistrar: () => PluginMarkdownCodeBlockProcessorRegistrar
118
118
  });
119
119
  module.exports = __toCommonJS(markdown_code_block_processor_registrar_exports);
120
- var import_async = require('@mnaoumov/typescript-lib/async');
120
+ var import_async = require("@mnaoumov/typescript-lib/async");
121
+ var import_function = require("@mnaoumov/typescript-lib/function");
122
+ var import_debug = require("./debug.cjs");
121
123
  class PluginMarkdownCodeBlockProcessorRegistrar {
122
124
  /**
123
125
  * The Obsidian plugin instance the code block processors are registered with.
@@ -134,10 +136,23 @@ class PluginMarkdownCodeBlockProcessorRegistrar {
134
136
  /**
135
137
  * Registers a markdown code block processor.
136
138
  *
139
+ * Does nothing, and returns a no-op processor, when the plugin instance is not loaded. Obsidian `1.15.1`'s
140
+ * `Component.register` keeps a cleanup handed to an unloaded component without ever running it, so a processor
141
+ * registered by an instance that was unloaded while it was still loading (a plugin update, an install over an
142
+ * existing copy, a Hot Reload) would stay in Obsidian's global language map for the rest of the session, and the
143
+ * next instance's registration of the same language would throw `Code block postprocessor for language ... is
144
+ * already registered`.
145
+ *
137
146
  * @param params - The parameters for the markdown code block processor.
138
147
  * @returns The markdown post processor.
139
148
  */
140
149
  registerMarkdownCodeBlockProcessor(params) {
150
+ if (!this.plugin._loaded) {
151
+ (0, import_debug.getObsidianLibDebugger)("PluginMarkdownCodeBlockProcessorRegistrar")(
152
+ `Skipped registering the code block processor for language ${params.language}: the plugin instance is not loaded.`
153
+ );
154
+ return import_function.noop;
155
+ }
141
156
  return this.plugin.registerMarkdownCodeBlockProcessor(params.language, (source, element, context) => (0, import_async.normalizePromisable)(params.handler(source, element, context)), params.sortOrder);
142
157
  }
143
158
  }
@@ -145,4 +160,4 @@ class PluginMarkdownCodeBlockProcessorRegistrar {
145
160
  0 && (module.exports = {
146
161
  PluginMarkdownCodeBlockProcessorRegistrar
147
162
  });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgTWFya2Rvd25Qb3N0UHJvY2Vzc29yLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgbm9ybWFsaXplUHJvbWlzYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5cbi8qKlxuICogQSByZWdpc3RyYXIgZm9yIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29ycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3Nvci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqIEByZXR1cm5zIFRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3I6IChwYXJhbXM6IE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcykgPT4gTWFya2Rvd25Qb3N0UHJvY2Vzc29yO1xufVxuXG5pbnRlcmZhY2UgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXJSZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUGFyYW1zIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgZnVuY3Rpb24gZm9yIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3Nvci5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2UgY29kZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgSFRNTCBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29kZSBibG9jay5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIG1hcmtkb3duIHBvc3QgcHJvY2Vzc29yLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcjogKHNvdXJjZTogc3RyaW5nLCBlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGV4dDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIG9mIHRoZSBjb2RlIGJsb2NrIHRvIHJlZ2lzdGVyIHRoZSBwcm9jZXNzb3IgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFuZ3VhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvcnQgb3JkZXIgb2YgdGhlIHByb2Nlc3Nvci4gTG93ZXIgbnVtYmVycyBhcmUgcHJvY2Vzc2VkIGZpcnN0LiBEZWZhdWx0cyB0byAwLlxuICAgKi9cbiAgcmVhZG9ubHkgc29ydE9yZGVyPzogbnVtYmVyO1xufVxuXG50eXBlIFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyA9IE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcztcblxuLyoqXG4gKiBBIHJlZ2lzdHJhciBmb3IgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3JzLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIgaW1wbGVtZW50cyBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gcGx1Z2luIGluc3RhbmNlIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3NvcnMgYXJlIHJlZ2lzdGVyZWQgd2l0aC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvciByZWdpc3RyYXIuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIHJlZ2lzdGVyIHRoZSBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvciB3aXRoLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbjogUGx1Z2luKSB7XG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKiBAcmV0dXJucyBUaGUgbWFya2Rvd24gcG9zdCBwcm9jZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvcihwYXJhbXM6IFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyk6IE1hcmtkb3duUG9zdFByb2Nlc3NvciB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IocGFyYW1zLmxhbmd1YWdlLCAoc291cmNlLCBlbGVtZW50LCBjb250ZXh0KSA9PiBub3JtYWxpemVQcm9taXNhYmxlKHBhcmFtcy5oYW5kbGVyKHNvdXJjZSwgZWxlbWVudCwgY29udGV4dCkpLCBwYXJhbXMuc29ydE9yZGVyKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsbUJBQW9DO0FBeUM3QixNQUFNLDBDQUF5RjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWpGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUFnQjtBQUNqQyxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sbUNBQW1DLFFBQWtIO0FBQzFKLFdBQU8sS0FBSyxPQUFPLG1DQUFtQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLFNBQVMsZ0JBQVksa0NBQW9CLE9BQU8sUUFBUSxRQUFRLFNBQVMsT0FBTyxDQUFDLEdBQUcsT0FBTyxTQUFTO0FBQUEsRUFDdEw7QUFDRjsiLCJuYW1lcyI6W119
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgTWFya2Rvd25Qb3N0UHJvY2Vzc29yLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgbm9ybWFsaXplUHJvbWlzYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuXG4vKipcbiAqIEEgcmVnaXN0cmFyIGZvciBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKiBAcmV0dXJucyBUaGUgbWFya2Rvd24gcG9zdCBwcm9jZXNzb3IuXG4gICAqL1xuICByZWFkb25seSByZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yOiAocGFyYW1zOiBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXMpID0+IE1hcmtkb3duUG9zdFByb2Nlc3Nvcjtcbn1cblxuaW50ZXJmYWNlIE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIGZ1bmN0aW9uIGZvciB0aGUgY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIGNvZGUgb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIEhUTUwgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgZm9yIHRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXI6IChzb3VyY2U6IHN0cmluZywgZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRleHQ6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBvZiB0aGUgY29kZSBibG9jayB0byByZWdpc3RlciB0aGUgcHJvY2Vzc29yIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IG9yZGVyIG9mIHRoZSBwcm9jZXNzb3IuIExvd2VyIG51bWJlcnMgYXJlIHByb2Nlc3NlZCBmaXJzdC4gRGVmYXVsdHMgdG8gMC5cbiAgICovXG4gIHJlYWRvbmx5IHNvcnRPcmRlcj86IG51bWJlcjtcbn1cblxudHlwZSBQbHVnaW5NYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXMgPSBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXM7XG5cbi8qKlxuICogQSByZWdpc3RyYXIgZm9yIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29ycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyIGltcGxlbWVudHMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHBsdWdpbiBpbnN0YW5jZSB0aGUgY29kZSBibG9jayBwcm9jZXNzb3JzIGFyZSByZWdpc3RlcmVkIHdpdGguXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IgcmVnaXN0cmFyLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZWdpc3RlciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3Igd2l0aC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFBsdWdpbikge1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKlxuICAgKiBEb2VzIG5vdGhpbmcsIGFuZCByZXR1cm5zIGEgbm8tb3AgcHJvY2Vzc29yLCB3aGVuIHRoZSBwbHVnaW4gaW5zdGFuY2UgaXMgbm90IGxvYWRlZC4gT2JzaWRpYW4gYDEuMTUuMWAnc1xuICAgKiBgQ29tcG9uZW50LnJlZ2lzdGVyYCBrZWVwcyBhIGNsZWFudXAgaGFuZGVkIHRvIGFuIHVubG9hZGVkIGNvbXBvbmVudCB3aXRob3V0IGV2ZXIgcnVubmluZyBpdCwgc28gYSBwcm9jZXNzb3JcbiAgICogcmVnaXN0ZXJlZCBieSBhbiBpbnN0YW5jZSB0aGF0IHdhcyB1bmxvYWRlZCB3aGlsZSBpdCB3YXMgc3RpbGwgbG9hZGluZyAoYSBwbHVnaW4gdXBkYXRlLCBhbiBpbnN0YWxsIG92ZXIgYW5cbiAgICogZXhpc3RpbmcgY29weSwgYSBIb3QgUmVsb2FkKSB3b3VsZCBzdGF5IGluIE9ic2lkaWFuJ3MgZ2xvYmFsIGxhbmd1YWdlIG1hcCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHNlc3Npb24sIGFuZCB0aGVcbiAgICogbmV4dCBpbnN0YW5jZSdzIHJlZ2lzdHJhdGlvbiBvZiB0aGUgc2FtZSBsYW5ndWFnZSB3b3VsZCB0aHJvdyBgQ29kZSBibG9jayBwb3N0cHJvY2Vzc29yIGZvciBsYW5ndWFnZSAuLi4gaXNcbiAgICogYWxyZWFkeSByZWdpc3RlcmVkYC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqIEByZXR1cm5zIFRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKHBhcmFtczogUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXJSZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUGFyYW1zKTogTWFya2Rvd25Qb3N0UHJvY2Vzc29yIHtcbiAgICBpZiAoIXRoaXMucGx1Z2luLl9sb2FkZWQpIHtcbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ1BsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyJykoXG4gICAgICAgIGBTa2lwcGVkIHJlZ2lzdGVyaW5nIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3NvciBmb3IgbGFuZ3VhZ2UgJHtwYXJhbXMubGFuZ3VhZ2V9OiB0aGUgcGx1Z2luIGluc3RhbmNlIGlzIG5vdCBsb2FkZWQuYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsdWdpbi5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKHBhcmFtcy5sYW5ndWFnZSwgKHNvdXJjZSwgZWxlbWVudCwgY29udGV4dCkgPT4gbm9ybWFsaXplUHJvbWlzYWJsZShwYXJhbXMuaGFuZGxlcihzb3VyY2UsIGVsZW1lbnQsIGNvbnRleHQpKSwgcGFyYW1zLnNvcnRPcmRlcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG1CQUFvQztBQUNwQyxzQkFBcUI7QUFFckIsbUJBQXVDO0FBeUNoQyxNQUFNLDBDQUF5RjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWpGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUFnQjtBQUNqQyxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFlTyxtQ0FBbUMsUUFBa0g7QUFDMUosUUFBSSxDQUFDLEtBQUssT0FBTyxTQUFTO0FBQ3hCLCtDQUF1QiwyQ0FBMkM7QUFBQSxRQUNoRSw2REFBNkQsT0FBTyxRQUFRO0FBQUEsTUFDOUU7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sS0FBSyxPQUFPLG1DQUFtQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLFNBQVMsZ0JBQVksa0NBQW9CLE9BQU8sUUFBUSxRQUFRLFNBQVMsT0FBTyxDQUFDLEdBQUcsT0FBTyxTQUFTO0FBQUEsRUFDdEw7QUFDRjsiLCJuYW1lcyI6W119
@@ -55,6 +55,13 @@ export declare class PluginMarkdownCodeBlockProcessorRegistrar implements Markdo
55
55
  /**
56
56
  * Registers a markdown code block processor.
57
57
  *
58
+ * Does nothing, and returns a no-op processor, when the plugin instance is not loaded. Obsidian `1.15.1`'s
59
+ * `Component.register` keeps a cleanup handed to an unloaded component without ever running it, so a processor
60
+ * registered by an instance that was unloaded while it was still loading (a plugin update, an install over an
61
+ * existing copy, a Hot Reload) would stay in Obsidian's global language map for the rest of the session, and the
62
+ * next instance's registration of the same language would throw `Code block postprocessor for language ... is
63
+ * already registered`.
64
+ *
58
65
  * @param params - The parameters for the markdown code block processor.
59
66
  * @returns The markdown post processor.
60
67
  */
@@ -121,19 +121,19 @@ __export(markdown_code_block_processor_exports, {
121
121
  replaceCodeBlock: () => replaceCodeBlock
122
122
  });
123
123
  module.exports = __toCommonJS(markdown_code_block_processor_exports);
124
- var import_abort_controller = require('@mnaoumov/typescript-lib/abort-controller');
125
- var import_async = require('@mnaoumov/typescript-lib/async');
126
- var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
127
- var import_reg_exp = require('@mnaoumov/typescript-lib/reg-exp');
128
- var import_string = require('@mnaoumov/typescript-lib/string');
129
- var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
130
- var import_value_provider = require('@mnaoumov/typescript-lib/value-provider');
131
- var import_implementations = require('@obsidian-typings/obsidian-public-latest/implementations');
132
- var import_obsidian = require('obsidian');
133
- var import_code_block_reg_exp = require('./code-block-reg-exp.cjs');
134
- var import_code_block_render_handoff = require('./code-block-render-handoff.cjs');
135
- var import_file_system = require('./file-system.cjs');
136
- var import_vault = require('./vault.cjs');
124
+ var import_abort_controller = require("@mnaoumov/typescript-lib/abort-controller");
125
+ var import_async = require("@mnaoumov/typescript-lib/async");
126
+ var import_object_utils = require("@mnaoumov/typescript-lib/object-utils");
127
+ var import_reg_exp = require("@mnaoumov/typescript-lib/reg-exp");
128
+ var import_string = require("@mnaoumov/typescript-lib/string");
129
+ var import_type_guards = require("@mnaoumov/typescript-lib/type-guards");
130
+ var import_value_provider = require("@mnaoumov/typescript-lib/value-provider");
131
+ var import_implementations = require("@obsidian-typings/obsidian-public-latest/implementations");
132
+ var import_obsidian = require("obsidian");
133
+ var import_code_block_reg_exp = require("./code-block-reg-exp.cjs");
134
+ var import_code_block_render_handoff = require("./code-block-render-handoff.cjs");
135
+ var import_file_system = require("./file-system.cjs");
136
+ var import_vault = require("./vault.cjs");
137
137
  async function getCodeBlockMarkdownInfo(params) {
138
138
  const { app, context, el, source } = params;
139
139
  const sourceFile = (0, import_file_system.getFileOrNull)({ app, pathOrFile: context.sourcePath });
@@ -117,8 +117,8 @@ __export(markdown_post_processor_registrar_exports, {
117
117
  PluginMarkdownPostProcessorRegistrar: () => PluginMarkdownPostProcessorRegistrar
118
118
  });
119
119
  module.exports = __toCommonJS(markdown_post_processor_registrar_exports);
120
- var import_async = require('@mnaoumov/typescript-lib/async');
121
- var import_obsidian = require('obsidian');
120
+ var import_async = require("@mnaoumov/typescript-lib/async");
121
+ var import_obsidian = require("obsidian");
122
122
  class PluginMarkdownPostProcessorRegistrar {
123
123
  /**
124
124
  * Creates a new instance of the {@link PluginMarkdownPostProcessorRegistrar} class.
@@ -169,9 +169,9 @@ __export(markdown_view_exports, {
169
169
  rerenderPreviews: () => rerenderPreviews
170
170
  });
171
171
  module.exports = __toCommonJS(markdown_view_exports);
172
- var import_abort_controller = require('@mnaoumov/typescript-lib/abort-controller');
173
- var import_function = require('@mnaoumov/typescript-lib/function');
174
- var import_obsidian = require('obsidian');
172
+ var import_abort_controller = require("@mnaoumov/typescript-lib/abort-controller");
173
+ var import_function = require("@mnaoumov/typescript-lib/function");
174
+ var import_obsidian = require("obsidian");
175
175
  function getFullContentHtml(view) {
176
176
  const codeMirror = view.editor.cm;
177
177
  codeMirror.viewState.printing = true;
@@ -172,18 +172,18 @@ __export(markdown_exports, {
172
172
  renderInternalLink: () => renderInternalLink
173
173
  });
174
174
  module.exports = __toCommonJS(markdown_exports);
175
- var import_async = require('@mnaoumov/typescript-lib/async');
176
- var import_html_element = require('@mnaoumov/typescript-lib/html-element');
177
- var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
178
- var import_url = require('@mnaoumov/typescript-lib/url');
179
- var import_implementations = require('@obsidian-typings/obsidian-public-latest/implementations');
180
- var import_i18next = require('i18next');
181
- var import_obsidian = require('obsidian');
182
- var import_monkey_around_component = require('./components/monkey-around-component.cjs');
183
- var import_file_explorer = require('./file-explorer.cjs');
184
- var import_file_system = require('./file-system.cjs');
185
- var import_folder_note = require('./folder-note.cjs');
186
- var import_rendered_markdown = require('./rendered-markdown.cjs');
175
+ var import_async = require("@mnaoumov/typescript-lib/async");
176
+ var import_html_element = require("@mnaoumov/typescript-lib/html-element");
177
+ var import_object_utils = require("@mnaoumov/typescript-lib/object-utils");
178
+ var import_url = require("@mnaoumov/typescript-lib/url");
179
+ var import_implementations = require("@obsidian-typings/obsidian-public-latest/implementations");
180
+ var import_i18next = require("i18next");
181
+ var import_obsidian = require("obsidian");
182
+ var import_monkey_around_component = require("./components/monkey-around-component.cjs");
183
+ var import_file_explorer = require("./file-explorer.cjs");
184
+ var import_file_system = require("./file-system.cjs");
185
+ var import_folder_note = require("./folder-note.cjs");
186
+ var import_rendered_markdown = require("./rendered-markdown.cjs");
187
187
  const DELAY_BEFORE_OPEN_IN_MILLISECONDS = 200;
188
188
  const EXTERNAL_LINK_MENU_SECTIONS = [
189
189
  "title",