@mnaoumov/obsidian-lib 10.11.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 (460) hide show
  1. package/README.md +26 -0
  2. package/components/all-windows-status-bar-item-component/package.json +6 -0
  3. package/components/shared-component-pool-component/package.json +6 -0
  4. package/components/worker-component/package.json +6 -0
  5. package/components/worker-pool-component/package.json +6 -0
  6. package/components/workspace-layout-state-component/package.json +6 -0
  7. package/dist/lib/cjs/__merged.cjs +477 -285
  8. package/dist/lib/cjs/__merged.d.cts +26 -10
  9. package/dist/lib/cjs/anchored-suggest.cjs +1 -1
  10. package/dist/lib/cjs/app.cjs +2 -2
  11. package/dist/lib/cjs/async-with-notice.cjs +4 -4
  12. package/dist/lib/cjs/attachment-path.cjs +9 -9
  13. package/dist/lib/cjs/attachment-path.d.cts +3 -3
  14. package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
  15. package/dist/lib/cjs/backlink-index.cjs +5 -5
  16. package/dist/lib/cjs/backlink.cjs +7 -7
  17. package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
  18. package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
  19. package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
  20. package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
  21. package/dist/lib/cjs/bug-report.cjs +38 -12
  22. package/dist/lib/cjs/bug-report.d.cts +65 -0
  23. package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
  24. package/dist/lib/cjs/bulk-operation.cjs +2 -2
  25. package/dist/lib/cjs/callout.cjs +6 -6
  26. package/dist/lib/cjs/canvas.cjs +11 -9
  27. package/dist/lib/cjs/canvas.d.cts +13 -0
  28. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
  29. package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
  30. package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
  31. package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
  32. package/dist/lib/cjs/codemirror/index.cjs +7 -7
  33. package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
  34. package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
  35. package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
  36. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
  37. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
  38. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
  39. package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
  40. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
  41. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
  42. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
  43. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
  44. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
  45. package/dist/lib/cjs/command-handlers/index.cjs +15 -15
  46. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
  47. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
  48. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
  49. package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
  50. package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
  51. package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
  52. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
  53. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
  54. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
  55. package/dist/lib/cjs/community-plugins.cjs +3 -3
  56. package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
  57. package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
  58. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
  59. package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
  60. package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
  61. package/dist/lib/cjs/components/async-events-component.cjs +1 -1
  62. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
  63. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
  64. package/dist/lib/cjs/components/component-ex.cjs +21 -11
  65. package/dist/lib/cjs/components/component-ex.d.cts +11 -0
  66. package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
  67. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
  68. package/dist/lib/cjs/components/disposable-component.cjs +2 -2
  69. package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
  70. package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
  71. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
  72. package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
  73. package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
  74. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
  75. package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
  76. package/dist/lib/cjs/components/index.cjs +54 -39
  77. package/dist/lib/cjs/components/index.d.cts +5 -0
  78. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
  79. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
  80. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  81. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
  82. package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
  83. package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
  84. package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
  85. package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
  86. package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
  87. package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
  88. package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
  89. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
  90. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
  91. package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
  92. package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
  93. package/dist/lib/cjs/components/registry-component.cjs +2 -2
  94. package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
  95. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
  96. package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
  97. package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
  98. package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
  99. package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
  100. package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
  101. package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
  102. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
  103. package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
  104. package/dist/lib/cjs/components/worker-component.cjs +363 -0
  105. package/dist/lib/cjs/components/worker-component.d.cts +156 -0
  106. package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
  107. package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
  108. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
  109. package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
  110. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
  111. package/dist/lib/cjs/constructors/index.cjs +1 -1
  112. package/dist/lib/cjs/css-class.cjs +5 -1
  113. package/dist/lib/cjs/css-class.d.cts +16 -0
  114. package/dist/lib/cjs/data-handler.cjs +264 -6
  115. package/dist/lib/cjs/data-handler.d.cts +219 -2
  116. package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
  117. package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
  118. package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
  119. package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
  120. package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
  121. package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
  122. package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
  123. package/dist/lib/cjs/data-stores/index.cjs +6 -6
  124. package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
  125. package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
  126. package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
  127. package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
  128. package/dist/lib/cjs/dataview-link.cjs +2 -2
  129. package/dist/lib/cjs/dataview.cjs +27 -7
  130. package/dist/lib/cjs/dataview.d.cts +14 -0
  131. package/dist/lib/cjs/debug.cjs +3 -3
  132. package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
  133. package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
  134. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
  135. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
  136. package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
  137. package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
  138. package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
  139. package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
  140. package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
  141. package/dist/lib/cjs/disposable.cjs +150 -0
  142. package/dist/lib/cjs/disposable.d.cts +39 -0
  143. package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
  144. package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
  145. package/dist/lib/cjs/editor-suggest.cjs +1 -1
  146. package/dist/lib/cjs/editor.cjs +6 -6
  147. package/dist/lib/cjs/events.cjs +2 -2
  148. package/dist/lib/cjs/extensions-registrar.cjs +1 -1
  149. package/dist/lib/cjs/feature-request.cjs +1 -1
  150. package/dist/lib/cjs/file-change.cjs +10 -10
  151. package/dist/lib/cjs/file-explorer.cjs +2 -2
  152. package/dist/lib/cjs/file-manager.cjs +5 -5
  153. package/dist/lib/cjs/file-system.cjs +10 -10
  154. package/dist/lib/cjs/folder-note.cjs +4 -4
  155. package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
  156. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
  157. package/dist/lib/cjs/frontmatter.cjs +5 -5
  158. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  159. package/dist/lib/cjs/git-rename-history.cjs +1 -1
  160. package/dist/lib/cjs/git-rename-history.d.cts +2 -2
  161. package/dist/lib/cjs/hotkey.cjs +1 -1
  162. package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
  163. package/dist/lib/cjs/html-element.cjs +2 -2
  164. package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
  165. package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
  166. package/dist/lib/cjs/i18n/i18n.cjs +7 -7
  167. package/dist/lib/cjs/i18n/index.cjs +4 -4
  168. package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
  169. package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
  170. package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
  171. package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
  172. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
  173. package/dist/lib/cjs/index.cjs +147 -126
  174. package/dist/lib/cjs/index.d.cts +7 -0
  175. package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
  176. package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
  177. package/dist/lib/cjs/library-styles.cjs +3 -3
  178. package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
  179. package/dist/lib/cjs/link.cjs +76 -56
  180. package/dist/lib/cjs/link.d.cts +20 -14
  181. package/dist/lib/cjs/logger.cjs +4 -4
  182. package/dist/lib/cjs/loop.cjs +10 -16
  183. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
  184. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
  185. package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
  186. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
  187. package/dist/lib/cjs/markdown-view.cjs +191 -3
  188. package/dist/lib/cjs/markdown-view.d.cts +48 -1
  189. package/dist/lib/cjs/markdown.cjs +12 -12
  190. package/dist/lib/cjs/metadata-cache.cjs +23 -23
  191. package/dist/lib/cjs/metadata-cache.d.cts +5 -4
  192. package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
  193. package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
  194. package/dist/lib/cjs/mobile-app-info.cjs +1 -1
  195. package/dist/lib/cjs/modals/alert.cjs +4 -4
  196. package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
  197. package/dist/lib/cjs/modals/confirm.cjs +4 -4
  198. package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
  199. package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
  200. package/dist/lib/cjs/modals/index.cjs +17 -11
  201. package/dist/lib/cjs/modals/index.d.cts +2 -0
  202. package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
  203. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
  204. package/dist/lib/cjs/modals/modal.cjs +3 -3
  205. package/dist/lib/cjs/modals/prompt.cjs +10 -10
  206. package/dist/lib/cjs/modals/prompt.d.cts +1 -1
  207. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
  208. package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
  209. package/dist/lib/cjs/modals/select-item.cjs +6 -6
  210. package/dist/lib/cjs/modals/select-option.cjs +3 -3
  211. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
  212. package/dist/lib/cjs/note-priority.cjs +2 -2
  213. package/dist/lib/cjs/notebook-navigator.cjs +12 -2
  214. package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
  215. package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
  216. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
  217. package/dist/lib/cjs/obsidian-settings.cjs +1 -1
  218. package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
  219. package/dist/lib/cjs/parse-link.cjs +14 -14
  220. package/dist/lib/cjs/path-compatibility.cjs +368 -0
  221. package/dist/lib/cjs/path-compatibility.d.cts +263 -0
  222. package/dist/lib/cjs/path-settings.cjs +3 -3
  223. package/dist/lib/cjs/pdf.cjs +2 -2
  224. package/dist/lib/cjs/plugin/index.cjs +18 -12
  225. package/dist/lib/cjs/plugin/index.d.cts +2 -0
  226. package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
  227. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
  228. package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
  229. package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
  230. package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
  231. package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
  232. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
  233. package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
  234. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
  235. package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
  236. package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
  237. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
  238. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
  239. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
  240. package/dist/lib/cjs/plugin/plugin.cjs +133 -34
  241. package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
  242. package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
  243. package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
  244. package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
  245. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
  246. package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
  247. package/dist/lib/cjs/popovers/index.cjs +3 -3
  248. package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
  249. package/dist/lib/cjs/popovers/popover.cjs +5 -5
  250. package/dist/lib/cjs/queue.cjs +8 -8
  251. package/dist/lib/cjs/react/app-context.cjs +3 -3
  252. package/dist/lib/cjs/react/index.cjs +1 -1
  253. package/dist/lib/cjs/reference-definition.cjs +1 -1
  254. package/dist/lib/cjs/reference.cjs +3 -3
  255. package/dist/lib/cjs/release-asset.cjs +5 -5
  256. package/dist/lib/cjs/rendered-markdown.cjs +4 -4
  257. package/dist/lib/cjs/request-url.cjs +4 -4
  258. package/dist/lib/cjs/resource-lock.cjs +46 -42
  259. package/dist/lib/cjs/resource-lock.d.cts +8 -7
  260. package/dist/lib/cjs/resource-url.cjs +3 -3
  261. package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
  262. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
  263. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
  264. package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
  265. package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
  266. package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
  267. package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
  268. package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
  269. package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
  270. package/dist/lib/cjs/setting-components/index.cjs +30 -30
  271. package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
  272. package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
  273. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
  274. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
  275. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
  276. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
  277. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
  278. package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
  279. package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
  280. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
  281. package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
  282. package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
  283. package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
  284. package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
  285. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
  286. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
  287. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
  288. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
  289. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
  290. package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
  291. package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
  292. package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
  293. package/dist/lib/cjs/setting-ex.cjs +26 -26
  294. package/dist/lib/cjs/setting-group-ex.cjs +2 -2
  295. package/dist/lib/cjs/settings-recovery.cjs +217 -0
  296. package/dist/lib/cjs/settings-recovery.d.cts +178 -0
  297. package/dist/lib/cjs/settings-tabs.cjs +5 -5
  298. package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
  299. package/dist/lib/cjs/templater.cjs +14 -4
  300. package/dist/lib/cjs/templater.d.cts +6 -0
  301. package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
  302. package/dist/lib/cjs/transformers/index.cjs +1 -1
  303. package/dist/lib/cjs/trusted-input.cjs +1 -1
  304. package/dist/lib/cjs/validation.cjs +4 -4
  305. package/dist/lib/cjs/vault-delete.cjs +6 -6
  306. package/dist/lib/cjs/vault-transaction.cjs +5 -5
  307. package/dist/lib/cjs/vault.cjs +12 -12
  308. package/dist/lib/cjs/view-registrar.cjs +1 -1
  309. package/dist/lib/cjs/virtual-file.cjs +16 -14
  310. package/dist/lib/cjs/virtual-file.d.cts +2 -1
  311. package/dist/lib/cjs/wasm.cjs +119 -0
  312. package/dist/lib/cjs/wasm.d.cts +54 -0
  313. package/dist/lib/cjs/worker-protocol.cjs +209 -0
  314. package/dist/lib/cjs/worker-protocol.d.cts +282 -0
  315. package/dist/lib/cjs/workspace.cjs +1 -1
  316. package/dist/lib/esm/__merged.d.mts +26 -10
  317. package/dist/lib/esm/__merged.mjs +215 -5
  318. package/dist/lib/esm/app.mjs +2 -2
  319. package/dist/lib/esm/attachment-path.d.mts +3 -3
  320. package/dist/lib/esm/attachment-path.mjs +2 -2
  321. package/dist/lib/esm/backlink-index.mjs +2 -2
  322. package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
  323. package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
  324. package/dist/lib/esm/bug-report.d.mts +65 -0
  325. package/dist/lib/esm/bug-report.mjs +33 -10
  326. package/dist/lib/esm/canvas.d.mts +13 -0
  327. package/dist/lib/esm/canvas.mjs +6 -5
  328. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
  329. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
  330. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
  331. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
  332. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
  333. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
  334. package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
  335. package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
  336. package/dist/lib/esm/components/component-ex.d.mts +11 -0
  337. package/dist/lib/esm/components/component-ex.mjs +19 -6
  338. package/dist/lib/esm/components/disposable-component.mjs +1 -1
  339. package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
  340. package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
  341. package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
  342. package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
  343. package/dist/lib/esm/components/index.d.mts +5 -0
  344. package/dist/lib/esm/components/index.mjs +12 -2
  345. package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
  346. package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
  347. package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
  348. package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
  349. package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
  350. package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
  351. package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
  352. package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
  353. package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
  354. package/dist/lib/esm/components/worker-component.d.mts +156 -0
  355. package/dist/lib/esm/components/worker-component.mjs +279 -0
  356. package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
  357. package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
  358. package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
  359. package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
  360. package/dist/lib/esm/css-class.d.mts +16 -0
  361. package/dist/lib/esm/css-class.mjs +5 -1
  362. package/dist/lib/esm/data-handler.d.mts +219 -2
  363. package/dist/lib/esm/data-handler.mjs +262 -5
  364. package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
  365. package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
  366. package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
  367. package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
  368. package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
  369. package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
  370. package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
  371. package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
  372. package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
  373. package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
  374. package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
  375. package/dist/lib/esm/dataview.d.mts +14 -0
  376. package/dist/lib/esm/dataview.mjs +19 -1
  377. package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
  378. package/dist/lib/esm/demo-vault-helper.mjs +29 -1
  379. package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
  380. package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
  381. package/dist/lib/esm/desktop-git-runner.mjs +3 -3
  382. package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
  383. package/dist/lib/esm/disposable.d.mts +39 -0
  384. package/dist/lib/esm/disposable.mjs +64 -0
  385. package/dist/lib/esm/file-system.mjs +2 -2
  386. package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
  387. package/dist/lib/esm/generated-during-build.mjs +2 -2
  388. package/dist/lib/esm/git-rename-history.d.mts +2 -2
  389. package/dist/lib/esm/git-rename-history.mjs +1 -1
  390. package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
  391. package/dist/lib/esm/i18n/locales/en.mjs +27 -1
  392. package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
  393. package/dist/lib/esm/index.d.mts +7 -0
  394. package/dist/lib/esm/index.mjs +15 -1
  395. package/dist/lib/esm/link.d.mts +20 -14
  396. package/dist/lib/esm/link.mjs +57 -38
  397. package/dist/lib/esm/loop.mjs +2 -8
  398. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
  399. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
  400. package/dist/lib/esm/markdown-view.d.mts +48 -1
  401. package/dist/lib/esm/markdown-view.mjs +192 -2
  402. package/dist/lib/esm/metadata-cache.d.mts +5 -4
  403. package/dist/lib/esm/metadata-cache.mjs +6 -6
  404. package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
  405. package/dist/lib/esm/misplaced-attachment.mjs +212 -0
  406. package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
  407. package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
  408. package/dist/lib/esm/modals/index.d.mts +2 -0
  409. package/dist/lib/esm/modals/index.mjs +5 -1
  410. package/dist/lib/esm/modals/prompt.d.mts +1 -1
  411. package/dist/lib/esm/modals/prompt.mjs +1 -1
  412. package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
  413. package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
  414. package/dist/lib/esm/notebook-navigator.d.mts +6 -0
  415. package/dist/lib/esm/notebook-navigator.mjs +11 -2
  416. package/dist/lib/esm/parse-link.mjs +4 -4
  417. package/dist/lib/esm/path-compatibility.d.mts +263 -0
  418. package/dist/lib/esm/path-compatibility.mjs +277 -0
  419. package/dist/lib/esm/plugin/index.d.mts +2 -0
  420. package/dist/lib/esm/plugin/index.mjs +6 -2
  421. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
  422. package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
  423. package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
  424. package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
  425. package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
  426. package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
  427. package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
  428. package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
  429. package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
  430. package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
  431. package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
  432. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
  433. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
  434. package/dist/lib/esm/plugin/plugin.d.mts +35 -5
  435. package/dist/lib/esm/plugin/plugin.mjs +118 -9
  436. package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
  437. package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
  438. package/dist/lib/esm/release-asset.mjs +1 -1
  439. package/dist/lib/esm/resource-lock.d.mts +8 -7
  440. package/dist/lib/esm/resource-lock.mjs +31 -26
  441. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
  442. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
  443. package/dist/lib/esm/settings-recovery.d.mts +178 -0
  444. package/dist/lib/esm/settings-recovery.mjs +125 -0
  445. package/dist/lib/esm/settings-tabs.mjs +2 -2
  446. package/dist/lib/esm/templater.d.mts +6 -0
  447. package/dist/lib/esm/templater.mjs +11 -2
  448. package/dist/lib/esm/vault.mjs +1 -1
  449. package/dist/lib/esm/virtual-file.d.mts +2 -1
  450. package/dist/lib/esm/virtual-file.mjs +7 -5
  451. package/dist/lib/esm/wasm.d.mts +54 -0
  452. package/dist/lib/esm/wasm.mjs +30 -0
  453. package/dist/lib/esm/worker-protocol.d.mts +282 -0
  454. package/dist/lib/esm/worker-protocol.mjs +113 -0
  455. package/dist/styles.css +16 -1
  456. package/modals/copy-text-manually/package.json +6 -0
  457. package/modals/review-bug-report-diagnostics/package.json +6 -0
  458. package/package.json +10 -8
  459. package/plugin/plugin-instance/package.json +6 -0
  460. package/plugin/third-party-plugin/package.json +6 -0
