obsidian-dev-utils 88.3.0 → 88.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/lib/cjs/__merged.cjs +25 -1
  3. package/dist/lib/cjs/__merged.d.cts +7 -3
  4. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  5. package/dist/lib/cjs/html-element.cjs +7 -1
  6. package/dist/lib/cjs/html-element.d.cts +12 -0
  7. package/dist/lib/cjs/obsidian/attachment-path.cjs +10 -5
  8. package/dist/lib/cjs/obsidian/attachment-path.d.cts +11 -1
  9. package/dist/lib/cjs/obsidian/components/index.cjs +4 -1
  10. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  11. package/dist/lib/cjs/obsidian/components/pointer-position-component.cjs +159 -0
  12. package/dist/lib/cjs/obsidian/components/pointer-position-component.d.cts +29 -0
  13. package/dist/lib/cjs/obsidian/css-class.cjs +2 -1
  14. package/dist/lib/cjs/obsidian/css-class.d.cts +4 -0
  15. package/dist/lib/cjs/obsidian/file-system.cjs +20 -1
  16. package/dist/lib/cjs/obsidian/file-system.d.cts +25 -0
  17. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +4 -1
  18. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +3 -0
  19. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +3 -0
  20. package/dist/lib/cjs/obsidian/index.cjs +4 -1
  21. package/dist/lib/cjs/obsidian/index.d.cts +1 -0
  22. package/dist/lib/cjs/obsidian/path-settings.cjs +19 -5
  23. package/dist/lib/cjs/obsidian/path-settings.d.cts +13 -1
  24. package/dist/lib/cjs/obsidian/popovers/field-popover.cjs +175 -0
  25. package/dist/lib/cjs/obsidian/popovers/field-popover.d.cts +75 -0
  26. package/dist/lib/cjs/obsidian/popovers/index.cjs +152 -0
  27. package/dist/lib/cjs/obsidian/popovers/index.d.cts +4 -0
  28. package/dist/lib/cjs/obsidian/popovers/popover-anchor.cjs +178 -0
  29. package/dist/lib/cjs/obsidian/popovers/popover-anchor.d.cts +67 -0
  30. package/dist/lib/cjs/obsidian/popovers/popover.cjs +221 -0
  31. package/dist/lib/cjs/obsidian/popovers/popover.d.cts +78 -0
  32. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +2 -1
  33. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +2 -0
  34. package/dist/lib/esm/__merged.d.mts +7 -3
  35. package/dist/lib/esm/__merged.mjs +26 -2
  36. package/dist/lib/esm/generated-during-build.mjs +2 -2
  37. package/dist/lib/esm/html-element.d.mts +12 -0
  38. package/dist/lib/esm/html-element.mjs +6 -1
  39. package/dist/lib/esm/obsidian/attachment-path.d.mts +11 -1
  40. package/dist/lib/esm/obsidian/attachment-path.mjs +11 -5
  41. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  42. package/dist/lib/esm/obsidian/components/index.mjs +3 -1
  43. package/dist/lib/esm/obsidian/components/pointer-position-component.d.mts +29 -0
  44. package/dist/lib/esm/obsidian/components/pointer-position-component.mjs +51 -0
  45. package/dist/lib/esm/obsidian/css-class.d.mts +4 -0
  46. package/dist/lib/esm/obsidian/css-class.mjs +2 -1
  47. package/dist/lib/esm/obsidian/file-system.d.mts +25 -0
  48. package/dist/lib/esm/obsidian/file-system.mjs +20 -1
  49. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +3 -0
  50. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +4 -1
  51. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +3 -0
  52. package/dist/lib/esm/obsidian/index.d.mts +1 -0
  53. package/dist/lib/esm/obsidian/index.mjs +3 -1
  54. package/dist/lib/esm/obsidian/path-settings.d.mts +13 -1
  55. package/dist/lib/esm/obsidian/path-settings.mjs +18 -4
  56. package/dist/lib/esm/obsidian/popovers/field-popover.d.mts +75 -0
  57. package/dist/lib/esm/obsidian/popovers/field-popover.mjs +70 -0
  58. package/dist/lib/esm/obsidian/popovers/index.d.mts +4 -0
  59. package/dist/lib/esm/obsidian/popovers/index.mjs +32 -0
  60. package/dist/lib/esm/obsidian/popovers/popover-anchor.d.mts +67 -0
  61. package/dist/lib/esm/obsidian/popovers/popover-anchor.mjs +67 -0
  62. package/dist/lib/esm/obsidian/popovers/popover.d.mts +78 -0
  63. package/dist/lib/esm/obsidian/popovers/popover.mjs +113 -0
  64. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +2 -0
  65. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -1
  66. package/dist/styles.css +25 -1
  67. package/obsidian/components/pointer-position-component/package.json +6 -0
  68. package/obsidian/popovers/field-popover/package.json +6 -0
  69. package/obsidian/popovers/index/package.json +6 -0
  70. package/obsidian/popovers/package.json +6 -0
  71. package/obsidian/popovers/popover/package.json +6 -0
  72. package/obsidian/popovers/popover-anchor/package.json +6 -0
  73. package/package.json +42 -16
  74. package/patches/brace-expansion-callable/package.json +8 -0
  75. package/dist/dev/main.js +0 -37772
  76. package/dist/dev/manifest.json +0 -9
