@bagelink/vue 0.0.1262 → 0.0.1270
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AddressSearch.vue.d.ts +6 -0
- package/dist/components/AddressSearch.vue.d.ts.map +1 -1
- package/dist/components/DropDown.vue.d.ts +51 -48
- package/dist/components/DropDown.vue.d.ts.map +1 -1
- package/dist/components/Icon/Icon.vue.d.ts.map +1 -1
- package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/DateInput.vue.d.ts +4 -1
- package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RadioGroup.vue.d.ts +1 -1
- package/dist/components/form/inputs/RichText/composables/useCommands.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/composables/useEditor.d.ts +31 -23
- package/dist/components/form/inputs/RichText/composables/useEditor.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/composables/useEditorKeyboard.d.ts +2 -1
- package/dist/components/form/inputs/RichText/composables/useEditorKeyboard.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/config.d.ts +2 -1
- package/dist/components/form/inputs/RichText/config.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/utils/commands.d.ts +1 -0
- package/dist/components/form/inputs/RichText/utils/commands.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/utils/media.d.ts +5 -3
- package/dist/components/form/inputs/RichText/utils/media.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/utils/selection.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts +12 -0
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TelInput.vue.d.ts +8 -2
- package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
- package/dist/editor-7QC0nG_c.js +4 -0
- package/dist/editor-CpMNx6Eo.cjs +4 -0
- package/dist/index.cjs +1392 -820
- package/dist/index.mjs +1392 -820
- package/dist/style.css +100 -87
- package/package.json +1 -1
- package/src/components/DataTable/DataTable.vue +1 -1
- package/src/components/Dropdown.vue +5 -2
- package/src/components/Icon/Icon.vue +14 -0
- package/src/components/form/FieldArray.vue +3 -0
- package/src/components/form/inputs/DateInput.vue +341 -162
- package/src/components/form/inputs/PasswordInput.vue +5 -1
- package/src/components/form/inputs/RichText/components/EditorToolbar.vue +2 -2
- package/src/components/form/inputs/RichText/composables/useCommands.ts +53 -97
- package/src/components/form/inputs/RichText/composables/useEditor.ts +377 -270
- package/src/components/form/inputs/RichText/composables/useEditorKeyboard.ts +124 -58
- package/src/components/form/inputs/RichText/config.ts +27 -3
- package/src/components/form/inputs/RichText/editor.css +29 -0
- package/src/components/form/inputs/RichText/index.vue +129 -55
- package/src/components/form/inputs/RichText/richTextTypes.d.ts +35 -49
- package/src/components/form/inputs/RichText/utils/commands.ts +181 -0
- package/src/components/form/inputs/RichText/utils/media.ts +64 -3
- package/src/components/form/inputs/RichText/utils/selection.ts +40 -5
- package/src/styles/text.css +0 -8
package/dist/index.mjs
CHANGED
|
@@ -83,7 +83,7 @@ const _sfc_main$1l = /* @__PURE__ */ defineComponent({
|
|
|
83
83
|
key: 0,
|
|
84
84
|
class: normalizeClass(["accordion-icon", [_ctx.iconClass, { open: unref(isOpen) && _ctx.iconType === "expand_more" }]])
|
|
85
85
|
}, [
|
|
86
|
-
createVNode(unref(
|
|
86
|
+
createVNode(unref(Icon), { icon: computedIcon.value }, null, 8, ["icon"])
|
|
87
87
|
], 2)) : createCommentVNode("", true),
|
|
88
88
|
renderSlot(_ctx.$slots, "head", {}, () => [
|
|
89
89
|
createElementVNode("span", _hoisted_2$R, toDisplayString(_ctx.label), 1)
|
|
@@ -92,7 +92,7 @@ const _sfc_main$1l = /* @__PURE__ */ defineComponent({
|
|
|
92
92
|
key: 1,
|
|
93
93
|
class: normalizeClass(["accordion-icon", [_ctx.iconClass, { open: unref(isOpen) && _ctx.iconType === "expand_more" }]])
|
|
94
94
|
}, [
|
|
95
|
-
createVNode(unref(
|
|
95
|
+
createVNode(unref(Icon), { icon: computedIcon.value }, null, 8, ["icon"])
|
|
96
96
|
], 2)) : createCommentVNode("", true)
|
|
97
97
|
], 8, _hoisted_1$19),
|
|
98
98
|
createVNode(Transition, { name: "expand" }, {
|
|
@@ -250,7 +250,7 @@ const _sfc_main$1j = /* @__PURE__ */ defineComponent({
|
|
|
250
250
|
class: "h-100p",
|
|
251
251
|
size: "15"
|
|
252
252
|
})) : (openBlock(), createElementBlock("div", _hoisted_1$17, [
|
|
253
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
253
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
254
254
|
key: 0,
|
|
255
255
|
icon: _ctx.icon,
|
|
256
256
|
class: "transition-400"
|
|
@@ -259,7 +259,7 @@ const _sfc_main$1j = /* @__PURE__ */ defineComponent({
|
|
|
259
259
|
!unref(slots).default && _ctx.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
260
260
|
createTextVNode(toDisplayString(_ctx.value), 1)
|
|
261
261
|
], 64)) : createCommentVNode("", true),
|
|
262
|
-
_ctx.iconEnd ? (openBlock(), createBlock(unref(
|
|
262
|
+
_ctx.iconEnd ? (openBlock(), createBlock(unref(Icon), {
|
|
263
263
|
key: 2,
|
|
264
264
|
icon: _ctx.iconEnd,
|
|
265
265
|
class: "transition-400"
|
|
@@ -297,7 +297,7 @@ const _sfc_main$1i = /* @__PURE__ */ defineComponent({
|
|
|
297
297
|
class: normalizeClass(["alert", [_ctx.type]]),
|
|
298
298
|
dismissable: _ctx.dismissable
|
|
299
299
|
}, [
|
|
300
|
-
_ctx.icon !== "none" ? (openBlock(), createBlock(unref(
|
|
300
|
+
_ctx.icon !== "none" ? (openBlock(), createBlock(unref(Icon), {
|
|
301
301
|
key: 0,
|
|
302
302
|
class: "alert_icon",
|
|
303
303
|
icon: _ctx.icon || _ctx.type,
|
|
@@ -359,13 +359,13 @@ const _sfc_main$1g = /* @__PURE__ */ defineComponent({
|
|
|
359
359
|
return openBlock(), createElementBlock("div", {
|
|
360
360
|
class: normalizeClass(["pill", [_ctx.color]])
|
|
361
361
|
}, [
|
|
362
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
362
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
363
363
|
key: 0,
|
|
364
364
|
class: "inline",
|
|
365
365
|
icon: _ctx.icon
|
|
366
366
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
367
367
|
createTextVNode(" " + toDisplayString(_ctx.text) + " ", 1),
|
|
368
|
-
_ctx.iconEnd ? (openBlock(), createBlock(unref(
|
|
368
|
+
_ctx.iconEnd ? (openBlock(), createBlock(unref(Icon), {
|
|
369
369
|
key: 1,
|
|
370
370
|
class: "inline",
|
|
371
371
|
icon: _ctx.iconEnd
|
|
@@ -829,14 +829,14 @@ const _sfc_main$1d = /* @__PURE__ */ defineComponent({
|
|
|
829
829
|
}, [
|
|
830
830
|
createElementVNode("div", _hoisted_2$N, [
|
|
831
831
|
eventTime.value && !__props.calendarEvent.originalEvent ? (openBlock(), createElementBlock("span", _hoisted_3$E, [
|
|
832
|
-
createVNode(unref(
|
|
832
|
+
createVNode(unref(Icon), {
|
|
833
833
|
icon: icons.clock,
|
|
834
834
|
size: 0.8
|
|
835
835
|
}, null, 8, ["icon"]),
|
|
836
836
|
createTextVNode(" " + toDisplayString(eventTime.value), 1)
|
|
837
837
|
])) : createCommentVNode("", true),
|
|
838
838
|
__props.calendarEvent.location ? (openBlock(), createElementBlock("span", _hoisted_4$s, [
|
|
839
|
-
createVNode(unref(
|
|
839
|
+
createVNode(unref(Icon), {
|
|
840
840
|
icon: icons.location,
|
|
841
841
|
size: 1
|
|
842
842
|
}, null, 8, ["icon"]),
|
|
@@ -846,7 +846,7 @@ const _sfc_main$1d = /* @__PURE__ */ defineComponent({
|
|
|
846
846
|
createElementVNode("div", null, [
|
|
847
847
|
createElementVNode("div", _hoisted_5$o, toDisplayString(__props.calendarEvent.title), 1),
|
|
848
848
|
__props.calendarEvent.with ? (openBlock(), createElementBlock("div", _hoisted_6$k, [
|
|
849
|
-
createVNode(unref(
|
|
849
|
+
createVNode(unref(Icon), {
|
|
850
850
|
icon: icons.user
|
|
851
851
|
}, null, 8, ["icon"]),
|
|
852
852
|
createTextVNode(" " + toDisplayString(__props.calendarEvent.with), 1)
|
|
@@ -1807,19 +1807,19 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
|
|
|
1807
1807
|
!__props.config.eventDialog || !__props.config.eventDialog.isCustom ? (openBlock(), createElementBlock("div", _hoisted_1$10, [
|
|
1808
1808
|
createElementVNode("div", _hoisted_2$L, [
|
|
1809
1809
|
isEditable.value ? (openBlock(), createElementBlock("span", _hoisted_3$C, [
|
|
1810
|
-
createVNode(unref(
|
|
1810
|
+
createVNode(unref(Icon), {
|
|
1811
1811
|
class: "event-flyout__menu-item is-edit-icon",
|
|
1812
1812
|
icon: icons.edit,
|
|
1813
1813
|
onClick: editEvent
|
|
1814
1814
|
}, null, 8, ["icon"]),
|
|
1815
|
-
createVNode(unref(
|
|
1815
|
+
createVNode(unref(Icon), {
|
|
1816
1816
|
class: "event-flyout__menu-item is-trash-icon",
|
|
1817
1817
|
icon: icons.trash,
|
|
1818
1818
|
onClick: deleteEvent
|
|
1819
1819
|
}, null, 8, ["icon"])
|
|
1820
1820
|
])) : createCommentVNode("", true),
|
|
1821
1821
|
createElementVNode("span", _hoisted_4$q, [
|
|
1822
|
-
createVNode(unref(
|
|
1822
|
+
createVNode(unref(Icon), {
|
|
1823
1823
|
class: "event-flyout__menu-item is-times-icon",
|
|
1824
1824
|
icon: icons.times,
|
|
1825
1825
|
onClick: closeFlyout
|
|
@@ -1836,25 +1836,25 @@ const _sfc_main$1b = /* @__PURE__ */ defineComponent({
|
|
|
1836
1836
|
])) : createCommentVNode("", true),
|
|
1837
1837
|
calendarEvent.value.time ? (openBlock(), createElementBlock("div", _hoisted_7$d, toDisplayString(getEventTime.value), 1)) : createCommentVNode("", true),
|
|
1838
1838
|
calendarEvent.value.location ? (openBlock(), createElementBlock("div", _hoisted_8$9, [
|
|
1839
|
-
createVNode(unref(
|
|
1839
|
+
createVNode(unref(Icon), {
|
|
1840
1840
|
icon: icons.location
|
|
1841
1841
|
}, null, 8, ["icon"]),
|
|
1842
1842
|
createTextVNode(" " + toDisplayString(calendarEvent.value.location), 1)
|
|
1843
1843
|
])) : createCommentVNode("", true),
|
|
1844
1844
|
calendarEvent.value.with ? (openBlock(), createElementBlock("div", _hoisted_9$7, [
|
|
1845
|
-
createVNode(unref(
|
|
1845
|
+
createVNode(unref(Icon), {
|
|
1846
1846
|
icon: icons.user
|
|
1847
1847
|
}, null, 8, ["icon"]),
|
|
1848
1848
|
createTextVNode(" " + toDisplayString(calendarEvent.value.with), 1)
|
|
1849
1849
|
])) : createCommentVNode("", true),
|
|
1850
1850
|
calendarEvent.value.topic ? (openBlock(), createElementBlock("div", _hoisted_10$7, [
|
|
1851
|
-
createVNode(unref(
|
|
1851
|
+
createVNode(unref(Icon), {
|
|
1852
1852
|
icon: icons.topic
|
|
1853
1853
|
}, null, 8, ["icon"]),
|
|
1854
1854
|
createTextVNode(" " + toDisplayString(calendarEvent.value.topic), 1)
|
|
1855
1855
|
])) : createCommentVNode("", true),
|
|
1856
1856
|
calendarEvent.value.description ? (openBlock(), createElementBlock("div", _hoisted_11$6, [
|
|
1857
|
-
createVNode(unref(
|
|
1857
|
+
createVNode(unref(Icon), {
|
|
1858
1858
|
icon: icons.description
|
|
1859
1859
|
}, null, 8, ["icon"]),
|
|
1860
1860
|
createElementVNode("p", {
|
|
@@ -2898,35 +2898,35 @@ const _sfc_main$16 = /* @__PURE__ */ defineComponent({
|
|
|
2898
2898
|
}, [
|
|
2899
2899
|
createElementVNode("div", _hoisted_2$H, toDisplayString(event.value.title), 1),
|
|
2900
2900
|
createElementVNode("div", _hoisted_3$y, [
|
|
2901
|
-
createVNode(unref(
|
|
2901
|
+
createVNode(unref(Icon), {
|
|
2902
2902
|
icon: icons.value.clock,
|
|
2903
2903
|
class: "calendar-week__event-icon"
|
|
2904
2904
|
}, null, 8, ["icon"]),
|
|
2905
2905
|
createElementVNode("span", null, toDisplayString(getEventTime.value), 1)
|
|
2906
2906
|
]),
|
|
2907
2907
|
event.value.location ? (openBlock(), createElementBlock("div", _hoisted_4$m, [
|
|
2908
|
-
createVNode(unref(
|
|
2908
|
+
createVNode(unref(Icon), {
|
|
2909
2909
|
icon: icons.value.location,
|
|
2910
2910
|
class: "calendar-week__event-icon"
|
|
2911
2911
|
}, null, 8, ["icon"]),
|
|
2912
2912
|
createElementVNode("span", null, toDisplayString(event.value.location), 1)
|
|
2913
2913
|
])) : createCommentVNode("", true),
|
|
2914
2914
|
event.value.with ? (openBlock(), createElementBlock("div", _hoisted_5$k, [
|
|
2915
|
-
createVNode(unref(
|
|
2915
|
+
createVNode(unref(Icon), {
|
|
2916
2916
|
icon: icons.value.user,
|
|
2917
2917
|
class: "calendar-week__event-icon"
|
|
2918
2918
|
}, null, 8, ["icon"]),
|
|
2919
2919
|
createElementVNode("span", null, toDisplayString(event.value.with), 1)
|
|
2920
2920
|
])) : createCommentVNode("", true),
|
|
2921
2921
|
event.value.topic ? (openBlock(), createElementBlock("div", _hoisted_6$h, [
|
|
2922
|
-
createVNode(unref(
|
|
2922
|
+
createVNode(unref(Icon), {
|
|
2923
2923
|
icon: icons.value.topic,
|
|
2924
2924
|
class: "calendar-week__event-icon"
|
|
2925
2925
|
}, null, 8, ["icon"]),
|
|
2926
2926
|
createElementVNode("span", null, toDisplayString(event.value.topic), 1)
|
|
2927
2927
|
])) : createCommentVNode("", true),
|
|
2928
2928
|
event.value.description ? (openBlock(), createElementBlock("div", _hoisted_7$c, [
|
|
2929
|
-
createVNode(unref(
|
|
2929
|
+
createVNode(unref(Icon), {
|
|
2930
2930
|
icon: icons.value.description,
|
|
2931
2931
|
class: "calendar-week__event-icon"
|
|
2932
2932
|
}, null, 8, ["icon"]),
|
|
@@ -11468,7 +11468,7 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
|
|
|
11468
11468
|
emits: /* @__PURE__ */ mergeModels(["update:selectedItems", "orderBy", "select", "lastItemVisible"], ["update:loading", "update:itemHeight", "update:selectedItems"]),
|
|
11469
11469
|
setup(__props, { emit: __emit }) {
|
|
11470
11470
|
useCssVars((_ctx) => ({
|
|
11471
|
-
"
|
|
11471
|
+
"40bb5b9a": unref(computedItemHeight)
|
|
11472
11472
|
}));
|
|
11473
11473
|
const props2 = __props;
|
|
11474
11474
|
const emit2 = __emit;
|
|
@@ -11593,7 +11593,7 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
|
|
|
11593
11593
|
createElementVNode("div", {
|
|
11594
11594
|
class: normalizeClass(["list-arrows", { sorted: unref(sortField) === field.id }])
|
|
11595
11595
|
}, [
|
|
11596
|
-
createVNode(unref(
|
|
11596
|
+
createVNode(unref(Icon), {
|
|
11597
11597
|
class: normalizeClass({ desc: unref(sortDirection) === "DESC" }),
|
|
11598
11598
|
icon: "keyboard_arrow_up"
|
|
11599
11599
|
}, null, 8, ["class"])
|
|
@@ -11652,7 +11652,7 @@ const _sfc_main$X = /* @__PURE__ */ defineComponent({
|
|
|
11652
11652
|
};
|
|
11653
11653
|
}
|
|
11654
11654
|
});
|
|
11655
|
-
const DataTable = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__scopeId", "data-v-
|
|
11655
|
+
const DataTable = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["__scopeId", "data-v-89f6838b"]]);
|
|
11656
11656
|
function useDraggable(options = {}) {
|
|
11657
11657
|
const isDragging = ref(false);
|
|
11658
11658
|
const dragElement = ref(null);
|
|
@@ -14762,7 +14762,9 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
|
|
|
14762
14762
|
round: { type: Boolean },
|
|
14763
14763
|
placement: {},
|
|
14764
14764
|
noAutoFocus: { type: Boolean },
|
|
14765
|
-
positioningDisabled: { type: Boolean }
|
|
14765
|
+
positioningDisabled: { type: Boolean },
|
|
14766
|
+
autoHide: { type: Boolean },
|
|
14767
|
+
triggers: {}
|
|
14766
14768
|
}, {
|
|
14767
14769
|
"shown": {
|
|
14768
14770
|
type: Boolean,
|
|
@@ -14795,6 +14797,8 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
|
|
|
14795
14797
|
disabled: _ctx.disabled,
|
|
14796
14798
|
noAutoFocus: _ctx.noAutoFocus,
|
|
14797
14799
|
placement: _ctx.placement,
|
|
14800
|
+
autoHide: _ctx.autoHide,
|
|
14801
|
+
triggers: _ctx.triggers,
|
|
14798
14802
|
onHide: _cache[1] || (_cache[1] = ($event) => emit2("hide")),
|
|
14799
14803
|
onShow: _cache[2] || (_cache[2] = ($event) => emit2("show"))
|
|
14800
14804
|
}, {
|
|
@@ -14821,7 +14825,7 @@ const _sfc_main$V = /* @__PURE__ */ defineComponent({
|
|
|
14821
14825
|
])
|
|
14822
14826
|
]),
|
|
14823
14827
|
_: 3
|
|
14824
|
-
}, 8, ["shown", "disabled", "noAutoFocus", "placement"]);
|
|
14828
|
+
}, 8, ["shown", "disabled", "noAutoFocus", "placement", "autoHide", "triggers"]);
|
|
14825
14829
|
};
|
|
14826
14830
|
}
|
|
14827
14831
|
});
|
|
@@ -15769,33 +15773,31 @@ const _hoisted_3$o = {
|
|
|
15769
15773
|
key: 0,
|
|
15770
15774
|
class: "required"
|
|
15771
15775
|
};
|
|
15772
|
-
const _hoisted_4$g = { class: "
|
|
15773
|
-
const _hoisted_5$f = { class: "flex
|
|
15774
|
-
const _hoisted_6$c = { class: "
|
|
15775
|
-
const _hoisted_7$9 = { class: "
|
|
15776
|
-
const _hoisted_8$6 = {
|
|
15777
|
-
const _hoisted_9$5 = { class: "month-year" };
|
|
15778
|
-
const _hoisted_10$5 = {
|
|
15776
|
+
const _hoisted_4$g = { class: "calendar-section m_border-none pe-05 m_p-0" };
|
|
15777
|
+
const _hoisted_5$f = { class: "flex space-between pb-1" };
|
|
15778
|
+
const _hoisted_6$c = { class: "flex gap-05" };
|
|
15779
|
+
const _hoisted_7$9 = { class: "month-year" };
|
|
15780
|
+
const _hoisted_8$6 = {
|
|
15779
15781
|
key: 0,
|
|
15780
15782
|
class: "calendar-grid grid gap-025"
|
|
15781
15783
|
};
|
|
15782
|
-
const
|
|
15783
|
-
const
|
|
15784
|
+
const _hoisted_9$5 = ["disabled", "onClick"];
|
|
15785
|
+
const _hoisted_10$5 = {
|
|
15784
15786
|
key: 1,
|
|
15785
15787
|
class: "month-grid grid gap-05 p-05"
|
|
15786
15788
|
};
|
|
15787
|
-
const
|
|
15788
|
-
const
|
|
15789
|
+
const _hoisted_11$5 = ["disabled", "onClick"];
|
|
15790
|
+
const _hoisted_12$5 = {
|
|
15789
15791
|
key: 2,
|
|
15790
15792
|
class: "year-grid grid gap-05 p-0"
|
|
15791
15793
|
};
|
|
15792
|
-
const
|
|
15793
|
-
const
|
|
15794
|
+
const _hoisted_13$4 = ["disabled", "onClick"];
|
|
15795
|
+
const _hoisted_14$4 = {
|
|
15794
15796
|
key: 0,
|
|
15795
15797
|
class: "time-picker border-start flex column gap-1 w-120px"
|
|
15796
15798
|
};
|
|
15797
|
-
const
|
|
15798
|
-
const
|
|
15799
|
+
const _hoisted_15$4 = { class: "flex gap-025" };
|
|
15800
|
+
const _hoisted_16$4 = { class: "txt-center opacity-6 txt14" };
|
|
15799
15801
|
const _sfc_main$M = /* @__PURE__ */ defineComponent({
|
|
15800
15802
|
__name: "DateInput",
|
|
15801
15803
|
props: {
|
|
@@ -15809,7 +15811,7 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
|
|
|
15809
15811
|
max: {},
|
|
15810
15812
|
timezone: { default: "UTC" },
|
|
15811
15813
|
mode: { default: "day" },
|
|
15812
|
-
firstDayOfWeek: { default: WEEK_START_DAY.
|
|
15814
|
+
firstDayOfWeek: { default: WEEK_START_DAY.SUNDAY },
|
|
15813
15815
|
locale: { default: "" },
|
|
15814
15816
|
center: { type: Boolean }
|
|
15815
15817
|
},
|
|
@@ -15817,235 +15819,392 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
|
|
|
15817
15819
|
setup(__props, { emit: __emit }) {
|
|
15818
15820
|
const props2 = __props;
|
|
15819
15821
|
const emit2 = __emit;
|
|
15820
|
-
|
|
15821
|
-
|
|
15822
|
-
|
|
15822
|
+
const isOpen = ref(false);
|
|
15823
|
+
const currentMonth = ref(/* @__PURE__ */ new Date());
|
|
15824
|
+
const currentView = ref("days");
|
|
15823
15825
|
const time = new Time(props2.firstDayOfWeek, props2.locale);
|
|
15824
|
-
function
|
|
15825
|
-
|
|
15826
|
-
|
|
15827
|
-
|
|
15828
|
-
|
|
15826
|
+
function useFormatting() {
|
|
15827
|
+
const formatDisplayDate = (date2) => {
|
|
15828
|
+
if (!date2) return "";
|
|
15829
|
+
const dateObj = typeof date2 === "string" ? new Date(date2) : date2;
|
|
15830
|
+
const options = {
|
|
15829
15831
|
year: "numeric",
|
|
15830
15832
|
month: "short",
|
|
15831
15833
|
day: "numeric",
|
|
15832
|
-
|
|
15833
|
-
|
|
15834
|
+
...props2.enableTime && {
|
|
15835
|
+
hour: "2-digit",
|
|
15836
|
+
minute: "2-digit"
|
|
15837
|
+
},
|
|
15834
15838
|
timeZone: props2.timezone
|
|
15835
|
-
}
|
|
15836
|
-
|
|
15837
|
-
|
|
15838
|
-
|
|
15839
|
-
|
|
15840
|
-
|
|
15841
|
-
|
|
15842
|
-
}
|
|
15839
|
+
};
|
|
15840
|
+
return dateObj.toLocaleString(props2.locale || void 0, options);
|
|
15841
|
+
};
|
|
15842
|
+
const formatDate = (date2) => {
|
|
15843
|
+
if (!date2) return "";
|
|
15844
|
+
const dateObj = typeof date2 === "string" ? new Date(date2) : date2;
|
|
15845
|
+
return props2.enableTime ? dateObj.toISOString().slice(0, 16) : dateObj.toISOString().split("T")[0];
|
|
15846
|
+
};
|
|
15847
|
+
const parseUserInput = (input) => {
|
|
15848
|
+
const date2 = new Date(input);
|
|
15849
|
+
if (!Number.isNaN(date2.getTime())) {
|
|
15850
|
+
return date2;
|
|
15851
|
+
}
|
|
15852
|
+
const parts = input.split(/[/.-]/);
|
|
15853
|
+
if (parts.length === 3) {
|
|
15854
|
+
const [day, month, year] = parts.map((p2) => Number.parseInt(p2, 10));
|
|
15855
|
+
if (!Number.isNaN(day) && !Number.isNaN(month) && !Number.isNaN(year)) {
|
|
15856
|
+
const date22 = new Date(year, month - 1, day);
|
|
15857
|
+
if (date22.getFullYear() === year && date22.getMonth() === month - 1 && date22.getDate() === day) {
|
|
15858
|
+
return date22;
|
|
15859
|
+
}
|
|
15860
|
+
}
|
|
15861
|
+
}
|
|
15862
|
+
return null;
|
|
15863
|
+
};
|
|
15864
|
+
return {
|
|
15865
|
+
formatDisplayDate,
|
|
15866
|
+
formatDate,
|
|
15867
|
+
parseUserInput
|
|
15868
|
+
};
|
|
15843
15869
|
}
|
|
15844
|
-
function
|
|
15845
|
-
|
|
15846
|
-
|
|
15847
|
-
|
|
15870
|
+
function useDateValidation() {
|
|
15871
|
+
const isDateDisabled2 = (date2) => {
|
|
15872
|
+
if (!date2) return true;
|
|
15873
|
+
const minDate = props2.min ? new Date(props2.min) : null;
|
|
15874
|
+
const maxDate = props2.max ? new Date(props2.max) : null;
|
|
15875
|
+
if (minDate && date2 < minDate) return true;
|
|
15876
|
+
if (maxDate && date2 > maxDate) return true;
|
|
15877
|
+
return false;
|
|
15878
|
+
};
|
|
15879
|
+
const isYearDisabled2 = (year) => {
|
|
15880
|
+
const minDate = props2.min ? new Date(props2.min) : null;
|
|
15881
|
+
const maxDate = props2.max ? new Date(props2.max) : null;
|
|
15882
|
+
if (minDate && year < minDate.getFullYear()) return true;
|
|
15883
|
+
if (maxDate && year > maxDate.getFullYear()) return true;
|
|
15884
|
+
return false;
|
|
15885
|
+
};
|
|
15886
|
+
return {
|
|
15887
|
+
isDateDisabled: isDateDisabled2,
|
|
15888
|
+
isYearDisabled: isYearDisabled2
|
|
15889
|
+
};
|
|
15848
15890
|
}
|
|
15849
|
-
|
|
15850
|
-
|
|
15851
|
-
|
|
15852
|
-
|
|
15853
|
-
|
|
15854
|
-
|
|
15855
|
-
|
|
15856
|
-
|
|
15857
|
-
|
|
15858
|
-
const month = currentMonth.value.getMonth();
|
|
15859
|
-
return time.getCalendarMonthSplitInWeeks(year, month).flat();
|
|
15860
|
-
});
|
|
15861
|
-
const currentMonthValue = computed(() => ({
|
|
15862
|
-
month: currentMonth.value.getMonth(),
|
|
15863
|
-
year: currentMonth.value.getFullYear(),
|
|
15864
|
-
formatted: {
|
|
15865
|
-
month: time.getLocalizedNameOfMonth(currentMonth.value, "long"),
|
|
15866
|
-
year: time.getLocalizedDateString(currentMonth.value).split("/").pop()
|
|
15867
|
-
// Get just the year part
|
|
15868
|
-
}
|
|
15869
|
-
}));
|
|
15870
|
-
const months = computed(() => Array.from({ length: 12 }, (_2, i2) => {
|
|
15871
|
-
const date2 = new Date(currentMonthValue.value.year, i2, 1);
|
|
15891
|
+
function useDateState() {
|
|
15892
|
+
const { formatDisplayDate, formatDate } = useFormatting();
|
|
15893
|
+
const formattedDisplayValue2 = computed(() => formatDisplayDate(props2.modelValue));
|
|
15894
|
+
const formattedMin2 = computed(() => formatDate(props2.min));
|
|
15895
|
+
const formattedMax2 = computed(() => formatDate(props2.max));
|
|
15896
|
+
const selectedDate2 = computed(() => {
|
|
15897
|
+
if (!props2.modelValue) return null;
|
|
15898
|
+
return typeof props2.modelValue === "string" ? new Date(props2.modelValue) : props2.modelValue;
|
|
15899
|
+
});
|
|
15872
15900
|
return {
|
|
15873
|
-
|
|
15874
|
-
|
|
15875
|
-
|
|
15901
|
+
formattedDisplayValue: formattedDisplayValue2,
|
|
15902
|
+
formattedMin: formattedMin2,
|
|
15903
|
+
formattedMax: formattedMax2,
|
|
15904
|
+
selectedDate: selectedDate2
|
|
15876
15905
|
};
|
|
15877
|
-
}
|
|
15878
|
-
const
|
|
15879
|
-
|
|
15880
|
-
|
|
15881
|
-
|
|
15882
|
-
|
|
15906
|
+
}
|
|
15907
|
+
const { isDateDisabled, isYearDisabled } = useDateValidation();
|
|
15908
|
+
const { formattedDisplayValue, formattedMin, formattedMax, selectedDate } = useDateState();
|
|
15909
|
+
function useCalendarView() {
|
|
15910
|
+
const currentMonthDays2 = computed(() => {
|
|
15911
|
+
const year = currentMonth.value.getFullYear();
|
|
15912
|
+
const month = currentMonth.value.getMonth();
|
|
15913
|
+
return time.getCalendarMonthSplitInWeeks(year, month).flat();
|
|
15914
|
+
});
|
|
15915
|
+
const currentMonthValue2 = computed(() => ({
|
|
15916
|
+
month: currentMonth.value.getMonth(),
|
|
15917
|
+
year: currentMonth.value.getFullYear(),
|
|
15918
|
+
formatted: {
|
|
15919
|
+
month: time.getLocalizedNameOfMonth(currentMonth.value, "long"),
|
|
15920
|
+
year: time.getLocalizedDateString(currentMonth.value).split("/").pop()
|
|
15921
|
+
}
|
|
15883
15922
|
}));
|
|
15884
|
-
|
|
15885
|
-
|
|
15886
|
-
|
|
15887
|
-
|
|
15888
|
-
|
|
15889
|
-
|
|
15890
|
-
|
|
15891
|
-
|
|
15923
|
+
const months2 = computed(() => Array.from({ length: 12 }, (_2, i2) => {
|
|
15924
|
+
const date2 = new Date(currentMonthValue2.value.year, i2, 1);
|
|
15925
|
+
return {
|
|
15926
|
+
name: time.getLocalizedNameOfMonth(date2, "short"),
|
|
15927
|
+
value: i2,
|
|
15928
|
+
disabled: isDateDisabled(date2)
|
|
15929
|
+
};
|
|
15930
|
+
}));
|
|
15931
|
+
const years2 = computed(() => {
|
|
15932
|
+
const startYear = currentMonthValue2.value.year - 10;
|
|
15933
|
+
return Array.from({ length: 21 }, (_2, i2) => ({
|
|
15934
|
+
value: startYear + i2,
|
|
15935
|
+
disabled: isYearDisabled(startYear + i2)
|
|
15936
|
+
}));
|
|
15892
15937
|
});
|
|
15893
|
-
|
|
15894
|
-
|
|
15895
|
-
|
|
15896
|
-
|
|
15897
|
-
|
|
15898
|
-
|
|
15899
|
-
|
|
15900
|
-
|
|
15901
|
-
|
|
15902
|
-
|
|
15903
|
-
|
|
15904
|
-
|
|
15905
|
-
|
|
15906
|
-
|
|
15907
|
-
|
|
15908
|
-
|
|
15909
|
-
|
|
15910
|
-
|
|
15911
|
-
|
|
15912
|
-
|
|
15913
|
-
|
|
15914
|
-
|
|
15915
|
-
|
|
15916
|
-
|
|
15917
|
-
|
|
15918
|
-
|
|
15938
|
+
const weekDays2 = computed(() => {
|
|
15939
|
+
const weekStart = /* @__PURE__ */ new Date();
|
|
15940
|
+
weekStart.setDate(weekStart.getDate() - weekStart.getDay() + (props2.firstDayOfWeek === WEEK_START_DAY.MONDAY ? 1 : 0));
|
|
15941
|
+
return Array.from({ length: 7 }, (_2, i2) => {
|
|
15942
|
+
const day = new Date(weekStart);
|
|
15943
|
+
day.setDate(weekStart.getDate() + i2);
|
|
15944
|
+
return time.getLocalizedNameOfWeekday(day, "short");
|
|
15945
|
+
});
|
|
15946
|
+
});
|
|
15947
|
+
const isSelected2 = (date2) => {
|
|
15948
|
+
if (!date2 || !selectedDate.value) return false;
|
|
15949
|
+
return date2.getFullYear() === selectedDate.value.getFullYear() && date2.getMonth() === selectedDate.value.getMonth() && date2.getDate() === selectedDate.value.getDate();
|
|
15950
|
+
};
|
|
15951
|
+
const isToday2 = (date2) => {
|
|
15952
|
+
if (!date2) return false;
|
|
15953
|
+
return time.dateIsToday(date2);
|
|
15954
|
+
};
|
|
15955
|
+
const isNotInMonth2 = (date2) => {
|
|
15956
|
+
return time.isTrailingOrLeadingDate(date2, currentMonth.value.getMonth());
|
|
15957
|
+
};
|
|
15958
|
+
return {
|
|
15959
|
+
currentMonthDays: currentMonthDays2,
|
|
15960
|
+
currentMonthValue: currentMonthValue2,
|
|
15961
|
+
months: months2,
|
|
15962
|
+
years: years2,
|
|
15963
|
+
weekDays: weekDays2,
|
|
15964
|
+
isSelected: isSelected2,
|
|
15965
|
+
isToday: isToday2,
|
|
15966
|
+
isNotInMonth: isNotInMonth2
|
|
15967
|
+
};
|
|
15919
15968
|
}
|
|
15920
|
-
function
|
|
15921
|
-
|
|
15969
|
+
function useNavigation() {
|
|
15970
|
+
const selectMonth2 = (monthIndex) => {
|
|
15971
|
+
currentMonth.value = new Date(currentMonth.value.getFullYear(), monthIndex, 1);
|
|
15972
|
+
currentView.value = "days";
|
|
15973
|
+
};
|
|
15974
|
+
const selectYear2 = (year) => {
|
|
15975
|
+
currentMonth.value = new Date(year, currentMonth.value.getMonth(), 1);
|
|
15976
|
+
currentView.value = "months";
|
|
15977
|
+
};
|
|
15978
|
+
const previousMonth2 = () => {
|
|
15979
|
+
currentMonth.value = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() - 1, 1);
|
|
15980
|
+
};
|
|
15981
|
+
const nextMonth2 = () => {
|
|
15982
|
+
currentMonth.value = new Date(currentMonth.value.getFullYear(), currentMonth.value.getMonth() + 1, 1);
|
|
15983
|
+
};
|
|
15984
|
+
const previousYear2 = () => {
|
|
15985
|
+
const offset2 = currentView.value === "months" ? 1 : 21;
|
|
15986
|
+
currentMonth.value = new Date(currentMonth.value.getFullYear() - offset2, currentMonth.value.getMonth(), 1);
|
|
15987
|
+
};
|
|
15988
|
+
const nextYear2 = () => {
|
|
15989
|
+
const offset2 = currentView.value === "months" ? 1 : 21;
|
|
15990
|
+
currentMonth.value = new Date(currentMonth.value.getFullYear() + offset2, currentMonth.value.getMonth(), 1);
|
|
15991
|
+
};
|
|
15992
|
+
return {
|
|
15993
|
+
selectMonth: selectMonth2,
|
|
15994
|
+
selectYear: selectYear2,
|
|
15995
|
+
previousMonth: previousMonth2,
|
|
15996
|
+
nextMonth: nextMonth2,
|
|
15997
|
+
previousYear: previousYear2,
|
|
15998
|
+
nextYear: nextYear2
|
|
15999
|
+
};
|
|
15922
16000
|
}
|
|
15923
|
-
function
|
|
15924
|
-
const
|
|
15925
|
-
|
|
16001
|
+
function useTimeHandling() {
|
|
16002
|
+
const hours2 = computed(() => {
|
|
16003
|
+
var _a2;
|
|
16004
|
+
return ((_a2 = selectedDate.value) == null ? void 0 : _a2.getHours()) ?? 0;
|
|
16005
|
+
});
|
|
16006
|
+
const minutes2 = computed(() => {
|
|
16007
|
+
var _a2;
|
|
16008
|
+
return ((_a2 = selectedDate.value) == null ? void 0 : _a2.getMinutes()) ?? 0;
|
|
16009
|
+
});
|
|
16010
|
+
const handleHourInput2 = (value) => {
|
|
16011
|
+
if (!selectedDate.value) return;
|
|
16012
|
+
const newDate = new Date(selectedDate.value);
|
|
16013
|
+
newDate.setHours(value);
|
|
16014
|
+
emit2("update:modelValue", newDate.toISOString());
|
|
16015
|
+
};
|
|
16016
|
+
const handleMinuteInput2 = (value) => {
|
|
16017
|
+
if (!selectedDate.value) return;
|
|
16018
|
+
const newDate = new Date(selectedDate.value);
|
|
16019
|
+
newDate.setMinutes(value);
|
|
16020
|
+
emit2("update:modelValue", newDate.toISOString());
|
|
16021
|
+
};
|
|
16022
|
+
const timezoneDisplay2 = computed(() => {
|
|
16023
|
+
if (!props2.enableTime) return "";
|
|
16024
|
+
try {
|
|
16025
|
+
return (/* @__PURE__ */ new Date()).toLocaleString("en-US", {
|
|
16026
|
+
timeZoneName: "short",
|
|
16027
|
+
timeZone: props2.timezone
|
|
16028
|
+
}).split(" ").pop();
|
|
16029
|
+
} catch {
|
|
16030
|
+
return "UTC";
|
|
16031
|
+
}
|
|
16032
|
+
});
|
|
16033
|
+
return {
|
|
16034
|
+
hours: hours2,
|
|
16035
|
+
minutes: minutes2,
|
|
16036
|
+
handleHourInput: handleHourInput2,
|
|
16037
|
+
handleMinuteInput: handleMinuteInput2,
|
|
16038
|
+
timezoneDisplay: timezoneDisplay2
|
|
16039
|
+
};
|
|
15926
16040
|
}
|
|
15927
|
-
function
|
|
15928
|
-
const
|
|
15929
|
-
|
|
16041
|
+
function useInputHandling() {
|
|
16042
|
+
const { parseUserInput } = useFormatting();
|
|
16043
|
+
const inputValue2 = ref("");
|
|
16044
|
+
const handleInput2 = (event) => {
|
|
16045
|
+
const input = event.target;
|
|
16046
|
+
inputValue2.value = input.value;
|
|
16047
|
+
const date2 = parseUserInput(input.value);
|
|
16048
|
+
if (date2) {
|
|
16049
|
+
if (props2.enableTime) {
|
|
16050
|
+
emit2("update:modelValue", date2.toISOString());
|
|
16051
|
+
} else {
|
|
16052
|
+
const utcDate = new Date(Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate()));
|
|
16053
|
+
emit2("update:modelValue", utcDate.toISOString().split("T")[0]);
|
|
16054
|
+
}
|
|
16055
|
+
}
|
|
16056
|
+
};
|
|
16057
|
+
const handleFocus2 = (e) => {
|
|
16058
|
+
e.preventDefault();
|
|
16059
|
+
e.stopPropagation();
|
|
16060
|
+
isOpen.value = true;
|
|
16061
|
+
};
|
|
16062
|
+
const handleClick2 = (e) => {
|
|
16063
|
+
e.preventDefault();
|
|
16064
|
+
e.stopPropagation();
|
|
16065
|
+
};
|
|
16066
|
+
const handleKeydown2 = (event) => {
|
|
16067
|
+
if (event.key === "Escape") {
|
|
16068
|
+
isOpen.value = false;
|
|
16069
|
+
} else if (event.key === "Enter" && inputValue2.value) {
|
|
16070
|
+
const date2 = parseUserInput(inputValue2.value);
|
|
16071
|
+
if (date2) {
|
|
16072
|
+
if (props2.enableTime) {
|
|
16073
|
+
emit2("update:modelValue", date2.toISOString());
|
|
16074
|
+
} else {
|
|
16075
|
+
const utcDate = new Date(Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate()));
|
|
16076
|
+
emit2("update:modelValue", utcDate.toISOString().split("T")[0]);
|
|
16077
|
+
}
|
|
16078
|
+
isOpen.value = false;
|
|
16079
|
+
}
|
|
16080
|
+
}
|
|
16081
|
+
};
|
|
16082
|
+
return {
|
|
16083
|
+
inputValue: inputValue2,
|
|
16084
|
+
handleInput: handleInput2,
|
|
16085
|
+
handleFocus: handleFocus2,
|
|
16086
|
+
handleClick: handleClick2,
|
|
16087
|
+
handleKeydown: handleKeydown2
|
|
16088
|
+
};
|
|
15930
16089
|
}
|
|
16090
|
+
const { inputValue, handleInput, handleFocus, handleClick, handleKeydown } = useInputHandling();
|
|
16091
|
+
const { currentMonthDays, currentMonthValue, months, years, weekDays, isSelected, isToday, isNotInMonth } = useCalendarView();
|
|
16092
|
+
const { selectMonth, selectYear, previousMonth, nextMonth, previousYear, nextYear } = useNavigation();
|
|
16093
|
+
const { hours, minutes, handleHourInput, handleMinuteInput, timezoneDisplay } = useTimeHandling();
|
|
15931
16094
|
function selectDate(date2) {
|
|
15932
16095
|
var _a2, _b;
|
|
15933
16096
|
if (!date2 || !props2.editMode) return;
|
|
16097
|
+
const tzOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();
|
|
15934
16098
|
const newDate = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
|
|
15935
16099
|
if (props2.enableTime) {
|
|
15936
16100
|
const currentHours = ((_a2 = selectedDate.value) == null ? void 0 : _a2.getHours()) ?? (/* @__PURE__ */ new Date()).getHours();
|
|
15937
16101
|
const currentMinutes = ((_b = selectedDate.value) == null ? void 0 : _b.getMinutes()) ?? (/* @__PURE__ */ new Date()).getMinutes();
|
|
15938
16102
|
newDate.setHours(currentHours);
|
|
15939
16103
|
newDate.setMinutes(currentMinutes);
|
|
16104
|
+
if (props2.timezone === "UTC") {
|
|
16105
|
+
newDate.setMinutes(newDate.getMinutes() + tzOffset);
|
|
16106
|
+
}
|
|
15940
16107
|
emit2("update:modelValue", newDate.toISOString());
|
|
15941
16108
|
} else {
|
|
15942
|
-
|
|
15943
|
-
emit2("update:modelValue",
|
|
16109
|
+
const utcDate = new Date(Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate()));
|
|
16110
|
+
emit2("update:modelValue", utcDate.toISOString().split("T")[0]);
|
|
15944
16111
|
isOpen.value = false;
|
|
15945
16112
|
}
|
|
15946
16113
|
}
|
|
15947
|
-
const
|
|
15948
|
-
|
|
15949
|
-
|
|
15950
|
-
|
|
15951
|
-
|
|
15952
|
-
|
|
15953
|
-
|
|
15954
|
-
|
|
15955
|
-
|
|
15956
|
-
|
|
15957
|
-
|
|
15958
|
-
|
|
15959
|
-
|
|
15960
|
-
|
|
15961
|
-
function handleMinuteInput(value) {
|
|
15962
|
-
if (!selectedDate.value) return;
|
|
15963
|
-
const newDate = new Date(selectedDate.value);
|
|
15964
|
-
newDate.setMinutes(value);
|
|
15965
|
-
emit2("update:modelValue", newDate.toISOString());
|
|
15966
|
-
}
|
|
15967
|
-
function isSelected(date2) {
|
|
15968
|
-
if (!date2 || !selectedDate.value) return false;
|
|
15969
|
-
return date2.toISOString().split("T")[0] === selectedDate.value.toISOString().split("T")[0];
|
|
15970
|
-
}
|
|
15971
|
-
function isToday(date2) {
|
|
15972
|
-
if (!date2) return false;
|
|
15973
|
-
return time.dateIsToday(date2);
|
|
15974
|
-
}
|
|
15975
|
-
const timezoneDisplay = computed(() => {
|
|
15976
|
-
if (!props2.enableTime) return "";
|
|
15977
|
-
try {
|
|
15978
|
-
return (/* @__PURE__ */ new Date()).toLocaleString("en-US", {
|
|
15979
|
-
timeZoneName: "short",
|
|
15980
|
-
timeZone: props2.timezone
|
|
15981
|
-
}).split(" ").pop();
|
|
15982
|
-
} catch {
|
|
15983
|
-
return "UTC";
|
|
15984
|
-
}
|
|
16114
|
+
const datePickerRef = ref(null);
|
|
16115
|
+
const calendarRef = ref(null);
|
|
16116
|
+
onMounted(() => {
|
|
16117
|
+
const handleDocumentClick = (e) => {
|
|
16118
|
+
var _a2, _b;
|
|
16119
|
+
const target = e.target;
|
|
16120
|
+
if (!((_a2 = datePickerRef.value) == null ? void 0 : _a2.contains(target)) && !((_b = calendarRef.value) == null ? void 0 : _b.contains(target))) {
|
|
16121
|
+
isOpen.value = false;
|
|
16122
|
+
}
|
|
16123
|
+
};
|
|
16124
|
+
document.addEventListener("click", handleDocumentClick);
|
|
16125
|
+
onBeforeUnmount(() => {
|
|
16126
|
+
document.removeEventListener("click", handleDocumentClick);
|
|
16127
|
+
});
|
|
15985
16128
|
});
|
|
15986
|
-
function isNotInMonth(date2) {
|
|
15987
|
-
return time.isTrailingOrLeadingDate(date2, currentMonth.value.getMonth());
|
|
15988
|
-
}
|
|
15989
16129
|
return (_ctx, _cache) => {
|
|
15990
16130
|
return openBlock(), createElementBlock("div", {
|
|
15991
16131
|
class: normalizeClass(["bagel-input", { small: _ctx.small }]),
|
|
15992
|
-
title: _ctx.label
|
|
16132
|
+
title: _ctx.label,
|
|
16133
|
+
onFocusin: _cache[6] || (_cache[6] = //@ts-ignore
|
|
16134
|
+
(...args) => unref(handleFocus) && unref(handleFocus)(...args))
|
|
15993
16135
|
}, [
|
|
15994
16136
|
_ctx.label ? (openBlock(), createElementBlock("label", _hoisted_2$t, [
|
|
15995
16137
|
createTextVNode(toDisplayString(_ctx.label) + " ", 1),
|
|
15996
16138
|
_ctx.required ? (openBlock(), createElementBlock("span", _hoisted_3$o, "*")) : createCommentVNode("", true)
|
|
15997
16139
|
])) : createCommentVNode("", true),
|
|
15998
16140
|
createVNode(unref(_sfc_main$V), {
|
|
15999
|
-
shown:
|
|
16141
|
+
shown: isOpen.value,
|
|
16000
16142
|
placement: "bottom-start",
|
|
16001
|
-
|
|
16002
|
-
|
|
16143
|
+
autoHide: false,
|
|
16144
|
+
triggers: ["click"]
|
|
16003
16145
|
}, {
|
|
16004
16146
|
trigger: withCtx(() => [
|
|
16005
|
-
createElementVNode("div",
|
|
16147
|
+
createElementVNode("div", {
|
|
16148
|
+
ref_key: "datePickerRef",
|
|
16149
|
+
ref: datePickerRef,
|
|
16150
|
+
class: "date-picker-container",
|
|
16151
|
+
onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {
|
|
16152
|
+
}, ["stop"])),
|
|
16153
|
+
onClick: _cache[1] || (_cache[1] = withModifiers(() => {
|
|
16154
|
+
}, ["stop"]))
|
|
16155
|
+
}, [
|
|
16006
16156
|
createVNode(unref(TextInput), {
|
|
16007
|
-
modelValue: formattedDisplayValue
|
|
16157
|
+
modelValue: unref(formattedDisplayValue),
|
|
16008
16158
|
icon: "calendar",
|
|
16009
|
-
min: formattedMin
|
|
16010
|
-
max: formattedMax
|
|
16159
|
+
min: unref(formattedMin),
|
|
16160
|
+
max: unref(formattedMax),
|
|
16011
16161
|
required: _ctx.required,
|
|
16012
16162
|
disabled: !_ctx.editMode,
|
|
16013
16163
|
class: normalizeClass(["date-input", {
|
|
16014
16164
|
"txt-center": _ctx.center
|
|
16015
16165
|
}]),
|
|
16016
|
-
readonly:
|
|
16017
|
-
|
|
16018
|
-
|
|
16019
|
-
|
|
16166
|
+
readonly: false,
|
|
16167
|
+
onInput: unref(handleInput),
|
|
16168
|
+
onFocus: unref(handleFocus),
|
|
16169
|
+
onClick: unref(handleClick),
|
|
16170
|
+
onKeydown: unref(handleKeydown)
|
|
16171
|
+
}, null, 8, ["modelValue", "min", "max", "required", "disabled", "class", "onInput", "onFocus", "onClick", "onKeydown"])
|
|
16172
|
+
], 544)
|
|
16020
16173
|
]),
|
|
16021
16174
|
default: withCtx(() => [
|
|
16022
|
-
createElementVNode("div",
|
|
16023
|
-
|
|
16024
|
-
|
|
16025
|
-
|
|
16175
|
+
createElementVNode("div", {
|
|
16176
|
+
ref_key: "calendarRef",
|
|
16177
|
+
ref: calendarRef,
|
|
16178
|
+
class: "ltr flex gap-075 p-05 m_flex-wrap calendar-container justify-content-center h-100p",
|
|
16179
|
+
onClick: _cache[5] || (_cache[5] = withModifiers(() => {
|
|
16180
|
+
}, ["stop"]))
|
|
16181
|
+
}, [
|
|
16182
|
+
createElementVNode("div", _hoisted_4$g, [
|
|
16183
|
+
createElementVNode("div", _hoisted_5$f, [
|
|
16184
|
+
currentView.value === "days" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
16026
16185
|
createVNode(unref(Btn), {
|
|
16027
16186
|
flat: "",
|
|
16028
16187
|
icon: "chevron_left",
|
|
16029
|
-
onClick: previousMonth
|
|
16030
|
-
}),
|
|
16031
|
-
createElementVNode("div",
|
|
16188
|
+
onClick: unref(previousMonth)
|
|
16189
|
+
}, null, 8, ["onClick"]),
|
|
16190
|
+
createElementVNode("div", _hoisted_6$c, [
|
|
16032
16191
|
createVNode(unref(Btn), {
|
|
16033
16192
|
flat: "",
|
|
16034
16193
|
class: "month-btn",
|
|
16035
|
-
onClick: _cache[
|
|
16194
|
+
onClick: _cache[2] || (_cache[2] = ($event) => currentView.value = "months")
|
|
16036
16195
|
}, {
|
|
16037
16196
|
default: withCtx(() => [
|
|
16038
|
-
createTextVNode(toDisplayString(currentMonthValue.
|
|
16197
|
+
createTextVNode(toDisplayString(unref(currentMonthValue).formatted.month), 1)
|
|
16039
16198
|
]),
|
|
16040
16199
|
_: 1
|
|
16041
16200
|
}),
|
|
16042
16201
|
createVNode(unref(Btn), {
|
|
16043
16202
|
flat: "",
|
|
16044
16203
|
class: "year-btn",
|
|
16045
|
-
onClick: _cache[
|
|
16204
|
+
onClick: _cache[3] || (_cache[3] = ($event) => currentView.value = "years")
|
|
16046
16205
|
}, {
|
|
16047
16206
|
default: withCtx(() => [
|
|
16048
|
-
createTextVNode(toDisplayString(currentMonthValue.
|
|
16207
|
+
createTextVNode(toDisplayString(unref(currentMonthValue).formatted.year), 1)
|
|
16049
16208
|
]),
|
|
16050
16209
|
_: 1
|
|
16051
16210
|
})
|
|
@@ -16053,114 +16212,114 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
|
|
|
16053
16212
|
createVNode(unref(Btn), {
|
|
16054
16213
|
flat: "",
|
|
16055
16214
|
icon: "chevron_right",
|
|
16056
|
-
onClick: nextMonth
|
|
16057
|
-
})
|
|
16215
|
+
onClick: unref(nextMonth)
|
|
16216
|
+
}, null, 8, ["onClick"])
|
|
16058
16217
|
], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
16059
16218
|
createVNode(unref(Btn), {
|
|
16060
16219
|
flat: "",
|
|
16061
16220
|
icon: "chevron_left",
|
|
16062
|
-
onClick: previousYear
|
|
16063
|
-
}),
|
|
16064
|
-
createElementVNode("span",
|
|
16221
|
+
onClick: unref(previousYear)
|
|
16222
|
+
}, null, 8, ["onClick"]),
|
|
16223
|
+
createElementVNode("span", _hoisted_7$9, toDisplayString(unref(currentMonthValue).formatted.year), 1),
|
|
16065
16224
|
createVNode(unref(Btn), {
|
|
16066
16225
|
flat: "",
|
|
16067
16226
|
icon: "chevron_right",
|
|
16068
|
-
onClick: nextYear
|
|
16069
|
-
})
|
|
16227
|
+
onClick: unref(nextYear)
|
|
16228
|
+
}, null, 8, ["onClick"])
|
|
16070
16229
|
], 64))
|
|
16071
16230
|
]),
|
|
16072
|
-
|
|
16073
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(weekDays
|
|
16231
|
+
currentView.value === "days" ? (openBlock(), createElementBlock("div", _hoisted_8$6, [
|
|
16232
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(weekDays), (day) => {
|
|
16074
16233
|
return openBlock(), createElementBlock("div", {
|
|
16075
16234
|
key: day,
|
|
16076
16235
|
class: "txt-center txt-12 opacity-6"
|
|
16077
16236
|
}, toDisplayString(day), 1);
|
|
16078
16237
|
}), 128)),
|
|
16079
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(currentMonthDays
|
|
16238
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(currentMonthDays), (date2) => {
|
|
16080
16239
|
return openBlock(), createElementBlock("button", {
|
|
16081
16240
|
key: date2 == null ? void 0 : date2.toISOString(),
|
|
16082
16241
|
type: "button",
|
|
16083
16242
|
class: normalizeClass(["day aspect-ratio-1 flex align-items-center justify-content-center pointer round txt14 p-0", {
|
|
16084
|
-
"selected": isSelected(date2),
|
|
16085
|
-
"today": isToday(date2),
|
|
16086
|
-
"disabled": isDateDisabled(date2),
|
|
16087
|
-
"not-in-month": isNotInMonth(date2)
|
|
16243
|
+
"selected": unref(isSelected)(date2),
|
|
16244
|
+
"today": unref(isToday)(date2),
|
|
16245
|
+
"disabled": unref(isDateDisabled)(date2),
|
|
16246
|
+
"not-in-month": unref(isNotInMonth)(date2)
|
|
16088
16247
|
}]),
|
|
16089
|
-
disabled: isDateDisabled(date2),
|
|
16248
|
+
disabled: unref(isDateDisabled)(date2),
|
|
16090
16249
|
onClick: ($event) => selectDate(date2)
|
|
16091
|
-
}, toDisplayString(date2 == null ? void 0 : date2.getDate()), 11,
|
|
16250
|
+
}, toDisplayString(date2 == null ? void 0 : date2.getDate()), 11, _hoisted_9$5);
|
|
16092
16251
|
}), 128))
|
|
16093
|
-
])) :
|
|
16094
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(months
|
|
16252
|
+
])) : currentView.value === "months" ? (openBlock(), createElementBlock("div", _hoisted_10$5, [
|
|
16253
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(months), (month) => {
|
|
16095
16254
|
return openBlock(), createElementBlock("button", {
|
|
16096
16255
|
key: month.value,
|
|
16097
16256
|
class: normalizeClass(["month-item flex align-items-center justify-content-center pointer rounded p-05 txt14 border-none", {
|
|
16098
|
-
selected: month.value === currentMonthValue.
|
|
16257
|
+
selected: month.value === unref(currentMonthValue).month,
|
|
16099
16258
|
disabled: month.disabled
|
|
16100
16259
|
}]),
|
|
16101
16260
|
disabled: month.disabled,
|
|
16102
|
-
onClick: ($event) => selectMonth(month.value)
|
|
16103
|
-
}, toDisplayString(month.name), 11,
|
|
16261
|
+
onClick: ($event) => unref(selectMonth)(month.value)
|
|
16262
|
+
}, toDisplayString(month.name), 11, _hoisted_11$5);
|
|
16104
16263
|
}), 128))
|
|
16105
|
-
])) : (openBlock(), createElementBlock("div",
|
|
16106
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(years
|
|
16264
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_12$5, [
|
|
16265
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(years), (year) => {
|
|
16107
16266
|
return openBlock(), createElementBlock("button", {
|
|
16108
16267
|
key: year.value,
|
|
16109
16268
|
class: normalizeClass(["year-item flex align-items-center justify-content-center pointer rounded p-05 txt14 border-none", {
|
|
16110
|
-
selected: year.value === currentMonthValue.
|
|
16269
|
+
selected: year.value === unref(currentMonthValue).year,
|
|
16111
16270
|
disabled: year.disabled
|
|
16112
16271
|
}]),
|
|
16113
16272
|
disabled: year.disabled,
|
|
16114
|
-
onClick: ($event) => selectYear(year.value)
|
|
16115
|
-
}, toDisplayString(year.value), 11,
|
|
16273
|
+
onClick: ($event) => unref(selectYear)(year.value)
|
|
16274
|
+
}, toDisplayString(year.value), 11, _hoisted_13$4);
|
|
16116
16275
|
}), 128))
|
|
16117
16276
|
]))
|
|
16118
16277
|
]),
|
|
16119
|
-
_ctx.enableTime &&
|
|
16120
|
-
createElementVNode("div",
|
|
16278
|
+
_ctx.enableTime && currentView.value === "days" ? (openBlock(), createElementBlock("div", _hoisted_14$4, [
|
|
16279
|
+
createElementVNode("div", _hoisted_15$4, [
|
|
16121
16280
|
createVNode(unref(NumberInput), {
|
|
16122
16281
|
center: "",
|
|
16123
|
-
"model-value": hours
|
|
16124
|
-
disabled: !selectedDate
|
|
16282
|
+
"model-value": unref(hours),
|
|
16283
|
+
disabled: !unref(selectedDate),
|
|
16125
16284
|
min: 0,
|
|
16126
16285
|
max: 23,
|
|
16127
16286
|
layout: "vertical",
|
|
16128
16287
|
padZero: 2,
|
|
16129
|
-
"onUpdate:modelValue": handleHourInput
|
|
16130
|
-
}, null, 8, ["model-value", "disabled"]),
|
|
16131
|
-
_cache[
|
|
16288
|
+
"onUpdate:modelValue": unref(handleHourInput)
|
|
16289
|
+
}, null, 8, ["model-value", "disabled", "onUpdate:modelValue"]),
|
|
16290
|
+
_cache[7] || (_cache[7] = createElementVNode("p", { class: "pb-075" }, " : ", -1)),
|
|
16132
16291
|
createVNode(unref(NumberInput), {
|
|
16133
16292
|
center: "",
|
|
16134
|
-
"model-value": minutes
|
|
16135
|
-
disabled: !selectedDate
|
|
16293
|
+
"model-value": unref(minutes),
|
|
16294
|
+
disabled: !unref(selectedDate),
|
|
16136
16295
|
min: 0,
|
|
16137
16296
|
max: 59,
|
|
16138
16297
|
padZero: 2,
|
|
16139
16298
|
layout: "vertical",
|
|
16140
|
-
"onUpdate:modelValue": handleMinuteInput
|
|
16141
|
-
}, null, 8, ["model-value", "disabled"])
|
|
16299
|
+
"onUpdate:modelValue": unref(handleMinuteInput)
|
|
16300
|
+
}, null, 8, ["model-value", "disabled", "onUpdate:modelValue"])
|
|
16142
16301
|
]),
|
|
16143
|
-
createElementVNode("span",
|
|
16144
|
-
selectedDate
|
|
16302
|
+
createElementVNode("span", _hoisted_16$4, toDisplayString(unref(timezoneDisplay)), 1),
|
|
16303
|
+
unref(selectedDate) ? (openBlock(), createBlock(unref(Btn), {
|
|
16145
16304
|
key: 0,
|
|
16146
16305
|
flat: "",
|
|
16147
|
-
onClick: _cache[
|
|
16306
|
+
onClick: _cache[4] || (_cache[4] = ($event) => isOpen.value = false)
|
|
16148
16307
|
}, {
|
|
16149
|
-
default: withCtx(() => _cache[
|
|
16308
|
+
default: withCtx(() => _cache[8] || (_cache[8] = [
|
|
16150
16309
|
createTextVNode(" Done ")
|
|
16151
16310
|
])),
|
|
16152
16311
|
_: 1
|
|
16153
16312
|
})) : createCommentVNode("", true)
|
|
16154
16313
|
])) : createCommentVNode("", true)
|
|
16155
|
-
])
|
|
16314
|
+
], 512)
|
|
16156
16315
|
]),
|
|
16157
16316
|
_: 1
|
|
16158
16317
|
}, 8, ["shown"])
|
|
16159
|
-
],
|
|
16318
|
+
], 42, _hoisted_1$F);
|
|
16160
16319
|
};
|
|
16161
16320
|
}
|
|
16162
16321
|
});
|
|
16163
|
-
const DateInput = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-
|
|
16322
|
+
const DateInput = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-5d1b6a15"]]);
|
|
16164
16323
|
const _hoisted_1$E = ["title"];
|
|
16165
16324
|
const _hoisted_2$s = { key: 0 };
|
|
16166
16325
|
const _hoisted_3$n = {
|
|
@@ -25445,7 +25604,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25445
25604
|
[_directive_lightbox, { src: file.url, download: true }]
|
|
25446
25605
|
]),
|
|
25447
25606
|
createElementVNode("div", _hoisted_5$d, [
|
|
25448
|
-
createVNode(unref(
|
|
25607
|
+
createVNode(unref(Icon), {
|
|
25449
25608
|
icon: "draft",
|
|
25450
25609
|
size: 1.5
|
|
25451
25610
|
}),
|
|
@@ -25496,7 +25655,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25496
25655
|
class: "multi-preview",
|
|
25497
25656
|
src: file.url,
|
|
25498
25657
|
alt: ""
|
|
25499
|
-
}, null, 8, ["src"])) : (openBlock(), createBlock(unref(
|
|
25658
|
+
}, null, 8, ["src"])) : (openBlock(), createBlock(unref(Icon), {
|
|
25500
25659
|
key: 1,
|
|
25501
25660
|
icon: "draft",
|
|
25502
25661
|
class: "multi-preview"
|
|
@@ -25526,7 +25685,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25526
25685
|
src: fileToUrl(fileQ.file),
|
|
25527
25686
|
alt: ""
|
|
25528
25687
|
}, null, 8, ["width", "src"])) : createCommentVNode("", true)
|
|
25529
|
-
], 64)) : (openBlock(), createBlock(unref(
|
|
25688
|
+
], 64)) : (openBlock(), createBlock(unref(Icon), {
|
|
25530
25689
|
key: 1,
|
|
25531
25690
|
icon: "draft",
|
|
25532
25691
|
class: "multi-preview"
|
|
@@ -25537,7 +25696,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25537
25696
|
style: normalizeStyle([`--p:${fileQ.progress}`, { "--b": "2px" }])
|
|
25538
25697
|
}, [
|
|
25539
25698
|
fileQ.progress < 100 ? (openBlock(), createElementBlock("span", _hoisted_11$3, toDisplayString(`${fileQ.progress.toFixed(0)}`), 1)) : createCommentVNode("", true),
|
|
25540
|
-
createVNode(unref(
|
|
25699
|
+
createVNode(unref(Icon), {
|
|
25541
25700
|
class: "success",
|
|
25542
25701
|
icon: "check"
|
|
25543
25702
|
})
|
|
@@ -25589,7 +25748,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25589
25748
|
}, null, 8, ["src"]), [
|
|
25590
25749
|
[_directive_lightbox, { src: file.url, download: true }]
|
|
25591
25750
|
])
|
|
25592
|
-
])) : withDirectives((openBlock(), createBlock(unref(
|
|
25751
|
+
])) : withDirectives((openBlock(), createBlock(unref(Icon), {
|
|
25593
25752
|
key: 1,
|
|
25594
25753
|
size: 4,
|
|
25595
25754
|
weight: "2",
|
|
@@ -25610,7 +25769,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25610
25769
|
style: normalizeStyle([`--p:${fileQ.progress}`, { "--b": "2px" }])
|
|
25611
25770
|
}, [
|
|
25612
25771
|
fileQ.progress < 100 ? (openBlock(), createElementBlock("span", _hoisted_15$2, toDisplayString(`${fileQ.progress.toFixed(0)}`), 1)) : createCommentVNode("", true),
|
|
25613
|
-
createVNode(unref(
|
|
25772
|
+
createVNode(unref(Icon), {
|
|
25614
25773
|
class: "success",
|
|
25615
25774
|
icon: "check"
|
|
25616
25775
|
})
|
|
@@ -25634,7 +25793,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
|
25634
25793
|
browse
|
|
25635
25794
|
}, () => [
|
|
25636
25795
|
createElementVNode("p", _hoisted_16$2, [
|
|
25637
|
-
createVNode(unref(
|
|
25796
|
+
createVNode(unref(Icon), { icon: "upload_2" }),
|
|
25638
25797
|
createElementVNode("span", _hoisted_17$2, toDisplayString(_ctx.dropPlaceholder || "Drag and Drop files here or click to upload"), 1)
|
|
25639
25798
|
])
|
|
25640
25799
|
], true) : createCommentVNode("", true)
|
|
@@ -25838,12 +25997,12 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
|
|
|
25838
25997
|
]
|
|
25839
25998
|
]),
|
|
25840
25999
|
_ctx.helptext ? (openBlock(), createElementBlock("p", _hoisted_4$c, toDisplayString(_ctx.helptext), 1)) : createCommentVNode("", true),
|
|
25841
|
-
_ctx.iconStart ? (openBlock(), createBlock(unref(
|
|
26000
|
+
_ctx.iconStart ? (openBlock(), createBlock(unref(Icon), {
|
|
25842
26001
|
key: 2,
|
|
25843
26002
|
class: "iconStart",
|
|
25844
26003
|
icon: _ctx.iconStart
|
|
25845
26004
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
25846
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
26005
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
25847
26006
|
key: 3,
|
|
25848
26007
|
icon: _ctx.icon
|
|
25849
26008
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
@@ -25987,7 +26146,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
|
|
|
25987
26146
|
}
|
|
25988
26147
|
});
|
|
25989
26148
|
const OTP = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-8e8db33e"]]);
|
|
25990
|
-
const _hoisted_1$y = { class: "relative" };
|
|
26149
|
+
const _hoisted_1$y = { class: "relative passwordInput" };
|
|
25991
26150
|
const _hoisted_2$n = { class: "m-password position-bottom-end flex column justify-content-center" };
|
|
25992
26151
|
const _sfc_main$F = /* @__PURE__ */ defineComponent({
|
|
25993
26152
|
__name: "PasswordInput",
|
|
@@ -26402,53 +26561,27 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
|
26402
26561
|
}
|
|
26403
26562
|
});
|
|
26404
26563
|
const RangeInput = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-25d991e5"]]);
|
|
26405
|
-
const
|
|
26406
|
-
"mergeCells",
|
|
26407
|
-
"splitCells",
|
|
26408
|
-
"addRowBefore",
|
|
26409
|
-
"addRowAfter",
|
|
26410
|
-
"deleteRow",
|
|
26411
|
-
"insertColumnLeft",
|
|
26412
|
-
"insertColumnRight",
|
|
26413
|
-
"deleteColumn",
|
|
26414
|
-
"alignLeft",
|
|
26415
|
-
"alignCenter",
|
|
26416
|
-
"alignRight",
|
|
26417
|
-
"alignJustify",
|
|
26418
|
-
"deleteTable"
|
|
26419
|
-
];
|
|
26420
|
-
const defaultToolbarConfig = [
|
|
26564
|
+
const basicToolbarConfig = [
|
|
26421
26565
|
"h2",
|
|
26422
26566
|
"h3",
|
|
26423
26567
|
"h4",
|
|
26424
26568
|
"h5",
|
|
26425
26569
|
"h6",
|
|
26426
26570
|
"separator",
|
|
26427
|
-
"bold",
|
|
26428
|
-
"italic",
|
|
26429
|
-
"underline",
|
|
26430
|
-
"separator",
|
|
26431
|
-
"fontColor",
|
|
26432
|
-
"bgColor",
|
|
26433
|
-
"separator",
|
|
26434
26571
|
"p",
|
|
26435
26572
|
"blockquote",
|
|
26436
26573
|
"orderedList",
|
|
26437
26574
|
"unorderedList",
|
|
26438
|
-
"
|
|
26439
|
-
"
|
|
26575
|
+
"separator",
|
|
26576
|
+
"bold",
|
|
26577
|
+
"italic",
|
|
26578
|
+
"underline",
|
|
26440
26579
|
"separator",
|
|
26441
26580
|
"link",
|
|
26442
26581
|
"image",
|
|
26443
|
-
|
|
26444
|
-
"separator",
|
|
26445
|
-
"splitView",
|
|
26582
|
+
"embed",
|
|
26446
26583
|
"clear",
|
|
26447
|
-
"
|
|
26448
|
-
...tableTools,
|
|
26449
|
-
"separator",
|
|
26450
|
-
"undo",
|
|
26451
|
-
"redo",
|
|
26584
|
+
"splitView",
|
|
26452
26585
|
"fullScreen"
|
|
26453
26586
|
];
|
|
26454
26587
|
const toolbarOptions = [
|
|
@@ -26466,7 +26599,7 @@ const toolbarOptions = [
|
|
|
26466
26599
|
{ name: "unorderedList", label: "Unordered List", icon: "format_list_bulleted" },
|
|
26467
26600
|
{ name: "link", label: "Link", icon: "add_link" },
|
|
26468
26601
|
{ name: "image", label: "Image", icon: "add_photo_alternate" },
|
|
26469
|
-
{ name: "
|
|
26602
|
+
{ name: "embed", label: "Embed", icon: "media_link" },
|
|
26470
26603
|
{ name: "splitView", label: "Split View", icon: "code" },
|
|
26471
26604
|
{ name: "clear", label: "Clear Formatting", icon: "format_clear" },
|
|
26472
26605
|
{ name: "alignLeft", label: "Align Left", icon: "format_align_left" },
|
|
@@ -26556,7 +26689,7 @@ const _hoisted_1$t = {
|
|
|
26556
26689
|
const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
26557
26690
|
__name: "EditorToolbar",
|
|
26558
26691
|
props: {
|
|
26559
|
-
config: { default:
|
|
26692
|
+
config: { default: basicToolbarConfig },
|
|
26560
26693
|
selectedStyles: {}
|
|
26561
26694
|
},
|
|
26562
26695
|
emits: ["action"],
|
|
@@ -26611,45 +26744,50 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
26611
26744
|
};
|
|
26612
26745
|
}
|
|
26613
26746
|
});
|
|
26614
|
-
const EditorToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-
|
|
26615
|
-
function createCommandExecutor(state2, commands) {
|
|
26616
|
-
return {
|
|
26617
|
-
execute(command, value) {
|
|
26618
|
-
const cmd = commands[command];
|
|
26619
|
-
if (cmd) {
|
|
26620
|
-
cmd.execute(state2, value);
|
|
26621
|
-
}
|
|
26622
|
-
},
|
|
26623
|
-
isActive(command) {
|
|
26624
|
-
var _a2;
|
|
26625
|
-
const cmd = commands[command];
|
|
26626
|
-
return ((_a2 = cmd.isActive) == null ? void 0 : _a2.call(cmd, state2)) || false;
|
|
26627
|
-
},
|
|
26628
|
-
getValue(command) {
|
|
26629
|
-
var _a2;
|
|
26630
|
-
const cmd = commands[command];
|
|
26631
|
-
return ((_a2 = cmd.getValue) == null ? void 0 : _a2.call(cmd, state2)) || null;
|
|
26632
|
-
}
|
|
26633
|
-
};
|
|
26634
|
-
}
|
|
26747
|
+
const EditorToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-9d8a6eb6"]]);
|
|
26635
26748
|
function isStyleActive(style, doc) {
|
|
26636
26749
|
const selection = doc.getSelection();
|
|
26637
26750
|
if (!selection || !selection.rangeCount) return false;
|
|
26638
26751
|
const range2 = selection.getRangeAt(0);
|
|
26639
26752
|
const container = range2.commonAncestorContainer;
|
|
26640
|
-
const parent = container.nodeType ===
|
|
26753
|
+
const parent = container.nodeType === Node.TEXT_NODE ? container.parentElement : container;
|
|
26641
26754
|
if (!parent) return false;
|
|
26642
|
-
const checkParent = (element,
|
|
26643
|
-
if (!element) return false;
|
|
26644
|
-
|
|
26645
|
-
|
|
26646
|
-
|
|
26647
|
-
|
|
26755
|
+
const checkParent = (element, tags2) => {
|
|
26756
|
+
if (!element || !element.tagName) return false;
|
|
26757
|
+
const tagName = element.tagName.toLowerCase();
|
|
26758
|
+
if (tags2.includes(tagName)) return true;
|
|
26759
|
+
return checkParent(element.parentElement, tags2);
|
|
26760
|
+
};
|
|
26761
|
+
const styleMappings = {
|
|
26762
|
+
// Inline styles
|
|
26648
26763
|
bold: ["strong", "b"],
|
|
26649
26764
|
italic: ["em", "i"],
|
|
26650
|
-
underline: ["u"]
|
|
26651
|
-
|
|
26652
|
-
|
|
26765
|
+
underline: ["u"],
|
|
26766
|
+
// Block styles
|
|
26767
|
+
h1: ["h1"],
|
|
26768
|
+
h2: ["h2"],
|
|
26769
|
+
h3: ["h3"],
|
|
26770
|
+
h4: ["h4"],
|
|
26771
|
+
h5: ["h5"],
|
|
26772
|
+
h6: ["h6"],
|
|
26773
|
+
p: ["p"],
|
|
26774
|
+
blockquote: ["blockquote"],
|
|
26775
|
+
// List styles
|
|
26776
|
+
orderedList: ["ol"],
|
|
26777
|
+
unorderedList: ["ul"]
|
|
26778
|
+
};
|
|
26779
|
+
if (["splitView", "codeView", "fullScreen"].includes(style)) {
|
|
26780
|
+
return false;
|
|
26781
|
+
}
|
|
26782
|
+
if (style === "orderedList" || style === "unorderedList") {
|
|
26783
|
+
const listParent = parent.closest(style === "orderedList" ? "ol" : "ul");
|
|
26784
|
+
return !!listParent;
|
|
26785
|
+
}
|
|
26786
|
+
const tags = styleMappings[style];
|
|
26787
|
+
if (tags) {
|
|
26788
|
+
return checkParent(parent, tags);
|
|
26789
|
+
}
|
|
26790
|
+
return checkParent(parent, [style]);
|
|
26653
26791
|
}
|
|
26654
26792
|
function analyzeSelection(doc, range2) {
|
|
26655
26793
|
const container = range2.commonAncestorContainer;
|
|
@@ -26909,6 +27047,52 @@ function insertLink(modal, state2) {
|
|
|
26909
27047
|
}
|
|
26910
27048
|
});
|
|
26911
27049
|
}
|
|
27050
|
+
function insertEmbed(modal, state2) {
|
|
27051
|
+
const { range: range2, doc } = state2;
|
|
27052
|
+
if (!range2 || !doc) return;
|
|
27053
|
+
modal.showModalForm({
|
|
27054
|
+
title: "Insert Embed",
|
|
27055
|
+
schema: [
|
|
27056
|
+
{ id: "url", $el: "text", label: "URL", attrs: { placeholder: "Enter URL (YouTube, Vimeo, etc.)" } },
|
|
27057
|
+
frmRow(
|
|
27058
|
+
numField("width", "Width", { min: 200, placeholder: "560" }),
|
|
27059
|
+
numField("height", "Height", { min: 200, placeholder: "315" })
|
|
27060
|
+
),
|
|
27061
|
+
{ id: "allowFullscreen", $el: "check", label: "Allow Fullscreen", value: true }
|
|
27062
|
+
],
|
|
27063
|
+
onSubmit: (data2) => {
|
|
27064
|
+
if (!data2.url) return;
|
|
27065
|
+
const url = new URL(data2.url);
|
|
27066
|
+
let embedUrl = data2.url;
|
|
27067
|
+
if (url.hostname.includes("youtube.com") || url.hostname === "youtu.be") {
|
|
27068
|
+
const videoId = url.hostname === "youtu.be" ? url.pathname.slice(1) : url.searchParams.get("v");
|
|
27069
|
+
if (videoId) {
|
|
27070
|
+
embedUrl = `https://www.youtube.com/embed/${videoId}`;
|
|
27071
|
+
}
|
|
27072
|
+
} else if (url.hostname.includes("vimeo.com")) {
|
|
27073
|
+
const videoId = url.pathname.split("/").pop();
|
|
27074
|
+
if (videoId) {
|
|
27075
|
+
embedUrl = `https://player.vimeo.com/video/${videoId}`;
|
|
27076
|
+
}
|
|
27077
|
+
}
|
|
27078
|
+
const iframe = doc.createElement("iframe");
|
|
27079
|
+
Object.assign(iframe, {
|
|
27080
|
+
src: embedUrl,
|
|
27081
|
+
width: data2.width || 560,
|
|
27082
|
+
height: data2.height || 315,
|
|
27083
|
+
frameBorder: "0",
|
|
27084
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
27085
|
+
allowFullscreen: data2.allowFullscreen
|
|
27086
|
+
});
|
|
27087
|
+
const wrapper = doc.createElement("div");
|
|
27088
|
+
wrapper.style.textAlign = "center";
|
|
27089
|
+
wrapper.style.margin = "1em 0";
|
|
27090
|
+
wrapper.appendChild(iframe);
|
|
27091
|
+
range2.deleteContents();
|
|
27092
|
+
range2.insertNode(wrapper);
|
|
27093
|
+
}
|
|
27094
|
+
});
|
|
27095
|
+
}
|
|
26912
27096
|
function insertTable(rows, cols, state2) {
|
|
26913
27097
|
if (!state2.doc) return;
|
|
26914
27098
|
const table = state2.doc.createElement("table");
|
|
@@ -27030,145 +27214,393 @@ function alignColumn(range2, alignment) {
|
|
|
27030
27214
|
}
|
|
27031
27215
|
}
|
|
27032
27216
|
}
|
|
27033
|
-
function
|
|
27034
|
-
|
|
27035
|
-
|
|
27036
|
-
|
|
27037
|
-
|
|
27038
|
-
|
|
27039
|
-
execute: (state22) => {
|
|
27040
|
-
format2().text("bold");
|
|
27041
|
-
},
|
|
27042
|
-
isActive: (state22) => state22.selectedStyles.has("bold")
|
|
27043
|
-
},
|
|
27044
|
-
italic: {
|
|
27045
|
-
name: "Italic",
|
|
27046
|
-
execute: (state22) => {
|
|
27047
|
-
format2().text("italic");
|
|
27048
|
-
},
|
|
27049
|
-
isActive: (state22) => state22.selectedStyles.has("italic")
|
|
27050
|
-
},
|
|
27051
|
-
underline: {
|
|
27052
|
-
name: "Underline",
|
|
27053
|
-
execute: (state22) => {
|
|
27054
|
-
format2().text("underline");
|
|
27055
|
-
},
|
|
27056
|
-
isActive: (state22) => state22.selectedStyles.has("underline")
|
|
27057
|
-
},
|
|
27058
|
-
// Block formatting commands
|
|
27059
|
-
h1: { name: "Heading 1", execute: (state22) => {
|
|
27060
|
-
format2().block("h1", "h1");
|
|
27061
|
-
}, isActive: (state22) => state22.selectedStyles.has("h1") },
|
|
27062
|
-
h2: { name: "Heading 2", execute: (state22) => {
|
|
27063
|
-
format2().block("h2", "h2");
|
|
27064
|
-
}, isActive: (state22) => state22.selectedStyles.has("h2") },
|
|
27065
|
-
h3: { name: "Heading 3", execute: (state22) => {
|
|
27066
|
-
format2().block("h3", "h3");
|
|
27067
|
-
}, isActive: (state22) => state22.selectedStyles.has("h3") },
|
|
27068
|
-
h4: { name: "Heading 4", execute: (state22) => {
|
|
27069
|
-
format2().block("h4", "h4");
|
|
27070
|
-
}, isActive: (state22) => state22.selectedStyles.has("h4") },
|
|
27071
|
-
h5: { name: "Heading 5", execute: (state22) => {
|
|
27072
|
-
format2().block("h5", "h5");
|
|
27073
|
-
}, isActive: (state22) => state22.selectedStyles.has("h5") },
|
|
27074
|
-
h6: { name: "Heading 6", execute: (state22) => {
|
|
27075
|
-
format2().block("h6", "h6");
|
|
27076
|
-
}, isActive: (state22) => state22.selectedStyles.has("h6") },
|
|
27077
|
-
p: { name: "Paragraph", execute: (state22) => {
|
|
27078
|
-
format2().block("p", "p");
|
|
27079
|
-
}, isActive: (state22) => state22.selectedStyles.has("p") },
|
|
27080
|
-
blockquote: {
|
|
27081
|
-
name: "Blockquote",
|
|
27082
|
-
execute: (state22) => {
|
|
27083
|
-
format2().block("blockquote", "blockquote");
|
|
27084
|
-
},
|
|
27085
|
-
isActive: (state22) => state22.selectedStyles.has("blockquote")
|
|
27217
|
+
function createCommand(name, execute, isActive) {
|
|
27218
|
+
return {
|
|
27219
|
+
name,
|
|
27220
|
+
execute: (state2, value) => {
|
|
27221
|
+
if (!state2.doc) return;
|
|
27222
|
+
execute(state2, value);
|
|
27086
27223
|
},
|
|
27087
|
-
|
|
27088
|
-
|
|
27089
|
-
|
|
27090
|
-
|
|
27091
|
-
|
|
27092
|
-
|
|
27093
|
-
|
|
27224
|
+
isActive
|
|
27225
|
+
};
|
|
27226
|
+
}
|
|
27227
|
+
function createFormattingCommand(state2, type3, command, tag) {
|
|
27228
|
+
const format2 = formatting(state2);
|
|
27229
|
+
return createCommand(
|
|
27230
|
+
command,
|
|
27231
|
+
() => {
|
|
27232
|
+
var _a2, _b;
|
|
27233
|
+
if (!state2.doc) return;
|
|
27234
|
+
if (type3 === "text") {
|
|
27235
|
+
if (command === "bold") state2.doc.execCommand("bold", false);
|
|
27236
|
+
else if (command === "italic") state2.doc.execCommand("italic", false);
|
|
27237
|
+
else if (command === "underline") state2.doc.execCommand("underline", false);
|
|
27238
|
+
else format2.text(command);
|
|
27239
|
+
} else if (type3 === "block") {
|
|
27240
|
+
state2.doc.execCommand("formatBlock", false, `<${command}>`);
|
|
27241
|
+
} else if (type3 === "list") {
|
|
27242
|
+
const selection = state2.doc.getSelection();
|
|
27243
|
+
if (!selection || !selection.rangeCount) return;
|
|
27244
|
+
const range2 = selection.getRangeAt(0);
|
|
27245
|
+
if (range2.collapsed && (!((_a2 = range2.startContainer.textContent) == null ? void 0 : _a2.trim()) || range2.startContainer === state2.doc.body)) {
|
|
27246
|
+
const list = state2.doc.createElement(command === "orderedList" ? "ol" : "ul");
|
|
27247
|
+
const li = state2.doc.createElement("li");
|
|
27248
|
+
li.innerHTML = " <br>";
|
|
27249
|
+
list.appendChild(li);
|
|
27250
|
+
const currentBlock = range2.startContainer.nodeType === 1 ? range2.startContainer : range2.startContainer.parentElement;
|
|
27251
|
+
if ((currentBlock == null ? void 0 : currentBlock.tagName.toLowerCase()) === "p" && isNodeEmpty$1(currentBlock)) {
|
|
27252
|
+
(_b = currentBlock.parentNode) == null ? void 0 : _b.replaceChild(list, currentBlock);
|
|
27253
|
+
} else {
|
|
27254
|
+
range2.insertNode(list);
|
|
27255
|
+
}
|
|
27256
|
+
range2.selectNodeContents(li);
|
|
27257
|
+
range2.collapse(true);
|
|
27258
|
+
selection.removeAllRanges();
|
|
27259
|
+
selection.addRange(range2);
|
|
27260
|
+
} else {
|
|
27261
|
+
state2.doc.execCommand(
|
|
27262
|
+
command === "orderedList" ? "insertOrderedList" : "insertUnorderedList",
|
|
27263
|
+
false
|
|
27264
|
+
);
|
|
27265
|
+
}
|
|
27266
|
+
}
|
|
27094
27267
|
},
|
|
27095
|
-
|
|
27096
|
-
|
|
27097
|
-
|
|
27098
|
-
|
|
27099
|
-
|
|
27100
|
-
|
|
27101
|
-
|
|
27102
|
-
|
|
27103
|
-
|
|
27104
|
-
|
|
27105
|
-
|
|
27106
|
-
|
|
27107
|
-
|
|
27108
|
-
|
|
27109
|
-
|
|
27110
|
-
|
|
27111
|
-
|
|
27112
|
-
|
|
27113
|
-
|
|
27114
|
-
|
|
27115
|
-
|
|
27116
|
-
|
|
27117
|
-
|
|
27118
|
-
|
|
27119
|
-
|
|
27120
|
-
|
|
27121
|
-
|
|
27122
|
-
|
|
27123
|
-
|
|
27124
|
-
|
|
27125
|
-
|
|
27126
|
-
|
|
27127
|
-
|
|
27128
|
-
|
|
27129
|
-
|
|
27130
|
-
|
|
27131
|
-
|
|
27132
|
-
|
|
27133
|
-
|
|
27134
|
-
|
|
27135
|
-
|
|
27136
|
-
|
|
27137
|
-
|
|
27138
|
-
|
|
27139
|
-
|
|
27140
|
-
|
|
27141
|
-
|
|
27142
|
-
|
|
27268
|
+
() => state2.selectedStyles.has(command)
|
|
27269
|
+
);
|
|
27270
|
+
}
|
|
27271
|
+
function isNodeEmpty$1(node) {
|
|
27272
|
+
var _a2;
|
|
27273
|
+
const text = ((_a2 = node.textContent) == null ? void 0 : _a2.trim()) || "";
|
|
27274
|
+
if (text) return false;
|
|
27275
|
+
const brElements = node.getElementsByTagName("br");
|
|
27276
|
+
if (brElements.length === 0) return true;
|
|
27277
|
+
return brElements.length === 1 && node.childNodes.length === 1;
|
|
27278
|
+
}
|
|
27279
|
+
function createCommandRegistry(state2) {
|
|
27280
|
+
const format2 = formatting(state2);
|
|
27281
|
+
const historyCommands = {
|
|
27282
|
+
undo: createCommand("Undo", () => {
|
|
27283
|
+
var _a2;
|
|
27284
|
+
return (_a2 = state2.doc) == null ? void 0 : _a2.execCommand("undo", false);
|
|
27285
|
+
}),
|
|
27286
|
+
redo: createCommand("Redo", () => {
|
|
27287
|
+
var _a2;
|
|
27288
|
+
return (_a2 = state2.doc) == null ? void 0 : _a2.execCommand("redo", false);
|
|
27289
|
+
})
|
|
27290
|
+
};
|
|
27291
|
+
const textCommands = ["bold", "italic", "underline"].reduce((acc, cmd) => ({
|
|
27292
|
+
...acc,
|
|
27293
|
+
[cmd]: createFormattingCommand(state2, "text", cmd)
|
|
27294
|
+
}), {});
|
|
27295
|
+
const headingCommands = ["h1", "h2", "h3", "h4", "h5", "h6"].reduce((acc, cmd) => ({
|
|
27296
|
+
...acc,
|
|
27297
|
+
[cmd]: createFormattingCommand(state2, "block", cmd)
|
|
27298
|
+
}), {});
|
|
27299
|
+
const blockCommands = {
|
|
27300
|
+
p: createFormattingCommand(state2, "block", "p"),
|
|
27301
|
+
blockquote: createFormattingCommand(state2, "block", "blockquote")
|
|
27302
|
+
};
|
|
27303
|
+
const listCommands = {
|
|
27304
|
+
orderedList: createFormattingCommand(state2, "list", "orderedList"),
|
|
27305
|
+
unorderedList: createFormattingCommand(state2, "list", "unorderedList")
|
|
27306
|
+
};
|
|
27307
|
+
const tableCommands = {
|
|
27308
|
+
insertTable: createCommand("Insert Table", (state22, value) => {
|
|
27309
|
+
const [rows, cols] = (value == null ? void 0 : value.split("x").map(Number)) || [3, 3];
|
|
27310
|
+
insertTable(rows, cols, state22);
|
|
27311
|
+
}),
|
|
27312
|
+
deleteTable: createCommand("Delete Table", (state22) => state22.range && deleteTable(state22.range)),
|
|
27313
|
+
mergeCells: createCommand("Merge Cells", (state22) => state22.range && state22.doc && mergeCells(state22.range, state22.doc)),
|
|
27314
|
+
splitCells: createCommand("Split Cells", (state22) => state22.range && state22.doc && splitCell(state22.range, state22.doc)),
|
|
27315
|
+
addRowBefore: createCommand("Add Row Before", (state22) => state22.range && state22.doc && addRow("before", state22.range, state22.doc)),
|
|
27316
|
+
addRowAfter: createCommand("Add Row After", (state22) => state22.range && state22.doc && addRow("after", state22.range, state22.doc)),
|
|
27317
|
+
deleteRow: createCommand("Delete Row", (state22) => state22.range && deleteRow(state22.range)),
|
|
27318
|
+
insertColumnLeft: createCommand("Insert Column Left", (state22) => state22.range && insertColumn("before", state22.range)),
|
|
27319
|
+
insertColumnRight: createCommand("Insert Column Right", (state22) => state22.range && insertColumn("after", state22.range)),
|
|
27320
|
+
deleteColumn: createCommand("Delete Column", (state22) => state22.range && deleteColumn(state22.range))
|
|
27321
|
+
};
|
|
27322
|
+
const alignmentCommands = ["Left", "Center", "Right", "Justify"].reduce((acc, align) => ({
|
|
27323
|
+
...acc,
|
|
27324
|
+
[`align${align}`]: createCommand(`Align ${align}`, (state22) => state22.range && alignColumn(state22.range, align.toLowerCase()))
|
|
27325
|
+
}), {});
|
|
27326
|
+
const viewCommands = {
|
|
27327
|
+
fullScreen: createCommand("Full Screen", (state22) => {
|
|
27328
|
+
state22.isFullscreen = !state22.isFullscreen;
|
|
27329
|
+
}, (state22) => state22.isFullscreen),
|
|
27330
|
+
splitView: createCommand("Split View", (state22) => {
|
|
27331
|
+
state22.isSplitView = !state22.isSplitView;
|
|
27332
|
+
}, (state22) => state22.isSplitView),
|
|
27333
|
+
codeView: createCommand("Code View", (state22) => {
|
|
27334
|
+
state22.isCodeView = !state22.isCodeView;
|
|
27335
|
+
}, (state22) => state22.isCodeView)
|
|
27336
|
+
};
|
|
27337
|
+
const mediaCommands = {
|
|
27338
|
+
image: createCommand("Insert Image", (state22) => state22.modal && insertImage(state22.modal, state22)),
|
|
27339
|
+
link: createCommand("Insert Link", (state22) => state22.modal && state22.range && insertLink(state22.modal, state22)),
|
|
27340
|
+
embed: createCommand("Insert Embed", (state22) => state22.modal && insertEmbed(state22.modal, state22))
|
|
27341
|
+
};
|
|
27342
|
+
const otherCommands = {
|
|
27343
|
+
clear: createCommand("Clear Formatting", () => {
|
|
27344
|
+
format2.clear();
|
|
27345
|
+
}),
|
|
27346
|
+
indent: createCommand("Indent", () => {
|
|
27347
|
+
format2.text("indent");
|
|
27348
|
+
}),
|
|
27349
|
+
outdent: createCommand("Outdent", () => {
|
|
27350
|
+
format2.text("outdent");
|
|
27351
|
+
})
|
|
27352
|
+
};
|
|
27353
|
+
return {
|
|
27354
|
+
...historyCommands,
|
|
27355
|
+
...textCommands,
|
|
27356
|
+
...headingCommands,
|
|
27357
|
+
...blockCommands,
|
|
27358
|
+
...listCommands,
|
|
27359
|
+
...tableCommands,
|
|
27360
|
+
...alignmentCommands,
|
|
27361
|
+
...viewCommands,
|
|
27362
|
+
...mediaCommands,
|
|
27363
|
+
...otherCommands
|
|
27364
|
+
};
|
|
27365
|
+
}
|
|
27366
|
+
function createCommandExecutor(state2, commands) {
|
|
27367
|
+
return {
|
|
27368
|
+
execute(command, value) {
|
|
27369
|
+
const cmd = commands[command];
|
|
27370
|
+
if (cmd) {
|
|
27371
|
+
cmd.execute(state2, value);
|
|
27372
|
+
}
|
|
27143
27373
|
},
|
|
27144
|
-
|
|
27145
|
-
|
|
27146
|
-
|
|
27147
|
-
|
|
27148
|
-
},
|
|
27149
|
-
isActive: (state22) => state22.isSplitView
|
|
27374
|
+
isActive(command) {
|
|
27375
|
+
var _a2;
|
|
27376
|
+
const cmd = commands[command];
|
|
27377
|
+
return ((_a2 = cmd.isActive) == null ? void 0 : _a2.call(cmd, state2)) || false;
|
|
27150
27378
|
},
|
|
27151
|
-
|
|
27152
|
-
|
|
27153
|
-
|
|
27154
|
-
|
|
27155
|
-
},
|
|
27156
|
-
isActive: (state22) => state22.isCodeView
|
|
27379
|
+
getValue(command) {
|
|
27380
|
+
var _a2;
|
|
27381
|
+
const cmd = commands[command];
|
|
27382
|
+
return ((_a2 = cmd.getValue) == null ? void 0 : _a2.call(cmd, state2)) || null;
|
|
27157
27383
|
}
|
|
27158
27384
|
};
|
|
27385
|
+
}
|
|
27386
|
+
function useCommands(state2, debug) {
|
|
27387
|
+
const commands = createCommandRegistry(state2);
|
|
27159
27388
|
const executor = createCommandExecutor(state2, commands);
|
|
27160
27389
|
return {
|
|
27161
27390
|
execute: (command, value) => {
|
|
27391
|
+
if (!state2.doc) return;
|
|
27392
|
+
console.log("[useCommands.execute] Starting command execution:", command, value);
|
|
27162
27393
|
debug == null ? void 0 : debug.logCommand(command, value);
|
|
27394
|
+
if (["splitView", "codeView", "fullScreen"].includes(command)) {
|
|
27395
|
+
console.log("[useCommands.execute] Handling view state command:", command);
|
|
27396
|
+
switch (command) {
|
|
27397
|
+
case "splitView":
|
|
27398
|
+
state2.isSplitView = !state2.isSplitView;
|
|
27399
|
+
return;
|
|
27400
|
+
case "codeView":
|
|
27401
|
+
state2.isCodeView = !state2.isCodeView;
|
|
27402
|
+
return;
|
|
27403
|
+
case "fullScreen":
|
|
27404
|
+
state2.isFullscreen = !state2.isFullscreen;
|
|
27405
|
+
return;
|
|
27406
|
+
}
|
|
27407
|
+
}
|
|
27408
|
+
console.log("[useCommands.execute] Focusing editor");
|
|
27409
|
+
state2.doc.body.focus();
|
|
27410
|
+
console.log("[useCommands.execute] Executing command");
|
|
27163
27411
|
executor.execute(command, value);
|
|
27412
|
+
const newContent = state2.doc.body.innerHTML;
|
|
27413
|
+
console.log("[useCommands.execute] Checking content changes");
|
|
27414
|
+
console.log("[useCommands.execute] Old content length:", state2.content.length);
|
|
27415
|
+
console.log("[useCommands.execute] New content length:", newContent.length);
|
|
27416
|
+
if (newContent !== state2.content) {
|
|
27417
|
+
console.log("[useCommands.execute] Content changed, updating state");
|
|
27418
|
+
state2.content = newContent;
|
|
27419
|
+
}
|
|
27420
|
+
console.log("[useCommands.execute] Checking selection changes");
|
|
27421
|
+
const selection = state2.doc.getSelection();
|
|
27422
|
+
if (selection == null ? void 0 : selection.rangeCount) {
|
|
27423
|
+
const hasSelectionChanged = !state2.selection || state2.selection !== selection || state2.rangeCount !== selection.rangeCount;
|
|
27424
|
+
console.log("[useCommands.execute] Selection changed:", hasSelectionChanged);
|
|
27425
|
+
if (hasSelectionChanged) {
|
|
27426
|
+
console.log("[useCommands.execute] Updating selection state");
|
|
27427
|
+
state2.selection = selection;
|
|
27428
|
+
state2.range = selection.getRangeAt(0).cloneRange();
|
|
27429
|
+
state2.rangeCount = selection.rangeCount;
|
|
27430
|
+
}
|
|
27431
|
+
}
|
|
27164
27432
|
},
|
|
27165
27433
|
isActive: executor.isActive,
|
|
27166
27434
|
getValue: executor.getValue
|
|
27167
27435
|
};
|
|
27168
27436
|
}
|
|
27437
|
+
class EditorDebugger {
|
|
27438
|
+
constructor(maxActions = 1e3) {
|
|
27439
|
+
__publicField(this, "session");
|
|
27440
|
+
__publicField(this, "maxActions");
|
|
27441
|
+
__publicField(this, "isDevelopment");
|
|
27442
|
+
this.maxActions = maxActions;
|
|
27443
|
+
this.session = this.createNewSession();
|
|
27444
|
+
this.isDevelopment = false;
|
|
27445
|
+
}
|
|
27446
|
+
createNewSession() {
|
|
27447
|
+
return {
|
|
27448
|
+
id: `session_${Date.now()}`,
|
|
27449
|
+
startTime: Date.now(),
|
|
27450
|
+
actions: []
|
|
27451
|
+
};
|
|
27452
|
+
}
|
|
27453
|
+
getNodeDescription(node) {
|
|
27454
|
+
var _a2;
|
|
27455
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
27456
|
+
return `Text("${(_a2 = node.textContent) == null ? void 0 : _a2.slice(0, 20)}${node.textContent && node.textContent.length > 20 ? "..." : ""}")`;
|
|
27457
|
+
}
|
|
27458
|
+
const element = node;
|
|
27459
|
+
return `${element.tagName.toLowerCase()}${element.id ? `#${element.id}` : ""}`;
|
|
27460
|
+
}
|
|
27461
|
+
captureState(state2) {
|
|
27462
|
+
if (!state2.doc || !state2.selection) {
|
|
27463
|
+
return {
|
|
27464
|
+
content: "",
|
|
27465
|
+
selection: null,
|
|
27466
|
+
activeStyles: [],
|
|
27467
|
+
caretPosition: null
|
|
27468
|
+
};
|
|
27469
|
+
}
|
|
27470
|
+
const { selection } = state2;
|
|
27471
|
+
const range2 = selection.rangeCount ? selection.getRangeAt(0) : null;
|
|
27472
|
+
return {
|
|
27473
|
+
content: state2.doc.body.innerHTML,
|
|
27474
|
+
selection: range2 ? {
|
|
27475
|
+
start: range2.startOffset,
|
|
27476
|
+
end: range2.endOffset,
|
|
27477
|
+
collapsed: range2.collapsed,
|
|
27478
|
+
text: range2.toString()
|
|
27479
|
+
} : null,
|
|
27480
|
+
activeStyles: Array.from(state2.selectedStyles),
|
|
27481
|
+
caretPosition: range2 ? {
|
|
27482
|
+
node: this.getNodeDescription(range2.startContainer),
|
|
27483
|
+
offset: range2.startOffset
|
|
27484
|
+
} : null
|
|
27485
|
+
};
|
|
27486
|
+
}
|
|
27487
|
+
logCommand(command, value, state2) {
|
|
27488
|
+
this.addAction({
|
|
27489
|
+
type: "command",
|
|
27490
|
+
name: command,
|
|
27491
|
+
timestamp: Date.now(),
|
|
27492
|
+
details: { value },
|
|
27493
|
+
state: this.captureState(state2)
|
|
27494
|
+
});
|
|
27495
|
+
}
|
|
27496
|
+
logPaste(data2, state2) {
|
|
27497
|
+
this.addAction({
|
|
27498
|
+
type: "paste",
|
|
27499
|
+
name: "paste",
|
|
27500
|
+
timestamp: Date.now(),
|
|
27501
|
+
details: {
|
|
27502
|
+
html: data2.getData("text/html"),
|
|
27503
|
+
text: data2.getData("text/plain"),
|
|
27504
|
+
types: Array.from(data2.types)
|
|
27505
|
+
},
|
|
27506
|
+
state: this.captureState(state2)
|
|
27507
|
+
});
|
|
27508
|
+
}
|
|
27509
|
+
logKeyboard(event, state2) {
|
|
27510
|
+
this.addAction({
|
|
27511
|
+
type: "keyboard",
|
|
27512
|
+
name: "keypress",
|
|
27513
|
+
timestamp: Date.now(),
|
|
27514
|
+
details: {
|
|
27515
|
+
key: event.key,
|
|
27516
|
+
code: event.code,
|
|
27517
|
+
ctrl: event.ctrlKey,
|
|
27518
|
+
alt: event.altKey,
|
|
27519
|
+
shift: event.shiftKey,
|
|
27520
|
+
meta: event.metaKey
|
|
27521
|
+
},
|
|
27522
|
+
state: this.captureState(state2)
|
|
27523
|
+
});
|
|
27524
|
+
}
|
|
27525
|
+
logSelection(state2) {
|
|
27526
|
+
this.addAction({
|
|
27527
|
+
type: "selection",
|
|
27528
|
+
name: "selection_change",
|
|
27529
|
+
timestamp: Date.now(),
|
|
27530
|
+
details: {},
|
|
27531
|
+
state: this.captureState(state2)
|
|
27532
|
+
});
|
|
27533
|
+
}
|
|
27534
|
+
logInput(inputType, data2, state2) {
|
|
27535
|
+
this.addAction({
|
|
27536
|
+
type: "input",
|
|
27537
|
+
name: inputType,
|
|
27538
|
+
timestamp: Date.now(),
|
|
27539
|
+
details: { data: data2 },
|
|
27540
|
+
state: this.captureState(state2)
|
|
27541
|
+
});
|
|
27542
|
+
}
|
|
27543
|
+
addAction(action) {
|
|
27544
|
+
this.session.actions.push(action);
|
|
27545
|
+
if (this.session.actions.length > this.maxActions) {
|
|
27546
|
+
this.session.actions.shift();
|
|
27547
|
+
}
|
|
27548
|
+
if (this.isDevelopment) {
|
|
27549
|
+
console.log("Editor Action:", action);
|
|
27550
|
+
}
|
|
27551
|
+
}
|
|
27552
|
+
getSession() {
|
|
27553
|
+
return this.session;
|
|
27554
|
+
}
|
|
27555
|
+
clearSession() {
|
|
27556
|
+
this.session = this.createNewSession();
|
|
27557
|
+
}
|
|
27558
|
+
exportSession() {
|
|
27559
|
+
return JSON.stringify(this.session, null, 2);
|
|
27560
|
+
}
|
|
27561
|
+
downloadSession() {
|
|
27562
|
+
const blob = new Blob([this.exportSession()], { type: "application/json" });
|
|
27563
|
+
const url = URL.createObjectURL(blob);
|
|
27564
|
+
const a2 = document.createElement("a");
|
|
27565
|
+
a2.href = url;
|
|
27566
|
+
a2.download = `editor_session_${this.session.id}.json`;
|
|
27567
|
+
document.body.appendChild(a2);
|
|
27568
|
+
a2.click();
|
|
27569
|
+
document.body.removeChild(a2);
|
|
27570
|
+
URL.revokeObjectURL(url);
|
|
27571
|
+
}
|
|
27572
|
+
exportSessionWithPrompt(userMessage) {
|
|
27573
|
+
const prompt = {
|
|
27574
|
+
message: userMessage || "here is a debug log, can you analyze and fix accordingly?",
|
|
27575
|
+
session: this.session
|
|
27576
|
+
};
|
|
27577
|
+
return JSON.stringify(prompt, null, 2);
|
|
27578
|
+
}
|
|
27579
|
+
}
|
|
27580
|
+
function preserveIframes(content) {
|
|
27581
|
+
const temp = document.createElement("div");
|
|
27582
|
+
temp.innerHTML = content;
|
|
27583
|
+
const iframes = [];
|
|
27584
|
+
temp.querySelectorAll("iframe").forEach((iframe, index2) => {
|
|
27585
|
+
const placeholder = `<!--iframe-${index2}-->`;
|
|
27586
|
+
iframes.push(iframe.cloneNode(true));
|
|
27587
|
+
iframe.replaceWith(placeholder);
|
|
27588
|
+
});
|
|
27589
|
+
return {
|
|
27590
|
+
html: temp.innerHTML,
|
|
27591
|
+
iframes
|
|
27592
|
+
};
|
|
27593
|
+
}
|
|
27594
|
+
function restoreIframes(doc, content, iframes) {
|
|
27595
|
+
const placeholderPattern = /<!--iframe-(\d+)-->/g;
|
|
27596
|
+
doc.body.innerHTML = content.replace(placeholderPattern, (_2, index2) => {
|
|
27597
|
+
const iframe = iframes[Number(index2)];
|
|
27598
|
+
return iframe ? iframe.outerHTML : "";
|
|
27599
|
+
});
|
|
27600
|
+
}
|
|
27169
27601
|
function useEditor() {
|
|
27170
|
-
const editorDebugger = ref();
|
|
27171
27602
|
const modal = useModal();
|
|
27603
|
+
let cleanupListeners = null;
|
|
27172
27604
|
const state2 = reactive({
|
|
27173
27605
|
content: "",
|
|
27174
27606
|
doc: void 0,
|
|
@@ -27182,95 +27614,142 @@ function useEditor() {
|
|
|
27182
27614
|
redoStack: [],
|
|
27183
27615
|
rangeCount: 0,
|
|
27184
27616
|
range: null,
|
|
27185
|
-
modal
|
|
27617
|
+
modal,
|
|
27618
|
+
debug: void 0
|
|
27186
27619
|
});
|
|
27187
|
-
|
|
27188
|
-
|
|
27189
|
-
|
|
27190
|
-
|
|
27191
|
-
|
|
27192
|
-
|
|
27193
|
-
|
|
27194
|
-
|
|
27195
|
-
|
|
27196
|
-
|
|
27197
|
-
|
|
27198
|
-
|
|
27199
|
-
|
|
27200
|
-
|
|
27201
|
-
|
|
27202
|
-
|
|
27203
|
-
|
|
27204
|
-
|
|
27205
|
-
|
|
27206
|
-
|
|
27207
|
-
|
|
27208
|
-
|
|
27620
|
+
const updateState = {
|
|
27621
|
+
styles: () => {
|
|
27622
|
+
if (!state2.doc) return;
|
|
27623
|
+
console.log("[updateState.styles] Starting style update");
|
|
27624
|
+
const styles = /* @__PURE__ */ new Set();
|
|
27625
|
+
const styleTypes = [
|
|
27626
|
+
"bold",
|
|
27627
|
+
"italic",
|
|
27628
|
+
"underline",
|
|
27629
|
+
"h1",
|
|
27630
|
+
"h2",
|
|
27631
|
+
"h3",
|
|
27632
|
+
"h4",
|
|
27633
|
+
"h5",
|
|
27634
|
+
"h6",
|
|
27635
|
+
"blockquote",
|
|
27636
|
+
"table",
|
|
27637
|
+
"p",
|
|
27638
|
+
"ol",
|
|
27639
|
+
"li"
|
|
27640
|
+
];
|
|
27641
|
+
styleTypes.forEach((style) => {
|
|
27642
|
+
if (state2.doc && isStyleActive(style, state2.doc)) {
|
|
27643
|
+
styles.add(style);
|
|
27644
|
+
}
|
|
27645
|
+
});
|
|
27646
|
+
console.log("[updateState.styles] New styles:", Array.from(styles));
|
|
27647
|
+
state2.selectedStyles = styles;
|
|
27648
|
+
},
|
|
27649
|
+
content: (source) => {
|
|
27650
|
+
if (!state2.doc) return;
|
|
27651
|
+
console.log("[updateState.content] Starting content update, source:", source);
|
|
27652
|
+
const currentContent = state2.doc.body.innerHTML;
|
|
27653
|
+
console.log("[updateState.content] Current content length:", currentContent.length);
|
|
27654
|
+
console.log("[updateState.content] State content length:", state2.content.length);
|
|
27655
|
+
if (currentContent !== state2.content) {
|
|
27656
|
+
console.log("[updateState.content] Content changed, pushing to undo stack");
|
|
27657
|
+
state2.undoStack.push(state2.content);
|
|
27658
|
+
state2.redoStack = [];
|
|
27659
|
+
}
|
|
27660
|
+
const selection = state2.doc.getSelection();
|
|
27661
|
+
const range2 = (selection == null ? void 0 : selection.rangeCount) ? selection.getRangeAt(0).cloneRange() : null;
|
|
27662
|
+
console.log("[updateState.content] Has selection:", !!selection, "Has range:", !!range2);
|
|
27663
|
+
if (source === "html") {
|
|
27664
|
+
console.log("[updateState.content] Processing HTML content");
|
|
27665
|
+
const preserved = preserveIframes(state2.content);
|
|
27666
|
+
console.log("[updateState.content] Preserved iframes count:", preserved.iframes.length);
|
|
27667
|
+
state2.doc.body.innerHTML = preserved.html;
|
|
27668
|
+
setTimeout(() => {
|
|
27669
|
+
console.log("[updateState.content] Restoring iframes");
|
|
27670
|
+
if (state2.doc) {
|
|
27671
|
+
restoreIframes(state2.doc, state2.content, preserved.iframes);
|
|
27672
|
+
if (range2 && selection) {
|
|
27673
|
+
try {
|
|
27674
|
+
selection.removeAllRanges();
|
|
27675
|
+
selection.addRange(range2);
|
|
27676
|
+
console.log("[updateState.content] Selection restored");
|
|
27677
|
+
} catch (e) {
|
|
27678
|
+
console.warn("[updateState.content] Could not restore selection:", e);
|
|
27679
|
+
}
|
|
27680
|
+
}
|
|
27681
|
+
}
|
|
27682
|
+
}, 0);
|
|
27683
|
+
} else {
|
|
27684
|
+
console.log("[updateState.content] Setting text content");
|
|
27685
|
+
state2.doc.body.textContent = state2.content;
|
|
27209
27686
|
}
|
|
27210
|
-
}
|
|
27211
|
-
|
|
27212
|
-
|
|
27213
|
-
|
|
27214
|
-
|
|
27215
|
-
|
|
27216
|
-
|
|
27217
|
-
if (source === "html") {
|
|
27218
|
-
state2.doc.body.innerHTML = state2.content;
|
|
27219
|
-
} else {
|
|
27220
|
-
state2.doc.body.textContent = state2.content;
|
|
27221
|
-
}
|
|
27222
|
-
updateActiveStyles();
|
|
27223
|
-
}
|
|
27224
|
-
function updateSelection() {
|
|
27225
|
-
if (!state2.doc) return;
|
|
27226
|
-
state2.selection = state2.doc.getSelection();
|
|
27227
|
-
if (!state2.selection) return;
|
|
27228
|
-
try {
|
|
27229
|
-
if (!state2.doc.body.contains(state2.selection.anchorNode)) {
|
|
27230
|
-
state2.doc.body.focus();
|
|
27687
|
+
},
|
|
27688
|
+
selection: () => {
|
|
27689
|
+
if (!state2.doc) return;
|
|
27690
|
+
console.log("[updateState.selection] Starting selection update");
|
|
27691
|
+
const newSelection = state2.doc.getSelection();
|
|
27692
|
+
if (!newSelection) {
|
|
27693
|
+
console.log("[updateState.selection] No selection available");
|
|
27231
27694
|
return;
|
|
27232
27695
|
}
|
|
27233
|
-
|
|
27234
|
-
|
|
27235
|
-
|
|
27236
|
-
|
|
27237
|
-
|
|
27238
|
-
|
|
27239
|
-
state2.selection.
|
|
27696
|
+
try {
|
|
27697
|
+
if (!state2.doc.body.contains(newSelection.anchorNode)) {
|
|
27698
|
+
console.log("[updateState.selection] Selection outside editor body, refocusing");
|
|
27699
|
+
state2.doc.body.focus();
|
|
27700
|
+
return;
|
|
27701
|
+
}
|
|
27702
|
+
const hasSelectionChanged = !state2.selection || state2.selection !== newSelection || state2.rangeCount !== newSelection.rangeCount || newSelection.rangeCount > 0 && state2.range && (state2.range.startContainer !== newSelection.getRangeAt(0).startContainer || state2.range.startOffset !== newSelection.getRangeAt(0).startOffset || state2.range.endContainer !== newSelection.getRangeAt(0).endContainer || state2.range.endOffset !== newSelection.getRangeAt(0).endOffset);
|
|
27703
|
+
console.log("[updateState.selection] Selection changed:", hasSelectionChanged);
|
|
27704
|
+
if (hasSelectionChanged) {
|
|
27705
|
+
state2.selection = newSelection;
|
|
27706
|
+
state2.rangeCount = newSelection.rangeCount;
|
|
27707
|
+
if (newSelection.rangeCount > 0) {
|
|
27708
|
+
state2.range = newSelection.getRangeAt(0).cloneRange();
|
|
27709
|
+
console.log("[updateState.selection] New range:", {
|
|
27710
|
+
startOffset: state2.range.startOffset,
|
|
27711
|
+
endOffset: state2.range.endOffset,
|
|
27712
|
+
collapsed: state2.range.collapsed
|
|
27713
|
+
});
|
|
27714
|
+
}
|
|
27715
|
+
requestAnimationFrame(() => {
|
|
27716
|
+
console.log("[updateState.selection] Updating styles in RAF");
|
|
27717
|
+
updateState.styles();
|
|
27718
|
+
});
|
|
27719
|
+
}
|
|
27720
|
+
} catch (e) {
|
|
27721
|
+
console.warn("[updateState.selection] Selection error:", e);
|
|
27722
|
+
state2.selection = null;
|
|
27723
|
+
state2.range = null;
|
|
27724
|
+
state2.rangeCount = 0;
|
|
27725
|
+
state2.selectedStyles = /* @__PURE__ */ new Set();
|
|
27240
27726
|
}
|
|
27241
|
-
state2.range = state2.selection.getRangeAt(0).cloneRange();
|
|
27242
|
-
updateActiveStyles();
|
|
27243
|
-
} catch (e) {
|
|
27244
|
-
console.warn("Selection error:", e);
|
|
27245
|
-
state2.selection = null;
|
|
27246
|
-
state2.range = null;
|
|
27247
|
-
state2.rangeCount = 0;
|
|
27248
|
-
state2.selectedStyles = /* @__PURE__ */ new Set();
|
|
27249
27727
|
}
|
|
27250
|
-
}
|
|
27251
|
-
|
|
27252
|
-
|
|
27253
|
-
state2.
|
|
27254
|
-
|
|
27255
|
-
|
|
27256
|
-
|
|
27257
|
-
|
|
27258
|
-
|
|
27259
|
-
doc.addEventListener("mouseup", () => {
|
|
27260
|
-
updateSelection();
|
|
27261
|
-
});
|
|
27262
|
-
doc.addEventListener("keyup", (e) => {
|
|
27263
|
-
if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(e.key)) {
|
|
27264
|
-
updateSelection();
|
|
27728
|
+
};
|
|
27729
|
+
const history = {
|
|
27730
|
+
undo: () => {
|
|
27731
|
+
if (state2.undoStack.length === 0) return;
|
|
27732
|
+
state2.redoStack.push(state2.content);
|
|
27733
|
+
const lastContent = state2.undoStack.pop();
|
|
27734
|
+
if (lastContent !== void 0) {
|
|
27735
|
+
state2.content = lastContent;
|
|
27736
|
+
updateState.content("html");
|
|
27265
27737
|
}
|
|
27266
|
-
}
|
|
27267
|
-
|
|
27738
|
+
},
|
|
27739
|
+
redo: () => {
|
|
27740
|
+
if (state2.redoStack.length === 0) return;
|
|
27741
|
+
state2.undoStack.push(state2.content);
|
|
27742
|
+
const nextContent = state2.redoStack.pop();
|
|
27743
|
+
if (nextContent !== void 0) {
|
|
27744
|
+
state2.content = nextContent;
|
|
27745
|
+
updateState.content("html");
|
|
27746
|
+
}
|
|
27747
|
+
}
|
|
27748
|
+
};
|
|
27749
|
+
const cleanup = {
|
|
27750
|
+
emptyTags: (doc) => {
|
|
27268
27751
|
var _a2, _b;
|
|
27269
|
-
const walker = doc.createTreeWalker(
|
|
27270
|
-
doc.body,
|
|
27271
|
-
NodeFilter.SHOW_ELEMENT,
|
|
27272
|
-
null
|
|
27273
|
-
);
|
|
27752
|
+
const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_ELEMENT, null);
|
|
27274
27753
|
const nodesToRemove = [];
|
|
27275
27754
|
let node = walker.nextNode();
|
|
27276
27755
|
while (node) {
|
|
@@ -27285,12 +27764,10 @@ function useEditor() {
|
|
|
27285
27764
|
const isEmpty = !textContent && !innerHTML;
|
|
27286
27765
|
const isDirectChildOfBody = node.parentElement === doc.body;
|
|
27287
27766
|
if (isEmpty || hasOnlyNbsp || hasOnlyBr && !isDirectChildOfBody) {
|
|
27288
|
-
if (isDirectChildOfBody) {
|
|
27289
|
-
|
|
27290
|
-
|
|
27291
|
-
|
|
27292
|
-
(_b = node.parentNode) == null ? void 0 : _b.replaceChild(p2, node);
|
|
27293
|
-
}
|
|
27767
|
+
if (isDirectChildOfBody && !node.matches("p")) {
|
|
27768
|
+
const p2 = doc.createElement("p");
|
|
27769
|
+
p2.innerHTML = "<br>";
|
|
27770
|
+
(_b = node.parentNode) == null ? void 0 : _b.replaceChild(p2, node);
|
|
27294
27771
|
} else {
|
|
27295
27772
|
nodesToRemove.push(node);
|
|
27296
27773
|
}
|
|
@@ -27300,237 +27777,283 @@ function useEditor() {
|
|
|
27300
27777
|
nodesToRemove.forEach((node2) => {
|
|
27301
27778
|
node2.remove();
|
|
27302
27779
|
});
|
|
27780
|
+
},
|
|
27781
|
+
normalizeContent: (doc) => {
|
|
27782
|
+
if (!doc.body.firstElementChild) {
|
|
27783
|
+
const p2 = doc.createElement("p");
|
|
27784
|
+
p2.dir = doc.body.dir;
|
|
27785
|
+
p2.innerHTML = "<br>";
|
|
27786
|
+
doc.body.appendChild(p2);
|
|
27787
|
+
} else {
|
|
27788
|
+
const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_TEXT);
|
|
27789
|
+
const textNodes = [];
|
|
27790
|
+
let node;
|
|
27791
|
+
while (node = walker.nextNode()) {
|
|
27792
|
+
if (node.parentElement === doc.body) {
|
|
27793
|
+
textNodes.push(node);
|
|
27794
|
+
}
|
|
27795
|
+
}
|
|
27796
|
+
textNodes.forEach((textNode) => {
|
|
27797
|
+
var _a2;
|
|
27798
|
+
if ((_a2 = textNode.textContent) == null ? void 0 : _a2.trim()) {
|
|
27799
|
+
const p2 = doc.createElement("p");
|
|
27800
|
+
p2.dir = doc.body.dir;
|
|
27801
|
+
p2.appendChild(textNode.cloneNode());
|
|
27802
|
+
doc.body.replaceChild(p2, textNode);
|
|
27803
|
+
} else {
|
|
27804
|
+
doc.body.removeChild(textNode);
|
|
27805
|
+
}
|
|
27806
|
+
});
|
|
27807
|
+
}
|
|
27808
|
+
}
|
|
27809
|
+
};
|
|
27810
|
+
function setupEventListeners(doc) {
|
|
27811
|
+
console.log("[setupEventListeners] Starting setup");
|
|
27812
|
+
if (cleanupListeners) {
|
|
27813
|
+
console.log("[setupEventListeners] Cleaning up existing listeners");
|
|
27814
|
+
cleanupListeners();
|
|
27815
|
+
cleanupListeners = null;
|
|
27816
|
+
}
|
|
27817
|
+
let isUpdating = false;
|
|
27818
|
+
let contentUpdateTimeout = null;
|
|
27819
|
+
let selectionUpdateTimeout = null;
|
|
27820
|
+
let updateCount = 0;
|
|
27821
|
+
const events = {
|
|
27822
|
+
input: () => {
|
|
27823
|
+
updateCount++;
|
|
27824
|
+
console.log(`[input event #${updateCount}] Starting, isUpdating:`, isUpdating);
|
|
27825
|
+
if (isUpdating) {
|
|
27826
|
+
console.log(`[input event #${updateCount}] Skipped - already updating`);
|
|
27827
|
+
return;
|
|
27828
|
+
}
|
|
27829
|
+
isUpdating = true;
|
|
27830
|
+
if (contentUpdateTimeout) {
|
|
27831
|
+
console.log(`[input event #${updateCount}] Clearing previous timeout`);
|
|
27832
|
+
window.clearTimeout(contentUpdateTimeout);
|
|
27833
|
+
}
|
|
27834
|
+
contentUpdateTimeout = window.setTimeout(() => {
|
|
27835
|
+
console.log(`[input event #${updateCount}] Timeout fired`);
|
|
27836
|
+
const newContent = doc.body.innerHTML;
|
|
27837
|
+
if (newContent !== state2.content) {
|
|
27838
|
+
console.log(`[input event #${updateCount}] Content changed, updating state`);
|
|
27839
|
+
state2.content = newContent;
|
|
27840
|
+
} else {
|
|
27841
|
+
console.log(`[input event #${updateCount}] Content unchanged`);
|
|
27842
|
+
}
|
|
27843
|
+
isUpdating = false;
|
|
27844
|
+
}, 100);
|
|
27845
|
+
},
|
|
27846
|
+
selectionchange: () => {
|
|
27847
|
+
updateCount++;
|
|
27848
|
+
console.log(`[selectionchange #${updateCount}] Starting, isUpdating:`, isUpdating);
|
|
27849
|
+
if (isUpdating) {
|
|
27850
|
+
console.log(`[selectionchange #${updateCount}] Skipped - already updating`);
|
|
27851
|
+
return;
|
|
27852
|
+
}
|
|
27853
|
+
if (selectionUpdateTimeout) {
|
|
27854
|
+
console.log(`[selectionchange #${updateCount}] Clearing previous timeout`);
|
|
27855
|
+
window.clearTimeout(selectionUpdateTimeout);
|
|
27856
|
+
}
|
|
27857
|
+
selectionUpdateTimeout = window.setTimeout(() => {
|
|
27858
|
+
console.log(`[selectionchange #${updateCount}] Timeout fired`);
|
|
27859
|
+
if (!isUpdating) {
|
|
27860
|
+
updateState.selection();
|
|
27861
|
+
} else {
|
|
27862
|
+
console.log(`[selectionchange #${updateCount}] Skipped - still updating`);
|
|
27863
|
+
}
|
|
27864
|
+
}, 150);
|
|
27865
|
+
},
|
|
27866
|
+
mouseup: () => {
|
|
27867
|
+
updateCount++;
|
|
27868
|
+
console.log(`[mouseup #${updateCount}] Starting, isUpdating:`, isUpdating);
|
|
27869
|
+
if (isUpdating) return;
|
|
27870
|
+
updateState.selection();
|
|
27871
|
+
},
|
|
27872
|
+
keyup: (e) => {
|
|
27873
|
+
updateCount++;
|
|
27874
|
+
console.log(`[keyup #${updateCount}] Key:`, e.key, "isUpdating:", isUpdating);
|
|
27875
|
+
if (isUpdating) return;
|
|
27876
|
+
if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(e.key)) {
|
|
27877
|
+
updateState.selection();
|
|
27878
|
+
}
|
|
27879
|
+
}
|
|
27303
27880
|
};
|
|
27304
|
-
|
|
27305
|
-
|
|
27306
|
-
|
|
27307
|
-
|
|
27308
|
-
|
|
27309
|
-
|
|
27310
|
-
|
|
27311
|
-
|
|
27881
|
+
Object.entries(events).forEach(([event, handler]) => {
|
|
27882
|
+
doc.addEventListener(event, handler);
|
|
27883
|
+
console.log("[setupEventListeners] Added listener for:", event);
|
|
27884
|
+
});
|
|
27885
|
+
cleanupListeners = () => {
|
|
27886
|
+
console.log("[setupEventListeners] Cleaning up event listeners");
|
|
27887
|
+
if (contentUpdateTimeout) window.clearTimeout(contentUpdateTimeout);
|
|
27888
|
+
if (selectionUpdateTimeout) window.clearTimeout(selectionUpdateTimeout);
|
|
27889
|
+
Object.entries(events).forEach(([event, handler]) => {
|
|
27890
|
+
doc.removeEventListener(event, handler);
|
|
27891
|
+
});
|
|
27892
|
+
};
|
|
27893
|
+
return cleanupListeners;
|
|
27312
27894
|
}
|
|
27313
27895
|
function init(doc) {
|
|
27896
|
+
console.log("[init] Starting initialization");
|
|
27897
|
+
if (state2.hasInit) {
|
|
27898
|
+
console.log("[init] Already initialized, cleaning up first");
|
|
27899
|
+
if (cleanupListeners) {
|
|
27900
|
+
cleanupListeners();
|
|
27901
|
+
cleanupListeners = null;
|
|
27902
|
+
}
|
|
27903
|
+
}
|
|
27314
27904
|
state2.doc = doc;
|
|
27315
27905
|
state2.hasInit = true;
|
|
27316
|
-
|
|
27317
|
-
|
|
27318
|
-
|
|
27319
|
-
|
|
27320
|
-
|
|
27321
|
-
|
|
27322
|
-
|
|
27323
|
-
|
|
27324
|
-
state2.content = lastContent;
|
|
27325
|
-
updateContent("html");
|
|
27326
|
-
}
|
|
27327
|
-
}
|
|
27328
|
-
function handleRedo() {
|
|
27329
|
-
if (state2.redoStack.length === 0) return;
|
|
27330
|
-
state2.undoStack.push(state2.content);
|
|
27331
|
-
const nextContent = state2.redoStack.pop();
|
|
27332
|
-
if (nextContent !== void 0) {
|
|
27333
|
-
state2.content = nextContent;
|
|
27334
|
-
updateContent("html");
|
|
27335
|
-
}
|
|
27336
|
-
}
|
|
27337
|
-
function handleToolbarAction(action, value) {
|
|
27338
|
-
if (!state2.doc) return;
|
|
27339
|
-
if (action === "undo") {
|
|
27340
|
-
handleUndo();
|
|
27341
|
-
return;
|
|
27342
|
-
}
|
|
27343
|
-
if (action === "redo") {
|
|
27344
|
-
handleRedo();
|
|
27345
|
-
return;
|
|
27346
|
-
}
|
|
27347
|
-
if (action === "fullScreen") {
|
|
27348
|
-
state2.isFullscreen = !state2.isFullscreen;
|
|
27349
|
-
return;
|
|
27350
|
-
}
|
|
27351
|
-
if (action === "splitView") {
|
|
27352
|
-
state2.isSplitView = !state2.isSplitView;
|
|
27353
|
-
return;
|
|
27906
|
+
if (state2.content) {
|
|
27907
|
+
const preserved = preserveIframes(state2.content);
|
|
27908
|
+
doc.body.innerHTML = preserved.html;
|
|
27909
|
+
setTimeout(() => {
|
|
27910
|
+
if (state2.doc) {
|
|
27911
|
+
restoreIframes(doc, state2.content, preserved.iframes);
|
|
27912
|
+
}
|
|
27913
|
+
}, 0);
|
|
27354
27914
|
}
|
|
27355
|
-
|
|
27356
|
-
|
|
27357
|
-
|
|
27915
|
+
cleanup.normalizeContent(doc);
|
|
27916
|
+
const range2 = doc.createRange();
|
|
27917
|
+
const selection = doc.getSelection();
|
|
27918
|
+
if (selection) {
|
|
27919
|
+
range2.selectNodeContents(doc.body);
|
|
27920
|
+
range2.collapse(false);
|
|
27921
|
+
selection.removeAllRanges();
|
|
27922
|
+
selection.addRange(range2);
|
|
27923
|
+
state2.range = range2.cloneRange();
|
|
27924
|
+
state2.selection = selection;
|
|
27925
|
+
state2.rangeCount = selection.rangeCount;
|
|
27926
|
+
}
|
|
27927
|
+
cleanupListeners = setupEventListeners(doc);
|
|
27928
|
+
}
|
|
27929
|
+
function initDebugger() {
|
|
27930
|
+
if (!state2.debug) {
|
|
27931
|
+
const debugInstance = new EditorDebugger();
|
|
27932
|
+
const debug = {
|
|
27933
|
+
debugger: debugInstance,
|
|
27934
|
+
logCommand: (command, value) => {
|
|
27935
|
+
debugInstance.logCommand(command, value, state2);
|
|
27936
|
+
},
|
|
27937
|
+
getSession: () => debugInstance.getSession(),
|
|
27938
|
+
clearSession: () => {
|
|
27939
|
+
debugInstance.clearSession();
|
|
27940
|
+
},
|
|
27941
|
+
downloadSession: () => {
|
|
27942
|
+
debugInstance.downloadSession();
|
|
27943
|
+
},
|
|
27944
|
+
exportDebugWithPrompt: (message2) => debugInstance.exportSessionWithPrompt(message2)
|
|
27945
|
+
};
|
|
27946
|
+
state2.debug = debug;
|
|
27358
27947
|
}
|
|
27359
|
-
|
|
27360
|
-
|
|
27361
|
-
|
|
27362
|
-
|
|
27363
|
-
|
|
27364
|
-
case "underline":
|
|
27365
|
-
format2.text(action);
|
|
27366
|
-
break;
|
|
27367
|
-
case "orderedList":
|
|
27368
|
-
format2.list("ol");
|
|
27369
|
-
break;
|
|
27370
|
-
case "unorderedList":
|
|
27371
|
-
format2.list("ul");
|
|
27372
|
-
break;
|
|
27373
|
-
case "blockquote":
|
|
27374
|
-
case "p":
|
|
27375
|
-
case "h1":
|
|
27376
|
-
case "h2":
|
|
27377
|
-
case "h3":
|
|
27378
|
-
case "h4":
|
|
27379
|
-
case "h5":
|
|
27380
|
-
case "h6":
|
|
27381
|
-
format2.block(action, action);
|
|
27382
|
-
break;
|
|
27383
|
-
case "insertTable": {
|
|
27384
|
-
const [rows, cols] = (value == null ? void 0 : value.split("x").map(Number)) || [3, 3];
|
|
27385
|
-
insertTable(rows, cols, state2);
|
|
27386
|
-
break;
|
|
27948
|
+
}
|
|
27949
|
+
if (typeof window !== "undefined") {
|
|
27950
|
+
window.addEventListener("beforeunload", () => {
|
|
27951
|
+
if (cleanupListeners) {
|
|
27952
|
+
cleanupListeners();
|
|
27387
27953
|
}
|
|
27388
|
-
|
|
27389
|
-
if (state2.range) deleteTable(state2.range);
|
|
27390
|
-
break;
|
|
27391
|
-
case "mergeCells":
|
|
27392
|
-
if (state2.range && state2.doc) mergeCells(state2.range, state2.doc);
|
|
27393
|
-
break;
|
|
27394
|
-
case "splitCells":
|
|
27395
|
-
if (state2.range && state2.doc) splitCell(state2.range, state2.doc);
|
|
27396
|
-
break;
|
|
27397
|
-
case "addRowBefore":
|
|
27398
|
-
case "addRowAfter":
|
|
27399
|
-
if (state2.range && state2.doc) {
|
|
27400
|
-
addRow(action === "addRowBefore" ? "before" : "after", state2.range, state2.doc);
|
|
27401
|
-
}
|
|
27402
|
-
break;
|
|
27403
|
-
case "deleteRow":
|
|
27404
|
-
if (state2.range) deleteRow(state2.range);
|
|
27405
|
-
break;
|
|
27406
|
-
case "insertColumnLeft":
|
|
27407
|
-
case "insertColumnRight":
|
|
27408
|
-
if (state2.range) {
|
|
27409
|
-
insertColumn(action === "insertColumnLeft" ? "before" : "after", state2.range);
|
|
27410
|
-
}
|
|
27411
|
-
break;
|
|
27412
|
-
case "deleteColumn":
|
|
27413
|
-
if (state2.range) deleteColumn(state2.range);
|
|
27414
|
-
break;
|
|
27415
|
-
case "alignLeft":
|
|
27416
|
-
case "alignCenter":
|
|
27417
|
-
case "alignRight":
|
|
27418
|
-
case "alignJustify":
|
|
27419
|
-
if (state2.range) {
|
|
27420
|
-
alignColumn(state2.range, action.replace("align", "").toLowerCase());
|
|
27421
|
-
}
|
|
27422
|
-
break;
|
|
27423
|
-
case "clear":
|
|
27424
|
-
format2.clear();
|
|
27425
|
-
break;
|
|
27426
|
-
default:
|
|
27427
|
-
format2.text(action);
|
|
27428
|
-
}
|
|
27429
|
-
updateContent("html");
|
|
27954
|
+
});
|
|
27430
27955
|
}
|
|
27431
|
-
const getDebugSession = () => {
|
|
27432
|
-
var _a2;
|
|
27433
|
-
return (_a2 = editorDebugger.value) == null ? void 0 : _a2.getSession();
|
|
27434
|
-
};
|
|
27435
|
-
const clearDebugSession = () => {
|
|
27436
|
-
var _a2;
|
|
27437
|
-
return (_a2 = editorDebugger.value) == null ? void 0 : _a2.clearSession();
|
|
27438
|
-
};
|
|
27439
|
-
const downloadDebugSession = () => {
|
|
27440
|
-
var _a2;
|
|
27441
|
-
return (_a2 = editorDebugger.value) == null ? void 0 : _a2.downloadSession();
|
|
27442
|
-
};
|
|
27443
|
-
const logCommand = (command, value) => {
|
|
27444
|
-
var _a2;
|
|
27445
|
-
return (_a2 = editorDebugger.value) == null ? void 0 : _a2.logCommand(command, value, state2);
|
|
27446
|
-
};
|
|
27447
|
-
const exportDebugWithPrompt = (message2) => {
|
|
27448
|
-
var _a2;
|
|
27449
|
-
return (_a2 = editorDebugger.value) == null ? void 0 : _a2.exportSessionWithPrompt(message2);
|
|
27450
|
-
};
|
|
27451
27956
|
return {
|
|
27452
27957
|
state: state2,
|
|
27453
27958
|
init,
|
|
27454
|
-
|
|
27455
|
-
|
|
27456
|
-
|
|
27457
|
-
|
|
27458
|
-
|
|
27459
|
-
|
|
27460
|
-
|
|
27461
|
-
|
|
27462
|
-
|
|
27463
|
-
|
|
27464
|
-
|
|
27465
|
-
|
|
27466
|
-
}
|
|
27467
|
-
}
|
|
27468
|
-
|
|
27959
|
+
updateState,
|
|
27960
|
+
history,
|
|
27961
|
+
initDebugger,
|
|
27962
|
+
cleanup: () => {
|
|
27963
|
+
if (cleanupListeners) {
|
|
27964
|
+
cleanupListeners();
|
|
27965
|
+
cleanupListeners = null;
|
|
27966
|
+
}
|
|
27967
|
+
}
|
|
27968
|
+
};
|
|
27969
|
+
}
|
|
27970
|
+
const shortcuts = [
|
|
27971
|
+
{ key: "b", command: "bold" },
|
|
27972
|
+
{ key: "i", command: "italic" },
|
|
27973
|
+
{ key: "u", command: "underline" },
|
|
27974
|
+
{ key: "z", command: "undo" },
|
|
27975
|
+
{ key: "z", modifiers: { shift: true }, command: "redo" },
|
|
27976
|
+
{ key: "y", command: "redo" },
|
|
27977
|
+
{ key: ".", modifiers: { shift: true }, command: "orderedList" },
|
|
27978
|
+
{ key: "/", modifiers: { shift: true }, command: "unorderedList" },
|
|
27979
|
+
{ key: "]", command: "indent" },
|
|
27980
|
+
{ key: "[", command: "outdent" },
|
|
27981
|
+
...Array.from({ length: 6 }, (_2, i2) => ({
|
|
27982
|
+
key: String(i2 + 1),
|
|
27983
|
+
modifiers: { alt: true },
|
|
27984
|
+
command: `h${i2 + 1}`
|
|
27985
|
+
}))
|
|
27986
|
+
];
|
|
27987
|
+
function useEditorKeyboard(doc, executor) {
|
|
27469
27988
|
doc.addEventListener("keydown", (e) => {
|
|
27470
|
-
|
|
27471
|
-
|
|
27472
|
-
|
|
27473
|
-
|
|
27474
|
-
|
|
27475
|
-
|
|
27476
|
-
|
|
27477
|
-
|
|
27478
|
-
|
|
27479
|
-
|
|
27480
|
-
case "u":
|
|
27481
|
-
e.preventDefault();
|
|
27482
|
-
handleToolbarAction("underline");
|
|
27483
|
-
break;
|
|
27484
|
-
case "z":
|
|
27485
|
-
e.preventDefault();
|
|
27486
|
-
if (e.shiftKey) {
|
|
27487
|
-
handleToolbarAction("redo");
|
|
27488
|
-
} else {
|
|
27489
|
-
handleToolbarAction("undo");
|
|
27490
|
-
}
|
|
27491
|
-
break;
|
|
27492
|
-
case "y":
|
|
27493
|
-
e.preventDefault();
|
|
27494
|
-
handleToolbarAction("redo");
|
|
27495
|
-
break;
|
|
27496
|
-
// List shortcuts
|
|
27497
|
-
case ".":
|
|
27498
|
-
if (e.shiftKey) {
|
|
27499
|
-
e.preventDefault();
|
|
27500
|
-
handleToolbarAction("orderedList");
|
|
27501
|
-
}
|
|
27502
|
-
break;
|
|
27503
|
-
case "/":
|
|
27504
|
-
if (e.shiftKey) {
|
|
27989
|
+
var _a2, _b;
|
|
27990
|
+
if (e.key === "Enter" && !e.shiftKey) {
|
|
27991
|
+
const selection = doc.getSelection();
|
|
27992
|
+
if (!selection || !selection.rangeCount) return;
|
|
27993
|
+
const range2 = selection.getRangeAt(0);
|
|
27994
|
+
const container = range2.commonAncestorContainer;
|
|
27995
|
+
const listItem = (_a2 = container.nodeType === 3 ? container.parentElement : container) == null ? void 0 : _a2.closest("li");
|
|
27996
|
+
if (listItem) {
|
|
27997
|
+
if (range2.collapsed && isAtEndOfNode(listItem, range2)) {
|
|
27998
|
+
if (isNodeEmpty(listItem)) {
|
|
27505
27999
|
e.preventDefault();
|
|
27506
|
-
|
|
27507
|
-
|
|
27508
|
-
|
|
27509
|
-
|
|
27510
|
-
|
|
27511
|
-
|
|
27512
|
-
|
|
27513
|
-
|
|
27514
|
-
|
|
27515
|
-
|
|
27516
|
-
|
|
28000
|
+
const list = listItem.parentElement;
|
|
28001
|
+
if (!list) return;
|
|
28002
|
+
listItem.remove();
|
|
28003
|
+
if (!list.querySelector("li")) {
|
|
28004
|
+
const p2 = doc.createElement("p");
|
|
28005
|
+
p2.innerHTML = "<br>";
|
|
28006
|
+
(_b = list.parentNode) == null ? void 0 : _b.replaceChild(p2, list);
|
|
28007
|
+
range2.selectNodeContents(p2);
|
|
28008
|
+
range2.collapse(true);
|
|
28009
|
+
selection.removeAllRanges();
|
|
28010
|
+
selection.addRange(range2);
|
|
28011
|
+
}
|
|
28012
|
+
} else {
|
|
27517
28013
|
e.preventDefault();
|
|
27518
|
-
|
|
28014
|
+
const newLi = doc.createElement("li");
|
|
28015
|
+
newLi.innerHTML = " <br>";
|
|
28016
|
+
listItem.insertAdjacentElement("afterend", newLi);
|
|
28017
|
+
range2.selectNodeContents(newLi);
|
|
28018
|
+
range2.collapse(true);
|
|
28019
|
+
selection.removeAllRanges();
|
|
28020
|
+
selection.addRange(range2);
|
|
27519
28021
|
}
|
|
27520
|
-
|
|
27521
|
-
// Indentation
|
|
27522
|
-
case "]":
|
|
27523
|
-
e.preventDefault();
|
|
27524
|
-
handleToolbarAction("indent");
|
|
27525
|
-
break;
|
|
27526
|
-
case "[":
|
|
27527
|
-
e.preventDefault();
|
|
27528
|
-
handleToolbarAction("outdent");
|
|
27529
|
-
break;
|
|
28022
|
+
}
|
|
27530
28023
|
}
|
|
27531
28024
|
}
|
|
28025
|
+
if (!e.ctrlKey && !e.metaKey) return;
|
|
28026
|
+
const matchingShortcut = shortcuts.find((shortcut) => {
|
|
28027
|
+
const keyMatch = shortcut.key === e.key;
|
|
28028
|
+
const modifiersMatch = !shortcut.modifiers || (!shortcut.modifiers.ctrl || e.ctrlKey || e.metaKey) && (!shortcut.modifiers.alt || e.altKey) && (!shortcut.modifiers.shift || e.shiftKey);
|
|
28029
|
+
return keyMatch && modifiersMatch;
|
|
28030
|
+
});
|
|
28031
|
+
if (matchingShortcut) {
|
|
28032
|
+
e.preventDefault();
|
|
28033
|
+
executor.execute(matchingShortcut.command);
|
|
28034
|
+
}
|
|
27532
28035
|
});
|
|
27533
28036
|
}
|
|
28037
|
+
function isAtEndOfNode(node, range2) {
|
|
28038
|
+
var _a2;
|
|
28039
|
+
if (node.nodeType === 3) {
|
|
28040
|
+
return range2.startOffset === node.length;
|
|
28041
|
+
}
|
|
28042
|
+
const { lastChild: lastChild2 } = node;
|
|
28043
|
+
if (!lastChild2) return true;
|
|
28044
|
+
if (lastChild2.nodeType === 3) {
|
|
28045
|
+
return range2.startContainer === lastChild2 && range2.startOffset === ((_a2 = lastChild2.textContent) == null ? void 0 : _a2.length);
|
|
28046
|
+
}
|
|
28047
|
+
return range2.startContainer === node && range2.startOffset === node.childNodes.length;
|
|
28048
|
+
}
|
|
28049
|
+
function isNodeEmpty(node) {
|
|
28050
|
+
var _a2;
|
|
28051
|
+
const text = ((_a2 = node.textContent) == null ? void 0 : _a2.replace(/\s/g, "")) || "";
|
|
28052
|
+
if (text) return false;
|
|
28053
|
+
const brElements = node.getElementsByTagName("br");
|
|
28054
|
+
if (brElements.length === 0) return true;
|
|
28055
|
+
return brElements.length === 1 && node.childNodes.length <= 2;
|
|
28056
|
+
}
|
|
27534
28057
|
const _hoisted_1$s = { class: "bagel-input" };
|
|
27535
28058
|
const _hoisted_2$i = { class: "content-area radius-05" };
|
|
27536
28059
|
const _hoisted_3$e = {
|
|
@@ -27551,58 +28074,104 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
27551
28074
|
const emit2 = __emit;
|
|
27552
28075
|
const iframe = ref();
|
|
27553
28076
|
const editor = useEditor();
|
|
27554
|
-
const
|
|
27555
|
-
const
|
|
28077
|
+
const isInitializing = ref(false);
|
|
28078
|
+
const hasInitialized = ref(false);
|
|
28079
|
+
if (props2.debug) {
|
|
28080
|
+
editor.initDebugger();
|
|
28081
|
+
}
|
|
28082
|
+
const commands = useCommands(editor.state, editor.state.debug);
|
|
28083
|
+
const debugMethods = computed(() => editor.state.debug);
|
|
27556
28084
|
const hasRTL = computed(() => /[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/.test(props2.modelValue));
|
|
28085
|
+
onUnmounted(() => {
|
|
28086
|
+
editor.cleanup();
|
|
28087
|
+
});
|
|
27557
28088
|
async function initEditor() {
|
|
27558
28089
|
var _a2;
|
|
27559
|
-
|
|
27560
|
-
|
|
28090
|
+
console.log("[initEditor] Starting, isInitializing:", isInitializing.value, "hasInitialized:", hasInitialized.value);
|
|
28091
|
+
if (isInitializing.value || !iframe.value || hasInitialized.value) {
|
|
28092
|
+
console.log("[initEditor] Skipped - already initializing/initialized or no iframe");
|
|
27561
28093
|
return;
|
|
27562
28094
|
}
|
|
27563
|
-
|
|
27564
|
-
|
|
27565
|
-
|
|
27566
|
-
|
|
27567
|
-
|
|
27568
|
-
|
|
27569
|
-
|
|
27570
|
-
|
|
27571
|
-
|
|
27572
|
-
|
|
27573
|
-
|
|
27574
|
-
|
|
27575
|
-
|
|
27576
|
-
|
|
27577
|
-
|
|
27578
|
-
|
|
27579
|
-
|
|
27580
|
-
|
|
27581
|
-
|
|
27582
|
-
|
|
27583
|
-
|
|
27584
|
-
|
|
27585
|
-
|
|
27586
|
-
|
|
28095
|
+
isInitializing.value = true;
|
|
28096
|
+
try {
|
|
28097
|
+
const editorStyles = await import("./editor-7QC0nG_c.js");
|
|
28098
|
+
const htmlContent = `
|
|
28099
|
+
<!DOCTYPE html>
|
|
28100
|
+
<html>
|
|
28101
|
+
<head>
|
|
28102
|
+
<meta charset="UTF-8">
|
|
28103
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
28104
|
+
<meta http-equiv="Content-Security-Policy" content="
|
|
28105
|
+
default-src * data: blob: 'unsafe-inline' 'unsafe-eval';
|
|
28106
|
+
img-src * data: blob:;
|
|
28107
|
+
style-src * 'unsafe-inline';
|
|
28108
|
+
script-src * 'unsafe-inline' 'unsafe-eval';
|
|
28109
|
+
frame-src * data: blob:;
|
|
28110
|
+
connect-src *;
|
|
28111
|
+
media-src *;
|
|
28112
|
+
">
|
|
28113
|
+
<base target="_blank">
|
|
28114
|
+
<style id="editor-styles">${editorStyles.default}</style>
|
|
28115
|
+
</head>
|
|
28116
|
+
<body>${props2.modelValue || ""}</body>
|
|
28117
|
+
</html>
|
|
28118
|
+
`;
|
|
28119
|
+
const doc = iframe.value.contentDocument || ((_a2 = iframe.value.contentWindow) == null ? void 0 : _a2.document);
|
|
28120
|
+
if (!doc) {
|
|
28121
|
+
console.warn("[initEditor] No document found");
|
|
28122
|
+
return;
|
|
27587
28123
|
}
|
|
27588
|
-
|
|
27589
|
-
|
|
27590
|
-
|
|
27591
|
-
|
|
27592
|
-
|
|
27593
|
-
|
|
27594
|
-
|
|
27595
|
-
|
|
27596
|
-
|
|
28124
|
+
doc.open();
|
|
28125
|
+
doc.write(htmlContent);
|
|
28126
|
+
doc.close();
|
|
28127
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
28128
|
+
doc.designMode = "on";
|
|
28129
|
+
doc.body.contentEditable = "true";
|
|
28130
|
+
doc.body.dir = hasRTL.value ? "rtl" : "ltr";
|
|
28131
|
+
editor.init(doc);
|
|
28132
|
+
useEditorKeyboard(doc, commands);
|
|
28133
|
+
if (!doc.body.firstElementChild) {
|
|
28134
|
+
const p2 = doc.createElement("p");
|
|
28135
|
+
p2.dir = doc.body.dir;
|
|
28136
|
+
p2.innerHTML = "<br>";
|
|
28137
|
+
doc.body.appendChild(p2);
|
|
28138
|
+
} else {
|
|
28139
|
+
const walker = doc.createTreeWalker(doc.body, NodeFilter.SHOW_TEXT);
|
|
28140
|
+
const textNodes = [];
|
|
28141
|
+
let node;
|
|
28142
|
+
while (node = walker.nextNode()) {
|
|
28143
|
+
if (node.parentElement === doc.body) {
|
|
28144
|
+
textNodes.push(node);
|
|
28145
|
+
}
|
|
27597
28146
|
}
|
|
27598
|
-
|
|
28147
|
+
textNodes.forEach((textNode) => {
|
|
28148
|
+
var _a3;
|
|
28149
|
+
if ((_a3 = textNode.textContent) == null ? void 0 : _a3.trim()) {
|
|
28150
|
+
const p2 = doc.createElement("p");
|
|
28151
|
+
p2.dir = doc.body.dir;
|
|
28152
|
+
p2.appendChild(textNode.cloneNode());
|
|
28153
|
+
doc.body.replaceChild(p2, textNode);
|
|
28154
|
+
} else {
|
|
28155
|
+
doc.body.removeChild(textNode);
|
|
28156
|
+
}
|
|
28157
|
+
});
|
|
28158
|
+
}
|
|
28159
|
+
doc.body.focus();
|
|
28160
|
+
hasInitialized.value = true;
|
|
28161
|
+
} catch (error) {
|
|
28162
|
+
console.error("[initEditor] Error during initialization:", error);
|
|
28163
|
+
} finally {
|
|
28164
|
+
isInitializing.value = false;
|
|
27599
28165
|
}
|
|
27600
|
-
doc.body.focus();
|
|
27601
28166
|
}
|
|
27602
|
-
watch(() => props2.modelValue, (newValue) => {
|
|
28167
|
+
watch(() => props2.modelValue, (newValue, oldValue) => {
|
|
27603
28168
|
if (newValue !== editor.state.content) {
|
|
27604
|
-
|
|
27605
|
-
|
|
28169
|
+
if (!oldValue || Math.abs(newValue.length - oldValue.length) > 50) {
|
|
28170
|
+
console.log("[watch] Significant content change, resetting initialization state");
|
|
28171
|
+
hasInitialized.value = false;
|
|
28172
|
+
editor.state.content = newValue;
|
|
28173
|
+
editor.updateState.content("html");
|
|
28174
|
+
}
|
|
27606
28175
|
}
|
|
27607
28176
|
});
|
|
27608
28177
|
watch(() => editor.state.content, (newValue) => {
|
|
@@ -27635,6 +28204,8 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
27635
28204
|
ref: iframe,
|
|
27636
28205
|
class: "editableContent",
|
|
27637
28206
|
title: "Editor",
|
|
28207
|
+
sandbox: "allow-same-origin allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-scripts allow-top-navigation allow-top-navigation-by-user-activation",
|
|
28208
|
+
src: "about:blank",
|
|
27638
28209
|
onLoad: initEditor
|
|
27639
28210
|
}, null, 544)
|
|
27640
28211
|
]),
|
|
@@ -27643,7 +28214,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
27643
28214
|
modelValue: unref(editor).state.content,
|
|
27644
28215
|
"onUpdate:modelValue": [
|
|
27645
28216
|
_cache[0] || (_cache[0] = ($event) => unref(editor).state.content = $event),
|
|
27646
|
-
_cache[1] || (_cache[1] = ($event) => unref(editor).
|
|
28217
|
+
_cache[1] || (_cache[1] = ($event) => unref(editor).updateState.content("html"))
|
|
27647
28218
|
],
|
|
27648
28219
|
language: "html"
|
|
27649
28220
|
}, null, 8, ["modelValue"])) : createCommentVNode("", true)
|
|
@@ -27692,7 +28263,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
27692
28263
|
};
|
|
27693
28264
|
}
|
|
27694
28265
|
});
|
|
27695
|
-
const RichText = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-
|
|
28266
|
+
const RichText = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-b58de58d"]]);
|
|
27696
28267
|
const _hoisted_1$r = { class: "flex gap-05" };
|
|
27697
28268
|
const _hoisted_2$h = ["disabled"];
|
|
27698
28269
|
const _hoisted_3$d = { key: 1 };
|
|
@@ -27918,7 +28489,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
27918
28489
|
_cache[6] || (_cache[6] = withKeys(withModifiers(($event) => navigate("up"), ["prevent"]), ["up"]))
|
|
27919
28490
|
]
|
|
27920
28491
|
}, [
|
|
27921
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
28492
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
27922
28493
|
key: 0,
|
|
27923
28494
|
icon: _ctx.icon
|
|
27924
28495
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
@@ -27935,7 +28506,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
27935
28506
|
})
|
|
27936
28507
|
})
|
|
27937
28508
|
])) : createCommentVNode("", true),
|
|
27938
|
-
!_ctx.disabled ? (openBlock(), createBlock(unref(
|
|
28509
|
+
!_ctx.disabled ? (openBlock(), createBlock(unref(Icon), mergeProps({
|
|
27939
28510
|
key: 3,
|
|
27940
28511
|
thin: ""
|
|
27941
28512
|
}, { icon: unref(open) ? "unfold_less" : "unfold_more" }), null, 16)) : createCommentVNode("", true)
|
|
@@ -27983,12 +28554,12 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
27983
28554
|
]
|
|
27984
28555
|
}, [
|
|
27985
28556
|
_ctx.multiselect ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
27986
|
-
isSelected(option2) ? (openBlock(), createBlock(unref(
|
|
28557
|
+
isSelected(option2) ? (openBlock(), createBlock(unref(Icon), {
|
|
27987
28558
|
key: 0,
|
|
27988
28559
|
size: 1.1,
|
|
27989
28560
|
icon: "select_check_box"
|
|
27990
28561
|
})) : createCommentVNode("", true),
|
|
27991
|
-
!isSelected(option2) ? (openBlock(), createBlock(unref(
|
|
28562
|
+
!isSelected(option2) ? (openBlock(), createBlock(unref(Icon), {
|
|
27992
28563
|
key: 1,
|
|
27993
28564
|
class: "opacity-3",
|
|
27994
28565
|
icon: "check_box_outline_blank",
|
|
@@ -31355,7 +31926,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
|
31355
31926
|
class: "flex table-row"
|
|
31356
31927
|
}, [
|
|
31357
31928
|
createElementVNode("div", _hoisted_5$7, [
|
|
31358
|
-
createVNode(unref(
|
|
31929
|
+
createVNode(unref(Icon), { icon: "more_vert" })
|
|
31359
31930
|
]),
|
|
31360
31931
|
(openBlock(true), createElementBlock(Fragment, null, renderList((_a3 = unref(entityMeta)) == null ? void 0 : _a3.fields, (field) => {
|
|
31361
31932
|
return openBlock(), createElementBlock("div", {
|
|
@@ -31372,7 +31943,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
|
31372
31943
|
], 2);
|
|
31373
31944
|
}), 128)),
|
|
31374
31945
|
createElementVNode("div", _hoisted_6$6, [
|
|
31375
|
-
createVNode(unref(
|
|
31946
|
+
createVNode(unref(Icon), {
|
|
31376
31947
|
icon: "delete",
|
|
31377
31948
|
onClick: ($event) => removeRow(index2)
|
|
31378
31949
|
}, null, 8, ["onClick"])
|
|
@@ -36130,7 +36701,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
|
|
|
36130
36701
|
class: "flex gap-05",
|
|
36131
36702
|
onClick: _cache[0] || (_cache[0] = ($event) => isRef(open) ? open.value = true : open = true)
|
|
36132
36703
|
}, [
|
|
36133
|
-
createVNode(unref(
|
|
36704
|
+
createVNode(unref(Icon), {
|
|
36134
36705
|
icon: unref(open) ? "collapse_all" : "expand_all"
|
|
36135
36706
|
}, null, 8, ["icon"]),
|
|
36136
36707
|
computedDropDownOptions.value.showFlags && unref(activeCountryCode) ? (openBlock(), createBlock(unref(Flag), {
|
|
@@ -36347,12 +36918,12 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
36347
36918
|
[vModelText, unref(inputVal)]
|
|
36348
36919
|
]),
|
|
36349
36920
|
_ctx.helptext ? (openBlock(), createElementBlock("p", _hoisted_5$5, toDisplayString(_ctx.helptext), 1)) : createCommentVNode("", true),
|
|
36350
|
-
_ctx.iconStart ? (openBlock(), createBlock(unref(
|
|
36921
|
+
_ctx.iconStart ? (openBlock(), createBlock(unref(Icon), {
|
|
36351
36922
|
key: 3,
|
|
36352
36923
|
class: "iconStart",
|
|
36353
36924
|
icon: _ctx.iconStart
|
|
36354
36925
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
36355
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
36926
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
36356
36927
|
key: 4,
|
|
36357
36928
|
icon: _ctx.icon
|
|
36358
36929
|
}, null, 8, ["icon"])) : createCommentVNode("", true)
|
|
@@ -36641,7 +37212,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36641
37212
|
download: path_key.split("/").pop()
|
|
36642
37213
|
}, null, 8, ["href", "download"]),
|
|
36643
37214
|
createElementVNode("div", _hoisted_5$4, [
|
|
36644
|
-
createVNode(unref(
|
|
37215
|
+
createVNode(unref(Icon), {
|
|
36645
37216
|
icon: "draft",
|
|
36646
37217
|
size: 1.5
|
|
36647
37218
|
}),
|
|
@@ -36684,7 +37255,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36684
37255
|
key: 0,
|
|
36685
37256
|
pathKey: path_key,
|
|
36686
37257
|
class: "multi-preview"
|
|
36687
|
-
}, null, 8, ["pathKey"])) : (openBlock(), createBlock(unref(
|
|
37258
|
+
}, null, 8, ["pathKey"])) : (openBlock(), createBlock(unref(Icon), {
|
|
36688
37259
|
key: 1,
|
|
36689
37260
|
icon: "description",
|
|
36690
37261
|
class: "multi-preview"
|
|
@@ -36711,7 +37282,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36711
37282
|
class: "multi-preview",
|
|
36712
37283
|
src: fileToUrl(file.file),
|
|
36713
37284
|
alt: ""
|
|
36714
|
-
}, null, 8, ["src"])) : (openBlock(), createBlock(unref(
|
|
37285
|
+
}, null, 8, ["src"])) : (openBlock(), createBlock(unref(Icon), {
|
|
36715
37286
|
key: 1,
|
|
36716
37287
|
icon: "description",
|
|
36717
37288
|
class: "multi-preview"
|
|
@@ -36722,7 +37293,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36722
37293
|
style: normalizeStyle([{ "--p": file.progress }, { "--b": "2px" }])
|
|
36723
37294
|
}, [
|
|
36724
37295
|
file.progress < 100 ? (openBlock(), createElementBlock("span", _hoisted_11$2, toDisplayString(file.progress.toFixed(0)), 1)) : createCommentVNode("", true),
|
|
36725
|
-
createVNode(unref(
|
|
37296
|
+
createVNode(unref(Icon), {
|
|
36726
37297
|
class: "success",
|
|
36727
37298
|
icon: "check_circle"
|
|
36728
37299
|
})
|
|
@@ -36770,7 +37341,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36770
37341
|
}, null, 8, ["pathKey"]), [
|
|
36771
37342
|
[_directive_lightbox, { src: unref(pathKeyToURL)(path_key), download: true }]
|
|
36772
37343
|
])
|
|
36773
|
-
])) : withDirectives((openBlock(), createBlock(unref(
|
|
37344
|
+
])) : withDirectives((openBlock(), createBlock(unref(Icon), {
|
|
36774
37345
|
key: 1,
|
|
36775
37346
|
size: 4,
|
|
36776
37347
|
weight: "2",
|
|
@@ -36791,7 +37362,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36791
37362
|
style: normalizeStyle([{ "--p": file.progress }, { "--b": "2px" }])
|
|
36792
37363
|
}, [
|
|
36793
37364
|
file.progress < 100 ? (openBlock(), createElementBlock("span", _hoisted_15$1, toDisplayString(file.progress.toFixed(0)), 1)) : createCommentVNode("", true),
|
|
36794
|
-
createVNode(unref(
|
|
37365
|
+
createVNode(unref(Icon), {
|
|
36795
37366
|
class: "success",
|
|
36796
37367
|
icon: "check_circle"
|
|
36797
37368
|
})
|
|
@@ -36815,7 +37386,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
36815
37386
|
browse
|
|
36816
37387
|
}, () => [
|
|
36817
37388
|
createElementVNode("p", _hoisted_16$1, [
|
|
36818
|
-
createVNode(unref(
|
|
37389
|
+
createVNode(unref(Icon), { icon: "upload_2" }),
|
|
36819
37390
|
createElementVNode("span", _hoisted_17$1, toDisplayString(_ctx.dropPlaceholder || "Drag and Drop files here or click to upload"), 1)
|
|
36820
37391
|
])
|
|
36821
37392
|
], true) : createCommentVNode("", true)
|
|
@@ -41281,6 +41852,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
41281
41852
|
};
|
|
41282
41853
|
}
|
|
41283
41854
|
});
|
|
41855
|
+
const Icon = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-b28cd148"]]);
|
|
41284
41856
|
const _hoisted_1$k = ["src", "title", "width", "height", "marginwidth", "marginheight", "csp", "scrolling", "srcset"];
|
|
41285
41857
|
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
41286
41858
|
__name: "IframeVue",
|
|
@@ -41453,7 +42025,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|
|
41453
42025
|
height: unref(normalizeDimension)(_ctx.height)
|
|
41454
42026
|
})
|
|
41455
42027
|
}, [
|
|
41456
|
-
createVNode(unref(
|
|
42028
|
+
createVNode(unref(Icon), { name: "broken_image" })
|
|
41457
42029
|
], 4)) : (openBlock(), createBlock(unref(Skeleton), {
|
|
41458
42030
|
key: 3,
|
|
41459
42031
|
class: "img-web-kit",
|
|
@@ -41483,7 +42055,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
|
|
|
41483
42055
|
onClick: nav.onClick
|
|
41484
42056
|
}, {
|
|
41485
42057
|
default: withCtx(() => [
|
|
41486
|
-
createVNode(unref(
|
|
42058
|
+
createVNode(unref(Icon), {
|
|
41487
42059
|
icon: nav.icon,
|
|
41488
42060
|
size: 1.4,
|
|
41489
42061
|
class: "m-0 line-height-14"
|
|
@@ -41585,7 +42157,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
41585
42157
|
class: "nav-button px-075 me-auto w-100"
|
|
41586
42158
|
}, {
|
|
41587
42159
|
default: withCtx(() => [
|
|
41588
|
-
createVNode(unref(
|
|
42160
|
+
createVNode(unref(Icon), {
|
|
41589
42161
|
icon: nav.icon,
|
|
41590
42162
|
size: 1.4
|
|
41591
42163
|
}, null, 8, ["icon"]),
|
|
@@ -41869,7 +42441,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
41869
42441
|
class: normalizeClass([{ active: isActive(tab) }, "bgl_tab relative z-1"]),
|
|
41870
42442
|
onClick: ($event) => selectTab(tab)
|
|
41871
42443
|
}, [
|
|
41872
|
-
typeof tab !== "string" && tab.icon ? (openBlock(), createBlock(unref(
|
|
42444
|
+
typeof tab !== "string" && tab.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
41873
42445
|
key: 0,
|
|
41874
42446
|
icon: tab.icon
|
|
41875
42447
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
@@ -41911,7 +42483,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
41911
42483
|
src: _ctx.src,
|
|
41912
42484
|
size: 40
|
|
41913
42485
|
}, null, 8, ["name", "src"])) : createCommentVNode("", true),
|
|
41914
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
42486
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
41915
42487
|
key: 1,
|
|
41916
42488
|
size: "1.2",
|
|
41917
42489
|
class: "color-primary",
|
|
@@ -42466,7 +43038,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
42466
43038
|
onClick: toggleMenu,
|
|
42467
43039
|
onKeypress: withKeys(toggleMenu, ["enter"])
|
|
42468
43040
|
}, [
|
|
42469
|
-
createVNode(unref(
|
|
43041
|
+
createVNode(unref(Icon), {
|
|
42470
43042
|
icon: "chevron_right",
|
|
42471
43043
|
class: "top-arrow"
|
|
42472
43044
|
})
|
|
@@ -42485,7 +43057,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
42485
43057
|
}
|
|
42486
43058
|
}, {
|
|
42487
43059
|
default: withCtx(() => [
|
|
42488
|
-
createVNode(unref(
|
|
43060
|
+
createVNode(unref(Icon), {
|
|
42489
43061
|
icon: link.icon
|
|
42490
43062
|
}, null, 8, ["icon"]),
|
|
42491
43063
|
createElementVNode("div", _hoisted_4$3, toDisplayString(link.label), 1)
|
|
@@ -42507,7 +43079,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
42507
43079
|
}
|
|
42508
43080
|
}, {
|
|
42509
43081
|
default: withCtx(() => [
|
|
42510
|
-
createVNode(unref(
|
|
43082
|
+
createVNode(unref(Icon), {
|
|
42511
43083
|
icon: link.icon
|
|
42512
43084
|
}, null, 8, ["icon"]),
|
|
42513
43085
|
createElementVNode("div", _hoisted_6$3, toDisplayString(link.label), 1)
|
|
@@ -42652,7 +43224,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
42652
43224
|
}, _ctx.btn), null, 16)
|
|
42653
43225
|
])) : createCommentVNode("", true)
|
|
42654
43226
|
])),
|
|
42655
|
-
_ctx.icon ? (openBlock(), createBlock(unref(
|
|
43227
|
+
_ctx.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
42656
43228
|
key: 2,
|
|
42657
43229
|
icon: _ctx.icon
|
|
42658
43230
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
@@ -42660,7 +43232,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
42660
43232
|
!unref(slots).default ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
|
|
42661
43233
|
createTextVNode(toDisplayString(_ctx.value || _ctx.modelValue), 1)
|
|
42662
43234
|
], 64)) : createCommentVNode("", true),
|
|
42663
|
-
_ctx.iconEnd ? (openBlock(), createBlock(unref(
|
|
43235
|
+
_ctx.iconEnd ? (openBlock(), createBlock(unref(Icon), {
|
|
42664
43236
|
key: 4,
|
|
42665
43237
|
icon: _ctx.iconEnd
|
|
42666
43238
|
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
@@ -43241,7 +43813,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
43241
43813
|
createElementVNode("span", {
|
|
43242
43814
|
onClick: ($event) => col.sortable && sortByColumn(col.key)
|
|
43243
43815
|
}, toDisplayString(col.label || col.key), 9, _hoisted_6$1),
|
|
43244
|
-
sortColumn.value === col.key ? (openBlock(), createBlock(unref(
|
|
43816
|
+
sortColumn.value === col.key ? (openBlock(), createBlock(unref(Icon), {
|
|
43245
43817
|
key: 0,
|
|
43246
43818
|
class: normalizeClass(["line-height-0 transition-400", { "rotate-180": sortDirection.value === "desc" }]),
|
|
43247
43819
|
name: "keyboard_arrow_down"
|
|
@@ -43323,7 +43895,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
43323
43895
|
createElementVNode("span", {
|
|
43324
43896
|
onClick: ($event) => col.sortable && sortByColumn(col.key)
|
|
43325
43897
|
}, toDisplayString(col.label || col.key), 9, _hoisted_17),
|
|
43326
|
-
sortColumn.value === col.key ? (openBlock(), createBlock(unref(
|
|
43898
|
+
sortColumn.value === col.key ? (openBlock(), createBlock(unref(Icon), {
|
|
43327
43899
|
key: 0,
|
|
43328
43900
|
name: "keyboard_arrow_down",
|
|
43329
43901
|
class: normalizeClass(["line-height-0 inline-block", { "rotate-180": sortColumn.value === col.key && sortDirection.value === "desc" }])
|
|
@@ -44397,13 +44969,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
44397
44969
|
title: item == null ? void 0 : item.name,
|
|
44398
44970
|
class: "vw90"
|
|
44399
44971
|
}, null, 8, _hoisted_5)) : (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
44400
|
-
createVNode(unref(
|
|
44972
|
+
createVNode(unref(Icon), {
|
|
44401
44973
|
class: "m-0 m_none",
|
|
44402
44974
|
icon: "draft",
|
|
44403
44975
|
size: 10,
|
|
44404
44976
|
weight: "12"
|
|
44405
44977
|
}),
|
|
44406
|
-
createVNode(unref(
|
|
44978
|
+
createVNode(unref(Icon), {
|
|
44407
44979
|
class: "m-0 none m_block m_-mb-1",
|
|
44408
44980
|
icon: "draft",
|
|
44409
44981
|
size: 4,
|
|
@@ -44442,7 +45014,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
44442
45014
|
src: item.src,
|
|
44443
45015
|
alt: "",
|
|
44444
45016
|
onClick: ($event) => selectItem(index2)
|
|
44445
|
-
}, null, 8, ["src", "class", "onClick"])) : (openBlock(), createBlock(unref(
|
|
45017
|
+
}, null, 8, ["src", "class", "onClick"])) : (openBlock(), createBlock(unref(Icon), {
|
|
44446
45018
|
key: 1,
|
|
44447
45019
|
class: normalizeClass(["thumbnail object-fit-cover hover opacity-5 ed flex bg-popup justify-content-center align-items-center flex-shrink-0", { active: unref(currentIndex) === index2 }]),
|
|
44448
45020
|
icon: "description",
|
|
@@ -45273,7 +45845,7 @@ export {
|
|
|
45273
45845
|
Flag,
|
|
45274
45846
|
IMAGE_FORMATS,
|
|
45275
45847
|
IMAGE_FORMATS_REGEXP,
|
|
45276
|
-
|
|
45848
|
+
Icon,
|
|
45277
45849
|
_sfc_main$q as IframeVue,
|
|
45278
45850
|
Image$1 as Image,
|
|
45279
45851
|
JSONInput,
|