@liwe3/webcomponents-svelte 1.0.14 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +46 -0
  2. package/dist/AIMarkdownEditor.svelte +179 -0
  3. package/dist/AIMarkdownEditor.svelte.d.ts +30 -0
  4. package/dist/AIMarkdownEditor.svelte.d.ts.map +1 -0
  5. package/dist/AITextEditor.svelte +28 -27
  6. package/dist/AITextEditor.svelte.d.ts +1 -0
  7. package/dist/AITextEditor.svelte.d.ts.map +1 -1
  8. package/dist/ButtonToolbar.svelte +55 -0
  9. package/dist/ButtonToolbar.svelte.d.ts +15 -0
  10. package/dist/ButtonToolbar.svelte.d.ts.map +1 -0
  11. package/dist/CheckList.svelte +87 -0
  12. package/dist/CheckList.svelte.d.ts +11 -0
  13. package/dist/CheckList.svelte.d.ts.map +1 -0
  14. package/dist/ChunkUploader.svelte +211 -0
  15. package/dist/ChunkUploader.svelte.d.ts +29 -0
  16. package/dist/ChunkUploader.svelte.d.ts.map +1 -0
  17. package/dist/ContainerBox.svelte +58 -0
  18. package/dist/ContainerBox.svelte.d.ts +11 -0
  19. package/dist/ContainerBox.svelte.d.ts.map +1 -0
  20. package/dist/Dialogs.svelte +82 -0
  21. package/dist/Dialogs.svelte.d.ts +65 -0
  22. package/dist/Dialogs.svelte.d.ts.map +1 -0
  23. package/dist/Drawer.svelte +201 -0
  24. package/dist/Drawer.svelte.d.ts +33 -0
  25. package/dist/Drawer.svelte.d.ts.map +1 -0
  26. package/dist/MarkdownPreview.svelte +50 -0
  27. package/dist/MarkdownPreview.svelte.d.ts +9 -0
  28. package/dist/MarkdownPreview.svelte.d.ts.map +1 -0
  29. package/dist/ResizableCropper.svelte +168 -0
  30. package/dist/ResizableCropper.svelte.d.ts +24 -0
  31. package/dist/ResizableCropper.svelte.d.ts.map +1 -0
  32. package/dist/Toasts.svelte +6 -2
  33. package/dist/Toasts.svelte.d.ts +4 -2
  34. package/dist/Toasts.svelte.d.ts.map +1 -1
  35. package/dist/TreeView.svelte +103 -0
  36. package/dist/TreeView.svelte.d.ts +28 -0
  37. package/dist/TreeView.svelte.d.ts.map +1 -0
  38. package/dist/index.d.ts +12 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +15 -0
  41. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ import type { Snippet } from "svelte";