@@ -0,0 +1,4 @@
1
+ /// <reference path="../../library.d.mts" />
2
+ export * as 'field-popover' from './field-popover.mjs';
3
+ export * as 'popover-anchor' from './popover-anchor.mjs';
4
+ export * as 'popover' from './popover.mjs';
@@ -0,0 +1,32 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import * as field_popover from "./field-popover.mjs";
25
+ import * as popover_anchor from "./popover-anchor.mjs";
26
+ import * as popover from "./popover.mjs";
27
+ export {
28
+ field_popover as "field-popover",
29
+ popover,
30
+ popover_anchor as "popover-anchor"
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BvcG92ZXJzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2ZpZWxkLXBvcG92ZXInIGZyb20gJy4vZmllbGQtcG9wb3Zlci50cyc7XG5leHBvcnQgKiBhcyAncG9wb3Zlci1hbmNob3InIGZyb20gJy4vcG9wb3Zlci1hbmNob3IudHMnO1xuZXhwb3J0ICogYXMgJ3BvcG92ZXInIGZyb20gJy4vcG9wb3Zlci50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVlBLG1CQUFxQjtBQUNqQyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWSxhQUFlOyIsCiAgIm5hbWVzIjogWyJmaWVsZC1wb3BvdmVyIiwgInBvcG92ZXItYW5jaG9yIl0KfQo=
@@ -0,0 +1,67 @@
1
+ /// <reference path="../../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The resolved position a popover is placed at.
6
+ *
7
+ * A popover takes a resolved anchor rather than an element because callers know the position in
8
+ * different ways: a clicked element has a rect, a context menu has the pointer that opened it, and a
9
+ * keyboard-invoked command has the caret. Each way gets its own builder here, so the popover itself
10
+ * stays unaware of how the position was found.
11
+ *
12
+ * This lives apart from the popover shell so that anything producing an anchor — most notably
13
+ * `PointerPositionComponent` — depends only on the position, not on the panel that consumes it.
14
+ */
15
+ /**
16
+ * Where a popover is placed: viewport coordinates plus the document they belong to.
17
+ *
18
+ * Carrying the document explicitly is what makes an anchor inside a pop-out window work — the popover
19
+ * is appended to, and clamped against, that window rather than the main one.
20
+ */
21
+ export interface PopoverAnchor {
22
+ /**
23
+ * The viewport `y` coordinate the popover is placed below.
24
+ */
25
+ readonly bottom: number;
26
+ /**
27
+ * The document the coordinates belong to.
28
+ */
29
+ readonly doc: Document;
30
+ /**
31
+ * The viewport `x` coordinate the popover is aligned to.
32
+ */
33
+ readonly left: number;
34
+ }
35
+ /**
36
+ * Anchors a popover in the middle of the document, for the cases where nothing better is known.
37
+ *
38
+ * @param doc - The document to anchor in.
39
+ * @returns The anchor.
40
+ */
41
+ export declare function createAnchorFromDocumentCenter(doc: Document): PopoverAnchor;
42
+ /**
43
+ * Anchors a popover just below an element — used for a clicked element, whose rect is exactly where
44
+ * the user is looking.
45
+ *
46
+ * @param el - The element to anchor at.
47
+ * @returns The anchor.
48
+ */
49
+ export declare function createAnchorFromElement(el: HTMLElement): PopoverAnchor;
50
+ /**
51
+ * Anchors a popover at a pointer position — used for a context menu, which is raised by a right-click
52
+ * or a long-press whose coordinates are where the user is looking.
53
+ *
54
+ * @param x - The viewport `x` coordinate.
55
+ * @param y - The viewport `y` coordinate.
56
+ * @param doc - The document the coordinates belong to.
57
+ * @returns The anchor.
58
+ */
59
+ export declare function createAnchorFromPoint(x: number, y: number, doc: Document): PopoverAnchor;
60
+ /**
61
+ * Anchors a popover at the caret — used by a command invoked from the keyboard, with the cursor
62
+ * already at the place being edited.
63
+ *
64
+ * @param doc - The document holding the selection.
65
+ * @returns The anchor, or a centered one when there is no caret to read.
66
+ */
67
+ export declare function createAnchorFromSelection(doc: Document): PopoverAnchor;
@@ -0,0 +1,67 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import { getDocumentWindow } from "../../html-element.mjs";
25
+ const CENTER_FRACTION = 0.5;
26
+ function createAnchorFromDocumentCenter(doc) {
27
+ const win = getDocumentWindow(doc);
28
+ return {
29
+ bottom: win.innerHeight * CENTER_FRACTION,
30
+ doc,
31
+ left: win.innerWidth * CENTER_FRACTION
32
+ };
33
+ }
34
+ function createAnchorFromElement(el) {
35
+ const rect = el.getBoundingClientRect();
36
+ return {
37
+ bottom: rect.bottom,
38
+ doc: el.ownerDocument,
39
+ left: rect.left
40
+ };
41
+ }
42
+ function createAnchorFromPoint(x, y, doc) {
43
+ return {
44
+ bottom: y,
45
+ doc,
46
+ left: x
47
+ };
48
+ }
49
+ function createAnchorFromSelection(doc) {
50
+ const selection = doc.getSelection();
51
+ const rect = selection?.rangeCount ? selection.getRangeAt(0).getBoundingClientRect() : null;
52
+ if (!rect || rect.bottom === 0 && rect.left === 0) {
53
+ return createAnchorFromDocumentCenter(doc);
54
+ }
55
+ return {
56
+ bottom: rect.bottom,
57
+ doc,
58
+ left: rect.left
59
+ };
60
+ }
61
+ export {
62
+ createAnchorFromDocumentCenter,
63
+ createAnchorFromElement,
64
+ createAnchorFromPoint,
65
+ createAnchorFromSelection
66
+ };
67
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BvcG92ZXJzL3BvcG92ZXItYW5jaG9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIHJlc29sdmVkIHBvc2l0aW9uIGEgcG9wb3ZlciBpcyBwbGFjZWQgYXQuXG4gKlxuICogQSBwb3BvdmVyIHRha2VzIGEgcmVzb2x2ZWQgYW5jaG9yIHJhdGhlciB0aGFuIGFuIGVsZW1lbnQgYmVjYXVzZSBjYWxsZXJzIGtub3cgdGhlIHBvc2l0aW9uIGluXG4gKiBkaWZmZXJlbnQgd2F5czogYSBjbGlja2VkIGVsZW1lbnQgaGFzIGEgcmVjdCwgYSBjb250ZXh0IG1lbnUgaGFzIHRoZSBwb2ludGVyIHRoYXQgb3BlbmVkIGl0LCBhbmQgYVxuICoga2V5Ym9hcmQtaW52b2tlZCBjb21tYW5kIGhhcyB0aGUgY2FyZXQuIEVhY2ggd2F5IGdldHMgaXRzIG93biBidWlsZGVyIGhlcmUsIHNvIHRoZSBwb3BvdmVyIGl0c2VsZlxuICogc3RheXMgdW5hd2FyZSBvZiBob3cgdGhlIHBvc2l0aW9uIHdhcyBmb3VuZC5cbiAqXG4gKiBUaGlzIGxpdmVzIGFwYXJ0IGZyb20gdGhlIHBvcG92ZXIgc2hlbGwgc28gdGhhdCBhbnl0aGluZyBwcm9kdWNpbmcgYW4gYW5jaG9yIFx1MjAxNCBtb3N0IG5vdGFibHlcbiAqIGBQb2ludGVyUG9zaXRpb25Db21wb25lbnRgIFx1MjAxNCBkZXBlbmRzIG9ubHkgb24gdGhlIHBvc2l0aW9uLCBub3Qgb24gdGhlIHBhbmVsIHRoYXQgY29uc3VtZXMgaXQuXG4gKi9cblxuaW1wb3J0IHsgZ2V0RG9jdW1lbnRXaW5kb3cgfSBmcm9tICcuLi8uLi9odG1sLWVsZW1lbnQudHMnO1xuXG4vKipcbiAqIFRoZSBmcmFjdGlvbiBvZiB0aGUgd2luZG93IHVzZWQgdG8gcGxhY2UgYSBjZW50ZXJlZCBhbmNob3IuXG4gKi9cbmNvbnN0IENFTlRFUl9GUkFDVElPTiA9IDAuNTtcblxuLyoqXG4gKiBXaGVyZSBhIHBvcG92ZXIgaXMgcGxhY2VkOiB2aWV3cG9ydCBjb29yZGluYXRlcyBwbHVzIHRoZSBkb2N1bWVudCB0aGV5IGJlbG9uZyB0by5cbiAqXG4gKiBDYXJyeWluZyB0aGUgZG9jdW1lbnQgZXhwbGljaXRseSBpcyB3aGF0IG1ha2VzIGFuIGFuY2hvciBpbnNpZGUgYSBwb3Atb3V0IHdpbmRvdyB3b3JrIFx1MjAxNCB0aGUgcG9wb3ZlclxuICogaXMgYXBwZW5kZWQgdG8sIGFuZCBjbGFtcGVkIGFnYWluc3QsIHRoYXQgd2luZG93IHJhdGhlciB0aGFuIHRoZSBtYWluIG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyQW5jaG9yIHtcbiAgLyoqXG4gICAqIFRoZSB2aWV3cG9ydCBgeWAgY29vcmRpbmF0ZSB0aGUgcG9wb3ZlciBpcyBwbGFjZWQgYmVsb3cuXG4gICAqL1xuICByZWFkb25seSBib3R0b206IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGRvY3VtZW50IHRoZSBjb29yZGluYXRlcyBiZWxvbmcgdG8uXG4gICAqL1xuICByZWFkb25seSBkb2M6IERvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgdmlld3BvcnQgYHhgIGNvb3JkaW5hdGUgdGhlIHBvcG92ZXIgaXMgYWxpZ25lZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGxlZnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBbmNob3JzIGEgcG9wb3ZlciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBkb2N1bWVudCwgZm9yIHRoZSBjYXNlcyB3aGVyZSBub3RoaW5nIGJldHRlciBpcyBrbm93bi5cbiAqXG4gKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGFuY2hvciBpbi5cbiAqIEByZXR1cm5zIFRoZSBhbmNob3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmNob3JGcm9tRG9jdW1lbnRDZW50ZXIoZG9jOiBEb2N1bWVudCk6IFBvcG92ZXJBbmNob3Ige1xuICBjb25zdCB3aW4gPSBnZXREb2N1bWVudFdpbmRvdyhkb2MpO1xuICByZXR1cm4ge1xuICAgIGJvdHRvbTogd2luLmlubmVySGVpZ2h0ICogQ0VOVEVSX0ZSQUNUSU9OLFxuICAgIGRvYyxcbiAgICBsZWZ0OiB3aW4uaW5uZXJXaWR0aCAqIENFTlRFUl9GUkFDVElPTlxuICB9O1xufVxuXG4vKipcbiAqIEFuY2hvcnMgYSBwb3BvdmVyIGp1c3QgYmVsb3cgYW4gZWxlbWVudCBcdTIwMTQgdXNlZCBmb3IgYSBjbGlja2VkIGVsZW1lbnQsIHdob3NlIHJlY3QgaXMgZXhhY3RseSB3aGVyZVxuICogdGhlIHVzZXIgaXMgbG9va2luZy5cbiAqXG4gKiBAcGFyYW0gZWwgLSBUaGUgZWxlbWVudCB0byBhbmNob3IgYXQuXG4gKiBAcmV0dXJucyBUaGUgYW5jaG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5jaG9yRnJvbUVsZW1lbnQoZWw6IEhUTUxFbGVtZW50KTogUG9wb3ZlckFuY2hvciB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIHtcbiAgICBib3R0b206IHJlY3QuYm90dG9tLFxuICAgIGRvYzogZWwub3duZXJEb2N1bWVudCxcbiAgICBsZWZ0OiByZWN0LmxlZnRcbiAgfTtcbn1cblxuLyoqXG4gKiBBbmNob3JzIGEgcG9wb3ZlciBhdCBhIHBvaW50ZXIgcG9zaXRpb24gXHUyMDE0IHVzZWQgZm9yIGEgY29udGV4dCBtZW51LCB3aGljaCBpcyByYWlzZWQgYnkgYSByaWdodC1jbGlja1xuICogb3IgYSBsb25nLXByZXNzIHdob3NlIGNvb3JkaW5hdGVzIGFyZSB3aGVyZSB0aGUgdXNlciBpcyBsb29raW5nLlxuICpcbiAqIEBwYXJhbSB4IC0gVGhlIHZpZXdwb3J0IGB4YCBjb29yZGluYXRlLlxuICogQHBhcmFtIHkgLSBUaGUgdmlld3BvcnQgYHlgIGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRoZSBjb29yZGluYXRlcyBiZWxvbmcgdG8uXG4gKiBAcmV0dXJucyBUaGUgYW5jaG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5jaG9yRnJvbVBvaW50KHg6IG51bWJlciwgeTogbnVtYmVyLCBkb2M6IERvY3VtZW50KTogUG9wb3ZlckFuY2hvciB7XG4gIHJldHVybiB7XG4gICAgYm90dG9tOiB5LFxuICAgIGRvYyxcbiAgICBsZWZ0OiB4XG4gIH07XG59XG5cbi8qKlxuICogQW5jaG9ycyBhIHBvcG92ZXIgYXQgdGhlIGNhcmV0IFx1MjAxNCB1c2VkIGJ5IGEgY29tbWFuZCBpbnZva2VkIGZyb20gdGhlIGtleWJvYXJkLCB3aXRoIHRoZSBjdXJzb3JcbiAqIGFscmVhZHkgYXQgdGhlIHBsYWNlIGJlaW5nIGVkaXRlZC5cbiAqXG4gKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IGhvbGRpbmcgdGhlIHNlbGVjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhbmNob3IsIG9yIGEgY2VudGVyZWQgb25lIHdoZW4gdGhlcmUgaXMgbm8gY2FyZXQgdG8gcmVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFuY2hvckZyb21TZWxlY3Rpb24oZG9jOiBEb2N1bWVudCk6IFBvcG92ZXJBbmNob3Ige1xuICBjb25zdCBzZWxlY3Rpb24gPSBkb2MuZ2V0U2VsZWN0aW9uKCk7XG4gIGNvbnN0IHJlY3QgPSBzZWxlY3Rpb24/LnJhbmdlQ291bnQgPyBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IG51bGw7XG4gIGlmICghcmVjdCB8fCAocmVjdC5ib3R0b20gPT09IDAgJiYgcmVjdC5sZWZ0ID09PSAwKSkge1xuICAgIHJldHVybiBjcmVhdGVBbmNob3JGcm9tRG9jdW1lbnRDZW50ZXIoZG9jKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYm90dG9tOiByZWN0LmJvdHRvbSxcbiAgICBkb2MsXG4gICAgbGVmdDogcmVjdC5sZWZ0XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQVMseUJBQXlCO0FBS2xDLE1BQU0sa0JBQWtCO0FBK0JqQixTQUFTLCtCQUErQixLQUE4QjtBQUMzRSxRQUFNLE1BQU0sa0JBQWtCLEdBQUc7QUFDakMsU0FBTztBQUFBLElBQ0wsUUFBUSxJQUFJLGNBQWM7QUFBQSxJQUMxQjtBQUFBLElBQ0EsTUFBTSxJQUFJLGFBQWE7QUFBQSxFQUN6QjtBQUNGO0FBU08sU0FBUyx3QkFBd0IsSUFBZ0M7QUFDdEUsUUFBTSxPQUFPLEdBQUcsc0JBQXNCO0FBQ3RDLFNBQU87QUFBQSxJQUNMLFFBQVEsS0FBSztBQUFBLElBQ2IsS0FBSyxHQUFHO0FBQUEsSUFDUixNQUFNLEtBQUs7QUFBQSxFQUNiO0FBQ0Y7QUFXTyxTQUFTLHNCQUFzQixHQUFXLEdBQVcsS0FBOEI7QUFDeEYsU0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1I7QUFBQSxJQUNBLE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFTTyxTQUFTLDBCQUEwQixLQUE4QjtBQUN0RSxRQUFNLFlBQVksSUFBSSxhQUFhO0FBQ25DLFFBQU0sT0FBTyxXQUFXLGFBQWEsVUFBVSxXQUFXLENBQUMsRUFBRSxzQkFBc0IsSUFBSTtBQUN2RixNQUFJLENBQUMsUUFBUyxLQUFLLFdBQVcsS0FBSyxLQUFLLFNBQVMsR0FBSTtBQUNuRCxXQUFPLCtCQUErQixHQUFHO0FBQUEsRUFDM0M7QUFFQSxTQUFPO0FBQUEsSUFDTCxRQUFRLEtBQUs7QUFBQSxJQUNiO0FBQUEsSUFDQSxNQUFNLEtBQUs7QUFBQSxFQUNiO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,78 @@
1
+ /// <reference path="../../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * A small floating panel anchored at a point, collecting a value and resolving a promise with it.
6
+ *
7
+ * This is the popover counterpart of `modals/modal.ts`: the same "ask the user for a value, resolve a
8
+ * promise" shape, for the cases a modal cannot serve. A modal dims the screen and is positioned by
9
+ * Obsidian, neither of which suits an editor that must appear *at* the thing it edits — a clicked
10
+ * link, the caret, or wherever a context menu was raised.
11
+ *
12
+ * The panel rides Obsidian's `.menu` class for its background, border and shadow, so only layout is
13
+ * styled by this library.
14
+ */
15
+ import type { PopoverAnchor } from './popover-anchor.mjs';
16
+ /**
17
+ * Reads the value the popover resolves with when it is confirmed.
18
+ *
19
+ * @typeParam Value - The type of the value resolved by the popover.
20
+ * @returns The current value.
21
+ */
22
+ export type PopoverValueGetter<Value> = (this: void) => Value;
23
+ /**
24
+ * The tools handed to {@link ShowPopoverParams.build} for populating a popover.
25
+ */
26
+ export interface ShowPopoverBuildParams {
27
+ /**
28
+ * Dismisses the popover, resolving it with `null`, as the Cancel button does.
29
+ */
30
+ cancel(this: void): void;
31
+ /**
32
+ * Confirms the popover, resolving it with the built value, as the OK button does.
33
+ */
34
+ confirm(this: void): void;
35
+ /**
36
+ * The element to add the popover's content to. The OK and Cancel buttons are appended after it.
37
+ */
38
+ readonly contentEl: HTMLElement;
39
+ }
40
+ /**
41
+ * Parameters for {@link showPopover}.
42
+ *
43
+ * @typeParam Value - The type of the value resolved by the popover.
44
+ */
45
+ export interface ShowPopoverParams<Value> {
46
+ /**
47
+ * Where to place the popover.
48
+ */
49
+ readonly anchor: PopoverAnchor;
50
+ /**
51
+ * Populates the popover's content.
52
+ *
53
+ * @param params - The tools for populating the popover.
54
+ * @returns A getter read when the popover is confirmed.
55
+ */
56
+ build(this: void, params: ShowPopoverBuildParams): PopoverValueGetter<Value>;
57
+ /**
58
+ * A text for the "Cancel" button.
59
+ */
60
+ readonly cancelButtonText?: string;
61
+ /**
62
+ * Additional CSS classes to apply to the popover.
63
+ */
64
+ readonly cssClasses?: string[];
65
+ /**
66
+ * A text for the "OK" button.
67
+ */
68
+ readonly okButtonText?: string;
69
+ }
70
+ /**
71
+ * Displays a popover at the given anchor and resolves with the built value, or `null` if it was
72
+ * dismissed without confirming.
73
+ *
74
+ * @typeParam Value - The type of the value resolved by the popover.
75
+ * @param params - The parameters for the popover.
76
+ * @returns A {@link Promise} that resolves with the built value, or `null` if dismissed.
77
+ */
78
+ export declare function showPopover<Value>(params: ShowPopoverParams<Value>): Promise<null | Value>;
@@ -0,0 +1,113 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import { Setting } from "obsidian";
25
+ import { getDocumentWindow } from "../../html-element.mjs";
26
+ import { CssClass } from "../css-class.mjs";
27
+ import { t } from "../i18n/i18n.mjs";
28
+ import { addPluginCssClasses } from "../plugin/plugin-context.mjs";
29
+ const ANCHOR_GAP_IN_PIXELS = 4;
30
+ const VIEWPORT_MARGIN_IN_PIXELS = 8;
31
+ async function showPopover(params) {
32
+ const {
33
+ anchor,
34
+ build,
35
+ cancelButtonText,
36
+ cssClasses,
37
+ okButtonText
38
+ } = params;
39
+ const doc = anchor.doc;
40
+ const win = getDocumentWindow(doc);
41
+ const popoverEl = doc.body.createDiv({ cls: "menu" });
42
+ addPluginCssClasses(popoverEl, [CssClass.Popover, ...cssClasses ?? []]);
43
+ return await new Promise((resolve) => {
44
+ const state = { isClosed: false };
45
+ function close(result) {
46
+ if (state.isClosed) {
47
+ return;
48
+ }
49
+ state.isClosed = true;
50
+ doc.removeEventListener("pointerdown", handlePointerDown, true);
51
+ popoverEl.remove();
52
+ resolve(result);
53
+ }
54
+ function handleCancel() {
55
+ close(null);
56
+ }
57
+ function handleOk() {
58
+ close(getValue());
59
+ }
60
+ function handlePointerDown(evt) {
61
+ if (evt.composedPath().includes(popoverEl)) {
62
+ return;
63
+ }
64
+ close(null);
65
+ }
66
+ const getValue = build({
67
+ cancel: handleCancel,
68
+ confirm: handleOk,
69
+ contentEl: popoverEl
70
+ });
71
+ popoverEl.addEventListener("keydown", (evt) => {
72
+ if (evt.key === "Enter") {
73
+ evt.preventDefault();
74
+ handleOk();
75
+ return;
76
+ }
77
+ if (evt.key === "Escape") {
78
+ evt.preventDefault();
79
+ handleCancel();
80
+ }
81
+ });
82
+ const buttonsSetting = new Setting(popoverEl);
83
+ buttonsSetting.addButton((button) => {
84
+ button.setButtonText(okButtonText ?? t(($) => $.obsidianDevUtils.buttons.ok)).setCta().setClass(CssClass.OkButton).onClick(handleOk);
85
+ });
86
+ buttonsSetting.addButton((button) => {
87
+ button.setButtonText(cancelButtonText ?? t(($) => $.obsidianDevUtils.buttons.cancel)).setClass(CssClass.CancelButton).onClick(handleCancel);
88
+ });
89
+ doc.addEventListener("pointerdown", handlePointerDown, true);
90
+ positionAtAnchor(popoverEl, anchor, win);
91
+ focusFirstInput(popoverEl);
92
+ });
93
+ }
94
+ function focusFirstInput(popoverEl) {
95
+ const inputEl = popoverEl.querySelector("input");
96
+ if (!inputEl) {
97
+ return;
98
+ }
99
+ inputEl.focus();
100
+ inputEl.select();
101
+ }
102
+ function positionAtAnchor(popoverEl, anchor, win) {
103
+ const maxLeft = Math.max(VIEWPORT_MARGIN_IN_PIXELS, win.innerWidth - popoverEl.offsetWidth - VIEWPORT_MARGIN_IN_PIXELS);
104
+ const maxTop = Math.max(VIEWPORT_MARGIN_IN_PIXELS, win.innerHeight - popoverEl.offsetHeight - VIEWPORT_MARGIN_IN_PIXELS);
105
+ const left = Math.min(Math.max(anchor.left, VIEWPORT_MARGIN_IN_PIXELS), maxLeft);
106
+ const top = Math.min(Math.max(anchor.bottom + ANCHOR_GAP_IN_PIXELS, VIEWPORT_MARGIN_IN_PIXELS), maxTop);
107
+ popoverEl.style.left = `${String(Math.round(left + win.scrollX))}px`;
108
+ popoverEl.style.top = `${String(Math.round(top + win.scrollY))}px`;
109
+ }
110
+ export {
111
+ showPopover
112
+ };
113
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BvcG92ZXJzL3BvcG92ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHNtYWxsIGZsb2F0aW5nIHBhbmVsIGFuY2hvcmVkIGF0IGEgcG9pbnQsIGNvbGxlY3RpbmcgYSB2YWx1ZSBhbmQgcmVzb2x2aW5nIGEgcHJvbWlzZSB3aXRoIGl0LlxuICpcbiAqIFRoaXMgaXMgdGhlIHBvcG92ZXIgY291bnRlcnBhcnQgb2YgYG1vZGFscy9tb2RhbC50c2A6IHRoZSBzYW1lIFwiYXNrIHRoZSB1c2VyIGZvciBhIHZhbHVlLCByZXNvbHZlIGFcbiAqIHByb21pc2VcIiBzaGFwZSwgZm9yIHRoZSBjYXNlcyBhIG1vZGFsIGNhbm5vdCBzZXJ2ZS4gQSBtb2RhbCBkaW1zIHRoZSBzY3JlZW4gYW5kIGlzIHBvc2l0aW9uZWQgYnlcbiAqIE9ic2lkaWFuLCBuZWl0aGVyIG9mIHdoaWNoIHN1aXRzIGFuIGVkaXRvciB0aGF0IG11c3QgYXBwZWFyICphdCogdGhlIHRoaW5nIGl0IGVkaXRzIFx1MjAxNCBhIGNsaWNrZWRcbiAqIGxpbmssIHRoZSBjYXJldCwgb3Igd2hlcmV2ZXIgYSBjb250ZXh0IG1lbnUgd2FzIHJhaXNlZC5cbiAqXG4gKiBUaGUgcGFuZWwgcmlkZXMgT2JzaWRpYW4ncyBgLm1lbnVgIGNsYXNzIGZvciBpdHMgYmFja2dyb3VuZCwgYm9yZGVyIGFuZCBzaGFkb3csIHNvIG9ubHkgbGF5b3V0IGlzXG4gKiBzdHlsZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICovXG5cbmltcG9ydCB7IFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgUG9wb3ZlckFuY2hvciB9IGZyb20gJy4vcG9wb3Zlci1hbmNob3IudHMnO1xuXG5pbXBvcnQgeyBnZXREb2N1bWVudFdpbmRvdyB9IGZyb20gJy4uLy4uL2h0bWwtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IGFkZFBsdWdpbkNzc0NsYXNzZXMgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWNvbnRleHQudHMnO1xuXG4vKipcbiAqIFRoZSBnYXAgaW4gcGl4ZWxzIGJldHdlZW4gdGhlIGFuY2hvciBhbmQgdGhlIHBvcG92ZXIuXG4gKi9cbmNvbnN0IEFOQ0hPUl9HQVBfSU5fUElYRUxTID0gNDtcblxuLyoqXG4gKiBUaGUgbWluaW11bSBnYXAgaW4gcGl4ZWxzIHRoZSBwb3BvdmVyIGtlZXBzIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSB3aW5kb3cgd2hlbiBpdCBoYXMgdG8gYmUgY2xhbXBlZFxuICogYmFjayBpbnRvIHZpZXcuXG4gKi9cbmNvbnN0IFZJRVdQT1JUX01BUkdJTl9JTl9QSVhFTFMgPSA4O1xuXG4vKipcbiAqIFJlYWRzIHRoZSB2YWx1ZSB0aGUgcG9wb3ZlciByZXNvbHZlcyB3aXRoIHdoZW4gaXQgaXMgY29uZmlybWVkLlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmVzb2x2ZWQgYnkgdGhlIHBvcG92ZXIuXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgUG9wb3ZlclZhbHVlR2V0dGVyPFZhbHVlPiA9ICh0aGlzOiB2b2lkKSA9PiBWYWx1ZTtcblxuLyoqXG4gKiBUaGUgdG9vbHMgaGFuZGVkIHRvIHtAbGluayBTaG93UG9wb3ZlclBhcmFtcy5idWlsZH0gZm9yIHBvcHVsYXRpbmcgYSBwb3BvdmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNob3dQb3BvdmVyQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogRGlzbWlzc2VzIHRoZSBwb3BvdmVyLCByZXNvbHZpbmcgaXQgd2l0aCBgbnVsbGAsIGFzIHRoZSBDYW5jZWwgYnV0dG9uIGRvZXMuXG4gICAqL1xuICBjYW5jZWwodGhpczogdm9pZCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENvbmZpcm1zIHRoZSBwb3BvdmVyLCByZXNvbHZpbmcgaXQgd2l0aCB0aGUgYnVpbHQgdmFsdWUsIGFzIHRoZSBPSyBidXR0b24gZG9lcy5cbiAgICovXG4gIGNvbmZpcm0odGhpczogdm9pZCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGFkZCB0aGUgcG9wb3ZlcidzIGNvbnRlbnQgdG8uIFRoZSBPSyBhbmQgQ2FuY2VsIGJ1dHRvbnMgYXJlIGFwcGVuZGVkIGFmdGVyIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudEVsOiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc2hvd1BvcG92ZXJ9LlxuICpcbiAqIEB0eXBlUGFyYW0gVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgcmVzb2x2ZWQgYnkgdGhlIHBvcG92ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hvd1BvcG92ZXJQYXJhbXM8VmFsdWU+IHtcbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yOiBQb3BvdmVyQW5jaG9yO1xuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZXMgdGhlIHBvcG92ZXIncyBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHRvb2xzIGZvciBwb3B1bGF0aW5nIHRoZSBwb3BvdmVyLlxuICAgKiBAcmV0dXJucyBBIGdldHRlciByZWFkIHdoZW4gdGhlIHBvcG92ZXIgaXMgY29uZmlybWVkLlxuICAgKi9cbiAgYnVpbGQodGhpczogdm9pZCwgcGFyYW1zOiBTaG93UG9wb3ZlckJ1aWxkUGFyYW1zKTogUG9wb3ZlclZhbHVlR2V0dGVyPFZhbHVlPjtcblxuICAvKipcbiAgICogQSB0ZXh0IGZvciB0aGUgXCJDYW5jZWxcIiBidXR0b24uXG4gICAqL1xuICByZWFkb25seSBjYW5jZWxCdXR0b25UZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY3NzQ2xhc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIHRleHQgZm9yIHRoZSBcIk9LXCIgYnV0dG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb2tCdXR0b25UZXh0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpc3BsYXlzIGEgcG9wb3ZlciBhdCB0aGUgZ2l2ZW4gYW5jaG9yIGFuZCByZXNvbHZlcyB3aXRoIHRoZSBidWlsdCB2YWx1ZSwgb3IgYG51bGxgIGlmIGl0IHdhc1xuICogZGlzbWlzc2VkIHdpdGhvdXQgY29uZmlybWluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIGJ5IHRoZSBwb3BvdmVyLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcG9wb3Zlci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYnVpbHQgdmFsdWUsIG9yIGBudWxsYCBpZiBkaXNtaXNzZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93UG9wb3ZlcjxWYWx1ZT4ocGFyYW1zOiBTaG93UG9wb3ZlclBhcmFtczxWYWx1ZT4pOiBQcm9taXNlPG51bGwgfCBWYWx1ZT4ge1xuICBjb25zdCB7XG4gICAgYW5jaG9yLFxuICAgIGJ1aWxkLFxuICAgIGNhbmNlbEJ1dHRvblRleHQsXG4gICAgY3NzQ2xhc3NlcyxcbiAgICBva0J1dHRvblRleHRcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBkb2MgPSBhbmNob3IuZG9jO1xuICBjb25zdCB3aW4gPSBnZXREb2N1bWVudFdpbmRvdyhkb2MpO1xuICBjb25zdCBwb3BvdmVyRWwgPSBkb2MuYm9keS5jcmVhdGVEaXYoeyBjbHM6ICdtZW51JyB9KTtcbiAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyhwb3BvdmVyRWwsIFtDc3NDbGFzcy5Qb3BvdmVyLCAuLi5jc3NDbGFzc2VzID8/IFtdXSk7XG5cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPG51bGwgfCBWYWx1ZT4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHsgaXNDbG9zZWQ6IGZhbHNlIH07XG5cbiAgICBmdW5jdGlvbiBjbG9zZShyZXN1bHQ6IG51bGwgfCBWYWx1ZSk6IHZvaWQge1xuICAgICAgaWYgKHN0YXRlLmlzQ2xvc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmlzQ2xvc2VkID0gdHJ1ZTtcbiAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICAgIHBvcG92ZXJFbC5yZW1vdmUoKTtcbiAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDYW5jZWwoKTogdm9pZCB7XG4gICAgICBjbG9zZShudWxsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVPaygpOiB2b2lkIHtcbiAgICAgIGNsb3NlKGdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc21pc3NlcyB0aGUgcG9wb3ZlciB3aGVuIHRoZSBuZXh0IGdlc3R1cmUgc3RhcnRzIG91dHNpZGUgaXQuIExpc3RlbmluZyBmb3IgYHBvaW50ZXJkb3duYFxuICAgICAqIHJhdGhlciB0aGFuIGBjbGlja2AgbWF0dGVyczogYSBwb3BvdmVyIGlzIHR5cGljYWxseSBvcGVuZWQgZnJvbSBhIGBjbGlja2AgaGFuZGxlciwgYW5kIHRoZSB2ZXJ5XG4gICAgICogc2FtZSBjbGljayB3b3VsZCBvdGhlcndpc2UgcmVhY2ggdGhpcyBsaXN0ZW5lciBhbmQgY2xvc2UgdGhlIHBvcG92ZXIgdGhlIGluc3RhbnQgaXQgYXBwZWFycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldnQgLSBUaGUgcG9pbnRlciBldmVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyRG93bihldnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgICAgaWYgKGV2dC5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhwb3BvdmVyRWwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IGdldFZhbHVlID0gYnVpbGQoe1xuICAgICAgY2FuY2VsOiBoYW5kbGVDYW5jZWwsXG4gICAgICBjb25maXJtOiBoYW5kbGVPayxcbiAgICAgIGNvbnRlbnRFbDogcG9wb3ZlckVsXG4gICAgfSk7XG5cbiAgICBwb3BvdmVyRWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBoYW5kbGVPaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBidXR0b25zU2V0dGluZyA9IG5ldyBTZXR0aW5nKHBvcG92ZXJFbCk7XG4gICAgYnV0dG9uc1NldHRpbmcuYWRkQnV0dG9uKChidXR0b24pID0+IHtcbiAgICAgIGJ1dHRvblxuICAgICAgICAuc2V0QnV0dG9uVGV4dChva0J1dHRvblRleHQgPz8gdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMub2spKVxuICAgICAgICAuc2V0Q3RhKClcbiAgICAgICAgLnNldENsYXNzKENzc0NsYXNzLk9rQnV0dG9uKVxuICAgICAgICAub25DbGljayhoYW5kbGVPayk7XG4gICAgfSk7XG4gICAgYnV0dG9uc1NldHRpbmcuYWRkQnV0dG9uKChidXR0b24pID0+IHtcbiAgICAgIGJ1dHRvblxuICAgICAgICAuc2V0QnV0dG9uVGV4dChjYW5jZWxCdXR0b25UZXh0ID8/IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5idXR0b25zLmNhbmNlbCkpXG4gICAgICAgIC5zZXRDbGFzcyhDc3NDbGFzcy5DYW5jZWxCdXR0b24pXG4gICAgICAgIC5vbkNsaWNrKGhhbmRsZUNhbmNlbCk7XG4gICAgfSk7XG5cbiAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG4gICAgcG9zaXRpb25BdEFuY2hvcihwb3BvdmVyRWwsIGFuY2hvciwgd2luKTtcbiAgICBmb2N1c0ZpcnN0SW5wdXQocG9wb3ZlckVsKTtcbiAgfSk7XG59XG5cbi8qKlxuICogRm9jdXNlcyBhbmQgc2VsZWN0cyB0aGUgcG9wb3ZlcidzIGZpcnN0IHRleHQgaW5wdXQsIHNvIHRoZSB1c2VyIGNhbiB0eXBlIHN0cmFpZ2h0IGF3YXkuXG4gKlxuICogQHBhcmFtIHBvcG92ZXJFbCAtIFRoZSBwb3BvdmVyIHRvIGZvY3VzIHdpdGhpbi5cbiAqL1xuZnVuY3Rpb24gZm9jdXNGaXJzdElucHV0KHBvcG92ZXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgaW5wdXRFbCA9IHBvcG92ZXJFbC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICBpZiAoIWlucHV0RWwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpbnB1dEVsLmZvY3VzKCk7XG4gIGlucHV0RWwuc2VsZWN0KCk7XG59XG5cbi8qKlxuICogUGxhY2VzIHRoZSBwb3BvdmVyIGp1c3QgYmVsb3cgdGhlIGFuY2hvciwgcHVsbGluZyBpdCBiYWNrIGluc2lkZSB0aGUgd2luZG93IHdoZW4gaXQgd291bGQgb3RoZXJ3aXNlXG4gKiBvdmVyZmxvdyBcdTIwMTQgYW4gYW5jaG9yIG5lYXIgdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIGlzIGV4YWN0bHkgd2hlcmUgYW4gdW5jbGFtcGVkIHBvcG92ZXIgd291bGRcbiAqIHJlbmRlciBvZmYtc2NyZWVuLlxuICpcbiAqIEBwYXJhbSBwb3BvdmVyRWwgLSBUaGUgcG9wb3ZlciB0byBwb3NpdGlvbi5cbiAqIEBwYXJhbSBhbmNob3IgLSBXaGVyZSB0aGUgcG9wb3ZlciBiZWxvbmdzLlxuICogQHBhcmFtIHdpbiAtIFRoZSB3aW5kb3cgdGhlIGFuY2hvciBsaXZlcyBpbiAoYSBwb3Atb3V0IHdpbmRvdyBoYXMgaXRzIG93bikuXG4gKi9cbmZ1bmN0aW9uIHBvc2l0aW9uQXRBbmNob3IocG9wb3ZlckVsOiBIVE1MRWxlbWVudCwgYW5jaG9yOiBQb3BvdmVyQW5jaG9yLCB3aW46IFdpbmRvdyk6IHZvaWQge1xuICBjb25zdCBtYXhMZWZ0ID0gTWF0aC5tYXgoVklFV1BPUlRfTUFSR0lOX0lOX1BJWEVMUywgd2luLmlubmVyV2lkdGggLSBwb3BvdmVyRWwub2Zmc2V0V2lkdGggLSBWSUVXUE9SVF9NQVJHSU5fSU5fUElYRUxTKTtcbiAgY29uc3QgbWF4VG9wID0gTWF0aC5tYXgoVklFV1BPUlRfTUFSR0lOX0lOX1BJWEVMUywgd2luLmlubmVySGVpZ2h0IC0gcG9wb3ZlckVsLm9mZnNldEhlaWdodCAtIFZJRVdQT1JUX01BUkdJTl9JTl9QSVhFTFMpO1xuXG4gIGNvbnN0IGxlZnQgPSBNYXRoLm1pbihNYXRoLm1heChhbmNob3IubGVmdCwgVklFV1BPUlRfTUFSR0lOX0lOX1BJWEVMUyksIG1heExlZnQpO1xuICBjb25zdCB0b3AgPSBNYXRoLm1pbihNYXRoLm1heChhbmNob3IuYm90dG9tICsgQU5DSE9SX0dBUF9JTl9QSVhFTFMsIFZJRVdQT1JUX01BUkdJTl9JTl9QSVhFTFMpLCBtYXhUb3ApO1xuXG4gIHBvcG92ZXJFbC5zdHlsZS5sZWZ0ID0gYCR7U3RyaW5nKE1hdGgucm91bmQobGVmdCArIHdpbi5zY3JvbGxYKSl9cHhgO1xuICBwb3BvdmVyRWwuc3R5bGUudG9wID0gYCR7U3RyaW5nKE1hdGgucm91bmQodG9wICsgd2luLnNjcm9sbFkpKX1weGA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLFNBQVMsZUFBZTtBQUl4QixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGdCQUFnQjtBQUN6QixTQUFTLFNBQVM7QUFDbEIsU0FBUywyQkFBMkI7QUFLcEMsTUFBTSx1QkFBdUI7QUFNN0IsTUFBTSw0QkFBNEI7QUF5RWxDLGVBQXNCLFlBQW1CLFFBQXlEO0FBQ2hHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sTUFBTSxPQUFPO0FBQ25CLFFBQU0sTUFBTSxrQkFBa0IsR0FBRztBQUNqQyxRQUFNLFlBQVksSUFBSSxLQUFLLFVBQVUsRUFBRSxLQUFLLE9BQU8sQ0FBQztBQUNwRCxzQkFBb0IsV0FBVyxDQUFDLFNBQVMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFFdEUsU0FBTyxNQUFNLElBQUksUUFBc0IsQ0FBQyxZQUFZO0FBQ2xELFVBQU0sUUFBUSxFQUFFLFVBQVUsTUFBTTtBQUVoQyxhQUFTLE1BQU0sUUFBNEI7QUFDekMsVUFBSSxNQUFNLFVBQVU7QUFDbEI7QUFBQSxNQUNGO0FBQ0EsWUFBTSxXQUFXO0FBQ2pCLFVBQUksb0JBQW9CLGVBQWUsbUJBQW1CLElBQUk7QUFDOUQsZ0JBQVUsT0FBTztBQUNqQixjQUFRLE1BQU07QUFBQSxJQUNoQjtBQUVBLGFBQVMsZUFBcUI7QUFDNUIsWUFBTSxJQUFJO0FBQUEsSUFDWjtBQUVBLGFBQVMsV0FBaUI7QUFDeEIsWUFBTSxTQUFTLENBQUM7QUFBQSxJQUNsQjtBQVNBLGFBQVMsa0JBQWtCLEtBQXlCO0FBQ2xELFVBQUksSUFBSSxhQUFhLEVBQUUsU0FBUyxTQUFTLEdBQUc7QUFDMUM7QUFBQSxNQUNGO0FBQ0EsWUFBTSxJQUFJO0FBQUEsSUFDWjtBQUVBLFVBQU0sV0FBVyxNQUFNO0FBQUEsTUFDckIsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsV0FBVztBQUFBLElBQ2IsQ0FBQztBQUVELGNBQVUsaUJBQWlCLFdBQVcsQ0FBQyxRQUF1QjtBQUM1RCxVQUFJLElBQUksUUFBUSxTQUFTO0FBQ3ZCLFlBQUksZUFBZTtBQUNuQixpQkFBUztBQUNUO0FBQUEsTUFDRjtBQUVBLFVBQUksSUFBSSxRQUFRLFVBQVU7QUFDeEIsWUFBSSxlQUFlO0FBQ25CLHFCQUFhO0FBQUEsTUFDZjtBQUFBLElBQ0YsQ0FBQztBQUVELFVBQU0saUJBQWlCLElBQUksUUFBUSxTQUFTO0FBQzVDLG1CQUFlLFVBQVUsQ0FBQyxXQUFXO0FBQ25DLGFBQ0csY0FBYyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxFQUFFLENBQUMsRUFDckUsT0FBTyxFQUNQLFNBQVMsU0FBUyxRQUFRLEVBQzFCLFFBQVEsUUFBUTtBQUFBLElBQ3JCLENBQUM7QUFDRCxtQkFBZSxVQUFVLENBQUMsV0FBVztBQUNuQyxhQUNHLGNBQWMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLFFBQVEsTUFBTSxDQUFDLEVBQzdFLFNBQVMsU0FBUyxZQUFZLEVBQzlCLFFBQVEsWUFBWTtBQUFBLElBQ3pCLENBQUM7QUFFRCxRQUFJLGlCQUFpQixlQUFlLG1CQUFtQixJQUFJO0FBQzNELHFCQUFpQixXQUFXLFFBQVEsR0FBRztBQUN2QyxvQkFBZ0IsU0FBUztBQUFBLEVBQzNCLENBQUM7QUFDSDtBQU9BLFNBQVMsZ0JBQWdCLFdBQThCO0FBQ3JELFFBQU0sVUFBVSxVQUFVLGNBQWMsT0FBTztBQUMvQyxNQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsRUFDRjtBQUVBLFVBQVEsTUFBTTtBQUNkLFVBQVEsT0FBTztBQUNqQjtBQVdBLFNBQVMsaUJBQWlCLFdBQXdCLFFBQXVCLEtBQW1CO0FBQzFGLFFBQU0sVUFBVSxLQUFLLElBQUksMkJBQTJCLElBQUksYUFBYSxVQUFVLGNBQWMseUJBQXlCO0FBQ3RILFFBQU0sU0FBUyxLQUFLLElBQUksMkJBQTJCLElBQUksY0FBYyxVQUFVLGVBQWUseUJBQXlCO0FBRXZILFFBQU0sT0FBTyxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sTUFBTSx5QkFBeUIsR0FBRyxPQUFPO0FBQy9FLFFBQU0sTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sU0FBUyxzQkFBc0IseUJBQXlCLEdBQUcsTUFBTTtBQUV0RyxZQUFVLE1BQU0sT0FBTyxHQUFHLE9BQU8sS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNoRSxZQUFVLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNoRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -90,6 +90,8 @@ export declare enum ObsidianDevUtilsRepoPaths {
90
90
  NodeModules = "node_modules",
91
91
  /** Package JSON file. */
92
92
  PackageJson = "package.json",
93
+ /** Folder holding hand-written patched copies of third-party packages. */
94
+ Patches = "patches",
93
95
  /** Root folder. */
94
96
  RootFolder = "/",
95
97
  /** Scripts folder. */
@@ -62,6 +62,7 @@ var ObsidianDevUtilsRepoPaths = /* @__PURE__ */ ((ObsidianDevUtilsRepoPaths2) =>
62
62
  ObsidianDevUtilsRepoPaths2["MjsExtension"] = ".mjs";
63
63
  ObsidianDevUtilsRepoPaths2["NodeModules"] = "node_modules";
64
64
  ObsidianDevUtilsRepoPaths2["PackageJson"] = "package.json";
65
+ ObsidianDevUtilsRepoPaths2["Patches"] = "patches";
65
66
  ObsidianDevUtilsRepoPaths2["RootFolder"] = "/";
66
67
  ObsidianDevUtilsRepoPaths2["Scripts"] = "scripts";
67
68
  ObsidianDevUtilsRepoPaths2["ScriptUtils"] = "script-utils";
@@ -80,4 +81,4 @@ var ObsidianDevUtilsRepoPaths = /* @__PURE__ */ ((ObsidianDevUtilsRepoPaths2) =>
80
81
  export {
81
82
  ObsidianDevUtilsRepoPaths
82
83
  };
83
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZW51bWVyYXRpb24gb2YgY29tbW9uIGZpbGUgcGF0aHMgYW5kIHBhdHRlcm5zIHVzZWQgaW4gdGhlIE9ic2lkaWFuIGRldmVsb3BtZW50IHV0aWxpdGllcyByZXBvc2l0b3J5LlxuICogVGhlc2UgcGF0aHMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgb3RoZXIgdXRpbGl0aWVzLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2RcbiAqIG9mIGVycm9ycyBkdWUgdG8gaGFyZGNvZGVkIHN0cmluZ3MuXG4gKi9cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiBjb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdXNlZCBpbiB0aGUgT2JzaWRpYW4gZGV2ZWxvcG1lbnQgdXRpbGl0aWVzIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBlbnVtIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMge1xuICAvKiogQW55IGZpbGUgb3IgZm9sZGVyLiAqL1xuICBBbnkgPSAnKicsXG5cbiAgLyoqIENvbW1vbkpTIGZpbGUuICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RGN0cyA9ICcqLmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RG10cyA9ICcqLmQubXRzJyxcblxuICAvKiogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlLiAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBBbnkgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUcyA9ICcqLnRzJyxcblxuICAvKiogQXN0cm8gY29uZmlndXJhdGlvbiBmaWxlIChkb2N1bWVudGF0aW9uIHNpdGUpIGF0IHRoZSByZXBvIHJvb3QuICovXG4gIEFzdHJvQ29uZmlnVHMgPSAnYXN0cm8uY29uZmlnLnRzJyxcblxuICAvKiogQ29tbW9uSlMgZm9sZGVyLiAqL1xuICBDanMgPSAnY2pzJyxcblxuICAvKiogQ29tbW9uSlMgZmlsZSBleHRlbnNpb24uICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKiogQ3VycmVudCBmb2xkZXIuICovXG4gIEN1cnJlbnRGb2xkZXIgPSAnLicsXG5cbiAgLyoqIERhdGF2aWV3IHR5cGVzLiAqL1xuICBEYXRhdmlld1R5cGVzID0gJ3NyYy9vYnNpZGlhbi9AdHlwZXMvZGF0YXZpZXcvKionLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEY3RzRXh0ZW5zaW9uID0gJy5kLmN0cycsXG5cbiAgLyoqIERpc3RyaWJ1dGlvbiBmb2xkZXIuICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqIEEgcGF0aCB0byB0aGUgYnVpbHQgYGRlbW8tdmF1bHQtaGVscGVyYCBwbHVnaW4gd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBpbmplY3RlZCBpbnRvIGRlbW8gdmF1bHRzIGF0IHJlbGVhc2UgdGltZS4gKi9cbiAgRGlzdERlbW9WYXVsdEhlbHBlciA9ICdkaXN0L2RlbW8tdmF1bHQtaGVscGVyJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgbGliYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0TGliID0gJ2Rpc3QvbGliJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgdGVtcGxhdGVzYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBob2xkaW5nIHRoZSBjb25zdW1lci1mYWNpbmcgdGVtcGxhdGVzLiAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKiogVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEanNFeHRlbnNpb24gPSAnLmQuanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgRG10c0V4dGVuc2lvbiA9ICcuZC5tdHMnLFxuXG4gIC8qKiBEb2N1bWVudGF0aW9uIHNpdGUgZm9sZGVyIChBc3RybyArIFN0YXJsaWdodCBBUEktZG9jcyBzdWItcHJvamVjdCkuICovXG4gIERvY3MgPSAnZG9jcycsXG5cbiAgLyoqIEJ1aWxkIG91dHB1dCBmb2xkZXIgb2YgdGhlIGRvY3VtZW50YXRpb24gc2l0ZS4gKi9cbiAgRG9jc0Rpc3QgPSAnZG9jcy9kaXN0JyxcblxuICAvKiogRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRHByaW50SnNvbiA9ICdkcHJpbnQuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uICovXG4gIER0c0V4dGVuc2lvbiA9ICcuZC50cycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqIEVTTSBKYXZhU2NyaXB0IGZvbGRlci4gKi9cbiAgRXNtID0gJ2VzbScsXG5cbiAgLyoqIEdlbmVyYXRlZC1kdXJpbmctYnVpbGQgQ29tbW9uSlMgZmlsZS4gKi9cbiAgR2VuZXJhdGVkRHVyaW5nQnVpbGRDanMgPSAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZC5janMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkIEVTTSBKYXZhU2NyaXB0IGZpbGUuICovXG4gIEdlbmVyYXRlZER1cmluZ0J1aWxkTWpzID0gJ2dlbmVyYXRlZC1kdXJpbmctYnVpbGQubWpzJyxcblxuICAvKiogQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleENqcyA9ICdpbmRleC5janMnLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgaW5kZXggZmlsZS4gKi9cbiAgSW5kZXhEY3RzID0gJ2luZGV4LmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBpbmRleCBmaWxlLiAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleE1qcyA9ICdpbmRleC5tanMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGluZGV4IGZpbGUuICovXG4gIEluZGV4VHMgPSAnaW5kZXgudHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5tanMnLFxuXG4gIC8qKiBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIHNjaGVtYSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludFR5cGVzTWFya2Rvd25saW50Q2xpMkNvbmZpZ1NjaGVtYUR0cyA9ICdzcmMvc2NyaXB0LXV0aWxzL2xpbnRlcnMvbWFya2Rvd25saW50LXR5cGVzL0B0eXBlcy9tYXJrZG93bmxpbnQtY2xpMi1jb25maWctc2NoZW1hLmQudHMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQgZmxhdCByZS1leHBvcnQgYmFycmVsIGZpbGUuICovXG4gIE1lcmdlZFRzID0gJ19fbWVyZ2VkLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKiogTm9kZSBtb2R1bGVzIGZvbGRlci4gKi9cbiAgTm9kZU1vZHVsZXMgPSAnbm9kZV9tb2R1bGVzJyxcblxuICAvKiogUGFja2FnZSBKU09OIGZpbGUuICovXG4gIFBhY2thZ2VKc29uID0gJ3BhY2thZ2UuanNvbicsXG5cbiAgLyoqIFJvb3QgZm9sZGVyLiAqL1xuICBSb290Rm9sZGVyID0gJy8nLFxuXG4gIC8qKiBTY3JpcHRzIGZvbGRlci4gKi9cbiAgU2NyaXB0cyA9ICdzY3JpcHRzJyxcblxuICAvKiogU2NyaXB0VXRpbHMgZm9sZGVyLiAqL1xuICBTY3JpcHRVdGlscyA9ICdzY3JpcHQtdXRpbHMnLFxuXG4gIC8qKiBTb3VyY2UgZm9sZGVyLiAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKiogU3R5bGVzIGZvbGRlci4gKi9cbiAgU3R5bGVzID0gJ3N0eWxlcycsXG5cbiAgLyoqIFN0eWxlcyBDU1MgZmlsZS4gKi9cbiAgU3R5bGVzQ3NzID0gJ3N0eWxlcy5jc3MnLFxuXG4gIC8qKiBUZW1wbGF0ZXMgZm9sZGVyLiAqL1xuICBUZW1wbGF0ZXMgPSAndGVtcGxhdGVzJyxcblxuICAvKiogVGVzdCBoZWxwZXJzIGZvbGRlci4gKi9cbiAgVGVzdEhlbHBlcnMgPSAndGVzdC1oZWxwZXJzJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFRzQ29uZmlnSnNvbiA9ICd0c2NvbmZpZy5qc29uJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCB2YWxpZGF0ZXMgdGhlIGdlbmVyYXRlZCBDb21tb25KUyBkZWNsYXJhdGlvbnMuICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNDanNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy1janMuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgRVNNIGRlY2xhcmF0aW9ucy4gKi9cbiAgVHNDb25maWdWYWxpZGF0ZURlY2xhcmF0aW9uc0pzb24gPSAndHNjb25maWcudmFsaWRhdGUtZGVjbGFyYXRpb25zLmpzb24nLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBUc0V4dGVuc2lvbiA9ICcudHMnLFxuXG4gIC8qKiBUeXBlcyBmb2xkZXIuICovXG4gIFR5cGVzID0gJ0B0eXBlcydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV08sSUFBSyw0QkFBTCxrQkFBS0EsK0JBQUw7QUFFTCxFQUFBQSwyQkFBQSxTQUFNO0FBR04sRUFBQUEsMkJBQUEsWUFBUztBQUdULEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxhQUFVO0FBR1YsRUFBQUEsMkJBQUEsWUFBUztBQUdULEVBQUFBLDJCQUFBLFlBQVM7QUFHVCxFQUFBQSwyQkFBQSxhQUFVO0FBR1YsRUFBQUEsMkJBQUEsV0FBUTtBQUdSLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxTQUFNO0FBR04sRUFBQUEsMkJBQUEsa0JBQWU7QUFHZixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxVQUFPO0FBR1AsRUFBQUEsMkJBQUEseUJBQXNCO0FBR3RCLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsa0JBQWU7QUFHZixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsVUFBTztBQUdQLEVBQUFBLDJCQUFBLGNBQVc7QUFHWCxFQUFBQSwyQkFBQSxnQkFBYTtBQUdiLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSw2QkFBMEI7QUFHMUIsRUFBQUEsMkJBQUEsNkJBQTBCO0FBRzFCLEVBQUFBLDJCQUFBLGNBQVc7QUFHWCxFQUFBQSwyQkFBQSxlQUFZO0FBR1osRUFBQUEsMkJBQUEsZUFBWTtBQUdaLEVBQUFBLDJCQUFBLGNBQVc7QUFHWCxFQUFBQSwyQkFBQSxhQUFVO0FBR1YsRUFBQUEsMkJBQUEsaUJBQWM7QUFHZCxFQUFBQSwyQkFBQSwrQkFBNEI7QUFHNUIsRUFBQUEsMkJBQUEsc0RBQW1EO0FBR25ELEVBQUFBLDJCQUFBLGNBQVc7QUFHWCxFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLGlCQUFjO0FBR2QsRUFBQUEsMkJBQUEsaUJBQWM7QUFHZCxFQUFBQSwyQkFBQSxnQkFBYTtBQUdiLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsZUFBWTtBQUdaLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEseUNBQXNDO0FBR3RDLEVBQUFBLDJCQUFBLHNDQUFtQztBQUduQyxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFdBQVE7QUE5SkUsU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIl0KfQo=
84
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZW51bWVyYXRpb24gb2YgY29tbW9uIGZpbGUgcGF0aHMgYW5kIHBhdHRlcm5zIHVzZWQgaW4gdGhlIE9ic2lkaWFuIGRldmVsb3BtZW50IHV0aWxpdGllcyByZXBvc2l0b3J5LlxuICogVGhlc2UgcGF0aHMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgb3RoZXIgdXRpbGl0aWVzLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2RcbiAqIG9mIGVycm9ycyBkdWUgdG8gaGFyZGNvZGVkIHN0cmluZ3MuXG4gKi9cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiBjb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdXNlZCBpbiB0aGUgT2JzaWRpYW4gZGV2ZWxvcG1lbnQgdXRpbGl0aWVzIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBlbnVtIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMge1xuICAvKiogQW55IGZpbGUgb3IgZm9sZGVyLiAqL1xuICBBbnkgPSAnKicsXG5cbiAgLyoqIENvbW1vbkpTIGZpbGUuICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RGN0cyA9ICcqLmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RG10cyA9ICcqLmQubXRzJyxcblxuICAvKiogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlLiAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBBbnkgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUcyA9ICcqLnRzJyxcblxuICAvKiogQXN0cm8gY29uZmlndXJhdGlvbiBmaWxlIChkb2N1bWVudGF0aW9uIHNpdGUpIGF0IHRoZSByZXBvIHJvb3QuICovXG4gIEFzdHJvQ29uZmlnVHMgPSAnYXN0cm8uY29uZmlnLnRzJyxcblxuICAvKiogQ29tbW9uSlMgZm9sZGVyLiAqL1xuICBDanMgPSAnY2pzJyxcblxuICAvKiogQ29tbW9uSlMgZmlsZSBleHRlbnNpb24uICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKiogQ3VycmVudCBmb2xkZXIuICovXG4gIEN1cnJlbnRGb2xkZXIgPSAnLicsXG5cbiAgLyoqIERhdGF2aWV3IHR5cGVzLiAqL1xuICBEYXRhdmlld1R5cGVzID0gJ3NyYy9vYnNpZGlhbi9AdHlwZXMvZGF0YXZpZXcvKionLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEY3RzRXh0ZW5zaW9uID0gJy5kLmN0cycsXG5cbiAgLyoqIERpc3RyaWJ1dGlvbiBmb2xkZXIuICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqIEEgcGF0aCB0byB0aGUgYnVpbHQgYGRlbW8tdmF1bHQtaGVscGVyYCBwbHVnaW4gd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBpbmplY3RlZCBpbnRvIGRlbW8gdmF1bHRzIGF0IHJlbGVhc2UgdGltZS4gKi9cbiAgRGlzdERlbW9WYXVsdEhlbHBlciA9ICdkaXN0L2RlbW8tdmF1bHQtaGVscGVyJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgbGliYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0TGliID0gJ2Rpc3QvbGliJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgdGVtcGxhdGVzYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBob2xkaW5nIHRoZSBjb25zdW1lci1mYWNpbmcgdGVtcGxhdGVzLiAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKiogVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEanNFeHRlbnNpb24gPSAnLmQuanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgRG10c0V4dGVuc2lvbiA9ICcuZC5tdHMnLFxuXG4gIC8qKiBEb2N1bWVudGF0aW9uIHNpdGUgZm9sZGVyIChBc3RybyArIFN0YXJsaWdodCBBUEktZG9jcyBzdWItcHJvamVjdCkuICovXG4gIERvY3MgPSAnZG9jcycsXG5cbiAgLyoqIEJ1aWxkIG91dHB1dCBmb2xkZXIgb2YgdGhlIGRvY3VtZW50YXRpb24gc2l0ZS4gKi9cbiAgRG9jc0Rpc3QgPSAnZG9jcy9kaXN0JyxcblxuICAvKiogRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRHByaW50SnNvbiA9ICdkcHJpbnQuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uICovXG4gIER0c0V4dGVuc2lvbiA9ICcuZC50cycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqIEVTTSBKYXZhU2NyaXB0IGZvbGRlci4gKi9cbiAgRXNtID0gJ2VzbScsXG5cbiAgLyoqIEdlbmVyYXRlZC1kdXJpbmctYnVpbGQgQ29tbW9uSlMgZmlsZS4gKi9cbiAgR2VuZXJhdGVkRHVyaW5nQnVpbGRDanMgPSAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZC5janMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkIEVTTSBKYXZhU2NyaXB0IGZpbGUuICovXG4gIEdlbmVyYXRlZER1cmluZ0J1aWxkTWpzID0gJ2dlbmVyYXRlZC1kdXJpbmctYnVpbGQubWpzJyxcblxuICAvKiogQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleENqcyA9ICdpbmRleC5janMnLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgaW5kZXggZmlsZS4gKi9cbiAgSW5kZXhEY3RzID0gJ2luZGV4LmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBpbmRleCBmaWxlLiAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleE1qcyA9ICdpbmRleC5tanMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGluZGV4IGZpbGUuICovXG4gIEluZGV4VHMgPSAnaW5kZXgudHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5tanMnLFxuXG4gIC8qKiBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIHNjaGVtYSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludFR5cGVzTWFya2Rvd25saW50Q2xpMkNvbmZpZ1NjaGVtYUR0cyA9ICdzcmMvc2NyaXB0LXV0aWxzL2xpbnRlcnMvbWFya2Rvd25saW50LXR5cGVzL0B0eXBlcy9tYXJrZG93bmxpbnQtY2xpMi1jb25maWctc2NoZW1hLmQudHMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQgZmxhdCByZS1leHBvcnQgYmFycmVsIGZpbGUuICovXG4gIE1lcmdlZFRzID0gJ19fbWVyZ2VkLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKiogTm9kZSBtb2R1bGVzIGZvbGRlci4gKi9cbiAgTm9kZU1vZHVsZXMgPSAnbm9kZV9tb2R1bGVzJyxcblxuICAvKiogUGFja2FnZSBKU09OIGZpbGUuICovXG4gIFBhY2thZ2VKc29uID0gJ3BhY2thZ2UuanNvbicsXG5cbiAgLyoqIEZvbGRlciBob2xkaW5nIGhhbmQtd3JpdHRlbiBwYXRjaGVkIGNvcGllcyBvZiB0aGlyZC1wYXJ0eSBwYWNrYWdlcy4gKi9cbiAgUGF0Y2hlcyA9ICdwYXRjaGVzJyxcblxuICAvKiogUm9vdCBmb2xkZXIuICovXG4gIFJvb3RGb2xkZXIgPSAnLycsXG5cbiAgLyoqIFNjcmlwdHMgZm9sZGVyLiAqL1xuICBTY3JpcHRzID0gJ3NjcmlwdHMnLFxuXG4gIC8qKiBTY3JpcHRVdGlscyBmb2xkZXIuICovXG4gIFNjcmlwdFV0aWxzID0gJ3NjcmlwdC11dGlscycsXG5cbiAgLyoqIFNvdXJjZSBmb2xkZXIuICovXG4gIFNyYyA9ICdzcmMnLFxuXG4gIC8qKiBTdHlsZXMgZm9sZGVyLiAqL1xuICBTdHlsZXMgPSAnc3R5bGVzJyxcblxuICAvKiogU3R5bGVzIENTUyBmaWxlLiAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqIFRlbXBsYXRlcyBmb2xkZXIuICovXG4gIFRlbXBsYXRlcyA9ICd0ZW1wbGF0ZXMnLFxuXG4gIC8qKiBUZXN0IGhlbHBlcnMgZm9sZGVyLiAqL1xuICBUZXN0SGVscGVycyA9ICd0ZXN0LWhlbHBlcnMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy4gKi9cbiAgVHNDb25maWdWYWxpZGF0ZURlY2xhcmF0aW9uc0Nqc0pzb24gPSAndHNjb25maWcudmFsaWRhdGUtZGVjbGFyYXRpb25zLWNqcy5qc29uJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCB2YWxpZGF0ZXMgdGhlIGdlbmVyYXRlZCBFU00gZGVjbGFyYXRpb25zLiAqL1xuICBUc0NvbmZpZ1ZhbGlkYXRlRGVjbGFyYXRpb25zSnNvbiA9ICd0c2NvbmZpZy52YWxpZGF0ZS1kZWNsYXJhdGlvbnMuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqIFR5cGVzIGZvbGRlci4gKi9cbiAgVHlwZXMgPSAnQHR5cGVzJ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXTyxJQUFLLDRCQUFMLGtCQUFLQSwrQkFBTDtBQUVMLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsWUFBUztBQUdULEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxXQUFRO0FBR1IsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLFVBQU87QUFHUCxFQUFBQSwyQkFBQSx5QkFBc0I7QUFHdEIsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxVQUFPO0FBR1AsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGdCQUFhO0FBR2IsRUFBQUEsMkJBQUEsa0JBQWU7QUFHZixFQUFBQSwyQkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEsMkJBQUEsU0FBTTtBQUdOLEVBQUFBLDJCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSwyQkFBQSw2QkFBMEI7QUFHMUIsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxlQUFZO0FBR1osRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSwyQkFBQSxzREFBbUQ7QUFHbkQsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEsaUJBQWM7QUFHZCxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxnQkFBYTtBQUdiLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsZUFBWTtBQUdaLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEseUNBQXNDO0FBR3RDLEVBQUFBLDJCQUFBLHNDQUFtQztBQUduQyxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFdBQVE7QUFqS0UsU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIl0KfQo=
package/dist/styles.css CHANGED
@@ -343,6 +343,30 @@ body:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {
343
343
  outline: 2px solid var(--link-color);
344
344
  }
345
345
 
346
+ .obsidian-dev-utils.popover {
347
+ max-width: min(420px, 90vw);
348
+ min-width: 320px;
349
+ padding: var(--size-4-2) var(--size-4-3);
350
+ position: absolute;
351
+ z-index: var(--layer-menu);
352
+ }
353
+ .obsidian-dev-utils.popover .setting-item {
354
+ align-items: center;
355
+ border-top: none;
356
+ gap: var(--size-4-2);
357
+ padding: var(--size-2-1) 0;
358
+ }
359
+ .obsidian-dev-utils.popover .setting-item-info {
360
+ margin-right: 0;
361
+ }
362
+ .obsidian-dev-utils.popover .setting-item-control {
363
+ flex-grow: 1;
364
+ justify-content: flex-end;
365
+ }
366
+ .obsidian-dev-utils.popover input[type=text] {
367
+ width: 100%;
368
+ }
369
+
346
370
  .obsidian-dev-utils.prompt-modal .text-box {
347
371
  width: 100%;
348
372
  }
@@ -409,4 +433,4 @@ body button:not(.clickable-icon) {
409
433
  width: max-content;
410
434
  }
411
435
 
412
- /*# 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-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/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;;;ACjDJ;EACE;;;ACFJ;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;;;ACxGJ;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACDF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;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&progress.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&.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.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:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%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%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&.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%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%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%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 */
436
+ /*# 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-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/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;;;ACjDJ;EACE;;;ACFJ;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;;;ACxGJ;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACCJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;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&progress.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&.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.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:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%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%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//%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%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%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%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 */
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../dist/lib/cjs/obsidian/components/pointer-position-component.cjs",
3
+ "module": "../../../dist/lib/esm/obsidian/components/pointer-position-component.mjs",
4
+ "type": "module",
5
+ "types": "../../../dist/lib/cjs/obsidian/components/pointer-position-component.d.cts"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../dist/lib/cjs/obsidian/popovers/field-popover.cjs",
3
+ "module": "../../../dist/lib/esm/obsidian/popovers/field-popover.mjs",
4
+ "type": "module",
5
+ "types": "../../../dist/lib/cjs/obsidian/popovers/field-popover.d.cts"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../dist/lib/cjs/obsidian/popovers/index.cjs",
3
+ "module": "../../../dist/lib/esm/obsidian/popovers/index.mjs",
4
+ "type": "module",
5
+ "types": "../../../dist/lib/cjs/obsidian/popovers/index.d.cts"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../dist/lib/cjs/obsidian/popovers/index.cjs",
3
+ "module": "../../dist/lib/esm/obsidian/popovers/index.mjs",
4
+ "type": "module",
5
+ "types": "../../dist/lib/cjs/obsidian/popovers/index.d.cts"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../dist/lib/cjs/obsidian/popovers/popover.cjs",
3
+ "module": "../../../dist/lib/esm/obsidian/popovers/popover.mjs",
4
+ "type": "module",
5
+ "types": "../../../dist/lib/cjs/obsidian/popovers/popover.d.cts"
6
+ }