@superdoc-dev/template-builder 0.2.0-next.6 → 0.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAElD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AA0GhC,QAAA,MAAM,uBAAuB,oJAukB3B,CAAC;AAIH,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAElD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AA0GhC,QAAA,MAAM,uBAAuB,oJAqkB3B,CAAC;AAIH,eAAe,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1,22 @@
1
- "use strict";var Te=Object.create;var pe=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var Ie=Object.getPrototypeOf,De=Object.prototype.hasOwnProperty;var Ne=(o,a,c,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of Ee(a))!De.call(o,n)&&n!==c&&pe(o,n,{get:()=>a[n],enumerable:!(d=Re(a,n))||d.enumerable});return o};var Be=(o,a,c)=>(c=o!=null?Te(Ie(o)):{},Ne(a||!o||!o.__esModule?pe(c,"default",{value:o,enumerable:!0}):c,o));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),s=require("react"),me=({isVisible:o,position:a,availableFields:c,filteredFields:d,filterQuery:n,allowCreate:m,onSelect:N,onClose:O,onCreateField:z})=>{const[_,M]=s.useState(!1),[w,b]=s.useState(""),[V,j]=s.useState("inline");s.useEffect(()=>{o||(M(!1),b(""),j("inline"))},[o]);const K=s.useMemo(()=>({position:"absolute",left:a?.left,top:a?.top,zIndex:1e3,background:"white",border:"1px solid #ddd",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.1)",padding:"8px 0",minWidth:"200px"}),[a]),q=d??c,A=!!n,f=s.useMemo(()=>{const i=[],g=new Map;return q.forEach(C=>{const h=C.category?.trim()||"Uncategorized",T=g.get(h);if(T!==void 0){i[T].fields.push(C);return}g.set(h,i.length),i.push({category:h,fields:[C]})}),i},[q]),[B,S]=s.useState({});s.useEffect(()=>{S(i=>{if(f.length===0)return Object.keys(i).length===0?i:{};const g={};let C=Object.keys(i).length!==f.length;return f.forEach(({category:h},T)=>{const R=A?!0:i[h]??T===0;g[h]=R,!C&&i[h]!==R&&(C=!0)}),C?g:i})},[f,A]);const U=s.useCallback(i=>{S(g=>({...g,[i]:!g[i]}))},[]);if(!o)return null;const L=async()=>{const i=w.trim();if(!i)return;const g={id:`custom_${Date.now()}`,label:i,category:"Custom",metadata:{mode:V}};try{if(z){const C=await z(g);N(C||g)}else N(g)}finally{M(!1),b(""),j("inline")}};return t.jsxs("div",{className:"superdoc-field-menu",style:K,children:[A&&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:n})]})}),m&&!_&&t.jsx("div",{className:"field-menu-item",onClick:()=>M(!0),style:{padding:"8px 16px",cursor:"pointer",color:"#0066cc",fontWeight:500},children:"+ Create New Field"}),m&&_&&t.jsxs("div",{style:{padding:"8px 16px"},children:[t.jsx("input",{type:"text",value:w,placeholder:"Field name...",onChange:i=>b(i.target.value),onKeyDown:i=>{i.key==="Enter"&&L(),i.key==="Escape"&&(M(!1),b(""),j("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:V==="inline",onChange:()=>j("inline")}),"Inline"]}),t.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[t.jsx("input",{type:"radio",value:"block",checked:V==="block",onChange:()=>j("block")}),"Block"]})]}),t.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"8px"},children:[t.jsx("button",{onClick:L,disabled:!w.trim(),style:{padding:"4px 12px",background:w.trim()?"#0066cc":"#ccc",color:"white",border:"none",borderRadius:"3px",cursor:w.trim()?"pointer":"not-allowed"},children:"Create"}),t.jsx("button",{onClick:()=>{M(!1),b(""),j("inline")},style:{padding:"4px 12px",background:"white",border:"1px solid #ddd",borderRadius:"3px",cursor:"pointer"},children:"Cancel"})]})]}),m&&c.length>0&&t.jsx("div",{style:{borderTop:"1px solid #eee",margin:"4px 0"}}),f.length===0?t.jsx("div",{style:{padding:"16px",fontSize:"13px",color:"#6b7280",textAlign:"center"},children:"No matching fields"}):f.map(({category:i,fields:g},C)=>{const h=!!B[i],T=`${Math.max(g.length*40,0)}px`;return t.jsxs("div",{style:{borderTop:C===0&&m?void 0:"1px solid #f0f0f0"},children:[t.jsxs("button",{type:"button",onClick:()=>U(i),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",background:"transparent",border:"none",cursor:"pointer",fontWeight:500,textAlign:"left"},children:[t.jsxs("span",{children:[i," (",g.length,")"]}),t.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:"8px",height:"8px",borderRight:"2px solid #666",borderBottom:"2px solid #666",transform:h?"rotate(45deg)":"rotate(-45deg)",transition:"transform 0.2s ease",marginLeft:"12px"}})]}),t.jsx("div",{"data-category":i,"aria-hidden":!h,style:{overflow:"hidden",maxHeight:h?T:"0px",opacity:h?1:0,transition:"max-height 0.2s ease, opacity 0.2s ease",pointerEvents:h?"auto":"none"},children:t.jsx("div",{style:{padding:h?"4px 0":0},children:g.map(R=>t.jsx("div",{className:"field-menu-item",onClick:()=>N(R),style:{padding:"8px 16px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:t.jsx("span",{style:{fontWeight:500},children:R.label})},R.id))})})]},i)}),t.jsx("div",{style:{borderTop:"1px solid #eee",marginTop:"4px"},children:t.jsx("button",{onClick:O,style:{width:"100%",padding:"6px 16px",background:"#f3f4f6",border:"none",borderRadius:"0 0 4px 4px",cursor:"pointer"},children:"Close"})})]})},ge=({fields:o,onSelect:a,onDelete:c,selectedFieldId:d})=>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 (",o.length,")"]}),o.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.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:o.map(n=>t.jsxs("div",{onClick:()=>a(n),style:{position:"relative",padding:"12px",background:d===n.id?"#eff6ff":"#f9fafb",border:d===n.id?"1px solid #3b82f6":"1px solid #e5e7eb",borderRadius:"6px",cursor:"pointer",transition:"all 0.2s"},onMouseEnter:m=>{d!==n.id&&(m.currentTarget.style.background="#f3f4f6")},onMouseLeave:m=>{d!==n.id&&(m.currentTarget.style.background="#f9fafb")},title:n.alias,children:[t.jsx("button",{onClick:m=>{m.stopPropagation(),c(n.id)},style:{position:"absolute",top:"8px",right:"8px",padding:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#9ca3af",transition:"color 0.2s",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:m=>{m.currentTarget.style.color="#ef4444"},onMouseLeave:m=>{m.currentTarget.style.color="#9ca3af"},title:"Delete field",children:t.jsx("svg",{width:"16",height:"16",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:"14px",marginBottom:n.alias&&n.alias!==n.id?"4px":"0"},children:n.id}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"#4b5563"},children:[n.alias&&n.alias!==n.id&&t.jsx("span",{children:n.alias}),n.mode&&t.jsx("span",{style:{fontSize:"10px",padding:"2px 6px",borderRadius:"4px",background:n.mode==="block"?"#dbeafe":"#f3f4f6",color:n.mode==="block"?"#1e40af":"#4b5563",fontWeight:"500"},children:n.mode})]})]})]},n.id))})]}),oe=o=>{const a=o.helpers?.structuredContentCommands;return a?.getStructuredContentTags?(a.getStructuredContentTags(o.state)||[]).map(d=>{const n=d?.node??d,m=n?.attrs??{},O=(n?.type?.name||"").includes("Block")?"block":"inline";return{id:m.id,alias:m.alias||m.label||"",tag:m.tag,mode:O}}):[]},xe=(o,a)=>{if(o===a)return!0;if(o.length!==a.length)return!1;for(let c=0;c<o.length;c+=1){const d=o[c],n=a[c];if(!n||d.id!==n.id||d.alias!==n.alias||d.tag!==n.tag||d.position!==n.position||d.mode!==n.mode)return!1}return!0},Le=o=>{if(!o)return null;if(o===!0)return{selector:"#superdoc-toolbar",config:{},renderDefaultContainer:!0};if(typeof o=="string")return{selector:o,config:{},renderDefaultContainer:!1};const{selector:a,...c}=o;return{selector:a||"#superdoc-toolbar",config:c,renderDefaultContainer:a===void 0}},Q=10,He=250,Pe=300,fe=o=>{const a=window.innerWidth-He-Q,c=window.innerHeight-Pe-Q,d=Math.min(o.left,a),n=Math.min(o.top,c);return new DOMRect(Math.max(d,Q),Math.max(n,Q),o.width,o.height)},he=s.forwardRef((o,a)=>{const{document:c,fields:d={},menu:n={},list:m={},toolbar:N,onReady:O,onTrigger:z,onFieldInsert:_,onFieldUpdate:M,onFieldDelete:w,onFieldsChange:b,onFieldSelect:V,onFieldCreate:j,className:K,style:q,documentHeight:A="600px"}=o,[f,B]=s.useState(d.initial||[]),[S,U]=s.useState(null),[L,i]=s.useState(!1),[g,C]=s.useState(),[h,T]=s.useState(""),[R,be]=s.useState(()=>d.available||[]),X=s.useRef(null),v=s.useRef(null),E=s.useRef(null),se=s.useRef(d);se.current=d;const I=s.useRef(null),ie=s.useRef(L);s.useEffect(()=>{ie.current=L},[L]);const $=n.trigger||"{{",Y=se.current.available||[],le=s.useCallback(e=>{const r=e.trim().toLowerCase();return r?Y.filter(l=>{const u=l.label.toLowerCase(),F=l.category?.toLowerCase()||"";return u.includes(r)||F.includes(r)}):Y},[Y]),Z=s.useCallback(e=>{T(e),be(le(e))},[le]),H=s.useCallback(()=>{Z("")},[Z]),G=s.useCallback((e,r)=>{if(!v.current?.activeEditor)return!1;const l=v.current.activeEditor,u=f,F=e==="inline"?l.commands.insertStructuredContentInline?.({attrs:{alias:r.alias,tag:r.metadata?JSON.stringify(r.metadata):r.category},text:r.defaultValue||r.alias}):l.commands.insertStructuredContentBlock?.({attrs:{alias:r.alias,tag:r.metadata?JSON.stringify(r.metadata):r.category},text:r.defaultValue||r.alias});if(F){const y=oe(l);B(y),b?.(y);const p=y.find(x=>!u.some(D=>D.id===x.id));p&&_?.(p)}return F},[_,b,f]),ee=s.useCallback((e,r)=>{if(!v.current?.activeEditor)return!1;const u=v.current.activeEditor.commands.updateStructuredContentById?.(e,{attrs:r});return u&&B(F=>{const y=F.map(x=>x.id===e?{...x,...r}:x);b?.(y);const p=y.find(x=>x.id===e);return p&&M?.(p),y}),u},[M,b]),te=s.useCallback(e=>{const r=v.current?.activeEditor;if(!r){console.warn("[SuperDocTemplateBuilder] deleteField called without active editor");let p=!1;return B(x=>{if(!x.some(k=>k.id===e))return x;const D=x.filter(k=>k.id!==e);return p=!0,b?.(D),D}),p&&(w?.(e),U(x=>x===e?null:x)),p}let l=!1;try{l=r.commands.deleteStructuredContentById?.(e)??!1}catch(p){console.error("[SuperDocTemplateBuilder] Delete command failed:",p)}let u=oe(r);const F=u.some(p=>p.id===e);!l&&F&&(u=u.filter(p=>p.id!==e));let y=!1;return B(p=>{if(xe(p,u))return p;const x=p.some(k=>k.id===e),D=u.some(k=>k.id===e);return x&&!D&&(y=!0),b?.(u),u}),y&&(w?.(e),U(p=>p===e?null:p)),l||y},[w,b]),P=s.useCallback(e=>{if(!v.current?.activeEditor)return;v.current.activeEditor.commands.selectStructuredContentById?.(e),U(e);const l=f.find(u=>u.id===e);l&&V?.(l)},[f,V]),ne=s.useCallback(e=>{if(!e)return;const r=oe(e);B(l=>xe(l,r)?l:(b?.(r),r))},[b]);s.useEffect(()=>X.current?((async()=>{const{SuperDoc:r}=await import("superdoc"),l={selector:X.current,document:c?.source,documentMode:c?.mode||"editing",onReady:()=>{if(u.activeEditor){const F=u.activeEditor;F.on("update",({editor:y})=>{const{state:p}=y,{from:x}=p.selection;if(x>=$.length){const re=x-$.length;if(p.doc.textBetween(re,x)===$){const de=y.view.coordsAtPos(x),ce=fe(new DOMRect(de.left,de.top,0,0)),ue=()=>{const J=v.current?.activeEditor;if(!J)return;const Se=J.state.selection.from,Me=J.state.tr.delete(re,Se);J.view.dispatch(Me)};E.current=ue,I.current=x,C(ce),i(!0),H(),z?.({position:{from:re,to:x},bounds:ce,cleanup:ue});return}}if(!ie.current)return;if(I.current==null){i(!1),H();return}if(x<I.current){i(!1),I.current=null,H();return}const D=p.doc.textBetween(I.current,x);Z(D);const k=y.view.coordsAtPos(x),we=fe(new DOMRect(k.left,k.top,0,0));C(we)}),F.on("update",()=>{ne(F)}),ne(F)}O?.()}},u=new r({selector:X.current,documentMode:c?.mode||"editing",...l,...W&&{toolbar:W.selector,modules:{toolbar:{selector:W.selector,toolbarGroups:W.config.toolbarGroups||["center"],excludeItems:W.config.excludeItems||[],...W.config}}}});v.current=u})(),()=>{E.current=null,I.current=null;const r=v.current;r&&typeof r.destroy=="function"&&r.destroy(),v.current=null}):void 0,[c?.source,c?.mode,$,ne,O,z,N]);const ye=s.useCallback(async e=>{E.current&&(E.current(),E.current=null),I.current=null,H();const r=e.metadata?.mode||"inline";if(e.id.startsWith("custom_")&&j)try{const l=await j(e);if(l){const u=l.metadata?.mode||r;G(u,{alias:l.label,category:l.category,metadata:l.metadata,defaultValue:l.defaultValue}),i(!1);return}}catch(l){console.error("Field creation failed:",l)}G(r,{alias:e.label,category:e.category,metadata:e.metadata,defaultValue:e.defaultValue}),i(!1)},[G,j,H]),Ce=s.useCallback(()=>{i(!1),I.current=null,H(),E.current&&(E.current(),E.current=null)},[H]),ve=s.useCallback(()=>{if(!v.current?.activeEditor||f.length===0)return;const e=f.findIndex(l=>l.id===S),r=e>=0?(e+1)%f.length:0;P(f[r].id)},[f,S,P]),Fe=s.useCallback(()=>{if(!v.current?.activeEditor||f.length===0)return;const e=f.findIndex(l=>l.id===S),r=e>0?e-1:f.length-1;P(f[r].id)},[f,S,P]),je=s.useCallback(async e=>{const{fileName:r="document",triggerDownload:l=!0}=e||{};try{return await v.current?.export({exportType:["docx"],exportedName:r,triggerDownload:l})}catch(u){throw console.error("Failed to export DOCX",u),u}},[]);s.useImperativeHandle(a,()=>({insertField:e=>G("inline",e),insertBlockField:e=>G("block",e),updateField:ee,deleteField:te,selectField:P,nextField:ve,previousField:Fe,getFields:()=>f,exportTemplate:je}));const ke=n.component||me,ae=m.component||ge,W=Le(N);return t.jsxs("div",{className:`superdoc-template-builder ${K||""}`,style:q,children:[t.jsxs("div",{style:{display:"flex",gap:"20px"},children:[m.position==="left"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ae,{fields:f,onSelect:e=>P(e.id),onDelete:te,onUpdate:e=>ee(e.id,e),selectedFieldId:S||void 0})}),t.jsxs("div",{className:"superdoc-template-builder-document",style:{flex:1},children:[W?.renderDefaultContainer&&t.jsx("div",{id:"superdoc-toolbar",className:"superdoc-template-builder-toolbar","data-testid":"template-builder-toolbar"}),t.jsx("div",{ref:X,className:"superdoc-template-builder-editor",style:{height:A},"data-testid":"template-builder-editor"})]}),m.position==="right"&&t.jsx("div",{className:"superdoc-template-builder-sidebar",children:t.jsx(ae,{fields:f,onSelect:e=>P(e.id),onDelete:te,onUpdate:e=>ee(e.id,e),selectedFieldId:S||void 0})})]}),t.jsx(ke,{isVisible:L,position:g,availableFields:d.available||[],filteredFields:R,filterQuery:h,allowCreate:d.allowCreate||!1,onSelect:ye,onClose:Ce,onCreateField:j})]})});he.displayName="SuperDocTemplateBuilder";exports.FieldList=ge;exports.FieldMenu=me;exports.default=he;
1
+ "use strict";var Me=Object.create;var be=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Le=Object.prototype.hasOwnProperty;var We=(o,u,f,p)=>{if(u&&typeof u=="object"||typeof u=="function")for(let r of Ie(u))!Le.call(o,r)&&r!==f&&be(o,r,{get:()=>u[r],enumerable:!(p=Ae(u,r))||p.enumerable});return o};var Be=(o,u,f)=>(f=o!=null?Me(De(o)):{},We(u||!o||!o.__esModule?be(f,"default",{value:o,enumerable:!0}):f,o));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react");var le={exports:{}},oe={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var he;function Ve(){if(he)return oe;he=1;var o=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function f(p,r,c){var S=null;if(c!==void 0&&(S=""+c),r.key!==void 0&&(S=""+r.key),"key"in r){c={};for(var N in r)N!=="key"&&(c[N]=r[N])}else c=r;return r=c.ref,{$$typeof:o,type:p,key:S,ref:r!==void 0?r:null,props:c}}return oe.Fragment=u,oe.jsx=f,oe.jsxs=f,oe}var se={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var ye;function Ye(){return ye||(ye=1,process.env.NODE_ENV!=="production"&&(function(){function o(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===W?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case z:return"Fragment";case x:return"Profiler";case G:return"StrictMode";case $:return"Suspense";case l:return"SuspenseList";case C:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case ee:return"Portal";case I:return e.displayName||"Context";case Y:return(e._context.displayName||"Context")+".Consumer";case J:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case E:return a=e.displayName||null,a!==null?a:o(e.type)||"Memo";case R:a=e._payload,e=e._init;try{return o(e(a))}catch{}}return null}function u(e){return""+e}function f(e){try{u(e);var a=!1}catch{a=!0}if(a){a=console;var g=a.error,m=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return g.call(a,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",m),u(e)}}function p(e){if(e===z)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===R)return"<...>";try{var a=o(e);return a?"<"+a+">":"<...>"}catch{return"<...>"}}function r(){var e=P.A;return e===null?null:e.getOwner()}function c(){return Error("react-stack-top-frame")}function S(e){if(ae.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function N(e,a){function g(){D||(D=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",a))}g.isReactWarning=!0,Object.defineProperty(e,"key",{get:g,configurable:!0})}function H(){var e=o(this.type);return re[e]||(re[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function q(e,a,g,m,B,Q){var v=g.ref;return e={$$typeof:w,type:e,key:a,props:g,_owner:m},(v!==void 0?v:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:H}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:B}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Q}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function M(e,a,g,m,B,Q){var v=a.children;if(v!==void 0)if(m)if(te(v)){for(m=0;m<v.length;m++)O(v[m]);Object.freeze&&Object.freeze(v)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else O(v);if(ae.call(a,"key")){v=o(e);var _=Object.keys(a).filter(function(de){return de!=="key"});m=0<_.length?"{key: someKey, "+_.join(": ..., ")+": ...}":"{key: someKey}",X[v+m]||(_=0<_.length?"{"+_.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,m,v,_,v),X[v+m]=!0)}if(v=null,g!==void 0&&(f(g),v=""+g),S(a)&&(f(a.key),v=""+a.key),"key"in a){g={};for(var Z in a)Z!=="key"&&(g[Z]=a[Z])}else g=a;return v&&N(g,typeof e=="function"?e.displayName||e.name||"Unknown":e),q(e,v,g,r(),B,Q)}function O(e){k(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===R&&(e._payload.status==="fulfilled"?k(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function k(e){return typeof e=="object"&&e!==null&&e.$$typeof===w}var A=i,w=Symbol.for("react.transitional.element"),ee=Symbol.for("react.portal"),z=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),Y=Symbol.for("react.consumer"),I=Symbol.for("react.context"),J=Symbol.for("react.forward_ref"),$=Symbol.for("react.suspense"),l=Symbol.for("react.suspense_list"),E=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),C=Symbol.for("react.activity"),W=Symbol.for("react.client.reference"),P=A.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ae=Object.prototype.hasOwnProperty,te=Array.isArray,T=console.createTask?console.createTask:function(){return null};A={react_stack_bottom_frame:function(e){return e()}};var D,re={},L=A.react_stack_bottom_frame.bind(A,c)(),ne=T(p(c)),X={};se.Fragment=z,se.jsx=function(e,a,g){var m=1e4>P.recentlyCreatedOwnerStacks++;return M(e,a,g,!1,m?Error("react-stack-top-frame"):L,m?T(p(e)):ne)},se.jsxs=function(e,a,g){var m=1e4>P.recentlyCreatedOwnerStacks++;return M(e,a,g,!0,m?Error("react-stack-top-frame"):L,m?T(p(e)):ne)}})()),se}var ve;function $e(){return ve||(ve=1,process.env.NODE_ENV==="production"?le.exports=Ve():le.exports=Ye()),le.exports}var n=$e();const Re=({isVisible:o,position:u,availableFields:f,filteredFields:p,filterQuery:r,allowCreate:c,onSelect:S,onClose:N,onCreateField:H})=>{const[q,M]=i.useState(!1),[O,k]=i.useState(""),[A,w]=i.useState("inline");i.useEffect(()=>{o||(M(!1),k(""),w("inline"))},[o]);const ee=i.useMemo(()=>({position:"absolute",left:u?.left,top:u?.top,zIndex:1e3,background:"white",border:"1px solid #ddd",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.1)",padding:"8px 0",minWidth:"200px"}),[u]),z=p??f,G=!!r,x=i.useMemo(()=>{const l=[],E=new Map;return z.forEach(R=>{const C=R.category?.trim()||"Uncategorized",W=E.get(C);if(W!==void 0){l[W].fields.push(R);return}E.set(C,l.length),l.push({category:C,fields:[R]})}),l},[z]),[Y,I]=i.useState({});i.useEffect(()=>{I(l=>{if(x.length===0)return Object.keys(l).length===0?l:{};const E={};let R=Object.keys(l).length!==x.length;return x.forEach(({category:C},W)=>{const P=G?!0:l[C]??W===0;E[C]=P,!R&&l[C]!==P&&(R=!0)}),R?E:l})},[x,G]);const J=i.useCallback(l=>{I(E=>({...E,[l]:!E[l]}))},[]);if(!o)return null;const $=async()=>{const l=O.trim();if(!l)return;const E={id:`custom_${Date.now()}`,label:l,category:"Custom",metadata:{mode:A}};try{if(H){const R=await H(E);S(R||E)}else S(E)}finally{M(!1),k(""),w("inline")}};return n.jsxs("div",{className:"superdoc-field-menu",style:ee,children:[G&&n.jsx("div",{style:{padding:"8px 16px",borderBottom:"1px solid #f0f0f0",marginBottom:"4px"},children:n.jsxs("div",{style:{fontSize:"12px",color:"#6b7280"},children:["Filtering results for",n.jsx("span",{style:{fontWeight:600,color:"#111827",marginLeft:"4px"},children:r})]})}),c&&!q&&n.jsx("div",{className:"field-menu-item",onClick:()=>M(!0),style:{padding:"8px 16px",cursor:"pointer",color:"#0066cc",fontWeight:500},children:"+ Create New Field"}),c&&q&&n.jsxs("div",{style:{padding:"8px 16px"},children:[n.jsx("input",{type:"text",value:O,placeholder:"Field name...",onChange:l=>k(l.target.value),onKeyDown:l=>{l.key==="Enter"&&$(),l.key==="Escape"&&(M(!1),k(""),w("inline"))},autoFocus:!0,style:{width:"100%",padding:"4px 8px",border:"1px solid #ddd",borderRadius:"3px"}}),n.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"12px",fontSize:"13px"},children:[n.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[n.jsx("input",{type:"radio",value:"inline",checked:A==="inline",onChange:()=>w("inline")}),"Inline"]}),n.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"4px",cursor:"pointer"},children:[n.jsx("input",{type:"radio",value:"block",checked:A==="block",onChange:()=>w("block")}),"Block"]})]}),n.jsxs("div",{style:{marginTop:"8px",display:"flex",gap:"8px"},children:[n.jsx("button",{onClick:$,disabled:!O.trim(),style:{padding:"4px 12px",background:O.trim()?"#0066cc":"#ccc",color:"white",border:"none",borderRadius:"3px",cursor:O.trim()?"pointer":"not-allowed"},children:"Create"}),n.jsx("button",{onClick:()=>{M(!1),k(""),w("inline")},style:{padding:"4px 12px",background:"white",border:"1px solid #ddd",borderRadius:"3px",cursor:"pointer"},children:"Cancel"})]})]}),c&&f.length>0&&n.jsx("div",{style:{borderTop:"1px solid #eee",margin:"4px 0"}}),x.length===0?n.jsx("div",{style:{padding:"16px",fontSize:"13px",color:"#6b7280",textAlign:"center"},children:"No matching fields"}):x.map(({category:l,fields:E},R)=>{const C=!!Y[l],W=`${Math.max(E.length*40,0)}px`;return n.jsxs("div",{style:{borderTop:R===0&&c?void 0:"1px solid #f0f0f0"},children:[n.jsxs("button",{type:"button",onClick:()=>J(l),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",background:"transparent",border:"none",cursor:"pointer",fontWeight:500,textAlign:"left"},children:[n.jsxs("span",{children:[l," (",E.length,")"]}),n.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:"8px",height:"8px",borderRight:"2px solid #666",borderBottom:"2px solid #666",transform:C?"rotate(45deg)":"rotate(-45deg)",transition:"transform 0.2s ease",marginLeft:"12px"}})]}),n.jsx("div",{"data-category":l,"aria-hidden":!C,style:{overflow:"hidden",maxHeight:C?W:"0px",opacity:C?1:0,transition:"max-height 0.2s ease, opacity 0.2s ease",pointerEvents:C?"auto":"none"},children:n.jsx("div",{style:{padding:C?"4px 0":0},children:E.map(P=>n.jsx("div",{className:"field-menu-item",onClick:()=>S(P),style:{padding:"8px 16px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:n.jsx("span",{style:{fontWeight:500},children:P.label})},P.id))})})]},l)}),n.jsx("div",{style:{borderTop:"1px solid #eee",marginTop:"4px"},children:n.jsx("button",{onClick:N,style:{width:"100%",padding:"6px 16px",background:"#f3f4f6",border:"none",borderRadius:"0 0 4px 4px",cursor:"pointer"},children:"Close"})})]})},Ce=({fields:o,onSelect:u,onDelete:f,selectedFieldId:p})=>n.jsxs("div",{className:"superdoc-field-list",style:{width:"250px",background:"white",border:"1px solid #e5e7eb",borderRadius:"8px",padding:"16px"},children:[n.jsxs("h3",{style:{margin:"0 0 16px 0",fontSize:"16px",fontWeight:"600"},children:["Template Fields (",o.length,")"]}),o.length===0?n.jsxs("div",{style:{color:"#9ca3af",fontSize:"14px",textAlign:"center",padding:"20px 0"},children:["No fields yet. Type ","{{"," to add a field."]}):n.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:o.map(r=>n.jsxs("div",{onClick:()=>u(r),style:{position:"relative",padding:"12px",background:p===r.id?"#eff6ff":"#f9fafb",border:p===r.id?"1px solid #3b82f6":"1px solid #e5e7eb",borderRadius:"6px",cursor:"pointer",transition:"all 0.2s"},onMouseEnter:c=>{p!==r.id&&(c.currentTarget.style.background="#f3f4f6")},onMouseLeave:c=>{p!==r.id&&(c.currentTarget.style.background="#f9fafb")},title:r.alias,children:[n.jsx("button",{onClick:c=>{c.stopPropagation(),f(r.id)},style:{position:"absolute",top:"8px",right:"8px",padding:"4px",background:"transparent",border:"none",cursor:"pointer",color:"#9ca3af",transition:"color 0.2s",display:"flex",alignItems:"center",justifyContent:"center"},onMouseEnter:c=>{c.currentTarget.style.color="#ef4444"},onMouseLeave:c=>{c.currentTarget.style.color="#9ca3af"},title:"Delete field",children:n.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:n.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"})})}),n.jsxs("div",{style:{paddingRight:"24px"},children:[n.jsx("div",{style:{fontWeight:"500",fontSize:"14px",marginBottom:r.alias&&r.alias!==r.id?"4px":"0"},children:r.id}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"#4b5563"},children:[r.alias&&r.alias!==r.id&&n.jsx("span",{children:r.alias}),r.mode&&n.jsx("span",{style:{fontSize:"10px",padding:"2px 6px",borderRadius:"4px",background:r.mode==="block"?"#dbeafe":"#f3f4f6",color:r.mode==="block"?"#1e40af":"#4b5563",fontWeight:"500"},children:r.mode})]})]})]},r.id))})]}),pe=o=>{const u=o.helpers?.structuredContentCommands;return u?.getStructuredContentTags?(u.getStructuredContentTags(o.state)||[]).map(p=>{const r=p?.node??p,c=r?.attrs??{},N=(r?.type?.name||"").includes("Block")?"block":"inline";return{id:c.id,alias:c.alias||c.label||"",tag:c.tag,mode:N}}):[]},Ee=(o,u)=>{if(o===u)return!0;if(o.length!==u.length)return!1;for(let f=0;f<o.length;f+=1){const p=o[f],r=u[f];if(!r||p.id!==r.id||p.alias!==r.alias||p.tag!==r.tag||p.position!==r.position||p.mode!==r.mode)return!1}return!0},ze=o=>{if(!o)return null;if(o===!0)return{selector:"#superdoc-toolbar",config:{},renderDefaultContainer:!0};if(typeof o=="string")return{selector:o,config:{},renderDefaultContainer:!1};const{selector:u,...f}=o;return{selector:u||"#superdoc-toolbar",config:f,renderDefaultContainer:u===void 0}},ce=10,Ue=250,He=300,ke=o=>{const u=window.innerWidth-Ue-ce,f=window.innerHeight-He-ce,p=Math.min(o.left,u),r=Math.min(o.top,f);return new DOMRect(Math.max(p,ce),Math.max(r,ce),o.width,o.height)},Te=i.forwardRef((o,u)=>{const{document:f,fields:p={},menu:r={},list:c={},toolbar:S,onReady:N,onTrigger:H,onFieldInsert:q,onFieldUpdate:M,onFieldDelete:O,onFieldsChange:k,onFieldSelect:A,onFieldCreate:w,className:ee,style:z,documentHeight:G="600px"}=o,[x,Y]=i.useState(p.initial||[]),[I,J]=i.useState(null),[$,l]=i.useState(!1),[E,R]=i.useState(),[C,W]=i.useState(""),[P,ae]=i.useState(()=>p.available||[]),te=i.useRef(null),T=i.useRef(null),D=i.useRef(null),re=i.useRef(p);re.current=p;const L=i.useRef(null),ne=i.useRef($);i.useEffect(()=>{ne.current=$},[$]);const X=r.trigger||"{{",e=re.current.available||[],a=i.useCallback(t=>{const s=t.trim().toLowerCase();return s?e.filter(d=>{const b=d.label.toLowerCase(),F=d.category?.toLowerCase()||"";return b.includes(s)||F.includes(s)}):e},[e]),g=i.useCallback(t=>{W(t),ae(a(t))},[a]),m=i.useCallback(()=>{g("")},[g]),B=i.useCallback((t,s)=>{if(!T.current?.activeEditor)return!1;const d=T.current.activeEditor,b=x,F=t==="inline"?d.commands.insertStructuredContentInline?.({attrs:{alias:s.alias,tag:s.metadata?JSON.stringify(s.metadata):s.category},text:s.defaultValue||s.alias}):d.commands.insertStructuredContentBlock?.({attrs:{alias:s.alias,tag:s.metadata?JSON.stringify(s.metadata):s.category},text:s.defaultValue||s.alias});if(F){const j=pe(d);Y(j),k?.(j);const h=j.find(y=>!b.some(U=>U.id===y.id));h&&q?.(h)}return F},[q,k,x]),Q=i.useCallback((t,s)=>{if(!T.current?.activeEditor)return!1;const b=T.current.activeEditor.commands.updateStructuredContentById?.(t,{attrs:s});return b&&Y(F=>{const j=F.map(y=>y.id===t?{...y,...s}:y);k?.(j);const h=j.find(y=>y.id===t);return h&&M?.(h),j}),b},[M,k]),v=i.useCallback(t=>{const s=T.current?.activeEditor;if(!s){console.warn("[SuperDocTemplateBuilder] deleteField called without active editor");let h=!1;return Y(y=>{if(!y.some(V=>V.id===t))return y;const U=y.filter(V=>V.id!==t);return h=!0,k?.(U),U}),h&&(O?.(t),J(y=>y===t?null:y)),h}let d=!1;try{d=s.commands.deleteStructuredContentById?.(t)??!1}catch(h){console.error("[SuperDocTemplateBuilder] Delete command failed:",h)}let b=pe(s);const F=b.some(h=>h.id===t);!d&&F&&(b=b.filter(h=>h.id!==t));let j=!1;return Y(h=>{if(Ee(h,b))return h;const y=h.some(V=>V.id===t),U=b.some(V=>V.id===t);return y&&!U&&(j=!0),k?.(b),b}),j&&(O?.(t),J(h=>h===t?null:h)),d||j},[O,k]),_=i.useCallback(t=>{if(!T.current?.activeEditor)return;T.current.activeEditor.commands.selectStructuredContentById?.(t),J(t);const d=x.find(b=>b.id===t);d&&A?.(d)},[x,A]),Z=i.useCallback(t=>{if(!t)return;const s=pe(t);Y(d=>Ee(d,s)?d:(k?.(s),s))},[k]);i.useEffect(()=>te.current?((async()=>{const{SuperDoc:s}=await import("superdoc"),d={selector:te.current,document:f?.source,documentMode:f?.mode||"editing",onReady:()=>{if(b.activeEditor){const F=b.activeEditor;F.on("update",({editor:j})=>{const{state:h}=j,{from:y}=h.selection;if(y>=X.length){const ue=y-X.length;if(h.doc.textBetween(ue,y)===X){const me=j.view.coordsAtPos(y),xe=ke(new DOMRect(me.left,me.top,0,0)),ge=()=>{const ie=T.current?.activeEditor;if(!ie)return;const Oe=ie.state.selection.from,Pe=ie.state.tr.delete(ue,Oe);ie.view.dispatch(Pe)};D.current=ge,L.current=y,R(xe),l(!0),m(),H?.({position:{from:ue,to:y},bounds:xe,cleanup:ge});return}}if(!ne.current)return;if(L.current==null){l(!1),m();return}if(y<L.current){l(!1),L.current=null,m();return}const U=h.doc.textBetween(L.current,y);g(U);const V=j.view.coordsAtPos(y),Ne=ke(new DOMRect(V.left,V.top,0,0));R(Ne)}),F.on("update",()=>{Z(F)}),Z(F)}N?.()}},b=new s({...d,...K&&{toolbar:K.selector,modules:{toolbar:{selector:K.selector,toolbarGroups:K.config.toolbarGroups||["center"],excludeItems:K.config.excludeItems||[],...K.config}}}});T.current=b})(),()=>{D.current=null,L.current=null;const s=T.current;s&&typeof s.destroy=="function"&&s.destroy(),T.current=null}):void 0,[f?.source,f?.mode,X,Z,N,H,S]);const de=i.useCallback(async t=>{D.current&&(D.current(),D.current=null),L.current=null,m();const s=t.metadata?.mode||"inline";if(t.id.startsWith("custom_")&&w)try{const d=await w(t);if(d){const b=d.metadata?.mode||s;B(b,{alias:d.label,category:d.category,metadata:d.metadata,defaultValue:d.defaultValue}),l(!1);return}}catch(d){console.error("Field creation failed:",d)}B(s,{alias:t.label,category:t.category,metadata:t.metadata,defaultValue:t.defaultValue}),l(!1)},[B,w,m]),je=i.useCallback(()=>{l(!1),L.current=null,m(),D.current&&(D.current(),D.current=null)},[m]),we=i.useCallback(()=>{if(!T.current?.activeEditor||x.length===0)return;const t=x.findIndex(d=>d.id===I),s=t>=0?(t+1)%x.length:0;_(x[s].id)},[x,I,_]),_e=i.useCallback(()=>{if(!T.current?.activeEditor||x.length===0)return;const t=x.findIndex(d=>d.id===I),s=t>0?t-1:x.length-1;_(x[s].id)},[x,I,_]),Se=i.useCallback(async t=>{const{fileName:s="document",triggerDownload:d=!0}=t||{};try{return await T.current?.export({exportType:["docx"],exportedName:s,triggerDownload:d})}catch(b){throw console.error("Failed to export DOCX",b),b}},[]);i.useImperativeHandle(u,()=>({insertField:t=>B("inline",t),insertBlockField:t=>B("block",t),updateField:Q,deleteField:v,selectField:_,nextField:we,previousField:_e,getFields:()=>x,exportTemplate:Se}));const Fe=r.component||Re,fe=c.component||Ce,K=ze(S);return n.jsxs("div",{className:`superdoc-template-builder ${ee||""}`,style:z,children:[n.jsxs("div",{style:{display:"flex",gap:"20px"},children:[c.position==="left"&&n.jsx("div",{className:"superdoc-template-builder-sidebar",children:n.jsx(fe,{fields:x,onSelect:t=>_(t.id),onDelete:v,onUpdate:t=>Q(t.id,t),selectedFieldId:I||void 0})}),n.jsxs("div",{className:"superdoc-template-builder-document",style:{flex:1},children:[K?.renderDefaultContainer&&n.jsx("div",{id:"superdoc-toolbar",className:"superdoc-template-builder-toolbar","data-testid":"template-builder-toolbar"}),n.jsx("div",{ref:te,className:"superdoc-template-builder-editor",style:{height:G},"data-testid":"template-builder-editor"})]}),c.position==="right"&&n.jsx("div",{className:"superdoc-template-builder-sidebar",children:n.jsx(fe,{fields:x,onSelect:t=>_(t.id),onDelete:v,onUpdate:t=>Q(t.id,t),selectedFieldId:I||void 0})})]}),n.jsx(Fe,{isVisible:$,position:E,availableFields:p.available||[],filteredFields:P,filterQuery:C,allowCreate:p.allowCreate||!1,onSelect:de,onClose:je,onCreateField:w})]})});Te.displayName="SuperDocTemplateBuilder";exports.FieldList=Ce;exports.FieldMenu=Re;exports.default=Te;