@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.
- package/README.md +26 -0
- package/components/all-windows-status-bar-item-component/package.json +6 -0
- package/components/shared-component-pool-component/package.json +6 -0
- package/components/worker-component/package.json +6 -0
- package/components/worker-pool-component/package.json +6 -0
- package/components/workspace-layout-state-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +477 -285
- package/dist/lib/cjs/__merged.d.cts +26 -10
- package/dist/lib/cjs/anchored-suggest.cjs +1 -1
- package/dist/lib/cjs/app.cjs +2 -2
- package/dist/lib/cjs/async-with-notice.cjs +4 -4
- package/dist/lib/cjs/attachment-path.cjs +9 -9
- package/dist/lib/cjs/attachment-path.d.cts +3 -3
- package/dist/lib/cjs/attachment-unit-folder.cjs +2 -2
- package/dist/lib/cjs/backlink-index.cjs +5 -5
- package/dist/lib/cjs/backlink.cjs +7 -7
- package/dist/lib/cjs/bases-view-registrar.cjs +1 -1
- package/dist/lib/cjs/broken-link-candidates.cjs +1 -1
- package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
- package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
- package/dist/lib/cjs/bug-report.cjs +38 -12
- package/dist/lib/cjs/bug-report.d.cts +65 -0
- package/dist/lib/cjs/bulk-operation-progress.cjs +1 -1
- package/dist/lib/cjs/bulk-operation.cjs +2 -2
- package/dist/lib/cjs/callout.cjs +6 -6
- package/dist/lib/cjs/canvas.cjs +11 -9
- package/dist/lib/cjs/canvas.d.cts +13 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -3
- package/dist/lib/cjs/code-block-render-handoff.cjs +5 -5
- package/dist/lib/cjs/codemirror/editor-mode-extension.cjs +4 -4
- package/dist/lib/cjs/codemirror/incremental-parse-state-field.cjs +2 -2
- package/dist/lib/cjs/codemirror/index.cjs +7 -7
- package/dist/lib/cjs/codemirror/inline-token-widgets.cjs +5 -5
- package/dist/lib/cjs/codemirror/markdown-editor-views.cjs +2 -2
- package/dist/lib/cjs/codemirror/settings-facet.cjs +1 -1
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +17 -17
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +13 -13
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -2
- package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +7 -7
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -3
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/index.cjs +15 -15
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +95 -4
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-discussion-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-feature-request-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/open-git-hub-command-handler.cjs +1 -1
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +2 -2
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -1
- package/dist/lib/cjs/community-plugins.cjs +3 -3
- package/dist/lib/cjs/components/abort-signal-component.cjs +2 -2
- package/dist/lib/cjs/components/all-windows-event-component.cjs +5 -5
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
- package/dist/lib/cjs/components/async-error-handler-component.cjs +5 -5
- package/dist/lib/cjs/components/async-events-component.cjs +1 -1
- package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +12 -12
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +2 -2
- package/dist/lib/cjs/components/component-ex.cjs +21 -11
- package/dist/lib/cjs/components/component-ex.d.cts +11 -0
- package/dist/lib/cjs/components/console-debug-component.cjs +2 -2
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -2
- package/dist/lib/cjs/components/disposable-component.cjs +2 -2
- package/dist/lib/cjs/components/embed-extensions-component.cjs +21 -4
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +24 -10
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
- package/dist/lib/cjs/components/file-explorer-root-menu-component.cjs +7 -7
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +2 -2
- package/dist/lib/cjs/components/incremental-file-index-component.cjs +4 -4
- package/dist/lib/cjs/components/index.cjs +54 -39
- package/dist/lib/cjs/components/index.d.cts +5 -0
- package/dist/lib/cjs/components/layout-ready-component.cjs +3 -3
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +2 -2
- package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-context-component.cjs +5 -5
- package/dist/lib/cjs/components/plugin-gate-component.cjs +69 -36
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +36 -13
- package/dist/lib/cjs/components/plugin-notice-component.cjs +39 -33
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +4 -3
- package/dist/lib/cjs/components/plugin-settings-component.cjs +119 -18
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +35 -5
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -2
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +8 -8
- package/dist/lib/cjs/components/pointer-position-component.cjs +2 -2
- package/dist/lib/cjs/components/reconfigurable-editor-extension-component.cjs +3 -3
- package/dist/lib/cjs/components/registry-component.cjs +2 -2
- package/dist/lib/cjs/components/release-notes-component.cjs +6 -6
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +25 -25
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +2 -2
- package/dist/lib/cjs/components/settings-facet-component.cjs +1 -1
- package/dist/lib/cjs/components/settings-migration-component.cjs +5 -5
- package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
- package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
- package/dist/lib/cjs/components/style-sheet-component.cjs +3 -3
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -3
- package/dist/lib/cjs/components/templates-language-component.cjs +1 -1
- package/dist/lib/cjs/components/worker-component.cjs +363 -0
- package/dist/lib/cjs/components/worker-component.d.cts +156 -0
- package/dist/lib/cjs/components/worker-pool-component.cjs +185 -0
- package/dist/lib/cjs/components/worker-pool-component.d.cts +102 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +5 -5
- package/dist/lib/cjs/constructors/index.cjs +1 -1
- package/dist/lib/cjs/css-class.cjs +5 -1
- package/dist/lib/cjs/css-class.d.cts +16 -0
- package/dist/lib/cjs/data-handler.cjs +264 -6
- package/dist/lib/cjs/data-handler.d.cts +219 -2
- package/dist/lib/cjs/data-stores/data-store-locations.cjs +82 -24
- package/dist/lib/cjs/data-stores/data-store-locations.d.cts +15 -0
- package/dist/lib/cjs/data-stores/data-store-replica.cjs +33 -5
- package/dist/lib/cjs/data-stores/data-store-seeds.cjs +6 -6
- package/dist/lib/cjs/data-stores/data-store-seeds.d.cts +2 -2
- package/dist/lib/cjs/data-stores/data-store-transport.cjs +81 -8
- package/dist/lib/cjs/data-stores/data-store-transport.d.cts +30 -1
- package/dist/lib/cjs/data-stores/index.cjs +6 -6
- package/dist/lib/cjs/data-stores/local-data-store.cjs +74 -10
- package/dist/lib/cjs/data-stores/local-data-store.d.cts +58 -1
- package/dist/lib/cjs/data-stores/shared-data-store.cjs +76 -19
- package/dist/lib/cjs/data-stores/shared-data-store.d.cts +18 -1
- package/dist/lib/cjs/dataview-link.cjs +2 -2
- package/dist/lib/cjs/dataview.cjs +27 -7
- package/dist/lib/cjs/dataview.d.cts +14 -0
- package/dist/lib/cjs/debug.cjs +3 -3
- package/dist/lib/cjs/demo-vault-helper.cjs +34 -6
- package/dist/lib/cjs/demo-vault-helper.d.cts +6 -2
- package/dist/lib/cjs/desktop-bulk-operation-git.cjs +10 -10
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +13 -13
- package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
- package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
- package/dist/lib/cjs/desktop-operating-system.cjs +1 -1
- package/dist/lib/cjs/desktop-request-url-stream.cjs +8 -14
- package/dist/lib/cjs/desktop-trusted-input.cjs +2 -2
- package/dist/lib/cjs/disposable.cjs +150 -0
- package/dist/lib/cjs/disposable.d.cts +39 -0
- package/dist/lib/cjs/editor-extension-registrar.cjs +1 -1
- package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -2
- package/dist/lib/cjs/editor-suggest.cjs +1 -1
- package/dist/lib/cjs/editor.cjs +6 -6
- package/dist/lib/cjs/events.cjs +2 -2
- package/dist/lib/cjs/extensions-registrar.cjs +1 -1
- package/dist/lib/cjs/feature-request.cjs +1 -1
- package/dist/lib/cjs/file-change.cjs +10 -10
- package/dist/lib/cjs/file-explorer.cjs +2 -2
- package/dist/lib/cjs/file-manager.cjs +5 -5
- package/dist/lib/cjs/file-system.cjs +10 -10
- package/dist/lib/cjs/folder-note.cjs +4 -4
- package/dist/lib/cjs/frontmatter-formatting.cjs +7 -6
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +1 -1
- package/dist/lib/cjs/frontmatter.cjs +5 -5
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/git-rename-history.cjs +1 -1
- package/dist/lib/cjs/git-rename-history.d.cts +2 -2
- package/dist/lib/cjs/hotkey.cjs +1 -1
- package/dist/lib/cjs/hover-link-source-registrar.cjs +1 -1
- package/dist/lib/cjs/html-element.cjs +2 -2
- package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -1
- package/dist/lib/cjs/i18n/default-translations.cjs +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +7 -7
- package/dist/lib/cjs/i18n/index.cjs +4 -4
- package/dist/lib/cjs/i18n/locales/en.cjs +27 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +26 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +2 -2
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +26 -0
- package/dist/lib/cjs/index.cjs +147 -126
- package/dist/lib/cjs/index.d.cts +7 -0
- package/dist/lib/cjs/inline-token-renderer.cjs +2 -2
- package/dist/lib/cjs/is-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/library-styles.cjs +3 -3
- package/dist/lib/cjs/link-and-tag-input-suggest.cjs +2 -2
- package/dist/lib/cjs/link.cjs +76 -56
- package/dist/lib/cjs/link.d.cts +20 -14
- package/dist/lib/cjs/logger.cjs +4 -4
- package/dist/lib/cjs/loop.cjs +10 -16
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +17 -2
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +7 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +13 -13
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -2
- package/dist/lib/cjs/markdown-view.cjs +191 -3
- package/dist/lib/cjs/markdown-view.d.cts +48 -1
- package/dist/lib/cjs/markdown.cjs +12 -12
- package/dist/lib/cjs/metadata-cache.cjs +23 -23
- package/dist/lib/cjs/metadata-cache.d.cts +5 -4
- package/dist/lib/cjs/misplaced-attachment.cjs +297 -0
- package/dist/lib/cjs/misplaced-attachment.d.cts +228 -0
- package/dist/lib/cjs/mobile-app-info.cjs +1 -1
- package/dist/lib/cjs/modals/alert.cjs +4 -4
- package/dist/lib/cjs/modals/code-block-builder.cjs +7 -7
- package/dist/lib/cjs/modals/confirm.cjs +4 -4
- package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
- package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
- package/dist/lib/cjs/modals/index.cjs +17 -11
- package/dist/lib/cjs/modals/index.d.cts +2 -0
- package/dist/lib/cjs/modals/minimizable-modal.cjs +6 -6
- package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -3
- package/dist/lib/cjs/modals/modal.cjs +3 -3
- package/dist/lib/cjs/modals/prompt.cjs +10 -10
- package/dist/lib/cjs/modals/prompt.d.cts +1 -1
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
- package/dist/lib/cjs/modals/select-item.cjs +6 -6
- package/dist/lib/cjs/modals/select-option.cjs +3 -3
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -1
- package/dist/lib/cjs/note-priority.cjs +2 -2
- package/dist/lib/cjs/notebook-navigator.cjs +12 -2
- package/dist/lib/cjs/notebook-navigator.d.cts +6 -0
- package/dist/lib/cjs/obsidian-lib-state.cjs +1 -1
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian-settings.cjs +1 -1
- package/dist/lib/cjs/obsidian-word-characters.cjs +1 -1
- package/dist/lib/cjs/parse-link.cjs +14 -14
- package/dist/lib/cjs/path-compatibility.cjs +368 -0
- package/dist/lib/cjs/path-compatibility.d.cts +263 -0
- package/dist/lib/cjs/path-settings.cjs +3 -3
- package/dist/lib/cjs/pdf.cjs +2 -2
- package/dist/lib/cjs/plugin/index.cjs +18 -12
- package/dist/lib/cjs/plugin/index.d.cts +2 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +21 -12
- package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
- package/dist/lib/cjs/plugin/plugin-async-cleanup.cjs +6 -3
- package/dist/lib/cjs/plugin/plugin-async-cleanup.d.cts +5 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +10 -9
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +4 -4
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +49 -4
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
- package/dist/lib/cjs/plugin/plugin-instance.cjs +450 -0
- package/dist/lib/cjs/plugin/plugin-instance.d.cts +258 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -1
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +6 -4
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +15 -15
- package/dist/lib/cjs/plugin/plugin.cjs +133 -34
- package/dist/lib/cjs/plugin/plugin.d.cts +35 -5
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +1 -1
- package/dist/lib/cjs/plugin/third-party-plugin.cjs +231 -0
- package/dist/lib/cjs/plugin/third-party-plugin.d.cts +244 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -2
- package/dist/lib/cjs/popovers/field-popover.cjs +4 -4
- package/dist/lib/cjs/popovers/index.cjs +3 -3
- package/dist/lib/cjs/popovers/popover-anchor.cjs +1 -1
- package/dist/lib/cjs/popovers/popover.cjs +5 -5
- package/dist/lib/cjs/queue.cjs +8 -8
- package/dist/lib/cjs/react/app-context.cjs +3 -3
- package/dist/lib/cjs/react/index.cjs +1 -1
- package/dist/lib/cjs/reference-definition.cjs +1 -1
- package/dist/lib/cjs/reference.cjs +3 -3
- package/dist/lib/cjs/release-asset.cjs +5 -5
- package/dist/lib/cjs/rendered-markdown.cjs +4 -4
- package/dist/lib/cjs/request-url.cjs +4 -4
- package/dist/lib/cjs/resource-lock.cjs +46 -42
- package/dist/lib/cjs/resource-lock.d.cts +8 -7
- package/dist/lib/cjs/resource-url.cjs +3 -3
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +1 -1
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +7 -7
- package/dist/lib/cjs/setting-components/date-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/date-time-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/file-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/folder-list-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/hotkey-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/index.cjs +30 -30
- package/dist/lib/cjs/setting-components/list-component.cjs +5 -5
- package/dist/lib/cjs/setting-components/month-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +9 -6
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +4 -1
- package/dist/lib/cjs/setting-components/number-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/password-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -3
- package/dist/lib/cjs/setting-components/tag-list-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/telephone-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/text-based-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/time-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -1
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -3
- package/dist/lib/cjs/setting-components/url-component.cjs +2 -2
- package/dist/lib/cjs/setting-components/validator-component.cjs +4 -4
- package/dist/lib/cjs/setting-components/week-component.cjs +4 -4
- package/dist/lib/cjs/setting-ex.cjs +26 -26
- package/dist/lib/cjs/setting-group-ex.cjs +2 -2
- package/dist/lib/cjs/settings-recovery.cjs +217 -0
- package/dist/lib/cjs/settings-recovery.d.cts +178 -0
- package/dist/lib/cjs/settings-tabs.cjs +5 -5
- package/dist/lib/cjs/status-bar-item-registrar.cjs +1 -1
- package/dist/lib/cjs/templater.cjs +14 -4
- package/dist/lib/cjs/templater.d.cts +6 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -2
- package/dist/lib/cjs/transformers/index.cjs +1 -1
- package/dist/lib/cjs/trusted-input.cjs +1 -1
- package/dist/lib/cjs/validation.cjs +4 -4
- package/dist/lib/cjs/vault-delete.cjs +6 -6
- package/dist/lib/cjs/vault-transaction.cjs +5 -5
- package/dist/lib/cjs/vault.cjs +12 -12
- package/dist/lib/cjs/view-registrar.cjs +1 -1
- package/dist/lib/cjs/virtual-file.cjs +16 -14
- package/dist/lib/cjs/virtual-file.d.cts +2 -1
- package/dist/lib/cjs/wasm.cjs +119 -0
- package/dist/lib/cjs/wasm.d.cts +54 -0
- package/dist/lib/cjs/worker-protocol.cjs +209 -0
- package/dist/lib/cjs/worker-protocol.d.cts +282 -0
- package/dist/lib/cjs/workspace.cjs +1 -1
- package/dist/lib/esm/__merged.d.mts +26 -10
- package/dist/lib/esm/__merged.mjs +215 -5
- package/dist/lib/esm/app.mjs +2 -2
- package/dist/lib/esm/attachment-path.d.mts +3 -3
- package/dist/lib/esm/attachment-path.mjs +2 -2
- package/dist/lib/esm/backlink-index.mjs +2 -2
- package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
- package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
- package/dist/lib/esm/bug-report.d.mts +65 -0
- package/dist/lib/esm/bug-report.mjs +33 -10
- package/dist/lib/esm/canvas.d.mts +13 -0
- package/dist/lib/esm/canvas.mjs +6 -5
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +13 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +14 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +7 -7
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +8 -8
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
- package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
- package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
- package/dist/lib/esm/components/component-ex.d.mts +11 -0
- package/dist/lib/esm/components/component-ex.mjs +19 -6
- package/dist/lib/esm/components/disposable-component.mjs +1 -1
- package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
- package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
- package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
- package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
- package/dist/lib/esm/components/index.d.mts +5 -0
- package/dist/lib/esm/components/index.mjs +12 -2
- package/dist/lib/esm/components/plugin-gate-component.d.mts +36 -13
- package/dist/lib/esm/components/plugin-gate-component.mjs +61 -26
- package/dist/lib/esm/components/plugin-notice-component.d.mts +4 -3
- package/dist/lib/esm/components/plugin-notice-component.mjs +30 -21
- package/dist/lib/esm/components/plugin-settings-component.d.mts +35 -5
- package/dist/lib/esm/components/plugin-settings-component.mjs +105 -4
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +2 -2
- package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
- package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
- package/dist/lib/esm/components/worker-component.d.mts +156 -0
- package/dist/lib/esm/components/worker-component.mjs +279 -0
- package/dist/lib/esm/components/worker-pool-component.d.mts +102 -0
- package/dist/lib/esm/components/worker-pool-component.mjs +95 -0
- package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
- package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
- package/dist/lib/esm/css-class.d.mts +16 -0
- package/dist/lib/esm/css-class.mjs +5 -1
- package/dist/lib/esm/data-handler.d.mts +219 -2
- package/dist/lib/esm/data-handler.mjs +262 -5
- package/dist/lib/esm/data-stores/data-store-locations.d.mts +15 -0
- package/dist/lib/esm/data-stores/data-store-locations.mjs +80 -22
- package/dist/lib/esm/data-stores/data-store-replica.mjs +33 -5
- package/dist/lib/esm/data-stores/data-store-seeds.d.mts +2 -2
- package/dist/lib/esm/data-stores/data-store-seeds.mjs +4 -4
- package/dist/lib/esm/data-stores/data-store-transport.d.mts +30 -1
- package/dist/lib/esm/data-stores/data-store-transport.mjs +78 -5
- package/dist/lib/esm/data-stores/local-data-store.d.mts +58 -1
- package/dist/lib/esm/data-stores/local-data-store.mjs +71 -9
- package/dist/lib/esm/data-stores/shared-data-store.d.mts +18 -1
- package/dist/lib/esm/data-stores/shared-data-store.mjs +72 -15
- package/dist/lib/esm/dataview.d.mts +14 -0
- package/dist/lib/esm/dataview.mjs +19 -1
- package/dist/lib/esm/demo-vault-helper.d.mts +6 -2
- package/dist/lib/esm/demo-vault-helper.mjs +29 -1
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +1 -1
- package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
- package/dist/lib/esm/desktop-git-runner.mjs +3 -3
- package/dist/lib/esm/desktop-request-url-stream.mjs +4 -10
- package/dist/lib/esm/disposable.d.mts +39 -0
- package/dist/lib/esm/disposable.mjs +64 -0
- package/dist/lib/esm/file-system.mjs +2 -2
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -1
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/git-rename-history.d.mts +2 -2
- package/dist/lib/esm/git-rename-history.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +26 -0
- package/dist/lib/esm/i18n/locales/en.mjs +27 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +26 -0
- package/dist/lib/esm/index.d.mts +7 -0
- package/dist/lib/esm/index.mjs +15 -1
- package/dist/lib/esm/link.d.mts +20 -14
- package/dist/lib/esm/link.mjs +57 -38
- package/dist/lib/esm/loop.mjs +2 -8
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +7 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +16 -1
- package/dist/lib/esm/markdown-view.d.mts +48 -1
- package/dist/lib/esm/markdown-view.mjs +192 -2
- package/dist/lib/esm/metadata-cache.d.mts +5 -4
- package/dist/lib/esm/metadata-cache.mjs +6 -6
- package/dist/lib/esm/misplaced-attachment.d.mts +228 -0
- package/dist/lib/esm/misplaced-attachment.mjs +212 -0
- package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
- package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
- package/dist/lib/esm/modals/index.d.mts +2 -0
- package/dist/lib/esm/modals/index.mjs +5 -1
- package/dist/lib/esm/modals/prompt.d.mts +1 -1
- package/dist/lib/esm/modals/prompt.mjs +1 -1
- package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
- package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
- package/dist/lib/esm/notebook-navigator.d.mts +6 -0
- package/dist/lib/esm/notebook-navigator.mjs +11 -2
- package/dist/lib/esm/parse-link.mjs +4 -4
- package/dist/lib/esm/path-compatibility.d.mts +263 -0
- package/dist/lib/esm/path-compatibility.mjs +277 -0
- package/dist/lib/esm/plugin/index.d.mts +2 -0
- package/dist/lib/esm/plugin/index.mjs +6 -2
- package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
- package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
- package/dist/lib/esm/plugin/plugin-async-cleanup.d.mts +5 -0
- package/dist/lib/esm/plugin/plugin-async-cleanup.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +2 -1
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +4 -4
- package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -1
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
- package/dist/lib/esm/plugin/plugin-instance.d.mts +258 -0
- package/dist/lib/esm/plugin/plugin-instance.mjs +367 -0
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +6 -4
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -1
- package/dist/lib/esm/plugin/plugin.d.mts +35 -5
- package/dist/lib/esm/plugin/plugin.mjs +118 -9
- package/dist/lib/esm/plugin/third-party-plugin.d.mts +244 -0
- package/dist/lib/esm/plugin/third-party-plugin.mjs +147 -0
- package/dist/lib/esm/release-asset.mjs +1 -1
- package/dist/lib/esm/resource-lock.d.mts +8 -7
- package/dist/lib/esm/resource-lock.mjs +31 -26
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +4 -1
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -3
- package/dist/lib/esm/settings-recovery.d.mts +178 -0
- package/dist/lib/esm/settings-recovery.mjs +125 -0
- package/dist/lib/esm/settings-tabs.mjs +2 -2
- package/dist/lib/esm/templater.d.mts +6 -0
- package/dist/lib/esm/templater.mjs +11 -2
- package/dist/lib/esm/vault.mjs +1 -1
- package/dist/lib/esm/virtual-file.d.mts +2 -1
- package/dist/lib/esm/virtual-file.mjs +7 -5
- package/dist/lib/esm/wasm.d.mts +54 -0
- package/dist/lib/esm/wasm.mjs +30 -0
- package/dist/lib/esm/worker-protocol.d.mts +282 -0
- package/dist/lib/esm/worker-protocol.mjs +113 -0
- package/dist/styles.css +16 -1
- package/modals/copy-text-manually/package.json +6 -0
- package/modals/review-bug-report-diagnostics/package.json +6 -0
- package/package.json +10 -8
- package/plugin/plugin-instance/package.json +6 -0
- package/plugin/third-party-plugin/package.json +6 -0
package/dist/lib/cjs/link.d.cts
CHANGED
|
@@ -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 `
|
|
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 |
|
|
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 `
|
|
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 |
|
|
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
|
*/
|
package/dist/lib/cjs/logger.cjs
CHANGED
|
@@ -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(
|
|
121
|
-
var import_debug = require(
|
|
122
|
-
var import_error = require(
|
|
123
|
-
var import_debug2 = require(
|
|
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,
|
package/dist/lib/cjs/loop.cjs
CHANGED
|
@@ -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(
|
|
127
|
-
var import_async = require(
|
|
128
|
-
var import_error = require(
|
|
129
|
-
var import_function = require(
|
|
130
|
-
var import_bulk_operation_progress = require(
|
|
131
|
-
var import_debug = require(
|
|
132
|
-
var import_html_element = require(
|
|
133
|
-
var import_plugin_context = require(
|
|
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?.
|
|
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(
|
|
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,
|
|
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(
|
|
125
|
-
var import_async = require(
|
|
126
|
-
var import_object_utils = require(
|
|
127
|
-
var import_reg_exp = require(
|
|
128
|
-
var import_string = require(
|
|
129
|
-
var import_type_guards = require(
|
|
130
|
-
var import_value_provider = require(
|
|
131
|
-
var import_implementations = require(
|
|
132
|
-
var import_obsidian = require(
|
|
133
|
-
var import_code_block_reg_exp = require(
|
|
134
|
-
var import_code_block_render_handoff = require(
|
|
135
|
-
var import_file_system = require(
|
|
136
|
-
var import_vault = require(
|
|
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(
|
|
121
|
-
var import_obsidian = require(
|
|
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.
|
|
@@ -2,6 +2,39 @@
|
|
|
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
|
+
}
|
|
34
|
+
|
|
35
|
+
ensureDisposeSymbols();
|
|
36
|
+
ensureBrowserProcess();
|
|
37
|
+
})();
|
|
5
38
|
(function patchObsidianRequire() {
|
|
6
39
|
const originalRequire = require;
|
|
7
40
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
@@ -72,6 +105,10 @@ var __defProp = Object.defineProperty;
|
|
|
72
105
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
73
106
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
74
107
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
108
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
109
|
+
var __typeError = (msg) => {
|
|
110
|
+
throw TypeError(msg);
|
|
111
|
+
};
|
|
75
112
|
var __export = (target, all) => {
|
|
76
113
|
for (var name in all)
|
|
77
114
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -85,11 +122,56 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
85
122
|
return to;
|
|
86
123
|
};
|
|
87
124
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
125
|
+
var __using = (stack, value, async) => {
|
|
126
|
+
if (value != null) {
|
|
127
|
+
if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
|
|
128
|
+
var dispose, inner;
|
|
129
|
+
if (async) dispose = value[__knownSymbol("asyncDispose")];
|
|
130
|
+
if (dispose === void 0) {
|
|
131
|
+
dispose = value[__knownSymbol("dispose")];
|
|
132
|
+
if (async) inner = dispose;
|
|
133
|
+
}
|
|
134
|
+
if (typeof dispose !== "function") __typeError("Object not disposable");
|
|
135
|
+
if (inner) dispose = function() {
|
|
136
|
+
try {
|
|
137
|
+
inner.call(this);
|
|
138
|
+
} catch (e) {
|
|
139
|
+
return Promise.reject(e);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
stack.push([async, dispose, value]);
|
|
143
|
+
} else if (async) {
|
|
144
|
+
stack.push([async]);
|
|
145
|
+
}
|
|
146
|
+
return value;
|
|
147
|
+
};
|
|
148
|
+
var __callDispose = (stack, error, hasError) => {
|
|
149
|
+
var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
|
|
150
|
+
return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
|
|
151
|
+
};
|
|
152
|
+
var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
|
|
153
|
+
var next = (it) => {
|
|
154
|
+
while (it = stack.pop()) {
|
|
155
|
+
try {
|
|
156
|
+
var result = it[1] && it[1].call(it[2]);
|
|
157
|
+
if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
|
|
158
|
+
} catch (e) {
|
|
159
|
+
fail(e);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (hasError) throw error;
|
|
163
|
+
};
|
|
164
|
+
return next();
|
|
165
|
+
};
|
|
88
166
|
var markdown_view_exports = {};
|
|
89
167
|
__export(markdown_view_exports, {
|
|
90
|
-
getFullContentHtml: () => getFullContentHtml
|
|
168
|
+
getFullContentHtml: () => getFullContentHtml,
|
|
169
|
+
rerenderPreviews: () => rerenderPreviews
|
|
91
170
|
});
|
|
92
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");
|
|
93
175
|
function getFullContentHtml(view) {
|
|
94
176
|
const codeMirror = view.editor.cm;
|
|
95
177
|
codeMirror.viewState.printing = true;
|
|
@@ -99,8 +181,114 @@ function getFullContentHtml(view) {
|
|
|
99
181
|
codeMirror.measure();
|
|
100
182
|
return html;
|
|
101
183
|
}
|
|
184
|
+
async function rerenderPreviews(params) {
|
|
185
|
+
var _stack = [];
|
|
186
|
+
try {
|
|
187
|
+
const { abortSignal, app, language = null } = params;
|
|
188
|
+
abortSignal?.throwIfAborted();
|
|
189
|
+
const views = [];
|
|
190
|
+
app.workspace.iterateAllLeaves((leaf) => {
|
|
191
|
+
if (leaf.view instanceof import_obsidian.MarkdownView) {
|
|
192
|
+
views.push(leaf.view);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
const waits = [];
|
|
196
|
+
for (const view of views) {
|
|
197
|
+
const isShown = isPreviewShown(view);
|
|
198
|
+
const scroll = isShown ? view.previewMode.getScroll() : null;
|
|
199
|
+
if (language === null) {
|
|
200
|
+
view.previewMode.rerender(true);
|
|
201
|
+
} else {
|
|
202
|
+
const sections = getSectionsWithLanguage(view.previewMode, language);
|
|
203
|
+
if (sections.length === 0) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
rerenderSections(view.previewMode, sections);
|
|
207
|
+
}
|
|
208
|
+
if (scroll !== null) {
|
|
209
|
+
waits.push(waitForPreviewRender(app, view, scroll));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (waits.length === 0) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const allRendered = Promise.all(waits);
|
|
216
|
+
if (!abortSignal) {
|
|
217
|
+
await allRendered;
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
let resolveAborted = import_function.noop;
|
|
221
|
+
const aborted = new Promise((resolve) => {
|
|
222
|
+
resolveAborted = resolve;
|
|
223
|
+
});
|
|
224
|
+
const _abortListener = __using(_stack, (0, import_abort_controller.onAbort)(abortSignal, () => {
|
|
225
|
+
resolveAborted();
|
|
226
|
+
}));
|
|
227
|
+
await Promise.race([allRendered, aborted]);
|
|
228
|
+
abortSignal.throwIfAborted();
|
|
229
|
+
} catch (_) {
|
|
230
|
+
var _error = _, _hasError = true;
|
|
231
|
+
} finally {
|
|
232
|
+
__callDispose(_stack, _error, _hasError);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function getSectionsWithLanguage(previewMode, language) {
|
|
236
|
+
const { renderer } = previewMode;
|
|
237
|
+
const selector = `code.language-${CSS.escape(language)}`;
|
|
238
|
+
const parser = new DOMParser();
|
|
239
|
+
return renderer.sections.filter(
|
|
240
|
+
(section) => section !== renderer.header && section !== renderer.footer && !!section.html && parser.parseFromString(section.html, "text/html").querySelector(selector) !== null
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
function isPreviewShown(view) {
|
|
244
|
+
if (view.getMode() !== "preview") {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
const { previewEl } = view.previewMode.renderer;
|
|
248
|
+
return previewEl.isConnected && previewEl.offsetParent !== null && previewEl.offsetWidth > 0;
|
|
249
|
+
}
|
|
250
|
+
function rerenderSections(previewMode, sections) {
|
|
251
|
+
for (const section of sections) {
|
|
252
|
+
section.rendered = false;
|
|
253
|
+
section.el.empty();
|
|
254
|
+
}
|
|
255
|
+
previewMode.renderer.queueRender();
|
|
256
|
+
}
|
|
257
|
+
async function waitForPreviewRender(app, view, scroll) {
|
|
258
|
+
const { previewMode } = view;
|
|
259
|
+
const isRendered = await new Promise((resolve) => {
|
|
260
|
+
let isSettled = false;
|
|
261
|
+
const watcher = new import_obsidian.Component();
|
|
262
|
+
function settle(isRenderedNow) {
|
|
263
|
+
if (isSettled) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
isSettled = true;
|
|
267
|
+
previewMode.removeChild(watcher);
|
|
268
|
+
resolve(isRenderedNow);
|
|
269
|
+
}
|
|
270
|
+
function settleIfHidden() {
|
|
271
|
+
if (!isPreviewShown(view)) {
|
|
272
|
+
settle(false);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
watcher.register(() => {
|
|
276
|
+
settle(false);
|
|
277
|
+
});
|
|
278
|
+
watcher.registerEvent(app.workspace.on("layout-change", settleIfHidden));
|
|
279
|
+
watcher.registerEvent(app.workspace.on("active-leaf-change", settleIfHidden));
|
|
280
|
+
previewMode.addChild(watcher);
|
|
281
|
+
previewMode.renderer.onRendered(() => {
|
|
282
|
+
settle(true);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
if (isRendered) {
|
|
286
|
+
previewMode.applyScroll(scroll);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
102
289
|
// Annotate the CommonJS export names for ESM import in node:
|
|
103
290
|
0 && (module.exports = {
|
|
104
|
-
getFullContentHtml
|
|
291
|
+
getFullContentHtml,
|
|
292
|
+
rerenderPreviews
|
|
105
293
|
});
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBNYXJrZG93blZpZXdcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1hcmtkb3duVmlldyB9IGZyb20gJ29ic2lkaWFuJztcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgSFRNTCBjb250ZW50IG9mIHRoZSBjdXJyZW50IE1hcmtkb3duVmlld1xuICpcbiAqIEBwYXJhbSB2aWV3IC0gVGhlIE1hcmtkb3duVmlldyB0byBnZXQgdGhlIEhUTUwgZnJvbVxuICogQHJldHVybnMgVGhlIGZ1bGwgSFRNTCBvZiB0aGUgTWFya2Rvd25WaWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsQ29udGVudEh0bWwodmlldzogTWFya2Rvd25WaWV3KTogc3RyaW5nIHtcbiAgY29uc3QgY29kZU1pcnJvciA9IHZpZXcuZWRpdG9yLmNtO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IHRydWU7XG4gIGNvZGVNaXJyb3IubWVhc3VyZSgpO1xuICBjb25zdCBodG1sID0gdmlldy5jb250ZW50RWwuaW5uZXJIVE1MO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IGZhbHNlO1xuICBjb2RlTWlycm9yLm1lYXN1cmUoKTtcbiAgcmV0dXJuIGh0bWw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjTyxTQUFTLG1CQUFtQixNQUE0QjtBQUM3RCxRQUFNLGFBQWEsS0FBSyxPQUFPO0FBQy9CLGFBQVcsVUFBVSxXQUFXO0FBQ2hDLGFBQVcsUUFBUTtBQUNuQixRQUFNLE9BQU8sS0FBSyxVQUFVO0FBQzVCLGFBQVcsVUFBVSxXQUFXO0FBQ2hDLGFBQVcsUUFBUTtBQUNuQixTQUFPO0FBQ1Q7IiwibmFtZXMiOltdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXJrZG93bi12aWV3LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBNYXJrZG93blZpZXdcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlbmRlcmVyU2VjdGlvbiB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIE1hcmtkb3duUHJldmlld1ZpZXdcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBvbkFib3J0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2Fib3J0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE1hcmtkb3duVmlld1xufSBmcm9tICdvYnNpZGlhbic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlcmVuZGVyUHJldmlld3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcmVuZGVyUHJldmlld3NQYXJhbXMge1xuICAvKipcbiAgICogU3RvcHMgd2FpdGluZyBmb3IgdGhlIHJlbmRlcnMgd2hlbiBhYm9ydGVkLCByZWplY3Rpbmcgd2l0aCB0aGUgc2lnbmFsJ3MgcmVhc29uLiBUaGUgcmVuZGVycyBhbHJlYWR5IHJlcXVlc3RlZCBzdGlsbFxuICAgKiBoYXBwZW4uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIHdob3NlIGJsb2NrcyB0byByZW5kZXIgYWdhaW4sIG1hdGNoZWQgZXhhY3RseSBhbmQgY2FzZS1zZW5zaXRpdmVseSwgdGhlIHdheSBPYnNpZGlhbiBtYXRjaGVzIGFcbiAgICogY29kZSBibG9jayBwcm9jZXNzb3IncyBsYW5ndWFnZS4gT25seSB0aGUgc2VjdGlvbnMgaG9sZGluZyBzdWNoIGEgYmxvY2sgYXJlIHJlbmRlcmVkIGFnYWluLCBhbmQgYSB2aWV3IGhvbGRpbmcgbm9uZVxuICAgKiBpcyBsZWZ0IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbnVsbGAsIHdoaWNoIHJlbmRlcnMgZXZlcnkgc2VjdGlvbiBvZiBldmVyeSBSZWFkaW5nIHZpZXcgYWdhaW5cbiAgICovXG4gIHJlYWRvbmx5IGxhbmd1YWdlPzogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgSFRNTCBjb250ZW50IG9mIHRoZSBjdXJyZW50IE1hcmtkb3duVmlld1xuICpcbiAqIEBwYXJhbSB2aWV3IC0gVGhlIE1hcmtkb3duVmlldyB0byBnZXQgdGhlIEhUTUwgZnJvbVxuICogQHJldHVybnMgVGhlIGZ1bGwgSFRNTCBvZiB0aGUgTWFya2Rvd25WaWV3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsQ29udGVudEh0bWwodmlldzogTWFya2Rvd25WaWV3KTogc3RyaW5nIHtcbiAgY29uc3QgY29kZU1pcnJvciA9IHZpZXcuZWRpdG9yLmNtO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IHRydWU7XG4gIGNvZGVNaXJyb3IubWVhc3VyZSgpO1xuICBjb25zdCBodG1sID0gdmlldy5jb250ZW50RWwuaW5uZXJIVE1MO1xuICBjb2RlTWlycm9yLnZpZXdTdGF0ZS5wcmludGluZyA9IGZhbHNlO1xuICBjb2RlTWlycm9yLm1lYXN1cmUoKTtcbiAgcmV0dXJuIGh0bWw7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgb3BlbiBSZWFkaW5nIHZpZXdzIGFnYWluLCBzbyBhIG1hcmtkb3duIHBvc3QtcHJvY2Vzc29yIG9yIGNvZGUgYmxvY2sgcHJvY2Vzc29yIHJlZ2lzdGVyZWQgb3IgcmVjb25maWd1cmVkXG4gKiBzaW5jZSB0aGV5IHJlbmRlcmVkIGFwcGxpZXMgdG8gdGhlbS5cbiAqXG4gKiBJdCBjb3ZlcnMgZXZlcnkgTWFya2Rvd24gdmlldyBpbiBldmVyeSB3aW5kb3csIHBvcG91dHMgaW5jbHVkZWQuIEEgZnVsbCByZWZyZXNoIGlzIHdoYXQgT2JzaWRpYW4gaXRzZWxmIGRvZXMgd2hlbiBhXG4gKiBwb3N0LXByb2Nlc3NvciBpcyByZWdpc3RlcmVkOiBldmVyeSBzZWN0aW9uIGlzIHJlbmRlcmVkIGFnYWluLCBleGNlcHQgdGhlIGhlYWRlciBob2xkaW5nIHRoZSBpbmxpbmUgdGl0bGUgYW5kIHRoZVxuICogcHJvcGVydGllcywgYW5kIHRoZSBmb290ZXIgaG9sZGluZyB0aGUgYmFja2xpbmtzLCB3aGljaCBrZWVwIHRoZWlyIERPTS4gV2l0aCBhIGBsYW5ndWFnZWAsIG9ubHkgdGhlIHNlY3Rpb25zIGhvbGRpbmcgYVxuICogY29kZSBibG9jayBvZiB0aGF0IGxhbmd1YWdlIGFyZSByZW5kZXJlZCBhZ2Fpbi4gVGhlIG5vdGUgaXMgbmV2ZXIgd3JpdHRlbiwgdGhlIHZpZXcgbW9kZSBuZXZlciBjaGFuZ2VzLCBhbmQgdGhlXG4gKiBzY3JvbGwgcG9zaXRpb24gaXMga2VwdCBieSBPYnNpZGlhbidzIHJlbmRlcmVyLlxuICpcbiAqIFRoZSBwcm9taXNlIHNldHRsZXMgb25jZSBldmVyeSB2aWV3IFNIT1dOIGluIFJlYWRpbmcgdmlldyBoYXMgZmluaXNoZWQgcmVuZGVyaW5nLCB0aGUgcHJvbWlzZXMgb2YgYXN5bmNocm9ub3VzXG4gKiBwb3N0LXByb2Nlc3NvcnMgaW5jbHVkZWQuIEEgcHJldmlldyB0aGF0IGlzIG5vdCBzaG93biAoYSBiYWNrZ3JvdW5kIHRhYiwgYSB2aWV3IGluIGVkaXRpbmcgbW9kZSkgaXMgbWFya2VkIHRvIHJlbmRlclxuICogYWdhaW4gd2hlbiBpdCBpcyBuZXh0IHNob3duLCBhbmQgaXMgbm90IHdhaXRlZCBmb3IsIHNpbmNlIE9ic2lkaWFuIGRvZXMgbm90IHJlbmRlciBpdCB1bnRpbCB0aGVuLiBBIHZpZXcgdGhhdCBpcyBjbG9zZWQsXG4gKiBoaWRkZW4gb3Igc3dpdGNoZWQgb3V0IG9mIFJlYWRpbmcgdmlldyB3aGlsZSByZW5kZXJpbmcgc3RvcHMgYmVpbmcgd2FpdGVkIGZvci4gQSBwb3N0LXByb2Nlc3NvciB3aG9zZSBwcm9taXNlIG5ldmVyXG4gKiBzZXR0bGVzLCBvciByZWplY3RzLCBrZWVwcyBpdHMgdmlldydzIHJlbmRlciBvcGVuLCBleGFjdGx5IGFzIGl0IGtlZXBzIE9ic2lkaWFuJ3Mgb3duIHJlbmRlciBvcGVuOyBwYXNzIGFuXG4gKiBgYWJvcnRTaWduYWxgIHRvIGJvdW5kIHRoZSB3YWl0LlxuICpcbiAqIEhvdmVyIHBvcG92ZXJzLCBlbWJlZHMsIGNhbnZhcyBjYXJkcyBhbmQgTGl2ZSBQcmV2aWV3IHdpZGdldHMgYXJlIG5vdCByZWZyZXNoZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvcHRpb25zLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgc2hvd24gUmVhZGluZyB2aWV3cyBoYXZlIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVyZW5kZXJQcmV2aWV3cyhwYXJhbXM6IFJlcmVuZGVyUHJldmlld3NQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhYm9ydFNpZ25hbCwgYXBwLCBsYW5ndWFnZSA9IG51bGwgfSA9IHBhcmFtcztcbiAgYWJvcnRTaWduYWw/LnRocm93SWZBYm9ydGVkKCk7XG5cbiAgY29uc3Qgdmlld3M6IE1hcmtkb3duVmlld1tdID0gW107XG4gIGFwcC53b3Jrc3BhY2UuaXRlcmF0ZUFsbExlYXZlcygobGVhZikgPT4ge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcpIHtcbiAgICAgIHZpZXdzLnB1c2gobGVhZi52aWV3KTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHdhaXRzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgZm9yIChjb25zdCB2aWV3IG9mIHZpZXdzKSB7XG4gICAgY29uc3QgaXNTaG93biA9IGlzUHJldmlld1Nob3duKHZpZXcpO1xuICAgIC8vIEVtcHR5aW5nIHRoZSBzZWN0aW9ucyBzaHJpbmtzIHRoZSBjb250ZW50IGJlZm9yZSB0aGUgbmV4dCBmcmFtZSByZW5kZXJzIGl0IGFnYWluLCB3aGljaCBjYW4gY2xhbXAgdGhlIHNjcm9sbC5cbiAgICBjb25zdCBzY3JvbGwgPSBpc1Nob3duID8gdmlldy5wcmV2aWV3TW9kZS5nZXRTY3JvbGwoKSA6IG51bGw7XG4gICAgaWYgKGxhbmd1YWdlID09PSBudWxsKSB7XG4gICAgICB2aWV3LnByZXZpZXdNb2RlLnJlcmVuZGVyKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWN0aW9ucyA9IGdldFNlY3Rpb25zV2l0aExhbmd1YWdlKHZpZXcucHJldmlld01vZGUsIGxhbmd1YWdlKTtcbiAgICAgIGlmIChzZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXJlbmRlclNlY3Rpb25zKHZpZXcucHJldmlld01vZGUsIHNlY3Rpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsICE9PSBudWxsKSB7XG4gICAgICB3YWl0cy5wdXNoKHdhaXRGb3JQcmV2aWV3UmVuZGVyKGFwcCwgdmlldywgc2Nyb2xsKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHdhaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFsbFJlbmRlcmVkID0gUHJvbWlzZS5hbGwod2FpdHMpO1xuICBpZiAoIWFib3J0U2lnbmFsKSB7XG4gICAgYXdhaXQgYWxsUmVuZGVyZWQ7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHJlc29sdmVBYm9ydGVkID0gbm9vcDtcbiAgY29uc3QgYWJvcnRlZCA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgcmVzb2x2ZUFib3J0ZWQgPSByZXNvbHZlO1xuICB9KTtcbiAgdXNpbmcgX2Fib3J0TGlzdGVuZXIgPSBvbkFib3J0KGFib3J0U2lnbmFsLCAoKSA9PiB7XG4gICAgcmVzb2x2ZUFib3J0ZWQoKTtcbiAgfSk7XG4gIGF3YWl0IFByb21pc2UucmFjZShbYWxsUmVuZGVyZWQsIGFib3J0ZWRdKTtcbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VjdGlvbnNXaXRoTGFuZ3VhZ2UocHJldmlld01vZGU6IE1hcmtkb3duUHJldmlld1ZpZXcsIGxhbmd1YWdlOiBzdHJpbmcpOiBSZW5kZXJlclNlY3Rpb25bXSB7XG4gIGNvbnN0IHsgcmVuZGVyZXIgfSA9IHByZXZpZXdNb2RlO1xuICBjb25zdCBzZWxlY3RvciA9IGBjb2RlLmxhbmd1YWdlLSR7Q1NTLmVzY2FwZShsYW5ndWFnZSl9YDtcbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXIgY2Fycnkgbm8gSFRNTCBvZiB0aGVpciBvd24uIEEgc2VjdGlvbidzIEhUTUwgaXMgcGFyc2VkIGludG8gYW4gaW5lcnQgZG9jdW1lbnQ6IG5vdGhpbmcgcnVuc1xuICAvLyBhbmQgbm90aGluZyBsb2Fkcy5cbiAgcmV0dXJuIHJlbmRlcmVyLnNlY3Rpb25zLmZpbHRlcigoc2VjdGlvbikgPT5cbiAgICBzZWN0aW9uICE9PSByZW5kZXJlci5oZWFkZXIgJiYgc2VjdGlvbiAhPT0gcmVuZGVyZXIuZm9vdGVyICYmICEhc2VjdGlvbi5odG1sXG4gICAgJiYgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzZWN0aW9uLmh0bWwsICd0ZXh0L2h0bWwnKS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSAhPT0gbnVsbFxuICApO1xufVxuXG5mdW5jdGlvbiBpc1ByZXZpZXdTaG93bih2aWV3OiBNYXJrZG93blZpZXcpOiBib29sZWFuIHtcbiAgaWYgKHZpZXcuZ2V0TW9kZSgpICE9PSAncHJldmlldycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBUaGUgc2FtZSB2aXNpYmlsaXR5IHRlc3QgYFJlYWRWaWV3UmVuZGVyZXIub25SZW5kZXJgIG1ha2VzIGJlZm9yZSBpdCByZW5kZXJzIGFueXRoaW5nLlxuICBjb25zdCB7IHByZXZpZXdFbCB9ID0gdmlldy5wcmV2aWV3TW9kZS5yZW5kZXJlcjtcbiAgcmV0dXJuIHByZXZpZXdFbC5pc0Nvbm5lY3RlZCAmJiBwcmV2aWV3RWwub2Zmc2V0UGFyZW50ICE9PSBudWxsICYmIHByZXZpZXdFbC5vZmZzZXRXaWR0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIHJlcmVuZGVyU2VjdGlvbnMocHJldmlld01vZGU6IE1hcmtkb3duUHJldmlld1ZpZXcsIHNlY3Rpb25zOiByZWFkb25seSBSZW5kZXJlclNlY3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICBzZWN0aW9uLnJlbmRlcmVkID0gZmFsc2U7XG4gICAgc2VjdGlvbi5lbC5lbXB0eSgpO1xuICB9XG4gIHByZXZpZXdNb2RlLnJlbmRlcmVyLnF1ZXVlUmVuZGVyKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQcmV2aWV3UmVuZGVyKGFwcDogQXBwLCB2aWV3OiBNYXJrZG93blZpZXcsIHNjcm9sbDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcHJldmlld01vZGUgfSA9IHZpZXc7XG4gIGNvbnN0IGlzUmVuZGVyZWQgPSBhd2FpdCBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBpc1NldHRsZWQgPSBmYWxzZTtcbiAgICBjb25zdCB3YXRjaGVyID0gbmV3IENvbXBvbmVudCgpO1xuXG4gICAgZnVuY3Rpb24gc2V0dGxlKGlzUmVuZGVyZWROb3c6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIGlmIChpc1NldHRsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXNTZXR0bGVkID0gdHJ1ZTtcbiAgICAgIC8vIEEgbm8tb3Agd2hlbiB0aGUgcHJldmlldyBpcyB1bmxvYWRpbmcsIHNpbmNlIGl0IGhhcyBhbHJlYWR5IHRha2VuIHRoZSB3YXRjaGVyIG9mZiBpdHMgY2hpbGRyZW4uXG4gICAgICBwcmV2aWV3TW9kZS5yZW1vdmVDaGlsZCh3YXRjaGVyKTtcbiAgICAgIHJlc29sdmUoaXNSZW5kZXJlZE5vdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0dGxlSWZIaWRkZW4oKTogdm9pZCB7XG4gICAgICBpZiAoIWlzUHJldmlld1Nob3duKHZpZXcpKSB7XG4gICAgICAgIHNldHRsZShmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hlci5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBzZXR0bGUoZmFsc2UpO1xuICAgIH0pO1xuICAgIHdhdGNoZXIucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdsYXlvdXQtY2hhbmdlJywgc2V0dGxlSWZIaWRkZW4pKTtcbiAgICB3YXRjaGVyLnJlZ2lzdGVyRXZlbnQoYXBwLndvcmtzcGFjZS5vbignYWN0aXZlLWxlYWYtY2hhbmdlJywgc2V0dGxlSWZIaWRkZW4pKTtcbiAgICBwcmV2aWV3TW9kZS5hZGRDaGlsZCh3YXRjaGVyKTtcbiAgICBwcmV2aWV3TW9kZS5yZW5kZXJlci5vblJlbmRlcmVkKCgpID0+IHtcbiAgICAgIHNldHRsZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaWYgKGlzUmVuZGVyZWQpIHtcbiAgICBwcmV2aWV3TW9kZS5hcHBseVNjcm9sbChzY3JvbGwpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|