@@ -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
 
@@ -136,7 +130,7 @@ async function loop(params) {
136
130
  await noticeMinTimeoutPromise;
137
131
  }
138
132
  } finally {
139
- delayedNotice?.[Symbol.dispose]();
133
+ delayedNotice?.dispose();
140
134
  }
141
135
  function buildProgressBarFragment() {
142
136
  const fragment = createFragment();
@@ -148,4 +142,4 @@ async function loop(params) {
148
142
  export {
149
143
  loop
150
144
  };
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb29wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICBDdXN0b21TdGFja1RyYWNlRXJyb3IsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHJlcG9ydEJ1bGtPcGVyYXRpb25Qcm9ncmVzcyB9IGZyb20gJy4vYnVsay1vcGVyYXRpb24tcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHsgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZSB9IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBMb29wUGFyYW1zLmJ1aWxkTm90aWNlTWVzc2FnZX0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBpdGVtOiBUO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlcmF0aW9uU3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGxvb3B9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGJ1aWxkaW5nIHRoZSBub3RpY2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGROb3RpY2VNZXNzYWdlOiAocGFyYW1zOiBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBmb3IgdGhlIG5vdGljZSBiZWZvcmUgaXQgaXMgc2hvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDBgXG4gICAqL1xuICByZWFkb25seSBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBtaW5pbXVtIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBvbmVudCB0byBzaG93IG5vdGljZXMuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzSXRlbTogKGl0ZW06IFQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogUGFzcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSB0byBtYXJrIHVwIHBhcnQgb2YgdGhlIHRpdGxlLCBzdWNoIGFzIGEgcGx1Z2luIG5hbWUgcmVuZGVyZWQgYXMgY29kZS4gRWFjaFxuICAgKiByZW5kZXIgYXBwZW5kcyBhIGZyZXNoIGNsb25lIG9mIGl0LCBzbyB0aGUgY2FsbGVyJ3MgZnJhZ21lbnQgc3RheXMgaW50YWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb250aW51ZSB0aGUgbG9vcCBvbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd05vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRocmVzaG9sZCBmb3IgdGhlIFVJIHVwZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDEwMGBcbiAgICovXG4gIHJlYWRvbmx5IHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9vcHMgb3ZlciBhIGxpc3Qgb2YgaXRlbXMgYW5kIHByb2Nlc3NlcyBlYWNoIGl0ZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb29wPFQ+KHBhcmFtczogTG9vcFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgYWJvcnRTaWduYWw6IGFib3J0U2lnbmFsTmV2ZXIoKSxcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gYnVpbGROb3RpY2VNZXNzYWdlIGlzIHJlcXVpcmVkIGluIExvb3BQYXJhbXMgYW5kIGFsd2F5cyBvdmVycmlkZGVuIGJ5IHRoZSBzcHJlYWQuICovXG4gICAgYnVpbGROb3RpY2VNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBpdGVtczogW10sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzOiAyMDAwLFxuICAgIHByb2Nlc3NJdGVtOiBub29wLFxuICAgIHByb2dyZXNzQmFyVGl0bGU6ICcnLFxuICAgIHNob3VsZENvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICBzaG91bGRTaG93Tm90aWNlOiB0cnVlLFxuICAgIHNob3VsZFNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM6IDEwMFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ucGFyYW1zXG4gIH07XG5cbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG5cbiAgY29uc3QgaXRlbXMgPSBmdWxsT3B0aW9ucy5pdGVtcztcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcblxuICBjb25zdCBwcm9ncmVzc0JhckVsID0gY3JlYXRlRWwoJ3Byb2dyZXNzJyk7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMocHJvZ3Jlc3NCYXJFbCwgJ2xvb3AnKTtcbiAgcHJvZ3Jlc3NCYXJFbC5tYXggPSBpdGVtcy5sZW5ndGg7XG5cbiAgLy8gVGhlIGNvbnRlbnQgcHJvdmlkZXIgaXMgcmVzb2x2ZWQgb25seSBvbmNlIHRoZSBkZWxheSBlbGFwc2VzLCBzbyBpdCBkb3VibGVzIGFzIHRoZSBub3RpY2Utd2FzLXNob3duIHNpZ25hbC5cbiAgbGV0IGlzTm90aWNlU2hvd24gPSBmYWxzZSBhcyBib29sZWFuO1xuICBsZXQgbGF0ZXN0TWVzc2FnZSA9ICcnO1xuICAvLyBBIGRlbGF5ZWQgbm90aWNlIHN0YXlzIHVudGlsIGl0IGlzIGRpc3Bvc2VkLiBPYnNpZGlhbidzIGRlZmF1bHQgZHVyYXRpb24gd291bGQgaGlkZSBpdCBhIGZldyBzZWNvbmRzIGludG8gYVxuICAvLyBsb25nIHJ1biB3aGlsZSB0aGUgbG9vcCBjYXJyaWVzIG9uLlxuICBjb25zdCBkZWxheWVkTm90aWNlID0gZnVsbE9wdGlvbnMuc2hvdWxkU2hvd05vdGljZVxuICAgID8gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudD8uc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgICAgY29udGVudDogKCkgPT4ge1xuICAgICAgICBpc05vdGljZVNob3duID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZ1bGxPcHRpb25zLnNob3VsZFNob3dQcm9ncmVzc0JhciA/IGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpIDogbGF0ZXN0TWVzc2FnZTtcbiAgICAgIH0sXG4gICAgICBkZWxheUluTWlsbGlzZWNvbmRzOiBmdWxsT3B0aW9ucy5ub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgIH0pID8/IG51bGxcbiAgICA6IG51bGw7XG5cbiAgY29uc3Qgbm90aWNlTWluVGltZW91dFByb21pc2UgPSBzbGVlcChmdWxsT3B0aW9ucy5ub3RpY2VNaW5UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICBsZXQgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgICBjb25zdCBpdGVyYXRpb25TdHJpbmcgPSBgIyAke1N0cmluZyhpdGVyYXRpb25Db3VudCl9IC8gJHtTdHJpbmcoaXRlbXMubGVuZ3RoKX1gO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZ1bGxPcHRpb25zLmJ1aWxkTm90aWNlTWVzc2FnZSh7IGl0ZW0sIGl0ZXJhdGlvblN0cmluZyB9KTtcbiAgICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICAgIGxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBpZiAoaXNOb3RpY2VTaG93bikge1xuICAgICAgICAgIGRlbGF5ZWROb3RpY2U/LnNldENvbnRlbnQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gbGFzdFVJVXBkYXRlVGltZXN0YW1wID4gZnVsbE9wdGlvbnMudWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgICAgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGl0ZW0nLCBpdGVtKTtcbiAgICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICAgIGNhdXNlOiBlcnJvcixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdsb29wIGZhaWxlZCcsXG4gICAgICAgICAgICBzdGFja1RyYWNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgICAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICAgICAgbWVzc2FnZTogQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgICAgc3RhY2tUcmFjZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gICAgICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgICB9XG4gICAgaWYgKGlzTm90aWNlU2hvd24pIHtcbiAgICAgIGF3YWl0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBEaXNwb3NlZCBieSBhbiBleHBsaWNpdCBjYWxsIHJhdGhlciB0aGFuIGEgYHVzaW5nYCBkZWNsYXJhdGlvbjogYHVzaW5nYCBsb29rcyB0aGUgbWV0aG9kIHVwIHVuZGVyIGEgZGlmZmVyZW50XG4gICAgLy8ga2V5IHRoYW4gdGhlIGhhbmRsZSBpcyBidWlsdCB3aXRoIG9uIGFuIGVuZ2luZSBsYWNraW5nIGBTeW1ib2wuZGlzcG9zZWAsIGFuZCBgbG9vcCgpYCBydW5zIG9uIGV2ZXJ5IHBsYXRmb3JtLlxuICAgIGRlbGF5ZWROb3RpY2U/LltTeW1ib2wuZGlzcG9zZV0oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgICBjb25zdCBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50KCk7XG4gICAgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShmcmFnbWVudC5jcmVhdGVEaXYoKSwgZnVsbE9wdGlvbnMucHJvZ3Jlc3NCYXJUaXRsZSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kKHByb2dyZXNzQmFyRWwpO1xuICAgIHJldHVybiBmcmFnbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsa0NBQWtDO0FBQzNDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFJckIsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxpQ0FBaUM7QUFDMUMsU0FBUywyQkFBMkI7QUFrSHBDLGVBQXNCLEtBQVEsUUFBc0M7QUFDbEUsUUFBTSxrQkFBa0I7QUFBQSxJQUN0QixhQUFhLGlCQUFpQjtBQUFBO0FBQUEsSUFFOUIscUJBQTZCO0FBQzNCLFlBQU0sSUFBSSxNQUFNLGdDQUFnQztBQUFBLElBQ2xEO0FBQUE7QUFBQSxJQUVBLE9BQU8sQ0FBQztBQUFBO0FBQUEsSUFFUix3Q0FBd0M7QUFBQTtBQUFBLElBRXhDLGdDQUFnQztBQUFBLElBQ2hDLGFBQWE7QUFBQSxJQUNiLGtCQUFrQjtBQUFBLElBQ2xCLHVCQUF1QjtBQUFBLElBQ3ZCLGtCQUFrQjtBQUFBLElBQ2xCLHVCQUF1QjtBQUFBO0FBQUEsSUFFdkIsaUNBQWlDO0FBQUEsRUFDbkM7QUFFQSxRQUFNLGNBQXVDO0FBQUEsSUFDM0MsR0FBRztBQUFBLElBQ0gsR0FBRztBQUFBLEVBQ0w7QUFFQSxRQUFNLGFBQWEsY0FBYyxDQUFDO0FBRWxDLFFBQU0sUUFBUSxZQUFZO0FBQzFCLE1BQUksaUJBQWlCO0FBRXJCLFFBQU0sZ0JBQWdCLFNBQVMsVUFBVTtBQUN6QyxzQkFBb0IsZUFBZSxNQUFNO0FBQ3pDLGdCQUFjLE1BQU0sTUFBTTtBQUcxQixNQUFJLGdCQUFnQjtBQUNwQixNQUFJLGdCQUFnQjtBQUdwQixRQUFNLGdCQUFnQixZQUFZLG1CQUM5QixPQUFPLHVCQUF1QixxQkFBcUI7QUFBQSxJQUNuRCxTQUFTLE1BQU07QUFDYixzQkFBZ0I7QUFDaEIsYUFBTyxZQUFZLHdCQUF3Qix5QkFBeUIsSUFBSTtBQUFBLElBQzFFO0FBQUEsSUFDQSxxQkFBcUIsWUFBWTtBQUFBLEVBQ25DLENBQUMsS0FBSyxPQUNKO0FBRUosUUFBTSwwQkFBMEIsTUFBTSxZQUFZLDhCQUE4QjtBQUNoRixNQUFJLHdCQUF3QixZQUFZLElBQUk7QUFFNUMsTUFBSTtBQUNGLGVBQVcsUUFBUSxPQUFPO0FBQ3hCLFVBQUksWUFBWSxZQUFZLFNBQVM7QUFDbkM7QUFBQSxNQUNGO0FBQ0E7QUFDQSxZQUFNLGtCQUFrQixLQUFLLE9BQU8sY0FBYyxDQUFDLE1BQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQztBQUM3RSxZQUFNLFVBQVUsWUFBWSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLFVBQUksQ0FBQyxZQUFZLHVCQUF1QjtBQUN0Qyx3QkFBZ0I7QUFDaEIsWUFBSSxlQUFlO0FBQ2pCLHlCQUFlLFdBQVcsT0FBTztBQUFBLFFBQ25DO0FBQUEsTUFDRjtBQUNBLDZCQUF1QixNQUFNLEVBQUUsT0FBTztBQUV0QyxVQUFJO0FBQ0YsWUFBSSxZQUFZLElBQUksSUFBSSx3QkFBd0IsWUFBWSxpQ0FBaUM7QUFDM0YsZ0JBQU0sMkJBQTJCO0FBQ2pDLGtDQUF3QixZQUFZLElBQUk7QUFBQSxRQUMxQztBQUNBLGNBQU0sWUFBWSxZQUFZLElBQUk7QUFBQSxNQUNwQyxTQUFTLE9BQU87QUFDZCxnQkFBUSxNQUFNLHlCQUF5QixJQUFJO0FBQzNDLFlBQUksQ0FBQyxZQUFZLHVCQUF1QjtBQUN0QyxnQkFBTSxJQUFJLHNCQUFzQjtBQUFBLFlBQzlCLE9BQU87QUFBQSxZQUNQLFNBQVM7QUFBQSxZQUNUO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUVBO0FBQUEsVUFDRSxJQUFJLHNCQUFzQjtBQUFBLFlBQ3hCLE9BQU87QUFBQSxZQUNQLFNBQVM7QUFBQSxZQUNUO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFDQSxvQkFBYztBQUNkLGtDQUE0QjtBQUFBLElBQzlCO0FBQ0EsUUFBSSxlQUFlO0FBQ2pCLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRixVQUFFO0FBR0Esb0JBQWdCLE9BQU8sT0FBTyxFQUFFO0FBQUEsRUFDbEM7QUFFQSxXQUFTLDJCQUE2QztBQUNwRCxVQUFNLFdBQVcsZUFBZTtBQUNoQyw4QkFBMEIsU0FBUyxVQUFVLEdBQUcsWUFBWSxnQkFBZ0I7QUFDNUUsYUFBUyxPQUFPLGFBQWE7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLCJuYW1lcyI6W119
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb29wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgbG9vcGluZyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lQXN5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHtcbiAgQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICBDdXN0b21TdGFja1RyYWNlRXJyb3IsXG4gIGVtaXRBc3luY0Vycm9yRXZlbnQsXG4gIGdldFN0YWNrVHJhY2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Vycm9yJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IHJlcG9ydEJ1bGtPcGVyYXRpb25Qcm9ncmVzcyB9IGZyb20gJy4vYnVsay1vcGVyYXRpb24tcHJvZ3Jlc3MudHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuaW1wb3J0IHsgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZSB9IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBMb29wUGFyYW1zLmJ1aWxkTm90aWNlTWVzc2FnZX0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBpdGVtOiBUO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlcmF0aW9uU3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGxvb3B9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyB0byBsb29wIG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9vcFBhcmFtczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGJ1aWxkaW5nIHRoZSBub3RpY2UgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGROb3RpY2VNZXNzYWdlOiAocGFyYW1zOiBMb29wQnVpbGROb3RpY2VNZXNzYWdlUGFyYW1zPFQ+KSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgdGltZW91dCBmb3IgdGhlIG5vdGljZSBiZWZvcmUgaXQgaXMgc2hvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDBgXG4gICAqL1xuICByZWFkb25seSBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBtaW5pbXVtIHRpbWVvdXQgZm9yIHRoZSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAyMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbXBvbmVudCB0byBzaG93IG5vdGljZXMuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IG51bGwgfCBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzSXRlbTogKGl0ZW06IFQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogUGFzcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSB0byBtYXJrIHVwIHBhcnQgb2YgdGhlIHRpdGxlLCBzdWNoIGFzIGEgcGx1Z2luIG5hbWUgcmVuZGVyZWQgYXMgY29kZS4gRWFjaFxuICAgKiByZW5kZXIgYXBwZW5kcyBhIGZyZXNoIGNsb25lIG9mIGl0LCBzbyB0aGUgY2FsbGVyJ3MgZnJhZ21lbnQgc3RheXMgaW50YWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBwcm9ncmVzc0JhclRpdGxlPzogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb250aW51ZSB0aGUgbG9vcCBvbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRDb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBub3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd05vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRocmVzaG9sZCBmb3IgdGhlIFVJIHVwZGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDEwMGBcbiAgICovXG4gIHJlYWRvbmx5IHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9vcHMgb3ZlciBhIGxpc3Qgb2YgaXRlbXMgYW5kIHByb2Nlc3NlcyBlYWNoIGl0ZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb29wPFQ+KHBhcmFtczogTG9vcFBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgYWJvcnRTaWduYWw6IGFib3J0U2lnbmFsTmV2ZXIoKSxcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gYnVpbGROb3RpY2VNZXNzYWdlIGlzIHJlcXVpcmVkIGluIExvb3BQYXJhbXMgYW5kIGFsd2F5cyBvdmVycmlkZGVuIGJ5IHRoZSBzcHJlYWQuICovXG4gICAgYnVpbGROb3RpY2VNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2J1aWxkTm90aWNlTWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH0sXG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBpdGVtczogW10sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kczogNTAwLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzOiAyMDAwLFxuICAgIHByb2Nlc3NJdGVtOiBub29wLFxuICAgIHByb2dyZXNzQmFyVGl0bGU6ICcnLFxuICAgIHNob3VsZENvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICBzaG91bGRTaG93Tm90aWNlOiB0cnVlLFxuICAgIHNob3VsZFNob3dQcm9ncmVzc0JhcjogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM6IDEwMFxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zOiBSZXF1aXJlZDxMb29wUGFyYW1zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ucGFyYW1zXG4gIH07XG5cbiAgY29uc3Qgc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2UoMSk7XG5cbiAgY29uc3QgaXRlbXMgPSBmdWxsT3B0aW9ucy5pdGVtcztcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcblxuICBjb25zdCBwcm9ncmVzc0JhckVsID0gY3JlYXRlRWwoJ3Byb2dyZXNzJyk7XG4gIGFkZFBsdWdpbkNzc0NsYXNzZXMocHJvZ3Jlc3NCYXJFbCwgJ2xvb3AnKTtcbiAgcHJvZ3Jlc3NCYXJFbC5tYXggPSBpdGVtcy5sZW5ndGg7XG5cbiAgLy8gVGhlIGNvbnRlbnQgcHJvdmlkZXIgaXMgcmVzb2x2ZWQgb25seSBvbmNlIHRoZSBkZWxheSBlbGFwc2VzLCBzbyBpdCBkb3VibGVzIGFzIHRoZSBub3RpY2Utd2FzLXNob3duIHNpZ25hbC5cbiAgbGV0IGlzTm90aWNlU2hvd24gPSBmYWxzZSBhcyBib29sZWFuO1xuICBsZXQgbGF0ZXN0TWVzc2FnZSA9ICcnO1xuICAvLyBBIGRlbGF5ZWQgbm90aWNlIHN0YXlzIHVudGlsIGl0IGlzIGRpc3Bvc2VkLiBPYnNpZGlhbidzIGRlZmF1bHQgZHVyYXRpb24gd291bGQgaGlkZSBpdCBhIGZldyBzZWNvbmRzIGludG8gYVxuICAvLyBsb25nIHJ1biB3aGlsZSB0aGUgbG9vcCBjYXJyaWVzIG9uLlxuICBjb25zdCBkZWxheWVkTm90aWNlID0gZnVsbE9wdGlvbnMuc2hvdWxkU2hvd05vdGljZVxuICAgID8gcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudD8uc2hvd05vdGljZUFmdGVyRGVsYXkoe1xuICAgICAgY29udGVudDogKCkgPT4ge1xuICAgICAgICBpc05vdGljZVNob3duID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZ1bGxPcHRpb25zLnNob3VsZFNob3dQcm9ncmVzc0JhciA/IGJ1aWxkUHJvZ3Jlc3NCYXJGcmFnbWVudCgpIDogbGF0ZXN0TWVzc2FnZTtcbiAgICAgIH0sXG4gICAgICBkZWxheUluTWlsbGlzZWNvbmRzOiBmdWxsT3B0aW9ucy5ub3RpY2VCZWZvcmVTaG93blRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgIH0pID8/IG51bGxcbiAgICA6IG51bGw7XG5cbiAgY29uc3Qgbm90aWNlTWluVGltZW91dFByb21pc2UgPSBzbGVlcChmdWxsT3B0aW9ucy5ub3RpY2VNaW5UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICBsZXQgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChmdWxsT3B0aW9ucy5hYm9ydFNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgICBjb25zdCBpdGVyYXRpb25TdHJpbmcgPSBgIyAke1N0cmluZyhpdGVyYXRpb25Db3VudCl9IC8gJHtTdHJpbmcoaXRlbXMubGVuZ3RoKX1gO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZ1bGxPcHRpb25zLmJ1aWxkTm90aWNlTWVzc2FnZSh7IGl0ZW0sIGl0ZXJhdGlvblN0cmluZyB9KTtcbiAgICAgIGlmICghZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgICAgIGxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBpZiAoaXNOb3RpY2VTaG93bikge1xuICAgICAgICAgIGRlbGF5ZWROb3RpY2U/LnNldENvbnRlbnQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlLm5vdygpIC0gbGFzdFVJVXBkYXRlVGltZXN0YW1wID4gZnVsbE9wdGlvbnMudWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgICAgbGFzdFVJVXBkYXRlVGltZXN0YW1wID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGl0ZW0nLCBpdGVtKTtcbiAgICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICAgICAgICAgIGNhdXNlOiBlcnJvcixcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdsb29wIGZhaWxlZCcsXG4gICAgICAgICAgICBzdGFja1RyYWNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgICAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICAgICAgbWVzc2FnZTogQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICAgICAgc3RhY2tUcmFjZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gICAgICByZXBvcnRCdWxrT3BlcmF0aW9uUHJvZ3Jlc3MoKTtcbiAgICB9XG4gICAgaWYgKGlzTm90aWNlU2hvd24pIHtcbiAgICAgIGF3YWl0IG5vdGljZU1pblRpbWVvdXRQcm9taXNlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBEaXNwb3NlZCBieSBhbiBleHBsaWNpdCBgZGlzcG9zZSgpYCBjYWxsIHJhdGhlciB0aGFuIGEgYHVzaW5nYCBkZWNsYXJhdGlvbjogYHVzaW5nYCBsb29rcyB0aGUgbWV0aG9kIHVwIHVuZGVyIGFcbiAgICAvLyBkaWZmZXJlbnQga2V5IHRoYW4gdGhlIGhhbmRsZSBpcyBidWlsdCB3aXRoIG9uIGFuIGVuZ2luZSBsYWNraW5nIGBTeW1ib2wuZGlzcG9zZWAsIGFuZCBgbG9vcCgpYCBydW5zIG9uIGV2ZXJ5XG4gICAgLy8gcGxhdGZvcm0uXG4gICAgZGVsYXllZE5vdGljZT8uZGlzcG9zZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRQcm9ncmVzc0JhckZyYWdtZW50KCk6IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGZyYWdtZW50LmNyZWF0ZURpdigpLCBmdWxsT3B0aW9ucy5wcm9ncmVzc0JhclRpdGxlKTtcbiAgICBmcmFnbWVudC5hcHBlbmQocHJvZ3Jlc3NCYXJFbCk7XG4gICAgcmV0dXJuIGZyYWdtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyxrQ0FBa0M7QUFDM0M7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUlyQixTQUFTLG1DQUFtQztBQUM1QyxTQUFTLDhCQUE4QjtBQUN2QyxTQUFT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
@@ -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
  */
@@ -31,6 +31,8 @@ ensureBrowserProcess();
31
31
  })();