2
+ type DrawerDirection = "horizontal" | "vertical";
3
+ type DrawerState = "expanded" | "shrunk" | "closed";
4
+ interface Props {
5
+ direction?: DrawerDirection;
6
+ duration?: number;
7
+ showTitleWhenShrunk?: boolean;
8
+ closable?: boolean;
9
+ title?: string;
10
+ icon?: string;
11
+ state?: DrawerState;
12
+ showToggleButton?: boolean;
13
+ contentPadding?: string;
14
+ onstatechange?: (event: CustomEvent<{
15
+ oldState: DrawerState;
16
+ newState: DrawerState;
17
+ }>) => void;
18
+ onexpanded?: (event: CustomEvent) => void;
19
+ onshrunk?: (event: CustomEvent) => void;
20
+ onclosed?: (event: CustomEvent) => void;
21
+ children?: Snippet;
22
+ }
23
+ declare const Drawer: import("svelte").Component<Props, {
24
+ /** Expand the drawer programmatically. */ expand: () => void;
25
+ /** Shrink the drawer to its collapsed size. */ shrink: () => void;
26
+ /** Close the drawer and remove it from the DOM. */ close: () => void;
27
+ /** Toggle between expanded and shrunk states. */ toggle: () => void;
28
+ /** Return the current drawer state. */ getState: () => DrawerState;
29
+ /** Imperatively set the drawer state. */ setState: (nextState: DrawerState) => void;
30
+ }, "state">;
31
+ type Drawer = ReturnType<typeof Drawer>;
32
+ export default Drawer;
33
+ //# sourceMappingURL=Drawer.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Drawer.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,eAAe,GAAG,YAAY,GAAG,UAAU,CAAC;AACjD,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkBpD,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,WAAW,CAAC;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAE,CAAC,KACjE,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiLH,QAAA,MAAM,MAAM;IANZ,0CAA0C;IAC1C,+CAA+C;IAC/C,mDAAmD;IACnD,iDAAiD;IACjD,uCAAuC,iBAxBf,WAAW;IAyBnC,yCAAyC,uBApBT,WAAW;WAqBS,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+
4
+ interface Props {
5
+ value?: string;
6
+ libUrl?: string;
7
+ onlibraryloaded?: () => void;
8
+ }
9
+
10
+ let {
11
+ value = "",
12
+ libUrl = "https://cdn.jsdelivr.net/npm/marked@4.3.0/marked.min.js",
13
+ onlibraryloaded,
14
+ }: Props = $props();
15
+
16
+ let elementRef: HTMLElement;
17
+ let webComponent = $state<any>(null);
18
+
19
+ $effect(() => {
20
+ if (webComponent) {
21
+ if (webComponent.libUrl !== libUrl) {
22
+ webComponent.libUrl = libUrl;
23
+ }
24
+ if (webComponent.value !== value) {
25
+ webComponent.value = value;
26
+ }
27
+ }
28
+ });
29
+
30
+ onMount(async (): Promise<any> => {
31
+ // Dynamically import the web component
32
+ await import("@liwe3/webcomponents/markdown-preview");
33
+
34
+ // Get reference to the web component
35
+ webComponent = elementRef;
36
+
37
+ const handleLibraryLoaded = () => {
38
+ onlibraryloaded?.();
39
+ };
40
+
41
+ webComponent.addEventListener("library-loaded", handleLibraryLoaded);
42
+
43
+ // Cleanup
44
+ return () => {
45
+ webComponent?.removeEventListener("library-loaded", handleLibraryLoaded);
46
+ };
47
+ });
48
+ </script>
49
+
50
+ <liwe3-markdown-preview bind:this={elementRef}></liwe3-markdown-preview>
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ value?: string;
3
+ libUrl?: string;
4
+ onlibraryloaded?: () => void;
5
+ }
6
+ declare const MarkdownPreview: import("svelte").Component<Props, {}, "">;
7
+ type MarkdownPreview = ReturnType<typeof MarkdownPreview>;
8
+ export default MarkdownPreview;
9
+ //# sourceMappingURL=MarkdownPreview.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownPreview.svelte.d.ts","sourceRoot":"","sources":["../src/lib/MarkdownPreview.svelte.ts"],"names":[],"mappings":"AAME,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAiDH,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -0,0 +1,168 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import type {
5
+ ResizableCropperElement as ResizableCropperElementType,
6
+ ResizableCropperValues,
7
+ } from '@liwe3/webcomponents';
8
+
9
+ interface Props extends HTMLAttributes<ResizableCropperElementType> {
10
+ width? : number;
11
+ height? : number;
12
+ minWidth? : number;
13
+ minHeight? : number;
14
+ aspectRatio? : string;
15
+ disabled? : boolean;
16
+ allowCrop? : boolean;
17
+ allowResize? : boolean;
18
+ onchange? : ( values : ResizableCropperValues ) => void;
19
+ 'onrcw:change'? : ( detail : any ) => void;
20
+ 'onrcw:scale-start'? : ( detail : any ) => void;
21
+ 'onrcw:crop-start'? : ( detail : any ) => void;
22
+ 'onrcw:pan-start'? : ( detail : any ) => void;
23
+ }
24
+
25
+ let {
26
+ width = 200,
27
+ height = 150,
28
+ minWidth = 50,
29
+ minHeight = 50,
30
+ aspectRatio,
31
+ disabled = false,
32
+ allowCrop = true,
33
+ allowResize = true,
34
+ onchange,
35
+ 'onrcw:change': onRcwChange,
36
+ 'onrcw:scale-start': onRcwScaleStart,
37
+ 'onrcw:crop-start': onRcwCropStart,
38
+ 'onrcw:pan-start': onRcwPanStart,
39
+ children,
40
+ ...restProps
41
+ } : Props = $props();
42
+
43
+ let cropperElement : ResizableCropperElementType;
44
+ let isReady = $state( false );
45
+ let removeListeners : (() => void) | null = null;
46
+
47
+ /**
48
+ * Forwards custom events emitted by the web component to Svelte callbacks.
49
+ */
50
+ const bindEvents = () => {
51
+ if ( !cropperElement ) return;
52
+
53
+ const handleChange = ( event : Event ) => {
54
+ const detail = ( event as CustomEvent ).detail as ResizableCropperValues;
55
+ onchange?.( detail );
56
+ };
57
+
58
+ const handleRcwChange = ( event : Event ) => {
59
+ const detail = ( event as CustomEvent ).detail;
60
+ onRcwChange?.( detail );
61
+ };
62
+
63
+ const handleRcwScaleStart = ( event : Event ) => {
64
+ const detail = ( event as CustomEvent ).detail;
65
+ onRcwScaleStart?.( detail );
66
+ };
67
+
68
+ const handleRcwCropStart = ( event : Event ) => {
69
+ const detail = ( event as CustomEvent ).detail;
70
+ onRcwCropStart?.( detail );
71
+ };
72
+
73
+ const handleRcwPanStart = ( event : Event ) => {
74
+ const detail = ( event as CustomEvent ).detail;
75
+ onRcwPanStart?.( detail );
76
+ };
77
+
78
+ cropperElement.addEventListener( 'change', handleChange as EventListener );
79
+ cropperElement.addEventListener( 'rcw:change', handleRcwChange as EventListener );
80
+ cropperElement.addEventListener( 'rcw:scale-start', handleRcwScaleStart as EventListener );
81
+ cropperElement.addEventListener( 'rcw:crop-start', handleRcwCropStart as EventListener );
82
+ cropperElement.addEventListener( 'rcw:pan-start', handleRcwPanStart as EventListener );
83
+
84
+ removeListeners = () => {
85
+ cropperElement.removeEventListener( 'change', handleChange as EventListener );
86
+ cropperElement.removeEventListener( 'rcw:change', handleRcwChange as EventListener );
87
+ cropperElement.removeEventListener( 'rcw:scale-start', handleRcwScaleStart as EventListener );
88
+ cropperElement.removeEventListener( 'rcw:crop-start', handleRcwCropStart as EventListener );
89
+ cropperElement.removeEventListener( 'rcw:pan-start', handleRcwPanStart as EventListener );
90
+ };
91
+ };
92
+
93
+ onMount( () => {
94
+ let isMounted = true;
95
+
96
+ const setup = async () => {
97
+ await import( '@liwe3/webcomponents/resizable-cropper' );
98
+ await customElements.whenDefined( 'liwe3-resizable-cropper' );
99
+
100
+ if ( !isMounted ) return;
101
+ isReady = true;
102
+ bindEvents();
103
+ };
104
+
105
+ void setup();
106
+
107
+ return () => {
108
+ isMounted = false;
109
+ removeListeners?.();
110
+ removeListeners = null;
111
+ };
112
+ } );
113
+
114
+ $effect( () => {
115
+ if ( !isReady || !cropperElement ) return;
116
+ cropperElement.width = width;
117
+ } );
118
+
119
+ $effect( () => {
120
+ if ( !isReady || !cropperElement ) return;
121
+ cropperElement.height = height;
122
+ } );
123
+
124
+ $effect( () => {
125
+ if ( !isReady || !cropperElement ) return;
126
+ cropperElement.minWidth = minWidth;
127
+ } );
128
+
129
+ $effect( () => {
130
+ if ( !isReady || !cropperElement ) return;
131
+ cropperElement.minHeight = minHeight;
132
+ } );
133
+
134
+ $effect( () => {
135
+ if ( !isReady || !cropperElement ) return;
136
+ cropperElement.aspectRatio = aspectRatio || null;
137
+ } );
138
+
139
+ $effect( () => {
140
+ if ( !isReady || !cropperElement ) return;
141
+ cropperElement.disabled = disabled;
142
+ } );
143
+
144
+ $effect( () => {
145
+ if ( !isReady || !cropperElement ) return;
146
+ cropperElement.allowCrop = allowCrop;
147
+ } );
148
+
149
+ $effect( () => {
150
+ if ( !isReady || !cropperElement ) return;
151
+ cropperElement.allowResize = allowResize;
152
+ } );
153
+
154
+ /**
155
+ * Expose public methods
156
+ */
157
+ export function getValues() : ResizableCropperValues | undefined {
158
+ return cropperElement?.getValues();
159
+ }
160
+
161
+ export function setValues( values : Partial<ResizableCropperValues> ) : void {
162
+ cropperElement?.setValues( values );
163
+ }
164
+ </script>
165
+
166
+ <liwe3-resizable-cropper bind:this={cropperElement} {...restProps}>
167
+ {@render children?.()}
168
+ </liwe3-resizable-cropper>
@@ -0,0 +1,24 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { ResizableCropperElement as ResizableCropperElementType, ResizableCropperValues } from '@liwe3/webcomponents';
3
+ interface Props extends HTMLAttributes<ResizableCropperElementType> {
4
+ width?: number;
5
+ height?: number;
6
+ minWidth?: number;
7
+ minHeight?: number;
8
+ aspectRatio?: string;
9
+ disabled?: boolean;
10
+ allowCrop?: boolean;
11
+ allowResize?: boolean;
12
+ onchange?: (values: ResizableCropperValues) => void;
13
+ 'onrcw:change'?: (detail: any) => void;
14
+ 'onrcw:scale-start'?: (detail: any) => void;
15
+ 'onrcw:crop-start'?: (detail: any) => void;
16
+ 'onrcw:pan-start'?: (detail: any) => void;
17
+ }
18
+ declare const ResizableCropper: import("svelte").Component<Props, {
19
+ getValues: () => ResizableCropperValues | undefined;
20
+ setValues: (values: Partial<ResizableCropperValues>) => void;
21
+ }, "">;
22
+ type ResizableCropper = ReturnType<typeof ResizableCropper>;
23
+ export default ResizableCropper;
24
+ //# sourceMappingURL=ResizableCropper.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizableCropper.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ResizableCropper.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EACX,uBAAuB,IAAI,2BAA2B,EACtD,sBAAsB,EACtB,MAAM,sBAAsB,CAAC;AAG9B,UAAU,KAAM,SAAQ,cAAc,CAAC,2BAA2B,CAAC;IAClE,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAG,MAAM,CAAC;IACnB,SAAS,CAAC,EAAG,MAAM,CAAC;IACpB,WAAW,CAAC,EAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAG,OAAO,CAAC;IACpB,SAAS,CAAC,EAAG,OAAO,CAAC;IACrB,WAAW,CAAC,EAAG,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAG,CAAE,MAAM,EAAG,sBAAsB,KAAM,IAAI,CAAC;IACxD,cAAc,CAAC,EAAG,CAAE,MAAM,EAAG,GAAG,KAAM,IAAI,CAAC;IAC3C,mBAAmB,CAAC,EAAG,CAAE,MAAM,EAAG,GAAG,KAAM,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAG,CAAE,MAAM,EAAG,GAAG,KAAM,IAAI,CAAC;IAC/C,iBAAiB,CAAC,EAAG,CAAE,MAAM,EAAG,GAAG,KAAM,IAAI,CAAC;CAC9C;AA0JD,QAAA,MAAM,gBAAgB;qBAfE,sBAAsB,GAAG,SAAS;wBAI5B,OAAO,CAAC,sBAAsB,CAAC,KAAK,IAAI;MAWR,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -1,5 +1,8 @@
1
1
  <script module lang="ts">
