@cocoar/vue-ui 1.10.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/checkbox/CoarCheckbox.vue.d.ts +2 -2
- package/dist/components/checkbox/CoarCheckbox.vue.d.ts.map +1 -1
- package/dist/components/date-time/plain-date-picker/CoarPlainDatePicker.vue.d.ts +1 -1
- package/dist/components/date-time/plain-date-picker/CoarPlainDatePicker.vue.d.ts.map +1 -1
- package/dist/components/date-time/plain-date-time-picker/CoarPlainDateTimePicker.vue.d.ts +1 -1
- package/dist/components/date-time/plain-date-time-picker/CoarPlainDateTimePicker.vue.d.ts.map +1 -1
- package/dist/components/date-time/zoned-date-time-picker/CoarZonedDateTimePicker.vue.d.ts +1 -1
- package/dist/components/date-time/zoned-date-time-picker/CoarZonedDateTimePicker.vue.d.ts.map +1 -1
- package/dist/components/dual-listbox/CoarDualListbox.vue.d.ts +110 -0
- package/dist/components/dual-listbox/CoarDualListbox.vue.d.ts.map +1 -0
- package/dist/components/dual-listbox/index.d.ts +3 -0
- package/dist/components/dual-listbox/index.d.ts.map +1 -0
- package/dist/components/form-field/CoarFormField.vue.d.ts +1 -1
- package/dist/components/form-field/CoarFormField.vue.d.ts.map +1 -1
- package/dist/components/listbox/CoarListbox.vue.d.ts +227 -0
- package/dist/components/listbox/CoarListbox.vue.d.ts.map +1 -0
- package/dist/components/listbox/index.d.ts +4 -0
- package/dist/components/listbox/index.d.ts.map +1 -0
- package/dist/components/listbox/types.d.ts +79 -0
- package/dist/components/listbox/types.d.ts.map +1 -0
- package/dist/components/menu/CoarContextMenu.vue.d.ts +5 -22
- package/dist/components/menu/CoarContextMenu.vue.d.ts.map +1 -1
- package/dist/components/menu/CoarContextMenuPanel.vue.d.ts +26 -0
- package/dist/components/menu/CoarContextMenuPanel.vue.d.ts.map +1 -0
- package/dist/components/menu/CoarSubFlyout.vue.d.ts +1 -20
- package/dist/components/menu/CoarSubFlyout.vue.d.ts.map +1 -1
- package/dist/components/menu/CoarSubFlyoutPanel.vue.d.ts +53 -0
- package/dist/components/menu/CoarSubFlyoutPanel.vue.d.ts.map +1 -0
- package/dist/components/overlay/CoarOverlayOutlet.vue.d.ts.map +1 -1
- package/dist/components/overlay/index.d.ts +2 -2
- package/dist/components/overlay/index.d.ts.map +1 -1
- package/dist/components/overlay/overlay-presets.d.ts +42 -2
- package/dist/components/overlay/overlay-presets.d.ts.map +1 -1
- package/dist/components/overlay/overlay-service.d.ts +7 -2
- package/dist/components/overlay/overlay-service.d.ts.map +1 -1
- package/dist/components/overlay/useOverlay.d.ts +27 -1
- package/dist/components/overlay/useOverlay.d.ts.map +1 -1
- package/dist/components/popover/CoarPopover.vue.d.ts +3 -4
- package/dist/components/popover/CoarPopover.vue.d.ts.map +1 -1
- package/dist/components/popover/CoarPopoverPanel.vue.d.ts +36 -0
- package/dist/components/popover/CoarPopoverPanel.vue.d.ts.map +1 -0
- package/dist/components/progress-bar/CoarProgressBar.vue.d.ts +1 -1
- package/dist/components/progress-bar/CoarProgressBar.vue.d.ts.map +1 -1
- package/dist/components/radio-group/CoarRadioGroup.vue.d.ts +1 -1
- package/dist/components/radio-group/CoarRadioGroup.vue.d.ts.map +1 -1
- package/dist/components/select/CoarMultiSelect.vue.d.ts.map +1 -1
- package/dist/components/select/CoarMultiSelectDropdownPanel.vue.d.ts +32 -0
- package/dist/components/select/CoarMultiSelectDropdownPanel.vue.d.ts.map +1 -0
- package/dist/components/select/CoarSelect.vue.d.ts.map +1 -1
- package/dist/components/select/CoarSelectDropdownPanel.vue.d.ts +27 -0
- package/dist/components/select/CoarSelectDropdownPanel.vue.d.ts.map +1 -0
- package/dist/components/select/CoarTagSelect.vue.d.ts.map +1 -1
- package/dist/components/select/CoarTagSelectDropdownPanel.vue.d.ts +25 -0
- package/dist/components/select/CoarTagSelectDropdownPanel.vue.d.ts.map +1 -0
- package/dist/components/sidebar/CoarSidebarFlyoutPanel.vue.d.ts +65 -0
- package/dist/components/sidebar/CoarSidebarFlyoutPanel.vue.d.ts.map +1 -0
- package/dist/components/sidebar/CoarSidebarGroup.vue.d.ts +0 -3
- package/dist/components/sidebar/CoarSidebarGroup.vue.d.ts.map +1 -1
- package/dist/components/switch/CoarSwitch.vue.d.ts +1 -1
- package/dist/components/switch/CoarSwitch.vue.d.ts.map +1 -1
- package/dist/components/tooltip/CoarTooltipPanel.vue.d.ts +16 -0
- package/dist/components/tooltip/CoarTooltipPanel.vue.d.ts.map +1 -0
- package/dist/components/tooltip/vTooltip.d.ts +5 -1
- package/dist/components/tooltip/vTooltip.d.ts.map +1 -1
- package/dist/composables/dragRegistry.d.ts +39 -0
- package/dist/composables/dragRegistry.d.ts.map +1 -0
- package/dist/composables/index.d.ts +7 -0
- package/dist/composables/index.d.ts.map +1 -0
- package/dist/composables/useDragDrop.d.ts +109 -0
- package/dist/composables/useDragDrop.d.ts.map +1 -0
- package/dist/composables/useVirtualList.d.ts +52 -0
- package/dist/composables/useVirtualList.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5598 -4160
- package/package.json +2 -2
- package/dist/components/select/useSelectDropdown.d.ts +0 -19
- package/dist/components/select/useSelectDropdown.d.ts.map +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { PropType, VNode } from 'vue';
|
|
2
|
+
import { SidebarFlyoutParent } from './sidebar-context';
|
|
3
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
4
|
+
/** DOM id for the panel — referenced by the trigger's `aria-controls`. */
|
|
5
|
+
id: {
|
|
6
|
+
type: StringConstructor;
|
|
7
|
+
required: true;
|
|
8
|
+
};
|
|
9
|
+
/** Group label — shown as the flyout header in labels mode. */
|
|
10
|
+
label: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
required: true;
|
|
13
|
+
};
|
|
14
|
+
/** Icon-only mode — flyout switches to a narrow icon-only layout. */
|
|
15
|
+
iconOnly: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
required: true;
|
|
18
|
+
};
|
|
19
|
+
/** Parent flyout's control passed through `SIDEBAR_FLYOUT_PARENT_KEY`. */
|
|
20
|
+
parentControl: {
|
|
21
|
+
type: PropType<SidebarFlyoutParent | null>;
|
|
22
|
+
default: null;
|
|
23
|
+
};
|
|
24
|
+
/** Render function returning the default-slot VNodes from the owning group's scope. */
|
|
25
|
+
renderContent: {
|
|
26
|
+
type: PropType<() => VNode[] | undefined>;
|
|
27
|
+
required: true;
|
|
28
|
+
};
|
|
29
|
+
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
30
|
+
flyoutEnter: () => any;
|
|
31
|
+
flyoutLeave: () => any;
|
|
32
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
33
|
+
/** DOM id for the panel — referenced by the trigger's `aria-controls`. */
|
|
34
|
+
id: {
|
|
35
|
+
type: StringConstructor;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
/** Group label — shown as the flyout header in labels mode. */
|
|
39
|
+
label: {
|
|
40
|
+
type: StringConstructor;
|
|
41
|
+
required: true;
|
|
42
|
+
};
|
|
43
|
+
/** Icon-only mode — flyout switches to a narrow icon-only layout. */
|
|
44
|
+
iconOnly: {
|
|
45
|
+
type: BooleanConstructor;
|
|
46
|
+
required: true;
|
|
47
|
+
};
|
|
48
|
+
/** Parent flyout's control passed through `SIDEBAR_FLYOUT_PARENT_KEY`. */
|
|
49
|
+
parentControl: {
|
|
50
|
+
type: PropType<SidebarFlyoutParent | null>;
|
|
51
|
+
default: null;
|
|
52
|
+
};
|
|
53
|
+
/** Render function returning the default-slot VNodes from the owning group's scope. */
|
|
54
|
+
renderContent: {
|
|
55
|
+
type: PropType<() => VNode[] | undefined>;
|
|
56
|
+
required: true;
|
|
57
|
+
};
|
|
58
|
+
}>> & Readonly<{
|
|
59
|
+
onFlyoutEnter?: (() => any) | undefined;
|
|
60
|
+
onFlyoutLeave?: (() => any) | undefined;
|
|
61
|
+
}>, {
|
|
62
|
+
parentControl: SidebarFlyoutParent | null;
|
|
63
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
64
|
+
export default _default;
|
|
65
|
+
//# sourceMappingURL=CoarSidebarFlyoutPanel.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoarSidebarFlyoutPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/CoarSidebarFlyoutPanel.vue"],"names":[],"mappings":"AA0DA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;;IA0H3D,0EAA0E;;;;;IAE1E,+DAA+D;;;;;IAE/D,qEAAqE;;;;;IAErE,0EAA0E;;cACzC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;;;IACrE,uFAAuF;;cAEnE,QAAQ,CAAC,MAAM,KAAK,EAAE,GAAG,SAAS,CAAC;;;;;;;IAVvD,0EAA0E;;;;;IAE1E,+DAA+D;;;;;IAE/D,qEAAqE;;;;;IAErE,0EAA0E;;cACzC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;;;IACrE,uFAAuF;;cAEnE,QAAQ,CAAC,MAAM,KAAK,EAAE,GAAG,SAAS,CAAC;;;;;;;;;AAjBzD,wBAsBG"}
|
|
@@ -19,11 +19,9 @@ declare function __VLS_template(): {
|
|
|
19
19
|
attrs: Partial<{}>;
|
|
20
20
|
slots: {
|
|
21
21
|
default?(_: {}): any;
|
|
22
|
-
default?(_: {}): any;
|
|
23
22
|
};
|
|
24
23
|
refs: {
|
|
25
24
|
triggerRef: HTMLDivElement;
|
|
26
|
-
flyoutRef: HTMLDivElement;
|
|
27
25
|
};
|
|
28
26
|
rootEl: HTMLDivElement;
|
|
29
27
|
};
|
|
@@ -40,7 +38,6 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
40
38
|
openOnHover: boolean;
|
|
41
39
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
42
40
|
triggerRef: HTMLDivElement;
|
|
43
|
-
flyoutRef: HTMLDivElement;
|
|
44
41
|
}, HTMLDivElement>;
|
|
45
42
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
46
43
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoarSidebarGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/CoarSidebarGroup.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoarSidebarGroup.vue.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/CoarSidebarGroup.vue"],"names":[],"mappings":"AA4nBA,KAAK,WAAW,GAAG;IACf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAyMJ,KAAK,iBAAiB,GAAG;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,WAAW,CAAC;AAKhB,iBAAS,cAAc;WAwIT,OAAO,IAA6B;;yBAXpB,GAAG;;;;;;EAgBhC;AAwBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;cA7XN,OAAO;UAEX,QAAQ,GAAG,QAAQ;UAJnB,MAAM;cAMF,OAAO;iBAEJ,OAAO;;;kBAiYvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -26,8 +26,8 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
|
|
|
26
26
|
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
27
27
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
28
28
|
}>, {
|
|
29
|
-
label: string;
|
|
30
29
|
error: boolean;
|
|
30
|
+
label: string;
|
|
31
31
|
disabled: boolean;
|
|
32
32
|
id: string;
|
|
33
33
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoarSwitch.vue.d.ts","sourceRoot":"","sources":["../../../src/components/switch/CoarSwitch.vue"],"names":[],"mappings":"AAmSA,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,wBAAwB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,KAAK,WAAW,GAAG,eAAe,CAAC;AA8DnC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,WAAW,CAAC;;;;;;
|
|
1
|
+
{"version":3,"file":"CoarSwitch.vue.d.ts","sourceRoot":"","sources":["../../../src/components/switch/CoarSwitch.vue"],"names":[],"mappings":"AAmSA,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,wBAAwB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,KAAK,WAAW,GAAG,eAAe,CAAC;AA8DnC,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,WAAW,CAAC;;;;;;WA3EN,OAAO;WANP,MAAM;cAEH,OAAO;QAUb,MAAM;UAEJ,MAAM;UANN,cAAc;cAJV,OAAO;mBAMF,QAAQ,GAAG,OAAO;;AAmLpC,wBASG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Panel rendered by the overlay-service when `vTooltip` opens. The service handles
|
|
3
|
+
* teleport, positioning, z-index stacking, and the fixed-positioning that used to live
|
|
4
|
+
* inline on the tooltip element. This component is a thin visual shell around the
|
|
5
|
+
* content text.
|
|
6
|
+
*
|
|
7
|
+
* `id` is passed in so the tooltip-describing trigger (`aria-describedby`) can reference
|
|
8
|
+
* it — the service-generated host id is not exposed.
|
|
9
|
+
*/
|
|
10
|
+
type __VLS_Props = {
|
|
11
|
+
content: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
};
|
|
14
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
15
|
+
export default _default;
|
|
16
|
+
//# sourceMappingURL=CoarTooltipPanel.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoarTooltipPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/CoarTooltipPanel.vue"],"names":[],"mappings":"AA8BA;;;;;;;;GAQG;AACH,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;;AAiDF,wBAOG"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Directive } from 'vue';
|
|
2
|
+
import { OverlayInstance } from '../overlay/overlay-service';
|
|
3
|
+
import { OverlayRef } from '../overlay/overlay-types';
|
|
2
4
|
export type TooltipPlacement = 'auto' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
|
|
3
5
|
export interface TooltipOptions {
|
|
4
6
|
/** Tooltip text content */
|
|
@@ -14,7 +16,7 @@ export interface TooltipOptions {
|
|
|
14
16
|
}
|
|
15
17
|
type OpenReason = 'hover' | 'focus';
|
|
16
18
|
interface TooltipState {
|
|
17
|
-
|
|
19
|
+
overlayRef: OverlayRef | null;
|
|
18
20
|
openTimerId: number | null;
|
|
19
21
|
closeTimerId: number | null;
|
|
20
22
|
openReasons: Set<OpenReason>;
|
|
@@ -22,6 +24,8 @@ interface TooltipState {
|
|
|
22
24
|
tooltipId: string;
|
|
23
25
|
cleanup: (() => void) | null;
|
|
24
26
|
opts: TooltipOptions;
|
|
27
|
+
/** Resolved at `mounted` from the host component's provides chain; `undefined` = root overlay. */
|
|
28
|
+
parentOverlay: OverlayInstance | undefined;
|
|
25
29
|
onPointerDown: () => void;
|
|
26
30
|
onMouseEnter: () => void;
|
|
27
31
|
onMouseLeave: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/vTooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"vTooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/vTooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,SAAS,EAAyB,MAAM,KAAK,CAAC;AAGrG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAC;AAGtE,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpC,UAAU,YAAY;IACpB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,kGAAkG;IAClG,aAAa,EAAE,eAAe,GAAG,SAAS,CAAC;IAC3C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACrC;AAuMD,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AACD,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED,eAAO,MAAM,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CA2GpE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module-level registry that carries live item references across HTML5 drag-and-drop
|
|
3
|
+
* events. Used by {@link useDragDrop} to exchange payloads between independent Vue
|
|
4
|
+
* components — the browser's `DataTransfer` API only accepts strings, so we serialize
|
|
5
|
+
* a drag id there and keep the actual payload (with object identity preserved) here.
|
|
6
|
+
*
|
|
7
|
+
* Exported for advanced integrations that want to implement their own drag handlers
|
|
8
|
+
* while staying compatible with {@link useDragDrop}'s matching rules.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DRAG_MIME = "application/x-coar-dnd";
|
|
11
|
+
export interface DragEntry<T = unknown> {
|
|
12
|
+
/** Random drag-session id (stored in DataTransfer as a string). */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Stable id of the source surface — used to detect self-drops. */
|
|
15
|
+
sourceId: string;
|
|
16
|
+
/** Public identifier the consumer gave the source via `dragId`, if any. */
|
|
17
|
+
fromId: string | null;
|
|
18
|
+
/** Optional drag group name. Only surfaces sharing a group accept each other's items. */
|
|
19
|
+
dragGroup: string | null;
|
|
20
|
+
/** The actual items being dragged. */
|
|
21
|
+
items: readonly T[];
|
|
22
|
+
/**
|
|
23
|
+
* Invoked by the drop target when it accepts the drop. The source uses this to
|
|
24
|
+
* emit its "items-removed" callback synchronously — avoiding the brief "duplicated
|
|
25
|
+
* items" window between `drop` on the target and `dragend` on the source.
|
|
26
|
+
*/
|
|
27
|
+
onAcceptedBy?: (targetId: string, insertIndex: number | null) => void;
|
|
28
|
+
/** Flag set by a target on accept so the source's `dragend` can report `dropped: true`. */
|
|
29
|
+
consumed?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function registerDrag<T>(entry: DragEntry<T>): void;
|
|
32
|
+
export declare function getDrag<T>(id: string): DragEntry<T> | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the drag session currently in flight — readable during `dragover`
|
|
35
|
+
* events, where the browser refuses to expose `DataTransfer.getData()`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getActiveDrag<T>(): DragEntry<T> | undefined;
|
|
38
|
+
export declare function deleteDrag(id: string): void;
|
|
39
|
+
//# sourceMappingURL=dragRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dragRegistry.d.ts","sourceRoot":"","sources":["../../src/composables/dragRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,SAAS,2BAA2B,CAAC;AAElD,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IACpC,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,yFAAyF;IACzF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sCAAsC;IACtC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAKD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAGzD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAE/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAE3D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG3C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { useVirtualList } from './useVirtualList';
|
|
2
|
+
export type { UseVirtualListOptions, UseVirtualListReturn, VirtualRow, } from './useVirtualList';
|
|
3
|
+
export { useDragDrop } from './useDragDrop';
|
|
4
|
+
export type { UseDragDropOptions, UseDragDropReturn, DropPayload, } from './useDragDrop';
|
|
5
|
+
export { DRAG_MIME, registerDrag, getDrag, getActiveDrag, deleteDrag, } from './dragRegistry';
|
|
6
|
+
export type { DragEntry } from './dragRegistry';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from 'vue';
|
|
2
|
+
/** Payload surfaced to `canDrop` checks and the `onDropAccept` callback. */
|
|
3
|
+
export interface DropPayload<T> {
|
|
4
|
+
/** The items being dropped. */
|
|
5
|
+
items: readonly T[];
|
|
6
|
+
/** Public identifier of the source surface, if it set `dragId`. */
|
|
7
|
+
fromId: string | null;
|
|
8
|
+
/** Drag group of the source surface. */
|
|
9
|
+
fromGroup: string | null;
|
|
10
|
+
/** True when the source and target are the same surface (drag within one list). */
|
|
11
|
+
fromSelf: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface UseDragDropOptions<T> {
|
|
14
|
+
/** Public identifier for this surface. Auto-generated per instance if not set. */
|
|
15
|
+
dragId?: MaybeRefOrGetter<string | undefined>;
|
|
16
|
+
/**
|
|
17
|
+
* Shared name linking compatible surfaces. Items can only cross between surfaces
|
|
18
|
+
* with the same `dragGroup`. A surface without a group still accepts self-drops.
|
|
19
|
+
*/
|
|
20
|
+
dragGroup?: MaybeRefOrGetter<string | undefined>;
|
|
21
|
+
/**
|
|
22
|
+
* Whitelist of source `dragId`s this surface accepts items from. When set, drops
|
|
23
|
+
* are only accepted if the source's `dragId` is listed. Unset = accept from any
|
|
24
|
+
* surface in the same `dragGroup`.
|
|
25
|
+
*/
|
|
26
|
+
dragAccept?: MaybeRefOrGetter<string[] | undefined>;
|
|
27
|
+
/**
|
|
28
|
+
* Runtime target validation. Called on `dragover` and `drop`. Return `false`
|
|
29
|
+
* to refuse the drop — the cursor shows "not allowed" and nothing happens.
|
|
30
|
+
*/
|
|
31
|
+
canDrop?: (payload: DropPayload<T>) => boolean;
|
|
32
|
+
/** Fired after `startDrag` succeeds. */
|
|
33
|
+
onDragStart?: (items: readonly T[]) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Fired on `dragend` (whether the drop was accepted or cancelled). `dropped` is
|
|
36
|
+
* `true` when some target consumed the payload.
|
|
37
|
+
*/
|
|
38
|
+
onDragEnd?: (payload: {
|
|
39
|
+
items: readonly T[];
|
|
40
|
+
dropped: boolean;
|
|
41
|
+
}) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Fired on this surface when it accepts a drop. Consumers update their own
|
|
44
|
+
* source-of-truth here (append items, insert at `insertIndex`, etc.).
|
|
45
|
+
*/
|
|
46
|
+
onDropAccept?: (payload: DropPayload<T> & {
|
|
47
|
+
insertIndex: number | null;
|
|
48
|
+
}) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Fired on the *source* surface when another target consumed its payload.
|
|
51
|
+
* Consumers update their own source-of-truth here (remove the items).
|
|
52
|
+
* Fires synchronously inside the target's `drop`, before the source's `dragend`.
|
|
53
|
+
*/
|
|
54
|
+
onItemsRemove?: (payload: {
|
|
55
|
+
items: readonly T[];
|
|
56
|
+
toGroup: string | null;
|
|
57
|
+
}) => void;
|
|
58
|
+
}
|
|
59
|
+
export interface UseDragDropReturn<T> {
|
|
60
|
+
/** Stable instance id — use it when you need to distinguish surfaces externally. */
|
|
61
|
+
instanceId: string;
|
|
62
|
+
/** `true` while a compatible drag is hovering this surface (clears on leave/drop). */
|
|
63
|
+
isDragOver: Ref<boolean>;
|
|
64
|
+
/** `true` while this surface is the source of an in-flight drag. */
|
|
65
|
+
isDragging: Ref<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Call from a `@dragstart` handler on a draggable element. Pass the payload you
|
|
68
|
+
* want to transfer. Returns `true` if the drag was registered, `false` if the
|
|
69
|
+
* event had no `dataTransfer` or items was empty.
|
|
70
|
+
*/
|
|
71
|
+
startDrag(event: DragEvent, items: readonly T[]): boolean;
|
|
72
|
+
/** Call from a `@dragend` handler on the draggable element. Cleans up the session. */
|
|
73
|
+
endDrag(): void;
|
|
74
|
+
/** Call from the drop container's `@dragover`. */
|
|
75
|
+
onDragOver(event: DragEvent): void;
|
|
76
|
+
/** Call from the drop container's `@dragleave`. */
|
|
77
|
+
onDragLeave(event: DragEvent): void;
|
|
78
|
+
/**
|
|
79
|
+
* Call from the drop container's (or an inner drop target's) `@drop`. Pass an
|
|
80
|
+
* optional `insertIndex` to tell consumers where the drop landed (null = append).
|
|
81
|
+
*/
|
|
82
|
+
onDrop(event: DragEvent, context?: {
|
|
83
|
+
insertIndex?: number | null;
|
|
84
|
+
}): void;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Framework-agnostic HTML5 drag-and-drop primitive used across Cocoar UI
|
|
88
|
+
* components. Decouples "what is being dragged" (your items) from the
|
|
89
|
+
* registration bookkeeping (group matching, whitelists, runtime validation,
|
|
90
|
+
* source-side cleanup).
|
|
91
|
+
*
|
|
92
|
+
* Usage:
|
|
93
|
+
* ```ts
|
|
94
|
+
* const dnd = useDragDrop<Row>({
|
|
95
|
+
* dragGroup: 'rows',
|
|
96
|
+
* onDropAccept: ({ items }) => { rows.value = [...rows.value, ...items] },
|
|
97
|
+
* onItemsRemove: ({ items }) => {
|
|
98
|
+
* const keep = new Set(rows.value); items.forEach(i => keep.delete(i));
|
|
99
|
+
* rows.value = [...keep];
|
|
100
|
+
* },
|
|
101
|
+
* })
|
|
102
|
+
*
|
|
103
|
+
* // In template:
|
|
104
|
+
* // <div draggable @dragstart="dnd.startDrag($event, [row])" @dragend="dnd.endDrag">
|
|
105
|
+
* // <div @dragover="dnd.onDragOver" @dragleave="dnd.onDragLeave" @drop="dnd.onDrop">
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export declare function useDragDrop<T>(opts?: UseDragDropOptions<T>): UseDragDropReturn<T>;
|
|
109
|
+
//# sourceMappingURL=useDragDrop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDragDrop.d.ts","sourceRoot":"","sources":["../../src/composables/useDragDrop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAUpE,4EAA4E;AAC5E,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,+BAA+B;IAC/B,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,mEAAmE;IACnE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wCAAwC;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,kFAAkF;IAClF,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAEpD;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAE/C,wCAAwC;IACxC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACpF;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,oEAAoE;IACpE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAGzB;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC;IAC1D,sFAAsF;IACtF,OAAO,IAAI,IAAI,CAAC;IAGhB,kDAAkD;IAClD,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,mDAAmD;IACnD,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3E;AAOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAE,kBAAkB,CAAC,CAAC,CAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CA6HrF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref, ComputedRef } from 'vue';
|
|
2
|
+
/** Options for {@link useVirtualList}. */
|
|
3
|
+
export interface UseVirtualListOptions {
|
|
4
|
+
/** Total number of items in the virtual list. */
|
|
5
|
+
count: MaybeRefOrGetter<number>;
|
|
6
|
+
/**
|
|
7
|
+
* Row height in pixels — either a fixed number, or a function that returns
|
|
8
|
+
* the height for a given index. Reactive: if you pass a ref, changes invalidate
|
|
9
|
+
* the offset cache automatically.
|
|
10
|
+
*/
|
|
11
|
+
itemSize: MaybeRefOrGetter<number | ((index: number) => number)>;
|
|
12
|
+
/** Rows rendered above/below the viewport as a scroll buffer. Default 5. */
|
|
13
|
+
overscan?: MaybeRefOrGetter<number>;
|
|
14
|
+
/** The scrollable element — typically a template ref on the scrolling container. */
|
|
15
|
+
scrollElement: Ref<HTMLElement | null>;
|
|
16
|
+
}
|
|
17
|
+
/** One positioned row produced by the virtualizer. */
|
|
18
|
+
export interface VirtualRow {
|
|
19
|
+
/** Position in the underlying list (0 .. count - 1). */
|
|
20
|
+
index: number;
|
|
21
|
+
/** Pixel offset from the top of the spacer. */
|
|
22
|
+
start: number;
|
|
23
|
+
/** Row height in pixels. */
|
|
24
|
+
size: number;
|
|
25
|
+
}
|
|
26
|
+
export interface UseVirtualListReturn {
|
|
27
|
+
/** Slice of rows currently inside the viewport + overscan window. */
|
|
28
|
+
virtualRows: ComputedRef<VirtualRow[]>;
|
|
29
|
+
/** Total pixel height of the full list — use this for the scroll spacer. */
|
|
30
|
+
totalSize: ComputedRef<number>;
|
|
31
|
+
/** Programmatically scroll an index into view. */
|
|
32
|
+
scrollToIndex(index: number, align?: 'auto' | 'start' | 'center' | 'end'): void;
|
|
33
|
+
/** Inspect the precomputed offset for an index (debug/tests). */
|
|
34
|
+
offsetFor(index: number): number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Minimal fixed-viewport virtualizer. Keeps a cumulative offset table so both
|
|
38
|
+
* fixed and per-index heights are O(log n) per scroll event, without any
|
|
39
|
+
* external dependencies.
|
|
40
|
+
*
|
|
41
|
+
* Usage:
|
|
42
|
+
* ```ts
|
|
43
|
+
* const scrollEl = useTemplateRef('scroll')
|
|
44
|
+
* const { virtualRows, totalSize, scrollToIndex } = useVirtualList({
|
|
45
|
+
* count: () => items.length,
|
|
46
|
+
* itemSize: 32,
|
|
47
|
+
* scrollElement: scrollEl,
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function useVirtualList(opts: UseVirtualListOptions): UseVirtualListReturn;
|
|
52
|
+
//# sourceMappingURL=useVirtualList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualList.d.ts","sourceRoot":"","sources":["../../src/composables/useVirtualList.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,GAAG,EACR,KAAK,WAAW,EACjB,MAAM,KAAK,CAAC;AAEb,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;IACjE,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,oFAAoF;IACpF,aAAa,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACxC;AAED,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,WAAW,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACvC,4EAA4E;IAC5E,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,kDAAkD;IAClD,aAAa,CACX,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAC1C,IAAI,CAAC;IACR,iEAAiE;IACjE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,oBAAoB,CA0KhF"}
|