@superdoc-dev/template-builder 1.1.0 → 1.2.0-next.1
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/README.md +18 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +987 -1104
- package/dist/types.d.ts +9 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -97,6 +97,12 @@ function TemplateEditor() {
|
|
|
97
97
|
// excludeItems: ['italic', 'bold'],
|
|
98
98
|
// }}
|
|
99
99
|
|
|
100
|
+
// Telemetry (optional, enabled by default)
|
|
101
|
+
telemetry={{ enabled: true, metadata: { source: 'template-builder' } }}
|
|
102
|
+
|
|
103
|
+
// License key (optional)
|
|
104
|
+
licenseKey="your-license-key"
|
|
105
|
+
|
|
100
106
|
// Event handlers
|
|
101
107
|
onReady={() => {}}
|
|
102
108
|
onTrigger={(event) => {}}
|
|
@@ -263,6 +269,18 @@ exportTemplate(config?: ExportConfig): Promise<void | Blob>
|
|
|
263
269
|
- `Promise<void>` when `triggerDownload: true` (download happens automatically)
|
|
264
270
|
- `Promise<Blob>` when `triggerDownload: false` (returns the docx data)
|
|
265
271
|
|
|
272
|
+
## Telemetry
|
|
273
|
+
|
|
274
|
+
Telemetry is enabled by default with `source: 'template-builder'` metadata. You can override or extend the configuration:
|
|
275
|
+
|
|
276
|
+
```jsx
|
|
277
|
+
<SuperDocTemplateBuilder
|
|
278
|
+
telemetry={{ enabled: true, metadata: { source: 'my-app', environment: 'production' } }}
|
|
279
|
+
/>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
For more details, see the [Telemetry](https://docs.superdoc.dev/resources/telemetry) documentation.
|
|
283
|
+
|
|
266
284
|
## TypeScript
|
|
267
285
|
|
|
268
286
|
Full TypeScript support included:
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ze=Object.create;var ge=Object.defineProperty;var Be=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Pe=(n,o,d,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of We(o))!He.call(n,l)&&l!==d&&ge(n,l,{get:()=>o[l],enumerable:!(i=Be(o,l))||i.enumerable});return n};var Ae=(n,o,d)=>(d=n!=null?ze(Le(n)):{},Pe(o||!n||!n.__esModule?ge(d,"default",{value:n,enumerable:!0}):d,n));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),s=require("react"),ye=({isVisible:n,position:o,availableFields:d,filteredFields:i,filterQuery:l,allowCreate:p,onSelect:I,onClose:z,onCreateField:A,existingFields:f=[],onSelectExisting:S})=>{const[y,w]=s.useState(!1),[x,B]=s.useState(""),[W,R]=s.useState("inline"),[U,te]=s.useState(!0),[q,g]=s.useState(!0);s.useEffect(()=>{n||(w(!1),B(""),R("inline"))},[n]);const L=s.useMemo(()=>({position:"absolute",left:o?.left,top:o?.top,zIndex:1e3,background:"white",border:"1px solid #ddd",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.1)",padding:"8px 0",width:"280px"}),[o]),E=i??d,V=!!l;if(s.useEffect(()=>{V&&g(!0)},[V]),!n)return null;const O=async()=>{const u=x.trim();if(!u)return;const H={id:`custom_${Date.now()}`,label:u,mode:W};try{if(A){const b=await A(H);I(b||H)}else I(H)}finally{w(!1),B(""),R("inline")}};return t.jsxs("div",{className:"superdoc-field-menu",style:L,children:[V&&t.jsx("div",{style:{padding:"8px 16px",borderBottom:"1px solid #f0f0f0",marginBottom:"4px"},children:t.jsxs("div",{style:{fontSize:"12px",color:"#6b7280"},children:["Filtering results for",t.jsx("span",{style:{fontWeight:600,color:"#111827",marginLeft:"4px"},children:l})]})}),p&&!y&&t.jsx("div",{className:"field-menu-item",onClick:()=>w(!0),style:{padding:"8px 16px",cursor:"pointer",color:"#0066cc",fontWeight:500},children:"+ Create New Field"}),p&&y&&t.jsxs("div",{style:{padding:"8px 16px"},children:[t.jsx("input",{type:"text",value:x,placeholder:"Field name...",onChange:u=>B(u.target.value),onKeyDown:u=>{u.key==="Enter"&&O(),u.key==="Escape"&&(w(!1),B(""),R("inline"))},autoFocus:!0,style:{width:"100%",padding:"4px 8px",border:"1px solid #ddd",borderRadius:"3px"}}),t.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"12px",fontSize:"13px"},children:[t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[t.jsx("input",{type:"radio",value:"inline",checked:W==="inline",onChange:()=>R("inline")}),"Inline"]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[t.jsx("input",{type:"radio",value:"block",checked:W==="block",onChange:()=>R("block")}),"Block"]})]}),t.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"8px"},children:[t.jsx("button",{onClick:O,disabled:!x.trim(),style:{padding:"4px 12px",background:x.trim()?"#0066cc":"#ccc",color:"white",border:"none",borderRadius:"3px",cursor:x.trim()?"pointer":"not-allowed"},children:"Create"}),t.jsx("button",{onClick:()=>{w(!1),B(""),R("inline")},style:{padding:"4px 12px",background:"white",border:"1px solid #ddd",borderRadius:"3px",cursor:"pointer"},children:"Cancel"})]})]}),p&&d.length>0&&t.jsx("div",{style:{borderTop:"1px solid #eee",margin:"4px 0"}}),f.length>0&&(()=>{const u=new Map;f.forEach(b=>{const J=b.group||`individual-${b.id}`,Y=u.get(J)||[];Y.push(b),u.set(J,Y)});const H=Array.from(u.values()).map(b=>({...b[0],count:b.length}));return t.jsxs("div",{style:{borderBottom:"1px solid #f0f0f0"},children:[t.jsxs("button",{type:"button",onClick:()=>te(!U),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",background:"transparent",border:"none",cursor:"pointer",fontWeight:500,fontSize:"13px",color:"#374151",textAlign:"left"},children:[t.jsxs("span",{children:["Existing Fields (",H.length,")"]}),t.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:"8px",height:"8px",borderRight:"2px solid #666",borderBottom:"2px solid #666",transform:U?"rotate(45deg)":"rotate(-45deg)",transition:"transform 0.2s ease"}})]}),U&&t.jsx("div",{style:{maxHeight:"300px",overflowY:"auto"},children:H.map(b=>t.jsxs("div",{className:"field-menu-item",onClick:()=>S?.(b),style:{padding:"8px 16px",cursor:"pointer",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"},children:[t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontWeight:500,fontSize:"13px"},children:b.alias||b.id}),t.jsx("div",{style:{fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:b.group?`group (${b.count} fields)`:`ID: ${b.id}`})]}),t.jsx("span",{style:{fontSize:"11px",color:"#6b7280",padding:"2px 6px",background:"#f3f4f6",borderRadius:"3px",textTransform:"capitalize",flexShrink:0},children:b.mode||"inline"})]},b.group||b.id))})]})})(),E.length===0?t.jsx("div",{style:{padding:"16px",fontSize:"13px",color:"#6b7280",textAlign:"center"},children:"No matching fields"}):t.jsxs("div",{style:{borderBottom:"1px solid #f0f0f0"},children:[t.jsxs("button",{type:"button",onClick:()=>g(!q),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",background:"transparent",border:"none",cursor:"pointer",fontWeight:500,fontSize:"13px",color:"#374151",textAlign:"left"},children:[t.jsxs("span",{children:["Available Fields (",E.length,")"]}),t.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:"8px",height:"8px",borderRight:"2px solid #666",borderBottom:"2px solid #666",transform:q?"rotate(45deg)":"rotate(-45deg)",transition:"transform 0.2s ease"}})]}),q&&t.jsx("div",{style:{maxHeight:"300px",overflowY:"auto"},children:E.map(u=>t.jsxs("div",{className:"field-menu-item",onClick:()=>I(u),style:{padding:"8px 16px",cursor:"pointer",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"},children:[t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontWeight:500,fontSize:"13px"},children:u.label||u.id}),t.jsxs("div",{style:{fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:["ID: ",u.id]})]}),t.jsx("span",{style:{fontSize:"11px",color:"#6b7280",padding:"2px 6px",background:"#f3f4f6",borderRadius:"3px",textTransform:"capitalize",flexShrink:0},children:u.mode||"inline"})]},u.id))})]}),t.jsx("div",{style:{borderTop:"1px solid #eee",marginTop:"4px"},children:t.jsx("button",{onClick:z,style:{width:"100%",padding:"6px 16px",background:"#f3f4f6",border:"none",borderRadius:"0 0 4px 4px",cursor:"pointer"},children:"Close"})})]})},Ve=n=>{const o=n.split("-");return o.length>2?o[o.length-1].substring(0,6):n.substring(0,6)},me=({field:n,onSelect:o,onDelete:d,isSelected:i,isGrouped:l=!1})=>t.jsxs("div",{onClick:()=>o(n),style:{position:"relative",padding:"10px 12px",background:i?"#eff6ff":"#f9fafb",border:i?"1px solid #3b82f6":"1px solid #e5e7eb",borderRadius:"6px",cursor:"pointer",transition:"all 0.2s",fontSize:l?"13px":"14px"},onMouseEnter:p=>{i||(p.currentTarget.style.background="#f3f4f6")},onMouseLeave:p=>{i||(p.currentTarget.style.background="#f9fafb")},title:n.alias,children:[t.jsx("button",{onClick:p=>{p.stopPropagation(),d(n.id)},style:{position:"absolute",top:"6px",right:"6px",padding:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#9ca3af",transition:"color 0.2s",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:p=>{p.currentTarget.style.color="#ef4444"},onMouseLeave:p=>{p.currentTarget.style.color="#9ca3af"},title:"Delete field",children:t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M6 2V1.5C6 1.22386 6.22386 1 6.5 1H9.5C9.77614 1 10 1.22386 10 1.5V2M2 4H14M12.6667 4L12.1991 11.0129C12.129 12.065 12.0939 12.5911 11.8667 12.99C11.6666 13.3412 11.3648 13.6235 11.0011 13.7998C10.588 14 10.0607 14 9.00623 14H6.99377C5.93927 14 5.41202 14 4.99889 13.7998C4.63517 13.6235 4.33339 13.3412 4.13332 12.99C3.90607 12.5911 3.871 12.065 3.80086 11.0129L3.33333 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),t.jsxs("div",{style:{paddingRight:"24px"},children:[t.jsx("div",{style:{fontWeight:"500",fontSize:l?"12px":"14px",color:l?"#6b7280":"#111827"},children:n.alias||n.id}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:[t.jsxs("span",{children:["ID: ",n.id]}),n.mode&&t.jsx("span",{style:{fontSize:"9px",padding:"2px 5px",borderRadius:"3px",background:n.mode==="block"?"#dbeafe":"#f3f4f6",color:n.mode==="block"?"#1e40af":"#4b5563",fontWeight:"500"},children:n.mode})]})]})]}),ve=({fields:n,onSelect:o,onDelete:d,selectedFieldId:i})=>{const[l,p]=s.useState(new Set),{groupedFields:I,ungroupedFields:z}=s.useMemo(()=>{const f={},S=[];return n.forEach(y=>{y.group?(f[y.group]||(f[y.group]=[]),f[y.group].push(y)):S.push(y)}),{groupedFields:f,ungroupedFields:S}},[n]),A=f=>{p(S=>{const y=new Set(S);return y.has(f)?y.delete(f):y.add(f),y})};return t.jsxs("div",{className:"superdoc-field-list",style:{width:"250px",background:"white",border:"1px solid #e5e7eb",borderRadius:"8px",padding:"16px"},children:[t.jsxs("h3",{style:{margin:"0 0 16px 0",fontSize:"16px",fontWeight:"600"},children:["Template Fields (",n.length,")"]}),n.length===0?t.jsxs("div",{style:{color:"#9ca3af",fontSize:"14px",textAlign:"center",padding:"20px 0"},children:["No fields yet. Type ","{{"," to add a field."]}):t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[z.map(f=>t.jsx(me,{field:f,onSelect:o,onDelete:d,isSelected:i===f.id},f.id)),Object.entries(I).map(([f,S])=>{const y=l.has(f),w=S[0];return t.jsxs("div",{children:[t.jsx("div",{style:{position:"relative",padding:"12px",background:"#f9fafb",border:"1px solid #e5e7eb",borderRadius:"6px",cursor:"pointer",transition:"all 0.2s"},onClick:()=>A(f),onMouseEnter:x=>{x.currentTarget.style.background="#f3f4f6"},onMouseLeave:x=>{x.currentTarget.style.background="#f9fafb"},children:t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[t.jsx("span",{style:{fontSize:"12px",color:"#6b7280"},children:y?"▼":"▶"}),t.jsxs("div",{style:{flex:1},children:[t.jsx("div",{style:{fontWeight:"500",fontSize:"14px"},children:w.alias}),t.jsxs("div",{style:{fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:["group: ",Ve(f)," (",S.length," fields)"]})]})]})}),y&&t.jsx("div",{style:{marginLeft:"16px",marginTop:"4px",display:"flex",flexDirection:"column",gap:"4px"},children:S.map(x=>t.jsx(me,{field:x,onSelect:o,onDelete:d,isSelected:i===x.id,isGrouped:!0},x.id))})]},f)})]})]})},$=n=>{const o=n.helpers?.structuredContentCommands;return o?.getStructuredContentTags?(o.getStructuredContentTags(n.state)||[]).map(i=>{const l=i?.node??i,p=l?.attrs??{},z=(l?.type?.name||"").includes("Block")?"block":"inline";return{id:p.id,alias:p.alias||p.label||"",tag:p.tag,mode:z,group:o.getGroup?.(p.tag)??void 0}}):[]},he=(n,o)=>{if(n===o)return!0;if(n.length!==o.length)return!1;for(let d=0;d<n.length;d+=1){const i=n[d],l=o[d];if(!l||i.id!==l.id||i.alias!==l.alias||i.tag!==l.tag||i.position!==l.position||i.mode!==l.mode||i.group!==l.group)return!1}return!0},Oe=n=>{if(!n)return null;if(n===!0)return{selector:"#superdoc-toolbar",config:{},renderDefaultContainer:!0};if(typeof n=="string")return{selector:n,config:{},renderDefaultContainer:!1};const{selector:o,...d}=n;return{selector:o||"#superdoc-toolbar",config:d,renderDefaultContainer:o===void 0}},ee=10,Ge=250,_e=300,be=n=>{const o=window.innerWidth-Ge-ee,d=window.innerHeight-_e-ee,i=Math.min(n.left,o),l=Math.min(n.top,d);return new DOMRect(Math.max(i,ee),Math.max(l,ee),n.width,n.height)},je=s.forwardRef((n,o)=>{const{document:d,fields:i={},menu:l={},list:p={},toolbar:I,cspNonce:z,onReady:A,onTrigger:f,onFieldInsert:S,onFieldUpdate:y,onFieldDelete:w,onFieldsChange:x,onFieldSelect:B,onFieldCreate:W,onExport:R,className:U,style:te,documentHeight:q="600px"}=n,[g,L]=s.useState(i.initial||[]),[E,V]=s.useState(null),[O,u]=s.useState(!1),[H,b]=s.useState(),[J,Y]=s.useState(""),[Ce,Fe]=s.useState(()=>i.available||[]),ne=s.useRef(null),F=s.useRef(null),T=s.useRef(null),ae=s.useRef(i);ae.current=i;const D=s.useRef(null),de=s.useRef(O);s.useEffect(()=>{de.current=O},[O]);const K=l.trigger||"{{",re=ae.current.available||[],P=s.useMemo(()=>Oe(I),[I]),ce=s.useCallback(e=>{const r=e.trim().toLowerCase();return r?re.filter(a=>a.label.toLowerCase().includes(r)):re},[re]),se=s.useCallback(e=>{Y(e),Fe(ce(e))},[ce]),N=s.useCallback(()=>{se("")},[se]),Q=s.useCallback((e,r)=>{if(!F.current?.activeEditor)return!1;const a=F.current.activeEditor,v=g,C=e==="inline"?a.commands.insertStructuredContentInline?.({attrs:{alias:r.alias,tag:r.metadata?JSON.stringify(r.metadata):void 0},text:r.defaultValue||r.alias}):a.commands.insertStructuredContentBlock?.({attrs:{alias:r.alias,tag:r.metadata?JSON.stringify(r.metadata):void 0},text:r.defaultValue||r.alias});if(C){const m=$(a);L(m),x?.(m);const k=m.find(j=>!v.some(c=>c.id===j.id));k&&S?.(k)}return C??!1},[S,x,g]),X=s.useCallback((e,r)=>{if(!F.current?.activeEditor)return!1;const v=F.current.activeEditor.commands.updateStructuredContentById?.(e,{attrs:r});return v&&L(C=>{const m=C.map(j=>j.id===e?{...j,...r}:j);x?.(m);const k=m.find(j=>j.id===e);return k&&y?.(k),m}),v??!1},[y,x]),oe=s.useCallback(e=>{const r=F.current?.activeEditor;if(!r){let c=!1;return L(h=>{if(!h.some(M=>M.id===e))return h;const _=h.filter(M=>M.id!==e);return c=!0,x?.(_),w?.(e),_}),c&&V(h=>h===e?null:h),c}const v=g.find(c=>c.id===e)?.group;let C=!1;try{C=r.commands.deleteStructuredContentById?.(e)??!1}catch(c){console.warn("[TemplateBuilder] Failed to delete structured content:",e,c),C=!1}let m=$(r);const k=m.some(c=>c.id===e);if(!C&&k&&(m=m.filter(c=>c.id!==e)),v){const c=m.filter(h=>h.group===v);if(c.length===1){const h=c[0];r.commands.updateStructuredContentById?.(h.id,{attrs:{tag:void 0}}),m=$(r)}}let j=!1;return L(c=>{if(he(c,m))return c;const h=c.some(M=>M.id===e),_=m.some(M=>M.id===e);return h&&!_&&(j=!0),x?.(m),j&&w?.(e),m}),j&&V(c=>c===e?null:c),C||j},[w,x,g]),G=s.useCallback(e=>{if(!F.current?.activeEditor)return;F.current.activeEditor.commands.selectStructuredContentById?.(e),V(e);const a=g.find(v=>v.id===e);a&&B?.(a)},[g,B]),ie=s.useCallback(e=>{if(!e)return;const r=$(e);L(a=>he(a,r)?a:(x?.(r),r))},[x]);s.useEffect(()=>{if(!ne.current)return;let e=!1,r=null;return(async()=>{const{SuperDoc:v}=await import("superdoc");if(e)return;const C={comments:!1,...P&&{toolbar:{selector:P.selector,toolbarGroups:P.config.toolbarGroups||["center"],excludeItems:P.config.excludeItems||[],...P.config}}},m=()=>{if(!e){if(r?.activeEditor){const k=r.activeEditor;k.on("update",({editor:j})=>{const{state:c}=j,{from:h}=c.selection;if(h>=K.length){const le=h-K.length;if(c.doc.textBetween(le,h)===K){const pe=j.view.coordsAtPos(h),xe=be(new DOMRect(pe.left,pe.top,0,0)),fe=()=>{const Z=F.current?.activeEditor;if(!Z)return;const De=Z.state.selection.from,Ne=Z.state.tr.delete(le,De);Z.view.dispatch(Ne)};T.current=fe,D.current=h,b(xe),u(!0),N(),f?.({position:{from:le,to:h},bounds:xe,cleanup:fe});return}}if(!de.current)return;if(D.current==null){u(!1),N();return}if(h<D.current){u(!1),D.current=null,N();return}const _=c.doc.textBetween(D.current,h);se(_);const M=j.view.coordsAtPos(h),Re=be(new DOMRect(M.left,M.top,0,0));b(Re)}),k.on("update",()=>{ie(k)}),ie(k)}A?.()}};r=new v({selector:ne.current,document:d?.source,documentMode:d?.mode||"editing",modules:C,toolbar:P?.selector,cspNonce:z,onReady:m}),F.current=r})(),()=>{e=!0,T.current=null,D.current=null,r&&typeof r.destroy=="function"&&r.destroy(),F.current=null}},[d?.source,d?.mode,K,ie,A,f,P,z]);const ke=s.useCallback(async e=>{T.current&&(T.current(),T.current=null),D.current=null,N();const r=e.mode||"inline";if(e.id.startsWith("custom_")&&W){const a=await W(e);if(a){const v=a.mode||r;Q(v,{alias:a.label,metadata:a.metadata,defaultValue:a.defaultValue}),u(!1);return}}Q(r,{alias:e.label,metadata:e.metadata,defaultValue:e.defaultValue}),u(!1)},[Q,W,N]),Se=s.useCallback(e=>{T.current&&(T.current(),T.current=null),D.current=null,N();const r=F.current?.activeEditor;if(!r)return;const a=r.helpers?.structuredContentCommands;if(!a)return;const v=e.group||`group-${Date.now()}-${Math.random().toString(36).substring(2,11)}`,C=a.createTagObject?.({group:v});if((e.mode||"inline")==="inline"?r.commands.insertStructuredContentInline?.({attrs:{alias:e.alias,tag:C},text:e.alias}):r.commands.insertStructuredContentBlock?.({attrs:{alias:e.alias,tag:C},text:e.alias})){e.group||X(e.id,{tag:C}),u(!1);const j=$(r);L(j),x?.(j)}},[X,N,x]),we=s.useCallback(()=>{u(!1),D.current=null,N(),T.current&&(T.current(),T.current=null)},[N]),Te=s.useCallback(()=>{if(!F.current?.activeEditor||g.length===0)return;const e=g.findIndex(a=>a.id===E),r=e>=0?(e+1)%g.length:0;G(g[r].id)},[g,E,G]),Ee=s.useCallback(()=>{if(!F.current?.activeEditor||g.length===0)return;const e=g.findIndex(a=>a.id===E),r=e>0?e-1:g.length-1;G(g[r].id)},[g,E,G]),Me=s.useCallback(async e=>{const{fileName:r="document",triggerDownload:a=!0}=e||{},v=await F.current?.export({exportType:["docx"],exportedName:r,triggerDownload:a}),C=F.current?.activeEditor;if(C){const m=$(C);R?.({fields:m,blob:a?void 0:v,fileName:r})}return v},[R]);s.useImperativeHandle(o,()=>({insertField:e=>Q("inline",e),insertBlockField:e=>Q("block",e),updateField:X,deleteField:oe,selectField:G,nextField:Te,previousField:Ee,getFields:()=>g,exportTemplate:Me,getSuperDoc:()=>F.current}));const Ie=l.component||ye,ue=p.component||ve;return t.jsxs("div",{className:`superdoc-template-builder ${U||""}`,style:te,children:[t.jsxs("div",{style:{display:"flex",gap:"20px"},children:[p.position==="left"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ue,{fields:g,onSelect:e=>G(e.id),onDelete:oe,onUpdate:e=>X(e.id,e),selectedFieldId:E||void 0})}),t.jsxs("div",{className:"superdoc-template-builder-document",style:{flex:1},children:[P?.renderDefaultContainer&&t.jsx("div",{id:"superdoc-toolbar",className:"superdoc-template-builder-toolbar","data-testid":"template-builder-toolbar"}),t.jsx("div",{ref:ne,className:"superdoc-template-builder-editor",style:{height:q},"data-testid":"template-builder-editor"})]}),p.position==="right"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ue,{fields:g,onSelect:e=>G(e.id),onDelete:oe,onUpdate:e=>X(e.id,e),selectedFieldId:E||void 0})})]}),t.jsx(Ie,{isVisible:O,position:H,availableFields:i.available||[],filteredFields:Ce,filterQuery:J,allowCreate:i.allowCreate||!1,onSelect:ke,onClose:we,onCreateField:W,existingFields:g,onSelectExisting:Se})]})});je.displayName="SuperDocTemplateBuilder";exports.FieldList=ve;exports.FieldMenu=ye;exports.default=je;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require(`react`),t=require(`react/jsx-runtime`);const n=({isVisible:n,position:r,availableFields:i,filteredFields:a,filterQuery:o,allowCreate:s,onSelect:c,onClose:l,onCreateField:u,existingFields:d=[],onSelectExisting:f})=>{let[p,m]=(0,e.useState)(!1),[h,g]=(0,e.useState)(``),[_,v]=(0,e.useState)(`inline`),[y,b]=(0,e.useState)(!0),[x,S]=(0,e.useState)(!0);(0,e.useEffect)(()=>{n||(m(!1),g(``),v(`inline`))},[n]);let C=(0,e.useMemo)(()=>({position:`absolute`,left:r?.left,top:r?.top,zIndex:1e3,background:`white`,border:`1px solid #ddd`,borderRadius:`4px`,boxShadow:`0 2px 8px rgba(0,0,0,0.1)`,padding:`8px 0`,width:`280px`}),[r]),w=a??i,T=!!o;if((0,e.useEffect)(()=>{T&&S(!0)},[T]),!n)return null;let E=async()=>{let e=h.trim();if(!e)return;let t={id:`custom_${Date.now()}`,label:e,mode:_};try{c(u&&await u(t)||t)}finally{m(!1),g(``),v(`inline`)}};return(0,t.jsxs)(`div`,{className:`superdoc-field-menu`,style:C,children:[T&&(0,t.jsx)(`div`,{style:{padding:`8px 16px`,borderBottom:`1px solid #f0f0f0`,marginBottom:`4px`},children:(0,t.jsxs)(`div`,{style:{fontSize:`12px`,color:`#6b7280`},children:[`Filtering results for`,(0,t.jsx)(`span`,{style:{fontWeight:600,color:`#111827`,marginLeft:`4px`},children:o})]})}),s&&!p&&(0,t.jsx)(`div`,{className:`field-menu-item`,onClick:()=>m(!0),style:{padding:`8px 16px`,cursor:`pointer`,color:`#0066cc`,fontWeight:500},children:`+ Create New Field`}),s&&p&&(0,t.jsxs)(`div`,{style:{padding:`8px 16px`},children:[(0,t.jsx)(`input`,{type:`text`,value:h,placeholder:`Field name...`,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&E(),e.key===`Escape`&&(m(!1),g(``),v(`inline`))},autoFocus:!0,style:{width:`100%`,padding:`4px 8px`,border:`1px solid #ddd`,borderRadius:`3px`}}),(0,t.jsxs)(`div`,{style:{marginTop:`8px`,display:`flex`,gap:`12px`,fontSize:`13px`},children:[(0,t.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`4px`,cursor:`pointer`},children:[(0,t.jsx)(`input`,{type:`radio`,value:`inline`,checked:_===`inline`,onChange:()=>v(`inline`)}),`Inline`]}),(0,t.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`4px`,cursor:`pointer`},children:[(0,t.jsx)(`input`,{type:`radio`,value:`block`,checked:_===`block`,onChange:()=>v(`block`)}),`Block`]})]}),(0,t.jsxs)(`div`,{style:{marginTop:`8px`,display:`flex`,gap:`8px`},children:[(0,t.jsx)(`button`,{onClick:E,disabled:!h.trim(),style:{padding:`4px 12px`,background:h.trim()?`#0066cc`:`#ccc`,color:`white`,border:`none`,borderRadius:`3px`,cursor:h.trim()?`pointer`:`not-allowed`},children:`Create`}),(0,t.jsx)(`button`,{onClick:()=>{m(!1),g(``),v(`inline`)},style:{padding:`4px 12px`,background:`white`,border:`1px solid #ddd`,borderRadius:`3px`,cursor:`pointer`},children:`Cancel`})]})]}),s&&i.length>0&&(0,t.jsx)(`div`,{style:{borderTop:`1px solid #eee`,margin:`4px 0`}}),d.length>0&&(()=>{let e=new Map;d.forEach(t=>{let n=t.group||`individual-${t.id}`,r=e.get(n)||[];r.push(t),e.set(n,r)});let n=Array.from(e.values()).map(e=>({...e[0],count:e.length}));return(0,t.jsxs)(`div`,{style:{borderBottom:`1px solid #f0f0f0`},children:[(0,t.jsxs)(`button`,{type:`button`,onClick:()=>b(!y),style:{width:`100%`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`8px 16px`,background:`transparent`,border:`none`,cursor:`pointer`,fontWeight:500,fontSize:`13px`,color:`#374151`,textAlign:`left`},children:[(0,t.jsxs)(`span`,{children:[`Existing Fields (`,n.length,`)`]}),(0,t.jsx)(`span`,{"aria-hidden":!0,style:{display:`inline-block`,width:`8px`,height:`8px`,borderRight:`2px solid #666`,borderBottom:`2px solid #666`,transform:y?`rotate(45deg)`:`rotate(-45deg)`,transition:`transform 0.2s ease`}})]}),y&&(0,t.jsx)(`div`,{style:{maxHeight:`300px`,overflowY:`auto`},children:n.map(e=>(0,t.jsxs)(`div`,{className:`field-menu-item`,onClick:()=>f?.(e),style:{padding:`8px 16px`,cursor:`pointer`,display:`flex`,alignItems:`flex-start`,justifyContent:`space-between`,gap:`8px`},children:[(0,t.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,t.jsx)(`div`,{style:{fontWeight:500,fontSize:`13px`},children:e.alias||e.id}),(0,t.jsx)(`div`,{style:{fontSize:`11px`,color:`#9ca3af`,marginTop:`2px`},children:e.group?`group (${e.count} fields)`:`ID: ${e.id}`})]}),(0,t.jsx)(`span`,{style:{fontSize:`11px`,color:`#6b7280`,padding:`2px 6px`,background:`#f3f4f6`,borderRadius:`3px`,textTransform:`capitalize`,flexShrink:0},children:e.mode||`inline`})]},e.group||e.id))})]})})(),w.length===0?(0,t.jsx)(`div`,{style:{padding:`16px`,fontSize:`13px`,color:`#6b7280`,textAlign:`center`},children:`No matching fields`}):(0,t.jsxs)(`div`,{style:{borderBottom:`1px solid #f0f0f0`},children:[(0,t.jsxs)(`button`,{type:`button`,onClick:()=>S(!x),style:{width:`100%`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`8px 16px`,background:`transparent`,border:`none`,cursor:`pointer`,fontWeight:500,fontSize:`13px`,color:`#374151`,textAlign:`left`},children:[(0,t.jsxs)(`span`,{children:[`Available Fields (`,w.length,`)`]}),(0,t.jsx)(`span`,{"aria-hidden":!0,style:{display:`inline-block`,width:`8px`,height:`8px`,borderRight:`2px solid #666`,borderBottom:`2px solid #666`,transform:x?`rotate(45deg)`:`rotate(-45deg)`,transition:`transform 0.2s ease`}})]}),x&&(0,t.jsx)(`div`,{style:{maxHeight:`300px`,overflowY:`auto`},children:w.map(e=>(0,t.jsxs)(`div`,{className:`field-menu-item`,onClick:()=>c(e),style:{padding:`8px 16px`,cursor:`pointer`,display:`flex`,alignItems:`flex-start`,justifyContent:`space-between`,gap:`8px`},children:[(0,t.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,t.jsx)(`div`,{style:{fontWeight:500,fontSize:`13px`},children:e.label||e.id}),(0,t.jsxs)(`div`,{style:{fontSize:`11px`,color:`#9ca3af`,marginTop:`2px`},children:[`ID: `,e.id]})]}),(0,t.jsx)(`span`,{style:{fontSize:`11px`,color:`#6b7280`,padding:`2px 6px`,background:`#f3f4f6`,borderRadius:`3px`,textTransform:`capitalize`,flexShrink:0},children:e.mode||`inline`})]},e.id))})]}),(0,t.jsx)(`div`,{style:{borderTop:`1px solid #eee`,marginTop:`4px`},children:(0,t.jsx)(`button`,{onClick:l,style:{width:`100%`,padding:`6px 16px`,background:`#f3f4f6`,border:`none`,borderRadius:`0 0 4px 4px`,cursor:`pointer`},children:`Close`})})]})};var r=e=>{let t=e.split(`-`);return t.length>2?t[t.length-1].substring(0,6):e.substring(0,6)},i=({field:e,onSelect:n,onDelete:r,isSelected:i,isGrouped:a=!1})=>(0,t.jsxs)(`div`,{onClick:()=>n(e),style:{position:`relative`,padding:`10px 12px`,background:i?`#eff6ff`:`#f9fafb`,border:i?`1px solid #3b82f6`:`1px solid #e5e7eb`,borderRadius:`6px`,cursor:`pointer`,transition:`all 0.2s`,fontSize:a?`13px`:`14px`},onMouseEnter:e=>{i||(e.currentTarget.style.background=`#f3f4f6`)},onMouseLeave:e=>{i||(e.currentTarget.style.background=`#f9fafb`)},title:e.alias,children:[(0,t.jsx)(`button`,{onClick:t=>{t.stopPropagation(),r(e.id)},style:{position:`absolute`,top:`6px`,right:`6px`,padding:`4px`,background:`transparent`,border:`none`,cursor:`pointer`,color:`#9ca3af`,transition:`color 0.2s`,display:`flex`,alignItems:`center`,justifyContent:`center`},onMouseEnter:e=>{e.currentTarget.style.color=`#ef4444`},onMouseLeave:e=>{e.currentTarget.style.color=`#9ca3af`},title:`Delete field`,children:(0,t.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,t.jsx)(`path`,{d:`M6 2V1.5C6 1.22386 6.22386 1 6.5 1H9.5C9.77614 1 10 1.22386 10 1.5V2M2 4H14M12.6667 4L12.1991 11.0129C12.129 12.065 12.0939 12.5911 11.8667 12.99C11.6666 13.3412 11.3648 13.6235 11.0011 13.7998C10.588 14 10.0607 14 9.00623 14H6.99377C5.93927 14 5.41202 14 4.99889 13.7998C4.63517 13.6235 4.33339 13.3412 4.13332 12.99C3.90607 12.5911 3.871 12.065 3.80086 11.0129L3.33333 4`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),(0,t.jsxs)(`div`,{style:{paddingRight:`24px`},children:[(0,t.jsx)(`div`,{style:{fontWeight:`500`,fontSize:a?`12px`:`14px`,color:a?`#6b7280`:`#111827`},children:e.alias||e.id}),(0,t.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`6px`,fontSize:`11px`,color:`#9ca3af`,marginTop:`2px`},children:[(0,t.jsxs)(`span`,{children:[`ID: `,e.id]}),e.mode&&(0,t.jsx)(`span`,{style:{fontSize:`9px`,padding:`2px 5px`,borderRadius:`3px`,background:e.mode===`block`?`#dbeafe`:`#f3f4f6`,color:e.mode===`block`?`#1e40af`:`#4b5563`,fontWeight:`500`},children:e.mode})]})]})]});const a=({fields:n,onSelect:a,onDelete:o,selectedFieldId:s})=>{let[c,l]=(0,e.useState)(new Set),{groupedFields:u,ungroupedFields:d}=(0,e.useMemo)(()=>{let e={},t=[];return n.forEach(n=>{n.group?(e[n.group]||(e[n.group]=[]),e[n.group].push(n)):t.push(n)}),{groupedFields:e,ungroupedFields:t}},[n]),f=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,t.jsxs)(`div`,{className:`superdoc-field-list`,style:{width:`250px`,background:`white`,border:`1px solid #e5e7eb`,borderRadius:`8px`,padding:`16px`},children:[(0,t.jsxs)(`h3`,{style:{margin:`0 0 16px 0`,fontSize:`16px`,fontWeight:`600`},children:[`Template Fields (`,n.length,`)`]}),n.length===0?(0,t.jsxs)(`div`,{style:{color:`#9ca3af`,fontSize:`14px`,textAlign:`center`,padding:`20px 0`},children:[`No fields yet. Type `,`{{`,` to add a field.`]}):(0,t.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`8px`},children:[d.map(e=>(0,t.jsx)(i,{field:e,onSelect:a,onDelete:o,isSelected:s===e.id},e.id)),Object.entries(u).map(([e,n])=>{let l=c.has(e),u=n[0];return(0,t.jsxs)(`div`,{children:[(0,t.jsx)(`div`,{style:{position:`relative`,padding:`12px`,background:`#f9fafb`,border:`1px solid #e5e7eb`,borderRadius:`6px`,cursor:`pointer`,transition:`all 0.2s`},onClick:()=>f(e),onMouseEnter:e=>{e.currentTarget.style.background=`#f3f4f6`},onMouseLeave:e=>{e.currentTarget.style.background=`#f9fafb`},children:(0,t.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,t.jsx)(`span`,{style:{fontSize:`12px`,color:`#6b7280`},children:l?`▼`:`▶`}),(0,t.jsxs)(`div`,{style:{flex:1},children:[(0,t.jsx)(`div`,{style:{fontWeight:`500`,fontSize:`14px`},children:u.alias}),(0,t.jsxs)(`div`,{style:{fontSize:`11px`,color:`#9ca3af`,marginTop:`2px`},children:[`group: `,r(e),` (`,n.length,` fields)`]})]})]})}),l&&(0,t.jsx)(`div`,{style:{marginLeft:`16px`,marginTop:`4px`,display:`flex`,flexDirection:`column`,gap:`4px`},children:n.map(e=>(0,t.jsx)(i,{field:e,onSelect:a,onDelete:o,isSelected:s===e.id,isGrouped:!0},e.id))})]},e)})]})]})};var o=e=>{let t=e.helpers?.structuredContentCommands;return t?.getStructuredContentTags?(t.getStructuredContentTags(e.state)||[]).map(e=>{let n=e?.node??e,r=n?.attrs??{},i=(n?.type?.name||``).includes(`Block`)?`block`:`inline`;return{id:r.id,alias:r.alias||r.label||``,tag:r.tag,mode:i,group:t.getGroup?.(r.tag)??void 0}}):[]},s=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!i||r.id!==i.id||r.alias!==i.alias||r.tag!==i.tag||r.position!==i.position||r.mode!==i.mode||r.group!==i.group)return!1}return!0},c=e=>{if(!e)return null;if(e===!0)return{selector:`#superdoc-toolbar`,config:{},renderDefaultContainer:!0};if(typeof e==`string`)return{selector:e,config:{},renderDefaultContainer:!1};let{selector:t,...n}=e;return{selector:t||`#superdoc-toolbar`,config:n,renderDefaultContainer:t===void 0}},l=10,u=250,d=300,f=e=>{let t=window.innerWidth-u-l,n=window.innerHeight-d-l,r=Math.min(e.left,t),i=Math.min(e.top,n);return new DOMRect(Math.max(r,l),Math.max(i,l),e.width,e.height)},p=(0,e.forwardRef)((r,i)=>{let{document:l,fields:u={},menu:d={},list:p={},toolbar:m,cspNonce:h,telemetry:g,licenseKey:_,onReady:v,onTrigger:y,onFieldInsert:b,onFieldUpdate:x,onFieldDelete:S,onFieldsChange:C,onFieldSelect:w,onFieldCreate:T,onExport:E,className:ee,style:te,documentHeight:ne=`600px`}=r,[D,O]=(0,e.useState)(u.initial||[]),[k,A]=(0,e.useState)(null),[j,M]=(0,e.useState)(!1),[re,N]=(0,e.useState)(),[ie,ae]=(0,e.useState)(``),[oe,se]=(0,e.useState)(()=>u.available||[]),P=(0,e.useRef)(null),F=(0,e.useRef)(null),I=(0,e.useRef)(null),L=(0,e.useRef)(u);L.current=u;let R=(0,e.useRef)(null),z=(0,e.useRef)(j);(0,e.useEffect)(()=>{z.current=j},[j]);let B=d.trigger||`{{`,V=L.current.available||[],H=(0,e.useMemo)(()=>c(m),[m]),U=(0,e.useMemo)(()=>({enabled:g?.enabled??!0,metadata:{source:`template-builder`,...g?.metadata}}),[g?.enabled,JSON.stringify(g?.metadata)]),W=(0,e.useCallback)(e=>{let t=e.trim().toLowerCase();return t?V.filter(e=>e.label.toLowerCase().includes(t)):V},[V]),G=(0,e.useCallback)(e=>{ae(e),se(W(e))},[W]),K=(0,e.useCallback)(()=>{G(``)},[G]),q=(0,e.useCallback)((e,t)=>{if(!F.current?.activeEditor)return!1;let n=F.current.activeEditor,r=D,i=e===`inline`?n.commands.insertStructuredContentInline?.({attrs:{alias:t.alias,tag:t.metadata?JSON.stringify(t.metadata):void 0},text:t.defaultValue||t.alias}):n.commands.insertStructuredContentBlock?.({attrs:{alias:t.alias,tag:t.metadata?JSON.stringify(t.metadata):void 0},text:t.defaultValue||t.alias});if(i){let e=o(n);O(e),C?.(e);let t=e.find(e=>!r.some(t=>t.id===e.id));t&&b?.(t)}return i??!1},[b,C,D]),J=(0,e.useCallback)((e,t)=>{if(!F.current?.activeEditor)return!1;let n=F.current.activeEditor.commands.updateStructuredContentById?.(e,{attrs:t});return n&&O(n=>{let r=n.map(n=>n.id===e?{...n,...t}:n);C?.(r);let i=r.find(t=>t.id===e);return i&&x?.(i),r}),n??!1},[x,C]),Y=(0,e.useCallback)(e=>{let t=F.current?.activeEditor;if(!t){let t=!1;return O(n=>{if(!n.some(t=>t.id===e))return n;let r=n.filter(t=>t.id!==e);return t=!0,C?.(r),S?.(e),r}),t&&A(t=>t===e?null:t),t}let n=D.find(t=>t.id===e)?.group,r=!1;try{r=t.commands.deleteStructuredContentById?.(e)??!1}catch(t){console.warn(`[TemplateBuilder] Failed to delete structured content:`,e,t),r=!1}let i=o(t),a=i.some(t=>t.id===e);if(!r&&a&&(i=i.filter(t=>t.id!==e)),n){let e=i.filter(e=>e.group===n);if(e.length===1){let n=e[0];t.commands.updateStructuredContentById?.(n.id,{attrs:{tag:void 0}}),i=o(t)}}let c=!1;return O(t=>{if(s(t,i))return t;let n=t.some(t=>t.id===e),r=i.some(t=>t.id===e);return n&&!r&&(c=!0),C?.(i),c&&S?.(e),i}),c&&A(t=>t===e?null:t),r||c},[S,C,D]),X=(0,e.useCallback)(e=>{if(!F.current?.activeEditor)return;F.current.activeEditor.commands.selectStructuredContentById?.(e),A(e);let t=D.find(t=>t.id===e);t&&w?.(t)},[D,w]),Z=(0,e.useCallback)(e=>{if(!e)return;let t=o(e);O(e=>s(e,t)?e:(C?.(t),t))},[C]);(0,e.useEffect)(()=>{if(!P.current)return;let e=!1,t=null;return(async()=>{let{SuperDoc:n}=await import(`superdoc`);if(e)return;let r={comments:!1,...H&&{toolbar:{selector:H.selector,toolbarGroups:H.config.toolbarGroups||[`center`],excludeItems:H.config.excludeItems||[],...H.config}}},i=()=>{if(!e){if(t?.activeEditor){let e=t.activeEditor;e.on(`update`,({editor:e})=>{let{state:t}=e,{from:n}=t.selection;if(n>=B.length){let r=n-B.length;if(t.doc.textBetween(r,n)===B){let t=e.view.coordsAtPos(n),i=f(new DOMRect(t.left,t.top,0,0)),a=()=>{let e=F.current?.activeEditor;if(!e)return;let t=e.state.selection.from,n=e.state.tr.delete(r,t);e.view.dispatch(n)};I.current=a,R.current=n,N(i),M(!0),K(),y?.({position:{from:r,to:n},bounds:i,cleanup:a});return}}if(!z.current)return;if(R.current==null){M(!1),K();return}if(n<R.current){M(!1),R.current=null,K();return}G(t.doc.textBetween(R.current,n));let r=e.view.coordsAtPos(n);N(f(new DOMRect(r.left,r.top,0,0)))}),e.on(`update`,()=>{Z(e)}),Z(e)}v?.()}};t=new n({selector:P.current,document:l?.source,documentMode:l?.mode||`editing`,modules:r,toolbar:H?.selector,cspNonce:h,telemetry:U,..._&&{licenseKey:_},onReady:i}),F.current=t})(),()=>{e=!0,I.current=null,R.current=null,t&&typeof t.destroy==`function`&&t.destroy(),F.current=null}},[l?.source,l?.mode,B,Z,v,y,H,h,U,_]);let ce=(0,e.useCallback)(async e=>{I.current&&=(I.current(),null),R.current=null,K();let t=e.mode||`inline`;if(e.id.startsWith(`custom_`)&&T){let n=await T(e);if(n){q(n.mode||t,{alias:n.label,metadata:n.metadata,defaultValue:n.defaultValue}),M(!1);return}}q(t,{alias:e.label,metadata:e.metadata,defaultValue:e.defaultValue}),M(!1)},[q,T,K]),le=(0,e.useCallback)(e=>{I.current&&=(I.current(),null),R.current=null,K();let t=F.current?.activeEditor;if(!t)return;let n=t.helpers?.structuredContentCommands;if(!n)return;let r=e.group||`group-${Date.now()}-${Math.random().toString(36).substring(2,11)}`,i=n.createTagObject?.({group:r});if((e.mode||`inline`)===`inline`?t.commands.insertStructuredContentInline?.({attrs:{alias:e.alias,tag:i},text:e.alias}):t.commands.insertStructuredContentBlock?.({attrs:{alias:e.alias,tag:i},text:e.alias})){e.group||J(e.id,{tag:i}),M(!1);let n=o(t);O(n),C?.(n)}},[J,K,C]),ue=(0,e.useCallback)(()=>{M(!1),R.current=null,K(),I.current&&=(I.current(),null)},[K]),Q=(0,e.useCallback)(()=>{if(!F.current?.activeEditor||D.length===0)return;let e=D.findIndex(e=>e.id===k);X(D[e>=0?(e+1)%D.length:0].id)},[D,k,X]),de=(0,e.useCallback)(()=>{if(!F.current?.activeEditor||D.length===0)return;let e=D.findIndex(e=>e.id===k);X(D[e>0?e-1:D.length-1].id)},[D,k,X]),fe=(0,e.useCallback)(async e=>{let{fileName:t=`document`,triggerDownload:n=!0}=e||{},r=await F.current?.export({exportType:[`docx`],exportedName:t,triggerDownload:n}),i=F.current?.activeEditor;if(i){let e=o(i);E?.({fields:e,blob:n?void 0:r,fileName:t})}return r},[E]);(0,e.useImperativeHandle)(i,()=>({insertField:e=>q(`inline`,e),insertBlockField:e=>q(`block`,e),updateField:J,deleteField:Y,selectField:X,nextField:Q,previousField:de,getFields:()=>D,exportTemplate:fe,getSuperDoc:()=>F.current}));let pe=d.component||n,$=p.component||a;return(0,t.jsxs)(`div`,{className:`superdoc-template-builder ${ee||``}`,style:te,children:[(0,t.jsxs)(`div`,{style:{display:`flex`,gap:`20px`},children:[p.position===`left`&&(0,t.jsx)(`div`,{className:`superdoc-template-builder-sidebar`,children:(0,t.jsx)($,{fields:D,onSelect:e=>X(e.id),onDelete:Y,onUpdate:e=>J(e.id,e),selectedFieldId:k||void 0})}),(0,t.jsxs)(`div`,{className:`superdoc-template-builder-document`,style:{flex:1},children:[H?.renderDefaultContainer&&(0,t.jsx)(`div`,{id:`superdoc-toolbar`,className:`superdoc-template-builder-toolbar`,"data-testid":`template-builder-toolbar`}),(0,t.jsx)(`div`,{ref:P,className:`superdoc-template-builder-editor`,style:{height:ne},"data-testid":`template-builder-editor`})]}),p.position===`right`&&(0,t.jsx)(`div`,{className:`superdoc-template-builder-sidebar`,children:(0,t.jsx)($,{fields:D,onSelect:e=>X(e.id),onDelete:Y,onUpdate:e=>J(e.id,e),selectedFieldId:k||void 0})})]}),(0,t.jsx)(pe,{isVisible:j,position:re,availableFields:u.available||[],filteredFields:oe,filterQuery:ie,allowCreate:u.allowCreate||!1,onSelect:ce,onClose:ue,onCreateField:T,existingFields:D,onSelectExisting:le})]})});p.displayName=`SuperDocTemplateBuilder`;var m=p;exports.FieldList=a,exports.FieldMenu=n,exports.default=m;
|