2
- import type { ToastConfig, ToastElement } from '@liwe3/webcomponents';
2
+ import type { ToastConfig, ToastElement, ToastPosition } from '@liwe3/webcomponents';
3
+
4
+ // Re-export types for convenience
5
+ export type { ToastConfig, ToastElement, ToastPosition };
3
6
 
4
7
  /**
5
8
  * Shows a toast notification with the given configuration.
@@ -23,7 +26,8 @@
23
26
  * title: 'Success!',
24
27
  * text: 'Your changes have been saved.',
25
28
  * type: 'success',
26
- * duration: 5000
29
+ * duration: 5000,
30
+ * position: 'TR' // Optional: TL, T, TR, BL, B, BR (default: TR)
27
31
  * });
28
32
  * ```
29
33
  */
@@ -1,4 +1,5 @@
1
- import type { ToastConfig, ToastElement } from '@liwe3/webcomponents';
1
+ import type { ToastConfig, ToastElement, ToastPosition } from '@liwe3/webcomponents';
2
+ export type { ToastConfig, ToastElement, ToastPosition };
2
3
  /**
3
4
  * Shows a toast notification with the given configuration.
4
5
  *
@@ -21,7 +22,8 @@ import type { ToastConfig, ToastElement } from '@liwe3/webcomponents';
21
22
  * title: 'Success!',
22
23
  * text: 'Your changes have been saved.',
23
24
  * type: 'success',
24
- * duration: 5000
25
+ * duration: 5000,
26
+ * position: 'TR' // Optional: TL, T, TR, BL, B, BR (default: TR)
25
27
  * });
26
28
  * ```
27
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Toasts.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Toasts.svelte.ts"],"names":[],"mappings":"AAGC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,WAAW,KAAG,YAAY,GAAG,SAkB7D,CAAC;AAwBH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,MAAM;;kBAA+E,CAAC;AAC1E,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Toasts.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Toasts.svelte.ts"],"names":[],"mappings":"AAGC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,WAAW,KAAG,YAAY,GAAG,SAkB7D,CAAC;AAwBH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,MAAM;;kBAA+E,CAAC;AAC1E,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAe,MAAM,CAAC"}
@@ -0,0 +1,103 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import type { TreeNode } from "@liwe3/webcomponents";
4
+
5
+ interface Props {
6
+ data?: TreeNode[];
7
+ indentWidth?: number;
8
+ selectedIds?: string[];
9
+ onselectionchange?: (selectedIds: string[]) => void;
10
+ ontoggle?: (event: CustomEvent<{ nodeId: string; expanded: boolean }>) => void;
11
+ onitemselected?: (event: CustomEvent<{ node: TreeNode; nodeId: string }>) => void;
12
+ }
13
+
14
+ let {
15
+ data = $bindable([]),
16
+ indentWidth = 20,
17
+ selectedIds = $bindable([]),
18
+ onselectionchange,
19
+ ontoggle,
20
+ onitemselected,
21
+ ...restProps
22
+ }: Props = $props();
23
+
24
+ let treeViewElement: HTMLElement;
25
+
26
+ /**
27
+ * Updates the web component's attributes based on props
28
+ */
29
+ const updateAttributes = () => {
30
+ if (!treeViewElement) return;
31
+
32
+ // Set data
33
+ if (data && data.length > 0) {
34
+ (treeViewElement as any).data = data;
35
+ }
36
+
37
+ // Set indent width
38
+ treeViewElement.setAttribute("indent-width", indentWidth.toString());
39
+
40
+ // Set selected IDs
41
+ if (selectedIds && selectedIds.length > 0) {
42
+ (treeViewElement as any).selectedNodeIds = selectedIds;
43
+ }
44
+ };
45
+
46
+ /**
47
+ * Binds event listeners to the web component
48
+ */
49
+ const bindEvents = () => {
50
+ if (!treeViewElement) return;
51
+
52
+ treeViewElement.addEventListener("selectionchange", (event) => {
53
+ const customEvent = event as CustomEvent;
54
+ selectedIds = customEvent.detail.selectedIds;
55
+ onselectionchange?.(selectedIds);
56
+ });
57
+
58
+ treeViewElement.addEventListener("toggle", (event) => {
59
+ ontoggle?.(event as CustomEvent);
60
+ });
61
+
62
+ treeViewElement.addEventListener("itemselected", (event) => {
63
+ onitemselected?.(event as CustomEvent);
64
+ });
65
+ };
66
+
67
+ onMount(async () => {
68
+ // Dynamically import the web component
69
+ await import("@liwe3/webcomponents/tree-view");
70
+
71
+ updateAttributes();
72
+ bindEvents();
73
+ });
74
+
75
+ /**
76
+ * Expose methods to parent component
77
+ */
78
+ export const toggleExpansion = (nodeId: string) => {
79
+ (treeViewElement as any)?.toggleExpansion(nodeId);
80
+ };
81
+
82
+ export const toggleSelection = (nodeId: string) => {
83
+ (treeViewElement as any)?.toggleSelection(nodeId);
84
+ };
85
+
86
+ export const selectAll = () => {
87
+ (treeViewElement as any)?.selectAll();
88
+ };
89
+
90
+ export const deselectAll = () => {
91
+ (treeViewElement as any)?.deselectAll();
92
+ };
93
+
94
+ export const expandAll = () => {
95
+ (treeViewElement as any)?.expandAll();
96
+ };
97
+
98
+ export const collapseAll = () => {
99
+ (treeViewElement as any)?.collapseAll();
100
+ };
101
+ </script>
102
+
103
+ <liwe3-tree-view bind:this={treeViewElement} {...restProps}></liwe3-tree-view>
@@ -0,0 +1,28 @@
1
+ import type { TreeNode } from "@liwe3/webcomponents";
2
+ interface Props {
3
+ data?: TreeNode[];
4
+ indentWidth?: number;
5
+ selectedIds?: string[];
6
+ onselectionchange?: (selectedIds: string[]) => void;
7
+ ontoggle?: (event: CustomEvent<{
8
+ nodeId: string;
9
+ expanded: boolean;
10
+ }>) => void;
11
+ onitemselected?: (event: CustomEvent<{
12
+ node: TreeNode;
13
+ nodeId: string;
14
+ }>) => void;
15
+ }
16
+ declare const TreeView: import("svelte").Component<Props, {
17
+ /**
18
+ * Expose methods to parent component
19
+ */ toggleExpansion: (nodeId: string) => void;
20
+ toggleSelection: (nodeId: string) => void;
21
+ selectAll: () => void;
22
+ deselectAll: () => void;
23
+ expandAll: () => void;
24
+ collapseAll: () => void;
25
+ }, "data" | "selectedIds">;
26
+ type TreeView = ReturnType<typeof TreeView>;
27
+ export default TreeView;
28
+ //# sourceMappingURL=TreeView.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.svelte.d.ts","sourceRoot":"","sources":["../src/lib/TreeView.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGnD,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC/E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CACnF;AAsGH,QAAA,MAAM,QAAQ;IAHd;;SAEK,2BA/B+B,MAAM;8BAIN,MAAM;;;;;0BA4BY,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,10 +2,21 @@
2
2
  * @liwe3/webcomponents-svelte
