@hanzo/ui 8.27.11 → 8.27.13
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/LICENSE-APACHE +205 -0
- package/LICENSE-MIT +21 -0
- package/LICENSE.md +5 -18
- package/NOTICE +6 -0
- package/dist/agents/ChannelMembers.cjs +10 -2
- package/dist/agents/ChannelMembers.d.ts +3 -2
- package/dist/agents/ChannelMembers.d.ts.map +1 -1
- package/dist/agents/ChannelMembers.js +10 -2
- package/dist/agents/ChannelMembers.js.map +1 -1
- package/dist/agents/ChannelNotes.cjs +10 -2
- package/dist/agents/ChannelNotes.d.ts +1 -0
- package/dist/agents/ChannelNotes.d.ts.map +1 -1
- package/dist/agents/ChannelNotes.js +10 -2
- package/dist/agents/ChannelNotes.js.map +1 -1
- package/dist/agents/DiffViewer.cjs +19 -7
- package/dist/agents/DiffViewer.d.ts +1 -0
- package/dist/agents/DiffViewer.d.ts.map +1 -1
- package/dist/agents/DiffViewer.js +19 -7
- package/dist/agents/DiffViewer.js.map +1 -1
- package/dist/agents/DirectoryModal.cjs +97 -0
- package/dist/agents/DirectoryModal.d.ts +29 -0
- package/dist/agents/DirectoryModal.d.ts.map +1 -0
- package/dist/agents/DirectoryModal.js +94 -0
- package/dist/agents/DirectoryModal.js.map +1 -0
- package/dist/agents/DriveViewer.cjs +78 -0
- package/dist/agents/DriveViewer.d.ts +30 -0
- package/dist/agents/DriveViewer.d.ts.map +1 -0
- package/dist/agents/DriveViewer.js +42 -0
- package/dist/agents/DriveViewer.js.map +1 -0
- package/dist/agents/LiveVoiceCall.cjs +55 -39
- package/dist/agents/LiveVoiceCall.d.ts +7 -7
- package/dist/agents/LiveVoiceCall.d.ts.map +1 -1
- package/dist/agents/LiveVoiceCall.js +56 -40
- package/dist/agents/LiveVoiceCall.js.map +1 -1
- package/dist/agents/MCPHub.cjs +19 -8
- package/dist/agents/MCPHub.d.ts +5 -10
- package/dist/agents/MCPHub.d.ts.map +1 -1
- package/dist/agents/MCPHub.js +19 -8
- package/dist/agents/MCPHub.js.map +1 -1
- package/dist/agents/ShortcutsSheet.cjs +34 -14
- package/dist/agents/ShortcutsSheet.d.ts +7 -6
- package/dist/agents/ShortcutsSheet.d.ts.map +1 -1
- package/dist/agents/ShortcutsSheet.js +34 -14
- package/dist/agents/ShortcutsSheet.js.map +1 -1
- package/dist/agents/SwarmBar.cjs +34 -13
- package/dist/agents/SwarmBar.d.ts +7 -8
- package/dist/agents/SwarmBar.d.ts.map +1 -1
- package/dist/agents/SwarmBar.js +34 -13
- package/dist/agents/SwarmBar.js.map +1 -1
- package/dist/agents/TerminalViewer.cjs +71 -0
- package/dist/agents/TerminalViewer.d.ts +20 -0
- package/dist/agents/TerminalViewer.d.ts.map +1 -0
- package/dist/agents/TerminalViewer.js +68 -0
- package/dist/agents/TerminalViewer.js.map +1 -0
- package/dist/agents/ThemeCustomizer.cjs +29 -6
- package/dist/agents/ThemeCustomizer.d.ts +1 -0
- package/dist/agents/ThemeCustomizer.d.ts.map +1 -1
- package/dist/agents/ThemeCustomizer.js +29 -6
- package/dist/agents/ThemeCustomizer.js.map +1 -1
- package/dist/agents/index.cjs +7 -1
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +3 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/backends/gui/3d-card.d.ts +8 -8
- package/dist/backends/gui/3d-marquee.d.ts +7 -8
- package/dist/backends/gui/3d-marquee.d.ts.map +1 -1
- package/dist/backends/gui/3d-pin.d.ts +1 -1
- package/dist/backends/gui/alert.d.ts +3 -3
- package/dist/backends/gui/android.d.ts +1 -1
- package/dist/backends/gui/animated-testimonials.d.ts +1 -1
- package/dist/backends/gui/animated-tooltip.d.ts +1 -1
- package/dist/backends/gui/announcement.d.ts +1 -1
- package/dist/backends/gui/banner.d.ts +1 -1
- package/dist/backends/gui/button.d.ts +9 -1
- package/dist/backends/gui/button.d.ts.map +1 -1
- package/dist/backends/gui/button.js.map +1 -1
- package/dist/backends/gui/calendar.js.map +1 -1
- package/dist/backends/gui/card.d.ts +9 -9
- package/dist/backends/gui/command.d.ts +5 -5
- package/dist/backends/gui/command.d.ts.map +1 -1
- package/dist/backends/gui/context-menu.d.ts +17 -17
- package/dist/backends/gui/context-menu.d.ts.map +1 -1
- package/dist/backends/gui/context-menu.js.map +1 -1
- package/dist/backends/gui/credit-card.d.ts +1 -1
- package/dist/backends/gui/desktop.d.ts +1 -1
- package/dist/backends/gui/dock.d.ts +3 -3
- package/dist/backends/gui/dropdown-menu.cjs +2 -2
- package/dist/backends/gui/dropdown-menu.d.ts +19 -19
- package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
- package/dist/backends/gui/dropdown-menu.js +2 -2
- package/dist/backends/gui/dropdown-menu.js.map +1 -1
- package/dist/backends/gui/empty.d.ts +8 -8
- package/dist/backends/gui/field.d.ts +3 -3
- package/dist/backends/gui/gantt.d.ts +1 -1
- package/dist/backends/gui/glimpse.cjs +0 -4
- package/dist/backends/gui/glimpse.d.ts.map +1 -1
- package/dist/backends/gui/glimpse.js +0 -4
- package/dist/backends/gui/glimpse.js.map +1 -1
- package/dist/backends/gui/grid-pattern.d.ts +1 -2
- package/dist/backends/gui/grid-pattern.d.ts.map +1 -1
- package/dist/backends/gui/image-zoom.d.ts +1 -1
- package/dist/backends/gui/iphone-15-pro.d.ts +1 -1
- package/dist/backends/gui/item.d.ts +10 -10
- package/dist/backends/gui/list.d.ts +2 -2
- package/dist/backends/gui/macos-dock.d.ts +2 -2
- package/dist/backends/gui/magnetic.d.ts +1 -1
- package/dist/backends/gui/marquee.d.ts +1 -15
- package/dist/backends/gui/marquee.d.ts.map +1 -1
- package/dist/backends/gui/menu-dock.d.ts +1 -1
- package/dist/backends/gui/menubar.d.ts +18 -18
- package/dist/backends/gui/menubar.d.ts.map +1 -1
- package/dist/backends/gui/message-dock.d.ts +1 -1
- package/dist/backends/gui/motion-highlight.d.ts +1 -12
- package/dist/backends/gui/motion-highlight.d.ts.map +1 -1
- package/dist/backends/gui/order-entry.cjs +1 -10
- package/dist/backends/gui/order-entry.d.ts.map +1 -1
- package/dist/backends/gui/order-entry.js +1 -10
- package/dist/backends/gui/order-entry.js.map +1 -1
- package/dist/backends/gui/orders-history.cjs +1 -1
- package/dist/backends/gui/orders-history.js +1 -1
- package/dist/backends/gui/orders-history.js.map +1 -1
- package/dist/backends/gui/pagination.d.ts +4 -4
- package/dist/backends/gui/qr-code.d.ts +1 -2
- package/dist/backends/gui/qr-code.d.ts.map +1 -1
- package/dist/backends/gui/scroll-area.d.ts +3 -14
- package/dist/backends/gui/scroll-area.d.ts.map +1 -1
- package/dist/backends/gui/select.cjs +1 -1
- package/dist/backends/gui/select.d.ts +1 -1
- package/dist/backends/gui/select.d.ts.map +1 -1
- package/dist/backends/gui/select.js +1 -1
- package/dist/backends/gui/select.js.map +1 -1
- package/dist/backends/gui/sheet.d.ts +3 -3
- package/dist/backends/gui/sheet.d.ts.map +1 -1
- package/dist/backends/gui/status.d.ts +1 -1
- package/dist/backends/gui/table.d.ts +8 -8
- package/dist/backends/gui/toaster.d.ts +1 -15
- package/dist/backends/gui/toaster.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.cjs +3 -3
- package/dist/backends/gui/toggle-group.d.ts +1 -1
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +3 -3
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/backends/gui/toggle.d.ts +1 -1
- package/dist/backends/gui/video-player.d.ts +1 -1
- package/dist/chat/Composer.cjs +10 -10
- package/dist/chat/Composer.d.ts +17 -16
- package/dist/chat/Composer.d.ts.map +1 -1
- package/dist/chat/Composer.js +11 -11
- package/dist/chat/Composer.js.map +1 -1
- package/dist/chat/Thread.d.ts +2 -8
- package/dist/chat/Thread.d.ts.map +1 -1
- package/dist/gallery.cjs +1 -180
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +308 -641
- package/dist/gallery.js +2 -181
- package/dist/gallery.js.map +1 -1
- package/dist/gui-config.cjs +5 -0
- package/dist/gui-config.d.ts +18 -3
- package/dist/gui-config.d.ts.map +1 -1
- package/dist/gui-config.js +5 -0
- package/dist/gui-config.js.map +1 -1
- package/dist/styles/motion.css +57 -2
- package/dist/styles.css +181 -482
- package/package.json +21 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toaster.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toaster.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,oBAAoB,CAAA;AAG3B,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,MAAM,CACF,OAAO,GACP,OAAO,GACP,aAAa,GACb,MAAM,GACN,cAAc,GACd,cAAc,GACd,aAAa,EACf,MAAM,CACP,CACF,CAAA;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC;IACzE,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAA;CAClE;AAED,QAAA,MAAM,OAAO,8FAGX,CAAA;AAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -97,13 +97,13 @@ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orie
|
|
|
97
97
|
disableDeactivation,
|
|
98
98
|
}, role: type === 'single' ? 'radiogroup' : 'toolbar', orientation: orientation, disabled: disabled, flexDirection: orientation === 'vertical' ? 'column' : 'row', items: "center", gap: "$1", ...props, children: (0, jsx_runtime_1.jsx)(GroupContext.Provider, { value: { type, selected, variant, size, disabled }, children: children }) }));
|
|
99
99
|
}
|
|
100
|
-
function ToggleGroupItem({ variant, size, disabled, children, ...props }) {
|
|
100
|
+
function ToggleGroupItem({ variant, size, disabled, children, value, ...props }) {
|
|
101
101
|
const group = (0, react_1.useContext)(GroupContext);
|
|
102
102
|
const v = group.variant ?? variant ?? 'default';
|
|
103
103
|
const s = group.size ?? size ?? 'default';
|
|
104
|
-
const on = group.selected.includes(
|
|
104
|
+
const on = group.selected.includes(value);
|
|
105
105
|
const off = disabled || group.disabled;
|
|
106
|
-
return ((0, jsx_runtime_1.jsx)(gui_1.ToggleGroup.Item, { ...(0, slot_1.slot)('toggle-group-item'), "data-variant": v, "data-size": s,
|
|
106
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.ToggleGroup.Item, { value: value, ...(0, slot_1.slot)('toggle-group-item'), "data-variant": v, "data-size": s,
|
|
107
107
|
// The two Radix semantics gui drops in `single` mode. `aria-pressed` is
|
|
108
108
|
// left alone for `multiple`, where gui already sets it from the same state.
|
|
109
109
|
role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: RING, ...REST[v], activeStyle: ON[v], ...(0, gesture_1.touch)(HEIGHT[s], 44, 'y'), ...props, children: (0, ink_1.ink)(children, undefined, {
|
|
@@ -106,6 +106,6 @@ export type ToggleGroupItemProps = Omit<ComponentProps<typeof GuiToggleGroup.Ite
|
|
|
106
106
|
variant?: ToggleGroupVariant;
|
|
107
107
|
size?: ToggleGroupSize;
|
|
108
108
|
};
|
|
109
|
-
declare function ToggleGroupItem({ variant, size, disabled, children, ...props }: ToggleGroupItemProps): import("react").JSX.Element;
|
|
109
|
+
declare function ToggleGroupItem({ variant, size, disabled, children, value, ...props }: ToggleGroupItemProps): import("react").JSX.Element;
|
|
110
110
|
export { ToggleGroup, ToggleGroupItem };
|
|
111
111
|
//# sourceMappingURL=toggle-group.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BA+CpG;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -93,13 +93,13 @@ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orie
|
|
|
93
93
|
disableDeactivation,
|
|
94
94
|
}, role: type === 'single' ? 'radiogroup' : 'toolbar', orientation: orientation, disabled: disabled, flexDirection: orientation === 'vertical' ? 'column' : 'row', items: "center", gap: "$1", ...props, children: _jsx(GroupContext.Provider, { value: { type, selected, variant, size, disabled }, children: children }) }));
|
|
95
95
|
}
|
|
96
|
-
function ToggleGroupItem({ variant, size, disabled, children, ...props }) {
|
|
96
|
+
function ToggleGroupItem({ variant, size, disabled, children, value, ...props }) {
|
|
97
97
|
const group = useContext(GroupContext);
|
|
98
98
|
const v = group.variant ?? variant ?? 'default';
|
|
99
99
|
const s = group.size ?? size ?? 'default';
|
|
100
|
-
const on = group.selected.includes(
|
|
100
|
+
const on = group.selected.includes(value);
|
|
101
101
|
const off = disabled || group.disabled;
|
|
102
|
-
return (_jsx(GuiToggleGroup.Item, { ...slot('toggle-group-item'), "data-variant": v, "data-size": s,
|
|
102
|
+
return (_jsx(GuiToggleGroup.Item, { value: value, ...slot('toggle-group-item'), "data-variant": v, "data-size": s,
|
|
103
103
|
// The two Radix semantics gui drops in `single` mode. `aria-pressed` is
|
|
104
104
|
// left alone for `multiple`, where gui already sets it from the same state.
|
|
105
105
|
role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: RING, ...REST[v], activeStyle: ON[v], ...touch(HEIGHT[s], 44, 'y'), ...props, children: ink(children, undefined, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentProps, MouseEventHandler, ReactNode } from 'react';
|
|
2
2
|
export type ToggleVariant = 'default' | 'outline';
|
|
3
3
|
export type ToggleSize = 'default' | 'sm' | 'lg';
|
|
4
|
-
declare const ToggleFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer,
|
|
4
|
+
declare const ToggleFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, any, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
|
|
5
5
|
disabled?: boolean | undefined;
|
|
6
6
|
elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
|
|
7
7
|
fullscreen?: boolean | undefined;
|
|
@@ -24,7 +24,7 @@ export type MediaSubtitleTrack = {
|
|
|
24
24
|
default?: boolean;
|
|
25
25
|
};
|
|
26
26
|
export type MediaPlayerSize = 'sm' | 'md' | 'lg' | 'full';
|
|
27
|
-
declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer,
|
|
27
|
+
declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, any, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
|
|
28
28
|
elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
|
|
29
29
|
fullscreen?: boolean | undefined;
|
|
30
30
|
size?: "full" | "lg" | "md" | "sm" | undefined;
|
package/dist/chat/Composer.cjs
CHANGED
|
@@ -7,20 +7,20 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
7
7
|
/**
|
|
8
8
|
* Composer — the one chat input for every Hanzo surface.
|
|
9
9
|
*
|
|
10
|
-
* ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
|
|
11
|
-
* fills; everything else is the same everywhere.
|
|
12
|
-
*
|
|
13
10
|
* Presentational and controlled: it owns no draft, no transport and no model
|
|
14
|
-
* state.
|
|
11
|
+
* state. `children` is the toolbar slot, which is where a surface puts its
|
|
12
|
+
* `ModelSelector`, attachment control or mode chips — that keeps the shell the
|
|
13
|
+
* same everywhere while the affordances stay per-surface.
|
|
15
14
|
*
|
|
16
15
|
* The send control is the same button in both states: it submits, and while a
|
|
17
|
-
* turn is in flight it stops.
|
|
16
|
+
* turn is in flight it stops. Two buttons in one place was the thing every
|
|
17
|
+
* surface got subtly different.
|
|
18
18
|
*
|
|
19
19
|
* Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
|
|
20
20
|
* floats inside, and history recall needs a turn store this has no view of.
|
|
21
21
|
*
|
|
22
|
-
* Growth is `Textarea`'s and follows the content
|
|
23
|
-
* `maxHeight` the ceiling.
|
|
22
|
+
* Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
|
|
23
|
+
* the field. `rows` is the floor, `maxHeight` the ceiling.
|
|
24
24
|
*/
|
|
25
25
|
const gui_1 = require("@hanzo/gui");
|
|
26
26
|
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
@@ -44,7 +44,7 @@ const FLOOR = 44;
|
|
|
44
44
|
* changes — which is what a model-named placeholder forces a surface to do.
|
|
45
45
|
*/
|
|
46
46
|
exports.ASK = 'Ask anything';
|
|
47
|
-
function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = exports.ASK, rows = MIN_ROWS, maxHeight = CEILING,
|
|
47
|
+
function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = exports.ASK, rows = MIN_ROWS, maxHeight = CEILING, children, hint, label, field, send, ...props }) {
|
|
48
48
|
const sendable = (0, send_1.ready)(value, busy, disabled);
|
|
49
49
|
const keyed = (e) => {
|
|
50
50
|
const key = e.key ?? e.nativeEvent?.key ?? '';
|
|
@@ -64,12 +64,12 @@ function Composer({ value, onChange, onSend, onStop, busy = false, disabled = fa
|
|
|
64
64
|
if (sendable)
|
|
65
65
|
onSend();
|
|
66
66
|
};
|
|
67
|
-
return ((0, jsx_runtime_1.jsxs)(gui_1.
|
|
67
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('composer'), width: "100%", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, gap: PAD, ...props, children: [(0, jsx_runtime_1.jsx)(gui_2.Textarea, { ...(0, slot_1.slot)('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
|
|
68
68
|
// After `field`: spread over, a caller's `onKeyDown` would replace the
|
|
69
69
|
// Enter rule and the IME guard. Theirs runs first and can claim the key.
|
|
70
70
|
value: value, onChangeText: onChange, onKeyDown: (e) => {
|
|
71
71
|
field?.onKeyDown?.(e);
|
|
72
72
|
if (!e?.defaultPrevented)
|
|
73
73
|
keyed(e);
|
|
74
|
-
} }),
|
|
74
|
+
} }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: PAD, children: [children, (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), hint ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$soft", children: hint })) : null, send ?? ((0, jsx_runtime_1.jsx)(gui_2.Button, { ...(0, slot_1.slot)('composer-send'), size: "sm", disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Square, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ArrowUp, { size: 16 }) }))] })] }));
|
|
75
75
|
}
|
package/dist/chat/Composer.d.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Composer — the one chat input for every Hanzo surface.
|
|
3
3
|
*
|
|
4
|
-
* ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
|
|
5
|
-
* fills; everything else is the same everywhere.
|
|
6
|
-
*
|
|
7
4
|
* Presentational and controlled: it owns no draft, no transport and no model
|
|
8
|
-
* state.
|
|
5
|
+
* state. `children` is the toolbar slot, which is where a surface puts its
|
|
6
|
+
* `ModelSelector`, attachment control or mode chips — that keeps the shell the
|
|
7
|
+
* same everywhere while the affordances stay per-surface.
|
|
9
8
|
*
|
|
10
9
|
* The send control is the same button in both states: it submits, and while a
|
|
11
|
-
* turn is in flight it stops.
|
|
10
|
+
* turn is in flight it stops. Two buttons in one place was the thing every
|
|
11
|
+
* surface got subtly different.
|
|
12
12
|
*
|
|
13
13
|
* Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
|
|
14
14
|
* floats inside, and history recall needs a turn store this has no view of.
|
|
15
15
|
*
|
|
16
|
-
* Growth is `Textarea`'s and follows the content
|
|
17
|
-
* `maxHeight` the ceiling.
|
|
16
|
+
* Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
|
|
17
|
+
* the field. `rows` is the floor, `maxHeight` the ceiling.
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { YStack } from '@hanzo/gui';
|
|
20
20
|
import type { ComponentProps, ReactNode } from 'react';
|
|
21
21
|
import { Textarea } from '../backends/gui/index.js';
|
|
22
22
|
/** `onChange` is dropped: here it carries the draft, not a DOM change event. */
|
|
23
|
-
type
|
|
23
|
+
type Stack = Omit<ComponentProps<typeof YStack>, 'children' | 'onChange'>;
|
|
24
24
|
type FieldProps = Omit<ComponentProps<typeof Textarea>, 'value' | 'onChangeText'>;
|
|
25
25
|
/**
|
|
26
26
|
* The resting placeholder.
|
|
@@ -31,7 +31,7 @@ type FieldProps = Omit<ComponentProps<typeof Textarea>, 'value' | 'onChangeText'
|
|
|
31
31
|
* changes — which is what a model-named placeholder forces a surface to do.
|
|
32
32
|
*/
|
|
33
33
|
export declare const ASK = "Ask anything";
|
|
34
|
-
export interface ComposerProps extends
|
|
34
|
+
export interface ComposerProps extends Stack {
|
|
35
35
|
value: string;
|
|
36
36
|
onChange: (value: string) => void;
|
|
37
37
|
/** Called when the draft is submitted. Clearing `value` is the host's job. */
|
|
@@ -46,10 +46,10 @@ export interface ComposerProps extends Row {
|
|
|
46
46
|
rows?: number;
|
|
47
47
|
/** Ceiling for that growth, px. Past it the field scrolls instead. */
|
|
48
48
|
maxHeight?: number;
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
|
|
49
|
+
/** Toolbar slot, rendered at the start of the footer row. */
|
|
50
|
+
children?: ReactNode;
|
|
51
|
+
/** Hint shown at the end of the footer row. */
|
|
52
|
+
hint?: string;
|
|
53
53
|
/**
|
|
54
54
|
* The accessible name of the field, independent of `placeholder`.
|
|
55
55
|
*
|
|
@@ -60,9 +60,10 @@ export interface ComposerProps extends Row {
|
|
|
60
60
|
label?: string;
|
|
61
61
|
/** The field's own props — a ref, a testid, focus handlers, a paste handler. */
|
|
62
62
|
field?: FieldProps;
|
|
63
|
-
/** Replaces the send control.
|
|
63
|
+
/** Replaces the send control. `children` is the START of the footer row, so a
|
|
64
|
+
* second commit mode has nowhere else to go. */
|
|
64
65
|
send?: ReactNode;
|
|
65
66
|
}
|
|
66
|
-
export declare function Composer({ value, onChange, onSend, onStop, busy, disabled, placeholder, rows, maxHeight,
|
|
67
|
+
export declare function Composer({ value, onChange, onSend, onStop, busy, disabled, placeholder, rows, maxHeight, children, hint, label, field, send, ...props }: ComposerProps): import("react").JSX.Element;
|
|
67
68
|
export {};
|
|
68
69
|
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAuB,MAAM,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAIlD,gFAAgF;AAChF,KAAK,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAA;AACzE,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,CAAA;AAajF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,iBAAiB,CAAA;AAEjC,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB;qDACiD;IACjD,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAY,EACZ,QAAgB,EAChB,WAAiB,EACjB,IAAe,EACf,SAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,+BAyEf"}
|
package/dist/chat/Composer.js
CHANGED
|
@@ -3,22 +3,22 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
/**
|
|
4
4
|
* Composer — the one chat input for every Hanzo surface.
|
|
5
5
|
*
|
|
6
|
-
* ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
|
|
7
|
-
* fills; everything else is the same everywhere.
|
|
8
|
-
*
|
|
9
6
|
* Presentational and controlled: it owns no draft, no transport and no model
|
|
10
|
-
* state.
|
|
7
|
+
* state. `children` is the toolbar slot, which is where a surface puts its
|
|
8
|
+
* `ModelSelector`, attachment control or mode chips — that keeps the shell the
|
|
9
|
+
* same everywhere while the affordances stay per-surface.
|
|
11
10
|
*
|
|
12
11
|
* The send control is the same button in both states: it submits, and while a
|
|
13
|
-
* turn is in flight it stops.
|
|
12
|
+
* turn is in flight it stops. Two buttons in one place was the thing every
|
|
13
|
+
* surface got subtly different.
|
|
14
14
|
*
|
|
15
15
|
* Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
|
|
16
16
|
* floats inside, and history recall needs a turn store this has no view of.
|
|
17
17
|
*
|
|
18
|
-
* Growth is `Textarea`'s and follows the content
|
|
19
|
-
* `maxHeight` the ceiling.
|
|
18
|
+
* Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
|
|
19
|
+
* the field. `rows` is the floor, `maxHeight` the ceiling.
|
|
20
20
|
*/
|
|
21
|
-
import { XStack } from '@hanzo/gui';
|
|
21
|
+
import { SizableText, XStack, YStack } from '@hanzo/gui';
|
|
22
22
|
import { ArrowUp, Square } from '@hanzogui/lucide-icons-2';
|
|
23
23
|
import { Button, Textarea } from '../backends/gui/index.js';
|
|
24
24
|
import { slot } from '../backends/gui/slot.js';
|
|
@@ -40,7 +40,7 @@ const FLOOR = 44;
|
|
|
40
40
|
* changes — which is what a model-named placeholder forces a surface to do.
|
|
41
41
|
*/
|
|
42
42
|
export const ASK = 'Ask anything';
|
|
43
|
-
export function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = ASK, rows = MIN_ROWS, maxHeight = CEILING,
|
|
43
|
+
export function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = ASK, rows = MIN_ROWS, maxHeight = CEILING, children, hint, label, field, send, ...props }) {
|
|
44
44
|
const sendable = ready(value, busy, disabled);
|
|
45
45
|
const keyed = (e) => {
|
|
46
46
|
const key = e.key ?? e.nativeEvent?.key ?? '';
|
|
@@ -60,13 +60,13 @@ export function Composer({ value, onChange, onSend, onStop, busy = false, disabl
|
|
|
60
60
|
if (sendable)
|
|
61
61
|
onSend();
|
|
62
62
|
};
|
|
63
|
-
return (_jsxs(
|
|
63
|
+
return (_jsxs(YStack, { ...slot('composer'), width: "100%", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, gap: PAD, ...props, children: [_jsx(Textarea, { ...slot('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
|
|
64
64
|
// After `field`: spread over, a caller's `onKeyDown` would replace the
|
|
65
65
|
// Enter rule and the IME guard. Theirs runs first and can claim the key.
|
|
66
66
|
value: value, onChangeText: onChange, onKeyDown: (e) => {
|
|
67
67
|
field?.onKeyDown?.(e);
|
|
68
68
|
if (!e?.defaultPrevented)
|
|
69
69
|
keyed(e);
|
|
70
|
-
} }),
|
|
70
|
+
} }), _jsxs(XStack, { items: "center", gap: PAD, children: [children, _jsx(XStack, { flex: 1 }), hint ? (_jsx(SizableText, { size: "$1", color: "$soft", children: hint })) : null, send ?? (_jsx(Button, { ...slot('composer-send'), size: "sm", disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? _jsx(Square, { size: 14 }) : _jsx(ArrowUp, { size: 16 }) }))] })] }));
|
|
71
71
|
}
|
|
72
72
|
//# sourceMappingURL=Composer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"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"}
|
package/dist/chat/Thread.d.ts
CHANGED
|
@@ -5,14 +5,9 @@
|
|
|
5
5
|
* scrolls up. The decision is `pinned()`; this only wires it to the platform's
|
|
6
6
|
* scroll view, so momentum and keyboard stay the host's.
|
|
7
7
|
*/
|
|
8
|
-
import { ScrollView, YStack
|
|
8
|
+
import { ScrollView, YStack } from '@hanzo/gui';
|
|
9
9
|
import { type ComponentProps, type ReactNode } from 'react';
|
|
10
10
|
import { type Track } from './stick.js';
|
|
11
|
-
type Scroller = GetRef<typeof ScrollView> & {
|
|
12
|
-
scrollToEnd(o: {
|
|
13
|
-
animated: boolean;
|
|
14
|
-
}): void;
|
|
15
|
-
};
|
|
16
11
|
export interface ThreadProps extends Omit<ComponentProps<typeof ScrollView>, 'children' | 'onScroll'> {
|
|
17
12
|
children?: ReactNode;
|
|
18
13
|
/** Reading-measure cap. Pass `0` to fill the container. */
|
|
@@ -28,6 +23,5 @@ export interface ThreadProps extends Omit<ComponentProps<typeof ScrollView>, 'ch
|
|
|
28
23
|
/** The column that holds the turns, for a surface that needs to reach it. */
|
|
29
24
|
column?: Omit<ComponentProps<typeof YStack>, 'children'>;
|
|
30
25
|
}
|
|
31
|
-
export declare const Thread: import("react").ForwardRefExoticComponent<Omit<ThreadProps, "ref"> & import("react").RefAttributes<
|
|
32
|
-
export {};
|
|
26
|
+
export declare const Thread: import("react").ForwardRefExoticComponent<Omit<ThreadProps, "ref"> & import("react").RefAttributes<any>>;
|
|
33
27
|
//# sourceMappingURL=Thread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/chat/Thread.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/chat/Thread.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAe,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAmC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG5F,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAOnD,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;IAC1E,6EAA6E;IAC7E,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;CACzD;AAED,eAAO,MAAM,MAAM,0GA6DjB,CAAA"}
|