32
32
 
33
33
  import { normalizePromisable } from "@mnaoumov/typescript-lib/async";
34
+ import { noop } from "@mnaoumov/typescript-lib/function";
35
+ import { getObsidianLibDebugger } from "./debug.mjs";
34
36
  class PluginMarkdownCodeBlockProcessorRegistrar {
35
37
  /**
36
38
  * The Obsidian plugin instance the code block processors are registered with.
@@ -47,14 +49,27 @@ class PluginMarkdownCodeBlockProcessorRegistrar {
47
49
  /**
48
50
  * Registers a markdown code block processor.
49
51
  *
52
+ * Does nothing, and returns a no-op processor, when the plugin instance is not loaded. Obsidian `1.15.1`'s
53
+ * `Component.register` keeps a cleanup handed to an unloaded component without ever running it, so a processor
54
+ * registered by an instance that was unloaded while it was still loading (a plugin update, an install over an
55
+ * existing copy, a Hot Reload) would stay in Obsidian's global language map for the rest of the session, and the
56
+ * next instance's registration of the same language would throw `Code block postprocessor for language ... is
57
+ * already registered`.
58
+ *
50
59
  * @param params - The parameters for the markdown code block processor.
51
60
  * @returns The markdown post processor.
52
61
  */
53
62
  registerMarkdownCodeBlockProcessor(params) {
63
+ if (!this.plugin._loaded) {
64
+ getObsidianLibDebugger("PluginMarkdownCodeBlockProcessorRegistrar")(
65
+ `Skipped registering the code block processor for language ${params.language}: the plugin instance is not loaded.`
66
+ );
67
+ return noop;
68
+ }
54
69
  return this.plugin.registerMarkdownCodeBlockProcessor(params.language, (source, element, context) => normalizePromisable(params.handler(source, element, context)), params.sortOrder);
55
70
  }
56
71
  }
