@superdoc-dev/template-builder 1.1.0-next.9 → 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 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 Ne=Object.create;var ge=Object.defineProperty;var ze=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var We=Object.getPrototypeOf,Le=Object.prototype.hasOwnProperty;var He=(n,o,d,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of Be(o))!Le.call(n,l)&&l!==d&&ge(n,l,{get:()=>o[l],enumerable:!(i=ze(o,l))||i.enumerable});return n};var Pe=(n,o,d)=>(d=n!=null?Ne(We(n)):{},He(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:u,onSelect:R,onClose:W,onCreateField:V,existingFields:x=[],onSelectExisting:w})=>{const[m,y]=s.useState(!1),[F,E]=s.useState(""),[_,L]=s.useState("inline"),[q,te]=s.useState(!0),[p,D]=s.useState(!0);s.useEffect(()=>{n||(y(!1),E(""),L("inline"))},[n]);const H=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]),O=i??d,P=!!l;if(s.useEffect(()=>{P&&D(!0)},[P]),!n)return null;const M=async()=>{const h=F.trim();if(!h)return;const N={id:`custom_${Date.now()}`,label:h,mode:_};try{if(V){const b=await V(N);R(b||N)}else R(N)}finally{y(!1),E(""),L("inline")}};return t.jsxs("div",{className:"superdoc-field-menu",style:H,children:[P&&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})]})}),u&&!m&&t.jsx("div",{className:"field-menu-item",onClick:()=>y(!0),style:{padding:"8px 16px",cursor:"pointer",color:"#0066cc",fontWeight:500},children:"+ Create New Field"}),u&&m&&t.jsxs("div",{style:{padding:"8px 16px"},children:[t.jsx("input",{type:"text",value:F,placeholder:"Field name...",onChange:h=>E(h.target.value),onKeyDown:h=>{h.key==="Enter"&&M(),h.key==="Escape"&&(y(!1),E(""),L("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:_==="inline",onChange:()=>L("inline")}),"Inline"]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[t.jsx("input",{type:"radio",value:"block",checked:_==="block",onChange:()=>L("block")}),"Block"]})]}),t.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"8px"},children:[t.jsx("button",{onClick:M,disabled:!F.trim(),style:{padding:"4px 12px",background:F.trim()?"#0066cc":"#ccc",color:"white",border:"none",borderRadius:"3px",cursor:F.trim()?"pointer":"not-allowed"},children:"Create"}),t.jsx("button",{onClick:()=>{y(!1),E(""),L("inline")},style:{padding:"4px 12px",background:"white",border:"1px solid #ddd",borderRadius:"3px",cursor:"pointer"},children:"Cancel"})]})]}),u&&d.length>0&&t.jsx("div",{style:{borderTop:"1px solid #eee",margin:"4px 0"}}),x.length>0&&(()=>{const h=new Map;x.forEach(b=>{const J=b.group||`individual-${b.id}`,Y=h.get(J)||[];Y.push(b),h.set(J,Y)});const N=Array.from(h.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(!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:["Existing Fields (",N.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:N.map(b=>t.jsxs("div",{className:"field-menu-item",onClick:()=>w?.(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))})]})})(),O.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:()=>D(!p),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 (",O.length,")"]}),t.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:"8px",height:"8px",borderRight:"2px solid #666",borderBottom:"2px solid #666",transform:p?"rotate(45deg)":"rotate(-45deg)",transition:"transform 0.2s ease"}})]}),p&&t.jsx("div",{style:{maxHeight:"300px",overflowY:"auto"},children:O.map(h=>t.jsxs("div",{className:"field-menu-item",onClick:()=>R(h),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:h.label||h.id}),t.jsxs("div",{style:{fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:["ID: ",h.id]})]}),t.jsx("span",{style:{fontSize:"11px",color:"#6b7280",padding:"2px 6px",background:"#f3f4f6",borderRadius:"3px",textTransform:"capitalize",flexShrink:0},children:h.mode||"inline"})]},h.id))})]}),t.jsx("div",{style:{borderTop:"1px solid #eee",marginTop:"4px"},children:t.jsx("button",{onClick:W,style:{width:"100%",padding:"6px 16px",background:"#f3f4f6",border:"none",borderRadius:"0 0 4px 4px",cursor:"pointer"},children:"Close"})})]})},Ae=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:u=>{i||(u.currentTarget.style.background="#f3f4f6")},onMouseLeave:u=>{i||(u.currentTarget.style.background="#f9fafb")},title:n.alias,children:[t.jsx("button",{onClick:u=>{u.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:u=>{u.currentTarget.style.color="#ef4444"},onMouseLeave:u=>{u.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,u]=s.useState(new Set),{groupedFields:R,ungroupedFields:W}=s.useMemo(()=>{const x={},w=[];return n.forEach(m=>{m.group?(x[m.group]||(x[m.group]=[]),x[m.group].push(m)):w.push(m)}),{groupedFields:x,ungroupedFields:w}},[n]),V=x=>{u(w=>{const m=new Set(w);return m.has(x)?m.delete(x):m.add(x),m})};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:[W.map(x=>t.jsx(me,{field:x,onSelect:o,onDelete:d,isSelected:i===x.id},x.id)),Object.entries(R).map(([x,w])=>{const m=l.has(x),y=w[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:()=>V(x),onMouseEnter:F=>{F.currentTarget.style.background="#f3f4f6"},onMouseLeave:F=>{F.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:m?"▼":"▶"}),t.jsxs("div",{style:{flex:1},children:[t.jsx("div",{style:{fontWeight:"500",fontSize:"14px"},children:y.alias}),t.jsxs("div",{style:{fontSize:"11px",color:"#9ca3af",marginTop:"2px"},children:["group: ",Ae(x)," (",w.length," fields)"]})]})]})}),m&&t.jsx("div",{style:{marginLeft:"16px",marginTop:"4px",display:"flex",flexDirection:"column",gap:"4px"},children:w.map(F=>t.jsx(me,{field:F,onSelect:o,onDelete:d,isSelected:i===F.id,isGrouped:!0},F.id))})]},x)})]})]})},U=n=>{const o=n.helpers?.structuredContentCommands;return o?.getStructuredContentTags?(o.getStructuredContentTags(n.state)||[]).map(i=>{const l=i?.node??i,u=l?.attrs??{},W=(l?.type?.name||"").includes("Block")?"block":"inline";return{id:u.id,alias:u.alias||u.label||"",tag:u.tag,mode:W,group:o.getGroup?.(u.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},Ve=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,Oe=250,Ge=300,be=n=>{const o=window.innerWidth-Oe-ee,d=window.innerHeight-Ge-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:u={},toolbar:R,onReady:W,onTrigger:V,onFieldInsert:x,onFieldUpdate:w,onFieldDelete:m,onFieldsChange:y,onFieldSelect:F,onFieldCreate:E,onExport:_,className:L,style:q,documentHeight:te="600px"}=n,[p,D]=s.useState(i.initial||[]),[H,O]=s.useState(null),[P,M]=s.useState(!1),[h,N]=s.useState(),[b,J]=s.useState(""),[Y,Ce]=s.useState(()=>i.available||[]),ne=s.useRef(null),k=s.useRef(null),T=s.useRef(null),ae=s.useRef(i);ae.current=i;const z=s.useRef(null),de=s.useRef(P);s.useEffect(()=>{de.current=P},[P]);const K=l.trigger||"{{",re=ae.current.available||[],A=s.useMemo(()=>Ve(R),[R]),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=>{J(e),Ce(ce(e))},[ce]),B=s.useCallback(()=>{se("")},[se]),Q=s.useCallback((e,r)=>{if(!k.current?.activeEditor)return!1;const a=k.current.activeEditor,v=p,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 f=U(a);D(f),y?.(f);const S=f.find(j=>!v.some(c=>c.id===j.id));S&&x?.(S)}return C??!1},[x,y,p]),X=s.useCallback((e,r)=>{if(!k.current?.activeEditor)return!1;const v=k.current.activeEditor.commands.updateStructuredContentById?.(e,{attrs:r});return v&&D(C=>{const f=C.map(j=>j.id===e?{...j,...r}:j);y?.(f);const S=f.find(j=>j.id===e);return S&&w?.(S),f}),v??!1},[w,y]),oe=s.useCallback(e=>{const r=k.current?.activeEditor;if(!r){let c=!1;return D(g=>{if(!g.some(I=>I.id===e))return g;const $=g.filter(I=>I.id!==e);return c=!0,y?.($),m?.(e),$}),c&&O(g=>g===e?null:g),c}const v=p.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 f=U(r);const S=f.some(c=>c.id===e);if(!C&&S&&(f=f.filter(c=>c.id!==e)),v){const c=f.filter(g=>g.group===v);if(c.length===1){const g=c[0];r.commands.updateStructuredContentById?.(g.id,{attrs:{tag:void 0}}),f=U(r)}}let j=!1;return D(c=>{if(he(c,f))return c;const g=c.some(I=>I.id===e),$=f.some(I=>I.id===e);return g&&!$&&(j=!0),y?.(f),j&&m?.(e),f}),j&&O(c=>c===e?null:c),C||j},[m,y,p]),G=s.useCallback(e=>{if(!k.current?.activeEditor)return;k.current.activeEditor.commands.selectStructuredContentById?.(e),O(e);const a=p.find(v=>v.id===e);a&&F?.(a)},[p,F]),ie=s.useCallback(e=>{if(!e)return;const r=U(e);D(a=>he(a,r)?a:(y?.(r),r))},[y]);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,...A&&{toolbar:{selector:A.selector,toolbarGroups:A.config.toolbarGroups||["center"],excludeItems:A.config.excludeItems||[],...A.config}}},f=()=>{if(!e){if(r?.activeEditor){const S=r.activeEditor;S.on("update",({editor:j})=>{const{state:c}=j,{from:g}=c.selection;if(g>=K.length){const le=g-K.length;if(c.doc.textBetween(le,g)===K){const pe=j.view.coordsAtPos(g),xe=be(new DOMRect(pe.left,pe.top,0,0)),fe=()=>{const Z=k.current?.activeEditor;if(!Z)return;const Re=Z.state.selection.from,De=Z.state.tr.delete(le,Re);Z.view.dispatch(De)};T.current=fe,z.current=g,N(xe),M(!0),B(),V?.({position:{from:le,to:g},bounds:xe,cleanup:fe});return}}if(!de.current)return;if(z.current==null){M(!1),B();return}if(g<z.current){M(!1),z.current=null,B();return}const $=c.doc.textBetween(z.current,g);se($);const I=j.view.coordsAtPos(g),Ie=be(new DOMRect(I.left,I.top,0,0));N(Ie)}),S.on("update",()=>{ie(S)}),ie(S)}W?.()}};r=new v({selector:ne.current,document:d?.source,documentMode:d?.mode||"editing",modules:C,toolbar:A?.selector,onReady:f}),k.current=r})(),()=>{e=!0,T.current=null,z.current=null,r&&typeof r.destroy=="function"&&r.destroy(),k.current=null}},[d?.source,d?.mode,K,ie,W,V,A]);const Fe=s.useCallback(async e=>{T.current&&(T.current(),T.current=null),z.current=null,B();const r=e.mode||"inline";if(e.id.startsWith("custom_")&&E){const a=await E(e);if(a){const v=a.mode||r;Q(v,{alias:a.label,metadata:a.metadata,defaultValue:a.defaultValue}),M(!1);return}}Q(r,{alias:e.label,metadata:e.metadata,defaultValue:e.defaultValue}),M(!1)},[Q,E,B]),ke=s.useCallback(e=>{T.current&&(T.current(),T.current=null),z.current=null,B();const r=k.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}),M(!1);const j=U(r);D(j),y?.(j)}},[X,B,y]),Se=s.useCallback(()=>{M(!1),z.current=null,B(),T.current&&(T.current(),T.current=null)},[B]),we=s.useCallback(()=>{if(!k.current?.activeEditor||p.length===0)return;const e=p.findIndex(a=>a.id===H),r=e>=0?(e+1)%p.length:0;G(p[r].id)},[p,H,G]),Te=s.useCallback(()=>{if(!k.current?.activeEditor||p.length===0)return;const e=p.findIndex(a=>a.id===H),r=e>0?e-1:p.length-1;G(p[r].id)},[p,H,G]),Ee=s.useCallback(async e=>{const{fileName:r="document",triggerDownload:a=!0}=e||{},v=await k.current?.export({exportType:["docx"],exportedName:r,triggerDownload:a}),C=k.current?.activeEditor;if(C){const f=U(C);_?.({fields:f,blob:a?void 0:v,fileName:r})}return v},[_]);s.useImperativeHandle(o,()=>({insertField:e=>Q("inline",e),insertBlockField:e=>Q("block",e),updateField:X,deleteField:oe,selectField:G,nextField:we,previousField:Te,getFields:()=>p,exportTemplate:Ee,getSuperDoc:()=>k.current}));const Me=l.component||ye,ue=u.component||ve;return t.jsxs("div",{className:`superdoc-template-builder ${L||""}`,style:q,children:[t.jsxs("div",{style:{display:"flex",gap:"20px"},children:[u.position==="left"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ue,{fields:p,onSelect:e=>G(e.id),onDelete:oe,onUpdate:e=>X(e.id,e),selectedFieldId:H||void 0})}),t.jsxs("div",{className:"superdoc-template-builder-document",style:{flex:1},children:[A?.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:te},"data-testid":"template-builder-editor"})]}),u.position==="right"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ue,{fields:p,onSelect:e=>G(e.id),onDelete:oe,onUpdate:e=>X(e.id,e),selectedFieldId:H||void 0})})]}),t.jsx(Me,{isVisible:P,position:h,availableFields:i.available||[],filteredFields:Y,filterQuery:b,allowCreate:i.allowCreate||!1,onSelect:Fe,onClose:Se,onCreateField:E,existingFields:p,onSelectExisting:ke})]})});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;