@foldkit/devtools 0.166.0-canary.8c70ed904b29 → 0.166.0-canary.f86318781a4b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/overlay-styles.d.ts +1 -1
- package/dist/overlay-styles.d.ts.map +1 -1
- package/dist/overlay-styles.js +47 -0
- package/dist/overlay.d.ts +21 -0
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +261 -95
- package/package.json +6 -6
package/dist/overlay-styles.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const overlayStyles = ":host {\n /* The host spans the viewport so it has real bounds to snapshot: it carries a\n `view-transition-name` (set in `overlay.ts`, see the note there) to stay\n out of an application's View Transitions, and a name on a zero-size element\n captures nothing. The box itself is inert; the panels inside opt back into\n hit-testing through `.fixed`. */\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: 2147483647;\n\n --dt-bg: #1e1e2e;\n --dt-surface-selected: #282839;\n --dt-border: #45475a;\n --dt-text: #cdd6f4;\n --dt-text-muted: #9399b2;\n --dt-accent: #cba6f7;\n --dt-live: #a6e3a1;\n --dt-paused: #fab387;\n --dt-json-string: #a6e3a1;\n --dt-json-number: #89b4fa;\n --dt-json-boolean: #fab387;\n --dt-json-null: #9399b2;\n --dt-json-key: #89dceb;\n --dt-json-tag: #cba6f7;\n --dt-json-preview: #9399b2;\n --dt-json-arrow: #9399b2;\n --dt-tree-hover: #313244;\n --dt-diff-changed: #74c7ec;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\nbutton {\n font: inherit;\n color: inherit;\n}\nul {\n list-style: none;\n}\n\n/* The host is `pointer-events: none` so its viewport-spanning box cannot\n swallow clicks meant for the application, and everything the shadow root\n renders opts back in here. The boundary is the shadow root's children rather\n than any one panel class: content arrives by routes a class list does not\n cover, including the portal root `@foldkit/ui` prepends for anchored\n dropdowns, and a surface that misses the opt-in is silently unclickable.\n These wrappers are zero-height, so granting them hit-testing costs nothing;\n descendants that must stay transparent, like the listbox backdrop, set\n `pointer-events: none` on themselves. */\n:host > * {\n pointer-events: auto;\n}\n\n.fixed {\n position: fixed;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.flex {\n display: flex;\n}\n.contents {\n display: contents;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.inline-block {\n display: inline-block;\n}\n.gap-0\\.5 {\n gap: 2px;\n}\n.gap-1\\.5 {\n gap: 6px;\n}\n.gap-2 {\n gap: 8px;\n}\n.gap-3 {\n gap: 12px;\n}\n.gap-px {\n gap: 1px;\n}\n.px-1 {\n padding-left: 4px;\n padding-right: 4px;\n}\n.px-2 {\n padding-left: 8px;\n padding-right: 8px;\n}\n.px-2\\.5 {\n padding-left: 10px;\n padding-right: 10px;\n}\n.p-3 {\n padding: 12px;\n}\n.px-3 {\n padding-left: 12px;\n padding-right: 12px;\n}\n.py-0\\.5 {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pt-1 {\n padding-top: 4px;\n}\n.pl-1 {\n padding-left: 4px;\n}\n.py-1 {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.py-1\\.5 {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.py-2 {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.py-px {\n padding-top: 1px;\n padding-bottom: 1px;\n}\n.w-1\\.5 {\n width: 6px;\n}\n.h-1\\.5 {\n height: 6px;\n}\n.w-3 {\n width: 12px;\n}\n.w-5 {\n width: 20px;\n}\n.h-5 {\n height: 20px;\n}\n.w-14 {\n width: 56px;\n}\n.h-14 {\n height: 56px;\n}\n.min-w-0 {\n min-width: 0;\n}\n.min-w-5 {\n min-width: 20px;\n}\n.min-h-0 {\n min-height: 0;\n}\n/* Badge positions \u2014 flush against side edge */\n.dt-pos-br {\n bottom: 16px;\n right: 0;\n border-radius: 6px 0 0 6px;\n}\n.dt-pos-bl {\n bottom: 16px;\n left: 0;\n border-radius: 0 6px 6px 0;\n}\n.dt-pos-tr {\n top: 16px;\n right: 0;\n border-radius: 6px 0 0 6px;\n}\n.dt-pos-tl {\n top: 16px;\n left: 0;\n border-radius: 0 6px 6px 0;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overscroll-none {\n overscroll-behavior: none;\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.rounded {\n border-radius: 4px;\n}\n.rounded-lg {\n border-radius: 8px;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.border {\n border-width: 1px;\n border-style: solid;\n border-color: var(--dt-border);\n}\n.border-b {\n border-bottom: 1px solid var(--dt-border);\n}\n.border-t {\n border-top: 1px solid var(--dt-border);\n}\n.border-r {\n border-right: 1px solid var(--dt-border);\n}\n.border-l {\n border-left: 1px solid var(--dt-border);\n}\n.border-none {\n border: none;\n}\n.selected {\n background-color: var(--dt-surface-selected);\n}\n.dt-row:hover:not(.selected) {\n background-color: var(--dt-tree-hover);\n}\n.dt-header-button:hover {\n color: var(--dt-text);\n}\n.dt-resume-button:hover {\n opacity: 0.7;\n}\n.dt-scroll-pill {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-shrink: 0;\n padding: 4px 12px;\n background-color: var(--dt-surface-selected);\n border: none;\n border-bottom: 1px solid var(--dt-border);\n color: var(--dt-accent);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n cursor: pointer;\n}\n.dt-scroll-pill-icon {\n width: 12px;\n height: 12px;\n}\n.dt-scroll-pill-text {\n margin-top: 1px;\n}\n.dt-scroll-pill:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-scroll-pill:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-filter-wrapper {\n position: relative;\n flex-shrink: 0;\n border-bottom: 1px solid var(--dt-border);\n}\n.dt-filter-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background: transparent;\n border: none;\n color: var(--dt-text-muted);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n}\n.dt-filter-button:hover {\n color: var(--dt-text);\n background-color: var(--dt-tree-hover);\n}\n.dt-filter-button:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-filter-button[data-open] {\n color: var(--dt-text);\n background-color: var(--dt-surface-selected);\n}\n.dt-filter-button[data-open]:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-filter-button[data-open] .json-arrow {\n transform: rotate(180deg);\n}\n.dt-filter-items {\n position: absolute;\n width: var(--button-width);\n background-color: var(--dt-bg);\n border-top: 1px solid var(--dt-border);\n border-bottom: 1px solid var(--dt-border);\n z-index: 100000;\n max-height: 200px;\n overflow-y: auto;\n outline: none;\n}\n.dt-filter-item {\n padding: 6px 12px;\n color: var(--dt-text-muted);\n cursor: pointer;\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n border-bottom: 1px solid var(--dt-border);\n}\n.dt-filter-item:last-child {\n border-bottom: none;\n}\n.dt-filter-item[data-active] {\n background-color: var(--dt-tree-hover);\n color: var(--dt-text);\n}\n.dt-filter-item[data-selected] {\n color: var(--dt-accent);\n}\n.dt-filter-check {\n width: 12px;\n height: 12px;\n visibility: hidden;\n}\n.dt-filter-item[data-selected] .dt-filter-check {\n visibility: visible;\n color: var(--dt-accent);\n}\n.dt-filter-backdrop {\n position: fixed;\n inset: 0;\n pointer-events: none;\n}\n.dt-settings-button {\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n margin: -8px 0 -8px -12px;\n padding: 0 12px;\n background: transparent;\n border: none;\n border-right: 1px solid var(--dt-border);\n color: var(--dt-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n}\n.dt-settings-button:hover {\n color: var(--dt-text);\n background-color: var(--dt-tree-hover);\n}\n.dt-settings-button:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-settings-button-active {\n color: var(--dt-accent);\n background-color: var(--dt-surface-selected);\n}\n.dt-settings-button-active:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-settings-icon {\n width: 14px;\n height: 14px;\n}\n.dt-settings-section-title {\n padding: 10px 12px 4px;\n color: var(--dt-text-muted);\n font-size: 10px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.dt-settings-row {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 8px 12px;\n}\n.dt-settings-row-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n.dt-settings-row-label {\n color: var(--dt-text);\n font-size: 13px;\n cursor: pointer;\n}\n.dt-settings-row-description {\n color: var(--dt-text-muted);\n font-size: 10px;\n}\n.dt-switch {\n position: relative;\n width: 36px;\n height: 20px;\n border-radius: 9999px;\n background-color: var(--dt-border);\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms ease,\n filter 100ms ease;\n}\n.dt-switch:hover {\n filter: brightness(1.2);\n}\n.dt-switch:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: 2px;\n}\n.dt-switch[data-checked] {\n background-color: var(--dt-accent);\n}\n.dt-switch-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 9999px;\n background-color: var(--dt-text-muted);\n transition:\n transform 100ms ease,\n background-color 100ms ease;\n}\n.dt-switch[data-checked] .dt-switch-thumb {\n transform: translateX(16px);\n background-color: var(--dt-bg);\n}\n.dt-tab-button {\n position: relative;\n background: transparent;\n border: none;\n border-right: 1px solid var(--dt-border);\n outline: none;\n flex: 1;\n}\n.dt-tab-button:last-child {\n border-right: none;\n}\n.dt-tab-active {\n background-color: var(--dt-surface-selected);\n}\n.dt-tab-button:not(.dt-tab-active):hover {\n color: var(--dt-text);\n background-color: rgba(49, 50, 68, 0.3);\n}\n.font-sans {\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n}\n.font-mono {\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-semibold {\n font-weight: 600;\n}\n.text-xs {\n font-size: 12px;\n}\n.text-2xs {\n font-size: 10px;\n}\n.text-sm {\n font-size: 11px;\n}\n.text-base {\n font-size: 13px;\n}\n.text-md {\n font-size: 15px;\n}\n.text-lg {\n font-size: 20px;\n}\n.text-xl {\n font-size: 26px;\n}\n.italic {\n font-style: italic;\n}\n.text-right {\n text-align: right;\n}\n.tracking-wide {\n letter-spacing: 0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-snug {\n line-height: 1.35;\n}\n.bg-dt-bg {\n background-color: var(--dt-bg);\n}\n.bg-dt-live {\n background-color: var(--dt-live);\n}\n.bg-transparent {\n background-color: transparent;\n}\n.text-dt {\n color: var(--dt-text);\n}\n.text-dt-bg {\n color: var(--dt-bg);\n}\n.text-dt-muted {\n color: var(--dt-text-muted);\n}\n.text-dt-accent {\n color: var(--dt-accent);\n}\n.text-dt-live {\n color: var(--dt-live);\n}\n.text-dt-paused {\n color: var(--dt-paused);\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.outline-none {\n outline: none;\n}\n.transition-colors {\n transition-property: color, background-color, border-color;\n transition-duration: 100ms;\n transition-timing-function: ease;\n}\n\n/* Panel */\n.dt-panel {\n width: 360px;\n height: 480px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n z-index: 99998;\n}\n/* Panel positions */\n.dt-panel-br {\n bottom: 16px;\n right: 28px;\n}\n.dt-panel-bl {\n bottom: 16px;\n left: 28px;\n}\n.dt-panel-tr {\n top: 16px;\n right: 28px;\n}\n.dt-panel-tl {\n top: 16px;\n left: 28px;\n}\n.dt-panel-wide {\n width: 720px;\n}\n.dt-message-pane {\n width: 320px;\n flex-shrink: 0;\n}\n.dt-badge {\n z-index: 99999;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.3);\n transition: background-color 150ms ease;\n border: 1px solid var(--dt-border);\n}\n.dt-badge-accent:hover {\n background-color: #252538;\n}\n.dt-badge-paused {\n background-color: var(--dt-paused);\n color: var(--dt-bg);\n border: none;\n}\n.dt-badge-paused:hover {\n background-color: #e0a070;\n}\n.dt-badge.dt-pos-br,\n.dt-badge.dt-pos-tr {\n border-right: none;\n}\n.dt-badge.dt-pos-bl,\n.dt-badge.dt-pos-tl {\n border-left: none;\n}\n\n/* JSON tree */\n.tree-row {\n position: relative;\n white-space: nowrap;\n line-height: 18px;\n padding-right: 8px;\n}\n.tree-row-expandable:hover {\n background-color: var(--dt-tree-hover);\n}\n.inspector-tree {\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n}\n.json-key {\n color: var(--dt-json-key);\n}\n.json-string {\n color: var(--dt-json-string);\n}\n.json-number {\n color: var(--dt-json-number);\n}\n.json-boolean {\n color: var(--dt-json-boolean);\n}\n.json-null {\n color: var(--dt-json-null);\n}\n.json-tag {\n color: var(--dt-json-tag);\n margin-right: 4px;\n}\n.json-preview {\n color: var(--dt-json-preview);\n}\n.json-arrow {\n color: var(--dt-json-arrow);\n width: 10px;\n height: 10px;\n user-select: none;\n}\n\n/* Diff */\n.diff-changed {\n background-color: rgba(116, 199, 236, 0.06);\n}\n.diff-dot {\n position: absolute;\n left: 3px;\n width: 5px;\n height: 5px;\n border-radius: 9999px;\n background-color: var(--dt-diff-changed);\n}\n.diff-dot-inline {\n width: 5px;\n height: 5px;\n border-radius: 9999px;\n background-color: var(--dt-diff-changed);\n flex-shrink: 0;\n}\n.dot-column {\n width: 5px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.pause-column {\n width: 8px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dt-pause-icon {\n width: 8px;\n height: 8px;\n color: var(--dt-paused);\n}\n\n/* Interaction blocker \u2014 covers the app while time-travelling */\n.dt-interaction-blocker {\n position: fixed;\n inset: 0;\n z-index: 99997;\n cursor: not-allowed;\n}\n\n/* Footer */\n.dt-footer {\n background-color: var(--dt-bg);\n height: 33px;\n}\n\n/* Scrubber */\n.dt-scrubber-control {\n position: relative;\n height: 16px;\n width: 100%;\n padding: 0 7px;\n display: flex;\n align-items: center;\n}\n.dt-scrubber-track {\n width: 100%;\n height: 4px;\n background-color: var(--dt-border);\n border-radius: 9999px;\n cursor: pointer;\n}\n.dt-scrubber-track[data-disabled] {\n cursor: not-allowed;\n}\n.dt-scrubber-fill {\n height: 100%;\n background-color: var(--dt-accent);\n border-radius: 9999px;\n}\n.dt-scrubber-thumb {\n width: 14px;\n height: 14px;\n border-radius: 9999px;\n background-color: var(--dt-accent);\n border: 2px solid var(--dt-bg);\n cursor: grab;\n outline: none;\n top: 50%;\n margin-top: -7px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n}\n.dt-scrubber-thumb:focus-visible {\n outline: 2px solid var(--dt-text);\n outline-offset: 2px;\n}\n.dt-scrubber-thumb[data-dragging] {\n cursor: grabbing;\n}\n.dt-scrubber-position {\n width: 72px;\n padding-left: 12px;\n border-left: 1px solid var(--dt-border);\n align-self: stretch;\n margin-top: -8px;\n margin-bottom: -8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Mobile */\n@media (max-width: 767px) {\n .dt-panel {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n border-radius: 0;\n border: none;\n }\n .dt-panel-wide {\n width: 100%;\n }\n .dt-content {\n flex-direction: column;\n }\n .dt-message-pane {\n width: 100%;\n max-height: 40%;\n border-bottom: 1px solid var(--dt-border);\n }\n .message-list > :last-child {\n border-bottom: none;\n }\n .dt-inspector-pane {\n border-left: none;\n }\n .dt-badge.dt-pos-br,\n .dt-badge.dt-pos-bl {\n bottom: 44px;\n }\n}\n";
|
|
1
|
+
export declare const overlayStyles = ":host {\n /* The host spans the viewport so it has real bounds to snapshot: it carries a\n `view-transition-name` (set in `overlay.ts`, see the note there) to stay\n out of an application's View Transitions, and a name on a zero-size element\n captures nothing. The box itself is inert; the panels inside opt back into\n hit-testing through `.fixed`. */\n position: fixed;\n inset: 0;\n pointer-events: none;\n z-index: 2147483647;\n\n --dt-bg: #1e1e2e;\n --dt-surface-selected: #282839;\n --dt-border: #45475a;\n --dt-text: #cdd6f4;\n --dt-text-muted: #9399b2;\n --dt-accent: #cba6f7;\n --dt-live: #a6e3a1;\n --dt-paused: #fab387;\n --dt-json-string: #a6e3a1;\n --dt-json-number: #89b4fa;\n --dt-json-boolean: #fab387;\n --dt-json-null: #9399b2;\n --dt-json-key: #89dceb;\n --dt-json-tag: #cba6f7;\n --dt-json-preview: #9399b2;\n --dt-json-arrow: #9399b2;\n --dt-tree-hover: #313244;\n --dt-diff-changed: #74c7ec;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\nbutton {\n font: inherit;\n color: inherit;\n}\nul {\n list-style: none;\n}\n\n/* The host is `pointer-events: none` so its viewport-spanning box cannot\n swallow clicks meant for the application, and everything the shadow root\n renders opts back in here. The boundary is the shadow root's children rather\n than any one panel class: content arrives by routes a class list does not\n cover, including the portal root `@foldkit/ui` prepends for anchored\n dropdowns, and a surface that misses the opt-in is silently unclickable.\n These wrappers are zero-height, so granting them hit-testing costs nothing;\n descendants that must stay transparent, like the listbox backdrop, set\n `pointer-events: none` on themselves. */\n:host > * {\n pointer-events: auto;\n}\n\n.fixed {\n position: fixed;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.flex {\n display: flex;\n}\n.contents {\n display: contents;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.inline-block {\n display: inline-block;\n}\n.gap-0\\.5 {\n gap: 2px;\n}\n.gap-1\\.5 {\n gap: 6px;\n}\n.gap-2 {\n gap: 8px;\n}\n.gap-3 {\n gap: 12px;\n}\n.gap-px {\n gap: 1px;\n}\n.px-1 {\n padding-left: 4px;\n padding-right: 4px;\n}\n.px-2 {\n padding-left: 8px;\n padding-right: 8px;\n}\n.px-2\\.5 {\n padding-left: 10px;\n padding-right: 10px;\n}\n.p-3 {\n padding: 12px;\n}\n.px-3 {\n padding-left: 12px;\n padding-right: 12px;\n}\n.py-0\\.5 {\n padding-top: 2px;\n padding-bottom: 2px;\n}\n.pt-1 {\n padding-top: 4px;\n}\n.pl-1 {\n padding-left: 4px;\n}\n.py-1 {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.py-1\\.5 {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.py-2 {\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.py-px {\n padding-top: 1px;\n padding-bottom: 1px;\n}\n.w-1\\.5 {\n width: 6px;\n}\n.h-1\\.5 {\n height: 6px;\n}\n.w-3 {\n width: 12px;\n}\n.w-5 {\n width: 20px;\n}\n.h-5 {\n height: 20px;\n}\n.w-14 {\n width: 56px;\n}\n.h-14 {\n height: 56px;\n}\n.min-w-0 {\n min-width: 0;\n}\n.min-w-5 {\n min-width: 20px;\n}\n.min-h-0 {\n min-height: 0;\n}\n/* Badge positions \u2014 flush against side edge */\n.dt-pos-br {\n bottom: 16px;\n right: 0;\n border-radius: 6px 0 0 6px;\n}\n.dt-pos-bl {\n bottom: 16px;\n left: 0;\n border-radius: 0 6px 6px 0;\n}\n.dt-pos-tr {\n top: 16px;\n right: 0;\n border-radius: 6px 0 0 6px;\n}\n.dt-pos-tl {\n top: 16px;\n left: 0;\n border-radius: 0 6px 6px 0;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overscroll-none {\n overscroll-behavior: none;\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.rounded {\n border-radius: 4px;\n}\n.rounded-lg {\n border-radius: 8px;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.border {\n border-width: 1px;\n border-style: solid;\n border-color: var(--dt-border);\n}\n.border-b {\n border-bottom: 1px solid var(--dt-border);\n}\n.border-t {\n border-top: 1px solid var(--dt-border);\n}\n.border-r {\n border-right: 1px solid var(--dt-border);\n}\n.border-l {\n border-left: 1px solid var(--dt-border);\n}\n.border-none {\n border: none;\n}\n.selected {\n background-color: var(--dt-surface-selected);\n}\n.dt-row:hover:not(.selected) {\n background-color: var(--dt-tree-hover);\n}\n.dt-header-button:hover {\n color: var(--dt-text);\n}\n.dt-copy-control {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.dt-copy-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 6px;\n background: transparent;\n border: none;\n color: var(--dt-text-muted);\n cursor: pointer;\n border-radius: 4px;\n transition: color 100ms ease;\n}\n.dt-copy-button:hover {\n color: var(--dt-text);\n}\n.dt-copy-button[aria-disabled='true'] {\n cursor: default;\n}\n.dt-copy-button.dt-copy-success,\n.dt-copy-button.dt-copy-success:hover {\n color: var(--dt-live);\n}\n.dt-copy-button:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-copy-icon {\n width: 12px;\n height: 12px;\n}\n.dt-resume-button:hover {\n opacity: 0.7;\n}\n.dt-scroll-pill {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n flex-shrink: 0;\n padding: 4px 12px;\n background-color: var(--dt-surface-selected);\n border: none;\n border-bottom: 1px solid var(--dt-border);\n color: var(--dt-accent);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n cursor: pointer;\n}\n.dt-scroll-pill-icon {\n width: 12px;\n height: 12px;\n}\n.dt-scroll-pill-text {\n margin-top: 1px;\n}\n.dt-scroll-pill:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-scroll-pill:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-filter-wrapper {\n position: relative;\n flex-shrink: 0;\n border-bottom: 1px solid var(--dt-border);\n}\n.dt-filter-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background: transparent;\n border: none;\n color: var(--dt-text-muted);\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n}\n.dt-filter-button:hover {\n color: var(--dt-text);\n background-color: var(--dt-tree-hover);\n}\n.dt-filter-button:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-filter-button[data-open] {\n color: var(--dt-text);\n background-color: var(--dt-surface-selected);\n}\n.dt-filter-button[data-open]:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-filter-button[data-open] .json-arrow {\n transform: rotate(180deg);\n}\n.dt-filter-items {\n position: absolute;\n width: var(--button-width);\n background-color: var(--dt-bg);\n border-top: 1px solid var(--dt-border);\n border-bottom: 1px solid var(--dt-border);\n z-index: 100000;\n max-height: 200px;\n overflow-y: auto;\n outline: none;\n}\n.dt-filter-item {\n padding: 6px 12px;\n color: var(--dt-text-muted);\n cursor: pointer;\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n font-size: 13px;\n border-bottom: 1px solid var(--dt-border);\n}\n.dt-filter-item:last-child {\n border-bottom: none;\n}\n.dt-filter-item[data-active] {\n background-color: var(--dt-tree-hover);\n color: var(--dt-text);\n}\n.dt-filter-item[data-selected] {\n color: var(--dt-accent);\n}\n.dt-filter-check {\n width: 12px;\n height: 12px;\n visibility: hidden;\n}\n.dt-filter-item[data-selected] .dt-filter-check {\n visibility: visible;\n color: var(--dt-accent);\n}\n.dt-filter-backdrop {\n position: fixed;\n inset: 0;\n pointer-events: none;\n}\n.dt-settings-button {\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n margin: -8px 0 -8px -12px;\n padding: 0 12px;\n background: transparent;\n border: none;\n border-right: 1px solid var(--dt-border);\n color: var(--dt-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n}\n.dt-settings-button:hover {\n color: var(--dt-text);\n background-color: var(--dt-tree-hover);\n}\n.dt-settings-button:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: -1px;\n}\n.dt-settings-button-active {\n color: var(--dt-accent);\n background-color: var(--dt-surface-selected);\n}\n.dt-settings-button-active:hover {\n background-color: var(--dt-tree-hover);\n}\n.dt-settings-icon {\n width: 14px;\n height: 14px;\n}\n.dt-settings-section-title {\n padding: 10px 12px 4px;\n color: var(--dt-text-muted);\n font-size: 10px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n.dt-settings-row {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 8px 12px;\n}\n.dt-settings-row-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n.dt-settings-row-label {\n color: var(--dt-text);\n font-size: 13px;\n cursor: pointer;\n}\n.dt-settings-row-description {\n color: var(--dt-text-muted);\n font-size: 10px;\n}\n.dt-switch {\n position: relative;\n width: 36px;\n height: 20px;\n border-radius: 9999px;\n background-color: var(--dt-border);\n cursor: pointer;\n flex-shrink: 0;\n transition:\n background-color 100ms ease,\n filter 100ms ease;\n}\n.dt-switch:hover {\n filter: brightness(1.2);\n}\n.dt-switch:focus-visible {\n outline: 1px solid var(--dt-accent);\n outline-offset: 2px;\n}\n.dt-switch[data-checked] {\n background-color: var(--dt-accent);\n}\n.dt-switch-thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 9999px;\n background-color: var(--dt-text-muted);\n transition:\n transform 100ms ease,\n background-color 100ms ease;\n}\n.dt-switch[data-checked] .dt-switch-thumb {\n transform: translateX(16px);\n background-color: var(--dt-bg);\n}\n.dt-tab-button {\n position: relative;\n background: transparent;\n border: none;\n border-right: 1px solid var(--dt-border);\n outline: none;\n flex: 1;\n}\n.dt-tab-button:last-child {\n border-right: none;\n}\n.dt-tab-active {\n background-color: var(--dt-surface-selected);\n}\n.dt-tab-button:not(.dt-tab-active):hover {\n color: var(--dt-text);\n background-color: rgba(49, 50, 68, 0.3);\n}\n.font-sans {\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n sans-serif;\n}\n.font-mono {\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-semibold {\n font-weight: 600;\n}\n.text-xs {\n font-size: 12px;\n}\n.text-2xs {\n font-size: 10px;\n}\n.text-sm {\n font-size: 11px;\n}\n.text-base {\n font-size: 13px;\n}\n.text-md {\n font-size: 15px;\n}\n.text-lg {\n font-size: 20px;\n}\n.text-xl {\n font-size: 26px;\n}\n.italic {\n font-style: italic;\n}\n.text-right {\n text-align: right;\n}\n.tracking-wide {\n letter-spacing: 0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-snug {\n line-height: 1.35;\n}\n.bg-dt-bg {\n background-color: var(--dt-bg);\n}\n.bg-dt-live {\n background-color: var(--dt-live);\n}\n.bg-transparent {\n background-color: transparent;\n}\n.text-dt {\n color: var(--dt-text);\n}\n.text-dt-bg {\n color: var(--dt-bg);\n}\n.text-dt-muted {\n color: var(--dt-text-muted);\n}\n.text-dt-accent {\n color: var(--dt-accent);\n}\n.text-dt-live {\n color: var(--dt-live);\n}\n.text-dt-paused {\n color: var(--dt-paused);\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.outline-none {\n outline: none;\n}\n.transition-colors {\n transition-property: color, background-color, border-color;\n transition-duration: 100ms;\n transition-timing-function: ease;\n}\n\n/* Panel */\n.dt-panel {\n width: 360px;\n height: 480px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n z-index: 99998;\n}\n/* Panel positions */\n.dt-panel-br {\n bottom: 16px;\n right: 28px;\n}\n.dt-panel-bl {\n bottom: 16px;\n left: 28px;\n}\n.dt-panel-tr {\n top: 16px;\n right: 28px;\n}\n.dt-panel-tl {\n top: 16px;\n left: 28px;\n}\n.dt-panel-wide {\n width: 720px;\n}\n.dt-message-pane {\n width: 320px;\n flex-shrink: 0;\n}\n.dt-badge {\n z-index: 99999;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.3);\n transition: background-color 150ms ease;\n border: 1px solid var(--dt-border);\n}\n.dt-badge-accent:hover {\n background-color: #252538;\n}\n.dt-badge-paused {\n background-color: var(--dt-paused);\n color: var(--dt-bg);\n border: none;\n}\n.dt-badge-paused:hover {\n background-color: #e0a070;\n}\n.dt-badge.dt-pos-br,\n.dt-badge.dt-pos-tr {\n border-right: none;\n}\n.dt-badge.dt-pos-bl,\n.dt-badge.dt-pos-tl {\n border-left: none;\n}\n\n/* JSON tree */\n.tree-row {\n position: relative;\n white-space: nowrap;\n line-height: 18px;\n padding-right: 8px;\n}\n.dt-payload-list .tree-row {\n align-items: flex-start;\n flex-wrap: wrap;\n min-width: 0;\n white-space: normal;\n}\n.dt-payload-list .tree-row span {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n.tree-row-expandable:hover {\n background-color: var(--dt-tree-hover);\n}\n.inspector-tree {\n font-family:\n ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;\n}\n.json-key {\n color: var(--dt-json-key);\n}\n.json-string {\n color: var(--dt-json-string);\n}\n.json-number {\n color: var(--dt-json-number);\n}\n.json-boolean {\n color: var(--dt-json-boolean);\n}\n.json-null {\n color: var(--dt-json-null);\n}\n.json-tag {\n color: var(--dt-json-tag);\n margin-right: 4px;\n}\n.json-preview {\n color: var(--dt-json-preview);\n}\n.json-arrow {\n color: var(--dt-json-arrow);\n width: 10px;\n height: 10px;\n user-select: none;\n}\n\n/* Diff */\n.diff-changed {\n background-color: rgba(116, 199, 236, 0.06);\n}\n.diff-dot {\n position: absolute;\n left: 3px;\n width: 5px;\n height: 5px;\n border-radius: 9999px;\n background-color: var(--dt-diff-changed);\n}\n.diff-dot-inline {\n width: 5px;\n height: 5px;\n border-radius: 9999px;\n background-color: var(--dt-diff-changed);\n flex-shrink: 0;\n}\n.dot-column {\n width: 5px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.pause-column {\n width: 8px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.dt-pause-icon {\n width: 8px;\n height: 8px;\n color: var(--dt-paused);\n}\n\n/* Interaction blocker \u2014 covers the app while time-travelling */\n.dt-interaction-blocker {\n position: fixed;\n inset: 0;\n z-index: 99997;\n cursor: not-allowed;\n}\n\n/* Footer */\n.dt-footer {\n background-color: var(--dt-bg);\n height: 33px;\n}\n\n/* Scrubber */\n.dt-scrubber-control {\n position: relative;\n height: 16px;\n width: 100%;\n padding: 0 7px;\n display: flex;\n align-items: center;\n}\n.dt-scrubber-track {\n width: 100%;\n height: 4px;\n background-color: var(--dt-border);\n border-radius: 9999px;\n cursor: pointer;\n}\n.dt-scrubber-track[data-disabled] {\n cursor: not-allowed;\n}\n.dt-scrubber-fill {\n height: 100%;\n background-color: var(--dt-accent);\n border-radius: 9999px;\n}\n.dt-scrubber-thumb {\n width: 14px;\n height: 14px;\n border-radius: 9999px;\n background-color: var(--dt-accent);\n border: 2px solid var(--dt-bg);\n cursor: grab;\n outline: none;\n top: 50%;\n margin-top: -7px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);\n}\n.dt-scrubber-thumb:focus-visible {\n outline: 2px solid var(--dt-text);\n outline-offset: 2px;\n}\n.dt-scrubber-thumb[data-dragging] {\n cursor: grabbing;\n}\n.dt-scrubber-position {\n width: 72px;\n padding-left: 12px;\n border-left: 1px solid var(--dt-border);\n align-self: stretch;\n margin-top: -8px;\n margin-bottom: -8px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Mobile */\n@media (max-width: 767px) {\n .dt-panel {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n border-radius: 0;\n border: none;\n }\n .dt-panel-wide {\n width: 100%;\n }\n .dt-content {\n flex-direction: column;\n }\n .dt-message-pane {\n width: 100%;\n max-height: 40%;\n border-bottom: 1px solid var(--dt-border);\n }\n .message-list > :last-child {\n border-bottom: none;\n }\n .dt-inspector-pane {\n border-left: none;\n }\n .dt-badge.dt-pos-br,\n .dt-badge.dt-pos-bl {\n bottom: 44px;\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=overlay-styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay-styles.d.ts","sourceRoot":"","sources":["../src/overlay-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"overlay-styles.d.ts","sourceRoot":"","sources":["../src/overlay-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,yuhBAq3BzB,CAAA"}
|
package/dist/overlay-styles.js
CHANGED
|
@@ -265,6 +265,43 @@ ul {
|
|
|
265
265
|
.dt-header-button:hover {
|
|
266
266
|
color: var(--dt-text);
|
|
267
267
|
}
|
|
268
|
+
.dt-copy-control {
|
|
269
|
+
display: inline-flex;
|
|
270
|
+
align-items: center;
|
|
271
|
+
justify-content: center;
|
|
272
|
+
}
|
|
273
|
+
.dt-copy-button {
|
|
274
|
+
display: flex;
|
|
275
|
+
align-items: center;
|
|
276
|
+
justify-content: center;
|
|
277
|
+
width: 24px;
|
|
278
|
+
height: 24px;
|
|
279
|
+
padding: 6px;
|
|
280
|
+
background: transparent;
|
|
281
|
+
border: none;
|
|
282
|
+
color: var(--dt-text-muted);
|
|
283
|
+
cursor: pointer;
|
|
284
|
+
border-radius: 4px;
|
|
285
|
+
transition: color 100ms ease;
|
|
286
|
+
}
|
|
287
|
+
.dt-copy-button:hover {
|
|
288
|
+
color: var(--dt-text);
|
|
289
|
+
}
|
|
290
|
+
.dt-copy-button[aria-disabled='true'] {
|
|
291
|
+
cursor: default;
|
|
292
|
+
}
|
|
293
|
+
.dt-copy-button.dt-copy-success,
|
|
294
|
+
.dt-copy-button.dt-copy-success:hover {
|
|
295
|
+
color: var(--dt-live);
|
|
296
|
+
}
|
|
297
|
+
.dt-copy-button:focus-visible {
|
|
298
|
+
outline: 1px solid var(--dt-accent);
|
|
299
|
+
outline-offset: -1px;
|
|
300
|
+
}
|
|
301
|
+
.dt-copy-icon {
|
|
302
|
+
width: 12px;
|
|
303
|
+
height: 12px;
|
|
304
|
+
}
|
|
268
305
|
.dt-resume-button:hover {
|
|
269
306
|
opacity: 0.7;
|
|
270
307
|
}
|
|
@@ -658,6 +695,16 @@ ul {
|
|
|
658
695
|
line-height: 18px;
|
|
659
696
|
padding-right: 8px;
|
|
660
697
|
}
|
|
698
|
+
.dt-payload-list .tree-row {
|
|
699
|
+
align-items: flex-start;
|
|
700
|
+
flex-wrap: wrap;
|
|
701
|
+
min-width: 0;
|
|
702
|
+
white-space: normal;
|
|
703
|
+
}
|
|
704
|
+
.dt-payload-list .tree-row span {
|
|
705
|
+
min-width: 0;
|
|
706
|
+
overflow-wrap: anywhere;
|
|
707
|
+
}
|
|
661
708
|
.tree-row-expandable:hover {
|
|
662
709
|
background-color: var(--dt-tree-hover);
|
|
663
710
|
}
|
package/dist/overlay.d.ts
CHANGED
|
@@ -69,6 +69,27 @@ export declare const Resume: Command.CommandDefinitionNoArgs<"Resume", Effect.Ef
|
|
|
69
69
|
export declare const Clear: Command.CommandDefinitionNoArgs<"Clear", Effect.Effect<{
|
|
70
70
|
readonly _tag: "CompletedClear";
|
|
71
71
|
}, never, StoreService>>;
|
|
72
|
+
export declare const CopyPayloadToClipboard: Command.CommandDefinitionWithArgs<"CopyPayloadToClipboard", {
|
|
73
|
+
targetId: Schema.String;
|
|
74
|
+
requestId: Schema.Number;
|
|
75
|
+
payload: Schema.Unknown;
|
|
76
|
+
}, Effect.Effect<{
|
|
77
|
+
readonly _tag: "SucceededCopyPayloadToClipboard";
|
|
78
|
+
readonly targetId: string;
|
|
79
|
+
readonly requestId: number;
|
|
80
|
+
} | {
|
|
81
|
+
readonly _tag: "FailedCopyPayloadToClipboard";
|
|
82
|
+
readonly targetId: string;
|
|
83
|
+
readonly requestId: number;
|
|
84
|
+
}, never, never>>;
|
|
85
|
+
export declare const WaitBeforeHidingCopyIndicator: Command.CommandDefinitionWithArgs<"WaitBeforeHidingCopyIndicator", {
|
|
86
|
+
targetId: Schema.String;
|
|
87
|
+
requestId: Schema.Number;
|
|
88
|
+
}, Effect.Effect<{
|
|
89
|
+
readonly _tag: "CompletedWaitBeforeHidingCopyIndicator";
|
|
90
|
+
readonly targetId: string;
|
|
91
|
+
readonly requestId: number;
|
|
92
|
+
}, never, never>>;
|
|
72
93
|
export declare const ScrollToTop: Command.CommandDefinitionNoArgs<"ScrollToTop", Effect.Effect<{
|
|
73
94
|
readonly _tag: "CompletedScrollToTop";
|
|
74
95
|
}, never, ShadowRootService>>;
|
package/dist/overlay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,MAAM,
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,MAAM,EAGN,OAAO,EAGP,MAAM,EAKN,MAAM,EAGN,eAAe,EAEhB,MAAM,QAAQ,CAAA;AAGf,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EAGlB,KAAK,WAAW,EAChB,KAAK,UAAU,EAKhB,MAAM,uBAAuB,CAAA;AAU9B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;AA6ZrE,cAAM,YAAa,SAAQ,iBAE1B;CAAG;;AAEJ,cAAM,iBAAkB,SAAQ,sBAGC;CAAG;AAEpC,eAAO,MAAM,UAAU;;iBAGrB,CAAA;AAEF,eAAO,MAAM,YAAY;;iBAGvB,CAAA;AAoCF,eAAO,MAAM,oBAAoB;;;;;iBAkB/B,CAAA;AAuBF,eAAO,MAAM,gBAAgB;;;;;;;;wBAS3B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;wBAIvB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;wBAOxB,CAAA;AAEF,eAAO,MAAM,MAAM;;wBAOjB,CAAA;AAEF,eAAO,MAAM,KAAK;;wBAOhB,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;iBAyBjC,CAAA;AAIF,eAAO,MAAM,6BAA6B;;;;;;;iBAezC,CAAA;AAED,eAAO,MAAM,WAAW;;6BAUtB,CAAA;AAwpEF,eAAO,MAAM,aAAa,UACjB,aAAa,YACV,gBAAgB,QACpB,YAAY,eACL,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,6DAqFhC,CAAA"}
|
package/dist/overlay.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { brandViewResult as __foldkitBrandViewResult } from 'foldkit/brand'
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
|
-
import { Array, Context, Effect, Function, HashSet, Match, Number, Option, Order, Predicate, Queue, Record, Schema, Stream, String, SubscriptionRef, pipe, } from 'effect';
|
|
3
|
+
import { Array, Context, Effect, Function, HashMap, HashSet, Match, Number, Option, Order, Predicate, Queue, Record, Schema, Stream, String, SubscriptionRef, pipe, } from 'effect';
|
|
4
4
|
import { KeyValueStore } from 'effect/persistence';
|
|
5
5
|
import { Update } from 'foldkit';
|
|
6
6
|
import * as Command from 'foldkit/command';
|
|
@@ -40,6 +40,10 @@ const DisplayEntry = Schema.Struct({
|
|
|
40
40
|
timestamp: Schema.Number,
|
|
41
41
|
isModelChanged: Schema.Boolean,
|
|
42
42
|
});
|
|
43
|
+
const CopyState = defineTaggedUnion({
|
|
44
|
+
Copying: { requestId: Schema.Number },
|
|
45
|
+
Copied: { requestId: Schema.Number },
|
|
46
|
+
});
|
|
43
47
|
const INSPECTOR_TABS_ID = 'dt-inspector';
|
|
44
48
|
const SUBMODEL_FILTER_ID = 'dt-submodel-filter';
|
|
45
49
|
const FLATTEN_SWITCH_ID = 'dt-flatten-switch';
|
|
@@ -82,6 +86,8 @@ const Model = Schema.Struct({
|
|
|
82
86
|
expandedPaths: Schema.HashSet(Schema.String),
|
|
83
87
|
changedPaths: Schema.HashSet(Schema.String),
|
|
84
88
|
affectedPaths: Schema.HashSet(Schema.String),
|
|
89
|
+
copyStates: Schema.HashMap(Schema.String, CopyState),
|
|
90
|
+
nextCopyRequestId: Schema.Number,
|
|
85
91
|
maybePendingScrubIndex: Schema.Option(Schema.Number),
|
|
86
92
|
inspectorTabs: Tabs.Model,
|
|
87
93
|
activeInspectorTab: InspectorTab,
|
|
@@ -133,6 +139,19 @@ const Message = defineMessageUnion({
|
|
|
133
139
|
affectedPaths: Schema.HashSet(Schema.String),
|
|
134
140
|
},
|
|
135
141
|
ToggledTreeNode: { path: Schema.String },
|
|
142
|
+
ClickedCopyPayload: { targetId: Schema.String, payload: Schema.Unknown },
|
|
143
|
+
SucceededCopyPayloadToClipboard: {
|
|
144
|
+
targetId: Schema.String,
|
|
145
|
+
requestId: Schema.Number,
|
|
146
|
+
},
|
|
147
|
+
FailedCopyPayloadToClipboard: {
|
|
148
|
+
targetId: Schema.String,
|
|
149
|
+
requestId: Schema.Number,
|
|
150
|
+
},
|
|
151
|
+
CompletedWaitBeforeHidingCopyIndicator: {
|
|
152
|
+
targetId: Schema.String,
|
|
153
|
+
requestId: Schema.Number,
|
|
154
|
+
},
|
|
136
155
|
TickedScrubFrame: {},
|
|
137
156
|
GotInspectorTabsMessage: { message: Tabs.Message },
|
|
138
157
|
ReceivedStoreUpdate: {
|
|
@@ -154,6 +173,7 @@ const MOBILE_BREAKPOINT = 767;
|
|
|
154
173
|
const MOBILE_BREAKPOINT_QUERY = `(max-width: ${MOBILE_BREAKPOINT}px)`;
|
|
155
174
|
const TREE_INDENT_PX = 12;
|
|
156
175
|
const MAX_PREVIEW_KEYS = 3;
|
|
176
|
+
const JSON_INDENT = 2;
|
|
157
177
|
const ALL_MESSAGES_VALUE = '';
|
|
158
178
|
const DEVTOOLS_STORAGE_KEY = 'foldkit-devtools';
|
|
159
179
|
const NO_COMMANDS = [];
|
|
@@ -213,6 +233,20 @@ const objectPreview = (value) => __foldkitBrandViewResult((pipe(value, Record.ke
|
|
|
213
233
|
},
|
|
214
234
|
}))), "@foldkit/devtools/overlay.js#objectPreview");
|
|
215
235
|
const collapsedPreview = (value) => __foldkitBrandViewResult((Match.value(value).pipe(Match.when(globalThis.Array.isArray, array => __foldkitBrandViewResult((`(${array.length})`), "@foldkit/devtools/overlay.js#anonymous~11")), Match.when(Predicate.isObject, objectPreview), Match.orElse(() => __foldkitBrandViewResult((''), "@foldkit/devtools/overlay.js#anonymous~12")))), "@foldkit/devtools/overlay.js#collapsedPreview");
|
|
236
|
+
const serializePayload = (value) => __foldkitBrandViewResult((Effect.try({
|
|
237
|
+
try: () => {
|
|
238
|
+
const serialized = JSON.stringify(toInspectableValue(value), null, JSON_INDENT);
|
|
239
|
+
if (serialized === undefined) {
|
|
240
|
+
throw new Error('Payload cannot be represented as JSON');
|
|
241
|
+
}
|
|
242
|
+
return __foldkitBrandViewResult((serialized), "@foldkit/devtools/overlay.js#try");
|
|
243
|
+
},
|
|
244
|
+
catch: () => __foldkitBrandViewResult((new Error('Failed to serialize payload')), "@foldkit/devtools/overlay.js#catch"),
|
|
245
|
+
})), "@foldkit/devtools/overlay.js#serializePayload");
|
|
246
|
+
const taggedPayload = (name, args) => __foldkitBrandViewResult((Option.match(args, {
|
|
247
|
+
onNone: () => (__foldkitBrandViewResult(({ _tag: name }), "@foldkit/devtools/overlay.js#onNone")),
|
|
248
|
+
onSome: argsValue => (__foldkitBrandViewResult(({ ...argsValue, _tag: name }), "@foldkit/devtools/overlay.js#onSome")),
|
|
249
|
+
})), "@foldkit/devtools/overlay.js#taggedPayload");
|
|
216
250
|
const foldInspectorTabsOutMessage = Tabs.OutMessage.match({
|
|
217
251
|
Selected: ({ value }) => __foldkitBrandViewResult((model => (__foldkitBrandViewResult(({
|
|
218
252
|
model: modifyFields(model, { activeInspectorTab: () => __foldkitBrandViewResult((value), "@foldkit/devtools/overlay.js#activeInspectorTab") }),
|
|
@@ -355,6 +389,34 @@ export const Clear = Command.define('Clear', {
|
|
|
355
389
|
return __foldkitBrandViewResult((Message.CompletedClear()), "@foldkit/devtools/overlay.js#anonymous~25");
|
|
356
390
|
}),
|
|
357
391
|
});
|
|
392
|
+
export const CopyPayloadToClipboard = Command.define('CopyPayloadToClipboard', {
|
|
393
|
+
args: {
|
|
394
|
+
targetId: Schema.String,
|
|
395
|
+
requestId: Schema.Number,
|
|
396
|
+
payload: Schema.Unknown,
|
|
397
|
+
},
|
|
398
|
+
messages: [
|
|
399
|
+
Message.SucceededCopyPayloadToClipboard,
|
|
400
|
+
Message.FailedCopyPayloadToClipboard,
|
|
401
|
+
],
|
|
402
|
+
execute: ({ targetId, requestId, payload }) => __foldkitBrandViewResult((Effect.gen(function* () {
|
|
403
|
+
const text = yield* serializePayload(payload);
|
|
404
|
+
yield* Effect.tryPromise({
|
|
405
|
+
try: () => __foldkitBrandViewResult((navigator.clipboard.writeText(text)), "@foldkit/devtools/overlay.js#try~2"),
|
|
406
|
+
catch: () => __foldkitBrandViewResult((new Error('Failed to copy payload to clipboard')), "@foldkit/devtools/overlay.js#catch~2"),
|
|
407
|
+
});
|
|
408
|
+
return __foldkitBrandViewResult((Message.SucceededCopyPayloadToClipboard({ targetId, requestId })), "@foldkit/devtools/overlay.js#anonymous~26");
|
|
409
|
+
}).pipe(Effect.catch(() => __foldkitBrandViewResult((Effect.succeed(Message.FailedCopyPayloadToClipboard({ targetId, requestId }))), "@foldkit/devtools/overlay.js#anonymous~27")))), "@foldkit/devtools/overlay.js#execute~4"),
|
|
410
|
+
});
|
|
411
|
+
const COPY_INDICATOR_DURATION = '1 second';
|
|
412
|
+
export const WaitBeforeHidingCopyIndicator = Command.define('WaitBeforeHidingCopyIndicator', {
|
|
413
|
+
args: { targetId: Schema.String, requestId: Schema.Number },
|
|
414
|
+
messages: [Message.CompletedWaitBeforeHidingCopyIndicator],
|
|
415
|
+
execute: ({ targetId, requestId }) => __foldkitBrandViewResult((Effect.sleep(COPY_INDICATOR_DURATION).pipe(Effect.as(Message.CompletedWaitBeforeHidingCopyIndicator({
|
|
416
|
+
targetId,
|
|
417
|
+
requestId,
|
|
418
|
+
})))), "@foldkit/devtools/overlay.js#execute~5"),
|
|
419
|
+
});
|
|
358
420
|
export const ScrollToTop = Command.define('ScrollToTop', {
|
|
359
421
|
messages: [Message.CompletedScrollToTop],
|
|
360
422
|
execute: Effect.gen(function* () {
|
|
@@ -363,7 +425,7 @@ export const ScrollToTop = Command.define('ScrollToTop', {
|
|
|
363
425
|
if (messageList instanceof HTMLElement) {
|
|
364
426
|
messageList.scrollTop = 0;
|
|
365
427
|
}
|
|
366
|
-
return __foldkitBrandViewResult((Message.CompletedScrollToTop()), "@foldkit/devtools/overlay.js#anonymous~
|
|
428
|
+
return __foldkitBrandViewResult((Message.CompletedScrollToTop()), "@foldkit/devtools/overlay.js#anonymous~28");
|
|
367
429
|
}),
|
|
368
430
|
});
|
|
369
431
|
const makeUpdate = (store, shadow, mode) => {
|
|
@@ -390,7 +452,7 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
390
452
|
},
|
|
391
453
|
ClickedSettingsToggle: () => (__foldkitBrandViewResult(({
|
|
392
454
|
model: modifyFields(model, {
|
|
393
|
-
screen: currentScreen => __foldkitBrandViewResult((Match.value(currentScreen).pipe(Match.withReturnType(), Match.when('Messages', () => __foldkitBrandViewResult(('Settings'), "@foldkit/devtools/overlay.js#anonymous~
|
|
455
|
+
screen: currentScreen => __foldkitBrandViewResult((Match.value(currentScreen).pipe(Match.withReturnType(), Match.when('Messages', () => __foldkitBrandViewResult(('Settings'), "@foldkit/devtools/overlay.js#anonymous~30")), Match.when('Settings', () => __foldkitBrandViewResult(('Messages'), "@foldkit/devtools/overlay.js#anonymous~31")), Match.exhaustive)), "@foldkit/devtools/overlay.js#screen"),
|
|
394
456
|
}),
|
|
395
457
|
}), "@foldkit/devtools/overlay.js#ClickedSettingsToggle")),
|
|
396
458
|
ToggledFlatten: ({ isFlattened }) => (__foldkitBrandViewResult(({
|
|
@@ -404,13 +466,13 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
404
466
|
ClickedRow: ({ index }) => __foldkitBrandViewResult((Match.value(mode).pipe(Match.withReturnType(), Match.when('TimeTravel', () => (__foldkitBrandViewResult(({
|
|
405
467
|
model,
|
|
406
468
|
commands: [jumpToAndInspect(index)],
|
|
407
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
469
|
+
}), "@foldkit/devtools/overlay.js#anonymous~32"))), Match.when('Inspect', () => (__foldkitBrandViewResult(({
|
|
408
470
|
model: modifyFields(model, {
|
|
409
471
|
selectedIndex: () => __foldkitBrandViewResult((index), "@foldkit/devtools/overlay.js#selectedIndex"),
|
|
410
472
|
isFollowingLatest: () => __foldkitBrandViewResult((false), "@foldkit/devtools/overlay.js#isFollowingLatest"),
|
|
411
473
|
}),
|
|
412
474
|
commands: [inspectState(index)],
|
|
413
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
475
|
+
}), "@foldkit/devtools/overlay.js#anonymous~33"))), Match.exhaustive)), "@foldkit/devtools/overlay.js#ClickedRow"),
|
|
414
476
|
ClickedResume: () => (__foldkitBrandViewResult(({
|
|
415
477
|
model: modifyFields(model, {
|
|
416
478
|
isFollowingTop: () => __foldkitBrandViewResult((true), "@foldkit/devtools/overlay.js#isFollowingTop"),
|
|
@@ -429,6 +491,7 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
429
491
|
expandedPaths: () => __foldkitBrandViewResult((HashSet.empty()), "@foldkit/devtools/overlay.js#expandedPaths~2"),
|
|
430
492
|
changedPaths: () => __foldkitBrandViewResult((HashSet.empty()), "@foldkit/devtools/overlay.js#changedPaths~2"),
|
|
431
493
|
affectedPaths: () => __foldkitBrandViewResult((HashSet.empty()), "@foldkit/devtools/overlay.js#affectedPaths~2"),
|
|
494
|
+
copyStates: () => __foldkitBrandViewResult((HashMap.empty()), "@foldkit/devtools/overlay.js#copyStates"),
|
|
432
495
|
}),
|
|
433
496
|
commands: [clear, inspectLatest, scrollToTop],
|
|
434
497
|
}), "@foldkit/devtools/overlay.js#ClickedClear")),
|
|
@@ -477,15 +540,28 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
477
540
|
: HashSet.add(paths, path)), "@foldkit/devtools/overlay.js#expandedPaths~4"),
|
|
478
541
|
}),
|
|
479
542
|
}), "@foldkit/devtools/overlay.js#ToggledTreeNode")),
|
|
543
|
+
ClickedCopyPayload: ({ targetId, payload }) => {
|
|
544
|
+
if (Option.isSome(HashMap.get(model.copyStates, targetId))) {
|
|
545
|
+
return __foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#ClickedCopyPayload");
|
|
546
|
+
}
|
|
547
|
+
const requestId = model.nextCopyRequestId;
|
|
548
|
+
return __foldkitBrandViewResult(({
|
|
549
|
+
model: modifyFields(model, {
|
|
550
|
+
copyStates: states => __foldkitBrandViewResult((HashMap.set(states, targetId, CopyState.Copying({ requestId }))), "@foldkit/devtools/overlay.js#copyStates~2"),
|
|
551
|
+
nextCopyRequestId: current => __foldkitBrandViewResult((current + 1), "@foldkit/devtools/overlay.js#nextCopyRequestId"),
|
|
552
|
+
}),
|
|
553
|
+
commands: [CopyPayloadToClipboard({ targetId, requestId, payload })],
|
|
554
|
+
}), "@foldkit/devtools/overlay.js#ClickedCopyPayload");
|
|
555
|
+
},
|
|
480
556
|
ReceivedStoreUpdate: ({ entries, initCommands, initMountStarts, startIndex, isPaused, pausedAtIndex, }) => {
|
|
481
|
-
const shouldFollowSelection = Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((!isPaused), "@foldkit/devtools/overlay.js#anonymous~
|
|
482
|
-
const shouldFollowScroll = Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((!isPaused && model.isFollowingTop), "@foldkit/devtools/overlay.js#anonymous~
|
|
557
|
+
const shouldFollowSelection = Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((!isPaused), "@foldkit/devtools/overlay.js#anonymous~34")), Match.when('Inspect', () => __foldkitBrandViewResult((model.isFollowingLatest), "@foldkit/devtools/overlay.js#anonymous~35")), Match.exhaustive);
|
|
558
|
+
const shouldFollowScroll = Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((!isPaused && model.isFollowingTop), "@foldkit/devtools/overlay.js#anonymous~36")), Match.when('Inspect', () => __foldkitBrandViewResult((model.isFollowingTop), "@foldkit/devtools/overlay.js#anonymous~37")), Match.exhaustive);
|
|
483
559
|
const latestIndex = Array.match(entries, {
|
|
484
560
|
onEmpty: () => __foldkitBrandViewResult((INIT_INDEX), "@foldkit/devtools/overlay.js#onEmpty~3"),
|
|
485
561
|
onNonEmpty: () => __foldkitBrandViewResult((startIndex + entries.length - 1), "@foldkit/devtools/overlay.js#onNonEmpty~3"),
|
|
486
562
|
});
|
|
487
563
|
const nextSubmodelTags = computeSubmodelTags(entries);
|
|
488
|
-
const isFilterStale = Option.exists(model.maybeSubmodelFilter, filterTag => __foldkitBrandViewResult((!Array.contains(nextSubmodelTags, filterTag)), "@foldkit/devtools/overlay.js#anonymous~
|
|
564
|
+
const isFilterStale = Option.exists(model.maybeSubmodelFilter, filterTag => __foldkitBrandViewResult((!Array.contains(nextSubmodelTags, filterTag)), "@foldkit/devtools/overlay.js#anonymous~38"));
|
|
489
565
|
const sliderMax = entries.length;
|
|
490
566
|
const targetSliderValue = isPaused
|
|
491
567
|
? hostIndexToSliderValue(pausedAtIndex, startIndex)
|
|
@@ -502,7 +578,7 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
502
578
|
maybeSubmodelFilter: current => __foldkitBrandViewResult((isFilterStale ? Option.none() : current), "@foldkit/devtools/overlay.js#maybeSubmodelFilter~3"),
|
|
503
579
|
selectedIndex: current => __foldkitBrandViewResult((shouldFollowSelection ? latestIndex : current), "@foldkit/devtools/overlay.js#selectedIndex~4"),
|
|
504
580
|
scrubberSlider: current => __foldkitBrandViewResult((Slider.reflectRange(current, { min: 0, max: sliderMax })), "@foldkit/devtools/overlay.js#scrubberSlider~2"),
|
|
505
|
-
scrubberValue: current => __foldkitBrandViewResult((Match.value(model.scrubberSlider.dragState).pipe(Match.tag('Dragging', () => __foldkitBrandViewResult((Slider.snapAndClamp(current, 0, sliderMax, 1)), "@foldkit/devtools/overlay.js#anonymous~
|
|
581
|
+
scrubberValue: current => __foldkitBrandViewResult((Match.value(model.scrubberSlider.dragState).pipe(Match.tag('Dragging', () => __foldkitBrandViewResult((Slider.snapAndClamp(current, 0, sliderMax, 1)), "@foldkit/devtools/overlay.js#anonymous~39")), Match.orElse(() => __foldkitBrandViewResult((Slider.snapAndClamp(targetSliderValue, 0, sliderMax, 1)), "@foldkit/devtools/overlay.js#anonymous~40")))), "@foldkit/devtools/overlay.js#scrubberValue~2"),
|
|
506
582
|
}),
|
|
507
583
|
commands: [
|
|
508
584
|
...(shouldFollowSelection ? [inspectLatest] : []),
|
|
@@ -513,13 +589,13 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
513
589
|
GotSubmodelFilterMessage: ({ message: listboxMessage }) => __foldkitBrandViewResult((foldSubmodelFilter(model, listboxMessage)), "@foldkit/devtools/overlay.js#GotSubmodelFilterMessage"),
|
|
514
590
|
GotScrubberSliderMessage: ({ message: sliderMessage }) => __foldkitBrandViewResult((foldScrubberSlider(model, sliderMessage)), "@foldkit/devtools/overlay.js#GotScrubberSliderMessage"),
|
|
515
591
|
TickedScrubFrame: () => __foldkitBrandViewResult((Option.match(model.maybePendingScrubIndex, {
|
|
516
|
-
onNone: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#onNone")),
|
|
592
|
+
onNone: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#onNone~2")),
|
|
517
593
|
onSome: (hostIndex) => (__foldkitBrandViewResult(({
|
|
518
594
|
model: modifyFields(model, {
|
|
519
595
|
maybePendingScrubIndex: () => __foldkitBrandViewResult((Option.none()), "@foldkit/devtools/overlay.js#maybePendingScrubIndex~2"),
|
|
520
596
|
}),
|
|
521
597
|
commands: [jumpToAndInspect(hostIndex)],
|
|
522
|
-
}), "@foldkit/devtools/overlay.js#onSome")),
|
|
598
|
+
}), "@foldkit/devtools/overlay.js#onSome~2")),
|
|
523
599
|
})), "@foldkit/devtools/overlay.js#TickedScrubFrame"),
|
|
524
600
|
CompletedResume: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#CompletedResume")),
|
|
525
601
|
CompletedClear: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#CompletedClear")),
|
|
@@ -527,11 +603,33 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
527
603
|
CompletedLockScroll: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#CompletedLockScroll")),
|
|
528
604
|
CompletedUnlockScroll: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#CompletedUnlockScroll")),
|
|
529
605
|
CompletedScrollToTop: () => (__foldkitBrandViewResult(({ model }), "@foldkit/devtools/overlay.js#CompletedScrollToTop")),
|
|
530
|
-
|
|
606
|
+
SucceededCopyPayloadToClipboard: ({ targetId, requestId }) => __foldkitBrandViewResult((Option.exists(HashMap.get(model.copyStates, targetId), state => __foldkitBrandViewResult((state._tag === 'Copying' && state.requestId === requestId), "@foldkit/devtools/overlay.js#anonymous~41"))
|
|
607
|
+
? {
|
|
608
|
+
model: modifyFields(model, {
|
|
609
|
+
copyStates: states => __foldkitBrandViewResult((HashMap.set(states, targetId, CopyState.Copied({ requestId }))), "@foldkit/devtools/overlay.js#copyStates~3"),
|
|
610
|
+
}),
|
|
611
|
+
commands: [
|
|
612
|
+
WaitBeforeHidingCopyIndicator({ targetId, requestId }),
|
|
613
|
+
],
|
|
614
|
+
}
|
|
615
|
+
: { model }), "@foldkit/devtools/overlay.js#SucceededCopyPayloadToClipboard"),
|
|
616
|
+
FailedCopyPayloadToClipboard: ({ targetId, requestId }) => (__foldkitBrandViewResult(({
|
|
617
|
+
model: Option.exists(HashMap.get(model.copyStates, targetId), state => __foldkitBrandViewResult((state._tag === 'Copying' && state.requestId === requestId), "@foldkit/devtools/overlay.js#anonymous~42"))
|
|
618
|
+
? modifyFields(model, { copyStates: HashMap.remove(targetId) })
|
|
619
|
+
: model,
|
|
620
|
+
}), "@foldkit/devtools/overlay.js#FailedCopyPayloadToClipboard")),
|
|
621
|
+
CompletedWaitBeforeHidingCopyIndicator: ({ targetId, requestId }) => (__foldkitBrandViewResult(({
|
|
622
|
+
model: Option.exists(HashMap.get(model.copyStates, targetId), state => __foldkitBrandViewResult((state._tag === 'Copied' && state.requestId === requestId), "@foldkit/devtools/overlay.js#anonymous~43"))
|
|
623
|
+
? modifyFields(model, {
|
|
624
|
+
copyStates: HashMap.remove(targetId),
|
|
625
|
+
})
|
|
626
|
+
: model,
|
|
627
|
+
}), "@foldkit/devtools/overlay.js#CompletedWaitBeforeHidingCopyIndicator")),
|
|
628
|
+
})), "@foldkit/devtools/overlay.js#anonymous~29")), "@foldkit/devtools/overlay.js#makeUpdate");
|
|
531
629
|
};
|
|
532
630
|
// SUBSCRIPTION
|
|
533
631
|
const makeOverlaySubscriptions = (store, shadow) => {
|
|
534
|
-
const sliderSubscriptions = Slider.subscriptionsForRoot(() => __foldkitBrandViewResult((shadow), "@foldkit/devtools/overlay.js#anonymous~
|
|
632
|
+
const sliderSubscriptions = Slider.subscriptionsForRoot(() => __foldkitBrandViewResult((shadow), "@foldkit/devtools/overlay.js#anonymous~44"));
|
|
535
633
|
const scrubberSubscriptions = Subscription.lift({
|
|
536
634
|
scrubberPointer: sliderSubscriptions.dragPointer,
|
|
537
635
|
scrubberEscape: sliderSubscriptions.dragEscape,
|
|
@@ -544,16 +642,16 @@ const makeOverlaySubscriptions = (store, shadow) => {
|
|
|
544
642
|
isActive: model => __foldkitBrandViewResult((Option.isSome(model.maybePendingScrubIndex)), "@foldkit/devtools/overlay.js#isActive"),
|
|
545
643
|
toMessage: () => __foldkitBrandViewResult((Message.TickedScrubFrame()), "@foldkit/devtools/overlay.js#toMessage"),
|
|
546
644
|
}),
|
|
547
|
-
storeUpdates: Subscription.persistent(Stream.concat(Stream.fromEffect(SubscriptionRef.get(store.stateRef).pipe(Effect.map(state => __foldkitBrandViewResult((Message.ReceivedStoreUpdate(toDisplayState(state))), "@foldkit/devtools/overlay.js#anonymous~
|
|
645
|
+
storeUpdates: Subscription.persistent(Stream.concat(Stream.fromEffect(SubscriptionRef.get(store.stateRef).pipe(Effect.map(state => __foldkitBrandViewResult((Message.ReceivedStoreUpdate(toDisplayState(state))), "@foldkit/devtools/overlay.js#anonymous~46")))), Stream.map(SubscriptionRef.changes(store.stateRef), state => __foldkitBrandViewResult((Message.ReceivedStoreUpdate(toDisplayState(state))), "@foldkit/devtools/overlay.js#anonymous~47")))),
|
|
548
646
|
mobileBreakpoint: Subscription.persistent(Stream.callback(queue => __foldkitBrandViewResult((Effect.acquireRelease(Effect.sync(() => {
|
|
549
647
|
const mediaQuery = window.matchMedia(MOBILE_BREAKPOINT_QUERY);
|
|
550
648
|
const handler = (event) => {
|
|
551
649
|
Queue.offerUnsafe(queue, Message.CrossedMobileBreakpoint({ isMobile: event.matches }));
|
|
552
650
|
};
|
|
553
651
|
mediaQuery.addEventListener('change', handler);
|
|
554
|
-
return __foldkitBrandViewResult(({ mediaQuery, handler }), "@foldkit/devtools/overlay.js#anonymous~
|
|
555
|
-
}), ({ mediaQuery, handler }) => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((mediaQuery.removeEventListener('change', handler)), "@foldkit/devtools/overlay.js#anonymous~
|
|
556
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
652
|
+
return __foldkitBrandViewResult(({ mediaQuery, handler }), "@foldkit/devtools/overlay.js#anonymous~49");
|
|
653
|
+
}), ({ mediaQuery, handler }) => __foldkitBrandViewResult((Effect.sync(() => __foldkitBrandViewResult((mediaQuery.removeEventListener('change', handler)), "@foldkit/devtools/overlay.js#anonymous~51"))), "@foldkit/devtools/overlay.js#anonymous~50")).pipe(Effect.flatMap(() => __foldkitBrandViewResult((Effect.never), "@foldkit/devtools/overlay.js#anonymous~52")))), "@foldkit/devtools/overlay.js#anonymous~48"))),
|
|
654
|
+
}), "@foldkit/devtools/overlay.js#anonymous~45")));
|
|
557
655
|
return __foldkitBrandViewResult((Subscription.aggregate(ownSubscriptions, scrubberSubscriptions)), "@foldkit/devtools/overlay.js#makeOverlaySubscriptions");
|
|
558
656
|
};
|
|
559
657
|
// VIEW
|
|
@@ -587,7 +685,7 @@ const makeView = (position, mode, shadow, maybeBanner) => {
|
|
|
587
685
|
let viewWithBuilder;
|
|
588
686
|
return __foldkitBrandViewResult(((model, h) => {
|
|
589
687
|
viewWithBuilder ??= buildOverlayView(position, mode, shadow, maybeBanner, h);
|
|
590
|
-
return __foldkitBrandViewResult((viewWithBuilder(model)), "@foldkit/devtools/overlay.js#anonymous~
|
|
688
|
+
return __foldkitBrandViewResult((viewWithBuilder(model)), "@foldkit/devtools/overlay.js#anonymous~53");
|
|
591
689
|
}), "@foldkit/devtools/overlay.js#makeView");
|
|
592
690
|
};
|
|
593
691
|
const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
@@ -597,10 +695,12 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
597
695
|
const lazyMessageList = createLazy();
|
|
598
696
|
// JSON TREE
|
|
599
697
|
const leafSpan = (className, text) => __foldkitBrandViewResult((h.span([h.Class(className)], [text])), "@foldkit/devtools/overlay.js#leafSpan");
|
|
600
|
-
const leafValueView = (value) => __foldkitBrandViewResult((Match.value(value).pipe(Match.when(Predicate.isNull, () => __foldkitBrandViewResult((leafSpan('json-null italic', 'null')), "@foldkit/devtools/overlay.js#anonymous~
|
|
698
|
+
const leafValueView = (value) => __foldkitBrandViewResult((Match.value(value).pipe(Match.when(Predicate.isNull, () => __foldkitBrandViewResult((leafSpan('json-null italic', 'null')), "@foldkit/devtools/overlay.js#anonymous~54")), Match.when(Predicate.isUndefined, () => __foldkitBrandViewResult((leafSpan('json-null italic', 'undefined')), "@foldkit/devtools/overlay.js#anonymous~55")), Match.when(Predicate.isString, stringValue => __foldkitBrandViewResult((leafSpan('json-string', `"${stringValue}"`)), "@foldkit/devtools/overlay.js#anonymous~56")), Match.when(Predicate.isNumber, numberValue => __foldkitBrandViewResult((leafSpan('json-number', globalThis.String(numberValue))), "@foldkit/devtools/overlay.js#anonymous~57")), Match.when(Predicate.isBoolean, booleanValue => __foldkitBrandViewResult((leafSpan('json-boolean', globalThis.String(booleanValue))), "@foldkit/devtools/overlay.js#anonymous~58")), Match.orElse(unknownValue => __foldkitBrandViewResult((leafSpan('json-null', globalThis.String(unknownValue))), "@foldkit/devtools/overlay.js#anonymous~59")))), "@foldkit/devtools/overlay.js#leafValueView");
|
|
601
699
|
const keyView = (key) => __foldkitBrandViewResult((h.span([h.Class('json-key')], [`${key}:\u00a0`])), "@foldkit/devtools/overlay.js#keyView");
|
|
602
700
|
const CHEVRON_RIGHT = 'M8.25 4.5l7.5 7.5-7.5 7.5';
|
|
603
701
|
const CHEVRON_DOWN = 'M19.5 8.25l-7.5 7.5-7.5-7.5';
|
|
702
|
+
const COPY_ICON = 'M8 8h10a2 2 0 012 2v8a2 2 0 01-2 2h-8a2 2 0 01-2-2V8Zm8 0V6a2 2 0 00-2-2H6a2 2 0 00-2 2v8a2 2 0 002 2h2';
|
|
703
|
+
const COPY_SUCCESS_ICON = 'M4.5 12.75l6 6 9-13.5';
|
|
604
704
|
const arrowView = (isExpanded) => __foldkitBrandViewResult((h.svg([
|
|
605
705
|
h.AriaHidden(true),
|
|
606
706
|
h.Class('json-arrow shrink-0'),
|
|
@@ -617,6 +717,47 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
617
717
|
]),
|
|
618
718
|
])), "@foldkit/devtools/overlay.js#arrowView");
|
|
619
719
|
const tagLabelView = (tag) => __foldkitBrandViewResult((h.span([h.Class('json-tag')], [tag])), "@foldkit/devtools/overlay.js#tagLabelView");
|
|
720
|
+
const copyPayloadButtonView = (payload, targetId, copyStates, subject) => {
|
|
721
|
+
const maybeCopyState = HashMap.get(copyStates, targetId);
|
|
722
|
+
const isCopying = Option.exists(maybeCopyState, state => __foldkitBrandViewResult((state._tag === 'Copying'), "@foldkit/devtools/overlay.js#anonymous~60"));
|
|
723
|
+
const isCopied = Option.exists(maybeCopyState, state => __foldkitBrandViewResult((state._tag === 'Copied'), "@foldkit/devtools/overlay.js#anonymous~61"));
|
|
724
|
+
const ariaLabel = Option.match(maybeCopyState, {
|
|
725
|
+
onNone: () => __foldkitBrandViewResult((`Copy ${subject} as JSON`), "@foldkit/devtools/overlay.js#onNone~3"),
|
|
726
|
+
onSome: CopyState.match({
|
|
727
|
+
Copying: () => __foldkitBrandViewResult((`Copying ${subject} as JSON`), "@foldkit/devtools/overlay.js#Copying"),
|
|
728
|
+
Copied: () => __foldkitBrandViewResult((`Copied ${subject} as JSON`), "@foldkit/devtools/overlay.js#Copied"),
|
|
729
|
+
}),
|
|
730
|
+
});
|
|
731
|
+
return __foldkitBrandViewResult((h.span([h.Class('dt-copy-control shrink-0')], [
|
|
732
|
+
h.button([
|
|
733
|
+
h.Class(clsx('dt-copy-button', isCopied && 'dt-copy-success')),
|
|
734
|
+
h.Type('button'),
|
|
735
|
+
h.AriaLabel(ariaLabel),
|
|
736
|
+
h.AriaDisabled(isCopying || isCopied),
|
|
737
|
+
h.Title(isCopied ? 'Copied' : 'Copy as JSON'),
|
|
738
|
+
...(Option.isNone(maybeCopyState)
|
|
739
|
+
? [h.OnClick(Message.ClickedCopyPayload({ targetId, payload }))]
|
|
740
|
+
: []),
|
|
741
|
+
], [
|
|
742
|
+
h.svg([
|
|
743
|
+
h.AriaHidden(true),
|
|
744
|
+
h.Class('dt-copy-icon'),
|
|
745
|
+
h.Xmlns('http://www.w3.org/2000/svg'),
|
|
746
|
+
h.Fill('none'),
|
|
747
|
+
h.ViewBox('0 0 24 24'),
|
|
748
|
+
h.StrokeWidth(isCopied ? '2' : '1.5'),
|
|
749
|
+
h.Stroke('currentColor'),
|
|
750
|
+
], [
|
|
751
|
+
h.path([
|
|
752
|
+
h.StrokeLinecap('round'),
|
|
753
|
+
h.StrokeLinejoin('round'),
|
|
754
|
+
h.D(isCopied ? COPY_SUCCESS_ICON : COPY_ICON),
|
|
755
|
+
]),
|
|
756
|
+
]),
|
|
757
|
+
]),
|
|
758
|
+
h.span([h.Role('status'), h.AriaLive('polite'), h.Class('sr-only')], [isCopied ? 'Copied to clipboard' : '']),
|
|
759
|
+
])), "@foldkit/devtools/overlay.js#copyPayloadButtonView");
|
|
760
|
+
};
|
|
620
761
|
const previewView = (preview) => __foldkitBrandViewResult((h.span([h.Class('json-preview')], [preview])), "@foldkit/devtools/overlay.js#previewView");
|
|
621
762
|
const diffDotView = h.span([h.Class('diff-dot')]);
|
|
622
763
|
const inlineDiffDotView = h.span([h.Class('diff-dot-inline')]);
|
|
@@ -665,16 +806,16 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
665
806
|
treePath: `${treePath}.${arrayIndex}`,
|
|
666
807
|
depth: childDepth,
|
|
667
808
|
key: globalThis.String(arrayIndex),
|
|
668
|
-
})), "@foldkit/devtools/overlay.js#anonymous~
|
|
809
|
+
})), "@foldkit/devtools/overlay.js#anonymous~62"));
|
|
669
810
|
}
|
|
670
811
|
else if (Predicate.isObject(value)) {
|
|
671
|
-
pipe(value, Record.toEntries, Array.filter(([entryKey]) => __foldkitBrandViewResult((entryKey !== '_tag'), "@foldkit/devtools/overlay.js#anonymous~
|
|
812
|
+
pipe(value, Record.toEntries, Array.filter(([entryKey]) => __foldkitBrandViewResult((entryKey !== '_tag'), "@foldkit/devtools/overlay.js#anonymous~63")), Array.forEach(([entryKey, childValue]) => __foldkitBrandViewResult((flattenTree({
|
|
672
813
|
...shared,
|
|
673
814
|
value: childValue,
|
|
674
815
|
treePath: `${treePath}.${entryKey}`,
|
|
675
816
|
depth: childDepth,
|
|
676
817
|
key: entryKey,
|
|
677
|
-
})), "@foldkit/devtools/overlay.js#anonymous~
|
|
818
|
+
})), "@foldkit/devtools/overlay.js#anonymous~64")));
|
|
678
819
|
}
|
|
679
820
|
};
|
|
680
821
|
const flatNodeView = (value, treePath, depth, key, nodeIsExpandable, isExpanded, isChanged, isAffected, isRoot, tag) => {
|
|
@@ -694,7 +835,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
694
835
|
'diff-changed': isChanged,
|
|
695
836
|
})),
|
|
696
837
|
indent,
|
|
697
|
-
], rowSegments.map(segment => __foldkitBrandViewResult((h.keyed('li')(segment._tag, [h.Class('contents')], [rowSegmentView(segment)])), "@foldkit/devtools/overlay.js#anonymous~
|
|
838
|
+
], rowSegments.map(segment => __foldkitBrandViewResult((h.keyed('li')(segment._tag, [h.Class('contents')], [rowSegmentView(segment)])), "@foldkit/devtools/overlay.js#anonymous~65")))), "@foldkit/devtools/overlay.js#flatNodeView");
|
|
698
839
|
}
|
|
699
840
|
const preview = isExpanded
|
|
700
841
|
? globalThis.Array.isArray(value)
|
|
@@ -718,7 +859,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
718
859
|
...(isRoot
|
|
719
860
|
? []
|
|
720
861
|
: [h.OnClick(Message.ToggledTreeNode({ path: treePath }))]),
|
|
721
|
-
], rowSegments.map(segment => __foldkitBrandViewResult((h.keyed('li')(segment._tag, [h.Class('contents')], [rowSegmentView(segment)])), "@foldkit/devtools/overlay.js#anonymous~
|
|
862
|
+
], rowSegments.map(segment => __foldkitBrandViewResult((h.keyed('li')(segment._tag, [h.Class('contents')], [rowSegmentView(segment)])), "@foldkit/devtools/overlay.js#anonymous~66")))), "@foldkit/devtools/overlay.js#flatNodeView");
|
|
722
863
|
};
|
|
723
864
|
const renderFlatNode = (node) => __foldkitBrandViewResult((lazyTreeNode(node.treePath, flatNodeView, [
|
|
724
865
|
node.value,
|
|
@@ -742,7 +883,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
742
883
|
changedPaths,
|
|
743
884
|
affectedPaths,
|
|
744
885
|
depth: 0,
|
|
745
|
-
key: Option.getOrElse(maybeRootLabel, () => __foldkitBrandViewResult((''), "@foldkit/devtools/overlay.js#anonymous~
|
|
886
|
+
key: Option.getOrElse(maybeRootLabel, () => __foldkitBrandViewResult((''), "@foldkit/devtools/overlay.js#anonymous~67")),
|
|
746
887
|
accumulator: nodes,
|
|
747
888
|
indentRootChildren,
|
|
748
889
|
});
|
|
@@ -756,8 +897,8 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
756
897
|
return __foldkitBrandViewResult(('0ms'), "@foldkit/devtools/overlay.js#inspectedTimestamp");
|
|
757
898
|
}
|
|
758
899
|
const baseTimestamp = pipe(model.entries, Array.head, Option.match({
|
|
759
|
-
onNone: () => __foldkitBrandViewResult((0), "@foldkit/devtools/overlay.js#onNone~
|
|
760
|
-
onSome: ({ timestamp }) => __foldkitBrandViewResult((timestamp), "@foldkit/devtools/overlay.js#onSome~
|
|
900
|
+
onNone: () => __foldkitBrandViewResult((0), "@foldkit/devtools/overlay.js#onNone~4"),
|
|
901
|
+
onSome: ({ timestamp }) => __foldkitBrandViewResult((timestamp), "@foldkit/devtools/overlay.js#onSome~3"),
|
|
761
902
|
}));
|
|
762
903
|
return __foldkitBrandViewResult((pipe(Array.get(model.entries, selectedIndex - model.startIndex), Option.map(entry => {
|
|
763
904
|
const delta = entry.timestamp - baseTimestamp;
|
|
@@ -765,8 +906,8 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
765
906
|
const remainingMs = delta % MILLIS_PER_SECOND;
|
|
766
907
|
return __foldkitBrandViewResult((seconds > 0
|
|
767
908
|
? `+${seconds}s ${remainingMs.toFixed(1)}ms`
|
|
768
|
-
: `+${remainingMs.toFixed(1)}ms`), "@foldkit/devtools/overlay.js#anonymous~
|
|
769
|
-
}), Option.getOrElse(() => __foldkitBrandViewResult((''), "@foldkit/devtools/overlay.js#anonymous~
|
|
909
|
+
: `+${remainingMs.toFixed(1)}ms`), "@foldkit/devtools/overlay.js#anonymous~68");
|
|
910
|
+
}), Option.getOrElse(() => __foldkitBrandViewResult((''), "@foldkit/devtools/overlay.js#anonymous~69")))), "@foldkit/devtools/overlay.js#inspectedTimestamp");
|
|
770
911
|
};
|
|
771
912
|
const emptyInspectorView = h.div([
|
|
772
913
|
h.Class('flex-1 flex items-center justify-center text-dt-muted text-2xs font-mono min-w-0'),
|
|
@@ -774,7 +915,16 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
774
915
|
const noMessageView = () => __foldkitBrandViewResult((h.div([
|
|
775
916
|
h.Class('flex-1 flex items-center justify-center text-dt-muted text-2xs font-mono min-w-0'),
|
|
776
917
|
], ['init: no Message'])), "@foldkit/devtools/overlay.js#noMessageView");
|
|
777
|
-
const
|
|
918
|
+
const payloadHeaderView = (label, payload, targetId, copyStates) => __foldkitBrandViewResult((h.div([
|
|
919
|
+
h.Class('flex items-center justify-between px-2 py-1 border-b text-2xs text-dt-muted font-mono shrink-0'),
|
|
920
|
+
], [
|
|
921
|
+
h.span([], [label]),
|
|
922
|
+
copyPayloadButtonView(payload, targetId, copyStates, `${label} payload`),
|
|
923
|
+
])), "@foldkit/devtools/overlay.js#payloadHeaderView");
|
|
924
|
+
const modelTabContent = (inspectedModel, expandedPaths, changedPaths, affectedPaths, selectedIndex, copyStates) => __foldkitBrandViewResult((h.div([h.Class('flex flex-col flex-1 min-h-0 min-w-0')], [
|
|
925
|
+
payloadHeaderView('Model', inspectedModel, `Model:${selectedIndex}`, copyStates),
|
|
926
|
+
treeView(inspectedModel, 'root', expandedPaths, changedPaths, affectedPaths, Option.none(), true),
|
|
927
|
+
])), "@foldkit/devtools/overlay.js#modelTabContent");
|
|
778
928
|
const unwrapToLeaf = (message) => {
|
|
779
929
|
if (isTagged(message) &&
|
|
780
930
|
GOT_MESSAGE_PATTERN.test(message._tag) &&
|
|
@@ -809,7 +959,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
809
959
|
}
|
|
810
960
|
return __foldkitBrandViewResult((current), "@foldkit/devtools/overlay.js#unwrapIfFiltered");
|
|
811
961
|
};
|
|
812
|
-
const messageTabContent = (maybeInspectedMessage, maybeSubmodelFilter, isFlattened, expandedPaths, timestamp) => __foldkitBrandViewResult((Option.match(maybeInspectedMessage, {
|
|
962
|
+
const messageTabContent = (maybeInspectedMessage, maybeSubmodelFilter, isFlattened, expandedPaths, timestamp, selectedIndex, copyStates) => __foldkitBrandViewResult((Option.match(maybeInspectedMessage, {
|
|
813
963
|
onNone: noMessageView,
|
|
814
964
|
onSome: rawMessage => {
|
|
815
965
|
const message = isFlattened
|
|
@@ -817,12 +967,15 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
817
967
|
: unwrapIfFiltered(rawMessage, maybeSubmodelFilter);
|
|
818
968
|
return __foldkitBrandViewResult((h.div([h.Class('flex flex-col flex-1 min-h-0 min-w-0')], [
|
|
819
969
|
h.div([
|
|
820
|
-
h.Class('px-2 py-1 border-b text-2xs text-dt-muted font-mono shrink-0'),
|
|
821
|
-
], [
|
|
970
|
+
h.Class('flex items-center justify-between px-2 py-1 border-b text-2xs text-dt-muted font-mono shrink-0'),
|
|
971
|
+
], [
|
|
972
|
+
h.span([], [timestamp]),
|
|
973
|
+
copyPayloadButtonView(message, `Message:${selectedIndex}:${isFlattened}:${Option.getOrElse(maybeSubmodelFilter, () => __foldkitBrandViewResult(('All'), "@foldkit/devtools/overlay.js#anonymous~70"))}`, copyStates, 'Message payload'),
|
|
974
|
+
]),
|
|
822
975
|
h.div([h.Class('flex flex-col flex-1 min-h-0 min-w-0 pt-1 pl-1')], [
|
|
823
976
|
treeView(message, 'root', expandedPaths, HashSet.empty(), HashSet.empty(), Option.none(), false),
|
|
824
977
|
]),
|
|
825
|
-
])), "@foldkit/devtools/overlay.js#onSome~
|
|
978
|
+
])), "@foldkit/devtools/overlay.js#onSome~4");
|
|
826
979
|
},
|
|
827
980
|
})), "@foldkit/devtools/overlay.js#messageTabContent");
|
|
828
981
|
const selectedHistoryIndex = (model) => {
|
|
@@ -830,7 +983,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
830
983
|
onEmpty: () => __foldkitBrandViewResult((INIT_INDEX), "@foldkit/devtools/overlay.js#onEmpty~4"),
|
|
831
984
|
onNonEmpty: () => __foldkitBrandViewResult((model.startIndex + model.entries.length - 1), "@foldkit/devtools/overlay.js#onNonEmpty~4"),
|
|
832
985
|
});
|
|
833
|
-
return __foldkitBrandViewResult((Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((model.isPaused ? model.pausedAtIndex : lastIndex), "@foldkit/devtools/overlay.js#anonymous~
|
|
986
|
+
return __foldkitBrandViewResult((Match.value(mode).pipe(Match.when('TimeTravel', () => __foldkitBrandViewResult((model.isPaused ? model.pausedAtIndex : lastIndex), "@foldkit/devtools/overlay.js#anonymous~71")), Match.when('Inspect', () => __foldkitBrandViewResult((model.selectedIndex), "@foldkit/devtools/overlay.js#anonymous~72")), Match.exhaustive)), "@foldkit/devtools/overlay.js#selectedHistoryIndex");
|
|
834
987
|
};
|
|
835
988
|
const selectedCommands = (model) => {
|
|
836
989
|
const selectedIndex = selectedHistoryIndex(model);
|
|
@@ -838,14 +991,11 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
838
991
|
return __foldkitBrandViewResult((model.initCommands), "@foldkit/devtools/overlay.js#selectedCommands");
|
|
839
992
|
}
|
|
840
993
|
else {
|
|
841
|
-
return __foldkitBrandViewResult((pipe(model.entries, Array.get(selectedIndex - model.startIndex), Option.map(entry => __foldkitBrandViewResult((entry.commands), "@foldkit/devtools/overlay.js#anonymous~
|
|
994
|
+
return __foldkitBrandViewResult((pipe(model.entries, Array.get(selectedIndex - model.startIndex), Option.map(entry => __foldkitBrandViewResult((entry.commands), "@foldkit/devtools/overlay.js#anonymous~73")), Option.getOrElse(() => __foldkitBrandViewResult((NO_COMMANDS), "@foldkit/devtools/overlay.js#anonymous~74")))), "@foldkit/devtools/overlay.js#selectedCommands");
|
|
842
995
|
}
|
|
843
996
|
};
|
|
844
997
|
const flattenCommand = (command, index, expandedPaths) => {
|
|
845
|
-
const taggedValue =
|
|
846
|
-
onNone: () => (__foldkitBrandViewResult(({ _tag: command.name }), "@foldkit/devtools/overlay.js#onNone~3")),
|
|
847
|
-
onSome: argsValue => (__foldkitBrandViewResult(({ ...argsValue, _tag: command.name }), "@foldkit/devtools/overlay.js#onSome~4")),
|
|
848
|
-
});
|
|
998
|
+
const taggedValue = taggedPayload(command.name, command.args);
|
|
849
999
|
const rootPath = `command-${index}`;
|
|
850
1000
|
const nodes = [];
|
|
851
1001
|
flattenTree({
|
|
@@ -862,12 +1012,12 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
862
1012
|
});
|
|
863
1013
|
return __foldkitBrandViewResult((nodes), "@foldkit/devtools/overlay.js#flattenCommand");
|
|
864
1014
|
};
|
|
865
|
-
const commandsTabContent = (commands, expandedPaths) => __foldkitBrandViewResult((Array.match(commands, {
|
|
1015
|
+
const commandsTabContent = (commands, expandedPaths, selectedIndex, copyStates) => __foldkitBrandViewResult((Array.match(commands, {
|
|
866
1016
|
onEmpty: () => __foldkitBrandViewResult((h.div([
|
|
867
1017
|
h.Class('flex-1 flex items-center justify-center text-dt-muted text-2xs font-mono min-w-0'),
|
|
868
1018
|
], ['No Commands returned'])), "@foldkit/devtools/overlay.js#onEmpty~5"),
|
|
869
1019
|
onNonEmpty: commandList => __foldkitBrandViewResult((h.div([
|
|
870
|
-
h.Class('flex flex-col flex-1 min-h-0 min-w-0 overflow-auto overscroll-none'),
|
|
1020
|
+
h.Class('dt-payload-list flex flex-col flex-1 min-h-0 min-w-0 overflow-auto overscroll-none'),
|
|
871
1021
|
], Array.map(commandList, (command, index) => __foldkitBrandViewResult((h.div([h.Class('flex items-start px-2 py-1 border-b gap-1.5')], [
|
|
872
1022
|
h.span([h.Class(indexClass)], [globalThis.String(index + 1)]),
|
|
873
1023
|
h.div([h.Class('flex flex-col flex-1 min-w-0')], [
|
|
@@ -877,7 +1027,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
877
1027
|
h.span([h.AriaHidden(true)], ['…']),
|
|
878
1028
|
h.span([h.Class('sr-only')], ['Destination pending']),
|
|
879
1029
|
]),
|
|
880
|
-
]), "@foldkit/devtools/overlay.js#onNone~
|
|
1030
|
+
]), "@foldkit/devtools/overlay.js#onNone~5"),
|
|
881
1031
|
onSome: submodelPath => __foldkitBrandViewResult((Array.match(submodelPath, {
|
|
882
1032
|
onEmpty: () => __foldkitBrandViewResult(([]), "@foldkit/devtools/overlay.js#onEmpty~6"),
|
|
883
1033
|
onNonEmpty: submodelPath => __foldkitBrandViewResult(([
|
|
@@ -889,7 +1039,8 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
889
1039
|
}),
|
|
890
1040
|
...Array.map(flattenCommand(command, index, expandedPaths), renderFlatNode),
|
|
891
1041
|
]),
|
|
892
|
-
|
|
1042
|
+
copyPayloadButtonView(taggedPayload(command.name, command.args), `Command:${selectedIndex}:${index}`, copyStates, `Command ${index + 1} (${command.name}) payload`),
|
|
1043
|
+
])), "@foldkit/devtools/overlay.js#anonymous~75")))), "@foldkit/devtools/overlay.js#onNonEmpty~5"),
|
|
893
1044
|
})), "@foldkit/devtools/overlay.js#commandsTabContent");
|
|
894
1045
|
const selectedMountActivity = (model) => {
|
|
895
1046
|
const selectedIndex = selectedHistoryIndex(model);
|
|
@@ -898,7 +1049,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
898
1049
|
}
|
|
899
1050
|
else {
|
|
900
1051
|
return __foldkitBrandViewResult((pipe(model.entries, Array.get(selectedIndex - model.startIndex), Option.match({
|
|
901
|
-
onNone: () => (__foldkitBrandViewResult(({ starts: NO_MOUNTS, ends: NO_MOUNTS }), "@foldkit/devtools/overlay.js#onNone~
|
|
1052
|
+
onNone: () => (__foldkitBrandViewResult(({ starts: NO_MOUNTS, ends: NO_MOUNTS }), "@foldkit/devtools/overlay.js#onNone~6")),
|
|
902
1053
|
onSome: entry => (__foldkitBrandViewResult(({
|
|
903
1054
|
starts: entry.mountStarts,
|
|
904
1055
|
ends: entry.mountEnds,
|
|
@@ -907,10 +1058,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
907
1058
|
}
|
|
908
1059
|
};
|
|
909
1060
|
const flattenMount = (mount, sectionLabel, index, expandedPaths) => {
|
|
910
|
-
const taggedValue =
|
|
911
|
-
onNone: () => (__foldkitBrandViewResult(({ _tag: mount.name }), "@foldkit/devtools/overlay.js#onNone~6")),
|
|
912
|
-
onSome: argsValue => (__foldkitBrandViewResult(({ ...argsValue, _tag: mount.name }), "@foldkit/devtools/overlay.js#onSome~7")),
|
|
913
|
-
});
|
|
1061
|
+
const taggedValue = taggedPayload(mount.name, mount.args);
|
|
914
1062
|
const rootPath = `mount-${sectionLabel}-${index}`;
|
|
915
1063
|
const nodes = [];
|
|
916
1064
|
flattenTree({
|
|
@@ -927,16 +1075,17 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
927
1075
|
});
|
|
928
1076
|
return __foldkitBrandViewResult((nodes), "@foldkit/devtools/overlay.js#flattenMount");
|
|
929
1077
|
};
|
|
930
|
-
const mountListSection = (label, mounts, expandedPaths) => __foldkitBrandViewResult((h.div([h.Class('flex flex-col shrink-0')], [
|
|
1078
|
+
const mountListSection = (label, mounts, expandedPaths, selectedIndex, copyStates) => __foldkitBrandViewResult((h.div([h.Class('flex flex-col shrink-0')], [
|
|
931
1079
|
h.div([
|
|
932
1080
|
h.Class('px-2 py-1 border-b text-2xs text-dt-muted font-mono shrink-0'),
|
|
933
1081
|
], [label]),
|
|
934
1082
|
...Array.map(mounts, (mount, index) => __foldkitBrandViewResult((h.div([h.Class('flex items-start px-2 py-1 border-b gap-1.5')], [
|
|
935
1083
|
h.span([h.Class(indexClass)], [globalThis.String(index + 1)]),
|
|
936
1084
|
h.div([h.Class('flex flex-col flex-1 min-w-0')], Array.map(flattenMount(mount, label, index, expandedPaths), renderFlatNode)),
|
|
937
|
-
|
|
1085
|
+
copyPayloadButtonView(taggedPayload(mount.name, mount.args), `Mount:${selectedIndex}:${label}:${index}`, copyStates, `${label} Mount ${index + 1} (${mount.name}) payload`),
|
|
1086
|
+
])), "@foldkit/devtools/overlay.js#anonymous~76")),
|
|
938
1087
|
])), "@foldkit/devtools/overlay.js#mountListSection");
|
|
939
|
-
const mountsTabContent = (starts, ends, expandedPaths) => {
|
|
1088
|
+
const mountsTabContent = (starts, ends, expandedPaths, selectedIndex, copyStates) => {
|
|
940
1089
|
const hasAny = Array.isReadonlyArrayNonEmpty(starts) ||
|
|
941
1090
|
Array.isReadonlyArrayNonEmpty(ends);
|
|
942
1091
|
if (!hasAny) {
|
|
@@ -945,38 +1094,53 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
945
1094
|
], ['No Mounts during this render'])), "@foldkit/devtools/overlay.js#mountsTabContent");
|
|
946
1095
|
}
|
|
947
1096
|
return __foldkitBrandViewResult((h.div([
|
|
948
|
-
h.Class('flex flex-col flex-1 min-h-0 min-w-0 overflow-auto overscroll-none'),
|
|
1097
|
+
h.Class('dt-payload-list flex flex-col flex-1 min-h-0 min-w-0 overflow-auto overscroll-none'),
|
|
949
1098
|
], [
|
|
950
1099
|
...(Array.isReadonlyArrayNonEmpty(starts)
|
|
951
|
-
? [
|
|
1100
|
+
? [
|
|
1101
|
+
mountListSection('Started', starts, expandedPaths, selectedIndex, copyStates),
|
|
1102
|
+
]
|
|
952
1103
|
: []),
|
|
953
1104
|
...(Array.isReadonlyArrayNonEmpty(ends)
|
|
954
|
-
? [
|
|
1105
|
+
? [
|
|
1106
|
+
mountListSection('Ended', ends, expandedPaths, selectedIndex, copyStates),
|
|
1107
|
+
]
|
|
955
1108
|
: []),
|
|
956
1109
|
])), "@foldkit/devtools/overlay.js#mountsTabContent");
|
|
957
1110
|
};
|
|
958
|
-
const inspectorTabContent = (model, tab, inspectedModel) =>
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
model.affectedPaths,
|
|
963
|
-
])), "@foldkit/devtools/overlay.js#anonymous~69")), Match.when('Message', () => __foldkitBrandViewResult((lazyTabContent('Message', messageTabContent, [
|
|
964
|
-
model.maybeInspectedMessage,
|
|
965
|
-
model.maybeSubmodelFilter,
|
|
966
|
-
model.isFlattened,
|
|
967
|
-
model.expandedPaths,
|
|
968
|
-
inspectedTimestamp(model),
|
|
969
|
-
])), "@foldkit/devtools/overlay.js#anonymous~70")), Match.when('Commands', () => __foldkitBrandViewResult((lazyTabContent('Commands', commandsTabContent, [
|
|
970
|
-
selectedCommands(model),
|
|
971
|
-
model.expandedPaths,
|
|
972
|
-
])), "@foldkit/devtools/overlay.js#anonymous~71")), Match.when('Mounts', () => {
|
|
973
|
-
const { starts, ends } = selectedMountActivity(model);
|
|
974
|
-
return __foldkitBrandViewResult((lazyTabContent('Mounts', mountsTabContent, [
|
|
975
|
-
starts,
|
|
976
|
-
ends,
|
|
1111
|
+
const inspectorTabContent = (model, tab, inspectedModel) => {
|
|
1112
|
+
const selectedIndex = selectedHistoryIndex(model);
|
|
1113
|
+
return __foldkitBrandViewResult((Match.value(tab).pipe(Match.when('Model', () => __foldkitBrandViewResult((lazyTabContent('Model', modelTabContent, [
|
|
1114
|
+
inspectedModel,
|
|
977
1115
|
model.expandedPaths,
|
|
978
|
-
|
|
979
|
-
|
|
1116
|
+
model.changedPaths,
|
|
1117
|
+
model.affectedPaths,
|
|
1118
|
+
selectedIndex,
|
|
1119
|
+
model.copyStates,
|
|
1120
|
+
])), "@foldkit/devtools/overlay.js#anonymous~77")), Match.when('Message', () => __foldkitBrandViewResult((lazyTabContent('Message', messageTabContent, [
|
|
1121
|
+
model.maybeInspectedMessage,
|
|
1122
|
+
model.maybeSubmodelFilter,
|
|
1123
|
+
model.isFlattened,
|
|
1124
|
+
model.expandedPaths,
|
|
1125
|
+
inspectedTimestamp(model),
|
|
1126
|
+
selectedIndex,
|
|
1127
|
+
model.copyStates,
|
|
1128
|
+
])), "@foldkit/devtools/overlay.js#anonymous~78")), Match.when('Commands', () => __foldkitBrandViewResult((lazyTabContent('Commands', commandsTabContent, [
|
|
1129
|
+
selectedCommands(model),
|
|
1130
|
+
model.expandedPaths,
|
|
1131
|
+
selectedIndex,
|
|
1132
|
+
model.copyStates,
|
|
1133
|
+
])), "@foldkit/devtools/overlay.js#anonymous~79")), Match.when('Mounts', () => {
|
|
1134
|
+
const { starts, ends } = selectedMountActivity(model);
|
|
1135
|
+
return __foldkitBrandViewResult((lazyTabContent('Mounts', mountsTabContent, [
|
|
1136
|
+
starts,
|
|
1137
|
+
ends,
|
|
1138
|
+
model.expandedPaths,
|
|
1139
|
+
selectedIndex,
|
|
1140
|
+
model.copyStates,
|
|
1141
|
+
])), "@foldkit/devtools/overlay.js#anonymous~80");
|
|
1142
|
+
}), Match.exhaustive)), "@foldkit/devtools/overlay.js#inspectorTabContent");
|
|
1143
|
+
};
|
|
980
1144
|
const inspectorPaneView = (model) => __foldkitBrandViewResult((h.div([
|
|
981
1145
|
h.Class('flex flex-col border-l min-w-0 min-h-0 flex-1 dt-inspector-pane'),
|
|
982
1146
|
], [
|
|
@@ -995,7 +1159,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
995
1159
|
h.Class(clsx('dt-tab-button cursor-pointer text-base font-mono px-3 py-1', tab.isActive
|
|
996
1160
|
? 'text-dt dt-tab-active'
|
|
997
1161
|
: 'text-dt-muted')),
|
|
998
|
-
], [h.span([], [tab.value])])), "@foldkit/devtools/overlay.js#anonymous~
|
|
1162
|
+
], [h.span([], [tab.value])])), "@foldkit/devtools/overlay.js#anonymous~81"))),
|
|
999
1163
|
...tabs.map(tab => __foldkitBrandViewResult((h.div([
|
|
1000
1164
|
...tab.panel,
|
|
1001
1165
|
h.Class('flex flex-col flex-1 min-h-0 min-w-0'),
|
|
@@ -1006,9 +1170,9 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1006
1170
|
], [
|
|
1007
1171
|
Option.match(model.maybeInspectedModel, {
|
|
1008
1172
|
onNone: () => __foldkitBrandViewResult((emptyInspectorView), "@foldkit/devtools/overlay.js#onNone~7"),
|
|
1009
|
-
onSome: inspectedModel => __foldkitBrandViewResult((inspectorTabContent(model, tab.value, inspectedModel)), "@foldkit/devtools/overlay.js#onSome~
|
|
1173
|
+
onSome: inspectedModel => __foldkitBrandViewResult((inspectorTabContent(model, tab.value, inspectedModel)), "@foldkit/devtools/overlay.js#onSome~7"),
|
|
1010
1174
|
}),
|
|
1011
|
-
])), "@foldkit/devtools/overlay.js#anonymous~
|
|
1175
|
+
])), "@foldkit/devtools/overlay.js#anonymous~82")),
|
|
1012
1176
|
])), "@foldkit/devtools/overlay.js#toView"),
|
|
1013
1177
|
},
|
|
1014
1178
|
toParentMessage: message => __foldkitBrandViewResult((Message.GotInspectorTabsMessage({ message })), "@foldkit/devtools/overlay.js#toParentMessage~5"),
|
|
@@ -1092,7 +1256,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1092
1256
|
view: SubmodelFilterListbox.view,
|
|
1093
1257
|
viewInputs: {
|
|
1094
1258
|
items: [ALL_MESSAGES_VALUE, ...model.submodelTags],
|
|
1095
|
-
maybeSelectedValue: Option.orElseSome(model.maybeSubmodelFilter, () => __foldkitBrandViewResult((ALL_MESSAGES_VALUE), "@foldkit/devtools/overlay.js#anonymous~
|
|
1259
|
+
maybeSelectedValue: Option.orElseSome(model.maybeSubmodelFilter, () => __foldkitBrandViewResult((ALL_MESSAGES_VALUE), "@foldkit/devtools/overlay.js#anonymous~83")),
|
|
1096
1260
|
itemToConfig: item => (__foldkitBrandViewResult(({
|
|
1097
1261
|
className: 'dt-filter-item',
|
|
1098
1262
|
content: h.div([h.Class('flex items-center gap-2')], [checkIconView, h.span([], [filterItemLabel(item)])]),
|
|
@@ -1162,7 +1326,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1162
1326
|
: {
|
|
1163
1327
|
status: h.span([h.Class(`${statusClass} text-dt-live font-medium`)], ['Live']),
|
|
1164
1328
|
maybeAction: Option.none(),
|
|
1165
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
1329
|
+
}), "@foldkit/devtools/overlay.js#anonymous~84")), Match.when('Inspect', () => (__foldkitBrandViewResult(({
|
|
1166
1330
|
status: h.span([h.Class(`${statusClass} text-dt-accent`)], [
|
|
1167
1331
|
model.selectedIndex === INIT_INDEX
|
|
1168
1332
|
? 'Inspecting (init)'
|
|
@@ -1172,7 +1336,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1172
1336
|
h.Class(actionButtonClass),
|
|
1173
1337
|
h.OnClick(Message.ClickedFollowLatest()),
|
|
1174
1338
|
], ['Follow Latest →'])),
|
|
1175
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
1339
|
+
}), "@foldkit/devtools/overlay.js#anonymous~85"))), Match.exhaustive);
|
|
1176
1340
|
const maybeClearHistoryButton = OptionExt.when(!model.isPaused, clearHistoryButton());
|
|
1177
1341
|
return __foldkitBrandViewResult((h.header([h.Class(headerClass)], [
|
|
1178
1342
|
status,
|
|
@@ -1219,11 +1383,11 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1219
1383
|
const messageListBody = (entries, startIndex, selectedIndex, isPaused, pausedAtIndex, maybeFilterTag, isFlattened) => {
|
|
1220
1384
|
const baseTimestamp = pipe(entries, Array.head, Option.match({
|
|
1221
1385
|
onNone: () => __foldkitBrandViewResult((0), "@foldkit/devtools/overlay.js#onNone~9"),
|
|
1222
|
-
onSome: ({ timestamp }) => __foldkitBrandViewResult((timestamp), "@foldkit/devtools/overlay.js#onSome~
|
|
1386
|
+
onSome: ({ timestamp }) => __foldkitBrandViewResult((timestamp), "@foldkit/devtools/overlay.js#onSome~8"),
|
|
1223
1387
|
}));
|
|
1224
1388
|
const isInitSelected = selectedIndex === INIT_INDEX;
|
|
1225
1389
|
const isFiltered = Option.isSome(maybeFilterTag);
|
|
1226
|
-
const leafOrTag = (entry) => __foldkitBrandViewResult((Option.getOrElse(entry.maybeLeafTag, () => __foldkitBrandViewResult((entry.tag), "@foldkit/devtools/overlay.js#anonymous~
|
|
1390
|
+
const leafOrTag = (entry) => __foldkitBrandViewResult((Option.getOrElse(entry.maybeLeafTag, () => __foldkitBrandViewResult((entry.tag), "@foldkit/devtools/overlay.js#anonymous~86"))), "@foldkit/devtools/overlay.js#leafOrTag");
|
|
1227
1391
|
const displayTagFor = (entry) => {
|
|
1228
1392
|
if (isFlattened) {
|
|
1229
1393
|
return __foldkitBrandViewResult((leafOrTag(entry)), "@foldkit/devtools/overlay.js#displayTagFor");
|
|
@@ -1231,15 +1395,15 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1231
1395
|
else {
|
|
1232
1396
|
return __foldkitBrandViewResult((Option.match(maybeFilterTag, {
|
|
1233
1397
|
onNone: () => __foldkitBrandViewResult((entry.tag), "@foldkit/devtools/overlay.js#onNone~10"),
|
|
1234
|
-
onSome: filterTag => __foldkitBrandViewResult((pipe(entry.submodelPath, Array.findFirstIndex(pathTag => __foldkitBrandViewResult((pathTag === filterTag), "@foldkit/devtools/overlay.js#anonymous~
|
|
1398
|
+
onSome: filterTag => __foldkitBrandViewResult((pipe(entry.submodelPath, Array.findFirstIndex(pathTag => __foldkitBrandViewResult((pathTag === filterTag), "@foldkit/devtools/overlay.js#anonymous~87")), Option.flatMap(filterIndex => __foldkitBrandViewResult((Array.get(entry.submodelPath, Number.increment(filterIndex))), "@foldkit/devtools/overlay.js#anonymous~88")), Option.orElse(() => __foldkitBrandViewResult((entry.maybeLeafTag), "@foldkit/devtools/overlay.js#anonymous~89")), Option.getOrElse(() => __foldkitBrandViewResult((entry.tag), "@foldkit/devtools/overlay.js#anonymous~90")))), "@foldkit/devtools/overlay.js#onSome~9"),
|
|
1235
1399
|
})), "@foldkit/devtools/overlay.js#displayTagFor");
|
|
1236
1400
|
}
|
|
1237
1401
|
};
|
|
1238
1402
|
const indexedEntries = pipe(entries, Array.map((entry, arrayIndex) => (__foldkitBrandViewResult(({
|
|
1239
1403
|
entry,
|
|
1240
1404
|
absoluteIndex: startIndex + arrayIndex,
|
|
1241
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
1242
|
-
? Array.filter(({ entry }) => __foldkitBrandViewResult((Array.contains(entry.submodelPath, maybeFilterTag.value)), "@foldkit/devtools/overlay.js#anonymous~
|
|
1405
|
+
}), "@foldkit/devtools/overlay.js#anonymous~91"))), isFiltered
|
|
1406
|
+
? Array.filter(({ entry }) => __foldkitBrandViewResult((Array.contains(entry.submodelPath, maybeFilterTag.value)), "@foldkit/devtools/overlay.js#anonymous~92"))
|
|
1243
1407
|
: Function.identity);
|
|
1244
1408
|
const messageRows = pipe(indexedEntries, Array.map(({ entry, absoluteIndex }) => {
|
|
1245
1409
|
const isSelected = selectedIndex === absoluteIndex;
|
|
@@ -1252,11 +1416,11 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1252
1416
|
isPausedHere,
|
|
1253
1417
|
entry.timestamp - baseTimestamp,
|
|
1254
1418
|
entry.isModelChanged,
|
|
1255
|
-
])), "@foldkit/devtools/overlay.js#anonymous~
|
|
1419
|
+
])), "@foldkit/devtools/overlay.js#anonymous~93");
|
|
1256
1420
|
}), Array.reverse);
|
|
1257
1421
|
return __foldkitBrandViewResult((h.ul([
|
|
1258
1422
|
h.Class('message-list flex-1 overflow-y-auto min-h-0 overscroll-none'),
|
|
1259
|
-
h.OnScroll(scrollTop => __foldkitBrandViewResult((Message.ScrolledMessageList({ scrollTop })), "@foldkit/devtools/overlay.js#anonymous~
|
|
1423
|
+
h.OnScroll(scrollTop => __foldkitBrandViewResult((Message.ScrolledMessageList({ scrollTop })), "@foldkit/devtools/overlay.js#anonymous~94")),
|
|
1260
1424
|
], isFiltered
|
|
1261
1425
|
? messageRows
|
|
1262
1426
|
: [
|
|
@@ -1384,13 +1548,13 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1384
1548
|
inspectorPaneView(model),
|
|
1385
1549
|
])), "@foldkit/devtools/overlay.js#messagesScreenView");
|
|
1386
1550
|
};
|
|
1387
|
-
const contentView = (model) => __foldkitBrandViewResult((Match.value(model.screen).pipe(Match.withReturnType(), Match.when('Messages', () => __foldkitBrandViewResult((messagesScreenView(model)), "@foldkit/devtools/overlay.js#anonymous~
|
|
1551
|
+
const contentView = (model) => __foldkitBrandViewResult((Match.value(model.screen).pipe(Match.withReturnType(), Match.when('Messages', () => __foldkitBrandViewResult((messagesScreenView(model)), "@foldkit/devtools/overlay.js#anonymous~95")), Match.when('Settings', () => __foldkitBrandViewResult((settingsScreenView(model)), "@foldkit/devtools/overlay.js#anonymous~96")), Match.exhaustive)), "@foldkit/devtools/overlay.js#contentView");
|
|
1388
1552
|
const panelView = (model) => __foldkitBrandViewResult((h.div([
|
|
1389
1553
|
h.Class(clsx('fixed dt-panel dt-panel-wide bg-dt-bg border rounded-lg flex flex-col overflow-hidden font-mono text-dt', PANEL_POSITION_CLASS[position])),
|
|
1390
1554
|
], [
|
|
1391
1555
|
...Option.map(maybeBanner, banner => __foldkitBrandViewResult((h.div([
|
|
1392
1556
|
h.Class('px-3 py-2 border-b text-sm text-dt-muted font-mono shrink-0 leading-snug'),
|
|
1393
|
-
], [banner])), "@foldkit/devtools/overlay.js#anonymous~
|
|
1557
|
+
], [banner])), "@foldkit/devtools/overlay.js#anonymous~97")).pipe(Option.toArray),
|
|
1394
1558
|
headerView(model),
|
|
1395
1559
|
contentView(model),
|
|
1396
1560
|
footerView(model),
|
|
@@ -1400,7 +1564,7 @@ const buildOverlayView = (position, mode, shadow, maybeBanner, h) => {
|
|
|
1400
1564
|
...OptionExt.when(model.isPaused && mode === 'TimeTravel', interactionBlocker()).pipe(Option.toArray),
|
|
1401
1565
|
...OptionExt.when(model.isOpen, panelView(model)).pipe(Option.toArray),
|
|
1402
1566
|
badgeView(model),
|
|
1403
|
-
])), "@foldkit/devtools/overlay.js#anonymous~
|
|
1567
|
+
])), "@foldkit/devtools/overlay.js#anonymous~98")), "@foldkit/devtools/overlay.js#buildOverlayView");
|
|
1404
1568
|
};
|
|
1405
1569
|
// CREATE
|
|
1406
1570
|
const VIEW_TRANSITION_NAME = 'foldkit-devtools';
|
|
@@ -1481,10 +1645,10 @@ const createShadowContainer = () => {
|
|
|
1481
1645
|
return __foldkitBrandViewResult(({ container, shadow }), "@foldkit/devtools/overlay.js#createShadowContainer");
|
|
1482
1646
|
};
|
|
1483
1647
|
export const createOverlay = (store, position, mode, maybeBanner) => __foldkitBrandViewResult((Effect.gen(function* () {
|
|
1484
|
-
const { container, shadow } = yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((createShadowContainer()), "@foldkit/devtools/overlay.js#anonymous~
|
|
1648
|
+
const { container, shadow } = yield* Effect.acquireRelease(Effect.sync(() => __foldkitBrandViewResult((createShadowContainer()), "@foldkit/devtools/overlay.js#anonymous~101")), createdShadowContainer => __foldkitBrandViewResult((Effect.sync(() => {
|
|
1485
1649
|
createdShadowContainer.shadow.host.remove();
|
|
1486
1650
|
document.getElementById(VIEW_TRANSITION_STYLE_ID)?.remove();
|
|
1487
|
-
})), "@foldkit/devtools/overlay.js#anonymous~
|
|
1651
|
+
})), "@foldkit/devtools/overlay.js#anonymous~102"));
|
|
1488
1652
|
container.id = '__foldkit_devtools_overlay__';
|
|
1489
1653
|
const flags = Effect.gen(function* () {
|
|
1490
1654
|
const storeState = yield* SubscriptionRef.get(store.stateRef);
|
|
@@ -1494,7 +1658,7 @@ export const createOverlay = (store, position, mode, maybeBanner) => __foldkitBr
|
|
|
1494
1658
|
isMobile: window.matchMedia(MOBILE_BREAKPOINT_QUERY).matches,
|
|
1495
1659
|
isFlattened,
|
|
1496
1660
|
...toDisplayState(storeState),
|
|
1497
|
-
}), "@foldkit/devtools/overlay.js#anonymous~
|
|
1661
|
+
}), "@foldkit/devtools/overlay.js#anonymous~104");
|
|
1498
1662
|
});
|
|
1499
1663
|
const init = (flags) => {
|
|
1500
1664
|
const { isFlattened, ...displayFlags } = flags;
|
|
@@ -1520,6 +1684,8 @@ export const createOverlay = (store, position, mode, maybeBanner) => __foldkitBr
|
|
|
1520
1684
|
expandedPaths: HashSet.empty(),
|
|
1521
1685
|
changedPaths: HashSet.empty(),
|
|
1522
1686
|
affectedPaths: HashSet.empty(),
|
|
1687
|
+
copyStates: HashMap.empty(),
|
|
1688
|
+
nextCopyRequestId: 0,
|
|
1523
1689
|
maybePendingScrubIndex: Option.none(),
|
|
1524
1690
|
inspectorTabs: Tabs.init({ id: INSPECTOR_TABS_ID }),
|
|
1525
1691
|
activeInspectorTab: 'Model',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foldkit/devtools",
|
|
3
|
-
"version": "0.166.0-canary.
|
|
3
|
+
"version": "0.166.0-canary.f86318781a4b",
|
|
4
4
|
"description": "In-browser DevTools overlay for Foldkit applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
],
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@effect/platform-browser": "4.0.0",
|
|
18
|
-
"@foldkit/ui": "0.166.0-canary.
|
|
18
|
+
"@foldkit/ui": "0.166.0-canary.f86318781a4b",
|
|
19
19
|
"effect": "4.0.0",
|
|
20
|
-
"foldkit": "0.166.0-canary.
|
|
20
|
+
"foldkit": "0.166.0-canary.f86318781a4b"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"clsx": "^2.1.1"
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"rimraf": "^6.1.3",
|
|
30
30
|
"typescript": "^7.0.2",
|
|
31
31
|
"vitest": "^4.1.11",
|
|
32
|
-
"@foldkit/ui": "0.166.0-canary.
|
|
33
|
-
"foldkit": "0.
|
|
34
|
-
"
|
|
32
|
+
"@foldkit/ui": "0.166.0-canary.f86318781a4b",
|
|
33
|
+
"@foldkit/vite-plugin": "0.26.1-canary.f86318781a4b",
|
|
34
|
+
"foldkit": "0.166.0-canary.f86318781a4b"
|
|
35
35
|
},
|
|
36
36
|
"keywords": [
|
|
37
37
|
"foldkit",
|