57
72
  export {
58
73
  PluginMarkdownCodeBlockProcessorRegistrar
59
74
  };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgTWFya2Rvd25Qb3N0UHJvY2Vzc29yLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgbm9ybWFsaXplUHJvbWlzYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5cbi8qKlxuICogQSByZWdpc3RyYXIgZm9yIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29ycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3Nvci5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqIEByZXR1cm5zIFRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3I6IChwYXJhbXM6IE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcykgPT4gTWFya2Rvd25Qb3N0UHJvY2Vzc29yO1xufVxuXG5pbnRlcmZhY2UgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXJSZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUGFyYW1zIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgZnVuY3Rpb24gZm9yIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3Nvci5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2UgY29kZSBvZiB0aGUgY29kZSBibG9jay5cbiAgICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgSFRNTCBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29kZSBibG9jay5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBmb3IgdGhlIG1hcmtkb3duIHBvc3QgcHJvY2Vzc29yLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcjogKHNvdXJjZTogc3RyaW5nLCBlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGV4dDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCkgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogVGhlIGxhbmd1YWdlIG9mIHRoZSBjb2RlIGJsb2NrIHRvIHJlZ2lzdGVyIHRoZSBwcm9jZXNzb3IgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFuZ3VhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvcnQgb3JkZXIgb2YgdGhlIHByb2Nlc3Nvci4gTG93ZXIgbnVtYmVycyBhcmUgcHJvY2Vzc2VkIGZpcnN0LiBEZWZhdWx0cyB0byAwLlxuICAgKi9cbiAgcmVhZG9ubHkgc29ydE9yZGVyPzogbnVtYmVyO1xufVxuXG50eXBlIFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyA9IE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcztcblxuLyoqXG4gKiBBIHJlZ2lzdHJhciBmb3IgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3JzLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIgaW1wbGVtZW50cyBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhciB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gcGx1Z2luIGluc3RhbmNlIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3NvcnMgYXJlIHJlZ2lzdGVyZWQgd2l0aC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvciByZWdpc3RyYXIuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIHJlZ2lzdGVyIHRoZSBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvciB3aXRoLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbjogUGx1Z2luKSB7XG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKiBAcmV0dXJucyBUaGUgbWFya2Rvd24gcG9zdCBwcm9jZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvcihwYXJhbXM6IFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyk6IE1hcmtkb3duUG9zdFByb2Nlc3NvciB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IocGFyYW1zLmxhbmd1YWdlLCAoc291cmNlLCBlbGVtZW50LCBjb250ZXh0KSA9PiBub3JtYWxpemVQcm9taXNhYmxlKHBhcmFtcy5oYW5kbGVyKHNvdXJjZSwgZWxlbWVudCwgY29udGV4dCkpLCBwYXJhbXMuc29ydE9yZGVyKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLFNBQVMsMkJBQTJCO0FBeUM3QixNQUFNLDBDQUF5RjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWpGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1osWUFBWSxRQUFnQjtBQUNqQyxTQUFLLFNBQVM7QUFBQSxFQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sbUNBQW1DLFFBQWtIO0FBQzFKLFdBQU8sS0FBSyxPQUFPLG1DQUFtQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLFNBQVMsWUFBWSxvQkFBb0IsT0FBTyxRQUFRLFFBQVEsU0FBUyxPQUFPLENBQUMsR0FBRyxPQUFPLFNBQVM7QUFBQSxFQUN0TDtBQUNGOyIsIm5hbWVzIjpbXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi1jb2RlLWJsb2NrLXByb2Nlc3Nvci1yZWdpc3RyYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgTWFya2Rvd25Qb3N0UHJvY2Vzc29yLFxuICBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgbm9ybWFsaXplUHJvbWlzYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Z1bmN0aW9uJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJEZWJ1Z2dlciB9IGZyb20gJy4vZGVidWcudHMnO1xuXG4vKipcbiAqIEEgcmVnaXN0cmFyIGZvciBtYXJrZG93biBjb2RlIGJsb2NrIHByb2Nlc3NvcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKiBAcmV0dXJucyBUaGUgbWFya2Rvd24gcG9zdCBwcm9jZXNzb3IuXG4gICAqL1xuICByZWFkb25seSByZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yOiAocGFyYW1zOiBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXMpID0+IE1hcmtkb3duUG9zdFByb2Nlc3Nvcjtcbn1cblxuaW50ZXJmYWNlIE1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyUmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIGZ1bmN0aW9uIGZvciB0aGUgY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIGNvZGUgb2YgdGhlIGNvZGUgYmxvY2suXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIEhUTUwgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvZGUgYmxvY2suXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQgZm9yIHRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHJlYWRvbmx5IGhhbmRsZXI6IChzb3VyY2U6IHN0cmluZywgZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRleHQ6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBvZiB0aGUgY29kZSBibG9jayB0byByZWdpc3RlciB0aGUgcHJvY2Vzc29yIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IG9yZGVyIG9mIHRoZSBwcm9jZXNzb3IuIExvd2VyIG51bWJlcnMgYXJlIHByb2Nlc3NlZCBmaXJzdC4gRGVmYXVsdHMgdG8gMC5cbiAgICovXG4gIHJlYWRvbmx5IHNvcnRPcmRlcj86IG51bWJlcjtcbn1cblxudHlwZSBQbHVnaW5NYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXMgPSBNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvclJlZ2lzdHJhclJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JQYXJhbXM7XG5cbi8qKlxuICogQSByZWdpc3RyYXIgZm9yIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29ycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyIGltcGxlbWVudHMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXIge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHBsdWdpbiBpbnN0YW5jZSB0aGUgY29kZSBibG9jayBwcm9jZXNzb3JzIGFyZSByZWdpc3RlcmVkIHdpdGguXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IgcmVnaXN0cmFyLlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZWdpc3RlciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3Igd2l0aC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFBsdWdpbikge1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIG1hcmtkb3duIGNvZGUgYmxvY2sgcHJvY2Vzc29yLlxuICAgKlxuICAgKiBEb2VzIG5vdGhpbmcsIGFuZCByZXR1cm5zIGEgbm8tb3AgcHJvY2Vzc29yLCB3aGVuIHRoZSBwbHVnaW4gaW5zdGFuY2UgaXMgbm90IGxvYWRlZC4gT2JzaWRpYW4gYDEuMTUuMWAnc1xuICAgKiBgQ29tcG9uZW50LnJlZ2lzdGVyYCBrZWVwcyBhIGNsZWFudXAgaGFuZGVkIHRvIGFuIHVubG9hZGVkIGNvbXBvbmVudCB3aXRob3V0IGV2ZXIgcnVubmluZyBpdCwgc28gYSBwcm9jZXNzb3JcbiAgICogcmVnaXN0ZXJlZCBieSBhbiBpbnN0YW5jZSB0aGF0IHdhcyB1bmxvYWRlZCB3aGlsZSBpdCB3YXMgc3RpbGwgbG9hZGluZyAoYSBwbHVnaW4gdXBkYXRlLCBhbiBpbnN0YWxsIG92ZXIgYW5cbiAgICogZXhpc3RpbmcgY29weSwgYSBIb3QgUmVsb2FkKSB3b3VsZCBzdGF5IGluIE9ic2lkaWFuJ3MgZ2xvYmFsIGxhbmd1YWdlIG1hcCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHNlc3Npb24sIGFuZCB0aGVcbiAgICogbmV4dCBpbnN0YW5jZSdzIHJlZ2lzdHJhdGlvbiBvZiB0aGUgc2FtZSBsYW5ndWFnZSB3b3VsZCB0aHJvdyBgQ29kZSBibG9jayBwb3N0cHJvY2Vzc29yIGZvciBsYW5ndWFnZSAuLi4gaXNcbiAgICogYWxyZWFkeSByZWdpc3RlcmVkYC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbWFya2Rvd24gY29kZSBibG9jayBwcm9jZXNzb3IuXG4gICAqIEByZXR1cm5zIFRoZSBtYXJrZG93biBwb3N0IHByb2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKHBhcmFtczogUGx1Z2luTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3JSZWdpc3RyYXJSZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUGFyYW1zKTogTWFya2Rvd25Qb3N0UHJvY2Vzc29yIHtcbiAgICBpZiAoIXRoaXMucGx1Z2luLl9sb2FkZWQpIHtcbiAgICAgIGdldE9ic2lkaWFuTGliRGVidWdnZXIoJ1BsdWdpbk1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yUmVnaXN0cmFyJykoXG4gICAgICAgIGBTa2lwcGVkIHJlZ2lzdGVyaW5nIHRoZSBjb2RlIGJsb2NrIHByb2Nlc3NvciBmb3IgbGFuZ3VhZ2UgJHtwYXJhbXMubGFuZ3VhZ2V9OiB0aGUgcGx1Z2luIGluc3RhbmNlIGlzIG5vdCBsb2FkZWQuYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsdWdpbi5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKHBhcmFtcy5sYW5ndWFnZSwgKHNvdXJjZSwgZWxlbWVudCwgY29udGV4dCkgPT4gbm9ybWFsaXplUHJvbWlzYWJsZShwYXJhbXMuaGFuZGxlcihzb3VyY2UsIGVsZW1lbnQsIGNvbnRleHQpKSwgcGFyYW1zLnNvcnRPcmRlcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLFlBQVk7QUFFckIsU0FBUyw4QkFBOEI7QUF5Q2hDLE1BQU0sMENBQXlGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJakY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQWdCO0FBQ2pDLFNBQUssU0FBUztBQUFBLEVBQ2hCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWVPLG1DQUFtQyxRQUFrSDtBQUMxSixRQUFJLENBQUMsS0FBSyxPQUFPLFNBQVM7QUFDeEIsNkJBQXVCLDJDQUEyQztBQUFBLFFBQ2hFLDZEQUE2RCxPQUFPLFFBQVE7QUFBQSxNQUM5RTtBQUNBLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxLQUFLLE9BQU8sbUNBQW1DLE9BQU8sVUFBVSxDQUFDLFFBQVEsU0FBUyxZQUFZLG9CQUFvQixPQUFPLFFBQVEsUUFBUSxTQUFTLE9BQU8sQ0FBQyxHQUFHLE9BQU8sU0FBUztBQUFBLEVBQ3RMO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -1,10 +1,34 @@