3
3
  * Svelte 5 wrappers for @liwe3/webcomponents
4
4
  */
5
- export type { SelectOption, AITextEditorConfig, ToastType, ToastButton, ToastConfig, ToastElement, PopoverMenuItem, PopoverMenuConfig, DateRange } from '@liwe3/webcomponents';
5
+ export type { SelectOption, AITextEditorConfig, ToastType, ToastButton, ToastConfig, ToastElement, DialogButton, DialogConfig, DialogElement, PopoverMenuItem, PopoverMenuConfig, DateRange, TreeNode, UploadedFile, ChunkUploaderConfig, CheckListItem, ButtonToolbarItem, ButtonToolbarGroup, ResizableCropperValues } from '@liwe3/webcomponents';
6
6
  export { default as SmartSelect } from './SmartSelect.svelte';
7
7
  export { default as AITextEditor } from './AITextEditor.svelte';
8
8
  export { default as PopoverMenu } from './PopoverMenu.svelte';
9
9
  export { default as DateSelector } from './DateSelector.svelte';
10
+ export { default as TreeView } from './TreeView.svelte';
11
+ export { default as Drawer } from './Drawer.svelte';
12
+ export { default as ContainerBox } from './ContainerBox.svelte';
13
+ export { default as ChunkUploader } from './ChunkUploader.svelte';
14
+ export { default as ButtonToolbar } from './ButtonToolbar.svelte';
15
+ export { default as AIMarkdownEditor } from './AIMarkdownEditor.svelte';
16
+ export { default as MarkdownPreview } from './MarkdownPreview.svelte';
17
+ export type { ChunkFileEvent } from './ChunkUploader.svelte';
18
+ export { default as CheckList } from './CheckList.svelte';
10
19
  export { default as Toasts, toastAdd } from './Toasts.svelte';
