@liwe3/webcomponents 1.0.14 → 1.1.10

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 (85) hide show
  1. package/dist/AIMarkdownEditor.d.ts +35 -0
  2. package/dist/AIMarkdownEditor.d.ts.map +1 -0
  3. package/dist/AIMarkdownEditor.js +412 -0
  4. package/dist/AIMarkdownEditor.js.map +1 -0
  5. package/dist/AITextEditor.d.ts +183 -0
  6. package/dist/AITextEditor.d.ts.map +1 -0
  7. package/dist/AITextEditor.js +63 -27
  8. package/dist/AITextEditor.js.map +1 -1
  9. package/dist/ButtonToolbar.d.ts +35 -0
  10. package/dist/ButtonToolbar.d.ts.map +1 -0
  11. package/dist/ButtonToolbar.js +220 -0
  12. package/dist/ButtonToolbar.js.map +1 -0
  13. package/dist/CheckList.d.ts +31 -0
  14. package/dist/CheckList.d.ts.map +1 -0
  15. package/dist/CheckList.js +336 -0
  16. package/dist/CheckList.js.map +1 -0
  17. package/dist/ChunkUploader.d.ts +125 -0
  18. package/dist/ChunkUploader.d.ts.map +1 -0
  19. package/dist/ChunkUploader.js +756 -0
  20. package/dist/ChunkUploader.js.map +1 -0
  21. package/dist/ComicBalloon.d.ts +82 -0
  22. package/dist/ComicBalloon.d.ts.map +1 -0
  23. package/dist/ComicBalloon.js +346 -0
  24. package/dist/ComicBalloon.js.map +1 -0
  25. package/dist/ContainerBox.d.ts +112 -0
  26. package/dist/ContainerBox.d.ts.map +1 -0
  27. package/dist/ContainerBox.js +359 -0
  28. package/dist/ContainerBox.js.map +1 -0
  29. package/dist/DateSelector.d.ts +103 -0
  30. package/dist/DateSelector.d.ts.map +1 -0
  31. package/dist/Dialog.d.ts +102 -0
  32. package/dist/Dialog.d.ts.map +1 -0
  33. package/dist/Dialog.js +299 -0
  34. package/dist/Dialog.js.map +1 -0
  35. package/dist/Drawer.d.ts +63 -0
  36. package/dist/Drawer.d.ts.map +1 -0
  37. package/dist/Drawer.js +340 -0
  38. package/dist/Drawer.js.map +1 -0
  39. package/dist/ImageView.d.ts +42 -0
  40. package/dist/ImageView.d.ts.map +1 -0
  41. package/dist/ImageView.js +209 -0
  42. package/dist/ImageView.js.map +1 -0
  43. package/dist/MarkdownPreview.d.ts +25 -0
  44. package/dist/MarkdownPreview.d.ts.map +1 -0
  45. package/dist/MarkdownPreview.js +147 -0
  46. package/dist/MarkdownPreview.js.map +1 -0
  47. package/dist/PopoverMenu.d.ts +103 -0
  48. package/dist/PopoverMenu.d.ts.map +1 -0
  49. package/dist/ResizableCropper.d.ts +158 -0
  50. package/dist/ResizableCropper.d.ts.map +1 -0
  51. package/dist/ResizableCropper.js +562 -0
  52. package/dist/ResizableCropper.js.map +1 -0
  53. package/dist/SmartSelect.d.ts +100 -0
  54. package/dist/SmartSelect.d.ts.map +1 -0
  55. package/dist/SmartSelect.js +45 -2
  56. package/dist/SmartSelect.js.map +1 -1
  57. package/dist/Toast.d.ts +127 -0
  58. package/dist/Toast.d.ts.map +1 -0
  59. package/dist/Toast.js +79 -49
  60. package/dist/Toast.js.map +1 -1
  61. package/dist/TreeView.d.ts +84 -0
  62. package/dist/TreeView.d.ts.map +1 -0
  63. package/dist/TreeView.js +478 -0
  64. package/dist/TreeView.js.map +1 -0
  65. package/dist/index.d.ts +23 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +51 -14
  68. package/dist/index.js.map +1 -1
  69. package/package.json +60 -5
  70. package/src/AIMarkdownEditor.ts +568 -0
  71. package/src/AITextEditor.ts +97 -2
  72. package/src/ButtonToolbar.ts +302 -0
  73. package/src/CheckList.ts +438 -0
  74. package/src/ChunkUploader.ts +1135 -0
  75. package/src/ComicBalloon.ts +709 -0
  76. package/src/ContainerBox.ts +570 -0
  77. package/src/Dialog.ts +510 -0
  78. package/src/Drawer.ts +435 -0
  79. package/src/ImageView.ts +265 -0
  80. package/src/MarkdownPreview.ts +213 -0
  81. package/src/ResizableCropper.ts +1099 -0
  82. package/src/SmartSelect.ts +48 -2
  83. package/src/Toast.ts +96 -32
  84. package/src/TreeView.ts +673 -0
  85. package/src/index.ts +129 -27
