wimui 0.64.4 → 0.64.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/ai/code-diff-viewer.js +1 -2
  2. package/dist/ai/interactive-graph.js +1 -2
  3. package/dist/ai/markdown-renderer.js +1 -2
  4. package/dist/ai/streaming-text.js +1 -2
  5. package/dist/components/_internal/observeMove.cjs +1 -1
  6. package/dist/components/_internal/observeMove.js +9 -10
  7. package/dist/components/ai/SourceCitation/SourceCitation.cjs +1 -1
  8. package/dist/components/ai/SourceCitation/SourceCitation.js +1 -1
  9. package/dist/components/charts/SankeyChart/SankeyChart.cjs +1 -1
  10. package/dist/components/charts/SankeyChart/SankeyChart.js +1 -5
  11. package/dist/components/data-display/Accordion/Accordion.cjs +1 -1
  12. package/dist/components/data-display/Accordion/Accordion.js +1 -5
  13. package/dist/components/data-display/Carousel/Carousel.cjs +1 -1
  14. package/dist/components/data-display/Carousel/Carousel.js +2 -14
  15. package/dist/components/data-display/NodeGraph/NodeGraph.cjs +1 -1
  16. package/dist/components/data-display/NodeGraph/NodeGraph.js +1 -7
  17. package/dist/components/data-display/ScheduleView/ScheduleView.cjs +1 -1
  18. package/dist/components/data-display/ScheduleView/ScheduleView.js +3 -1
  19. package/dist/components/data-display/SwipeAction/SwipeAction.cjs +1 -1
  20. package/dist/components/data-display/SwipeAction/SwipeAction.js +9 -10
  21. package/dist/components/data-display/TreeDiagram/TreeDiagram.cjs +1 -1
  22. package/dist/components/data-display/TreeDiagram/TreeDiagram.js +94 -73
  23. package/dist/components/feedback/Tour/Tour.cjs +1 -1
  24. package/dist/components/feedback/Tour/Tour.js +2 -6
  25. package/dist/components/form/Button/Button.cjs +1 -1
  26. package/dist/components/form/Button/Button.js +58 -55
  27. package/dist/components/form/Combobox/Combobox.cjs +1 -1
  28. package/dist/components/form/Combobox/Combobox.js +2 -5
  29. package/dist/components/form/Dropzone/Dropzone.cjs +1 -1
  30. package/dist/components/form/Dropzone/Dropzone.js +83 -68
  31. package/dist/components/form/FileUpload/FileUpload.cjs +1 -1
  32. package/dist/components/form/FileUpload/FileUpload.js +19 -15
  33. package/dist/components/form/FloatButton/FloatButton.cjs +1 -1
  34. package/dist/components/form/FloatButton/FloatButton.d.ts +1 -1
  35. package/dist/components/form/FloatButton/FloatButton.js +9 -8
  36. package/dist/components/form/InlineEdit/InlineEdit.cjs +1 -1
  37. package/dist/components/form/InlineEdit/InlineEdit.js +76 -73
  38. package/dist/components/form/RichTextEditor/RichTextEditor.cjs +1 -1
  39. package/dist/components/form/RichTextEditor/RichTextEditor.js +117 -129
  40. package/dist/components/form/SegmentedControl/SegmentedControl.cjs +1 -1
  41. package/dist/components/form/SegmentedControl/SegmentedControl.js +1 -1
  42. package/dist/components/form/ToggleGroup/ToggleGroup.cjs +1 -1
  43. package/dist/components/form/ToggleGroup/ToggleGroup.js +1 -1
  44. package/dist/components/form/TreeSelect/TreeSelect.cjs +1 -1
  45. package/dist/components/form/TreeSelect/TreeSelect.js +1 -7
  46. package/dist/components/layout/InteractiveArea/InteractiveArea.cjs +1 -1
  47. package/dist/components/layout/InteractiveArea/InteractiveArea.js +1 -5
  48. package/dist/components/media/Audio/hooks/useAudioPlayer.cjs +1 -1
  49. package/dist/components/media/Audio/hooks/useAudioPlayer.js +1 -9
  50. package/dist/components/media/Lightbox/Lightbox.cjs +1 -1
  51. package/dist/components/media/Lightbox/Lightbox.js +5 -9
  52. package/dist/components/navigation/CommandPalette/CommandPalette.cjs +1 -1
  53. package/dist/components/navigation/CommandPalette/CommandPalette.js +1 -8
  54. package/dist/components/navigation/TabNavigation/TabNavigation.cjs +1 -1
  55. package/dist/components/navigation/TabNavigation/TabNavigation.js +1 -5
  56. package/dist/data-display/json-diff-viewer.js +1 -2
  57. package/dist/data-display/markdown.js +1 -2
  58. package/dist/data-display/node-graph.js +1 -2
  59. package/dist/data-display/qr-code.js +1 -2
  60. package/dist/data-display/schedule-view.js +1 -2
  61. package/dist/form/rich-text-editor.js +1 -2
  62. package/dist/llms-full.txt +2 -2
  63. package/dist/llms.txt +1 -1
  64. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
  65. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +18 -17
  66. package/dist/rhf/zod.js +1 -2
  67. package/dist/wimui.umd.js +5 -5
  68. package/package.json +44 -44
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/common.cjs"),r=require("../FieldTemplate/FieldTemplate.cjs"),i=require("../Input/Input.cjs"),a=require("../IconButton/IconButton.cjs"),o=require("./inline-edit.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=s.default.forwardRef(({value:e,defaultValue:u,onChange:d,onSave:f,onCancel:p,onEdit:m,placeholder:h,disabled:g=!1,fullWidth:_=!1,label:v,className:y,"aria-label":b,"aria-labelledby":x,"aria-describedby":S,...C},w)=>{let{t:T}=t.useWimTranslation(n.commonNs),[E,D]=(0,s.useState)(!1),O=(0,s.useId)(),k=v?`wim-inline-edit-${O}-label`:void 0,A=`wim-inline-edit-${O}-text`,[j,M]=(0,s.useState)(u??``),[N,P]=(0,s.useState)(u??``),F=(0,s.useRef)(null),I=e!==void 0,L=I?e:N,R=()=>{g||(I||P(j),D(!0),m?.())},z=()=>{g||(I||M(L),D(!1),f?.(L))},B=()=>{g||(I||P(j),D(!1),p?.())},V=e=>{let t=e.target.value;I||P(t),d?.(t)},H=e=>{e.key===`Enter`?(e.preventDefault(),z()):e.key===`Escape`&&(e.preventDefault(),B())};return(0,s.useEffect)(()=>{E&&F.current&&F.current.focus()},[E]),(0,l.jsx)(r.FieldTemplate,{label:v,labelId:k,className:y,children:(0,l.jsx)(`div`,{ref:w,className:(0,c.default)(`wim-inline-edit`,o.default.root,_&&o.default.fullWidth,g&&o.default.disabled),...C,children:E?(0,l.jsxs)(`div`,{className:o.default.editWrapper,children:[(0,l.jsx)(i.Input,{ref:F,value:L,onChange:V,onKeyDown:H,disabled:g,placeholder:h,"aria-label":k?void 0:b,"aria-labelledby":k??x,"aria-describedby":S,fullWidth:_,className:o.default.input}),(0,l.jsxs)(`div`,{className:o.default.editActions,children:[(0,l.jsx)(a.IconButton,{iconName:`CheckIcon`,intent:`success`,variant:`outline`,"aria-label":T(`action.save`),onClick:z,disabled:g}),(0,l.jsx)(a.IconButton,{iconName:`CloseIcon`,intent:`default`,variant:`outline`,"aria-label":T(`action.cancel`),onClick:B,disabled:g})]})]}):(0,l.jsxs)(`div`,{className:o.default.preview,onClick:R,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),R())},tabIndex:g?-1:0,role:`button`,"aria-label":k?void 0:b,"aria-labelledby":k?`${k} ${A}`:x,"aria-describedby":S,"aria-disabled":g,children:[(0,l.jsx)(`span`,{id:A,className:(0,c.default)(o.default.text,!L&&o.default.placeholder),children:L||h||`\xA0`}),(0,l.jsx)(`span`,{className:o.default.editIconWrapper,children:(0,l.jsx)(a.IconButton,{iconName:`EditIcon`,variant:`ghost`,size:`sm`,tabIndex:-1,"aria-label":T(`action.edit`),"aria-hidden":`true`,asChild:!0,children:(0,l.jsx)(`span`,{})})})]})})})});u.displayName=`InlineEdit`,exports.InlineEdit=u;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/common.cjs"),r=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),i=require("../FieldTemplate/FieldTemplate.cjs"),a=require("../Input/Input.cjs"),o=require("../IconButton/IconButton.cjs"),s=require("./inline-edit.module.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=c.default.forwardRef(({value:e,defaultValue:d,onChange:f,onSave:p,onCancel:m,onEdit:h,placeholder:g,disabled:_=!1,fullWidth:v=!1,label:y,className:b,"aria-label":x,"aria-labelledby":S,"aria-describedby":C,...w},T)=>{let{t:E}=t.useWimTranslation(n.commonNs),[D,O]=(0,c.useState)(!1),k=(0,c.useId)(),A=y?`wim-inline-edit-${k}-label`:void 0,j=`wim-inline-edit-${k}-text`,M=`wim-inline-edit-${k}-name`,N=A??S??(x?M:void 0),[P,F]=(0,c.useState)(d??``),[I,L]=(0,c.useState)(d??``),R=(0,c.useRef)(null),z=e!==void 0,B=z?e:I,V=()=>{_||(z||L(P),O(!0),h?.())},H=()=>{_||(z||F(B),O(!1),p?.(B))},U=()=>{_||(z||L(P),O(!1),m?.())},W=e=>{let t=e.target.value;z||L(t),f?.(t)},G=e=>{e.key===`Enter`?(e.preventDefault(),H()):e.key===`Escape`&&(e.preventDefault(),U())};return(0,c.useEffect)(()=>{D&&R.current&&R.current.focus()},[D]),(0,u.jsx)(i.FieldTemplate,{label:y,labelId:A,className:b,children:(0,u.jsxs)(`div`,{ref:T,className:(0,l.default)(`wim-inline-edit`,s.default.root,v&&s.default.fullWidth,_&&s.default.disabled),...w,children:[!D&&N===M&&(0,u.jsx)(r.VisuallyHidden,{id:M,children:x}),D?(0,u.jsxs)(`div`,{className:s.default.editWrapper,children:[(0,u.jsx)(a.Input,{ref:R,value:B,onChange:W,onKeyDown:G,disabled:_,placeholder:g,"aria-label":A?void 0:x,"aria-labelledby":A??S,"aria-describedby":C,fullWidth:v,className:s.default.input}),(0,u.jsxs)(`div`,{className:s.default.editActions,children:[(0,u.jsx)(o.IconButton,{iconName:`CheckIcon`,intent:`success`,variant:`outline`,"aria-label":E(`action.save`),onClick:H,disabled:_}),(0,u.jsx)(o.IconButton,{iconName:`CloseIcon`,intent:`default`,variant:`outline`,"aria-label":E(`action.cancel`),onClick:U,disabled:_})]})]}):(0,u.jsxs)(`div`,{className:s.default.preview,onClick:V,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),V())},tabIndex:_?-1:0,role:`button`,"aria-labelledby":N?`${N} ${j}`:void 0,"aria-describedby":C,"aria-disabled":_,children:[(0,u.jsx)(`span`,{id:j,className:(0,l.default)(s.default.text,!B&&s.default.placeholder),children:B||g||`\xA0`}),(0,u.jsx)(`span`,{className:s.default.editIconWrapper,children:(0,u.jsx)(o.IconButton,{iconName:`EditIcon`,variant:`ghost`,size:`sm`,tabIndex:-1,"aria-label":E(`action.edit`),"aria-hidden":`true`,asChild:!0,children:(0,u.jsx)(`span`,{})})})]})]})})});d.displayName=`InlineEdit`,exports.InlineEdit=d;
@@ -1,102 +1,105 @@
1
1
  "use client";