20
+ export { default as Dialogs, dialogAdd } from './Dialogs.svelte';
21
+ export { default as ResizableCropper } from './ResizableCropper.svelte';
11
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG/K,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAC3J,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGxL,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGtE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -7,5 +7,20 @@ export { default as SmartSelect } from './SmartSelect.svelte';
7
7
  export { default as AITextEditor } from './AITextEditor.svelte';
8
8
  export { default as PopoverMenu } from './PopoverMenu.svelte';
9
9
  export { default as DateSelector } from './DateSelector.svelte';
10
+ export { default as TreeView } from './TreeView.svelte';
11
+ export { default as Drawer } from './Drawer.svelte';
12
+ export { default as ContainerBox } from './ContainerBox.svelte';
13
+ export { default as ChunkUploader } from './ChunkUploader.svelte';
14
+ export { default as ButtonToolbar } from './ButtonToolbar.svelte';
15
+ // Export AIMarkdownEditor
16
+ export { default as AIMarkdownEditor } from './AIMarkdownEditor.svelte';
17
+ // Export MarkdownPreview
18
+ export { default as MarkdownPreview } from './MarkdownPreview.svelte';
19
+ // Export CheckList
20
+ export { default as CheckList } from './CheckList.svelte';
10
21
  // Export Toasts component and toastAdd function
11
22
  export { default as Toasts, toastAdd } from './Toasts.svelte';
23
+ // Export Dialogs component and dialogAdd function
24
+ export { default as Dialogs, dialogAdd } from './Dialogs.svelte';
25
+ // Export ResizableCropper
26
+ export { default as ResizableCropper } from './ResizableCropper.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liwe3/webcomponents-svelte",
3
- "version": "1.0.14",
3
+ "version": "1.1.11",
4
4
  "description": "Svelte 5 wrappers for @liwe3/webcomponents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",