@@ -0,0 +1,25 @@
1
+ /**
2
+ * MarkdownPreview Web Component
3
+ * Renders markdown content using a dynamically loaded library
4
+ */
5
+ export declare class MarkdownPreviewElement extends HTMLElement {
6
+ shadowRoot: ShadowRoot;
7
+ private _libUrl;
8
+ private _value;
9
+ private _isLibLoaded;
10
+ private _isLoadingLib;
11
+ private container;
12
+ static get observedAttributes(): string[];
13
+ constructor();
14
+ connectedCallback(): void;
15
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
16
+ get libUrl(): string;
17
+ set libUrl(value: string);
18
+ get value(): string;
19
+ set value(content: string);
20
+ private render;
21
+ private loadLibrary;
22
+ private updateContent;
23
+ }
24
+ export declare const defineMarkdownPreview: (tagName?: string) => void;
25
+ //# sourceMappingURL=MarkdownPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownPreview.d.ts","sourceRoot":"","sources":["../src/MarkdownPreview.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,sBAAuB,SAAQ,WAAW;IAC7C,UAAU,EAAE,UAAU,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAqE;IACpF,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAe;IAEhC,MAAM,KAAK,kBAAkB,aAE5B;;IAQD,iBAAiB;IAIjB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAezE,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAEvB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,EAIxB;IAED,OAAO,CAAC,MAAM;YAoEA,WAAW;IAwCzB,OAAO,CAAC,aAAa;CAoCtB;AAED,eAAO,MAAM,qBAAqB,GAAI,UAAS,MAAiC,SAI/E,CAAC"}
@@ -0,0 +1,147 @@
1
+ class n extends HTMLElement {
2
+ constructor() {
3
+ super(), this._libUrl = "https://cdn.jsdelivr.net/npm/marked@4.3.0/marked.min.js", this._value = "", this._isLibLoaded = !1, this._isLoadingLib = !1, this.attachShadow({ mode: "open" }), this.render();
4
+ }
5
+ static get observedAttributes() {
6
+ return ["lib-url", "value"];
7
+ }
8
+ connectedCallback() {
9
+ this.loadLibrary();
10
+ }
11
+ attributeChangedCallback(e, o, i) {
12
+ o !== i && (e === "lib-url" ? (this._libUrl = i, this._isLibLoaded = !1, this.loadLibrary()) : e === "value" && this._value !== i && (this.value = i));
13
+ }
14
+ get libUrl() {
15
+ return this._libUrl;
16
+ }
17
+ set libUrl(e) {
18
+ this.setAttribute("lib-url", e);
19
+ }
20
+ get value() {
21
+ return this._value;
22
+ }
23
+ set value(e) {
24
+ this._value = e, this.updateContent();
25
+ }
26
+ render() {
27
+ this.shadowRoot.innerHTML = `
28
+ <style>
29
+ :host {
30
+ display: block;
31
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
32
+ line-height: 1.6;
33
+ color: #333;
34
+ }
35
+ .markdown-body {
36
+ box-sizing: border-box;
37
+ min-width: 200px;
38
+ max-width: 980px;
39
+ margin: 0 auto;
40
+ padding: 15px;
41
+ }
42
+ img {
43
+ max-width: 100%;
44
+ }
45
+ pre {
46
+ background-color: #f6f8fa;
47
+ border-radius: 6px;
48
+ padding: 16px;
49
+ overflow: auto;
50
+ }
51
+ code {
52
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
53
+ font-size: 85%;
54
+ background-color: rgba(175, 184, 193, 0.2);
55
+ padding: 0.2em 0.4em;
56
+ border-radius: 6px;
57
+ }
58
+ pre code {
59
+ background-color: transparent;
60
+ padding: 0;
61
+ }
62
+ blockquote {
63
+ border-left: 0.25em solid #d0d7de;
64
+ color: #656d76;
65
+ padding: 0 1em;
66
+ margin: 0;
67
+ }
68
+ table {
69
+ border-spacing: 0;
70
+ border-collapse: collapse;
71
+ display: block;
72
+ width: max-content;
73
+ max-width: 100%;
74
+ overflow: auto;
75
+ }
76
+ table th,
77
+ table td {
78
+ padding: 6px 13px;
79
+ border: 1px solid #d0d7de;
80
+ }
81
+ table tr {
82
+ background-color: #ffffff;
83
+ border-top: 1px solid #d8dee4;
84
+ }
85
+ table tr:nth-child(2n) {
86
+ background-color: #f6f8fa;
87
+ }
88
+ </style>
89
+ <div class="markdown-body" id="content"></div>
90
+ `, this.container = this.shadowRoot.getElementById("content");
91
+ }
92
+ async loadLibrary() {
93
+ if (!(this._isLibLoaded || this._isLoadingLib)) {
94
+ if (typeof window.marked == "function" || typeof window.marked == "object" && typeof window.marked.parse == "function") {
95
+ this._isLibLoaded = !0, this.updateContent();
96
+ return;
97
+ }
98
+ this._isLoadingLib = !0;
99
+ try {
100
+ const e = document.createElement("script");
101
+ e.src = this._libUrl, e.onload = () => {
102
+ if (!window.marked) {
103
+ console.error("MarkdownPreview: Library loaded but window.marked is undefined"), this.container.innerHTML = '<div style="color: red;">Error: Markdown library loaded but not found. Try a different URL.</div>', this._isLoadingLib = !1;
104
+ return;
105
+ }
106
+ this._isLibLoaded = !0, this._isLoadingLib = !1, this.updateContent(), this.dispatchEvent(new CustomEvent("library-loaded"));
107
+ }, e.onerror = () => {
108
+ this._isLoadingLib = !1, console.error(`Failed to load markdown library from ${this._libUrl}`), this.container.innerHTML = '<div style="color: red;">Error loading markdown library</div>';
109
+ }, document.head.appendChild(e);
110
+ } catch (e) {
111
+ this._isLoadingLib = !1, console.error(e);
112
+ }
113
+ }
114
+ }
115
+ updateContent() {
116
+ if (!this._isLibLoaded) {
117
+ this._isLoadingLib || this.loadLibrary();
118
+ return;
119
+ }
120
+ const e = window.marked;
121
+ if (!e) {
122
+ console.error("Marked library loaded but not found in window");
123
+ return;
124
+ }
125
+ try {
126
+ const o = typeof e == "function" ? e : e.parse;
127
+ if (typeof o == "function") {
128
+ const i = o(this._value);
129
+ i instanceof Promise ? i.then((t) => {
130
+ this.container.innerHTML = t;
131
+ }) : this.container.innerHTML = i;
132
+ } else
133
+ console.error("Marked parse function not found"), this.container.innerHTML = '<div style="color: red;">Error: marked.parse not found</div>';
134
+ } catch (o) {
135
+ console.error("Error parsing markdown:", o), this.container.innerHTML = '<div style="color: red;">Error parsing markdown</div>';
136
+ }
137
+ }
138
+ }
139
+ const d = (r = "liwe3-markdown-preview") => {
140
+ typeof window < "u" && !customElements.get(r) && customElements.define(r, n);
141
+ };
142
+ d();
143
+ export {
144
+ n as MarkdownPreviewElement,
145
+ d as defineMarkdownPreview
146
+ };
147
+ //# sourceMappingURL=MarkdownPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownPreview.js","sources":["../src/MarkdownPreview.ts"],"sourcesContent":["/**\n * MarkdownPreview Web Component\n * Renders markdown content using a dynamically loaded library\n */\n\nexport class MarkdownPreviewElement extends HTMLElement {\n declare shadowRoot: ShadowRoot;\n private _libUrl: string = 'https://cdn.jsdelivr.net/npm/marked@4.3.0/marked.min.js';\n private _value: string = '';\n private _isLibLoaded: boolean = false;\n private _isLoadingLib: boolean = false;\n private container!: HTMLElement;\n\n static get observedAttributes() {\n return ['lib-url', 'value'];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n this.render();\n }\n\n connectedCallback() {\n this.loadLibrary();\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (oldValue === newValue) return;\n\n if (name === 'lib-url') {\n this._libUrl = newValue;\n this._isLibLoaded = false; // Reset loaded state if URL changes\n this.loadLibrary();\n } else if (name === 'value') {\n // Only update internal value if it differs, to avoid loops if we were to reflect\n if (this._value !== newValue) {\n this.value = newValue;\n }\n }\n }\n\n get libUrl(): string {\n return this._libUrl;\n }\n\n set libUrl(value: string) {\n this.setAttribute('lib-url', value);\n }\n\n get value(): string {\n return this._value;\n }\n\n set value(content: string) {\n this._value = content;\n this.updateContent();\n // We do NOT reflect to attribute to avoid performance issues with large content\n }\n\n private render() {\n this.shadowRoot.innerHTML = `\n <style>\n :host {\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n line-height: 1.6;\n color: #333;\n }\n .markdown-body {\n box-sizing: border-box;\n min-width: 200px;\n max-width: 980px;\n margin: 0 auto;\n padding: 15px;\n }\n img {\n max-width: 100%;\n }\n pre {\n background-color: #f6f8fa;\n border-radius: 6px;\n padding: 16px;\n overflow: auto;\n }\n code {\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 85%;\n background-color: rgba(175, 184, 193, 0.2);\n padding: 0.2em 0.4em;\n border-radius: 6px;\n }\n pre code {\n background-color: transparent;\n padding: 0;\n }\n blockquote {\n border-left: 0.25em solid #d0d7de;\n color: #656d76;\n padding: 0 1em;\n margin: 0;\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n display: block;\n width: max-content;\n max-width: 100%;\n overflow: auto;\n }\n table th,\n table td {\n padding: 6px 13px;\n border: 1px solid #d0d7de;\n }\n table tr {\n background-color: #ffffff;\n border-top: 1px solid #d8dee4;\n }\n table tr:nth-child(2n) {\n background-color: #f6f8fa;\n }\n </style>\n <div class=\"markdown-body\" id=\"content\"></div>\n `;\n this.container = this.shadowRoot.getElementById('content') as HTMLElement;\n }\n\n private async loadLibrary() {\n if (this._isLibLoaded || this._isLoadingLib) return;\n\n // Check if marked is already available globally\n if (typeof (window as any).marked === 'function' || (typeof (window as any).marked === 'object' && typeof (window as any).marked.parse === 'function')) {\n this._isLibLoaded = true;\n this.updateContent();\n return;\n }\n\n this._isLoadingLib = true;\n\n try {\n const script = document.createElement('script');\n script.src = this._libUrl;\n script.onload = () => {\n // Double check if marked is available\n if (!(window as any).marked) {\n console.error('MarkdownPreview: Library loaded but window.marked is undefined');\n this.container.innerHTML = `<div style=\"color: red;\">Error: Markdown library loaded but not found. Try a different URL.</div>`;\n this._isLoadingLib = false;\n return;\n }\n this._isLibLoaded = true;\n this._isLoadingLib = false;\n this.updateContent();\n this.dispatchEvent(new CustomEvent('library-loaded'));\n };\n script.onerror = () => {\n this._isLoadingLib = false;\n console.error(`Failed to load markdown library from ${this._libUrl}`);\n this.container.innerHTML = `<div style=\"color: red;\">Error loading markdown library</div>`;\n };\n document.head.appendChild(script);\n } catch (e) {\n this._isLoadingLib = false;\n console.error(e);\n }\n }\n\n private updateContent() {\n if (!this._isLibLoaded) {\n if (!this._isLoadingLib) {\n this.loadLibrary();\n }\n return;\n }\n\n const marked = (window as any).marked;\n if (!marked) {\n console.error('Marked library loaded but not found in window');\n return;\n }\n\n try {\n // Handle both function style (older marked) and object style (newer marked)\n const parse = typeof marked === 'function' ? marked : marked.parse;\n if (typeof parse === 'function') {\n const html = parse(this._value);\n // If it returns a promise (async), handle it\n if (html instanceof Promise) {\n html.then((res: string) => {\n this.container.innerHTML = res;\n });\n } else {\n this.container.innerHTML = html;\n }\n } else {\n console.error('Marked parse function not found');\n this.container.innerHTML = `<div style=\"color: red;\">Error: marked.parse not found</div>`;\n }\n } catch (e) {\n console.error('Error parsing markdown:', e);\n this.container.innerHTML = `<div style=\"color: red;\">Error parsing markdown</div>`;\n }\n }\n}\n\nexport const defineMarkdownPreview = (tagName: string = 'liwe3-markdown-preview') => {\n if (typeof window !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, MarkdownPreviewElement);\n }\n};\n\ndefineMarkdownPreview();\n"],"names":["MarkdownPreviewElement","name","oldValue","newValue","value","content","script","marked","parse","html","res","e","defineMarkdownPreview","tagName"],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * PopoverMenu Web Component
3
+ * A customizable menu component using fixed positioning with support for nested submenus
4
+ */
5
+ export type PopoverMenuItem = {
6
+ label: string;
7
+ enabled?: boolean;
8
+ items?: PopoverMenuItem[];
9
+ onclick?: () => void;
10
+ };
11
+ export type PopoverMenuConfig = {
12
+ label: string;
13
+ items: PopoverMenuItem[];
14
+ };
15
+ export declare class PopoverMenuElement extends HTMLElement {
16
+ shadowRoot: ShadowRoot;
17
+ private items;
18
+ private openPopovers;
19
+ private hoverTimeouts;
20
+ private initialized;
21
+ private globalClickHandler;
22
+ constructor();
23
+ connectedCallback(): void;
24
+ disconnectedCallback(): void;
25
+ /**
26
+ * Set up global event listeners
27
+ */
28
+ private setupGlobalListeners;
29
+ /**
30
+ * Clean up global event listeners
31
+ */
32
+ private cleanupGlobalListeners;
33
+ /**
34
+ * Set menu items
35
+ */
36
+ setItems(items: PopoverMenuConfig[]): void;
37
+ /**
38
+ * Get current menu items
39
+ */
40
+ getItems(): PopoverMenuConfig[];
41
+ /**
42
+ * Add a new menu item
43
+ */
44
+ addMenuItem(item: PopoverMenuConfig, index?: number | null): void;
45
+ /**
46
+ * Remove a menu item
47
+ */
48
+ removeMenuItem(index: number): void;
49
+ /**
50
+ * Update a menu item
51
+ */
52
+ updateMenuItem(index: number, item: PopoverMenuConfig): void;
53
+ /**
54
+ * Render the menu component
55
+ */
56
+ private render;
57
+ /**
58
+ * Create a menu trigger button
59
+ */
60
+ private createMenuTrigger;
61
+ /**
62
+ * Create a popover if it doesn't exist
63
+ */
64
+ private createPopoverIfNeeded;
65
+ /**
66
+ * Populate a popover with menu items
67
+ */
68
+ private populatePopover;
69
+ /**
70
+ * Create a menu item element
71
+ */
72
+ private createMenuItem;
73
+ /**
74
+ * Show a submenu
75
+ */
76
+ private showSubmenu;
77
+ /**
78
+ * Close other submenus except the specified one and its ancestors
79
+ */
80
+ private closeOtherSubmenus;
81
+ /**
82
+ * Close all menus
83
+ */
84
+ private closeAllMenus;
85
+ /**
86
+ * Handle menu trigger click
87
+ */
88
+ private handleMenuTriggerClick;
89
+ /**
90
+ * Show the main menu
91
+ */
92
+ private showMainMenu;
93
+ /**
94
+ * Adjust popover position to handle overflow
95
+ */
96
+ private adjustPopoverPosition;
97
+ }
98
+ /**
99
+ * Conditionally defines the custom element if in a browser environment.
100
+ */
101
+ declare const definePopoverMenu: (tagName?: string) => void;
102
+ export { definePopoverMenu };
103
+ //# sourceMappingURL=PopoverMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverMenu.d.ts","sourceRoot":"","sources":["../src/PopoverMenu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,WAAW;IACzC,UAAU,EAAE,UAAU,CAAC;IAC/B,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAA8C;;IAOxE,iBAAiB,IAAK,IAAI;IAQ1B,oBAAoB,IAAK,IAAI;IAI7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,QAAQ,CAAG,KAAK,EAAE,iBAAiB,EAAE,GAAI,IAAI;IAK7C;;OAEG;IACH,QAAQ,IAAK,iBAAiB,EAAE;IAIhC;;OAEG;IACH,WAAW,CAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAI,IAAI;IAS1E;;OAEG;IACH,cAAc,CAAG,KAAK,EAAE,MAAM,GAAI,IAAI;IAOtC;;OAEG;IACH,cAAc,CAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAI,IAAI;IAO/D;;OAEG;IACH,OAAO,CAAC,MAAM;IAiId;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsDtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CA8F9B;AAED;;GAEG;AACH,QAAA,MAAM,iBAAiB,GAAK,gBAA8B,KAAI,IAI7D,CAAC;AAKF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * ResizableCropper Web Component
3
+ * A container that wraps a single child element with drag-to-scale (resizing) and drag-to-crop (panning) capabilities
4
+ */
5
+ export interface ResizableCropperState {
6
+ width: number;
7
+ height: number;
8
+ minWidth: number;
9
+ minHeight: number;
10
+ aspectRatio: string | null;
11
+ contentElement: HTMLElement | null;
12
+ contentLeft: number;
13
+ contentTop: number;
14
+ rotation: number;
15
+ wrapperLeft: number;
16
+ wrapperTop: number;
17
+ }
18
+ export interface ResizableCropperValues {
19
+ wrapperWidth: number;
20
+ wrapperHeight: number;
21
+ wrapperLeft: number;
22
+ wrapperTop: number;
23
+ contentWidth: number;
24
+ contentHeight: number;
25
+ contentLeft: number;
26
+ contentTop: number;
27
+ zoom: number;
28
+ rotation: number;
29
+ }
30
+ export interface ResizableCropperComponentState {
31
+ mode: 'transform' | 'crop';
32
+ disabled: boolean;
33
+ allowCrop: boolean;
34
+ allowResize: boolean;
35
+ allowRotate: boolean;
36
+ allowDrag: boolean;
37
+ minWidth: number;
38
+ minHeight: number;
39
+ aspectRatio: string | null;
40
+ values: ResizableCropperValues;
41
+ }
42
+ export interface ResizableCropEventDetail {
43
+ width: number;
44
+ height: number;
45
+ wrapperLeft: number;
46
+ wrapperTop: number;
47
+ contentLeft: number;
48
+ contentTop: number;
49
+ action: 'scale' | 'crop' | 'pan' | 'rotate' | 'move';
50
+ rotation?: number;
51
+ handle?: string;
52
+ }
53
+ export declare class ResizableCropperElement extends HTMLElement {
54
+ shadowRoot: ShadowRoot;
55
+ private state;
56
+ private wrapper;
57
+ private contentSlot;
58
+ private handlesContainer;
59
+ private isDragging;
60
+ private dragAction;
61
+ private dragHandle;
62
+ private dragStartX;
63
+ private dragStartY;
64
+ private dragStartWidth;
65
+ private dragStartHeight;
66
+ private dragStartContentLeft;
67
+ private dragStartContentTop;
68
+ private dragStartContentWidth;
69
+ private dragStartContentHeight;
70
+ private initialContentWidth;
71
+ private initialContentHeight;
72
+ private _dragStartRotation;
73
+ private _dragStartPointerAngle;
74
+ private _dragRotateCenterX;
75
+ private _dragRotateCenterY;
76
+ private _interactionMode;
77
+ private _dragPointerOffsetX;
78
+ private _dragPointerOffsetY;
79
+ private _dragMoveContainer;
80
+ constructor();
81
+ static get observedAttributes(): string[];
82
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
83
+ connectedCallback(): void;
84
+ disconnectedCallback(): void;
85
+ private _applyInteractionModeUI;
86
+ private _setInteractionMode;
87
+ private updateContentElement;
88
+ private initializeContentSize;
89
+ private updateWrapperDimensions;
90
+ private _applyWrapperTransform;
91
+ private updateHandlesVisibility;
92
+ private bindEvents;
93
+ private unbindEvents;
94
+ private handleWrapperDoubleClick;
95
+ private handleDocumentPointerDown;
96
+ private _getContainerForMove;
97
+ private _ensureContainerPositionedForMove;
98
+ private _syncWrapperPositionFromLayout;
99
+ private _ensureAbsolutePositionForMove;
100
+ private handleWrapperPointerDown;
101
+ private handlePointerDown;
102
+ private handleContentPointerDown;
103
+ private handlePointerMove;
104
+ private handleRotate;
105
+ private handlePointerUp;
106
+ private handleScale;
107
+ private handleCrop;
108
+ private clampContentPosition;
109
+ private handlePan;
110
+ private parseAspectRatio;
111
+ private dispatchChange;
112
+ private dispatchOnChange;
113
+ private render;
114
+ get width(): number;
115
+ set width(value: number);
116
+ get height(): number;
117
+ set height(value: number);
118
+ get minWidth(): number;
119
+ set minWidth(value: number);
120
+ get minHeight(): number;
121
+ set minHeight(value: number);
122
+ get aspectRatio(): string | null;
123
+ set aspectRatio(value: string | null);
124
+ get disabled(): boolean;
125
+ set disabled(value: boolean);
126
+ get allowCrop(): boolean;
127
+ set allowCrop(value: boolean);
128
+ get allowResize(): boolean;
129
+ set allowResize(value: boolean);
130
+ get allowRotate(): boolean;
131
+ set allowRotate(value: boolean);
132
+ get allowDrag(): boolean;
133
+ set allowDrag(value: boolean);
134
+ /**
135
+ * Gets the current values including wrapper size, content size, position, and zoom level
136
+ */
137
+ getValues(): ResizableCropperValues;
138
+ /**
139
+ * Sets the values to reproduce size, zoom and pan
140
+ * @param values - The values to set
141
+ */
142
+ setValues(values: Partial<ResizableCropperValues>): void;
143
+ /**
144
+ * Gets a serializable state snapshot of the component including flags, constraints, mode,
145
+ * and the current transform/crop values.
146
+ */
147
+ getState(): ResizableCropperComponentState;
148
+ /**
149
+ * Restores a state snapshot produced by getState().
150
+ * @param state - State to restore
151
+ */
152
+ setState(state: Partial<ResizableCropperComponentState>): void;
153
+ }
154
+ /**
155
+ * Conditionally defines the custom element if in a browser environment.
156
+ */
157
+ export declare const defineResizableCropper: (tagName?: string) => void;
158
+ //# sourceMappingURL=ResizableCropper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizableCropper.d.ts","sourceRoot":"","sources":["../src/ResizableCropper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAG,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,QAAQ,EAAG,MAAM,CAAC;IAClB,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAG,WAAW,GAAG,IAAI,CAAC;IACpC,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;IACpB,QAAQ,EAAG,MAAM,CAAC;IAClB,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACtC,YAAY,EAAG,MAAM,CAAC;IACtB,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;IACpB,YAAY,EAAG,MAAM,CAAC;IACtB,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;IACpB,IAAI,EAAG,MAAM,CAAC;IACd,QAAQ,EAAG,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC9C,IAAI,EAAG,WAAW,GAAG,MAAM,CAAC;IAC5B,QAAQ,EAAG,OAAO,CAAC;IACnB,SAAS,EAAG,OAAO,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,WAAW,EAAG,OAAO,CAAC;IACtB,SAAS,EAAG,OAAO,CAAC;IACpB,QAAQ,EAAG,MAAM,CAAC;IAClB,SAAS,EAAG,MAAM,CAAC;IACnB,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAG,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAG,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,MAAM,CAAC;IACrB,UAAU,EAAG,MAAM,CAAC;IACpB,MAAM,EAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtD,QAAQ,CAAC,EAAG,MAAM,CAAC;IACnB,MAAM,CAAC,EAAG,MAAM,CAAC;CACjB;AAED,qBAAa,uBAAwB,SAAQ,WAAW;IAC/C,UAAU,EAAG,UAAU,CAAC;IAEhC,OAAO,CAAC,KAAK,CAYX;IAEF,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAA6B;;IAQvD,MAAM,KAAK,kBAAkB,IAAM,MAAM,EAAE,CAE1C;IAED,wBAAwB,CAAG,IAAI,EAAG,MAAM,EAAE,QAAQ,EAAG,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAG,MAAM,GAAG,IAAI,GAAK,IAAI;IA+BrG,iBAAiB,IAAM,IAAI;IAmB3B,oBAAoB,IAAM,IAAI;IAI9B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,wBAAwB,CAK9B;IAEF,OAAO,CAAC,yBAAyB,CAK/B;IAEF,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,iCAAiC;IAMzC,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,8BAA8B;IAStC,OAAO,CAAC,wBAAwB,CA8B9B;IAEF,OAAO,CAAC,iBAAiB,CAiDvB;IAEF,OAAO,CAAC,wBAAwB,CA8B9B;IAEF,OAAO,CAAC,iBAAiB,CAgCvB;IACF,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,eAAe,CAcrB;IAEF,OAAO,CAAC,WAAW;IAyEnB,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,MAAM;IA0Kd,IAAI,KAAK,IAAM,MAAM,CAEpB;IAED,IAAI,KAAK,CAAG,KAAK,EAAG,MAAM,EAEzB;IAED,IAAI,MAAM,IAAM,MAAM,CAErB;IAED,IAAI,MAAM,CAAG,KAAK,EAAG,MAAM,EAE1B;IAED,IAAI,QAAQ,IAAM,MAAM,CAEvB;IAED,IAAI,QAAQ,CAAG,KAAK,EAAG,MAAM,EAE5B;IAED,IAAI,SAAS,IAAM,MAAM,CAExB;IAED,IAAI,SAAS,CAAG,KAAK,EAAG,MAAM,EAE7B;IAED,IAAI,WAAW,IAAM,MAAM,GAAG,IAAI,CAEjC;IAED,IAAI,WAAW,CAAG,KAAK,EAAG,MAAM,GAAG,IAAI,EAMtC;IAED,IAAI,QAAQ,IAAM,OAAO,CAExB;IAED,IAAI,QAAQ,CAAG,KAAK,EAAG,OAAO,EAM7B;IAED,IAAI,SAAS,IAAM,OAAO,CAEzB;IAED,IAAI,SAAS,CAAG,KAAK,EAAG,OAAO,EAM9B;IAED,IAAI,WAAW,IAAM,OAAO,CAE3B;IAED,IAAI,WAAW,CAAG,KAAK,EAAG,OAAO,EAMhC;IAED,IAAI,WAAW,IAAM,OAAO,CAE3B;IAED,IAAI,WAAW,CAAG,KAAK,EAAG,OAAO,EAMhC;IAED,IAAI,SAAS,IAAM,OAAO,CAEzB;IAED,IAAI,SAAS,CAAG,KAAK,EAAG,OAAO,EAM9B;IAED;;OAEG;IACI,SAAS,IAAM,sBAAsB;IAwB5C;;;OAGG;IACI,SAAS,CAAG,MAAM,EAAG,OAAO,CAAC,sBAAsB,CAAC,GAAK,IAAI;IA2DpE;;;OAGG;IACI,QAAQ,IAAM,8BAA8B;IAenD;;;OAGG;IACI,QAAQ,CAAG,KAAK,EAAG,OAAO,CAAC,8BAA8B,CAAC,GAAK,IAAI;CAY1E;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,GAAK,UAAU,MAAkC,KAAK,IAIxF,CAAC"}