@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.
- package/dist/AIMarkdownEditor.d.ts +35 -0
- package/dist/AIMarkdownEditor.d.ts.map +1 -0
- package/dist/AIMarkdownEditor.js +412 -0
- package/dist/AIMarkdownEditor.js.map +1 -0
- package/dist/AITextEditor.d.ts +183 -0
- package/dist/AITextEditor.d.ts.map +1 -0
- package/dist/AITextEditor.js +63 -27
- package/dist/AITextEditor.js.map +1 -1
- package/dist/ButtonToolbar.d.ts +35 -0
- package/dist/ButtonToolbar.d.ts.map +1 -0
- package/dist/ButtonToolbar.js +220 -0
- package/dist/ButtonToolbar.js.map +1 -0
- package/dist/CheckList.d.ts +31 -0
- package/dist/CheckList.d.ts.map +1 -0
- package/dist/CheckList.js +336 -0
- package/dist/CheckList.js.map +1 -0
- package/dist/ChunkUploader.d.ts +125 -0
- package/dist/ChunkUploader.d.ts.map +1 -0
- package/dist/ChunkUploader.js +756 -0
- package/dist/ChunkUploader.js.map +1 -0
- package/dist/ComicBalloon.d.ts +82 -0
- package/dist/ComicBalloon.d.ts.map +1 -0
- package/dist/ComicBalloon.js +346 -0
- package/dist/ComicBalloon.js.map +1 -0
- package/dist/ContainerBox.d.ts +112 -0
- package/dist/ContainerBox.d.ts.map +1 -0
- package/dist/ContainerBox.js +359 -0
- package/dist/ContainerBox.js.map +1 -0
- package/dist/DateSelector.d.ts +103 -0
- package/dist/DateSelector.d.ts.map +1 -0
- package/dist/Dialog.d.ts +102 -0
- package/dist/Dialog.d.ts.map +1 -0
- package/dist/Dialog.js +299 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Drawer.d.ts +63 -0
- package/dist/Drawer.d.ts.map +1 -0
- package/dist/Drawer.js +340 -0
- package/dist/Drawer.js.map +1 -0
- package/dist/ImageView.d.ts +42 -0
- package/dist/ImageView.d.ts.map +1 -0
- package/dist/ImageView.js +209 -0
- package/dist/ImageView.js.map +1 -0
- package/dist/MarkdownPreview.d.ts +25 -0
- package/dist/MarkdownPreview.d.ts.map +1 -0
- package/dist/MarkdownPreview.js +147 -0
- package/dist/MarkdownPreview.js.map +1 -0
- package/dist/PopoverMenu.d.ts +103 -0
- package/dist/PopoverMenu.d.ts.map +1 -0
- package/dist/ResizableCropper.d.ts +158 -0
- package/dist/ResizableCropper.d.ts.map +1 -0
- package/dist/ResizableCropper.js +562 -0
- package/dist/ResizableCropper.js.map +1 -0
- package/dist/SmartSelect.d.ts +100 -0
- package/dist/SmartSelect.d.ts.map +1 -0
- package/dist/SmartSelect.js +45 -2
- package/dist/SmartSelect.js.map +1 -1
- package/dist/Toast.d.ts +127 -0
- package/dist/Toast.d.ts.map +1 -0
- package/dist/Toast.js +79 -49
- package/dist/Toast.js.map +1 -1
- package/dist/TreeView.d.ts +84 -0
- package/dist/TreeView.d.ts.map +1 -0
- package/dist/TreeView.js +478 -0
- package/dist/TreeView.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -14
- package/dist/index.js.map +1 -1
- package/package.json +60 -5
- package/src/AIMarkdownEditor.ts +568 -0
- package/src/AITextEditor.ts +97 -2
- package/src/ButtonToolbar.ts +302 -0
- package/src/CheckList.ts +438 -0
- package/src/ChunkUploader.ts +1135 -0
- package/src/ComicBalloon.ts +709 -0
- package/src/ContainerBox.ts +570 -0
- package/src/Dialog.ts +510 -0
- package/src/Drawer.ts +435 -0
- package/src/ImageView.ts +265 -0
- package/src/MarkdownPreview.ts +213 -0
- package/src/ResizableCropper.ts +1099 -0
- package/src/SmartSelect.ts +48 -2
- package/src/Toast.ts +96 -32
- package/src/TreeView.ts +673 -0
- 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":"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"}
|