1
1
  /// <reference path="./library-references.d.mts" />
2
+ /// <reference lib="dom" />
2
3
  /**
3
4
  * @file
4
5
  *
5
6
  * Utilities for working with MarkdownView
6
7
  */
7
- import type { MarkdownView } from 'obsidian';
8
+ import type { App } from 'obsidian';
9
+ import { MarkdownView } from 'obsidian';
10
+ /**
11
+ * Options for {@link rerenderPreviews}.
12
+ */
13
+ export interface RerenderPreviewsParams {
14
+ /**
15
+ * Stops waiting for the renders when aborted, rejecting with the signal's reason. The renders already requested still
16
+ * happen.
17
+ */
18
+ readonly abortSignal?: AbortSignal;
19
+ /**
20
+ * The Obsidian app.
21
+ */
22
+ readonly app: App;
23
+ /**
24
+ * The code block language whose blocks to render again, matched exactly and case-sensitively, the way Obsidian matches a
25
+ * code block processor's language. Only the sections holding such a block are rendered again, and a view holding none
26
+ * is left alone.
27
+ *
28
+ * @default `null`, which renders every section of every Reading view again
29
+ */
30
+ readonly language?: null | string;
31
+ }
8
32
  /**
9
33
  * Get the full HTML content of the current MarkdownView
10
34
  *
@@ -12,3 +36,26 @@ import type { MarkdownView } from 'obsidian';
12
36
  * @returns The full HTML of the MarkdownView
13
37
  */