2
2
  import { useWimTranslation as e } from "../../../i18n/useWimTranslation.js";
3
3
  import { commonNs as t } from "../../../i18n/generated/common.js";
4
- import { FieldTemplate as n } from "../FieldTemplate/FieldTemplate.js";
5
- import { Input as r } from "../Input/Input.js";
6
- import { IconButton as i } from "../IconButton/IconButton.js";
7
- import a from "./inline-edit.module.js";
8
- import o, { useEffect as s, useId as c, useRef as l, useState as u } from "react";
9
- import d from "classnames";
10
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
4
+ import { VisuallyHidden as n } from "../../layout/VisuallyHidden/VisuallyHidden.js";
5
+ import { FieldTemplate as r } from "../FieldTemplate/FieldTemplate.js";
6
+ import { Input as i } from "../Input/Input.js";
7
+ import { IconButton as a } from "../IconButton/IconButton.js";
8
+ import o from "./inline-edit.module.js";
9
+ import s, { useEffect as c, useId as l, useRef as u, useState as d } from "react";
10
+ import f from "classnames";
11
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
11
12
  //#region src/components/form/InlineEdit/InlineEdit.tsx
12
- var m = o.forwardRef(({ value: o, defaultValue: m, onChange: h, onSave: g, onCancel: _, onEdit: v, placeholder: y, disabled: b = !1, fullWidth: x = !1, label: S, className: C, "aria-label": w, "aria-labelledby": T, "aria-describedby": E, ...D }, O) => {
13
- let { t: k } = e(t), [A, j] = u(!1), M = c(), N = S ? `wim-inline-edit-${M}-label` : void 0, P = `wim-inline-edit-${M}-text`, [F, I] = u(m ?? ""), [L, R] = u(m ?? ""), z = l(null), B = o !== void 0, V = B ? o : L, H = () => {
14
- b || (B || R(F), j(!0), v?.());
15
- }, U = () => {
16
- b || (B || I(V), j(!1), g?.(V));
17
- }, W = () => {
18
- b || (B || R(F), j(!1), _?.());
19
- }, G = (e) => {
13
+ var h = s.forwardRef(({ value: s, defaultValue: h, onChange: g, onSave: _, onCancel: v, onEdit: y, placeholder: b, disabled: x = !1, fullWidth: S = !1, label: C, className: w, "aria-label": T, "aria-labelledby": E, "aria-describedby": D, ...O }, k) => {
14
+ let { t: A } = e(t), [j, M] = d(!1), N = l(), P = C ? `wim-inline-edit-${N}-label` : void 0, F = `wim-inline-edit-${N}-text`, I = `wim-inline-edit-${N}-name`, L = P ?? E ?? (T ? I : void 0), [R, z] = d(h ?? ""), [B, V] = d(h ?? ""), H = u(null), U = s !== void 0, W = U ? s : B, G = () => {
15
+ x || (U || V(R), M(!0), y?.());
16
+ }, K = () => {
17
+ x || (U || z(W), M(!1), _?.(W));
18
+ }, q = () => {
19
+ x || (U || V(R), M(!1), v?.());
20
+ }, J = (e) => {
20
21
  let t = e.target.value;
21
- B || R(t), h?.(t);
22
- }, K = (e) => {
23
- e.key === "Enter" ? (e.preventDefault(), U()) : e.key === "Escape" && (e.preventDefault(), W());
22
+ U || V(t), g?.(t);
23
+ }, Y = (e) => {
24
+ e.key === "Enter" ? (e.preventDefault(), K()) : e.key === "Escape" && (e.preventDefault(), q());
24
25
  };
25
- return s(() => {
26
- A && z.current && z.current.focus();
27
- }, [A]), /* @__PURE__ */ f(n, {
28
- label: S,
29
- labelId: N,
30
- className: C,
31
- children: /* @__PURE__ */ f("div", {
32
- ref: O,
33
- className: d("wim-inline-edit", a.root, x && a.fullWidth, b && a.disabled),
34
- ...D,
35
- children: A ? /* @__PURE__ */ p("div", {
36
- className: a.editWrapper,
37
- children: [/* @__PURE__ */ f(r, {
38
- ref: z,
39
- value: V,
40
- onChange: G,
41
- onKeyDown: K,
42
- disabled: b,
43
- placeholder: y,
44
- "aria-label": N ? void 0 : w,
45
- "aria-labelledby": N ?? T,
46
- "aria-describedby": E,
47
- fullWidth: x,
48
- className: a.input
49
- }), /* @__PURE__ */ p("div", {
50
- className: a.editActions,
51
- children: [/* @__PURE__ */ f(i, {
26
+ return c(() => {
27
+ j && H.current && H.current.focus();
28
+ }, [j]), /* @__PURE__ */ p(r, {
29
+ label: C,
30
+ labelId: P,
31
+ className: w,
32
+ children: /* @__PURE__ */ m("div", {
33
+ ref: k,
34
+ className: f("wim-inline-edit", o.root, S && o.fullWidth, x && o.disabled),
35
+ ...O,
36
+ children: [!j && L === I && /* @__PURE__ */ p(n, {
37
+ id: I,
38
+ children: T
39
+ }), j ? /* @__PURE__ */ m("div", {
40
+ className: o.editWrapper,
41
+ children: [/* @__PURE__ */ p(i, {
42
+ ref: H,
43
+ value: W,
44
+ onChange: J,
45
+ onKeyDown: Y,
46
+ disabled: x,
47
+ placeholder: b,
48
+ "aria-label": P ? void 0 : T,
49
+ "aria-labelledby": P ?? E,
50
+ "aria-describedby": D,
51
+ fullWidth: S,
52
+ className: o.input
53
+ }), /* @__PURE__ */ m("div", {
54
+ className: o.editActions,
55
+ children: [/* @__PURE__ */ p(a, {
52
56
  iconName: "CheckIcon",
53
57
  intent: "success",
54
58
  variant: "outline",
55
- "aria-label": k("action.save"),
56
- onClick: U,
57
- disabled: b
58
- }), /* @__PURE__ */ f(i, {
59
+ "aria-label": A("action.save"),
60
+ onClick: K,
61
+ disabled: x
62
+ }), /* @__PURE__ */ p(a, {
59
63
  iconName: "CloseIcon",
60
64
  intent: "default",
61
65
  variant: "outline",
62
- "aria-label": k("action.cancel"),
63
- onClick: W,
64
- disabled: b
66
+ "aria-label": A("action.cancel"),
67
+ onClick: q,
68
+ disabled: x
65
69
  })]
66
70
  })]
67
- }) : /* @__PURE__ */ p("div", {
68
- className: a.preview,
69
- onClick: H,
71
+ }) : /* @__PURE__ */ m("div", {
72
+ className: o.preview,
73
+ onClick: G,
70
74
  onKeyDown: (e) => {
71
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), H());
75
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), G());
72
76
  },
73
- tabIndex: b ? -1 : 0,
77
+ tabIndex: x ? -1 : 0,
74
78
  role: "button",
75
- "aria-label": N ? void 0 : w,
76
- "aria-labelledby": N ? `${N} ${P}` : T,
77
- "aria-describedby": E,
78
- "aria-disabled": b,
79
- children: [/* @__PURE__ */ f("span", {
80
- id: P,
81
- className: d(a.text, !V && a.placeholder),
82
- children: V || y || "\xA0"
83
- }), /* @__PURE__ */ f("span", {
84
- className: a.editIconWrapper,
85
- children: /* @__PURE__ */ f(i, {
79
+ "aria-labelledby": L ? `${L} ${F}` : void 0,
80
+ "aria-describedby": D,
81
+ "aria-disabled": x,
82
+ children: [/* @__PURE__ */ p("span", {
83
+ id: F,
84
+ className: f(o.text, !W && o.placeholder),
85
+ children: W || b || "\xA0"
86
+ }), /* @__PURE__ */ p("span", {
87
+ className: o.editIconWrapper,
88
+ children: /* @__PURE__ */ p(a, {
86
89
  iconName: "EditIcon",
87
90
  variant: "ghost",
88
91
  size: "sm",
89
92
  tabIndex: -1,
90
- "aria-label": k("action.edit"),
93
+ "aria-label": A("action.edit"),
91
94
  "aria-hidden": "true",
92
95
  asChild: !0,
93
- children: /* @__PURE__ */ f("span", {})
96
+ children: /* @__PURE__ */ p("span", {})
94
97
  })
95
98
  })]
96
- })
99
+ })]
97
100
  })
98
101
  });
99
102
  });
100
- m.displayName = "InlineEdit";
103
+ h.displayName = "InlineEdit";
101
104
  //#endregion
102
- export { m as InlineEdit };
105
+ export { h as InlineEdit };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/components.cjs"),r=require("../../../icon/bold.cjs"),i=require("../../../icon/eraser.cjs"),a=require("../../../icon/image.cjs"),o=require("../../../icon/italic.cjs"),ee=require("../../../icon/link.cjs"),te=require("../../../icon/list-ordered.cjs"),ne=require("../../../icon/list.cjs"),re=require("../../../icon/strikethrough.cjs"),ie=require("../../../icon/underline.cjs"),ae=require("../../../icon/unlink.cjs"),s=require("../../media/Icon/Icon.cjs"),c=require("../Button/Button.cjs"),oe=require("../FieldTemplate/FieldTemplate.cjs"),l=require("../Input/Input.cjs"),u=require("../../overlay/Dialog/Dialog.cjs"),d=require("./safeUrl.cjs"),f=require("./markdown.cjs"),p=require("./rich-text-editor.module.cjs");let m=require("react");m=e.__toESM(m,1);let h=require("classnames");h=e.__toESM(h,1);let g=require("react/jsx-runtime"),_=require("@tiptap/react"),se=require("@tiptap/core"),v=require("@tiptap/starter-kit"),y=require("@tiptap/extensions"),ce=require("@tiptap/extension-image");var le=[`bold`,`italic`,`underline`,`strikethrough`,`separator`,`h1`,`h2`,`h3`,`separator`,`ul`,`ol`,`separator`,`link`,`unlink`,`separator`,`removeFormat`],ue=ce.Image.extend({parseHTML(){return[{tag:`img[src]`,getAttrs:e=>d.isSafeImageUrl(e.getAttribute(`src`))?null:!1}]}}),de=(e,t,n)=>[v.StarterKit.configure({heading:{levels:[1,2,3]},blockquote:!1,code:!1,codeBlock:!1,horizontalRule:!1,trailingNode:!1,...t===`markdown`?{underline:!1}:{},link:{openOnClick:!1,autolink:!1,linkOnPaste:!1,isAllowedUri:e=>d.isSafeLinkUrl(e),HTMLAttributes:{target:null,rel:null}}}),ue.configure({inline:!1,allowBase64:!1}),y.Placeholder.configure({placeholder:e}),...t===`markdown`?f.createMarkdownExtensions(n):[]],fe=(e,t)=>e.isEmpty?``:t===`markdown`?e.getMarkdown():e.getHTML(),pe=(e,t,n)=>n===`markdown`?f.markdownToHtml(e,t):t,me=m.default.memo(({onClick:e,active:t,disabled:n,title:r,tabIndex:i,onFocus:a,buttonRef:o,children:ee})=>(0,g.jsx)(`button`,{ref:o,type:`button`,className:(0,h.default)(p.default.toolbarBtn,t&&p.default.active),onClick:e,onFocus:a,disabled:n,title:r,"aria-label":r,"aria-pressed":t,tabIndex:i,children:ee}));me.displayName=`ToolbarButton`;var he=({value:e,defaultValue:f=``,onChange:v,placeholder:y,disabled:ce,intent:ue=`default`,variant:he=`outline`,fullWidth:b=!1,width:x,minHeight:S=200,label:C,error:w,required:T,layout:ge,className:_e,id:ve,toolbar:E=le,labels:ye={},"aria-label":be,"aria-labelledby":D,onImageUpload:O,format:xe=`html`})=>{let{t:k}=t.useWimTranslation(n.componentsNs),{bold:Se=k(`a11y.rte_bold`),italic:Ce=k(`a11y.rte_italic`),underline:we=k(`a11y.rte_underline`),strikethrough:Te=k(`a11y.rte_strikethrough`),h1:Ee=k(`a11y.rte_h1`),h2:De=k(`a11y.rte_h2`),h3:Oe=k(`a11y.rte_h3`),ul:ke=k(`a11y.rte_ul`),ol:Ae=k(`a11y.rte_ol`),link:je=k(`a11y.rte_link`),unlink:Me=k(`a11y.rte_unlink`),removeFormat:Ne=k(`a11y.rte_remove_format`),toolbar:Pe=k(`a11y.rte_toolbar`),linkPrompt:Fe=k(`a11y.rte_link_prompt`),linkApply:Ie=k(`a11y.rte_link_apply`),linkCancel:Le=k(`a11y.rte_link_cancel`),linkInvalid:Re=k(`a11y.rte_link_invalid`),image:ze=k(`a11y.rte_image`),imageUrl:Be=k(`a11y.rte_image_url`),imageAlt:Ve=k(`a11y.rte_image_alt`),imageAltHint:He=k(`a11y.rte_image_alt_hint`),imageUpload:Ue=k(`a11y.rte_image_upload`),imageUploadFailed:A=k(`a11y.rte_image_upload_failed`),imageInvalid:We=k(`a11y.rte_image_invalid`)}=ye,Ge=m.default.useId(),j=ve||`wim-rte-${Ge}`,M=w?`${j}-error`:void 0,N=C?`${j}-label`:void 0,P=!!ce,F=w?`danger`:ue,Ke=typeof x==`string`&&[`xs`,`sm`,`md`,`lg`,`xl`].includes(x),qe=x!==void 0&&!Ke&&!b,Je=Ke&&!b?x:void 0,Ye=Je?p.default[`width${Je.charAt(0).toUpperCase()}${Je.slice(1)}`]:void 0,I=m.default.useRef(e??f),Xe=m.default.useRef(v);m.default.useEffect(()=>{Xe.current=v},[v]);let Ze=m.default.useMemo(()=>{let e={id:j,class:p.default.content,role:`textbox`,"aria-multiline":`true`,style:`min-height: ${typeof S==`number`?`${S}px`:S}`,tabindex:P?`-1`:`0`},t=be??(C||D?void 0:k(`a11y.rte_editor`)),n=D??(C?N:void 0);return t&&(e[`aria-label`]=t),n&&(e[`aria-labelledby`]=n),F===`danger`&&(e[`aria-invalid`]=`true`),M&&(e[`aria-describedby`]=M),T&&(e[`aria-required`]=`true`),P&&(e[`aria-disabled`]=`true`),y&&(e[`aria-placeholder`]=y),e},[j,S,P,be,C,D,N,F,M,T,y,k]),L=m.default.useRef(O);m.default.useEffect(()=>{L.current=O},[O]);let[Qe,$e]=m.default.useState(void 0),et=m.default.useRef(A);m.default.useEffect(()=>{et.current=A},[A]);let R=m.default.useCallback(async(e,t,n)=>{let r=L.current;if(r){$e(void 0);for(let i of t)try{let t=await r(i);if(!d.isSafeImageUrl(t))throw Error(`URL not allowed`);if(e.isDestroyed)return;let a=e.chain().focus();(n===void 0?a:a.setTextSelection(n)).setImage({src:t,alt:``}).run()}catch{$e(et.current)}}},[]),tt=e=>Array.from(e??[]).filter(e=>e.type.startsWith(`image/`)),z=m.default.useRef({ed:null}),nt=m.default.useCallback((e,t)=>{let n=tt(t.clipboardData?.files),r=z.current.ed;return!L.current||n.length===0||!r?!1:(t.preventDefault(),R(r,n),!0)},[R]),rt=m.default.useCallback((e,t,n,r)=>{let i=tt(t.dataTransfer?.files),a=z.current.ed;if(r||!L.current||i.length===0||!a)return!1;t.preventDefault();let o=e.posAtCoords({left:t.clientX,top:t.clientY});return R(a,i,o?.pos),!0},[R]),B=m.default.useMemo(()=>({attributes:Ze,handlePaste:nt,handleDrop:rt}),[Ze,nt,rt]),[V]=m.default.useState(xe),it=e??f,H=(0,_.useEditor)({extensions:de(y??``,V,V===`markdown`?it:void 0),content:V===`markdown`?``:it,editable:!P,immediatelyRender:!1,editorProps:B,onUpdate:({editor:e})=>{let t=fe(e,V);t!==I.current&&(I.current=t,Xe.current?.(t))}});m.default.useEffect(()=>{H&&!H.isDestroyed&&H.setOptions({editorProps:B})},[H,B]),m.default.useEffect(()=>{z.current.ed=H},[H]),m.default.useEffect(()=>{H&&!H.isDestroyed&&H.setEditable(!P,!1)},[H,P]),m.default.useEffect(()=>{if(!H||H.isDestroyed)return;let e=H.extensionManager.extensions.find(e=>e.name===`placeholder`);e&&e.options.placeholder!==(y??``)&&(e.options.placeholder=y??``,H.view.dispatch(H.state.tr))},[H,y]),m.default.useEffect(()=>{if(!H||H.isDestroyed||e===void 0||e===I.current||e===fe(H,V))return;I.current=e;let t=(0,se.createDocument)(pe(H,e,V),H.schema);t.eq(H.state.doc)||H.commands.setContent(t.toJSON(),{emitUpdate:!1})},[H,e,V]);let at=(0,_.useEditorState)({editor:H,selector:({editor:e})=>({bold:!!e?.isActive(`bold`),italic:!!e?.isActive(`italic`),underline:!!e?.schema.marks.underline&&e.isActive(`underline`),strikethrough:!!e?.isActive(`strike`),h1:!!e?.isActive(`heading`,{level:1}),h2:!!e?.isActive(`heading`,{level:2}),h3:!!e?.isActive(`heading`,{level:3}),ul:!!e?.isActive(`bulletList`),ol:!!e?.isActive(`orderedList`),image:!!e?.isActive(`image`)})}),U=m.default.useCallback(e=>{if(P||!H)return;let t=document.activeElement;e(H),t instanceof HTMLElement&&t.closest(`[role="toolbar"]`)&&requestAnimationFrame(()=>{t.isConnected&&document.activeElement!==t&&t.focus({preventScroll:!0})})},[H,P]),ot=m.default.useCallback(()=>{U(e=>{let{from:t,to:n,empty:r}=e.state.selection,i=e.chain().focus();r&&i.selectAll(),i.unsetBold().unsetItalic().unsetStrike().clearNodes(),e.schema.marks.underline&&i.unsetUnderline(),r&&i.setTextSelection({from:t,to:n}),i.run()})},[U]),[st,W]=m.default.useState(!1),[G,ct]=m.default.useState(`https://`),[lt,K]=m.default.useState(void 0),ut=m.default.useCallback(()=>{if(P||!H)return;let{from:e,to:t}=H.state.selection,n=H.state.doc.textBetween(e,t,` `),r=H.getAttributes(`link`).href;ct(r??(n.startsWith(`http`)?n:`https://`)),K(void 0),W(!0)},[H,P]),dt=m.default.useCallback(()=>{let e=G.trim();if(!e){W(!1);return}if(!d.isSafeLinkUrl(e)){K(Re);return}W(!1),U(t=>{t.state.selection.empty&&!t.isActive(`link`)?t.chain().focus().insertContent({type:`text`,text:e,marks:[{type:`link`,attrs:{href:e}}]}).run():t.chain().focus().extendMarkRange(`link`).setLink({href:e}).run()})},[G,Re,U]),[ft,q]=m.default.useState(!1),[J,Y]=m.default.useState(``),[X,pt]=m.default.useState(``),[mt,Z]=m.default.useState(void 0),[ht,gt]=m.default.useState(!1),_t=m.default.useRef(null),vt=`${j}-image-alt-hint`,yt=m.default.useCallback(()=>{if(P||!H)return;let e=H.isActive(`image`)?H.getAttributes(`image`):{};Y(e.src??``),pt(e.alt??``),Z(void 0),q(!0)},[H,P]),bt=m.default.useCallback(()=>{let e=J.trim();if(!e){q(!1);return}if(!d.isSafeImageUrl(e)){Z(We);return}q(!1),U(t=>t.chain().focus().setImage({src:e,alt:X.trim()}).run())},[J,X,We,U]),xt=m.default.useCallback(async e=>{let t=e.target.files?.[0];if(e.target.value=``,t&&O){gt(!0),Z(void 0);try{let e=await O(t);if(!d.isSafeImageUrl(e))throw Error(`URL not allowed`);Y(e)}catch{Z(A)}finally{gt(!1)}}},[O,A]),St=m.default.useRef([]),[Q,Ct]=m.default.useState(0),$=m.default.useMemo(()=>{let e=V===`markdown`?E.filter(e=>e!==`underline`):E;return e.filter((t,n)=>t!==`separator`||n>0&&n<e.length-1&&e[n-1]!==`separator`)},[E,V]),wt=m.default.useMemo(()=>$.filter(e=>e!==`separator`),[$]),Tt=m.default.useMemo(()=>$.map((e,t)=>e===`separator`?-1:$.slice(0,t).filter(e=>e!==`separator`).length),[$]),Et=m.default.useCallback(e=>{let t=wt.length;if(t===0)return;let n;e.key===`ArrowRight`?n=(Q+1)%t:e.key===`ArrowLeft`?n=(Q-1+t)%t:e.key===`Home`?n=0:e.key===`End`&&(n=t-1),n!==void 0&&(e.preventDefault(),Ct(n),St.current[n]?.focus())},[wt.length,Q]),Dt=m.default.useCallback(e=>{e.preventDefault()},[]),Ot={bold:{title:Se,icon:(0,g.jsx)(s.Icon,{component:r.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleBold().run())},italic:{title:Ce,icon:(0,g.jsx)(s.Icon,{component:o.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleItalic().run())},underline:{title:we,icon:(0,g.jsx)(s.Icon,{component:ie.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleUnderline().run())},strikethrough:{title:Te,icon:(0,g.jsx)(s.Icon,{component:re.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleStrike().run())},h1:{title:Ee,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H1`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:1}).run())},h2:{title:De,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H2`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:2}).run())},h3:{title:Oe,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H3`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:3}).run())},ul:{title:ke,icon:(0,g.jsx)(s.Icon,{component:ne.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleBulletList().run())},ol:{title:Ae,icon:(0,g.jsx)(s.Icon,{component:te.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleOrderedList().run())},link:{title:je,icon:(0,g.jsx)(s.Icon,{component:ee.default,size:`sm`}),onClick:ut},unlink:{title:Me,icon:(0,g.jsx)(s.Icon,{component:ae.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().extendMarkRange(`link`).unsetLink().run())},image:{title:ze,icon:(0,g.jsx)(s.Icon,{component:a.default,size:`sm`}),onClick:yt},removeFormat:{title:Ne,icon:(0,g.jsx)(s.Icon,{component:i.default,size:`sm`}),onClick:ot}};return(0,g.jsx)(oe.FieldTemplate,{label:C,error:w,required:T,layout:ge,labelId:N,errorId:M,className:_e,children:(0,g.jsxs)(`div`,{className:(0,h.default)(`wim-rich-text-editor`,p.default.root,p.default[F],P&&p.default.disabled,p.default[he],b&&p.default.fullWidth,qe&&p.default.hasCustomWidth,Ye),style:qe?{"--wim-input-width":typeof x==`number`?`${x}px`:x}:void 0,children:[(0,g.jsx)(`div`,{className:p.default.toolbar,role:`toolbar`,"aria-label":Pe,"aria-controls":j,onMouseDown:Dt,onKeyDown:Et,children:$.map((e,t)=>{if(e===`separator`)return(0,g.jsx)(`span`,{className:p.default.toolbarSep,"aria-hidden":`true`},`sep-${t}`);let n=Tt[t],r=Ot[e],i=e===`link`||e===`unlink`||e===`removeFormat`?void 0:at?.[e]??!1;return(0,g.jsx)(me,{buttonRef:e=>{St.current[n]=e},tabIndex:n===Math.min(Q,wt.length-1)?0:-1,onFocus:()=>Ct(n),disabled:P,active:i,title:r.title,onClick:r.onClick,children:r.icon},`${e}-${t}`)})}),(0,g.jsx)(_.EditorContent,{editor:H,className:p.default.contentHost}),Qe&&(0,g.jsx)(`p`,{role:`alert`,className:p.default.uploadError,children:Qe}),(0,g.jsx)(u.Dialog,{open:st,onOpenChange:W,children:(0,g.jsxs)(u.DialogContent,{children:[(0,g.jsx)(u.DialogHeader,{children:(0,g.jsx)(u.DialogTitle,{children:je})}),(0,g.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),dt()},children:[(0,g.jsx)(l.Input,{label:Fe,type:`url`,value:G,error:lt,onChange:e=>{ct(e.target.value),K(void 0)},fullWidth:!0}),(0,g.jsxs)(u.DialogFooter,{children:[(0,g.jsx)(u.DialogClose,{asChild:!0,children:(0,g.jsx)(c.Button,{variant:`ghost`,type:`button`,children:Le})}),(0,g.jsx)(c.Button,{variant:`solid`,type:`submit`,children:Ie})]})]})]})}),(0,g.jsx)(u.Dialog,{open:ft,onOpenChange:q,children:(0,g.jsxs)(u.DialogContent,{children:[(0,g.jsx)(u.DialogHeader,{children:(0,g.jsx)(u.DialogTitle,{children:ze})}),(0,g.jsxs)(`form`,{className:p.default.imageForm,onSubmit:e=>{e.preventDefault(),bt()},children:[(0,g.jsx)(l.Input,{label:Be,type:`url`,value:J,error:mt,onChange:e=>{Y(e.target.value),Z(void 0)},fullWidth:!0}),O&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`input`,{ref:_t,type:`file`,accept:`image/*`,hidden:!0,onChange:xt}),(0,g.jsx)(c.Button,{type:`button`,variant:`outline`,loading:ht,onClick:()=>_t.current?.click(),children:Ue})]}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(l.Input,{label:Ve,"aria-describedby":vt,value:X,onChange:e=>pt(e.target.value),fullWidth:!0}),(0,g.jsx)(`p`,{id:vt,className:p.default.imageHint,children:He})]}),(0,g.jsxs)(u.DialogFooter,{children:[(0,g.jsx)(u.DialogClose,{asChild:!0,children:(0,g.jsx)(c.Button,{variant:`ghost`,type:`button`,children:Le})}),(0,g.jsx)(c.Button,{variant:`solid`,type:`submit`,disabled:ht,children:Ie})]})]})]})})]})})};he.displayName=`RichTextEditor`,exports.RichTextEditor=he;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/components.cjs"),r=require("../../../icon/bold.cjs"),i=require("../../../icon/eraser.cjs"),a=require("../../../icon/image.cjs"),o=require("../../../icon/italic.cjs"),ee=require("../../../icon/link.cjs"),te=require("../../../icon/list-ordered.cjs"),ne=require("../../../icon/list.cjs"),re=require("../../../icon/strikethrough.cjs"),ie=require("../../../icon/underline.cjs"),ae=require("../../../icon/unlink.cjs"),s=require("../../media/Icon/Icon.cjs"),c=require("../Button/Button.cjs"),oe=require("../FieldTemplate/FieldTemplate.cjs"),l=require("../Input/Input.cjs"),u=require("../../overlay/Dialog/Dialog.cjs"),d=require("./safeUrl.cjs"),f=require("./markdown.cjs"),p=require("./rich-text-editor.module.cjs");let m=require("react");m=e.__toESM(m,1);let h=require("classnames");h=e.__toESM(h,1);let g=require("react/jsx-runtime"),_=require("@tiptap/react"),se=require("@tiptap/core"),v=require("@tiptap/starter-kit"),y=require("@tiptap/extensions"),ce=require("@tiptap/extension-image");var le=[`bold`,`italic`,`underline`,`strikethrough`,`separator`,`h1`,`h2`,`h3`,`separator`,`ul`,`ol`,`separator`,`link`,`unlink`,`separator`,`removeFormat`],ue=ce.Image.extend({parseHTML(){return[{tag:`img[src]`,getAttrs:e=>d.isSafeImageUrl(e.getAttribute(`src`))?null:!1}]}}),de=(e,t,n)=>[v.StarterKit.configure({heading:{levels:[1,2,3]},blockquote:!1,code:!1,codeBlock:!1,horizontalRule:!1,trailingNode:!1,...t===`markdown`?{underline:!1}:{},link:{openOnClick:!1,autolink:!1,linkOnPaste:!1,isAllowedUri:e=>d.isSafeLinkUrl(e),HTMLAttributes:{target:null,rel:null}}}),ue.configure({inline:!1,allowBase64:!1}),y.Placeholder.configure({placeholder:e}),...t===`markdown`?f.createMarkdownExtensions(n):[]],fe=(e,t)=>e.isEmpty?``:t===`markdown`?e.getMarkdown():e.getHTML(),pe=(e,t,n)=>n===`markdown`?f.markdownToHtml(e,t):t,me=m.default.memo(({onClick:e,active:t,disabled:n,title:r,label:i,tabIndex:a,onFocus:o,buttonRef:ee,children:te})=>(0,g.jsx)(`button`,{ref:ee,type:`button`,className:(0,h.default)(p.default.toolbarBtn,t&&p.default.active),onClick:e,onFocus:o,disabled:n,title:r,"aria-label":i?`${i} ${r}`:r,"aria-pressed":t,tabIndex:a,children:te}));me.displayName=`ToolbarButton`;var he=({value:e,defaultValue:f=``,onChange:v,placeholder:y,disabled:ce,intent:ue=`default`,variant:he=`outline`,fullWidth:b=!1,width:x,minHeight:S=200,label:C,error:w,required:T,layout:ge,className:_e,id:ve,toolbar:E=le,labels:ye={},"aria-label":be,"aria-labelledby":D,onImageUpload:O,format:xe=`html`})=>{let{t:k}=t.useWimTranslation(n.componentsNs),{bold:Se=k(`a11y.rte_bold`),italic:Ce=k(`a11y.rte_italic`),underline:we=k(`a11y.rte_underline`),strikethrough:Te=k(`a11y.rte_strikethrough`),h1:Ee=k(`a11y.rte_h1`),h2:De=k(`a11y.rte_h2`),h3:Oe=k(`a11y.rte_h3`),ul:ke=k(`a11y.rte_ul`),ol:Ae=k(`a11y.rte_ol`),link:je=k(`a11y.rte_link`),unlink:Me=k(`a11y.rte_unlink`),removeFormat:Ne=k(`a11y.rte_remove_format`),toolbar:Pe=k(`a11y.rte_toolbar`),linkPrompt:Fe=k(`a11y.rte_link_prompt`),linkApply:Ie=k(`a11y.rte_link_apply`),linkCancel:Le=k(`a11y.rte_link_cancel`),linkInvalid:Re=k(`a11y.rte_link_invalid`),image:ze=k(`a11y.rte_image`),imageUrl:Be=k(`a11y.rte_image_url`),imageAlt:Ve=k(`a11y.rte_image_alt`),imageAltHint:He=k(`a11y.rte_image_alt_hint`),imageUpload:Ue=k(`a11y.rte_image_upload`),imageUploadFailed:A=k(`a11y.rte_image_upload_failed`),imageInvalid:We=k(`a11y.rte_image_invalid`)}=ye,Ge=m.default.useId(),j=ve||`wim-rte-${Ge}`,M=w?`${j}-error`:void 0,N=C?`${j}-label`:void 0,P=!!ce,F=w?`danger`:ue,Ke=typeof x==`string`&&[`xs`,`sm`,`md`,`lg`,`xl`].includes(x),qe=x!==void 0&&!Ke&&!b,Je=Ke&&!b?x:void 0,Ye=Je?p.default[`width${Je.charAt(0).toUpperCase()}${Je.slice(1)}`]:void 0,I=m.default.useRef(e??f),Xe=m.default.useRef(v);m.default.useEffect(()=>{Xe.current=v},[v]);let Ze=m.default.useMemo(()=>{let e={id:j,class:p.default.content,role:`textbox`,"aria-multiline":`true`,style:`min-height: ${typeof S==`number`?`${S}px`:S}`,tabindex:P?`-1`:`0`},t=be??(C||D?void 0:k(`a11y.rte_editor`)),n=D??(C?N:void 0);return t&&(e[`aria-label`]=t),n&&(e[`aria-labelledby`]=n),F===`danger`&&(e[`aria-invalid`]=`true`),M&&(e[`aria-describedby`]=M),T&&(e[`aria-required`]=`true`),P&&(e[`aria-disabled`]=`true`),y&&(e[`aria-placeholder`]=y),e},[j,S,P,be,C,D,N,F,M,T,y,k]),L=m.default.useRef(O);m.default.useEffect(()=>{L.current=O},[O]);let[Qe,$e]=m.default.useState(void 0),et=m.default.useRef(A);m.default.useEffect(()=>{et.current=A},[A]);let R=m.default.useCallback(async(e,t,n)=>{let r=L.current;if(r){$e(void 0);for(let i of t)try{let t=await r(i);if(!d.isSafeImageUrl(t))throw Error(`URL not allowed`);if(e.isDestroyed)return;let a=e.chain().focus();(n===void 0?a:a.setTextSelection(n)).setImage({src:t,alt:``}).run()}catch{$e(et.current)}}},[]),tt=e=>Array.from(e??[]).filter(e=>e.type.startsWith(`image/`)),z=m.default.useRef({ed:null}),nt=m.default.useCallback((e,t)=>{let n=tt(t.clipboardData?.files),r=z.current.ed;return!L.current||n.length===0||!r?!1:(t.preventDefault(),R(r,n),!0)},[R]),rt=m.default.useCallback((e,t,n,r)=>{let i=tt(t.dataTransfer?.files),a=z.current.ed;if(r||!L.current||i.length===0||!a)return!1;t.preventDefault();let o=e.posAtCoords({left:t.clientX,top:t.clientY});return R(a,i,o?.pos),!0},[R]),B=m.default.useMemo(()=>({attributes:Ze,handlePaste:nt,handleDrop:rt}),[Ze,nt,rt]),[V]=m.default.useState(xe),it=e??f,H=(0,_.useEditor)({extensions:de(y??``,V,V===`markdown`?it:void 0),content:V===`markdown`?``:it,editable:!P,immediatelyRender:!1,editorProps:B,onUpdate:({editor:e})=>{let t=fe(e,V);t!==I.current&&(I.current=t,Xe.current?.(t))}});m.default.useEffect(()=>{H&&!H.isDestroyed&&H.setOptions({editorProps:B})},[H,B]),m.default.useEffect(()=>{z.current.ed=H},[H]),m.default.useEffect(()=>{H&&!H.isDestroyed&&H.setEditable(!P,!1)},[H,P]),m.default.useEffect(()=>{if(!H||H.isDestroyed)return;let e=H.extensionManager.extensions.find(e=>e.name===`placeholder`);e&&e.options.placeholder!==(y??``)&&(e.options.placeholder=y??``,H.view.dispatch(H.state.tr))},[H,y]),m.default.useEffect(()=>{if(!H||H.isDestroyed||e===void 0||e===I.current||e===fe(H,V))return;I.current=e;let t=(0,se.createDocument)(pe(H,e,V),H.schema);t.eq(H.state.doc)||H.commands.setContent(t.toJSON(),{emitUpdate:!1})},[H,e,V]);let at=(0,_.useEditorState)({editor:H,selector:({editor:e})=>({bold:!!e?.isActive(`bold`),italic:!!e?.isActive(`italic`),underline:!!e?.schema.marks.underline&&e.isActive(`underline`),strikethrough:!!e?.isActive(`strike`),h1:!!e?.isActive(`heading`,{level:1}),h2:!!e?.isActive(`heading`,{level:2}),h3:!!e?.isActive(`heading`,{level:3}),ul:!!e?.isActive(`bulletList`),ol:!!e?.isActive(`orderedList`),image:!!e?.isActive(`image`)})}),U=m.default.useCallback(e=>{if(P||!H)return;let t=document.activeElement;e(H),t instanceof HTMLElement&&t.closest(`[role="toolbar"]`)&&requestAnimationFrame(()=>{t.isConnected&&document.activeElement!==t&&t.focus({preventScroll:!0})})},[H,P]),ot=m.default.useCallback(()=>{U(e=>{let{from:t,to:n,empty:r}=e.state.selection,i=e.chain().focus();r&&i.selectAll(),i.unsetBold().unsetItalic().unsetStrike().clearNodes(),e.schema.marks.underline&&i.unsetUnderline(),r&&i.setTextSelection({from:t,to:n}),i.run()})},[U]),[st,W]=m.default.useState(!1),[G,ct]=m.default.useState(`https://`),[lt,K]=m.default.useState(void 0),ut=m.default.useCallback(()=>{if(P||!H)return;let{from:e,to:t}=H.state.selection,n=H.state.doc.textBetween(e,t,` `),r=H.getAttributes(`link`).href;ct(r??(n.startsWith(`http`)?n:`https://`)),K(void 0),W(!0)},[H,P]),dt=m.default.useCallback(()=>{let e=G.trim();e?d.isSafeLinkUrl(e)?(W(!1),U(t=>{t.state.selection.empty&&!t.isActive(`link`)?t.chain().focus().insertContent({type:`text`,text:e,marks:[{type:`link`,attrs:{href:e}}]}).run():t.chain().focus().extendMarkRange(`link`).setLink({href:e}).run()})):K(Re):W(!1)},[G,Re,U]),[ft,q]=m.default.useState(!1),[J,Y]=m.default.useState(``),[X,pt]=m.default.useState(``),[mt,Z]=m.default.useState(void 0),[ht,gt]=m.default.useState(!1),_t=m.default.useRef(null),vt=`${j}-image-alt-hint`,yt=m.default.useCallback(()=>{if(P||!H)return;let e=H.isActive(`image`)?H.getAttributes(`image`):{};Y(e.src??``),pt(e.alt??``),Z(void 0),q(!0)},[H,P]),bt=m.default.useCallback(()=>{let e=J.trim();e?d.isSafeImageUrl(e)?(q(!1),U(t=>t.chain().focus().setImage({src:e,alt:X.trim()}).run())):Z(We):q(!1)},[J,X,We,U]),xt=m.default.useCallback(async e=>{let t=e.target.files?.[0];if(e.target.value=``,t&&O){gt(!0),Z(void 0);try{let e=await O(t);if(!d.isSafeImageUrl(e))throw Error(`URL not allowed`);Y(e)}catch{Z(A)}finally{gt(!1)}}},[O,A]),St=m.default.useRef([]),[Q,Ct]=m.default.useState(0),$=m.default.useMemo(()=>{let e=V===`markdown`?E.filter(e=>e!==`underline`):E;return e.filter((t,n)=>t!==`separator`||n>0&&n<e.length-1&&e[n-1]!==`separator`)},[E,V]),wt=m.default.useMemo(()=>$.filter(e=>e!==`separator`),[$]),Tt=m.default.useMemo(()=>$.map((e,t)=>e===`separator`?-1:$.slice(0,t).filter(e=>e!==`separator`).length),[$]),Et=m.default.useCallback(e=>{let t=wt.length;if(t===0)return;let n;e.key===`ArrowRight`?n=(Q+1)%t:e.key===`ArrowLeft`?n=(Q-1+t)%t:e.key===`Home`?n=0:e.key===`End`&&(n=t-1),n!==void 0&&(e.preventDefault(),Ct(n),St.current[n]?.focus())},[wt.length,Q]),Dt=m.default.useCallback(e=>{e.preventDefault()},[]),Ot={bold:{title:Se,icon:(0,g.jsx)(s.Icon,{component:r.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleBold().run())},italic:{title:Ce,icon:(0,g.jsx)(s.Icon,{component:o.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleItalic().run())},underline:{title:we,icon:(0,g.jsx)(s.Icon,{component:ie.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleUnderline().run())},strikethrough:{title:Te,icon:(0,g.jsx)(s.Icon,{component:re.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleStrike().run())},h1:{title:Ee,label:`H1`,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H1`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:1}).run())},h2:{title:De,label:`H2`,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H2`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:2}).run())},h3:{title:Oe,label:`H3`,icon:(0,g.jsx)(`span`,{"aria-hidden":`true`,children:`H3`}),onClick:()=>U(e=>e.chain().focus().toggleHeading({level:3}).run())},ul:{title:ke,icon:(0,g.jsx)(s.Icon,{component:ne.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleBulletList().run())},ol:{title:Ae,icon:(0,g.jsx)(s.Icon,{component:te.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().toggleOrderedList().run())},link:{title:je,icon:(0,g.jsx)(s.Icon,{component:ee.default,size:`sm`}),onClick:ut},unlink:{title:Me,icon:(0,g.jsx)(s.Icon,{component:ae.default,size:`sm`}),onClick:()=>U(e=>e.chain().focus().extendMarkRange(`link`).unsetLink().run())},image:{title:ze,icon:(0,g.jsx)(s.Icon,{component:a.default,size:`sm`}),onClick:yt},removeFormat:{title:Ne,icon:(0,g.jsx)(s.Icon,{component:i.default,size:`sm`}),onClick:ot}};return(0,g.jsx)(oe.FieldTemplate,{label:C,error:w,required:T,layout:ge,labelId:N,errorId:M,className:_e,children:(0,g.jsxs)(`div`,{className:(0,h.default)(`wim-rich-text-editor`,p.default.root,p.default[F],P&&p.default.disabled,p.default[he],b&&p.default.fullWidth,qe&&p.default.hasCustomWidth,Ye),style:qe?{"--wim-input-width":typeof x==`number`?`${x}px`:x}:void 0,children:[(0,g.jsx)(`div`,{className:p.default.toolbar,role:`toolbar`,"aria-label":Pe,"aria-controls":j,onMouseDown:Dt,onKeyDown:Et,children:$.map((e,t)=>{if(e===`separator`)return(0,g.jsx)(`span`,{className:p.default.toolbarSep,"aria-hidden":`true`},`sep-${t}`);let n=Tt[t],r=Ot[e],i=e===`link`||e===`unlink`||e===`removeFormat`?void 0:at?.[e]??!1;return(0,g.jsx)(me,{buttonRef:e=>{St.current[n]=e},tabIndex:n===Math.min(Q,wt.length-1)?0:-1,onFocus:()=>Ct(n),disabled:P,active:i,title:r.title,label:r.label,onClick:r.onClick,children:r.icon},`${e}-${t}`)})}),(0,g.jsx)(_.EditorContent,{editor:H,className:p.default.contentHost}),Qe&&(0,g.jsx)(`p`,{role:`alert`,className:p.default.uploadError,children:Qe}),(0,g.jsx)(u.Dialog,{open:st,onOpenChange:W,children:(0,g.jsxs)(u.DialogContent,{children:[(0,g.jsx)(u.DialogHeader,{children:(0,g.jsx)(u.DialogTitle,{children:je})}),(0,g.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),dt()},children:[(0,g.jsx)(l.Input,{label:Fe,type:`url`,value:G,error:lt,onChange:e=>{ct(e.target.value),K(void 0)},fullWidth:!0}),(0,g.jsxs)(u.DialogFooter,{children:[(0,g.jsx)(u.DialogClose,{asChild:!0,children:(0,g.jsx)(c.Button,{variant:`ghost`,type:`button`,children:Le})}),(0,g.jsx)(c.Button,{variant:`solid`,type:`submit`,children:Ie})]})]})]})}),(0,g.jsx)(u.Dialog,{open:ft,onOpenChange:q,children:(0,g.jsxs)(u.DialogContent,{children:[(0,g.jsx)(u.DialogHeader,{children:(0,g.jsx)(u.DialogTitle,{children:ze})}),(0,g.jsxs)(`form`,{className:p.default.imageForm,onSubmit:e=>{e.preventDefault(),bt()},children:[(0,g.jsx)(l.Input,{label:Be,type:`url`,value:J,error:mt,onChange:e=>{Y(e.target.value),Z(void 0)},fullWidth:!0}),O&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`input`,{ref:_t,type:`file`,accept:`image/*`,hidden:!0,onChange:xt}),(0,g.jsx)(c.Button,{type:`button`,variant:`outline`,loading:ht,onClick:()=>_t.current?.click(),children:Ue})]}),(0,g.jsxs)(`div`,{children:[(0,g.jsx)(l.Input,{label:Ve,"aria-describedby":vt,value:X,onChange:e=>pt(e.target.value),fullWidth:!0}),(0,g.jsx)(`p`,{id:vt,className:p.default.imageHint,children:He})]}),(0,g.jsxs)(u.DialogFooter,{children:[(0,g.jsx)(u.DialogClose,{asChild:!0,children:(0,g.jsx)(c.Button,{variant:`ghost`,type:`button`,children:Le})}),(0,g.jsx)(c.Button,{variant:`solid`,type:`submit`,disabled:ht,children:Ie})]})]})]})})]})})};he.displayName=`RichTextEditor`,exports.RichTextEditor=he;