@mnaoumov/obsidian-lib 5.0.0 → 5.1.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/dist/lib/cjs/__merged.cjs +11 -1
- package/dist/lib/cjs/__merged.d.cts +3 -3
- package/dist/lib/cjs/components/plugin-context-component.cjs +3 -1
- package/dist/lib/cjs/components/plugin-context-component.d.cts +2 -1
- package/dist/lib/cjs/components/plugin-gate-component.cjs +3 -3
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +2 -2
- package/dist/lib/cjs/css-class.cjs +3 -2
- package/dist/lib/cjs/css-class.d.cts +12 -6
- package/dist/lib/cjs/debug.cjs +22 -2
- package/dist/lib/cjs/debug.d.cts +10 -3
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/library-styles.cjs +2 -2
- package/dist/lib/cjs/library.cjs +5 -2
- package/dist/lib/cjs/library.d.cts +12 -5
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +21 -1
- package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +8 -3
- package/dist/lib/cjs/plugin/plugin-context.cjs +5 -2
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +44 -4
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +66 -15
- package/dist/lib/esm/__merged.d.mts +3 -3
- package/dist/lib/esm/__merged.mjs +11 -1
- package/dist/lib/esm/components/plugin-context-component.d.mts +2 -1
- package/dist/lib/esm/components/plugin-context-component.mjs +3 -1
- package/dist/lib/esm/components/plugin-gate-component.mjs +3 -3
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +2 -2
- package/dist/lib/esm/css-class.d.mts +12 -6
- package/dist/lib/esm/css-class.mjs +3 -2
- package/dist/lib/esm/debug.d.mts +10 -3
- package/dist/lib/esm/debug.mjs +26 -3
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/library-styles.mjs +3 -3
- package/dist/lib/esm/library.d.mts +12 -5
- package/dist/lib/esm/library.mjs +4 -2
- package/dist/lib/esm/obsidian-dev-utils-state.d.mts +8 -3
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +20 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +6 -3
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +66 -15
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +41 -4
- package/package.json +1 -2
|
@@ -3,7 +3,7 @@ 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
|
|
|
6
|
-
const LIBRARY_VERSION = "5.
|
|
6
|
+
const LIBRARY_VERSION = "5.1.0";
|
|
7
7
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-dev-utils.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-dev-utils-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-dev-utils.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-dev-utils.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-dev-utils.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-dev-utils.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-dev-utils.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-dev-utils.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-dev-utils.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils.multiple-dropdown-component select,\n.obsidian-dev-utils.multiple-dropdown-component select:focus,\n.obsidian-dev-utils.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils.multiple-dropdown-component select option:checked,\n.obsidian-dev-utils.multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-dev-utils.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-dev-utils.plugin-suggestion-banner button {\n width: fit-content;\n}\n\n.obsidian-dev-utils.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-dev-utils.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus:invalid:not(.untouched),\n.obsidian-dev-utils textarea:active:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AC/CK;EACP;;;ACJJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACCF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACZN;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;ACrCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACRJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACUN;EACE;;;ACZE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-dev-utils%60.%5Cn.obsidian-dev-utils-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20//%20Not%20%60&progress%60:%20that%20APPENDS%20the%20element%20name%20to%20the%20parent%20class,%20producing%20one%20long%20class%20that%20matches%5Cn%20%20//%20nothing.%20The%20element%20type%20has%20to%20lead%20the%20compound%20selector%20instead.%5Cn%20%20@at-root%20progress%23%7B&%7D.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-dev-utils-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-dev-utils-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-dev-utils%60%20and%20%60multiple-dropdown-component%60%20on%20the%5Cn%20%20//%20SAME%20element%20(the%20setting's%20control%20container),%20so%20a%20descendant%20selector%20matched%20nothing%20and%20every%20multiple%5Cn%20%20//%20dropdown%20rendered%20one%20row%20tall%20%E2%80%94%20Obsidian's%20%60.dropdown%60%20height,%20with%20no%20popup%20behind%20it%20to%20pick%20from.%5Cn%20%20&.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%5Cn%20%20%20%20//%20The%20name%20is%20inline%20code;%20it%20keeps%20the%20code%20background%20and%20font%20but%20takes%20the%20prefix's%20accent%20color.%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20color:%20inherit;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20inside%20the%5Cn//%20Library's%20own%20UI%20(specificity%200,2,1),%20which%20wins%20over%20tldraw's%20(0,1,1)%20while%20staying%20correct%5Cn//%20For%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20It%20MUST%20stay%20scoped%20to%20%60.obsidian-dev-utils%60:%20an%20unscoped%20re-assert%20(it%20was%20%60body%20button%E2%80%A6%60,%5Cn//%200,1,2)%20lands%20on%20every%20button%20in%20the%20app%20and%20beats%20any%20other%20plugin's%20own%20button%20color%5Cn//%20Written%20at%200,1,1,%20which%20Obsidian's%20own%20rule%20used%20to%20lose%20to%20(obsidian-custom-attachment-location%2395).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cn.obsidian-dev-utils%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
8
8
|
export {
|
|
9
9
|
LIBRARY_STYLES,
|
|
@@ -31,9 +31,9 @@ ensureBrowserProcess();
|
|
|
31
31
|
})();
|
|
32
32
|
|
|
33
33
|
import { compareVersions } from "compare-versions";
|
|
34
|
-
import {
|
|
34
|
+
import { LEGACY_OBSIDIAN_LIBRARY_NAME } from "./library.mjs";
|
|
35
35
|
import { getObsidianDevUtilsState } from "./obsidian-dev-utils-state.mjs";
|
|
36
|
-
const LIBRARY_STYLES_ELEMENT_ID = `${
|
|
36
|
+
const LIBRARY_STYLES_ELEMENT_ID = `${LEGACY_OBSIDIAN_LIBRARY_NAME}-styles`;
|
|
37
37
|
const LAST_OBSIDIAN_LIB_VERSION_KEY = "lastObsidianLibVersion";
|
|
38
38
|
const LEGACY_LAST_LIBRARY_VERSION_KEY = "lastLibraryVersion";
|
|
39
39
|
const LEGACY_LAST_LIBRARY_VERSION_SENTINEL = "999999999.0.0";
|
|
@@ -60,4 +60,4 @@ export {
|
|
|
60
60
|
LIBRARY_STYLES_ELEMENT_ID,
|
|
61
61
|
injectLibraryStyles
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJyYXJ5LXN0eWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogSW5qZWN0cyB0aGUgbGlicmFyeSdzIHN0eWxlc2hlZXQgb25jZSBwZXIgcmVuZGVyZXIsIGxldHRpbmcgdGhlIG5ld2VzdCBsb2FkZWQgY29weSB3aW4uXG4gKlxuICogRXZlcnkgcGx1Z2luIGJ1bmRsZXMgaXRzIG93biBjb3B5LCBzbyBzZXZlcmFsIGNvcGllcyBjYW4gc2hhcmUgb25lIHJlbmRlcmVyLCBhbmQgb25seSBvbmUgb2YgdGhlbSBzaG91bGQgb3duIHRoZVxuICogYDxzdHlsZT5gIGVsZW1lbnQuIENvcGllcyBvZiB0aGUgcmV0aXJlZCBgb2JzaWRpYW4tZGV2LXV0aWxzYCBwYWNrYWdlIGRlY2lkZSB0aGF0IGJ5IGNvbXBhcmluZyB0aGVpciBvd24gdmVyc2lvblxuICogYWdhaW5zdCBgX19vYnNpZGlhbkRldlV0aWxzLmxhc3RMaWJyYXJ5VmVyc2lvbmAuIGBvYnNpZGlhbi1saWJgIHJlc3RhcnRlZCBpdHMgdmVyc2lvbiBsaW5lLCBzbyBpdCBjYW5ub3QgdGFrZSBwYXJ0IGluXG4gKiB0aGF0IGNvbXBhcmlzb246IGEgYDEueGAgY29weSB3b3VsZCBsb3NlIHRvIGV2ZXJ5IGAxMDcueGAgY29weSBmb3IgZXZlci4gSXQgdGhlcmVmb3JlIGtlZXBzIGl0cyBvd24gcmVjb3JkIHVuZGVyIGFcbiAqIHNlcGFyYXRlIGtleSwgYW5kIHRyZWF0cyBhbnkgYG9ic2lkaWFuLWRldi11dGlsc2AgY29weSBhcyBvbGRlciB0aGFuIGl0c2VsZi5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHsgTEVHQUNZX09CU0lESUFOX0xJQlJBUllfTkFNRSB9IGZyb20gJy4vbGlicmFyeS50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGlkIG9mIHRoZSBgPHN0eWxlPmAgZWxlbWVudCBob2xkaW5nIHRoZSBsaWJyYXJ5IHN0eWxlcy4gSXQgaXMgdGhlIGlkIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGNvcGllcyB1c2UgdG9vLCBzb1xuICogd2hpY2hldmVyIGNvcHkgaW5qZWN0cyBsYXN0IHJlcGxhY2VzIHRoZSBlbGVtZW50IGluc3RlYWQgb2YgYWRkaW5nIGEgc2Vjb25kIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExJQlJBUllfU1RZTEVTX0VMRU1FTlRfSUQgPSBgJHtMRUdBQ1lfT0JTSURJQU5fTElCUkFSWV9OQU1FfS1zdHlsZXNgO1xuXG4vKipcbiAqIFRoZSBzaGFyZWQtc3RhdGUga2V5IHVuZGVyIHdoaWNoIGBvYnNpZGlhbi1saWJgIGNvcGllcyByZWNvcmQgdGhlIHZlcnNpb24gdGhhdCBpbmplY3RlZCB0aGUgc3R5bGVzLlxuICovXG5leHBvcnQgY29uc3QgTEFTVF9PQlNJRElBTl9MSUJfVkVSU0lPTl9LRVkgPSAnbGFzdE9ic2lkaWFuTGliVmVyc2lvbic7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBrZXkgdW5kZXIgd2hpY2ggYG9ic2lkaWFuLWRldi11dGlsc2AgY29waWVzIHJlY29yZCB0aGUgdmVyc2lvbiB0aGF0IGluamVjdGVkIHRoZSBzdHlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBMRUdBQ1lfTEFTVF9MSUJSQVJZX1ZFUlNJT05fS0VZID0gJ2xhc3RMaWJyYXJ5VmVyc2lvbic7XG5cbi8qKlxuICogVGhlIHZhbHVlIGBvYnNpZGlhbi1saWJgIHdyaXRlcyB1bmRlciB7QGxpbmsgTEVHQUNZX0xBU1RfTElCUkFSWV9WRVJTSU9OX0tFWX0uIEl0IGlzIGFib3ZlIGV2ZXJ5XG4gKiBgb2JzaWRpYW4tZGV2LXV0aWxzYCB2ZXJzaW9uLCBzbyBhbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCBjb3B5IGxvYWRpbmcgbGF0ZXIgY29tcGFyZXMgbG93ZXIgYW5kIGxlYXZlcyB0aGUgc3R5bGVzXG4gKiBhbG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IExFR0FDWV9MQVNUX0xJQlJBUllfVkVSU0lPTl9TRU5USU5FTCA9ICc5OTk5OTk5OTkuMC4wJztcblxuLyoqXG4gKiBQYXJhbXMgZm9yIHtAbGluayBpbmplY3RMaWJyYXJ5U3R5bGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmplY3RMaWJyYXJ5U3R5bGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudCB3aG9zZSBgPGhlYWQ+YCByZWNlaXZlcyB0aGUgYDxzdHlsZT5gIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBkb2M6IERvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIHRvIGluamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGxpYnJhcnlTdHlsZXM6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhpcyBgb2JzaWRpYW4tbGliYCBjb3B5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyeVZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmplY3RzIHRoZSBsaWJyYXJ5IHN0eWxlcywgdW5sZXNzIGFuIGBvYnNpZGlhbi1saWJgIGNvcHkgb2YgdGhlIHNhbWUgb3IgYSBuZXdlciB2ZXJzaW9uIGFscmVhZHkgZGlkLlxuICpcbiAqIEEgc3R5bGUgZWxlbWVudCBsZWZ0IGJ5IGFuIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGNvcHkgaXMgYWx3YXlzIHJlcGxhY2VkLCB3aGF0ZXZlciBpdHMgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBJbmplY3RMaWJyYXJ5U3R5bGVzUGFyYW1zfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdExpYnJhcnlTdHlsZXMocGFyYW1zOiBJbmplY3RMaWJyYXJ5U3R5bGVzUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHsgZG9jLCBsaWJyYXJ5U3R5bGVzLCBsaWJyYXJ5VmVyc2lvbiB9ID0gcGFyYW1zO1xuXG4gIC8vIFNldCBiZWZvcmUgdGhlIGVhcmx5IHJldHVybiwgc28gYW4gYG9ic2lkaWFuLWRldi11dGlsc2AgY29weSBsb2FkaW5nIGFmdGVyIGFueSBgb2JzaWRpYW4tbGliYCBjb3B5IHN0YXlzIG91dC5cbiAgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlKExFR0FDWV9MQVNUX0xJQlJBUllfVkVSU0lPTl9LRVksICcwLjAuMCcpLnZhbHVlID0gTEVHQUNZX0xBU1RfTElCUkFSWV9WRVJTSU9OX1NFTlRJTkVMO1xuXG4gIGNvbnN0IGxhc3RWZXJzaW9uV3JhcHBlciA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxudWxsIHwgc3RyaW5nPihMQVNUX09CU0lESUFOX0xJQl9WRVJTSU9OX0tFWSwgbnVsbCk7XG4gIGlmIChsYXN0VmVyc2lvbldyYXBwZXIudmFsdWUgIT09IG51bGwgJiYgY29tcGFyZVZlcnNpb25zKGxpYnJhcnlWZXJzaW9uLCBsYXN0VmVyc2lvbldyYXBwZXIudmFsdWUpIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsYXN0VmVyc2lvbldyYXBwZXIudmFsdWUgPSBsaWJyYXJ5VmVyc2lvbjtcblxuICBkb2MuaGVhZC5xdWVyeVNlbGVjdG9yKGAjJHtMSUJSQVJZX1NUWUxFU19FTEVNRU5UX0lEfWApPy5yZW1vdmUoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZm9yYmlkZGVuLWVsZW1lbnRzIC0tIFdlIG5lZWQgdG8gY3JlYXRlIGEgc3R5bGUgZWxlbWVudCB0byBhcHBseSB0aGUgbGlicmFyeSBzdHlsZXMuXG4gIGRvYy5oZWFkLmNyZWF0ZUVsKCdzdHlsZScsIHtcbiAgICBhdHRyOiB7XG4gICAgICBpZDogTElCUkFSWV9TVFlMRVNfRUxFTUVOVF9JRFxuICAgIH0sXG4gICAgdGV4dDogbGlicmFyeVN0eWxlc1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxTQUFTLHVCQUF1QjtBQUVoQyxTQUFTLG9DQUFvQztBQUM3QyxTQUFTLGdDQUFnQztBQU1sQyxNQUFNLDRCQUE0QixHQUFHLDRCQUE0QjtBQUtqRSxNQUFNLGdDQUFnQztBQUt0QyxNQUFNLGtDQUFrQztBQU94QyxNQUFNLHVDQUF1QztBQTZCN0MsU0FBUyxvQkFBb0IsUUFBeUM7QUFDM0UsUUFBTSxFQUFFLEtBQUssZUFBZSxlQUFlLElBQUk7QUFHL0MsMkJBQXlCLGlDQUFpQyxPQUFPLEVBQUUsUUFBUTtBQUUzRSxRQUFNLHFCQUFxQix5QkFBd0MsK0JBQStCLElBQUk7QUFDdEcsTUFBSSxtQkFBbUIsVUFBVSxRQUFRLGdCQUFnQixnQkFBZ0IsbUJBQW1CLEtBQUssS0FBSyxHQUFHO0FBQ3ZHO0FBQUEsRUFDRjtBQUVBLHFCQUFtQixRQUFRO0FBRTNCLE1BQUksS0FBSyxjQUFjLElBQUkseUJBQXlCLEVBQUUsR0FBRyxPQUFPO0FBRWhFLE1BQUksS0FBSyxTQUFTLFNBQVM7QUFBQSxJQUN6QixNQUFNO0FBQUEsTUFDSixJQUFJO0FBQUEsSUFDTjtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNIOyIsIm5hbWVzIjpbXX0=
|
|
@@ -8,14 +8,21 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Helpers for working with the `@mnaoumov/obsidian-lib` library.
|
|
10
10
|
*
|
|
11
|
-
* The user-visible
|
|
12
|
-
*
|
|
13
|
-
* filters and their stylesheets keep matching
|
|
11
|
+
* The user-visible name is `obsidian-lib`: the debug namespace of this library's own modules and its CSS class. The
|
|
12
|
+
* legacy name, `obsidian-dev-utils`, is the one this library was published under before it split into packages, and
|
|
13
|
+
* it is kept beside the new one for good, so plugins, their users' debug filters and their stylesheets keep matching:
|
|
14
|
+
* every element carries both classes, and a debug filter on either namespace shows the messages. The stylesheet id
|
|
15
|
+
* and the namespace of the generic `@mnaoumov/typescript-lib` modules stay legacy only.
|
|
14
16
|
*/
|
|
15
17
|
/**
|
|
16
|
-
* The user-visible name of the library:
|
|
18
|
+
* The user-visible name of the library: the debug namespace of its own modules, and its CSS class.
|
|
17
19
|
*/
|
|
18
|
-
export declare const OBSIDIAN_LIBRARY_NAME = "obsidian-
|
|
20
|
+
export declare const OBSIDIAN_LIBRARY_NAME = "obsidian-lib";
|
|
21
|
+
/**
|
|
22
|
+
* The legacy user-visible name of the library, kept beside {@link OBSIDIAN_LIBRARY_NAME} for good: a debug namespace
|
|
23
|
+
* and a CSS class that older copies and existing filters and stylesheets use, and the stylesheet id.
|
|
24
|
+
*/
|
|
25
|
+
export declare const LEGACY_OBSIDIAN_LIBRARY_NAME = "obsidian-dev-utils";
|
|
19
26
|
/**
|
|
20
27
|
* Parameters for {@link ObsidianLibrary.init}.
|
|
21
28
|
*/
|
package/dist/lib/esm/library.mjs
CHANGED
|
@@ -3,7 +3,8 @@ 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
|
|
|
6
|
-
const OBSIDIAN_LIBRARY_NAME = "obsidian-
|
|
6
|
+
const OBSIDIAN_LIBRARY_NAME = "obsidian-lib";
|
|
7
|
+
const LEGACY_OBSIDIAN_LIBRARY_NAME = "obsidian-dev-utils";
|
|
7
8
|
const DEFAULT_PARAMS = {
|
|
8
9
|
cssClassScope: ""
|
|
9
10
|
};
|
|
@@ -41,7 +42,8 @@ class ObsidianLibraryContext {
|
|
|
41
42
|
}
|
|
42
43
|
const ObsidianLibrary = new ObsidianLibraryContext();
|
|
43
44
|
export {
|
|
45
|
+
LEGACY_OBSIDIAN_LIBRARY_NAME,
|
|
44
46
|
OBSIDIAN_LIBRARY_NAME,
|
|
45
47
|
ObsidianLibrary
|
|
46
48
|
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYnJhcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCBsaWJyYXJ5LlxuICpcbiAqIFRoZSB1c2VyLXZpc2libGUgbmFtZSBpcyBgb2JzaWRpYW4tbGliYDogdGhlIGRlYnVnIG5hbWVzcGFjZSBvZiB0aGlzIGxpYnJhcnkncyBvd24gbW9kdWxlcyBhbmQgaXRzIENTUyBjbGFzcy4gVGhlXG4gKiBsZWdhY3kgbmFtZSwgYG9ic2lkaWFuLWRldi11dGlsc2AsIGlzIHRoZSBvbmUgdGhpcyBsaWJyYXJ5IHdhcyBwdWJsaXNoZWQgdW5kZXIgYmVmb3JlIGl0IHNwbGl0IGludG8gcGFja2FnZXMsIGFuZFxuICogaXQgaXMga2VwdCBiZXNpZGUgdGhlIG5ldyBvbmUgZm9yIGdvb2QsIHNvIHBsdWdpbnMsIHRoZWlyIHVzZXJzJyBkZWJ1ZyBmaWx0ZXJzIGFuZCB0aGVpciBzdHlsZXNoZWV0cyBrZWVwIG1hdGNoaW5nOlxuICogZXZlcnkgZWxlbWVudCBjYXJyaWVzIGJvdGggY2xhc3NlcywgYW5kIGEgZGVidWcgZmlsdGVyIG9uIGVpdGhlciBuYW1lc3BhY2Ugc2hvd3MgdGhlIG1lc3NhZ2VzLiBUaGUgc3R5bGVzaGVldCBpZFxuICogYW5kIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIGdlbmVyaWMgYEBtbmFvdW1vdi90eXBlc2NyaXB0LWxpYmAgbW9kdWxlcyBzdGF5IGxlZ2FjeSBvbmx5LlxuICovXG5cbi8qKlxuICogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoZSBsaWJyYXJ5OiB0aGUgZGVidWcgbmFtZXNwYWNlIG9mIGl0cyBvd24gbW9kdWxlcywgYW5kIGl0cyBDU1MgY2xhc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBPQlNJRElBTl9MSUJSQVJZX05BTUUgPSAnb2JzaWRpYW4tbGliJztcblxuLyoqXG4gKiBUaGUgbGVnYWN5IHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBrZXB0IGJlc2lkZSB7QGxpbmsgT0JTSURJQU5fTElCUkFSWV9OQU1FfSBmb3IgZ29vZDogYSBkZWJ1ZyBuYW1lc3BhY2VcbiAqIGFuZCBhIENTUyBjbGFzcyB0aGF0IG9sZGVyIGNvcGllcyBhbmQgZXhpc3RpbmcgZmlsdGVycyBhbmQgc3R5bGVzaGVldHMgdXNlLCBhbmQgdGhlIHN0eWxlc2hlZXQgaWQuXG4gKi9cbmV4cG9ydCBjb25zdCBMRUdBQ1lfT0JTSURJQU5fTElCUkFSWV9OQU1FID0gJ29ic2lkaWFuLWRldi11dGlscyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIE9ic2lkaWFuTGlicmFyeS5pbml0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkxpYnJhcnlJbml0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwZXItcGx1Z2luIENTUyBjbGFzcyBzY29wZSBhcHBsaWVkIGFsb25nc2lkZSB0aGUgbGlicmFyeSBjbGFzcyBieSBgYWRkUGx1Z2luQ3NzQ2xhc3Nlc2AuXG4gICAqL1xuICByZWFkb25seSBjc3NDbGFzc1Njb3BlOiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfUEFSQU1TOiBPYnNpZGlhbkxpYnJhcnlJbml0UGFyYW1zID0ge1xuICBjc3NDbGFzc1Njb3BlOiAnJ1xufTtcblxuLyoqXG4gKiBUaGUgT2JzaWRpYW4gaGFsZiBvZiB0aGUgbGlicmFyeSdzIGluaXRpYWxpemF0aW9uIHN0YXRlLiBgaW5pdFBsdWdpbkNvbnRleHRgIGluaXRpYWxpemVzIGl0IGJlc2lkZSB0aGVcbiAqIGdlbmVyaWMgYExpYnJhcnlgIGZyb20gYEBtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9saWJyYXJ5YC5cbiAqL1xuY2xhc3MgT2JzaWRpYW5MaWJyYXJ5Q29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgcGVyLXBsdWdpbiBDU1MgY2xhc3Mgc2NvcGUgYXBwbGllZCBhbG9uZ3NpZGUgdGhlIGxpYnJhcnkgY2xhc3MgYnkgYGFkZFBsdWdpbkNzc0NsYXNzZXNgLlxuICAgKiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgQ1NTIGNsYXNzIHNjb3BlLlxuICAgKi9cbiAgcHVibGljIGdldCBjc3NDbGFzc1Njb3BlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmNzc0NsYXNzU2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHBhcmFtczogT2JzaWRpYW5MaWJyYXJ5SW5pdFBhcmFtcyA9IHsgLi4uREVGQVVMVF9QQVJBTVMgfTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbnRleHQuIE11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZTsgY2FsbGluZyBpdCBhZ2FpbiBiZWZvcmUge0BsaW5rIHJlc2V0VG9EZWZhdWx0fSB0aHJvd3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uZmlndXJhdGlvbiB0byBpbmplY3QuXG4gICAqL1xuICBwdWJsaWMgaW5pdChwYXJhbXM6IE9ic2lkaWFuTGlicmFyeUluaXRQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7T0JTSURJQU5fTElCUkFSWV9OQU1FfSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiBDYWxsIE9ic2lkaWFuTGlicmFyeS5yZXNldFRvRGVmYXVsdCgpIGJlZm9yZSBpbml0aWFsaXppbmcgYWdhaW4uYCk7XG4gICAgfVxuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5wYXJhbXMgPSB7IC4uLnBhcmFtcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY29udGV4dCBiYWNrIHRvIGl0cyBkZWZhdWx0ICh1bmluaXRpYWxpemVkKSBzdGF0ZSwgYWxsb3dpbmcge0BsaW5rIGluaXR9IHRvIGJlIGNhbGxlZCBhZ2Fpbi5cbiAgICovXG4gIHB1YmxpYyByZXNldFRvRGVmYXVsdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhcmFtcyA9IHsgLi4uREVGQVVMVF9QQVJBTVMgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzaW5nbGUge0BsaW5rIE9ic2lkaWFuTGlicmFyeUNvbnRleHR9IGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgT2JzaWRpYW5MaWJyYXJ5ID0gbmV3IE9ic2lkaWFuTGlicmFyeUNvbnRleHQoKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBZU8sTUFBTSx3QkFBd0I7QUFNOUIsTUFBTSwrQkFBK0I7QUFZNUMsTUFBTSxpQkFBNEM7QUFBQSxFQUNoRCxlQUFlO0FBQ2pCO0FBTUEsTUFBTSx1QkFBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8zQixJQUFXLGdCQUF3QjtBQUNqQyxXQUFPLEtBQUssT0FBTztBQUFBLEVBQ3JCO0FBQUEsRUFFUSxnQkFBZ0I7QUFBQSxFQUVoQixTQUFvQyxFQUFFLEdBQUcsZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU96RCxLQUFLLFFBQXlDO0FBQ25ELFFBQUksS0FBSyxlQUFlO0FBQ3RCLFlBQU0sSUFBSSxNQUFNLEdBQUcscUJBQXFCLDJGQUEyRjtBQUFBLElBQ3JJO0FBQ0EsU0FBSyxnQkFBZ0I7QUFDckIsU0FBSyxTQUFTLEVBQUUsR0FBRyxPQUFPO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLGlCQUF1QjtBQUM1QixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLFNBQVMsRUFBRSxHQUFHLGVBQWU7QUFBQSxFQUNwQztBQUNGO0FBS08sTUFBTSxrQkFBa0IsSUFBSSx1QkFBdUI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
5
|
-
* LEGACY: provides access to the process-wide shared-state bag on the `__obsidianDevUtils` global
|
|
6
|
-
* the retired `obsidian-dev-utils` package's; it stays
|
|
7
|
-
* bag, so it is a wire format rather than a name to
|
|
5
|
+
* LEGACY: provides access to the process-wide shared-state bag on the `__obsidianDevUtils` global, also reachable as
|
|
6
|
+
* `__obsidianLib`. The legacy name is the retired `obsidian-dev-utils` package's; it stays, and stays the authority,
|
|
7
|
+
* because plugins bundling an older copy read and write the same bag, so it is a wire format rather than a name to
|
|
8
|
+
* copy. `__obsidianLib` is an accessor onto it, never a second object. New generic state belongs in
|
|
8
9
|
* `@mnaoumov/typescript-lib/typescript-lib-state` (the `Symbol.for('@mnaoumov/typescript-lib/state')` slot).
|
|
9
10
|
*
|
|
10
11
|
* The bag is stored on `globalThis.__obsidianDevUtils`, i.e. on the global object of the realm in
|
|
@@ -18,6 +19,10 @@
|
|
|
18
19
|
* plugins bundling an older copy of this library, which still keep that state here, share it with newer ones.
|
|
19
20
|
*/
|
|
20
21
|
import { ValueWrapper } from '@mnaoumov/typescript-lib/value-wrapper';
|
|
22
|
+
/**
|
|
23
|
+
* The name of the global through which the shared-state bag is also reachable, an alias of `__obsidianDevUtils`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const OBSIDIAN_LIB_GLOBAL_NAME = "__obsidianLib";
|
|
21
26
|
/**
|
|
22
27
|
* Retrieves or creates a shared-state {@link ValueWrapper} for a given key on `globalThis.__obsidianDevUtils`.
|
|
23
28
|
*
|
|
@@ -32,6 +32,7 @@ ensureBrowserProcess();
|
|
|
32
32
|
|
|
33
33
|
import { getTypescriptLibStateSlot } from "@mnaoumov/typescript-lib/typescript-lib-state";
|
|
34
34
|
import { ValueWrapper } from "@mnaoumov/typescript-lib/value-wrapper";
|
|
35
|
+
const OBSIDIAN_LIB_GLOBAL_NAME = "__obsidianLib";
|
|
35
36
|
const SHARED_WITH_TYPESCRIPT_LIB_STATE_KEYS = ["debug", "debuggers", "sharedAbortController"];
|
|
36
37
|
function getObsidianDevUtilsState(key, defaultValue) {
|
|
37
38
|
return getObsidianDevUtilsBag()[key] ??= ValueWrapper.of(defaultValue);
|
|
@@ -57,11 +58,29 @@ function shareTypescriptLibStateWithObsidianDevUtilsState() {
|
|
|
57
58
|
function getObsidianDevUtilsBag() {
|
|
58
59
|
const wrapper = globalThis;
|
|
59
60
|
wrapper.__obsidianDevUtils ??= {};
|
|
61
|
+
installObsidianLibAlias();
|
|
60
62
|
return wrapper.__obsidianDevUtils;
|
|
61
63
|
}
|
|
64
|
+
function installObsidianLibAlias() {
|
|
65
|
+
const realmGlobal = globalThis;
|
|
66
|
+
if (Object.hasOwn(realmGlobal, OBSIDIAN_LIB_GLOBAL_NAME)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
Object.defineProperty(realmGlobal, OBSIDIAN_LIB_GLOBAL_NAME, {
|
|
70
|
+
configurable: true,
|
|
71
|
+
enumerable: false,
|
|
72
|
+
get() {
|
|
73
|
+
return realmGlobal.__obsidianDevUtils;
|
|
74
|
+
},
|
|
75
|
+
set(value) {
|
|
76
|
+
realmGlobal.__obsidianDevUtils = value;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
62
80
|
export {
|
|
81
|
+
OBSIDIAN_LIB_GLOBAL_NAME,
|
|
63
82
|
getObsidianDevUtilsState,
|
|
64
83
|
resetObsidianDevUtilsState,
|
|
65
84
|
shareTypescriptLibStateWithObsidianDevUtilsState
|
|
66
85
|
};
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExFR0FDWTogcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvbiB0aGUgYF9fb2JzaWRpYW5EZXZVdGlsc2AgZ2xvYmFsLCBhbHNvIHJlYWNoYWJsZSBhc1xuICogYF9fb2JzaWRpYW5MaWJgLiBUaGUgbGVnYWN5IG5hbWUgaXMgdGhlIHJldGlyZWQgYG9ic2lkaWFuLWRldi11dGlsc2AgcGFja2FnZSdzOyBpdCBzdGF5cywgYW5kIHN0YXlzIHRoZSBhdXRob3JpdHksXG4gKiBiZWNhdXNlIHBsdWdpbnMgYnVuZGxpbmcgYW4gb2xkZXIgY29weSByZWFkIGFuZCB3cml0ZSB0aGUgc2FtZSBiYWcsIHNvIGl0IGlzIGEgd2lyZSBmb3JtYXQgcmF0aGVyIHRoYW4gYSBuYW1lIHRvXG4gKiBjb3B5LiBgX19vYnNpZGlhbkxpYmAgaXMgYW4gYWNjZXNzb3Igb250byBpdCwgbmV2ZXIgYSBzZWNvbmQgb2JqZWN0LiBOZXcgZ2VuZXJpYyBzdGF0ZSBiZWxvbmdzIGluXG4gKiBgQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGVzY3JpcHQtbGliLXN0YXRlYCAodGhlIGBTeW1ib2wuZm9yKCdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RhdGUnKWAgc2xvdCkuXG4gKlxuICogVGhlIGJhZyBpcyBzdG9yZWQgb24gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkRldlV0aWxzYCwgaS5lLiBvbiB0aGUgZ2xvYmFsIG9iamVjdCBvZiB0aGUgcmVhbG0gaW5cbiAqIHdoaWNoIHRoaXMgbGlicmFyeSBpcyBsb2FkZWQuIEJlY2F1c2UgYSBmdW5jdGlvbidzIGBnbG9iYWxUaGlzYCByZXNvbHZlcyB0byBpdHMgZGVmaW5pbmdcbiAqIHJlYWxtIChub3QgdGhlIGNhbGxlcidzKSwgZXZlcnkgY29uc3VtZXIgdGhhdCBidW5kbGVzIHRoZSBsaWJyYXJ5IGluIHRoZSBtYWluIE9ic2lkaWFuIHJlbmRlcmVyXG4gKiBzaGFyZXMgdGhlIHNhbWUgYmFnLCByZWdhcmRsZXNzIG9mIHdoaWNoIHdpbmRvdyBpcyBjdXJyZW50bHkgYWN0aXZlLiBUaGlzIGludGVudGlvbmFsbHkgcmVwbGFjZXNcbiAqIHRoZSBwcmV2aW91cyBgQXBwYC1zY29wZWQgc3RvcmFnZSwgc28gY2FsbGVycyBubyBsb25nZXIgbmVlZCB0byBwYXNzIGFuIGBBcHBgIGluc3RhbmNlLlxuICpcbiAqIFRoZSBnZW5lcmljLCBub24tT2JzaWRpYW4gc3RhdGUgKHRoZSBkZWJ1Z2dlcnMsIHRoZSBgZGVidWdgIGluc3RhbmNlIGFuZCB0aGUgc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIpIGxpdmVzIGluXG4gKiBgdHlwZXNjcmlwdC1saWItc3RhdGUudHNgIGluc3RlYWQuIHtAbGluayBzaGFyZVR5cGVzY3JpcHRMaWJTdGF0ZVdpdGhPYnNpZGlhbkRldlV0aWxzU3RhdGV9IGxpbmtzIHRoZSB0d28sIHNvXG4gKiBwbHVnaW5zIGJ1bmRsaW5nIGFuIG9sZGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5LCB3aGljaCBzdGlsbCBrZWVwIHRoYXQgc3RhdGUgaGVyZSwgc2hhcmUgaXQgd2l0aCBuZXdlciBvbmVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB7IGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZXNjcmlwdC1saWItc3RhdGUnO1xuaW1wb3J0IHsgVmFsdWVXcmFwcGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3ZhbHVlLXdyYXBwZXInO1xuXG5pbnRlcmZhY2UgT2JzaWRpYW5EZXZVdGlsc1dyYXBwZXIge1xuICBfX29ic2lkaWFuRGV2VXRpbHM6IEdlbmVyaWNPYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGdsb2JhbCB0aHJvdWdoIHdoaWNoIHRoZSBzaGFyZWQtc3RhdGUgYmFnIGlzIGFsc28gcmVhY2hhYmxlLCBhbiBhbGlhcyBvZiBgX19vYnNpZGlhbkRldlV0aWxzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0xJQl9HTE9CQUxfTkFNRSA9ICdfX29ic2lkaWFuTGliJztcblxuLyoqXG4gKiBUaGUga2V5cyB3aG9zZSBzdGF0ZSBtb3ZlZCBmcm9tIGBfX29ic2lkaWFuRGV2VXRpbHNgIHRvIHRoZSBnZW5lcmljIHNoYXJlZCBzdGF0ZSwgYW5kIHdoaWNoIG9sZGVyIGNvcGllcyBvZlxuICogdGhpcyBsaWJyYXJ5IHN0aWxsIGtlZXAgdW5kZXIgYF9fb2JzaWRpYW5EZXZVdGlsc2AuXG4gKi9cbmNvbnN0IFNIQVJFRF9XSVRIX1RZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWVMgPSBbJ2RlYnVnJywgJ2RlYnVnZ2VycycsICdzaGFyZWRBYm9ydENvbnRyb2xsZXInXSBhcyBjb25zdDtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyBhIHNoYXJlZC1zdGF0ZSB7QGxpbmsgVmFsdWVXcmFwcGVyfSBmb3IgYSBnaXZlbiBrZXkgb24gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkRldlV0aWxzYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2hhcmVkIHN0YXRlIHZhbHVlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZSB1bmRlci5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgcmV0dXJuIChnZXRPYnNpZGlhbkRldlV0aWxzQmFnKClba2V5XSA/Pz0gVmFsdWVXcmFwcGVyLm9mKGRlZmF1bHRWYWx1ZSkpIGFzIFZhbHVlV3JhcHBlcjxUPjtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIHNoYXJlZC1zdGF0ZSBiYWcgb24gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkRldlV0aWxzYC5cbiAqXG4gKiBJbnRlbmRlZCBmb3IgdGVzdCBpc29sYXRpb246IGNhbGwgaXQgYmVmb3JlIGVhY2ggdGVzdCBzbyBhY2N1bXVsYXRlZCBzdGF0ZSAoZGVidWdnZXJzLCBxdWV1ZXMsXG4gKiByZWdpc3RlcmVkIGhhbmRsZXJzLCBldGMuKSBkb2VzIG5vdCBsZWFrIGJldHdlZW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgpOiB2b2lkIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZ2xvYmFsLXRoaXMgLS0gVGhlIHNoYXJlZCBzdGF0ZSBpbnRlbnRpb25hbGx5IGxpdmVzIG9uIHRoZSByZWFsbSBnbG9iYWwuXG4gIChnbG9iYWxUaGlzIGFzIFBhcnRpYWw8T2JzaWRpYW5EZXZVdGlsc1dyYXBwZXI+KS5fX29ic2lkaWFuRGV2VXRpbHMgPSB7fTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgZ2VuZXJpYyBzaGFyZWQgc3RhdGUgYW5kIGBfX29ic2lkaWFuRGV2VXRpbHNgIGhvbGQgdGhlIHNhbWUge0BsaW5rIFZhbHVlV3JhcHBlcn0gZm9yIGVhY2gga2V5IHRoYXRcbiAqIG1vdmVkIGJldHdlZW4gdGhlbS5cbiAqXG4gKiBBIHdyYXBwZXIgYWxyZWFkeSB1bmRlciBgX19vYnNpZGlhbkRldlV0aWxzYCB3aW5zLCBiZWNhdXNlIGFuIG9sZGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5IGxvYWRlZCBmaXJzdCBhbmQgaXRzXG4gKiBjYWxsZXJzIGFscmVhZHkgaG9sZCB0aGF0IGluc3RhbmNlLiBPdGhlcndpc2UgdGhlIGdlbmVyaWMgd3JhcHBlciBpcyBwdWJsaXNoZWQgdW5kZXIgYF9fb2JzaWRpYW5EZXZVdGlsc2AsIGZvclxuICogb2xkZXIgY29waWVzIGxvYWRlZCBsYXRlciBhbmQgZm9yIHRoZSBkZXZ0b29scyBjb25zb2xlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hhcmVUeXBlc2NyaXB0TGliU3RhdGVXaXRoT2JzaWRpYW5EZXZVdGlsc1N0YXRlKCk6IHZvaWQge1xuICBjb25zdCBiYWcgPSBnZXRPYnNpZGlhbkRldlV0aWxzQmFnKCk7XG4gIGNvbnN0IHZhbHVlcyA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QoKS52YWx1ZXM7XG4gIGZvciAoY29uc3Qga2V5IG9mIFNIQVJFRF9XSVRIX1RZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWVMpIHtcbiAgICBjb25zdCBsZWdhY3lXcmFwcGVyID0gYmFnW2tleV0gYXMgdW5kZWZpbmVkIHwgVmFsdWVXcmFwcGVyO1xuICAgIGlmIChsZWdhY3lXcmFwcGVyKSB7XG4gICAgICB2YWx1ZXNba2V5XSA9IGxlZ2FjeVdyYXBwZXI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB3cmFwcGVyID0gdmFsdWVzW2tleV07XG4gICAgaWYgKHdyYXBwZXIpIHtcbiAgICAgIGJhZ1trZXldID0gd3JhcHBlcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0T2JzaWRpYW5EZXZVdGlsc0JhZygpOiBHZW5lcmljT2JqZWN0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvbm8tZ2xvYmFsLXRoaXMgLS0gVGhlIHNoYXJlZCBzdGF0ZSBpbnRlbnRpb25hbGx5IGxpdmVzIG9uIHRoZSByZWFsbSBnbG9iYWwuXG4gIGNvbnN0IHdyYXBwZXIgPSBnbG9iYWxUaGlzIGFzIFBhcnRpYWw8T2JzaWRpYW5EZXZVdGlsc1dyYXBwZXI+O1xuICB3cmFwcGVyLl9fb2JzaWRpYW5EZXZVdGlscyA/Pz0ge307XG4gIGluc3RhbGxPYnNpZGlhbkxpYkFsaWFzKCk7XG4gIHJldHVybiB3cmFwcGVyLl9fb2JzaWRpYW5EZXZVdGlscztcbn1cblxuLyoqXG4gKiBNYWtlcyBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuTGliYCBhbiBhY2Nlc3NvciBvbnRvIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5EZXZVdGlsc2AsIHNvIHRoZSB0d28gbmFtZXMgYXJlIGFsd2F5cyB0aGVcbiAqIHNhbWUgb2JqZWN0LlxuICpcbiAqIFRoZSBsZWdhY3kgbmFtZSBzdGF5cyB0aGUgYXV0aG9yaXR5LCBiZWNhdXNlIGV2ZXJ5IG9sZGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5IG9ubHkgZXZlciBzZWVzIGl0LCBhbmQgY29kZSBvdXRzaWRlXG4gKiB0aGUgbGlicmFyeSBhc3NpZ25zIGl0IGRpcmVjdGx5LiBBbiBhY2Nlc3NvciBmb2xsb3dzIHN1Y2ggYW4gYXNzaWdubWVudCwgd2hlcmUgYSBzZWNvbmQgZGF0YSBwcm9wZXJ0eSB3b3VsZCBkcmlmdC5cbiAqIEFub3RoZXIgY29weSBtYXkgYWxyZWFkeSBoYXZlIGluc3RhbGxlZCB0aGUgYWxpYXM7IGFueSBjb3B5J3MgYWNjZXNzb3IgYmVoYXZlcyB0aGUgc2FtZSwgc28gaXQgaXMgbGVmdCBhcyBpdCBpcy5cbiAqL1xuZnVuY3Rpb24gaW5zdGFsbE9ic2lkaWFuTGliQWxpYXMoKTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIFRoZSBzaGFyZWQgc3RhdGUgaW50ZW50aW9uYWxseSBsaXZlcyBvbiB0aGUgcmVhbG0gZ2xvYmFsLlxuICBjb25zdCByZWFsbUdsb2JhbCA9IGdsb2JhbFRoaXMgYXMgUGFydGlhbDxPYnNpZGlhbkRldlV0aWxzV3JhcHBlcj47XG4gIGlmIChPYmplY3QuaGFzT3duKHJlYWxtR2xvYmFsLCBPQlNJRElBTl9MSUJfR0xPQkFMX05BTUUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlYWxtR2xvYmFsLCBPQlNJRElBTl9MSUJfR0xPQkFMX05BTUUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0KCk6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHJlYWxtR2xvYmFsLl9fb2JzaWRpYW5EZXZVdGlscztcbiAgICB9LFxuICAgIHNldCh2YWx1ZTogR2VuZXJpY09iamVjdCk6IHZvaWQge1xuICAgICAgcmVhbG1HbG9iYWwuX19vYnNpZGlhbkRldlV0aWxzID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsU0FBUyxpQ0FBaUM7QUFDMUMsU0FBUyxvQkFBb0I7QUFTdEIsTUFBTSwyQkFBMkI7QUFNeEMsTUFBTSx3Q0FBd0MsQ0FBQyxTQUFTLGFBQWEsdUJBQXVCO0FBVXJGLFNBQVMseUJBQTRCLEtBQWEsY0FBa0M7QUFDekYsU0FBUSx1QkFBdUIsRUFBRSxHQUFHLE1BQU0sYUFBYSxHQUFHLFlBQVk7QUFDeEU7QUFRTyxTQUFTLDZCQUFtQztBQUVqRCxFQUFDLFdBQWdELHFCQUFxQixDQUFDO0FBQ3pFO0FBVU8sU0FBUyxtREFBeUQ7QUFDdkUsUUFBTSxNQUFNLHVCQUF1QjtBQUNuQyxRQUFNLFNBQVMsMEJBQTBCLEVBQUU7QUFDM0MsYUFBVyxPQUFPLHVDQUF1QztBQUN2RCxVQUFNLGdCQUFnQixJQUFJLEdBQUc7QUFDN0IsUUFBSSxlQUFlO0FBQ2pCLGFBQU8sR0FBRyxJQUFJO0FBQ2Q7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLE9BQU8sR0FBRztBQUMxQixRQUFJLFNBQVM7QUFDWCxVQUFJLEdBQUcsSUFBSTtBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLHlCQUF3QztBQUUvQyxRQUFNLFVBQVU7QUFDaEIsVUFBUSx1QkFBdUIsQ0FBQztBQUNoQywwQkFBd0I7QUFDeEIsU0FBTyxRQUFRO0FBQ2pCO0FBVUEsU0FBUywwQkFBZ0M7QUFFdkMsUUFBTSxjQUFjO0FBQ3BCLE1BQUksT0FBTyxPQUFPLGFBQWEsd0JBQXdCLEdBQUc7QUFDeEQ7QUFBQSxFQUNGO0FBRUEsU0FBTyxlQUFlLGFBQWEsMEJBQTBCO0FBQUEsSUFDM0QsY0FBYztBQUFBLElBQ2QsWUFBWTtBQUFBLElBQ1osTUFBaUM7QUFDL0IsYUFBTyxZQUFZO0FBQUEsSUFDckI7QUFBQSxJQUNBLElBQUksT0FBNEI7QUFDOUIsa0JBQVkscUJBQXFCO0FBQUEsSUFDbkM7QUFBQSxFQUNGLENBQUM7QUFDSDsiLCJuYW1lcyI6W119
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
} from "../generated-during-build.mjs";
|
|
44
44
|
import { injectLibraryStyles } from "../library-styles.mjs";
|
|
45
45
|
import {
|
|
46
|
-
|
|
46
|
+
LEGACY_OBSIDIAN_LIBRARY_NAME,
|
|
47
47
|
ObsidianLibrary
|
|
48
48
|
} from "../library.mjs";
|
|
49
49
|
import { shareTypescriptLibStateWithObsidianDevUtilsState } from "../obsidian-dev-utils-state.mjs";
|
|
@@ -52,6 +52,7 @@ function addPluginCssClasses(element, cssClasses) {
|
|
|
52
52
|
const extraCssClasses = typeof cssClasses === "string" ? [cssClasses] : cssClasses ?? [];
|
|
53
53
|
element.addClass(
|
|
54
54
|
CssClass.LibraryName,
|
|
55
|
+
CssClass.LegacyLibraryName,
|
|
55
56
|
...ObsidianLibrary.cssClassScope ? [ObsidianLibrary.cssClassScope] : [],
|
|
56
57
|
...extraCssClasses
|
|
57
58
|
);
|
|
@@ -71,7 +72,9 @@ function initPluginContext(pluginId) {
|
|
|
71
72
|
ObsidianLibrary.init({ cssClassScope: pluginId });
|
|
72
73
|
Library.init({
|
|
73
74
|
debugGuideUrl: DEBUG_GUIDE_URL,
|
|
74
|
-
|
|
75
|
+
// TODO: Move to `OBSIDIAN_LIBRARY_NAME` once `@mnaoumov/typescript-lib` honours a legacy namespace alias, so
|
|
76
|
+
// filters written for this one keep showing the generic modules' messages.
|
|
77
|
+
debugNamespace: LEGACY_OBSIDIAN_LIBRARY_NAME,
|
|
75
78
|
debugPrefixNamespace: `${pluginId}:`,
|
|
76
79
|
shouldPrintStackTrace: true
|
|
77
80
|
});
|
|
@@ -89,4 +92,4 @@ export {
|
|
|
89
92
|
initDebugController,
|
|
90
93
|
initPluginContext
|
|
91
94
|
};
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dCBhbmQgc2V0cyB1cCB0aGUgcGx1Z2luIElELlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVidWdDb250cm9sbGVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnLWNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldFNoYXJlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hYm9ydC1jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIGdldERlYnVnQ29udHJvbGxlcixcbiAgc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2Vcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvbGlicmFyeSc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vY3NzLWNsYXNzLnRzJztcbmltcG9ydCB7XG4gIExJQlJBUllfU1RZTEVTLFxuICBMSUJSQVJZX1ZFUlNJT05cbn0gZnJvbSAnLi4vZ2VuZXJhdGVkLWR1cmluZy1idWlsZC50cyc7XG5pbXBvcnQgeyBpbmplY3RMaWJyYXJ5U3R5bGVzIH0gZnJvbSAnLi4vbGlicmFyeS1zdHlsZXMudHMnO1xuaW1wb3J0IHtcbiAgTEVHQUNZX09CU0lESUFOX0xJQlJBUllfTkFNRSxcbiAgT2JzaWRpYW5MaWJyYXJ5XG59IGZyb20gJy4uL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgc2hhcmVUeXBlc2NyaXB0TGliU3RhdGVXaXRoT2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuaW50ZXJmYWNlIFBsdWdpbkNvbnRleHRXaW5kb3cge1xuICBERUJVRzogRGVidWdDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xufVxuXG5jb25zdCBERUJVR19HVUlERV9VUkwgPSAnaHR0cHM6Ly9tbmFvdW1vdi5kZXYvb2JzaWRpYW4tbGliL2d1aWRlcy9kZWJ1Z2dpbmcvJztcblxuLyoqXG4gKiBTZXRzIHRoZSBDU1MgY2xhc3Mgb2YgYW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHNldCB0aGUgQ1NTIGNsYXNzIG9mLlxuICogQHBhcmFtIGNzc0NsYXNzZXMgLSBUaGUgQ1NTIGNsYXNzZXMgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUGx1Z2luQ3NzQ2xhc3NlcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgY3NzQ2xhc3Nlcz86IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IGV4dHJhQ3NzQ2xhc3NlcyA9IHR5cGVvZiBjc3NDbGFzc2VzID09PSAnc3RyaW5nJyA/IFtjc3NDbGFzc2VzXSA6IGNzc0NsYXNzZXMgPz8gW107XG4gIGVsZW1lbnQuYWRkQ2xhc3MoXG4gICAgQ3NzQ2xhc3MuTGlicmFyeU5hbWUsXG4gICAgQ3NzQ2xhc3MuTGVnYWN5TGlicmFyeU5hbWUsXG4gICAgLy8gVGhlIHNjb3BlIGlzIGVtcHR5IHVudGlsIHRoZSBwbHVnaW4gY29udGV4dCBpcyBpbml0aWFsaXplZDsgc2tpcCBpdCBzbyB3ZSBuZXZlciBhZGQgYW4gZW1wdHkgY2xhc3MuXG4gICAgLi4uKE9ic2lkaWFuTGlicmFyeS5jc3NDbGFzc1Njb3BlID8gW09ic2lkaWFuTGlicmFyeS5jc3NDbGFzc1Njb3BlXSA6IFtdKSxcbiAgICAuLi5leHRyYUNzc0NsYXNzZXNcbiAgKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgZGVidWcgY29udHJvbGxlci5cbiAqXG4gKiBAcGFyYW0gd2luIC0gVGhlIHdpbmRvdyB0byBpbml0aWFsaXplIHRoZSBkZWJ1ZyBjb250cm9sbGVyIGZvci5cbiAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRvIHJlZ2lzdGVyIGNsZWFudXAgb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0RGVidWdDb250cm9sbGVyKHdpbjogV2luZG93LCBjb21wb25lbnQ6IENvbXBvbmVudCk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5Db250ZXh0V2luZG93ID0gd2luIGFzIFBhcnRpYWw8UGx1Z2luQ29udGV4dFdpbmRvdz47XG4gIGNvbnN0IG9sZERlYnVnID0gcGx1Z2luQ29udGV4dFdpbmRvdy5ERUJVRztcbiAgY29uc3QgbmV3RGVidWcgPSBnZXREZWJ1Z0NvbnRyb2xsZXIoKTtcbiAgcGx1Z2luQ29udGV4dFdpbmRvdy5ERUJVRyA9IG5ld0RlYnVnO1xuXG4gIGNvbXBvbmVudC5yZWdpc3RlcigoKSA9PiB7XG4gICAgaWYgKHBsdWdpbkNvbnRleHRXaW5kb3cuREVCVUcgPT09IG5ld0RlYnVnKSB7XG4gICAgICBwbHVnaW5Db250ZXh0V2luZG93LkRFQlVHID0gb2xkRGVidWc7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgcGx1Z2luIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIHBsdWdpbiBJRC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRQbHVnaW5Db250ZXh0KHBsdWdpbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgT2JzaWRpYW5MaWJyYXJ5LmluaXQoeyBjc3NDbGFzc1Njb3BlOiBwbHVnaW5JZCB9KTtcbiAgTGlicmFyeS5pbml0KHtcbiAgICBkZWJ1Z0d1aWRlVXJsOiBERUJVR19HVUlERV9VUkwsXG4gICAgLy8gVE9ETzogTW92ZSB0byBgT0JTSURJQU5fTElCUkFSWV9OQU1FYCBvbmNlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGhvbm91cnMgYSBsZWdhY3kgbmFtZXNwYWNlIGFsaWFzLCBzb1xuICAgIC8vIGZpbHRlcnMgd3JpdHRlbiBmb3IgdGhpcyBvbmUga2VlcCBzaG93aW5nIHRoZSBnZW5lcmljIG1vZHVsZXMnIG1lc3NhZ2VzLlxuICAgIGRlYnVnTmFtZXNwYWNlOiBMRUdBQ1lfT0JTSURJQU5fTElCUkFSWV9OQU1FLFxuICAgIGRlYnVnUHJlZml4TmFtZXNwYWNlOiBgJHtwbHVnaW5JZH06YCxcbiAgICBzaG91bGRQcmludFN0YWNrVHJhY2U6IHRydWVcbiAgfSk7XG4gIHNob3dJbml0aWFsRGVidWdNZXNzYWdlKHBsdWdpbklkKTtcblxuICAvLyBOb3RoaW5nIGVsc2UgaW4gdGhlIGxpYnJhcnkgcmVhY2hlcyBmb3IgdGhlIHNoYXJlZCBhYm9ydCBjb250cm9sbGVyIC0tIG9ubHkgY29uc3VtZXIgcGx1Z2lucyBkby4gQ3JlYXRlXG4gIC8vIGl0IGhlcmUgc28gdGhlIGRldnRvb2xzIGNvbnNvbGUgcmVjaXBlIGluIHRoZSBkZWJ1Z2dpbmcgZ3VpZGUgYWx3YXlzIHJlc29sdmVzLCBpbnN0ZWFkIG9mIHRocm93aW5nIHVudGlsIHNvbWVcbiAgLy8gcGx1Z2luIGhhcHBlbnMgdG8gc3RhcnQgYW4gYWJvcnRhYmxlIG9wZXJhdGlvbi5cbiAgZ2V0U2hhcmVkQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgLy8gVGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZSBzaGFyZWQgYWJvcnQgY29udHJvbGxlciBtb3ZlZCBvdXQgb2YgYF9fb2JzaWRpYW5EZXZVdGlsc2AuIExpbmsgdGhlbVxuICAvLyBiYWNrIHVuZGVyIHRoZSBsZWdhY3kgZ2xvYmFsLCBzbyBwbHVnaW5zIGJ1bmRsaW5nIGFuIG9sZGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5IHNoYXJlIHRoZW0uXG4gIHNoYXJlVHlwZXNjcmlwdExpYlN0YXRlV2l0aE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgpO1xuXG4gIGluamVjdExpYnJhcnlTdHlsZXMoe1xuICAgIGRvYzogZG9jdW1lbnQsXG4gICAgbGlicmFyeVN0eWxlczogTElCUkFSWV9TVFlMRVMsXG4gICAgbGlicmFyeVZlcnNpb246IExJQlJBUllfVkVSU0lPTlxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLGdDQUFnQztBQUN6QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUV4QixTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsMkJBQTJCO0FBQ3BDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx3REFBd0Q7QUFNakUsTUFBTSxrQkFBa0I7QUFRakIsU0FBUyxvQkFBb0IsU0FBc0IsWUFBc0M7QUFDOUYsUUFBTSxrQkFBa0IsT0FBTyxlQUFlLFdBQVcsQ0FBQyxVQUFVLElBQUksY0FBYyxDQUFDO0FBQ3ZGLFVBQVE7QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFNBQVM7QUFBQSxJQUVULEdBQUksZ0JBQWdCLGdCQUFnQixDQUFDLGdCQUFnQixhQUFhLElBQUksQ0FBQztBQUFBLElBQ3ZFLEdBQUc7QUFBQSxFQUNMO0FBQ0Y7QUFRTyxTQUFTLG9CQUFvQixLQUFhLFdBQTRCO0FBQzNFLFFBQU0sc0JBQXNCO0FBQzVCLFFBQU0sV0FBVyxvQkFBb0I7QUFDckMsUUFBTSxXQUFXLG1CQUFtQjtBQUNwQyxzQkFBb0IsUUFBUTtBQUU1QixZQUFVLFNBQVMsTUFBTTtBQUN2QixRQUFJLG9CQUFvQixVQUFVLFVBQVU7QUFDMUMsMEJBQW9CLFFBQVE7QUFBQSxJQUM5QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBT08sU0FBUyxrQkFBa0IsVUFBd0I7QUFDeEQsa0JBQWdCLEtBQUssRUFBRSxlQUFlLFNBQVMsQ0FBQztBQUNoRCxVQUFRLEtBQUs7QUFBQSxJQUNYLGVBQWU7QUFBQTtBQUFBO0FBQUEsSUFHZixnQkFBZ0I7QUFBQSxJQUNoQixzQkFBc0IsR0FBRyxRQUFRO0FBQUEsSUFDakMsdUJBQXVCO0FBQUEsRUFDekIsQ0FBQztBQUNELDBCQUF3QixRQUFRO0FBS2hDLDJCQUF5QjtBQUl6QixtREFBaUQ7QUFFakQsc0JBQW9CO0FBQUEsSUFDbEIsS0FBSztBQUFBLElBQ0wsZUFBZTtBQUFBLElBQ2YsZ0JBQWdCO0FBQUEsRUFDbEIsQ0FBQztBQUNIOyIsIm5hbWVzIjpbXX0=
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
5
|
-
* The lifecycle broadcast every {@link PluginBase} makes: `obsidian-
|
|
6
|
-
* finished loading and `obsidian-
|
|
5
|
+
* The lifecycle broadcast every {@link PluginBase} makes: `obsidian-lib:plugin-loaded` when it has
|
|
6
|
+
* finished loading and `obsidian-lib:plugin-unloaded` when it goes away. Each is also triggered under its
|
|
7
|
+
* legacy name, `obsidian-dev-utils:plugin-loaded` / `obsidian-dev-utils:plugin-unloaded`, for good.
|
|
7
8
|
*
|
|
8
9
|
* Obsidian gives a plugin no way to learn that ANOTHER plugin was enabled or disabled — there is no such
|
|
9
10
|
* event on `app.plugins`, and a plugin's own `Events` source cannot help a listener that does not yet hold
|
|
@@ -21,14 +22,17 @@
|
|
|
21
22
|
* change incompatibly: plain data only, and new payload fields only ever added.
|
|
22
23
|
*
|
|
23
24
|
* That contract is also PUBLISHED, as of the `Plugin API protocol` guide: third-party plugins that will
|
|
24
|
-
* never install this library are told to hardcode these
|
|
25
|
+
* never install this library are told to hardcode these strings and this payload shape. Publishing it
|
|
25
26
|
* added no new constraint — the cross-copy one above already forbade every change an outsider could
|
|
26
|
-
* notice
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* notice.
|
|
28
|
+
*
|
|
29
|
+
* The rename to `obsidian-lib:` is additive for that reason. Already-released copies emit and hear only the
|
|
30
|
+
* legacy names, so a current copy triggers both, and relays an older copy's legacy event to the current
|
|
31
|
+
* name ({@link registerPluginLifecycleEventRelay}). A listener therefore needs exactly ONE of the two names:
|
|
32
|
+
* the legacy one hears every copy ever released, and the current one hears every copy whenever at least one
|
|
33
|
+
* current copy is loaded to relay. Listening on both hears every current copy twice.
|
|
30
34
|
*/
|
|
31
|
-
import type { App } from 'obsidian';
|
|
35
|
+
import type { App, Component } from 'obsidian';
|
|
32
36
|
/**
|
|
33
37
|
* The name of either lifecycle event.
|
|
34
38
|
*/
|
|
@@ -73,6 +77,19 @@ export interface PluginLifecycleEventPayload {
|
|
|
73
77
|
*/
|
|
74
78
|
readonly pluginVersion: string;
|
|
75
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Parameters for {@link registerPluginLifecycleEventRelay}.
|
|
82
|
+
*/
|
|
83
|
+
export interface RegisterPluginLifecycleEventRelayParams {
|
|
84
|
+
/**
|
|
85
|
+
* The Obsidian app instance whose workspace carries the broadcast.
|
|
86
|
+
*/
|
|
87
|
+
readonly app: App;
|
|
88
|
+
/**
|
|
89
|
+
* The component that owns the relay: it relays while the component is loaded.
|
|
90
|
+
*/
|
|
91
|
+
readonly component: Component;
|
|
92
|
+
}
|
|
76
93
|
/**
|
|
77
94
|
* Parameters for {@link triggerPluginLifecycleEvent}.
|
|
78
95
|
*/
|
|
@@ -97,30 +114,64 @@ export interface TriggerPluginLifecycleEventParams {
|
|
|
97
114
|
* Namespaced by the package name rather than by an abbreviation of it: the event is global to the vault
|
|
98
115
|
* and aimed at plugin authors who have never heard of this library, so the prefix has to identify itself.
|
|
99
116
|
*/
|
|
100
|
-
export declare const PLUGIN_LOADED_EVENT_NAME = "obsidian-
|
|
117
|
+
export declare const PLUGIN_LOADED_EVENT_NAME = "obsidian-lib:plugin-loaded";
|
|
101
118
|
/**
|
|
102
119
|
* Triggered as a plugin unloads — whether the user disabled it, uninstalled it, or Obsidian is shutting
|
|
103
120
|
* down. Its APIs are revoked by the time a listener runs.
|
|
104
121
|
*/
|
|
105
|
-
export declare const PLUGIN_UNLOADED_EVENT_NAME = "obsidian-
|
|
122
|
+
export declare const PLUGIN_UNLOADED_EVENT_NAME = "obsidian-lib:plugin-unloaded";
|
|
123
|
+
/**
|
|
124
|
+
* The legacy name of {@link PLUGIN_LOADED_EVENT_NAME}, from before the library was renamed. It is still
|
|
125
|
+
* triggered, for good, because older copies listen only on it.
|
|
126
|
+
*/
|
|
127
|
+
export declare const LEGACY_PLUGIN_LOADED_EVENT_NAME = "obsidian-dev-utils:plugin-loaded";
|
|
128
|
+
/**
|
|
129
|
+
* The legacy name of {@link PLUGIN_UNLOADED_EVENT_NAME}, from before the library was renamed. It is still
|
|
130
|
+
* triggered, for good, because older copies listen only on it.
|
|
131
|
+
*/
|
|
132
|
+
export declare const LEGACY_PLUGIN_UNLOADED_EVENT_NAME = "obsidian-dev-utils:plugin-unloaded";
|
|
133
|
+
/**
|
|
134
|
+
* The legacy name of either lifecycle event.
|
|
135
|
+
*/
|
|
136
|
+
export type LegacyPluginLifecycleEventName = typeof LEGACY_PLUGIN_LOADED_EVENT_NAME | typeof LEGACY_PLUGIN_UNLOADED_EVENT_NAME;
|
|
106
137
|
declare module 'obsidian' {
|
|
107
138
|
interface Workspace {
|
|
108
139
|
/**
|
|
109
140
|
* Subscribes to a plugin finishing its load, or to one unloading.
|
|
110
141
|
*
|
|
111
|
-
* @param name - Should be {@link PLUGIN_LOADED_EVENT_NAME} or {@link PLUGIN_UNLOADED_EVENT_NAME}
|
|
142
|
+
* @param name - Should be {@link PLUGIN_LOADED_EVENT_NAME} or {@link PLUGIN_UNLOADED_EVENT_NAME}, or one of their
|
|
143
|
+
* legacy names.
|
|
112
144
|
* @param callback - The callback receiving the plugin's payload.
|
|
113
145
|
* @param context - The context passed as `this` to the `callback` function.
|
|
114
146
|
* @returns The event reference.
|
|
115
147
|
*/
|
|
116
|
-
on(name: PluginLifecycleEventName, callback: (payload: PluginLifecycleEventPayload) => unknown, context?: unknown): EventRef;
|
|
148
|
+
on(name: LegacyPluginLifecycleEventName | PluginLifecycleEventName, callback: (payload: PluginLifecycleEventPayload) => unknown, context?: unknown): EventRef;
|
|
117
149
|
}
|
|
118
150
|
}
|
|
119
151
|
/**
|
|
120
|
-
*
|
|
152
|
+
* Relays an older copy's lifecycle events to the current names, for as long as `component` is loaded.
|
|
153
|
+
*
|
|
154
|
+
* An older copy of this library emits only the legacy names, so without a relay a listener on
|
|
155
|
+
* {@link PLUGIN_LOADED_EVENT_NAME} would never hear about it. The relay listens on each legacy name and
|
|
156
|
+
* re-triggers the current one, unless the payload was already announced under it. A current copy announces
|
|
157
|
+
* under both names (see {@link triggerPluginLifecycleEvent}) and marks its payload first, so its own legacy
|
|
158
|
+
* echo is skipped. Every plugin built on this library registers a relay, and they share one set of marks,
|
|
159
|
+
* so the first relay to see an older copy's event re-triggers it and the rest skip it.
|
|
160
|
+
*
|
|
161
|
+
* @param params - The {@link RegisterPluginLifecycleEventRelayParams}.
|
|
162
|
+
*/
|
|
163
|
+
export declare function registerPluginLifecycleEventRelay(params: RegisterPluginLifecycleEventRelayParams): void;
|
|
164
|
+
/**
|
|
165
|
+
* Triggers one of the two lifecycle events on the app's workspace, under its current name and then under
|
|
166
|
+
* its legacy name.
|
|
167
|
+
*
|
|
168
|
+
* Both, so a listener written against either name hears every plugin built on this library: older copies
|
|
169
|
+
* listen only on the legacy name. The current name goes first and the payload is marked before either, so
|
|
170
|
+
* the relays (see {@link registerPluginLifecycleEventRelay}) skip the legacy echo instead of announcing the
|
|
171
|
+
* plugin a second time.
|
|
121
172
|
*
|
|
122
|
-
*
|
|
123
|
-
* the one place a payload is constructed is checked against {@link PluginLifecycleEventPayload}.
|
|
173
|
+
* Otherwise a thin typed wrapper over `Workspace.trigger`, which accepts any event name and any arguments,
|
|
174
|
+
* so that the one place a payload is constructed is checked against {@link PluginLifecycleEventPayload}.
|
|
124
175
|
*
|
|
125
176
|
* @param params - The {@link TriggerPluginLifecycleEventParams}.
|
|
126
177
|
*/
|