14
38
  export declare function getFullContentHtml(view: MarkdownView): string;
39
+ /**
40
+ * Renders the open Reading views again, so a markdown post-processor or code block processor registered or reconfigured
41
+ * since they rendered applies to them.
42
+ *
43
+ * It covers every Markdown view in every window, popouts included. A full refresh is what Obsidian itself does when a
44
+ * post-processor is registered: every section is rendered again, except the header holding the inline title and the
45
+ * properties, and the footer holding the backlinks, which keep their DOM. With a `language`, only the sections holding a
46
+ * code block of that language are rendered again. The note is never written, the view mode never changes, and the
47
+ * scroll position is kept by Obsidian's renderer.
48
+ *
49
+ * The promise settles once every view SHOWN in Reading view has finished rendering, the promises of asynchronous
50
+ * post-processors included. A preview that is not shown (a background tab, a view in editing mode) is marked to render
51
+ * again when it is next shown, and is not waited for, since Obsidian does not render it until then. A view that is closed,
52
+ * hidden or switched out of Reading view while rendering stops being waited for. A post-processor whose promise never
53
+ * settles, or rejects, keeps its view's render open, exactly as it keeps Obsidian's own render open; pass an
54
+ * `abortSignal` to bound the wait.
55
+ *
56
+ * Hover popovers, embeds, canvas cards and Live Preview widgets are not refreshed.
57
+ *
58
+ * @param params - The options.
59
+ * @returns A promise that resolves once the shown Reading views have rendered.
60
+ */
61
+ export declare function rerenderPreviews(params: RerenderPreviewsParams): Promise<void>;
@@ -2,7 +2,91 @@
2
2
  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
+ (function () {
6
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
7
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
8
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
9
+ }
10
+
11
+ function ensureBrowserProcess() {
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return "/";
16
+ },
17
+ env: {},
18
+ platform: "android"
19
+ };
20
+ const existingProcess = globalThis.process;
21
+ if (!existingProcess) {
22
+ globalThis.process = browserProcess;
23
+ return;
24
+ }
25
+ if (existingProcess.versions?.node) {
26
+ return;
27
+ }
28
+ const existingProcessRecord = existingProcess;
29
+ for (const [key, value] of Object.entries(browserProcess)) {
30
+ existingProcessRecord[key] ??= value;
31
+ }
32
+ existingProcessRecord["browser"] = true;
33
+ }
5
34
 
