@xplor-education/core-stencil-components 3.1.2 → 3.1.3
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/components/index.js +28 -3
- package/components/index.js.map +1 -1
- package/components/{p-B49oUO_9.js → p-AzuDJugb.js} +3 -3
- package/components/{p-B49oUO_9.js.map → p-AzuDJugb.js.map} +1 -1
- package/components/{p-D4jVa8dE.js → p-BQ6aLuGP.js} +4 -4
- package/components/{p-D4jVa8dE.js.map → p-BQ6aLuGP.js.map} +1 -1
- package/components/{p-VIJbFoA4.js → p-BZQ63ULK.js} +3 -3
- package/components/{p-VIJbFoA4.js.map → p-BZQ63ULK.js.map} +1 -1
- package/components/{p-Bs_ocvfe.js → p-CyGsSa4H.js} +7 -4
- package/components/p-CyGsSa4H.js.map +1 -0
- package/components/{p-B3zR7peH.js → p-oanCZPh6.js} +4 -4
- package/components/{p-B3zR7peH.js.map → p-oanCZPh6.js.map} +1 -1
- package/components/xplor-alert-message.js +2 -2
- package/components/xplor-avatar-and-name.js +2 -2
- package/components/xplor-avatar.js +1 -1
- package/components/xplor-badge-active.js +1 -1
- package/components/xplor-badge-archived.js +1 -1
- package/components/xplor-badge-deleted.js +1 -1
- package/components/xplor-badge-expired.js +1 -1
- package/components/xplor-badge-inactive.js +1 -1
- package/components/xplor-badge-recalled.js +1 -1
- package/components/xplor-badge-upcoming.js +1 -1
- package/components/xplor-badge-waitlist.js +1 -1
- package/components/xplor-badge.js +1 -1
- package/components/xplor-btn-back-to-parent.js +1 -1
- package/components/xplor-btn-back.js +1 -1
- package/components/xplor-btn-icon.js +1 -1
- package/components/xplor-btn-toggle-group.js +1 -1
- package/components/xplor-btn-toggle-secondary.js +1 -1
- package/components/xplor-btn-toggle.js +1 -1
- package/components/xplor-btn-tooltip.js +3 -3
- package/components/xplor-button.js +1 -1
- package/components/xplor-canvas-editor.d.ts +11 -0
- package/components/xplor-canvas-editor.js +369 -0
- package/components/xplor-canvas-editor.js.map +1 -0
- package/components/xplor-chat-widget.js +3 -3
- package/components/xplor-checkbox.js +1 -1
- package/components/xplor-combobox.js +5 -5
- package/components/xplor-datatable.js +2 -2
- package/components/xplor-date-picker.js +5 -5
- package/components/xplor-drag-and-drop-input.js +26 -5
- package/components/xplor-drag-and-drop-input.js.map +1 -1
- package/components/xplor-dropdown.js +1 -1
- package/components/xplor-expansion-panel.js +4 -4
- package/components/xplor-expansion-panels.js +1 -1
- package/components/xplor-file-upload.js +2 -2
- package/components/xplor-inline-checkbox.js +2 -2
- package/components/xplor-inline-date-picker.js +1 -1
- package/components/xplor-inline-switch.js +1 -1
- package/components/xplor-input-file.js +1 -1
- package/components/xplor-input-search.js +2 -2
- package/components/xplor-input-select.js +2 -2
- package/components/xplor-input-send.js +3 -3
- package/components/xplor-input-text-area.js +2 -2
- package/components/xplor-input-text-secondary.js +2 -2
- package/components/xplor-input-text.js +2 -2
- package/components/xplor-input-title.js +1 -1
- package/components/xplor-links.js +1 -1
- package/components/xplor-modal-persistent.js +1 -1
- package/components/xplor-nav-tabs.js +2 -2
- package/components/xplor-radio-btn.js +2 -2
- package/components/xplor-rich-text-editor.d.ts +11 -0
- package/components/xplor-rich-text-editor.js +23754 -0
- package/components/xplor-rich-text-editor.js.map +1 -0
- package/components/xplor-section-card.js +2 -2
- package/components/xplor-section-heading.js +2 -2
- package/components/xplor-table.js +5 -5
- package/components/xplor-text-bubble.js +2 -2
- package/components/xplor-text-field.js +2 -2
- package/components/xplor-time-picker.js +6 -6
- package/components/xplor-tooltip.js +1 -1
- package/dist/cjs/{index-BjAapk2n.js → index--_m3aUsf.js} +32 -7
- package/dist/cjs/index--_m3aUsf.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/xplor-alert-dialog_60.cjs.entry.js +29457 -0
- package/dist/cjs/xplor-alert-dialog_60.cjs.entry.js.map +1 -0
- package/dist/cjs/xplor-component-library.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/xplor-alert-message/xplor-alert-message.js +2 -2
- package/dist/collection/components/xplor-avatar/xplor-avatar.js +2 -2
- package/dist/collection/components/xplor-avatar-and-name/xplor-avatar-and-name.js +1 -1
- package/dist/collection/components/xplor-badge/xplor-badge.js +1 -1
- package/dist/collection/components/xplor-badge-active/xplor-badge-active.js +1 -1
- package/dist/collection/components/xplor-badge-archived/xplor-badge-archived.js +1 -1
- package/dist/collection/components/xplor-badge-deleted/xplor-badge-deleted.js +1 -1
- package/dist/collection/components/xplor-badge-expired/xplor-badge-expired.js +1 -1
- package/dist/collection/components/xplor-badge-inactive/xplor-badge-inactive.js +1 -1
- package/dist/collection/components/xplor-badge-recalled/xplor-badge-recalled.js +1 -1
- package/dist/collection/components/xplor-badge-upcoming/xplor-badge-upcoming.js +1 -1
- package/dist/collection/components/xplor-badge-waitlist/xplor-badge-waitlist.js +1 -1
- package/dist/collection/components/xplor-btn-back/xplor-btn-back.js +1 -1
- package/dist/collection/components/xplor-btn-back-to-parent/xplor-btn-back-to-parent.js +1 -1
- package/dist/collection/components/xplor-btn-icon/xplor-btn-icon.js +1 -1
- package/dist/collection/components/xplor-btn-toggle/xplor-btn-toggle.js +1 -1
- package/dist/collection/components/xplor-btn-toggle-group/xplor-btn-toggle-group.js +1 -1
- package/dist/collection/components/xplor-btn-toggle-secondary/xplor-btn-toggle-secondary.js +1 -1
- package/dist/collection/components/xplor-btn-tooltip/xplor-btn-tooltip.js +1 -1
- package/dist/collection/components/xplor-button/xplor-button.css +8 -3
- package/dist/collection/components/xplor-button/xplor-button.js +23 -1
- package/dist/collection/components/xplor-button/xplor-button.js.map +1 -1
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.css +1224 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.js +520 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.js.map +1 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.stories.js +280 -0
- package/dist/collection/components/xplor-canvas-editor/xplor-canvas-editor.stories.js.map +1 -0
- package/dist/collection/components/xplor-chat-widget/xplor-chat-widget.js +1 -1
- package/dist/collection/components/xplor-checkbox/xplor-checkbox.js +1 -1
- package/dist/collection/components/xplor-combobox/xplor-combobox.js +5 -5
- package/dist/collection/components/xplor-datatable/xplor-datatable.js +2 -2
- package/dist/collection/components/xplor-date-picker/xplor-date-picker.js +4 -4
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.css +62 -29
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js +25 -4
- package/dist/collection/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.js.map +1 -1
- package/dist/collection/components/xplor-dropdown/xplor-dropdown.js +1 -1
- package/dist/collection/components/xplor-expansion-panel/xplor-expansion-panel.js +4 -4
- package/dist/collection/components/xplor-expansion-panels/xplor-expansion-panels.js +1 -1
- package/dist/collection/components/xplor-file-upload/xplor-file-upload.js +2 -2
- package/dist/collection/components/xplor-inline-checkbox/xplor-inline-checkbox.js +2 -2
- package/dist/collection/components/xplor-inline-date-picker/xplor-inline-date-picker.js +1 -1
- package/dist/collection/components/xplor-inline-switch/xplor-inline-switch.js +1 -1
- package/dist/collection/components/xplor-input-file/xplor-input-file.js +1 -1
- package/dist/collection/components/xplor-input-search/xplor-input-search.js +2 -2
- package/dist/collection/components/xplor-input-select/xplor-input-select.js +2 -2
- package/dist/collection/components/xplor-input-send/xplor-input-send.js +2 -2
- package/dist/collection/components/xplor-input-text/xplor-input-text.js +2 -2
- package/dist/collection/components/xplor-input-text-area/xplor-input-text-area.js +2 -2
- package/dist/collection/components/xplor-input-text-secondary/xplor-input-text-secondary.js +2 -2
- package/dist/collection/components/xplor-input-title/xplor-input-title.js +1 -1
- package/dist/collection/components/xplor-links/xplor-links.js +1 -1
- package/dist/collection/components/xplor-modal-persistent/xplor-modal-persistent.js +1 -1
- package/dist/collection/components/xplor-nav-tabs/xplor-nav-tabs.js +2 -2
- package/dist/collection/components/xplor-radio-btn/xplor-radio-btn.js +2 -2
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.css +1445 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.js +800 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.js.map +1 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.js +260 -0
- package/dist/collection/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.js.map +1 -0
- package/dist/collection/components/xplor-section-card/xplor-section-card.js +2 -2
- package/dist/collection/components/xplor-section-heading/xplor-section-heading.js +2 -2
- package/dist/collection/components/xplor-table/xplor-table.js +5 -5
- package/dist/collection/components/xplor-text-bubble/xplor-text-bubble.js +2 -2
- package/dist/collection/components/xplor-text-field/xplor-text-field.js +2 -2
- package/dist/collection/components/xplor-time-picker/xplor-time-picker.js +6 -6
- package/dist/collection/components/xplor-tooltip/xplor-tooltip.js +2 -2
- package/dist/collection/utils/slate-legacy-converter.js +223 -0
- package/dist/collection/utils/slate-legacy-converter.js.map +1 -0
- package/dist/components/index.js +28 -3
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p--zhT6rvJ.js → p-DGaHlr-k.js} +4 -4
- package/dist/components/{p--zhT6rvJ.js.map → p-DGaHlr-k.js.map} +1 -1
- package/dist/components/{p-B5rS_jjI.js → p-DWaTb2EJ.js} +7 -4
- package/dist/components/p-DWaTb2EJ.js.map +1 -0
- package/dist/components/{p-J41B2nOt.js → p-DroQBoSo.js} +3 -3
- package/dist/components/{p-J41B2nOt.js.map → p-DroQBoSo.js.map} +1 -1
- package/dist/components/{p-DQ8MCJFX.js → p-TfYzqGwr.js} +3 -3
- package/dist/components/{p-DQ8MCJFX.js.map → p-TfYzqGwr.js.map} +1 -1
- package/dist/components/{p-DbQ6ZNvh.js → p-vl-J3tKJ.js} +4 -4
- package/dist/components/{p-DbQ6ZNvh.js.map → p-vl-J3tKJ.js.map} +1 -1
- package/dist/components/xplor-alert-message.js +2 -2
- package/dist/components/xplor-avatar-and-name.js +2 -2
- package/dist/components/xplor-avatar.js +1 -1
- package/dist/components/xplor-badge-active.js +1 -1
- package/dist/components/xplor-badge-archived.js +1 -1
- package/dist/components/xplor-badge-deleted.js +1 -1
- package/dist/components/xplor-badge-expired.js +1 -1
- package/dist/components/xplor-badge-inactive.js +1 -1
- package/dist/components/xplor-badge-recalled.js +1 -1
- package/dist/components/xplor-badge-upcoming.js +1 -1
- package/dist/components/xplor-badge-waitlist.js +1 -1
- package/dist/components/xplor-badge.js +1 -1
- package/dist/components/xplor-btn-back-to-parent.js +1 -1
- package/dist/components/xplor-btn-back.js +1 -1
- package/dist/components/xplor-btn-icon.js +1 -1
- package/dist/components/xplor-btn-toggle-group.js +1 -1
- package/dist/components/xplor-btn-toggle-secondary.js +1 -1
- package/dist/components/xplor-btn-toggle.js +1 -1
- package/dist/components/xplor-btn-tooltip.js +3 -3
- package/dist/components/xplor-button.js +1 -1
- package/dist/components/xplor-canvas-editor.d.ts +11 -0
- package/dist/components/xplor-canvas-editor.js +370 -0
- package/dist/components/xplor-canvas-editor.js.map +1 -0
- package/dist/components/xplor-chat-widget.js +3 -3
- package/dist/components/xplor-checkbox.js +1 -1
- package/dist/components/xplor-combobox.js +5 -5
- package/dist/components/xplor-datatable.js +2 -2
- package/dist/components/xplor-date-picker.js +5 -5
- package/dist/components/xplor-drag-and-drop-input.js +26 -5
- package/dist/components/xplor-drag-and-drop-input.js.map +1 -1
- package/dist/components/xplor-dropdown.js +1 -1
- package/dist/components/xplor-expansion-panel.js +4 -4
- package/dist/components/xplor-expansion-panels.js +1 -1
- package/dist/components/xplor-file-upload.js +2 -2
- package/dist/components/xplor-inline-checkbox.js +2 -2
- package/dist/components/xplor-inline-date-picker.js +1 -1
- package/dist/components/xplor-inline-switch.js +1 -1
- package/dist/components/xplor-input-file.js +1 -1
- package/dist/components/xplor-input-search.js +2 -2
- package/dist/components/xplor-input-select.js +2 -2
- package/dist/components/xplor-input-send.js +3 -3
- package/dist/components/xplor-input-text-area.js +2 -2
- package/dist/components/xplor-input-text-secondary.js +2 -2
- package/dist/components/xplor-input-text.js +2 -2
- package/dist/components/xplor-input-title.js +1 -1
- package/dist/components/xplor-links.js +1 -1
- package/dist/components/xplor-modal-persistent.js +1 -1
- package/dist/components/xplor-nav-tabs.js +2 -2
- package/dist/components/xplor-radio-btn.js +2 -2
- package/dist/components/xplor-rich-text-editor.d.ts +11 -0
- package/dist/components/xplor-rich-text-editor.js +23755 -0
- package/dist/components/xplor-rich-text-editor.js.map +1 -0
- package/dist/components/xplor-section-card.js +2 -2
- package/dist/components/xplor-section-heading.js +2 -2
- package/dist/components/xplor-table.js +5 -5
- package/dist/components/xplor-text-bubble.js +2 -2
- package/dist/components/xplor-text-field.js +2 -2
- package/dist/components/xplor-time-picker.js +6 -6
- package/dist/components/xplor-tooltip.js +1 -1
- package/dist/esm/{index-KRfMjDC2.js → index-QwDfQUbw.js} +32 -7
- package/dist/esm/index-QwDfQUbw.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/xplor-alert-dialog_60.entry.js +29396 -0
- package/dist/esm/xplor-alert-dialog_60.entry.js.map +1 -0
- package/dist/esm/xplor-component-library.js +3 -3
- package/dist/hydrate/index.js +24230 -95
- package/dist/hydrate/index.mjs +24230 -95
- package/dist/types/components/xplor-button/xplor-button.d.ts +2 -0
- package/dist/types/components/xplor-canvas-editor/xplor-canvas-editor.d.ts +63 -0
- package/dist/types/components/xplor-canvas-editor/xplor-canvas-editor.stories.d.ts +84 -0
- package/dist/types/components/xplor-drag-and-drop-input/xplor-drag-and-drop-input.d.ts +6 -0
- package/dist/types/components/xplor-rich-text-editor/xplor-rich-text-editor.d.ts +129 -0
- package/dist/types/components/xplor-rich-text-editor/xplor-rich-text-editor.stories.d.ts +105 -0
- package/dist/types/components.d.ts +290 -0
- package/dist/types/utils/slate-legacy-converter.d.ts +83 -0
- package/dist/xplor-component-library/p-QwDfQUbw.js +3 -0
- package/dist/xplor-component-library/p-QwDfQUbw.js.map +1 -0
- package/dist/xplor-component-library/p-df68ccde.entry.js +2 -0
- package/dist/xplor-component-library/p-df68ccde.entry.js.map +1 -0
- package/dist/xplor-component-library/xplor-component-library.css +1 -1
- package/dist/xplor-component-library/xplor-component-library.esm.js +1 -1
- package/package.json +7 -1
- package/components/p-Bs_ocvfe.js.map +0 -1
- package/dist/cjs/index-BjAapk2n.js.map +0 -1
- package/dist/cjs/xplor-alert-dialog_58.cjs.entry.js +0 -5395
- package/dist/cjs/xplor-alert-dialog_58.cjs.entry.js.map +0 -1
- package/dist/components/p-B5rS_jjI.js.map +0 -1
- package/dist/esm/index-KRfMjDC2.js.map +0 -1
- package/dist/esm/xplor-alert-dialog_58.entry.js +0 -5336
- package/dist/esm/xplor-alert-dialog_58.entry.js.map +0 -1
- package/dist/xplor-component-library/p-7ecb45dd.entry.js +0 -2
- package/dist/xplor-component-library/p-7ecb45dd.entry.js.map +0 -1
- package/dist/xplor-component-library/p-KRfMjDC2.js +0 -3
- package/dist/xplor-component-library/p-KRfMjDC2.js.map +0 -1
|
@@ -8,7 +8,7 @@ const XplorBadgeDeleted$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeDel
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: '07d61ee7c210ada3c3eaf2b0c0c91bb6747d39e6' }, h("span", { key: '1535e3498d7e7b1d12438b835cb3da2efec112ff', class: "xplor-badge-deleted" }, "Deleted")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeDeletedCss; }
|
|
14
14
|
}, [2, "xplor-badge-deleted"]);
|
|
@@ -8,7 +8,7 @@ const XplorBadgeExpired$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeExp
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: '28da2eebab84d7cb5ce6aa010d102c6b45b607d9' }, h("span", { key: '879d02cf4052f13e3e5324be091bea5fa0849300', class: "xplor-badge-expired" }, "Expired")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeExpiredCss; }
|
|
14
14
|
}, [2, "xplor-badge-expired"]);
|
|
@@ -8,7 +8,7 @@ const XplorBadgeInactive$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeIn
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: 'f87a4a1d082c17102c5192ca1c064d636b13d803' }, h("span", { key: '75aa909657eedd5b91d90cf0b71a59215e13b2c8', class: "xplor-badge-inactive" }, "Inactive")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeInactiveCss; }
|
|
14
14
|
}, [2, "xplor-badge-inactive"]);
|
|
@@ -8,7 +8,7 @@ const XplorBadgeRecalled$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeRe
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: 'bf0879b3e61b3f732345c974185809bd78a57063' }, h("span", { key: 'f4cdf5ef2b1bf4910f0bbfc1bbefdee98ae09575', class: "xplor-badge-recalled" }, "Recalled")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeRecalledCss; }
|
|
14
14
|
}, [2, "xplor-badge-recalled"]);
|
|
@@ -8,7 +8,7 @@ const XplorBadgeUpcoming$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeUp
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: 'e670e6d49428aae18b3a0f97c39a10745cb5a039' }, h("span", { key: 'dfbd77ac03b9b4779758963e62504450040243b4', class: "xplor-badge-upcoming" }, "Upcoming")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeUpcomingCss; }
|
|
14
14
|
}, [2, "xplor-badge-upcoming"]);
|
|
@@ -8,7 +8,7 @@ const XplorBadgeWaitlist$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadgeWa
|
|
|
8
8
|
this.__registerHost();
|
|
9
9
|
}
|
|
10
10
|
render() {
|
|
11
|
-
return (h(Host, { key: '
|
|
11
|
+
return (h(Host, { key: '150ff857e845f012a1fb6f8d04cf519b0e18c1dd' }, h("span", { key: '00ef3af174c37039b23603a9d47fd7e30cf497b3', class: "xplor-badge-waitlist" }, "Waitlist")));
|
|
12
12
|
}
|
|
13
13
|
static get style() { return xplorBadgeWaitlistCss; }
|
|
14
14
|
}, [2, "xplor-badge-waitlist"]);
|
|
@@ -116,7 +116,7 @@ const XplorBadge$1 = /*@__PURE__*/ proxyCustomElement(class XplorBadge extends H
|
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
render() {
|
|
119
|
-
return (h(Host, { key: '
|
|
119
|
+
return (h(Host, { key: '4aadb0c86d68133c04ad829d14095aa5c9dba36e' }, h("span", { key: 'f0f4b465265cf55da555ad25d2ea478e7e8d75c0', class: this.computedClasses, style: this.cssVars }, h("slot", { key: '3d6c7ab9d5b383b716c38adebf179d4a9d29ee82' }, this.text))));
|
|
120
120
|
}
|
|
121
121
|
static get style() { return xplorBadgeCss; }
|
|
122
122
|
}, [6, "xplor-badge", {
|
|
@@ -43,7 +43,7 @@ const XplorBtnBackToParent$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnBa
|
|
|
43
43
|
const buttonStyles = {
|
|
44
44
|
'--btn-size': this.size,
|
|
45
45
|
};
|
|
46
|
-
return (h(Host, { key: '
|
|
46
|
+
return (h(Host, { key: '3423fa1064a5527c1313e5e74f01093fbfdf9a5c' }, h("button", { key: '362161229ce57836bb0bdcd3d6ce671669208d70', class: buttonClasses, style: buttonStyles, onClick: this.handleClick, "aria-label": this.ariaLabel }, h("span", { key: '223cc632ce76b936f6129e39a1602123c89e4fc1', class: "xplor-btn-back-to-parent__icon" }, "\u2715"))));
|
|
47
47
|
}
|
|
48
48
|
static get style() { return xplorBtnBackToParentCss; }
|
|
49
49
|
}, [2, "xplor-btn-back-to-parent", {
|
|
@@ -43,7 +43,7 @@ const XplorBtnBack$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnBack exten
|
|
|
43
43
|
'--min-height': this.minHeight,
|
|
44
44
|
'--gap': this.gap,
|
|
45
45
|
};
|
|
46
|
-
return (h(Host, { key: '
|
|
46
|
+
return (h(Host, { key: '11a49ee4557580e42bf35430829f95d4744c23c3' }, h("button", { key: '52a8657c87b146ef5ecb0adf0388132a5bb2bf93', class: buttonClasses, style: buttonStyles, disabled: this.disabled, onClick: this.handleClick }, h("span", { key: '6c399ed83f9779a3b0f2e2162b0e05e186f2ba1b', class: "xplor-btn-back__icon" }, "\u2039"), h("span", { key: '05bc6d2cbbef85d33b6ed4225aa4fc45dc4cbe0f', class: "xplor-btn-back__text" }, h("slot", { key: '61800e333b89fb55fe4fe638ce055870fce0e4fd' }, "Back")))));
|
|
47
47
|
}
|
|
48
48
|
static get style() { return xplorBtnBackCss; }
|
|
49
49
|
}, [6, "xplor-btn-back", {
|
|
@@ -44,7 +44,7 @@ const XplorBtnIcon$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnIcon exten
|
|
|
44
44
|
'--btn-size': typeof this.size === 'number' ? `${this.size}px` : this.size,
|
|
45
45
|
'--icon-size': typeof this.iconSize === 'number' ? `${this.iconSize}px` : this.iconSize,
|
|
46
46
|
};
|
|
47
|
-
return (h(Host, { key: '
|
|
47
|
+
return (h(Host, { key: 'd4312cd0ef1b871a49fc252fdc913c3a089a2d33' }, h("button", { key: '5b9b112c5b1c70ea82c6c615c24403ce514753a0', class: buttonClasses, style: buttonStyles, disabled: this.disabled, onClick: this.handleClick, "aria-label": this.ariaLabel }, h("span", { key: '1736857fad944996c0ad380189edbf5e30c013f0', class: "xplor-btn-icon__content" }, h("slot", { key: '8bd0e864ae2469dfa4fe48c2bd4215a38f8db182' })))));
|
|
48
48
|
}
|
|
49
49
|
static get style() { return xplorBtnIconCss; }
|
|
50
50
|
}, [6, "xplor-btn-icon", {
|
|
@@ -16,7 +16,7 @@ const XplorBtnToggleGroup$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnTog
|
|
|
16
16
|
this.density = 'default';
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
|
-
return (h(Host, { key: '
|
|
19
|
+
return (h(Host, { key: '9f4c71cf767b466ed9116c30d3befde6d794122d' }, h("div", { key: '8004544207dce87f5eebbb56fa2829a17adcb5e6', class: "xplor-btn-toggle-group", role: "group" }, h("slot", { key: '3aa75d08de1bc105295b5204273c34697b46ef87' }))));
|
|
20
20
|
}
|
|
21
21
|
static get style() { return xplorBtnToggleGroupCss; }
|
|
22
22
|
}, [6, "xplor-btn-toggle-group", {
|
|
@@ -33,7 +33,7 @@ const XplorBtnToggleSecondary$1 = /*@__PURE__*/ proxyCustomElement(class XplorBt
|
|
|
33
33
|
'xplor-btn-toggle-secondary--disabled': this.disabled,
|
|
34
34
|
'xplor-btn-toggle-secondary--inactive-outlined': this.inactiveOutlined && !this.active,
|
|
35
35
|
};
|
|
36
|
-
return (h(Host, { key: '
|
|
36
|
+
return (h(Host, { key: '52551538bd39aedb16ab80e6f7e82d922128df31' }, h("button", { key: '8d527b973bef5aebaf437cd962421572e0005c11', class: buttonClasses, disabled: this.disabled, onClick: this.handleClick, "aria-pressed": this.active ? 'true' : 'false' }, h("slot", { key: '1f8da5c88d120cd82b0e91a40fa76f6f5aaa006b' }))));
|
|
37
37
|
}
|
|
38
38
|
static get style() { return xplorBtnToggleSecondaryCss; }
|
|
39
39
|
}, [6, "xplor-btn-toggle-secondary", {
|
|
@@ -37,7 +37,7 @@ const XplorBtnToggle$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnToggle e
|
|
|
37
37
|
'xplor-btn-toggle--disabled': this.disabled,
|
|
38
38
|
'xplor-btn-toggle--inactive-outlined': this.inactiveOutlined && !this.active,
|
|
39
39
|
};
|
|
40
|
-
return (h(Host, { key: '
|
|
40
|
+
return (h(Host, { key: '0df89df461cff00e400c8519d01355e02944a09b' }, h("button", { key: '3b3ae840b9724bc999729e0596166c6247319d3d', class: buttonClasses, disabled: this.disabled, onClick: this.handleClick, "aria-pressed": this.active ? 'true' : 'false' }, h("slot", { key: '468875beb8d19c779c6c1f29b016e4d870f8c563' }))));
|
|
41
41
|
}
|
|
42
42
|
static get style() { return xplorBtnToggleCss; }
|
|
43
43
|
}, [6, "xplor-btn-toggle", {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h, a as Host } from './index.js';
|
|
2
|
-
import { d as defineCustomElement$3 } from './p-
|
|
3
|
-
import { d as defineCustomElement$2 } from './p-
|
|
2
|
+
import { d as defineCustomElement$3 } from './p-CyGsSa4H.js';
|
|
3
|
+
import { d as defineCustomElement$2 } from './p-BQ6aLuGP.js';
|
|
4
4
|
|
|
5
5
|
const xplorBtnTooltipCss = "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@layer base {\n \n :root {\n --color-primary: #db3b03;\n --color-primary-50: rgba(255, 152, 0, 1);\n --color-secondary: rgb(0, 119, 107);\n --color-secondary-50: rgba(1, 163, 157, 1);\n --color-tertiary: rgb(128, 104, 186);\n --color-tertiary: rgb(223, 242, 241);\n --color-white: white;\n --color-emphasis: rgb(8, 8, 9);\n --color-supergiant: rgb(213, 66, 99);\n --color-orange: rgb(250, 200, 127);\n --color-buttons: #fbbc05;\n --color-typography: #ea4335;\n --background: 20 66% 99%;\n --foreground: 20 51% 4%;\n --muted: 20 25% 86%;\n --muted-foreground: 20 7% 25%;\n --popover: 20 66% 98%;\n --popover-foreground: 20 51% 3%;\n --card: 20 66% 98%;\n --card-foreground: 20 51% 3%;\n --border: 20 15% 94%;\n --input: 20 15% 94%;\n --primary: 20 48% 72%;\n --primary-foreground: 20 48% 12%;\n --secondary: 20 12% 92%;\n --secondary-foreground: 20 12% 32%;\n --accent: 20 12% 92%;\n --accent-foreground: 20 12% 32%;\n --destructive: 11 80% 22%;\n --destructive-foreground: 11 80% 82%;\n --ring: 20 48% 72%;\n --radius: 0.5rem;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n }\n .dark {\n --background: 253 43% 3%;\n --foreground: 253 31% 98%;\n --muted: 253 7% 13%;\n --muted-foreground: 253 13% 63%;\n --popover: 253 43% 3%;\n --popover-foreground: 253 31% 98%;\n --card: 253 43% 4%;\n --card-foreground: 253 31% 99%;\n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n --primary: 253 91% 58%;\n --primary-foreground: 253 91% 98%;\n --secondary: 253 7% 9%;\n --secondary-foreground: 253 7% 69%;\n --accent: 253 13% 14%;\n --accent-foreground: 253 13% 74%;\n --destructive: 339.2 90.36% 51.18%;\n --destructive-foreground: 0 0% 100%;\n --ring: 253 91% 58%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n }\n}\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply box-border bg-background text-foreground;\n }\n}\n@layer utilities {\n .min-h-screen {\n min-height: 100vh;\n \n min-height: 100dvh;\n }\n .h-screen {\n height: 100vh;\n \n height: 100dvh;\n }\n}\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@layer components {\n .glass {\n border: none;\n backdrop-filter: blur(var(--glass-blur, 40px));\n background-color: transparent;\n background-image: linear-gradient(135deg, rgb(255, 255, 255, var(--glass-opacity, 30%)), transparent), linear-gradient(var(--glass-reflex-degree, 100deg), rgb(255, 255, 255, var(--glass-reflex-opacity, 10%)) 25%, transparent 0);\n box-shadow: 0 0 0 1px rgb(255, 255, 255, var(--glass-border-opacity, 10%)) inset, 0 0 0 2px rgba(0, 0, 0, 0.05);\n text-shadow: 0 1px rgb(0, 0, 0, var(--glass-text-shadow-opacity, 5%));\n }\n}\n.tox.tox-tinymce.sc-xplor-btn-tooltip {\n width: 50% !important;\n height: 400px !important;\n display: inline-flex;\n}\n\n\n@media only screen and (min-width: 600px) {\n .tox.tox-tinymce.sc-xplor-btn-tooltip {\n width: 600px !important;\n }\n}\nh1.sc-xplor-btn-tooltip {\n color: var(--color-primary);\n \n font-family: Inter;\n font-size: 48px;\n font-style: normal;\n font-weight: 400;\n line-height: 56px; \n}\n\nh2.sc-xplor-btn-tooltip {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 32px;\n font-style: normal;\n font-weight: 600;\n line-height: 38px; \n letter-spacing: 0.25px;\n}\n\nh3.sc-xplor-btn-tooltip {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 24px;\n font-style: normal;\n font-weight: 400;\n line-height: 32px; \n}\n\n.overline.sc-xplor-btn-tooltip {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 16px; \n letter-spacing: 3.2px;\n text-transform: uppercase;\n}\n\nol.sc-xplor-btn-tooltip, ul.sc-xplor-btn-tooltip {\n list-style: none;\n margin: 1rem;\n padding: 0;\n}\nol.sc-xplor-btn-tooltip li.sc-xplor-btn-tooltip, ul.sc-xplor-btn-tooltip li.sc-xplor-btn-tooltip {\n margin: 1rem;\n padding: 0;\n}\nol.mdc-list.sc-xplor-btn-tooltip, ul.mdc-list.sc-xplor-btn-tooltip {\n list-style-type: none;\n list-style: none;\n}\nol.mdc-list.sc-xplor-btn-tooltip li.mdc-list-item.sc-xplor-btn-tooltip, ul.mdc-list.sc-xplor-btn-tooltip li.mdc-list-item.sc-xplor-btn-tooltip {\n list-style-type: none;\n list-style: none !important;\n}\n\n.orange-label.sc-xplor-btn-tooltip {\n color: var(--Orange-900-Primary, #db3b03);\n \n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 16px; \n letter-spacing: 0.4px;\n margin: 0px 0 -9px 16px;\n z-index: 1 !important;\n position: relative;\n width: fit-content;\n}\n.orange-label.grey-bg.sc-xplor-btn-tooltip {\n background-color: #fefcfb;\n}\n\n#spinnerLoader.sc-xplor-btn-tooltip {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: #fff;\n padding: 20px;\n border-radius: 5px;\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n pointer-events: none;\n}\n\n#textfield-Title-label.sc-xplor-btn-tooltip {\n background-color: white;\n}\n\n.mdc-ripple-upgraded.sc-xplor-btn-tooltip .mdc-text-field--outlined.sc-xplor-btn-tooltip .mdc-notched-outline__notch.sc-xplor-btn-tooltip {\n border: 0px solid transparent !important;\n border-bottom: 1px solid #db3b03 !important;\n padding: 0;\n height: 0;\n}\n\n.mdc-text-field--focused.sc-xplor-btn-tooltip .mdc-notched-outline__notch.sc-xplor-btn-tooltip {\n border: 0px solid transparent !important;\n border-bottom: 2px solid #db3b03 !important;\n}\n\n.mdc-text-field--outlined.sc-xplor-btn-tooltip .mdc-notched-outline.sc-xplor-btn-tooltip .mdc-notched-outline__notch.sc-xplor-btn-tooltip {\n max-width: calc(100% - max(12px, var(--mdc-shape-small, 4px)) * 2);\n border-top: transparent;\n}\n\n.generate-btn.sc-xplor-btn-tooltip {\n display: flex;\n height: 48px;\n padding: 12px 24px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 16px;\n}\n.generate-btn.link.sc-xplor-btn-tooltip:hover {\n background-color: var(--Cyan-700-Secondary, #e27046);\n color: var(--Cyan-700-Secondary-Text, #fff);\n}\n\n.bg-green.sc-xplor-btn-tooltip {\n background: var(--Cyan-700-Secondary, #00776b);\n}\n\n.sc-xplor-btn-tooltip-h {\n display: inline-block;\n}";
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ const XplorBtnTooltip$1 = /*@__PURE__*/ proxyCustomElement(class XplorBtnTooltip
|
|
|
13
13
|
this.disabled = false;
|
|
14
14
|
}
|
|
15
15
|
render() {
|
|
16
|
-
return (h(Host, { key: '
|
|
16
|
+
return (h(Host, { key: '6d43dae5717d346c8a9ffa210f79bd9d74d8d6a9' }, h("xplor-tooltip", { key: 'a5dd7d12066e3fb08334463cc7410d5cdde5158b', position: this.tooltipPosition, content: this.tooltipText, trigger: "hover", arrow: true, disabled: this.disabled }, h("xplor-button", { key: '83e0ac08cfafeeadd25c23e682af15faa2cc81de', slot: "trigger", text: this.text, type: this.type, mode: this.mode, "icon-position": this.iconPosition }, h("slot", { key: 'e994ce16062426a41f67d92dfb0be8f54acceff1' })))));
|
|
17
17
|
}
|
|
18
18
|
static get style() { return xplorBtnTooltipCss; }
|
|
19
19
|
}, [6, "xplor-btn-tooltip", {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../dist/types/components";
|
|
2
|
+
|
|
3
|
+
interface XplorCanvasEditor extends Components.XplorCanvasEditor, HTMLElement {}
|
|
4
|
+
export const XplorCanvasEditor: {
|
|
5
|
+
prototype: XplorCanvasEditor;
|
|
6
|
+
new (): XplorCanvasEditor;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './index.js';
|
|
2
|
+
|
|
3
|
+
const xplorCanvasEditorCss = "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@layer base {\n \n :root {\n --color-primary: #db3b03;\n --color-primary-50: rgba(255, 152, 0, 1);\n --color-secondary: rgb(0, 119, 107);\n --color-secondary-50: rgba(1, 163, 157, 1);\n --color-tertiary: rgb(128, 104, 186);\n --color-tertiary: rgb(223, 242, 241);\n --color-white: white;\n --color-emphasis: rgb(8, 8, 9);\n --color-supergiant: rgb(213, 66, 99);\n --color-orange: rgb(250, 200, 127);\n --color-buttons: #fbbc05;\n --color-typography: #ea4335;\n --background: 20 66% 99%;\n --foreground: 20 51% 4%;\n --muted: 20 25% 86%;\n --muted-foreground: 20 7% 25%;\n --popover: 20 66% 98%;\n --popover-foreground: 20 51% 3%;\n --card: 20 66% 98%;\n --card-foreground: 20 51% 3%;\n --border: 20 15% 94%;\n --input: 20 15% 94%;\n --primary: 20 48% 72%;\n --primary-foreground: 20 48% 12%;\n --secondary: 20 12% 92%;\n --secondary-foreground: 20 12% 32%;\n --accent: 20 12% 92%;\n --accent-foreground: 20 12% 32%;\n --destructive: 11 80% 22%;\n --destructive-foreground: 11 80% 82%;\n --ring: 20 48% 72%;\n --radius: 0.5rem;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n }\n .dark {\n --background: 253 43% 3%;\n --foreground: 253 31% 98%;\n --muted: 253 7% 13%;\n --muted-foreground: 253 13% 63%;\n --popover: 253 43% 3%;\n --popover-foreground: 253 31% 98%;\n --card: 253 43% 4%;\n --card-foreground: 253 31% 99%;\n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n --primary: 253 91% 58%;\n --primary-foreground: 253 91% 98%;\n --secondary: 253 7% 9%;\n --secondary-foreground: 253 7% 69%;\n --accent: 253 13% 14%;\n --accent-foreground: 253 13% 74%;\n --destructive: 339.2 90.36% 51.18%;\n --destructive-foreground: 0 0% 100%;\n --ring: 253 91% 58%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n }\n}\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply box-border bg-background text-foreground;\n }\n}\n@layer utilities {\n .min-h-screen {\n min-height: 100vh;\n \n min-height: 100dvh;\n }\n .h-screen {\n height: 100vh;\n \n height: 100dvh;\n }\n}\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@layer components {\n .glass {\n border: none;\n backdrop-filter: blur(var(--glass-blur, 40px));\n background-color: transparent;\n background-image: linear-gradient(135deg, rgb(255, 255, 255, var(--glass-opacity, 30%)), transparent), linear-gradient(var(--glass-reflex-degree, 100deg), rgb(255, 255, 255, var(--glass-reflex-opacity, 10%)) 25%, transparent 0);\n box-shadow: 0 0 0 1px rgb(255, 255, 255, var(--glass-border-opacity, 10%)) inset, 0 0 0 2px rgba(0, 0, 0, 0.05);\n text-shadow: 0 1px rgb(0, 0, 0, var(--glass-text-shadow-opacity, 5%));\n }\n}\n.tox.tox-tinymce.sc-xplor-canvas-editor {\n width: 50% !important;\n height: 400px !important;\n display: inline-flex;\n}\n\n\n@media only screen and (min-width: 600px) {\n .tox.tox-tinymce.sc-xplor-canvas-editor {\n width: 600px !important;\n }\n}\nh1.sc-xplor-canvas-editor {\n color: var(--color-primary);\n \n font-family: Inter;\n font-size: 48px;\n font-style: normal;\n font-weight: 400;\n line-height: 56px; \n}\n\nh2.sc-xplor-canvas-editor {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 32px;\n font-style: normal;\n font-weight: 600;\n line-height: 38px; \n letter-spacing: 0.25px;\n}\n\nh3.sc-xplor-canvas-editor {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 24px;\n font-style: normal;\n font-weight: 400;\n line-height: 32px; \n}\n\n.overline.sc-xplor-canvas-editor {\n color: var(--grey-1100252525, #252525);\n \n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 16px; \n letter-spacing: 3.2px;\n text-transform: uppercase;\n}\n\nol.sc-xplor-canvas-editor, ul.sc-xplor-canvas-editor {\n list-style: none;\n margin: 1rem;\n padding: 0;\n}\nol.sc-xplor-canvas-editor li.sc-xplor-canvas-editor, ul.sc-xplor-canvas-editor li.sc-xplor-canvas-editor {\n margin: 1rem;\n padding: 0;\n}\nol.mdc-list.sc-xplor-canvas-editor, ul.mdc-list.sc-xplor-canvas-editor {\n list-style-type: none;\n list-style: none;\n}\nol.mdc-list.sc-xplor-canvas-editor li.mdc-list-item.sc-xplor-canvas-editor, ul.mdc-list.sc-xplor-canvas-editor li.mdc-list-item.sc-xplor-canvas-editor {\n list-style-type: none;\n list-style: none !important;\n}\n\n.orange-label.sc-xplor-canvas-editor {\n color: var(--Orange-900-Primary, #db3b03);\n \n font-family: Inter;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: 16px; \n letter-spacing: 0.4px;\n margin: 0px 0 -9px 16px;\n z-index: 1 !important;\n position: relative;\n width: fit-content;\n}\n.orange-label.grey-bg.sc-xplor-canvas-editor {\n background-color: #fefcfb;\n}\n\n#spinnerLoader.sc-xplor-canvas-editor {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: #fff;\n padding: 20px;\n border-radius: 5px;\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n pointer-events: none;\n}\n\n#textfield-Title-label.sc-xplor-canvas-editor {\n background-color: white;\n}\n\n.mdc-ripple-upgraded.sc-xplor-canvas-editor .mdc-text-field--outlined.sc-xplor-canvas-editor .mdc-notched-outline__notch.sc-xplor-canvas-editor {\n border: 0px solid transparent !important;\n border-bottom: 1px solid #db3b03 !important;\n padding: 0;\n height: 0;\n}\n\n.mdc-text-field--focused.sc-xplor-canvas-editor .mdc-notched-outline__notch.sc-xplor-canvas-editor {\n border: 0px solid transparent !important;\n border-bottom: 2px solid #db3b03 !important;\n}\n\n.mdc-text-field--outlined.sc-xplor-canvas-editor .mdc-notched-outline.sc-xplor-canvas-editor .mdc-notched-outline__notch.sc-xplor-canvas-editor {\n max-width: calc(100% - max(12px, var(--mdc-shape-small, 4px)) * 2);\n border-top: transparent;\n}\n\n.generate-btn.sc-xplor-canvas-editor {\n display: flex;\n height: 48px;\n padding: 12px 24px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 16px;\n}\n.generate-btn.link.sc-xplor-canvas-editor:hover {\n background-color: var(--Cyan-700-Secondary, #e27046);\n color: var(--Cyan-700-Secondary-Text, #fff);\n}\n\n.bg-green.sc-xplor-canvas-editor {\n background: var(--Cyan-700-Secondary, #00776b);\n}\n\n.margin-128.sc-xplor-canvas-editor {\n margin: 8rem;\n}\n\n.margin-t-128.sc-xplor-canvas-editor {\n margin-top: 8rem;\n}\n\n.margin-r-128.sc-xplor-canvas-editor {\n margin-right: 8rem;\n}\n\n.margin-b-128.sc-xplor-canvas-editor {\n margin-bottom: 8rem;\n}\n\n.margin-l-128.sc-xplor-canvas-editor {\n margin-left: 8rem;\n}\n\n.margin-x-128.sc-xplor-canvas-editor {\n margin-left: 8rem;\n margin-right: 8rem;\n}\n\n.margin-y-128.sc-xplor-canvas-editor {\n margin-top: 8rem;\n margin-bottom: 8rem;\n}\n\n.margin-80.sc-xplor-canvas-editor {\n margin: 5rem;\n}\n\n.margin-t-80.sc-xplor-canvas-editor {\n margin-top: 5rem;\n}\n\n.margin-r-80.sc-xplor-canvas-editor {\n margin-right: 5rem;\n}\n\n.margin-b-80.sc-xplor-canvas-editor {\n margin-bottom: 5rem;\n}\n\n.margin-l-80.sc-xplor-canvas-editor {\n margin-left: 5rem;\n}\n\n.margin-x-80.sc-xplor-canvas-editor {\n margin-left: 5rem;\n margin-right: 5rem;\n}\n\n.margin-y-80.sc-xplor-canvas-editor {\n margin-top: 5rem;\n margin-bottom: 5rem;\n}\n\n.margin-64.sc-xplor-canvas-editor {\n margin: 4rem;\n}\n\n.margin-t-64.sc-xplor-canvas-editor {\n margin-top: 4rem;\n}\n\n.margin-r-64.sc-xplor-canvas-editor {\n margin-right: 4rem;\n}\n\n.margin-b-64.sc-xplor-canvas-editor {\n margin-bottom: 4rem;\n}\n\n.margin-l-64.sc-xplor-canvas-editor {\n margin-left: 4rem;\n}\n\n.margin-x-64.sc-xplor-canvas-editor {\n margin-left: 4rem;\n margin-right: 4rem;\n}\n\n.margin-y-64.sc-xplor-canvas-editor {\n margin-top: 4rem;\n margin-bottom: 4rem;\n}\n\n.margin-56.sc-xplor-canvas-editor {\n margin: 3.5rem;\n}\n\n.margin-t-56.sc-xplor-canvas-editor {\n margin-top: 3.5rem;\n}\n\n.margin-r-56.sc-xplor-canvas-editor {\n margin-right: 3.5rem;\n}\n\n.margin-b-56.sc-xplor-canvas-editor {\n margin-bottom: 3.5rem;\n}\n\n.margin-l-56.sc-xplor-canvas-editor {\n margin-left: 3.5rem;\n}\n\n.margin-x-56.sc-xplor-canvas-editor {\n margin-left: 3.5rem;\n margin-right: 3.5rem;\n}\n\n.margin-y-56.sc-xplor-canvas-editor {\n margin-top: 3.5rem;\n margin-bottom: 3.5rem;\n}\n\n.margin-48.sc-xplor-canvas-editor {\n margin: 3rem;\n}\n\n.margin-t-48.sc-xplor-canvas-editor {\n margin-top: 3rem;\n}\n\n.margin-r-48.sc-xplor-canvas-editor {\n margin-right: 3rem;\n}\n\n.margin-b-48.sc-xplor-canvas-editor {\n margin-bottom: 3rem;\n}\n\n.margin-l-48.sc-xplor-canvas-editor {\n margin-left: 3rem;\n}\n\n.margin-x-48.sc-xplor-canvas-editor {\n margin-left: 3rem;\n margin-right: 3rem;\n}\n\n.margin-y-48.sc-xplor-canvas-editor {\n margin-top: 3rem;\n margin-bottom: 3rem;\n}\n\n.margin-40.sc-xplor-canvas-editor {\n margin: 2.5rem;\n}\n\n.margin-t-40.sc-xplor-canvas-editor {\n margin-top: 2.5rem;\n}\n\n.margin-r-40.sc-xplor-canvas-editor {\n margin-right: 2.5rem;\n}\n\n.margin-b-40.sc-xplor-canvas-editor {\n margin-bottom: 2.5rem;\n}\n\n.margin-l-40.sc-xplor-canvas-editor {\n margin-left: 2.5rem;\n}\n\n.margin-x-40.sc-xplor-canvas-editor {\n margin-left: 2.5rem;\n margin-right: 2.5rem;\n}\n\n.margin-y-40.sc-xplor-canvas-editor {\n margin-top: 2.5rem;\n margin-bottom: 2.5rem;\n}\n\n.margin-32.sc-xplor-canvas-editor {\n margin: 2rem;\n}\n\n.margin-t-32.sc-xplor-canvas-editor {\n margin-top: 2rem;\n}\n\n.margin-r-32.sc-xplor-canvas-editor {\n margin-right: 2rem;\n}\n\n.margin-b-32.sc-xplor-canvas-editor {\n margin-bottom: 2rem;\n}\n\n.margin-l-32.sc-xplor-canvas-editor {\n margin-left: 2rem;\n}\n\n.margin-x-32.sc-xplor-canvas-editor {\n margin-left: 2rem;\n margin-right: 2rem;\n}\n\n.margin-y-32.sc-xplor-canvas-editor {\n margin-top: 2rem;\n margin-bottom: 2rem;\n}\n\n.margin-24.sc-xplor-canvas-editor {\n margin: 1.5rem;\n}\n\n.margin-t-24.sc-xplor-canvas-editor {\n margin-top: 1.5rem;\n}\n\n.margin-r-24.sc-xplor-canvas-editor {\n margin-right: 1.5rem;\n}\n\n.margin-b-24.sc-xplor-canvas-editor {\n margin-bottom: 1.5rem;\n}\n\n.margin-l-24.sc-xplor-canvas-editor {\n margin-left: 1.5rem;\n}\n\n.margin-x-24.sc-xplor-canvas-editor {\n margin-left: 1.5rem;\n margin-right: 1.5rem;\n}\n\n.margin-y-24.sc-xplor-canvas-editor {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n\n.margin-20.sc-xplor-canvas-editor {\n margin: 1.25rem;\n}\n\n.margin-t-20.sc-xplor-canvas-editor {\n margin-top: 1.25rem;\n}\n\n.margin-r-20.sc-xplor-canvas-editor {\n margin-right: 1.25rem;\n}\n\n.margin-b-20.sc-xplor-canvas-editor {\n margin-bottom: 1.25rem;\n}\n\n.margin-l-20.sc-xplor-canvas-editor {\n margin-left: 1.25rem;\n}\n\n.margin-x-20.sc-xplor-canvas-editor {\n margin-left: 1.25rem;\n margin-right: 1.25rem;\n}\n\n.margin-y-20.sc-xplor-canvas-editor {\n margin-top: 1.25rem;\n margin-bottom: 1.25rem;\n}\n\n.margin-16.sc-xplor-canvas-editor {\n margin: 1rem;\n}\n\n.margin-t-16.sc-xplor-canvas-editor {\n margin-top: 1rem;\n}\n\n.margin-r-16.sc-xplor-canvas-editor {\n margin-right: 1rem;\n}\n\n.margin-b-16.sc-xplor-canvas-editor {\n margin-bottom: 1rem;\n}\n\n.margin-l-16.sc-xplor-canvas-editor {\n margin-left: 1rem;\n}\n\n.margin-x-16.sc-xplor-canvas-editor {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n\n.margin-y-16.sc-xplor-canvas-editor {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n.margin-12.sc-xplor-canvas-editor {\n margin: 0.75rem;\n}\n\n.margin-t-12.sc-xplor-canvas-editor {\n margin-top: 0.75rem;\n}\n\n.margin-r-12.sc-xplor-canvas-editor {\n margin-right: 0.75rem;\n}\n\n.margin-b-12.sc-xplor-canvas-editor {\n margin-bottom: 0.75rem;\n}\n\n.margin-l-12.sc-xplor-canvas-editor {\n margin-left: 0.75rem;\n}\n\n.margin-x-12.sc-xplor-canvas-editor {\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n}\n\n.margin-y-12.sc-xplor-canvas-editor {\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n}\n\n.margin-8.sc-xplor-canvas-editor {\n margin: 0.5rem;\n}\n\n.margin-t-8.sc-xplor-canvas-editor {\n margin-top: 0.5rem;\n}\n\n.margin-r-8.sc-xplor-canvas-editor {\n margin-right: 0.5rem;\n}\n\n.margin-b-8.sc-xplor-canvas-editor {\n margin-bottom: 0.5rem;\n}\n\n.margin-l-8.sc-xplor-canvas-editor {\n margin-left: 0.5rem;\n}\n\n.margin-x-8.sc-xplor-canvas-editor {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n\n.margin-y-8.sc-xplor-canvas-editor {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.margin-4.sc-xplor-canvas-editor {\n margin: 0.25rem;\n}\n\n.margin-t-4.sc-xplor-canvas-editor {\n margin-top: 0.25rem;\n}\n\n.margin-r-4.sc-xplor-canvas-editor {\n margin-right: 0.25rem;\n}\n\n.margin-b-4.sc-xplor-canvas-editor {\n margin-bottom: 0.25rem;\n}\n\n.margin-l-4.sc-xplor-canvas-editor {\n margin-left: 0.25rem;\n}\n\n.margin-x-4.sc-xplor-canvas-editor {\n margin-left: 0.25rem;\n margin-right: 0.25rem;\n}\n\n.margin-y-4.sc-xplor-canvas-editor {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n\n.padding-128.sc-xplor-canvas-editor {\n padding: 8rem;\n}\n\n.padding-t-128.sc-xplor-canvas-editor {\n padding-top: 8rem;\n}\n\n.padding-r-128.sc-xplor-canvas-editor {\n padding-right: 8rem;\n}\n\n.padding-b-128.sc-xplor-canvas-editor {\n padding-bottom: 8rem;\n}\n\n.padding-l-128.sc-xplor-canvas-editor {\n padding-left: 8rem;\n}\n\n.padding-x-128.sc-xplor-canvas-editor {\n padding-left: 8rem;\n padding-right: 8rem;\n}\n\n.padding-y-128.sc-xplor-canvas-editor {\n padding-top: 8rem;\n padding-bottom: 8rem;\n}\n\n.padding-80.sc-xplor-canvas-editor {\n padding: 5rem;\n}\n\n.padding-t-80.sc-xplor-canvas-editor {\n padding-top: 5rem;\n}\n\n.padding-r-80.sc-xplor-canvas-editor {\n padding-right: 5rem;\n}\n\n.padding-b-80.sc-xplor-canvas-editor {\n padding-bottom: 5rem;\n}\n\n.padding-l-80.sc-xplor-canvas-editor {\n padding-left: 5rem;\n}\n\n.padding-x-80.sc-xplor-canvas-editor {\n padding-left: 5rem;\n padding-right: 5rem;\n}\n\n.padding-y-80.sc-xplor-canvas-editor {\n padding-top: 5rem;\n padding-bottom: 5rem;\n}\n\n.padding-64.sc-xplor-canvas-editor {\n padding: 4rem;\n}\n\n.padding-t-64.sc-xplor-canvas-editor {\n padding-top: 4rem;\n}\n\n.padding-r-64.sc-xplor-canvas-editor {\n padding-right: 4rem;\n}\n\n.padding-b-64.sc-xplor-canvas-editor {\n padding-bottom: 4rem;\n}\n\n.padding-l-64.sc-xplor-canvas-editor {\n padding-left: 4rem;\n}\n\n.padding-x-64.sc-xplor-canvas-editor {\n padding-left: 4rem;\n padding-right: 4rem;\n}\n\n.padding-y-64.sc-xplor-canvas-editor {\n padding-top: 4rem;\n padding-bottom: 4rem;\n}\n\n.padding-56.sc-xplor-canvas-editor {\n padding: 3.5rem;\n}\n\n.padding-t-56.sc-xplor-canvas-editor {\n padding-top: 3.5rem;\n}\n\n.padding-r-56.sc-xplor-canvas-editor {\n padding-right: 3.5rem;\n}\n\n.padding-b-56.sc-xplor-canvas-editor {\n padding-bottom: 3.5rem;\n}\n\n.padding-l-56.sc-xplor-canvas-editor {\n padding-left: 3.5rem;\n}\n\n.padding-x-56.sc-xplor-canvas-editor {\n padding-left: 3.5rem;\n padding-right: 3.5rem;\n}\n\n.padding-y-56.sc-xplor-canvas-editor {\n padding-top: 3.5rem;\n padding-bottom: 3.5rem;\n}\n\n.padding-48.sc-xplor-canvas-editor {\n padding: 3rem;\n}\n\n.padding-t-48.sc-xplor-canvas-editor {\n padding-top: 3rem;\n}\n\n.padding-r-48.sc-xplor-canvas-editor {\n padding-right: 3rem;\n}\n\n.padding-b-48.sc-xplor-canvas-editor {\n padding-bottom: 3rem;\n}\n\n.padding-l-48.sc-xplor-canvas-editor {\n padding-left: 3rem;\n}\n\n.padding-x-48.sc-xplor-canvas-editor {\n padding-left: 3rem;\n padding-right: 3rem;\n}\n\n.padding-y-48.sc-xplor-canvas-editor {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.padding-40.sc-xplor-canvas-editor {\n padding: 2.5rem;\n}\n\n.padding-t-40.sc-xplor-canvas-editor {\n padding-top: 2.5rem;\n}\n\n.padding-r-40.sc-xplor-canvas-editor {\n padding-right: 2.5rem;\n}\n\n.padding-b-40.sc-xplor-canvas-editor {\n padding-bottom: 2.5rem;\n}\n\n.padding-l-40.sc-xplor-canvas-editor {\n padding-left: 2.5rem;\n}\n\n.padding-x-40.sc-xplor-canvas-editor {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n}\n\n.padding-y-40.sc-xplor-canvas-editor {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n\n.padding-32.sc-xplor-canvas-editor {\n padding: 2rem;\n}\n\n.padding-t-32.sc-xplor-canvas-editor {\n padding-top: 2rem;\n}\n\n.padding-r-32.sc-xplor-canvas-editor {\n padding-right: 2rem;\n}\n\n.padding-b-32.sc-xplor-canvas-editor {\n padding-bottom: 2rem;\n}\n\n.padding-l-32.sc-xplor-canvas-editor {\n padding-left: 2rem;\n}\n\n.padding-x-32.sc-xplor-canvas-editor {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.padding-y-32.sc-xplor-canvas-editor {\n padding-top: 2rem;\n padding-bottom: 2rem;\n}\n\n.padding-24.sc-xplor-canvas-editor {\n padding: 1.5rem;\n}\n\n.padding-t-24.sc-xplor-canvas-editor {\n padding-top: 1.5rem;\n}\n\n.padding-r-24.sc-xplor-canvas-editor {\n padding-right: 1.5rem;\n}\n\n.padding-b-24.sc-xplor-canvas-editor {\n padding-bottom: 1.5rem;\n}\n\n.padding-l-24.sc-xplor-canvas-editor {\n padding-left: 1.5rem;\n}\n\n.padding-x-24.sc-xplor-canvas-editor {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.padding-y-24.sc-xplor-canvas-editor {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n.padding-20.sc-xplor-canvas-editor {\n padding: 1.25rem;\n}\n\n.padding-t-20.sc-xplor-canvas-editor {\n padding-top: 1.25rem;\n}\n\n.padding-r-20.sc-xplor-canvas-editor {\n padding-right: 1.25rem;\n}\n\n.padding-b-20.sc-xplor-canvas-editor {\n padding-bottom: 1.25rem;\n}\n\n.padding-l-20.sc-xplor-canvas-editor {\n padding-left: 1.25rem;\n}\n\n.padding-x-20.sc-xplor-canvas-editor {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n.padding-y-20.sc-xplor-canvas-editor {\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n}\n\n.padding-16.sc-xplor-canvas-editor {\n padding: 1rem;\n}\n\n.padding-t-16.sc-xplor-canvas-editor {\n padding-top: 1rem;\n}\n\n.padding-r-16.sc-xplor-canvas-editor {\n padding-right: 1rem;\n}\n\n.padding-b-16.sc-xplor-canvas-editor {\n padding-bottom: 1rem;\n}\n\n.padding-l-16.sc-xplor-canvas-editor {\n padding-left: 1rem;\n}\n\n.padding-x-16.sc-xplor-canvas-editor {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.padding-y-16.sc-xplor-canvas-editor {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.padding-12.sc-xplor-canvas-editor {\n padding: 0.75rem;\n}\n\n.padding-t-12.sc-xplor-canvas-editor {\n padding-top: 0.75rem;\n}\n\n.padding-r-12.sc-xplor-canvas-editor {\n padding-right: 0.75rem;\n}\n\n.padding-b-12.sc-xplor-canvas-editor {\n padding-bottom: 0.75rem;\n}\n\n.padding-l-12.sc-xplor-canvas-editor {\n padding-left: 0.75rem;\n}\n\n.padding-x-12.sc-xplor-canvas-editor {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n.padding-y-12.sc-xplor-canvas-editor {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n.padding-8.sc-xplor-canvas-editor {\n padding: 0.5rem;\n}\n\n.padding-t-8.sc-xplor-canvas-editor {\n padding-top: 0.5rem;\n}\n\n.padding-r-8.sc-xplor-canvas-editor {\n padding-right: 0.5rem;\n}\n\n.padding-b-8.sc-xplor-canvas-editor {\n padding-bottom: 0.5rem;\n}\n\n.padding-l-8.sc-xplor-canvas-editor {\n padding-left: 0.5rem;\n}\n\n.padding-x-8.sc-xplor-canvas-editor {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n.padding-y-8.sc-xplor-canvas-editor {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.padding-4.sc-xplor-canvas-editor {\n padding: 0.25rem;\n}\n\n.padding-t-4.sc-xplor-canvas-editor {\n padding-top: 0.25rem;\n}\n\n.padding-r-4.sc-xplor-canvas-editor {\n padding-right: 0.25rem;\n}\n\n.padding-b-4.sc-xplor-canvas-editor {\n padding-bottom: 0.25rem;\n}\n\n.padding-l-4.sc-xplor-canvas-editor {\n padding-left: 0.25rem;\n}\n\n.padding-x-4.sc-xplor-canvas-editor {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n\n.padding-y-4.sc-xplor-canvas-editor {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n.sc-xplor-canvas-editor-h {\n display: block;\n --canvas-bg: var(--color-surface, #ffffff);\n --canvas-border: var(--color-gray-200, #eeeeee);\n --canvas-border-radius: 0.75rem;\n --canvas-toolbar-bg: var(--color-gray-50, #fafafa);\n --canvas-toolbar-border: var(--color-gray-200, #eeeeee);\n --handle-size: 5;\n --handle-fill: #ffffff;\n --handle-stroke: var(--color-primary-500, var(--color-primary-500, #2196f3));\n --selection-color: var(--color-primary-500, var(--color-primary-500, #2196f3));\n --canvas-btn-size: 2rem;\n --canvas-btn-color: var(--color-gray-600, #757575);\n --canvas-btn-active-bg: var(--color-primary-50, var(--color-primary-50, #e3f2fd));\n --canvas-btn-active-color: var(--color-primary-500, var(--color-primary-500, #2196f3));\n --canvas-btn-hover-bg: var(--color-gray-100, #f5f5f5);\n --canvas-btn-danger-color: var(--color-error-600, var(--color-error-600, #e53935));\n --canvas-btn-danger-hover-bg: var(--color-error-50, #fef2f2);\n}\n\n.xplor-canvas__sr-only.sc-xplor-canvas-editor {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.xplor-canvas.sc-xplor-canvas-editor {\n display: inline-flex;\n flex-direction: column;\n border: 1px solid var(--canvas-border);\n border-radius: var(--canvas-border-radius);\n background-color: var(--canvas-bg);\n overflow: hidden;\n outline: none;\n position: relative;\n}\n.xplor-canvas.sc-xplor-canvas-editor:focus-visible {\n outline: 2px solid var(--selection-color);\n outline-offset: 2px;\n}\n\n.xplor-canvas__toolbar.sc-xplor-canvas-editor {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background-color: var(--canvas-toolbar-bg);\n border-bottom: 1px solid var(--canvas-toolbar-border);\n flex-shrink: 0;\n}\n\n.xplor-canvas__toolbar-group.sc-xplor-canvas-editor {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.xplor-canvas__toolbar-divider.sc-xplor-canvas-editor {\n width: 1px;\n height: 1.5rem;\n background-color: var(--canvas-toolbar-border);\n margin: 0 0.25rem;\n flex-shrink: 0;\n}\n\n.xplor-canvas__toolbar-btn.sc-xplor-canvas-editor {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--canvas-btn-size);\n height: var(--canvas-btn-size);\n border: none;\n border-radius: 0.375rem;\n background: transparent;\n color: var(--canvas-btn-color);\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n padding: 0;\n flex-shrink: 0;\n}\n.xplor-canvas__toolbar-btn.sc-xplor-canvas-editor svg.sc-xplor-canvas-editor {\n pointer-events: none;\n}\n.xplor-canvas__toolbar-btn.sc-xplor-canvas-editor:hover:not(:disabled) {\n background-color: var(--canvas-btn-hover-bg);\n}\n.xplor-canvas__toolbar-btn.sc-xplor-canvas-editor:focus-visible {\n outline: 2px solid var(--selection-color);\n outline-offset: 1px;\n}\n.xplor-canvas__toolbar-btn--active.sc-xplor-canvas-editor {\n background-color: var(--canvas-btn-active-bg);\n color: var(--canvas-btn-active-color);\n}\n.xplor-canvas__toolbar-btn--danger.sc-xplor-canvas-editor {\n color: var(--canvas-btn-danger-color);\n}\n.xplor-canvas__toolbar-btn--danger.sc-xplor-canvas-editor:hover:not(:disabled) {\n background-color: var(--canvas-btn-danger-hover-bg);\n}\n.xplor-canvas__toolbar-btn.sc-xplor-canvas-editor:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.xplor-canvas__svg-wrapper.sc-xplor-canvas-editor {\n overflow: auto;\n flex: 1 1 auto;\n line-height: 0;\n}\n\n.xplor-canvas__svg.sc-xplor-canvas-editor {\n display: block;\n background-color: var(--canvas-bg);\n user-select: none;\n -webkit-user-select: none;\n cursor: default;\n}\n\n.xplor-canvas__bg.sc-xplor-canvas-editor {\n fill: transparent;\n}\n\n.xplor-canvas__shape.sc-xplor-canvas-editor {\n transition: opacity 0.1s ease;\n}\n.xplor-canvas__shape.sc-xplor-canvas-editor:hover {\n opacity: 0.85;\n}\n.xplor-canvas__shape--selected.sc-xplor-canvas-editor {\n opacity: 1;\n}\n.xplor-canvas__shape--draft.sc-xplor-canvas-editor {\n pointer-events: none;\n opacity: 0.7;\n stroke-dasharray: 4, 3;\n}\n\n.xplor-canvas__selection-overlay.sc-xplor-canvas-editor {\n pointer-events: none;\n}\n\n.xplor-canvas__handle.sc-xplor-canvas-editor {\n fill: var(--handle-fill, #ffffff);\n stroke: var(--handle-stroke, var(--color-primary-500, #2196f3));\n stroke-width: 2;\n transition: fill 0.1s ease, transform 0.1s ease;\n}\n.xplor-canvas__handle.sc-xplor-canvas-editor:hover {\n fill: var(--handle-stroke, var(--color-primary-500, #2196f3));\n transform-origin: center;\n transform: scale(1.3);\n}\n.xplor-canvas__handle.sc-xplor-canvas-editor:focus-visible {\n outline: 2px solid var(--selection-color);\n outline-offset: 2px;\n}\n\n.dark.sc-xplor-canvas-editor-h, .dark .sc-xplor-canvas-editor-h {\n --canvas-bg: var(--color-surface-dark, #1e1e2e);\n --canvas-border: var(--color-gray-700, #616161);\n --canvas-toolbar-bg: var(--color-gray-800, #424242);\n --canvas-toolbar-border: var(--color-gray-700, #616161);\n --canvas-btn-color: var(--color-gray-300, #e0e0e0);\n --canvas-btn-hover-bg: var(--color-gray-700, #616161);\n --canvas-btn-active-bg: rgba(33, 150, 243, 0.2);\n --canvas-btn-active-color: var(--color-primary-300, var(--color-primary-300, #64b5f6));\n --handle-fill: #1e1e2e;\n}";
|
|
4
|
+
|
|
5
|
+
let canvasIdCounter = 0;
|
|
6
|
+
const XplorCanvasEditor$1 = /*@__PURE__*/ proxyCustomElement(class XplorCanvasEditor extends H {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
this.xplorShapeAdd = createEvent(this, "xplorShapeAdd");
|
|
11
|
+
this.xplorShapeRemove = createEvent(this, "xplorShapeRemove");
|
|
12
|
+
this.xplorShapeChange = createEvent(this, "xplorShapeChange");
|
|
13
|
+
this.componentId = `xplor-canvas-${++canvasIdCounter}`;
|
|
14
|
+
// Drawing state (non-reactive, no need to trigger re-render)
|
|
15
|
+
this.isDrawing = false;
|
|
16
|
+
this.drawStart = null;
|
|
17
|
+
// Resize state
|
|
18
|
+
this.isResizing = false;
|
|
19
|
+
this.resizeHandle = null;
|
|
20
|
+
this.resizeStart = null;
|
|
21
|
+
// -------------------------------------------------------------------------
|
|
22
|
+
// Props
|
|
23
|
+
// -------------------------------------------------------------------------
|
|
24
|
+
/** Width of the SVG canvas in pixels */
|
|
25
|
+
this.width = 800;
|
|
26
|
+
/** Height of the SVG canvas in pixels */
|
|
27
|
+
this.height = 500;
|
|
28
|
+
/**
|
|
29
|
+
* Initially active tool. The consumer can switch tool programmatically by
|
|
30
|
+
* updating this prop; the internal `activeTool` state takes over once the
|
|
31
|
+
* component mounts.
|
|
32
|
+
*/
|
|
33
|
+
this.tool = 'select';
|
|
34
|
+
// -------------------------------------------------------------------------
|
|
35
|
+
// State
|
|
36
|
+
// -------------------------------------------------------------------------
|
|
37
|
+
this.shapes = [];
|
|
38
|
+
this.selectedId = null;
|
|
39
|
+
this.activeTool = 'select';
|
|
40
|
+
this.draftShape = null;
|
|
41
|
+
// -------------------------------------------------------------------------
|
|
42
|
+
// Private: Drawing handlers (SVG events)
|
|
43
|
+
// -------------------------------------------------------------------------
|
|
44
|
+
this.onSvgMouseDown = (event) => {
|
|
45
|
+
// Only draw if target is the SVG itself or the background rect
|
|
46
|
+
const target = event.target;
|
|
47
|
+
const isBackground = target === this.svgEl ||
|
|
48
|
+
target.classList.contains('xplor-canvas__bg');
|
|
49
|
+
if (this.activeTool === 'select') {
|
|
50
|
+
// Clicking background clears selection
|
|
51
|
+
if (isBackground) {
|
|
52
|
+
this.selectedId = null;
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (!isBackground)
|
|
57
|
+
return;
|
|
58
|
+
const point = this.getSvgPoint(event);
|
|
59
|
+
this.isDrawing = true;
|
|
60
|
+
this.drawStart = point;
|
|
61
|
+
this.draftShape = {
|
|
62
|
+
id: '__draft__',
|
|
63
|
+
type: this.activeTool,
|
|
64
|
+
x: point.x,
|
|
65
|
+
y: point.y,
|
|
66
|
+
width: 0,
|
|
67
|
+
height: 0,
|
|
68
|
+
fill: 'rgba(33, 150, 243, 0.15)',
|
|
69
|
+
stroke: '#2196f3',
|
|
70
|
+
};
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
};
|
|
73
|
+
this.onSvgMouseMove = (event) => {
|
|
74
|
+
if (!this.isDrawing || !this.drawStart || !this.draftShape)
|
|
75
|
+
return;
|
|
76
|
+
const point = this.getSvgPoint(event);
|
|
77
|
+
const x = Math.min(point.x, this.drawStart.x);
|
|
78
|
+
const y = Math.min(point.y, this.drawStart.y);
|
|
79
|
+
const width = Math.abs(point.x - this.drawStart.x);
|
|
80
|
+
const height = Math.abs(point.y - this.drawStart.y);
|
|
81
|
+
// Spread to a new object to trigger re-render
|
|
82
|
+
this.draftShape = Object.assign(Object.assign({}, this.draftShape), { x, y, width, height });
|
|
83
|
+
};
|
|
84
|
+
this.onSvgMouseUp = (_event) => {
|
|
85
|
+
if (!this.isDrawing || !this.draftShape) {
|
|
86
|
+
this.isDrawing = false;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.isDrawing = false;
|
|
90
|
+
// Discard draws smaller than 5 px in either dimension
|
|
91
|
+
if (this.draftShape.width < 5 || this.draftShape.height < 5) {
|
|
92
|
+
this.draftShape = null;
|
|
93
|
+
this.drawStart = null;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const newShape = Object.assign(Object.assign({}, this.draftShape), { id: this.generateId(), fill: 'rgba(33, 150, 243, 0.25)', stroke: '#1976d2' });
|
|
97
|
+
this.shapes = [...this.shapes, newShape];
|
|
98
|
+
this.draftShape = null;
|
|
99
|
+
this.drawStart = null;
|
|
100
|
+
this.xplorShapeAdd.emit(newShape);
|
|
101
|
+
};
|
|
102
|
+
this.onShapeClick = (event, shape) => {
|
|
103
|
+
if (this.activeTool !== 'select')
|
|
104
|
+
return;
|
|
105
|
+
event.stopPropagation();
|
|
106
|
+
this.selectedId = shape.id;
|
|
107
|
+
};
|
|
108
|
+
// -------------------------------------------------------------------------
|
|
109
|
+
// Private: Resize handlers
|
|
110
|
+
// -------------------------------------------------------------------------
|
|
111
|
+
this.onResizeHandleMouseDown = (event, handleName) => {
|
|
112
|
+
event.stopPropagation();
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
const selectedShape = this.shapes.find(s => s.id === this.selectedId);
|
|
115
|
+
if (!selectedShape)
|
|
116
|
+
return;
|
|
117
|
+
const point = this.getSvgPoint(event);
|
|
118
|
+
this.isResizing = true;
|
|
119
|
+
this.resizeHandle = handleName;
|
|
120
|
+
this.resizeStart = { x: point.x, y: point.y, shape: Object.assign({}, selectedShape) };
|
|
121
|
+
const onMouseMove = (e) => this.onResizeMouseMove(e);
|
|
122
|
+
const onMouseUp = (e) => {
|
|
123
|
+
this.onResizeMouseUp(e);
|
|
124
|
+
window.removeEventListener('mousemove', onMouseMove);
|
|
125
|
+
window.removeEventListener('mouseup', onMouseUp);
|
|
126
|
+
};
|
|
127
|
+
window.addEventListener('mousemove', onMouseMove);
|
|
128
|
+
window.addEventListener('mouseup', onMouseUp);
|
|
129
|
+
};
|
|
130
|
+
this.onResizeMouseMove = (event) => {
|
|
131
|
+
if (!this.isResizing || !this.resizeStart || !this.resizeHandle)
|
|
132
|
+
return;
|
|
133
|
+
const point = this.getSvgPoint(event);
|
|
134
|
+
const dx = point.x - this.resizeStart.x;
|
|
135
|
+
const dy = point.y - this.resizeStart.y;
|
|
136
|
+
const orig = this.resizeStart.shape;
|
|
137
|
+
const MIN = 10;
|
|
138
|
+
let { x, y, width, height } = orig;
|
|
139
|
+
if (this.resizeHandle.includes('e')) {
|
|
140
|
+
width = Math.max(MIN, orig.width + dx);
|
|
141
|
+
}
|
|
142
|
+
if (this.resizeHandle.includes('w')) {
|
|
143
|
+
const newWidth = Math.max(MIN, orig.width - dx);
|
|
144
|
+
x = orig.x + (orig.width - newWidth);
|
|
145
|
+
width = newWidth;
|
|
146
|
+
}
|
|
147
|
+
if (this.resizeHandle.includes('s')) {
|
|
148
|
+
height = Math.max(MIN, orig.height + dy);
|
|
149
|
+
}
|
|
150
|
+
if (this.resizeHandle.includes('n')) {
|
|
151
|
+
const newHeight = Math.max(MIN, orig.height - dy);
|
|
152
|
+
y = orig.y + (orig.height - newHeight);
|
|
153
|
+
height = newHeight;
|
|
154
|
+
}
|
|
155
|
+
this.shapes = this.shapes.map(s => s.id === this.selectedId ? Object.assign(Object.assign({}, s), { x, y, width, height }) : s);
|
|
156
|
+
};
|
|
157
|
+
this.onResizeMouseUp = (_event) => {
|
|
158
|
+
if (!this.isResizing)
|
|
159
|
+
return;
|
|
160
|
+
this.isResizing = false;
|
|
161
|
+
this.resizeHandle = null;
|
|
162
|
+
this.resizeStart = null;
|
|
163
|
+
const updatedShape = this.shapes.find(s => s.id === this.selectedId);
|
|
164
|
+
if (updatedShape) {
|
|
165
|
+
this.xplorShapeChange.emit(Object.assign({}, updatedShape));
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
// -------------------------------------------------------------------------
|
|
169
|
+
// Private: Keyboard handler (on the wrapper div)
|
|
170
|
+
// -------------------------------------------------------------------------
|
|
171
|
+
this.onKeyDown = (event) => {
|
|
172
|
+
if (event.key === 'Delete' || event.key === 'Backspace') {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
this.deleteSelected();
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// -------------------------------------------------------------------------
|
|
179
|
+
// Lifecycle
|
|
180
|
+
// -------------------------------------------------------------------------
|
|
181
|
+
componentWillLoad() {
|
|
182
|
+
this.activeTool = this.tool;
|
|
183
|
+
}
|
|
184
|
+
// -------------------------------------------------------------------------
|
|
185
|
+
// Public methods
|
|
186
|
+
// -------------------------------------------------------------------------
|
|
187
|
+
/** Removes all shapes and clears the selection */
|
|
188
|
+
async clearAll() {
|
|
189
|
+
this.shapes = [];
|
|
190
|
+
this.selectedId = null;
|
|
191
|
+
}
|
|
192
|
+
/** Returns a shallow copy of all current shapes */
|
|
193
|
+
async getShapes() {
|
|
194
|
+
return [...this.shapes];
|
|
195
|
+
}
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
// Private: Utilities
|
|
198
|
+
// -------------------------------------------------------------------------
|
|
199
|
+
generateId() {
|
|
200
|
+
return `shape-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
201
|
+
}
|
|
202
|
+
getSvgPoint(event) {
|
|
203
|
+
const rect = this.svgEl.getBoundingClientRect();
|
|
204
|
+
return {
|
|
205
|
+
x: Math.max(0, Math.min(this.width, event.clientX - rect.left)),
|
|
206
|
+
y: Math.max(0, Math.min(this.height, event.clientY - rect.top)),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
setActiveTool(tool) {
|
|
210
|
+
this.activeTool = tool;
|
|
211
|
+
this.draftShape = null;
|
|
212
|
+
this.isDrawing = false;
|
|
213
|
+
}
|
|
214
|
+
deleteSelected() {
|
|
215
|
+
if (!this.selectedId)
|
|
216
|
+
return;
|
|
217
|
+
const id = this.selectedId;
|
|
218
|
+
this.shapes = this.shapes.filter(s => s.id !== id);
|
|
219
|
+
this.selectedId = null;
|
|
220
|
+
this.xplorShapeRemove.emit(id);
|
|
221
|
+
}
|
|
222
|
+
// -------------------------------------------------------------------------
|
|
223
|
+
// Private: SVG render helpers
|
|
224
|
+
// -------------------------------------------------------------------------
|
|
225
|
+
renderShape(shape, isDraft = false) {
|
|
226
|
+
const isSelected = !isDraft && shape.id === this.selectedId;
|
|
227
|
+
const commonProps = {
|
|
228
|
+
class: {
|
|
229
|
+
'xplor-canvas__shape': true,
|
|
230
|
+
'xplor-canvas__shape--selected': isSelected,
|
|
231
|
+
'xplor-canvas__shape--draft': isDraft,
|
|
232
|
+
},
|
|
233
|
+
fill: shape.fill,
|
|
234
|
+
stroke: shape.stroke,
|
|
235
|
+
'stroke-width': '2',
|
|
236
|
+
style: {
|
|
237
|
+
cursor: this.activeTool === 'select' && !isDraft ? 'pointer' : 'default',
|
|
238
|
+
},
|
|
239
|
+
onClick: !isDraft
|
|
240
|
+
? (e) => this.onShapeClick(e, shape)
|
|
241
|
+
: undefined,
|
|
242
|
+
};
|
|
243
|
+
if (shape.type === 'rect') {
|
|
244
|
+
return (h("rect", Object.assign({}, commonProps, { x: shape.x, y: shape.y, width: shape.width, height: shape.height, rx: "2" })));
|
|
245
|
+
}
|
|
246
|
+
if (shape.type === 'circle') {
|
|
247
|
+
return (h("ellipse", Object.assign({}, commonProps, { cx: shape.x + shape.width / 2, cy: shape.y + shape.height / 2, rx: shape.width / 2, ry: shape.height / 2 })));
|
|
248
|
+
}
|
|
249
|
+
if (shape.type === 'line') {
|
|
250
|
+
return (h("line", Object.assign({}, commonProps, { x1: shape.x, y1: shape.y, x2: shape.x + shape.width, y2: shape.y + shape.height, fill: "none" })));
|
|
251
|
+
}
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
renderSelectionOverlay(shape) {
|
|
255
|
+
const overlayProps = {
|
|
256
|
+
class: 'xplor-canvas__selection-overlay',
|
|
257
|
+
stroke: 'var(--selection-color, #2196f3)',
|
|
258
|
+
'stroke-dasharray': '5,3',
|
|
259
|
+
'stroke-width': '2',
|
|
260
|
+
fill: 'none',
|
|
261
|
+
style: { pointerEvents: 'none' },
|
|
262
|
+
};
|
|
263
|
+
if (shape.type === 'line') {
|
|
264
|
+
return (h("line", Object.assign({}, overlayProps, { x1: shape.x, y1: shape.y, x2: shape.x + shape.width, y2: shape.y + shape.height })));
|
|
265
|
+
}
|
|
266
|
+
if (shape.type === 'circle') {
|
|
267
|
+
return (h("ellipse", Object.assign({}, overlayProps, { cx: shape.x + shape.width / 2, cy: shape.y + shape.height / 2, rx: shape.width / 2, ry: shape.height / 2 })));
|
|
268
|
+
}
|
|
269
|
+
// rect (default)
|
|
270
|
+
return (h("rect", Object.assign({}, overlayProps, { x: shape.x, y: shape.y, width: shape.width, height: shape.height, rx: "2" })));
|
|
271
|
+
}
|
|
272
|
+
renderResizeHandles(shape) {
|
|
273
|
+
const { x, y, width, height } = shape;
|
|
274
|
+
const mx = x + width / 2;
|
|
275
|
+
const my = y + height / 2;
|
|
276
|
+
const handles = [
|
|
277
|
+
{ name: 'nw', cx: x, cy: y, cursor: 'nwse-resize' },
|
|
278
|
+
{ name: 'n', cx: mx, cy: y, cursor: 'ns-resize' },
|
|
279
|
+
{ name: 'ne', cx: x + width, cy: y, cursor: 'nesw-resize' },
|
|
280
|
+
{ name: 'e', cx: x + width, cy: my, cursor: 'ew-resize' },
|
|
281
|
+
{ name: 'se', cx: x + width, cy: y + height, cursor: 'nwse-resize' },
|
|
282
|
+
{ name: 's', cx: mx, cy: y + height, cursor: 'ns-resize' },
|
|
283
|
+
{ name: 'sw', cx: x, cy: y + height, cursor: 'nesw-resize' },
|
|
284
|
+
{ name: 'w', cx: x, cy: my, cursor: 'ew-resize' },
|
|
285
|
+
];
|
|
286
|
+
return handles.map(h => (h("circle", { key: h.name, class: "xplor-canvas__handle", cx: h.cx, cy: h.cy, r: "var(--handle-size, 5)", style: { cursor: h.cursor }, onMouseDown: (e) => this.onResizeHandleMouseDown(e, h.name), "aria-label": `Resize ${h.name.toUpperCase()} handle`, role: "button" })));
|
|
287
|
+
}
|
|
288
|
+
// -------------------------------------------------------------------------
|
|
289
|
+
// Private: Toolbar render
|
|
290
|
+
// -------------------------------------------------------------------------
|
|
291
|
+
renderToolbar() {
|
|
292
|
+
const tools = [
|
|
293
|
+
{
|
|
294
|
+
id: 'select',
|
|
295
|
+
label: 'Select tool',
|
|
296
|
+
icon: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M4 0 L20 12 L12.5 14.5 L10 24 Z" }))),
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
id: 'rect',
|
|
300
|
+
label: 'Rectangle tool',
|
|
301
|
+
icon: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, h("rect", { x: "3", y: "3", width: "18", height: "18", rx: "1" }))),
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
id: 'circle',
|
|
305
|
+
label: 'Circle / Ellipse tool',
|
|
306
|
+
icon: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, h("ellipse", { cx: "12", cy: "12", rx: "9", ry: "9" }))),
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: 'line',
|
|
310
|
+
label: 'Line tool',
|
|
311
|
+
icon: (h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, h("line", { x1: "3", y1: "21", x2: "21", y2: "3" }))),
|
|
312
|
+
},
|
|
313
|
+
];
|
|
314
|
+
return (h("div", { class: "xplor-canvas__toolbar", role: "toolbar", "aria-label": "Canvas drawing tools", id: `${this.componentId}-toolbar` }, h("div", { class: "xplor-canvas__toolbar-group", role: "group", "aria-label": "Drawing tools" }, tools.map(t => (h("button", { type: "button", key: t.id, class: {
|
|
315
|
+
'xplor-canvas__toolbar-btn': true,
|
|
316
|
+
'xplor-canvas__toolbar-btn--active': this.activeTool === t.id,
|
|
317
|
+
}, "aria-label": t.label, "aria-pressed": String(this.activeTool === t.id), title: t.label, onClick: () => this.setActiveTool(t.id) }, t.icon)))), h("div", { class: "xplor-canvas__toolbar-divider", "aria-hidden": "true" }), h("div", { class: "xplor-canvas__toolbar-group", role: "group", "aria-label": "Canvas actions" }, h("button", { type: "button", class: {
|
|
318
|
+
'xplor-canvas__toolbar-btn': true,
|
|
319
|
+
'xplor-canvas__toolbar-btn--danger': !!this.selectedId,
|
|
320
|
+
}, "aria-label": "Delete selected shape", title: "Delete selected (Del)", disabled: !this.selectedId, onClick: () => this.deleteSelected() }, h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" }))), h("button", { type: "button", class: "xplor-canvas__toolbar-btn", "aria-label": "Clear all shapes", title: "Clear all", onClick: () => this.clearAll() }, h("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" }, h("path", { d: "M5 13h14v-2H5v2zm-2 4h14v-2H3v2zM7 7v2h14V7H7z" }), h("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }))))));
|
|
321
|
+
}
|
|
322
|
+
// -------------------------------------------------------------------------
|
|
323
|
+
// Render
|
|
324
|
+
// -------------------------------------------------------------------------
|
|
325
|
+
render() {
|
|
326
|
+
const selectedShape = this.selectedId
|
|
327
|
+
? this.shapes.find(s => s.id === this.selectedId)
|
|
328
|
+
: null;
|
|
329
|
+
const svgCursor = this.activeTool !== 'select' ? 'crosshair' : 'default';
|
|
330
|
+
return (h(Host, { key: '14f6878d3a4a6de64d1862ab998f2acdf00004d5' }, h("div", { key: '62a4fff983faeea8884d30df8a3bc3e39e6931a6', class: "xplor-canvas", role: "application", "aria-label": "Canvas editor", "aria-describedby": `${this.componentId}-desc`, tabIndex: 0, onKeyDown: this.onKeyDown }, h("span", { key: 'cb962f76307036784990f491e9b55f38baa0b660', id: `${this.componentId}-desc`, class: "xplor-canvas__sr-only" }, "Interactive canvas editor. Use toolbar to select a drawing tool, then click and drag on the canvas to draw shapes. Press Delete to remove a selected shape."), this.renderToolbar(), h("div", { key: 'e46429cfb82d2804ad97f474469e307d4cedc61a', class: "xplor-canvas__svg-wrapper" }, h("svg", { key: '01f59f5ad95af1854ce8883b79fbcb382b8c910f', ref: el => (this.svgEl = el), class: "xplor-canvas__svg", width: this.width, height: this.height, style: { cursor: svgCursor }, "aria-label": `Drawing canvas, ${this.shapes.length} shape${this.shapes.length !== 1 ? 's' : ''}`, role: "img", onMouseDown: this.onSvgMouseDown, onMouseMove: this.onSvgMouseMove, onMouseUp: this.onSvgMouseUp }, h("rect", { key: '831a519b540b5dd36c15edec85ad67bcb6d1dc03', class: "xplor-canvas__bg", x: "0", y: "0", width: this.width, height: this.height, fill: "transparent" }), this.shapes.map(shape => this.renderShape(shape)), selectedShape && this.renderSelectionOverlay(selectedShape), selectedShape &&
|
|
331
|
+
this.activeTool === 'select' &&
|
|
332
|
+
this.renderResizeHandles(selectedShape), this.draftShape && this.renderShape(this.draftShape, true))), h("div", { key: '5758ccf14f88614a1732085e287bad7f29ea0030', class: "xplor-canvas__sr-only", "aria-live": "polite", "aria-atomic": "true" }, this.shapes.length > 0
|
|
333
|
+
? `Canvas contains ${this.shapes.length} shape${this.shapes.length !== 1 ? 's' : ''}.`
|
|
334
|
+
: 'Canvas is empty.'))));
|
|
335
|
+
}
|
|
336
|
+
get el() { return this; }
|
|
337
|
+
static get style() { return xplorCanvasEditorCss; }
|
|
338
|
+
}, [2, "xplor-canvas-editor", {
|
|
339
|
+
"width": [2],
|
|
340
|
+
"height": [2],
|
|
341
|
+
"tool": [1],
|
|
342
|
+
"shapes": [32],
|
|
343
|
+
"selectedId": [32],
|
|
344
|
+
"activeTool": [32],
|
|
345
|
+
"draftShape": [32],
|
|
346
|
+
"clearAll": [64],
|
|
347
|
+
"getShapes": [64]
|
|
348
|
+
}]);
|
|
349
|
+
function defineCustomElement$1() {
|
|
350
|
+
if (typeof customElements === "undefined") {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
const components = ["xplor-canvas-editor"];
|
|
354
|
+
components.forEach(tagName => { switch (tagName) {
|
|
355
|
+
case "xplor-canvas-editor":
|
|
356
|
+
if (!customElements.get(tagName)) {
|
|
357
|
+
customElements.define(tagName, XplorCanvasEditor$1);
|
|
358
|
+
}
|
|
359
|
+
break;
|
|
360
|
+
} });
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const XplorCanvasEditor = XplorCanvasEditor$1;
|
|
364
|
+
const defineCustomElement = defineCustomElement$1;
|
|
365
|
+
|
|
366
|
+
export { XplorCanvasEditor, defineCustomElement };
|
|
367
|
+
//# sourceMappingURL=xplor-canvas-editor.js.map
|
|
368
|
+
|
|
369
|
+
//# sourceMappingURL=xplor-canvas-editor.js.map
|