35
+ ensureDisposeSymbols();
36
+ ensureBrowserProcess();
37
+ })();
38
+
39
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
40
+ var __typeError = (msg) => {
41
+ throw TypeError(msg);
42
+ };
43
+ var __using = (stack, value, async) => {
44
+ if (value != null) {
45
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
46
+ var dispose, inner;
47
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
48
+ if (dispose === void 0) {
49
+ dispose = value[__knownSymbol("dispose")];
50
+ if (async) inner = dispose;
51
+ }
52
+ if (typeof dispose !== "function") __typeError("Object not disposable");
53
+ if (inner) dispose = function() {
54
+ try {
55
+ inner.call(this);
56
+ } catch (e) {
57
+ return Promise.reject(e);
58
+ }
59
+ };
60
+ stack.push([async, dispose, value]);
61
+ } else if (async) {
62
+ stack.push([async]);
63
+ }
64
+ return value;
65
+ };
66
+ var __callDispose = (stack, error, hasError) => {
67
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
68
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
69
+ };
70
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
71
+ var next = (it) => {
72
+ while (it = stack.pop()) {
73
+ try {
74
+ var result = it[1] && it[1].call(it[2]);
75
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
76
+ } catch (e) {
77
+ fail(e);
78
+ }
79
+ }
80
+ if (hasError) throw error;
81
+ };
82
+ return next();
83
+ };
84
+ import { onAbort } from "@mnaoumov/typescript-lib/abort-controller";
85
+ import { noop } from "@mnaoumov/typescript-lib/function";
86
+ import {
87
+ Component,
88
+ MarkdownView
89
+ } from "obsidian";
6
90
  function getFullContentHtml(view) {
7
91
  const codeMirror = view.editor.cm;
8
92
  codeMirror.viewState.printing = true;
@@ -12,7 +96,113 @@ function getFullContentHtml(view) {
12
96
  codeMirror.measure();
13
97
  return html;
14
98
  }
99
+ async function rerenderPreviews(params) {
100
+ var _stack = [];
101
+ try {
102
+ const { abortSignal, app, language = null } = params;
103
+ abortSignal?.throwIfAborted();
104
+ const views = [];
105
+ app.workspace.iterateAllLeaves((leaf) => {
106
+ if (leaf.view instanceof MarkdownView) {
107
+ views.push(leaf.view);
108
+ }
109
+ });
110
+ const waits = [];
111
+ for (const view of views) {
112
+ const isShown = isPreviewShown(view);
113
+ const scroll = isShown ? view.previewMode.getScroll() : null;
114
+ if (language === null) {
115
+ view.previewMode.rerender(true);
116
+ } else {
117
+ const sections = getSectionsWithLanguage(view.previewMode, language);
118
+ if (sections.length === 0) {
119
+ continue;
120
+ }
121
+ rerenderSections(view.previewMode, sections);
122
+ }
123
+ if (scroll !== null) {
124
+ waits.push(waitForPreviewRender(app, view, scroll));
125
+ }
126
+ }
127
+ if (waits.length === 0) {
128
+ return;
129
+ }
130
+ const allRendered = Promise.all(waits);
131
+ if (!abortSignal) {
132
+ await allRendered;
133
+ return;
134
+ }
135
+ let resolveAborted = noop;
136
+ const aborted = new Promise((resolve) => {
137
+ resolveAborted = resolve;
138
+ });
139
+ const _abortListener = __using(_stack, onAbort(abortSignal, () => {
140
+ resolveAborted();
141
+ }));
142
+ await Promise.race([allRendered, aborted]);
143
+ abortSignal.throwIfAborted();
144
+ } catch (_) {
145
+ var _error = _, _hasError = true;
146
+ } finally {
147
+ __callDispose(_stack, _error, _hasError);
148
+ }
149
+ }
150
+ function getSectionsWithLanguage(previewMode, language) {
151
+ const { renderer } = previewMode;
152
+ const selector = `code.language-${CSS.escape(language)}`;
153
+ const parser = new DOMParser();
154
+ return renderer.sections.filter(
155
+ (section) => section !== renderer.header && section !== renderer.footer && !!section.html && parser.parseFromString(section.html, "text/html").querySelector(selector) !== null
156
+ );
157
+ }
158
+ function isPreviewShown(view) {
159
+ if (view.getMode() !== "preview") {
160
+ return false;
161
+ }
162
+ const { previewEl } = view.previewMode.renderer;
163
+ return previewEl.isConnected && previewEl.offsetParent !== null && previewEl.offsetWidth > 0;
164
+ }
165
+ function rerenderSections(previewMode, sections) {
166
+ for (const section of sections) {
167
+ section.rendered = false;
168
+ section.el.empty();
169
+ }
170
+ previewMode.renderer.queueRender();
171
+ }
172
+ async function waitForPreviewRender(app, view, scroll) {
173
+ const { previewMode } = view;
174
+ const isRendered = await new Promise((resolve) => {
175
+ let isSettled = false;
176
+ const watcher = new Component();
177
+ function settle(isRenderedNow) {
178
+ if (isSettled) {
179
+ return;
180
+ }
181
+ isSettled = true;
182
+ previewMode.removeChild(watcher);
183
+ resolve(isRenderedNow);
184
+ }
185
+ function settleIfHidden() {
186
+ if (!isPreviewShown(view)) {
187
+ settle(false);
188
+ }
189
+ }
190
+ watcher.register(() => {
191
+ settle(false);
192
+ });
193
+ watcher.registerEvent(app.workspace.on("layout-change", settleIfHidden));
194
+ watcher.registerEvent(app.workspace.on("active-leaf-change", settleIfHidden));
195
+ previewMode.addChild(watcher);
196
+ previewMode.renderer.onRendered(() => {
197
+ settle(true);
198
+ });
199
+ });
200
+ if (isRendered) {
201
+ previewMode.applyScroll(scroll);
202
+ }
203
+ }
15
204
  export {
16
- getFullContentHtml
205
+ getFullContentHtml,
206
+ rerenderPreviews
17
207
  };
18
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21hcmtkb3duLXZpZXcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBNYXJrZG93blZpZXdcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1hcmtkb3duVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgSFRNTCBjb250ZW50IG9mIHRoZSBjdXJyZW50IE1hcmtkb3duVmlld1xuICpcbiAqIEBwYXJhbSB2aWV3IC0gVGhlIE1hcmtkb3duVmlldyB0byBnZXQgdGhlIEhUTUwgZnJvbVxuICogQHJldHVybnMgVGhlIGZ1bGwgSFRNTCBvZiB0aGUgTWFya2Rvd25WaWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsQ29udGVudEh0bWwodmlldzogTWFya2Rvd25WaWV3KTogc3RyaW5nIHtcbiAgY29uc3QgY29kZU1pcnJvciA9IHZpZXcuZWRpdG9yLmNtO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IHRydWU7XG4gIGNvZGVNaXJyb3IubWVhc3VyZSgpO1xuICBjb25zdCBodG1sID0gdmlldy5jb250ZW50RWwuaW5uZXJIVE1MO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IGZhbHNlO1xuICBjb2RlTWlycm9yLm1lYXN1cmUoKTtcbiAgcmV0dXJuIGh0bWw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQWNPLFNBQVMsbUJBQW1CLE1BQTRCO0FBQzdELFFBQU0sYUFBYSxLQUFLLE9BQU87QUFDL0IsYUFBVyxVQUFVLFdBQVc7QUFDaEMsYUFBVyxRQUFRO0FBQ25CLFFBQU0sT0FBTyxLQUFLLFVBQVU7QUFDNUIsYUFBVyxVQUFVLFdBQVc7QUFDaEMsYUFBVyxRQUFRO0FBQ25CLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBNYXJrZG93blZpZXdcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlbmRlcmVyU2VjdGlvbiB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIE1hcmtkb3duUHJldmlld1ZpZXdcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBvbkFib3J0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE1hcmtkb3duVmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcmVuZGVyUHJldmlld3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcmVuZGVyUHJldmlld3NQYXJhbXMge1xuICAvKipcbiAgICogU3RvcHMgd2FpdGluZyBmb3IgdGhlIHJlbmRlcnMgd2hlbiBhYm9ydGVkLCByZWplY3Rpbmcgd2l0aCB0aGUgc2lnbmFsJ3MgcmVhc29uLiBUaGUgcmVuZGVycyBhbHJlYWR5IHJlcXVlc3RlZCBzdGlsbFxuICAgKiBoYXBwZW4uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIHdob3NlIGJsb2NrcyB0byByZW5kZXIgYWdhaW4sIG1hdGNoZWQgZXhhY3RseSBhbmQgY2FzZS1zZW5zaXRpdmVseSwgdGhlIHdheSBPYnNpZGlhbiBtYXRjaGVzIGFcbiAgICogY29kZSBibG9jayBwcm9jZXNzb3IncyBsYW5ndWFnZS4gT25seSB0aGUgc2VjdGlvbnMgaG9sZGluZyBzdWNoIGEgYmxvY2sgYXJlIHJlbmRlcmVkIGFnYWluLCBhbmQgYSB2aWV3IGhvbGRpbmcgbm9uZVxuICAgKiBpcyBsZWZ0IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbnVsbGAsIHdoaWNoIHJlbmRlcnMgZXZlcnkgc2VjdGlvbiBvZiBldmVyeSBSZWFkaW5nIHZpZXcgYWdhaW5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlPzogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgSFRNTCBjb250ZW50IG9mIHRoZSBjdXJyZW50IE1hcmtkb3duVmlld1xuICpcbiAqIEBwYXJhbSB2aWV3IC0gVGhlIE1hcmtkb3duVmlldyB0byBnZXQgdGhlIEhUTUwgZnJvbVxuICogQHJldHVybnMgVGhlIGZ1bGwgSFRNTCBvZiB0aGUgTWFya2Rvd25WaWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsQ29udGVudEh0bWwodmlldzogTWFya2Rvd25WaWV3KTogc3RyaW5nIHtcbiAgY29uc3QgY29kZU1pcnJvciA9IHZpZXcuZWRpdG9yLmNtO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IHRydWU7XG4gIGNvZGVNaXJyb3IubWVhc3VyZSgpO1xuICBjb25zdCBodG1sID0gdmlldy5jb250ZW50RWwuaW5uZXJIVE1MO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IGZhbHNlO1xuICBjb2RlTWlycm9yLm1lYXN1cmUoKTtcbiAgcmV0dXJuIGh0bWw7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgb3BlbiBSZWFkaW5nIHZpZXdzIGFnYWluLCBzbyBhIG1hcmtkb3duIHBvc3QtcHJvY2Vzc29yIG9yIGNvZGUgYmxvY2sgcHJvY2Vzc29yIHJlZ2lzdGVyZWQgb3IgcmVjb25maWd1cmVkXG4gKiBzaW5jZSB0aGV5IHJlbmRlcmVkIGFwcGxpZXMgdG8gdGhlbS5cbiAqXG4gKiBJdCBjb3ZlcnMgZXZlcnkgTWFya2Rvd24gdmlldyBpbiBldmVyeSB3aW5kb3csIHBvcG91dHMgaW5jbHVkZWQuIEEgZnVsbCByZWZyZXNoIGlzIHdoYXQgT2JzaWRpYW4gaXRzZWxmIGRvZXMgd2hlbiBhXG4gKiBwb3N0LXByb2Nlc3NvciBpcyByZWdpc3RlcmVkOiBldmVyeSBzZWN0aW9uIGlzIHJlbmRlcmVkIGFnYWluLCBleGNlcHQgdGhlIGhlYWRlciBob2xkaW5nIHRoZSBpbmxpbmUgdGl0bGUgYW5kIHRoZVxuICogcHJvcGVydGllcywgYW5kIHRoZSBmb290ZXIgaG9sZGluZyB0aGUgYmFja2xpbmtzLCB3aGljaCBrZWVwIHRoZWlyIERPTS4gV2l0aCBhIGBsYW5ndWFnZWAsIG9ubHkgdGhlIHNlY3Rpb25zIGhvbGRpbmcgYVxuICogY29kZSBibG9jayBvZiB0aGF0IGxhbmd1YWdlIGFyZSByZW5kZXJlZCBhZ2Fpbi4gVGhlIG5vdGUgaXMgbmV2ZXIgd3JpdHRlbiwgdGhlIHZpZXcgbW9kZSBuZXZlciBjaGFuZ2VzLCBhbmQgdGhlXG4gKiBzY3JvbGwgcG9zaXRpb24gaXMga2VwdCBieSBPYnNpZGlhbidzIHJlbmRlcmVyLlxuICpcbiAqIFRoZSBwcm9taXNlIHNldHRsZXMgb25jZSBldmVyeSB2aWV3IFNIT1dOIGluIFJlYWRpbmcgdmlldyBoYXMgZmluaXNoZWQgcmVuZGVyaW5nLCB0aGUgcHJvbWlzZXMgb2YgYXN5bmNocm9ub3VzXG4gKiBwb3N0LXByb2Nlc3NvcnMgaW5jbHVkZWQuIEEgcHJldmlldyB0aGF0IGlzIG5vdCBzaG93biAoYSBiYWNrZ3JvdW5kIHRhYiwgYSB2aWV3IGluIGVkaXRpbmcgbW9kZSkgaXMgbWFya2VkIHRvIHJlbmRlclxuICogYWdhaW4gd2hlbiBpdCBpcyBuZXh0IHNob3duLCBhbmQgaXMgbm90IHdhaXRlZCBmb3IsIHNpbmNlIE9ic2lkaWFuIGRvZXMgbm90IHJlbmRlciBpdCB1bnRpbCB0aGVuLiBBIHZpZXcgdGhhdCBpcyBjbG9zZWQsXG4gKiBoaWRkZW4gb3Igc3dpdGNoZWQgb3V0IG9mIFJlYWRpbmcgdmlldyB3aGlsZSByZW5kZXJpbmcgc3RvcHMgYmVpbmcgd2FpdGVkIGZvci4gQSBwb3N0LXByb2Nlc3NvciB3aG9zZSBwcm9taXNlIG5ldmVyXG4gKiBzZXR0bGVzLCBvciByZWplY3RzLCBrZWVwcyBpdHMgdmlldydzIHJlbmRlciBvcGVuLCBleGFjdGx5IGFzIGl0IGtlZXBzIE9ic2lkaWFuJ3Mgb3duIHJlbmRlciBvcGVuOyBwYXNzIGFuXG4gKiBgYWJvcnRTaWduYWxgIHRvIGJvdW5kIHRoZSB3YWl0LlxuICpcbiAqIEhvdmVyIHBvcG92ZXJzLCBlbWJlZHMsIGNhbnZhcyBjYXJkcyBhbmQgTGl2ZSBQcmV2aWV3IHdpZGdldHMgYXJlIG5vdCByZWZyZXNoZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25zLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgc2hvd24gUmVhZGluZyB2aWV3cyBoYXZlIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVyZW5kZXJQcmV2aWV3cyhwYXJhbXM6IFJlcmVuZGVyUHJldmlld3NQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhYm9ydFNpZ25hbCwgYXBwLCBsYW5ndWFnZSA9IG51bGwgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgY29uc3Qgdmlld3M6IE1hcmtkb3duVmlld1tdID0gW107XG4gIGFwcC53b3Jrc3BhY2UuaXRlcmF0ZUFsbExlYXZlcygobGVhZikgPT4ge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHtcbiAgICAgIHZpZXdzLnB1c2gobGVhZi52aWV3KTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHdhaXRzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgZm9yIChjb25zdCB2aWV3IG9mIHZpZXdzKSB7XG4gICAgY29uc3QgaXNTaG93biA9IGlzUHJldmlld1Nob3duKHZpZXcpO1xuICAgIC8vIEVtcHR5aW5nIHRoZSBzZWN0aW9ucyBzaHJpbmtzIHRoZSBjb250ZW50IGJlZm9yZSB0aGUgbmV4dCBmcmFtZSByZW5kZXJzIGl0IGFnYWluLCB3aGljaCBjYW4gY2xhbXAgdGhlIHNjcm9sbC5cbiAgICBjb25zdCBzY3JvbGwgPSBpc1Nob3duID8gdmlldy5wcmV2aWV3TW9kZS5nZXRTY3JvbGwoKSA6IG51bGw7XG4gICAgaWYgKGxhbmd1YWdlID09PSBudWxsKSB7XG4gICAgICB2aWV3LnByZXZpZXdNb2RlLnJlcmVuZGVyKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWN0aW9ucyA9IGdldFNlY3Rpb25zV2l0aExhbmd1YWdlKHZpZXcucHJldmlld01vZGUsIGxhbmd1YWdlKTtcbiAgICAgIGlmIChzZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXJlbmRlclNlY3Rpb25zKHZpZXcucHJldmlld01vZGUsIHNlY3Rpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsICE9PSBudWxsKSB7XG4gICAgICB3YWl0cy5wdXNoKHdhaXRGb3JQcmV2aWV3UmVuZGVyKGFwcCwgdmlldywgc2Nyb2xsKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHdhaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFsbFJlbmRlcmVkID0gUHJvbWlzZS5hbGwod2FpdHMpO1xuICBpZiAoIWFib3J0U2lnbmFsKSB7XG4gICAgYXdhaXQgYWxsUmVuZGVyZWQ7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHJlc29sdmVBYm9ydGVkID0gbm9vcDtcbiAgY29uc3QgYWJvcnRlZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgcmVzb2x2ZUFib3J0ZWQgPSByZXNvbHZlO1xuICB9KTtcbiAgdXNpbmcgX2Fib3J0TGlzdGVuZXIgPSBvbkFib3J0KGFib3J0U2lnbmFsLCAoKSA9PiB7XG4gICAgcmVzb2x2ZUFib3J0ZWQoKTtcbiAgfSk7XG4gIGF3YWl0IFByb21pc2UucmFjZShbYWxsUmVuZGVyZWQsIGFib3J0ZWRdKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VjdGlvbnNXaXRoTGFuZ3VhZ2UocHJldmlld01vZGU6IE1hcmtkb3duUHJldmlld1ZpZXcsIGxhbmd1YWdlOiBzdHJpbmcpOiBSZW5kZXJlclNlY3Rpb25bXSB7XG4gIGNvbnN0IHsgcmVuZGVyZXIgfSA9IHByZXZpZXdNb2RlO1xuICBjb25zdCBzZWxlY3RvciA9IGBjb2RlLmxhbmd1YWdlLSR7Q1NTLmVzY2FwZShsYW5ndWFnZSl9YDtcbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXIgY2Fycnkgbm8gSFRNTCBvZiB0aGVpciBvd24uIEEgc2VjdGlvbidzIEhUTUwgaXMgcGFyc2VkIGludG8gYW4gaW5lcnQgZG9jdW1lbnQ6IG5vdGhpbmcgcnVuc1xuICAvLyBhbmQgbm90aGluZyBsb2Fkcy5cbiAgcmV0dXJuIHJlbmRlcmVyLnNlY3Rpb25zLmZpbHRlcigoc2VjdGlvbikgPT5cbiAgICBzZWN0aW9uICE9PSByZW5kZXJlci5oZWFkZXIgJiYgc2VjdGlvbiAhPT0gcmVuZGVyZXIuZm9vdGVyICYmICEhc2VjdGlvbi5odG1sXG4gICAgJiYgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzZWN0aW9uLmh0bWwsICd0ZXh0L2h0bWwnKS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSAhPT0gbnVsbFxuICApO1xufVxuXG5mdW5jdGlvbiBpc1ByZXZpZXdTaG93bih2aWV3OiBNYXJrZG93blZpZXcpOiBib29sZWFuIHtcbiAgaWYgKHZpZXcuZ2V0TW9kZSgpICE9PSAncHJldmlldycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBUaGUgc2FtZSB2aXNpYmlsaXR5IHRlc3QgYFJlYWRWaWV3UmVuZGVyZXIub25SZW5kZXJgIG1ha2VzIGJlZm9yZSBpdCByZW5kZXJzIGFueXRoaW5nLlxuICBjb25zdCB7IHByZXZpZXdFbCB9ID0gdmlldy5wcmV2aWV3TW9kZS5yZW5kZXJlcjtcbiAgcmV0dXJuIHByZXZpZXdFbC5pc0Nvbm5lY3RlZCAmJiBwcmV2aWV3RWwub2Zmc2V0UGFyZW50ICE9PSBudWxsICYmIHByZXZpZXdFbC5vZmZzZXRXaWR0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIHJlcmVuZGVyU2VjdGlvbnMocHJldmlld01vZGU6IE1hcmtkb3duUHJldmlld1ZpZXcsIHNlY3Rpb25zOiByZWFkb25seSBSZW5kZXJlclNlY3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICBzZWN0aW9uLnJlbmRlcmVkID0gZmFsc2U7XG4gICAgc2VjdGlvbi5lbC5lbXB0eSgpO1xuICB9XG4gIHByZXZpZXdNb2RlLnJlbmRlcmVyLnF1ZXVlUmVuZGVyKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQcmV2aWV3UmVuZGVyKGFwcDogQXBwLCB2aWV3OiBNYXJrZG93blZpZXcsIHNjcm9sbDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcHJldmlld01vZGUgfSA9IHZpZXc7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBhd2FpdCBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBpc1NldHRsZWQgPSBmYWxzZTtcbiAgICBjb25zdCB3YXRjaGVyID0gbmV3IENvbXBvbmVudCgpO1xuXG4gICAgZnVuY3Rpb24gc2V0dGxlKGlzUmVuZGVyZWROb3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIGlmIChpc1NldHRsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXNTZXR0bGVkID0gdHJ1ZTtcbiAgICAgIC8vIEEgbm8tb3Agd2hlbiB0aGUgcHJldmlldyBpcyB1bmxvYWRpbmcsIHNpbmNlIGl0IGhhcyBhbHJlYWR5IHRha2VuIHRoZSB3YXRjaGVyIG9mZiBpdHMgY2hpbGRyZW4uXG4gICAgICBwcmV2aWV3TW9kZS5yZW1vdmVDaGlsZCh3YXRjaGVyKTtcbiAgICAgIHJlc29sdmUoaXNSZW5kZXJlZE5vdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0dGxlSWZIaWRkZW4oKTogdm9pZCB7XG4gICAgICBpZiAoIWlzUHJldmlld1Nob3duKHZpZXcpKSB7XG4gICAgICAgIHNldHRsZShmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hlci5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBzZXR0bGUoZmFsc2UpO1xuICAgIH0pO1xuICAgIHdhdGNoZXIucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdsYXlvdXQtY2hhbmdlJywgc2V0dGxlSWZIaWRkZW4pKTtcbiAgICB3YXRjaGVyLnJlZ2lzdGVyRXZlbnQoYXBwLndvcmtzcGFjZS5vbignYWN0aXZlLWxlYWYtY2hhbmdlJywgc2V0dGxlSWZIaWRkZW4pKTtcbiAgICBwcmV2aWV3TW9kZS5hZGRDaGlsZCh3YXRjaGVyKTtcbiAgICBwcmV2aWV3TW9kZS5yZW5kZXJlci5vblJlbmRlcmVkKCgpID0+IHtcbiAgICAgIHNldHRsZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaWYgKGlzUmVuZGVyZWQpIHtcbiAgICBwcmV2aWV3TW9kZS5hcHBseVNjcm9sbChzY3JvbGwpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FB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
@@ -5,6 +5,7 @@
5
5
  * This module provides utility functions for working with the metadata cache in Obsidian.
6
6
  */
7
7
  import type { RetryOptions } from '@mnaoumov/typescript-lib/async';
8
+ import type { DisposableEx } from '@mnaoumov/typescript-lib/disposable';
8
9
  import type { CustomArrayDict } from '@obsidian-typings/obsidian-public-latest';
9
10
  import type { App, CachedMetadata, Reference, TAbstractFile } from 'obsidian';
10
11
  import type { PathOrFile } from './file-system.mjs';
@@ -322,17 +323,17 @@ export declare function parseMetadata(app: App, $string: string, options?: Parse
322
323
  * Registers the file cache for a non-existing file.
323
324
  *
324
325
  * @param params - The parameters for registering the file cache.
325
- * @returns A {@link Disposable} that unregisters the file cache when disposed, for use with `using`.
326
+ * @returns A {@link DisposableEx} that unregisters the file cache when disposed, for use with `using`.
326
327
  */
327
- export declare function registerFileCacheForNonExistingFile(params: RegisterFileCacheForNonExistingFileParams): Disposable;
328
+ export declare function registerFileCacheForNonExistingFile(params: RegisterFileCacheForNonExistingFileParams): DisposableEx;
328
329
  /**
329
330
  * Registers files in the Obsidian app.
330
331
  *
331
332
  * @param app - The Obsidian app instance.
332
333
  * @param files - The files to register.
333
- * @returns A {@link Disposable} that unregisters the files when disposed, for use with `using`.
334
+ * @returns A {@link DisposableEx} that unregisters the files when disposed, for use with `using`.
334
335
  */
335
- export declare function registerFiles(app: App, files: TAbstractFile[]): Disposable;
336
+ export declare function registerFiles(app: App, files: TAbstractFile[]): DisposableEx;
336
337
  /**
337
338
  * Unregisters the file cache for a non-existing file.
338
339
  *