@forgedevstack/ink 1.1.0 → 1.1.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/CHANGELOG.md +9 -0
- package/dist/components/InkEditor/InkEditor.cjs +1 -1
- package/dist/components/InkEditor/InkEditor.d.ts.map +1 -1
- package/dist/components/InkEditor/InkEditor.js +344 -331
- package/dist/components/InkEditor/components/AiPanel/AiPanel.cjs +1 -1
- package/dist/components/InkEditor/components/AiPanel/AiPanel.js +7 -6
- package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.cjs +1 -1
- package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.js +3 -2
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/premium.const.cjs +1 -0
- package/dist/constants/premium.const.d.ts +8 -0
- package/dist/constants/premium.const.d.ts.map +1 -0
- package/dist/constants/premium.const.js +97 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -29
- package/dist/styles.css +23 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/ink.types.d.ts +7 -0
- package/dist/types/ink.types.d.ts.map +1 -1
- package/dist/types/premium.types.d.ts +30 -0
- package/dist/types/premium.types.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/license.utils.cjs +1 -0
- package/dist/utils/license.utils.d.ts +2 -0
- package/dist/utils/license.utils.d.ts.map +1 -0
- package/dist/utils/license.utils.js +16 -0
- package/dist/utils/paste.utils.cjs +1 -0
- package/dist/utils/paste.utils.d.ts +4 -0
- package/dist/utils/paste.utils.d.ts.map +1 -0
- package/dist/utils/paste.utils.js +31 -0
- package/dist/utils/premium.utils.cjs +1 -0
- package/dist/utils/premium.utils.d.ts +6 -0
- package/dist/utils/premium.utils.d.ts.map +1 -0
- package/dist/utils/premium.utils.js +30 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Premium scaffolding: `premium={{ enabled | licenseKey }}` unlocks theme tokens, icon map, rich paste, image upload, WYSIWYG
|
|
7
|
+
- Props: `theme`, `icons`, `pasteMode="rich"`, `onImageUpload`, `wysiwyg`
|
|
8
|
+
- Helpers: `resolveInkPremium`, `mintInkPremiumLicenseKey`, `sanitizePastedHtml`, `INK_DEFAULT_ICONS`
|
|
9
|
+
- License format: `ink_prem_XXXX_XXXX_XXXX_XXXX`
|
|
10
|
+
- Example Stripe webhook stub: `examples/stripe-webhook.mjs`
|
|
11
|
+
|
|
3
12
|
## 1.1.0 — 2026-08-01
|
|
4
13
|
|
|
5
14
|
### Added
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),a=require("react"),J=require("../../constants/numbers.const.cjs"),d=require("../../constants/defaults.const.cjs"),ht=require("../../utils/cn.utils.cjs"),Ct=require("../../utils/typo.utils.cjs"),be=require("../../utils/id.utils.cjs"),gt=require("../../utils/table.utils.cjs"),D=require("../../utils/blocks.utils.cjs"),I=require("../../utils/trackChanges.utils.cjs"),Q=require("../../utils/comments.utils.cjs"),Ie=require("../../utils/history.utils.cjs"),Se=require("../../utils/slash.utils.cjs"),l=require("./helpers/format.utils.cjs"),p=require("./components/ToolbarButton/ToolbarButton.cjs"),pt=require("./components/ToolbarDropdown/ToolbarDropdown.cjs"),xe=require("./components/ToolbarColorPicker/ToolbarColorPicker.cjs"),kt=require("./components/CommentsPanel/CommentsPanel.cjs"),Tt=require("./components/AiPanel/AiPanel.cjs"),bt=require("./components/BlockHandles/BlockHandles.cjs"),It=require("./components/SlashMenu/SlashMenu.cjs"),St=require("./components/TrackChangesBar/TrackChangesBar.cjs"),k={bold:"B",italic:"I",underline:"U",strikethrough:"S",bulletList:"•",orderedList:"1.",link:"🔗",image:"🖼",table:"▦",undo:"↶",redo:"↷",trackChanges:"±",comments:"💬",ai:"✦",clearFormat:"⌫",alignLeft:"⫷",alignCenter:"☰",alignRight:"⫸",alignJustify:"≡",indent:"→",outdent:"←",blockquote:"“",code:"</>"},Y=()=>{const H=window.getSelection();if(!H||H.rangeCount===0)return"";const g=H.getRangeAt(0),S=document.createElement("div");return S.appendChild(g.cloneContents()),S.innerHTML},xt=H=>{var ke;const{value:g,defaultValue:S="",onChange:M,placeholder:Z=d.INK_PLACEHOLDER_DEFAULT,disabled:c=!1,readOnly:i=!1,minHeight:K=J.INK_MIN_HEIGHT,maxHeight:U,toolbar:Le=d.INK_DEFAULT_TOOLBAR,className:_e="",testId:He,allowImagePaste:Ae=!0,showCharCount:ee=!1,charCountMax:te,typoAutoFix:we=!0,variant:Ee=d.INK_DEFAULT_VARIANT,features:Ne,author:x=d.INK_DEFAULT_AUTHOR,trackChanges:A,onTrackChangesChange:q,trackChangesEnabled:y,onTrackChangesEnabledChange:P,comments:w,onCommentsChange:F,showCommentsPanel:E,onShowCommentsPanelChange:V,ai:h,slashCommands:Be,tableRows:ve=d.INK_TABLE_DEFAULT_ROWS,tableCols:ye=d.INK_TABLE_DEFAULT_COLS,...Re}=H,m={...d.INK_DEFAULT_FEATURES,...Ne},o=a.useRef(null),R=a.useRef(new Ie.InkHistoryStack(g??S)),[Oe,je]=a.useState(new Set),[De,ne]=a.useState("p"),[Me,Ke]=a.useState(0),[Ue,qe]=a.useState(J.INK_DEFAULT_TEXT_COLOR),[Pe,Fe]=a.useState(J.INK_DEFAULT_HIGHLIGHT_COLOR),[L,oe]=a.useState(y??!1),[Ve,re]=a.useState(A??[]),[Ge,se]=a.useState(w??[]),[$e,ce]=a.useState(E??!1),[ae,G]=a.useState(!!(h!=null&&h.enabled&&h.openOnInit)),[le,We]=a.useState(""),[Xe,ze]=a.useState(0),[Je,ie]=a.useState(!1),[Qe,O]=a.useState([]),[ue,Ye]=a.useState({top:0,left:0}),T=A??Ve,N=w??Ge,$=E??$e,de=Be??m.slash;a.useEffect(()=>{y!==void 0&&oe(y)},[y]),a.useEffect(()=>{A&&re(A)},[A]),a.useEffect(()=>{w&&se(w)},[w]),a.useEffect(()=>{E!==void 0&&ce(E)},[E]),a.useEffect(()=>{!o.current||g===void 0||o.current.innerHTML!==g&&(o.current.innerHTML=g)},[g]),a.useEffect(()=>{!o.current||g||!S||(o.current.innerHTML=S,R.current=new Ie.InkHistoryStack(S))},[]);const W=e=>{var t;R.current.push(e),M==null||M(e),ee&&o.current&&Ke(((t=o.current.textContent)==null?void 0:t.length)??0)},_=e=>{o.current&&(o.current.innerHTML=e,W(e))},B=e=>{re(e),q==null||q(e)},X=e=>{se(e),F==null||F(e)},z=e=>{ce(e),V==null||V(e)},Ze=e=>{oe(e),P==null||P(e)},j=()=>{je(l.getActiveFormats());const e=l.queryCommandValue("formatBlock");if(e&&ne(e.toLowerCase().replace(/[<>]/g,"")),We(Y()),!o.current||!m.blocks)return;const t=window.getSelection(),n=(t==null?void 0:t.anchorNode)??null,r=D.getBlockElement(n,o.current);if(D.markActiveBlock(o.current,r),r){const u=o.current.getBoundingClientRect(),C=r.getBoundingClientRect();ze(C.top-u.top+o.current.scrollTop),ie(!0)}else ie(!1)},f=()=>{var t,n,r;if(!o.current)return;let e=o.current.innerHTML;if(L&&m.trackChanges){const u=window.getSelection();if(u&&!u.isCollapsed){const C=Y();if(C){const b=I.createTrackChange("delete",C,x);B([...T,b]),et(b.id),e=o.current.innerHTML}}}if(W(e),j(),de&&o.current){const u=((n=(t=window.getSelection())==null?void 0:t.anchorNode)==null?void 0:n.textContent)??"",C=Se.extractSlashQuery(u);if(C!==null){O(Se.filterSlashCommands(C));const b=(r=window.getSelection())==null?void 0:r.getRangeAt(0);if(b&&o.current){const v=b.getBoundingClientRect(),Te=o.current.getBoundingClientRect();Ye({top:v.bottom-Te.top+8,left:v.left-Te.left})}}else O([])}},et=e=>{const t=window.getSelection();if(!t||t.rangeCount===0)return;const n=Y();n&&l.insertHTML(I.wrapDeleteHtml(n,e))},tt=()=>{if(!o.current||!we||!m.typoAutoFix||c||i)return;const e=o.current.innerHTML,t=Ct.applyTypoAutoFix(e);t.html!==e&&(o.current.innerHTML=t.html,W(t.html))},nt=e=>{var n;if(c||i)return;(n=o.current)==null||n.focus();const t=d.INK_BUTTON_CONFIG[e];t&&(t.value?l.execCommand(t.command,t.value):l.execCommand(t.command),f())},ot=e=>{var t;c||i||((t=o.current)==null||t.focus(),l.execCommand("formatBlock",e),ne(e),f())},rt=()=>{var t;if(c||i)return;const e=window.prompt("Enter URL:","https://");e&&((t=o.current)==null||t.focus(),l.insertLink(e),f())},st=async()=>{if(c||i)return;const e=document.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{var r,u;const t=(r=e.files)==null?void 0:r[0];if(!t)return;const n=await l.fileToDataUrl(t);(u=o.current)==null||u.focus(),l.insertImage(n,t.name),f()},e.click()},me=()=>{var t;if(c||i||!m.table)return;(t=o.current)==null||t.focus();const e=gt.buildTableHtml(ve,ye);if(L&&m.trackChanges){const n=I.createTrackChange("insert",e,x);B([...T,n]),l.insertHTML(I.wrapInsertHtml(e,n.id))}else l.insertHTML(e);f()},fe=()=>{const e=R.current.undo();if(e===null||!o.current){l.execCommand("undo"),f();return}_(e)},he=()=>{const e=R.current.redo();if(e===null||!o.current){l.execCommand("redo"),f();return}_(e)},ct=()=>{var u;if(c||i||!m.comments)return;const e=window.prompt("Comment:");if(!(e!=null&&e.trim()))return;const t=be.createInkId("hl");if((u=o.current)==null||u.focus(),!Q.wrapSelectionAsComment(t))return;const r=Q.createCommentThread(x,e.trim(),t);X([r,...N]),z(!0),f()},Ce=e=>{if(!o.current)return;const t=I.acceptTrackChangeInHtml(o.current.innerHTML,e);_(t),B(T.map(n=>n.id===e?{...n,accepted:!0}:n))},ge=e=>{if(!o.current)return;const t=I.rejectTrackChangeInHtml(o.current.innerHTML,e);_(t),B(T.map(n=>n.id===e?{...n,rejected:!0}:n))},at=async e=>{var n;if(!Ae||c||i)return;const t=(n=e.clipboardData)==null?void 0:n.items;if(t)for(const r of Array.from(t)){if(!r.type.startsWith("image/"))continue;e.preventDefault();const u=r.getAsFile();if(!u)continue;const C=await l.fileToDataUrl(u);if(L&&m.trackChanges){const b=`<img src="${C}" alt="" style="max-width:100%;height:auto;" />`,v=I.createTrackChange("insert",b,x);B([...T,v]),l.insertHTML(I.wrapInsertHtml(b,v.id))}else l.insertImage(C);f()}},lt=e=>{e.key==="Escape"&&O([]),(e.metaKey||e.ctrlKey)&&e.key==="z"&&(e.preventDefault(),e.shiftKey?he():fe())},it=e=>{var n,r;(n=o.current)==null||n.focus();const t=window.getSelection();if((r=t==null?void 0:t.anchorNode)!=null&&r.textContent){const C=t.anchorNode.textContent.replace(/(?:^|\s)\/[^\s]*$/," ");t.anchorNode.nodeType===Node.TEXT_NODE&&(t.anchorNode.textContent=C)}switch(O([]),e.insert){case"heading1":l.execCommand("formatBlock","h1");break;case"heading2":l.execCommand("formatBlock","h2");break;case"bulletList":l.execCommand("insertUnorderedList");break;case"orderedList":l.execCommand("insertOrderedList");break;case"table":me();return;case"ai":G(!0);break}f()},pe=e=>{if(!o.current)return;const t=window.getSelection(),n=D.getBlockElement((t==null?void 0:t.anchorNode)??null,o.current);n&&D.moveBlock(n,e)&&(f(),j())},ut=(e,t)=>{if(e==="divider")return s.jsx("span",{className:d.INK_CLASS_DIVIDER},`divider-${t}`);if(e==="headingDropdown")return s.jsx(pt.ToolbarDropdown,{title:"Heading",options:d.INK_HEADING_OPTIONS,value:De||"p",disabled:c||i,onChange:ot},"heading");if(e==="textColor")return s.jsx(xe.ToolbarColorPicker,{title:"Text color",type:"text",value:Ue,disabled:c||i,onChange:r=>{var u;(u=o.current)==null||u.focus(),l.setTextColor(r),qe(r),f()}},"textColor");if(e==="highlightColor")return s.jsx(xe.ToolbarColorPicker,{title:"Highlight color",type:"highlight",value:Pe,disabled:c||i,onChange:r=>{var u;(u=o.current)==null||u.focus(),l.setHighlightColor(r),Fe(r),f()}},"highlightColor");if(e==="link")return s.jsx(p.ToolbarButton,{icon:k.link,title:"Insert link",disabled:c||i,onClick:rt},"link");if(e==="image")return s.jsx(p.ToolbarButton,{icon:k.image,title:"Insert image",disabled:c||i,onClick:()=>{st()}},"image");if(e==="table")return m.table?s.jsx(p.ToolbarButton,{icon:k.table,title:"Insert table",disabled:c||i,onClick:me},"table"):null;if(e==="undo")return s.jsx(p.ToolbarButton,{icon:k.undo,title:"Undo",disabled:c||i,onClick:fe},"undo");if(e==="redo")return s.jsx(p.ToolbarButton,{icon:k.redo,title:"Redo",disabled:c||i,onClick:he},"redo");if(e==="trackChanges")return m.trackChanges?s.jsx(p.ToolbarButton,{icon:k.trackChanges,title:"Track changes",active:L,disabled:c||i,onClick:()=>Ze(!L)},"trackChanges"):null;if(e==="comments")return m.comments?s.jsx(p.ToolbarButton,{icon:k.comments,title:"Comments",active:$,disabled:c||i,onClick:()=>{$?z(!1):ct()}},"comments"):null;if(e==="ai")return!m.ai||!(h!=null&&h.enabled)?null:s.jsx(p.ToolbarButton,{icon:k.ai,title:"Ink AI",active:ae,disabled:c||i,onClick:()=>G(r=>!r)},"ai");const n=d.INK_BUTTON_CONFIG[e];return n?s.jsx(p.ToolbarButton,{icon:k[e]??e.slice(0,1).toUpperCase(),title:n.title,active:Oe.has(e),disabled:c||i,onClick:()=>nt(e)},e):null},dt=typeof K=="number"?`${K}px`:K,mt=typeof U=="number"?`${U}px`:U,ft=!!(h!=null&&h.enabled&&ae);return s.jsxs("div",{className:ht.cn(d.INK_CLASS_ROOT,_e),"data-testid":He,"data-disabled":c||void 0,"data-variant":Ee,...Re,children:[s.jsx("div",{className:d.INK_CLASS_TOOLBAR,role:"toolbar","aria-label":"Ink formatting toolbar",children:Le.map(ut)}),L&&m.trackChanges?s.jsx(St.TrackChangesBar,{changes:T,onAccept:Ce,onReject:ge,onAcceptAll:()=>T.forEach(e=>Ce(e.id)),onRejectAll:()=>T.forEach(e=>ge(e.id))}):null,s.jsxs("div",{className:d.INK_CLASS_SHELL,children:[s.jsxs("div",{className:d.INK_CLASS_BODY,children:[m.blocks?s.jsx(bt.BlockHandles,{visible:Je&&!c&&!i,top:Xe,onMoveUp:()=>pe("up"),onMoveDown:()=>pe("down")}):null,s.jsx("div",{ref:o,className:d.INK_CLASS_CONTENT,contentEditable:!c&&!i,role:"textbox","aria-multiline":"true","aria-placeholder":Z,"data-placeholder":Z,suppressContentEditableWarning:!0,style:{minHeight:dt,maxHeight:mt},onInput:f,onBlur:tt,onKeyUp:j,onKeyDown:lt,onMouseUp:j,onPaste:e=>{at(e)}}),de?s.jsx(It.SlashMenu,{items:Qe,top:ue.top,left:ue.left,onSelect:it}):null]}),$&&m.comments?s.jsx(kt.CommentsPanel,{comments:N,author:x,onClose:()=>z(!1),onResolve:e=>{const t=N.find(n=>n.id===e);X(N.map(n=>n.id===e?{...n,resolved:!0}:n)),t&&o.current&&_(Q.removeCommentMark(o.current.innerHTML,t.highlightId))},onAddReply:(e,t)=>{X(N.map(n=>n.id===e?{...n,replies:[...n.replies,{id:be.createInkId("reply"),author:x,body:t,timestamp:Date.now()}]}:n))}}):null,ft&&h?s.jsx(Tt.AiPanel,{config:h,documentHtml:((ke=o.current)==null?void 0:ke.innerHTML)??g??"",selectionHtml:le,onClose:()=>G(!1),onApplyHtml:e=>{var t;if((t=o.current)==null||t.focus(),le)l.insertHTML(e);else{_(e);return}f()}}):null]}),ee?s.jsxs("div",{className:d.INK_CLASS_FOOTER,children:[Me,te?` / ${te}`:""]}):null]})};exports.InkEditor=xt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),l=require("react"),Z=require("../../constants/numbers.const.cjs"),m=require("../../constants/defaults.const.cjs"),Ae=require("../../constants/premium.const.cjs"),Pt=require("../../utils/cn.utils.cjs"),Rt=require("../../utils/typo.utils.cjs"),ye=require("../../utils/id.utils.cjs"),Ot=require("../../utils/table.utils.cjs"),F=require("../../utils/blocks.utils.cjs"),I=require("../../utils/trackChanges.utils.cjs"),ee=require("../../utils/comments.utils.cjs"),Ee=require("../../utils/history.utils.cjs"),Ne=require("../../utils/slash.utils.cjs"),S=require("../../utils/premium.utils.cjs"),te=require("../../utils/paste.utils.cjs"),a=require("./helpers/format.utils.cjs"),T=require("./components/ToolbarButton/ToolbarButton.cjs"),Dt=require("./components/ToolbarDropdown/ToolbarDropdown.cjs"),ve=require("./components/ToolbarColorPicker/ToolbarColorPicker.cjs"),Ut=require("./components/CommentsPanel/CommentsPanel.cjs"),jt=require("./components/AiPanel/AiPanel.cjs"),Ft=require("./components/BlockHandles/BlockHandles.cjs"),Mt=require("./components/SlashMenu/SlashMenu.cjs"),Kt=require("./components/TrackChangesBar/TrackChangesBar.cjs"),ne=()=>{const A=window.getSelection();if(!A||A.rangeCount===0)return"";const g=A.getRangeAt(0),x=document.createElement("div");return x.appendChild(g.cloneContents()),x.innerHTML},qt=A=>{var Le;const{value:g,defaultValue:x="",onChange:M,placeholder:re=m.INK_PLACEHOLDER_DEFAULT,disabled:i=!1,readOnly:u=!1,minHeight:K=Z.INK_MIN_HEIGHT,maxHeight:q,toolbar:Be=m.INK_DEFAULT_TOOLBAR,className:Pe="",testId:Re,allowImagePaste:oe=!0,showCharCount:se=!1,charCountMax:ce,typoAutoFix:Oe=!0,variant:De=m.INK_DEFAULT_VARIANT,features:Ue,author:_=m.INK_DEFAULT_AUTHOR,trackChanges:y,onTrackChangesChange:V,trackChangesEnabled:O,onTrackChangesEnabledChange:G,comments:E,onCommentsChange:W,showCommentsPanel:N,onShowCommentsPanelChange:$,ai:h,slashCommands:je,tableRows:Fe=m.INK_TABLE_DEFAULT_ROWS,tableCols:Me=m.INK_TABLE_DEFAULT_COLS,premium:Ke,theme:qe,icons:ae,pasteMode:Ve="plain",onImageUpload:ie,wysiwyg:Ge=!1,style:We,...$e}=A,f={...m.INK_DEFAULT_FEATURES,...Ue},H=S.resolveInkPremium(Ke),ze=S.hasInkPremiumFeature(H,"icons"),Xe=S.hasInkPremiumFeature(H,"theme"),Qe=S.hasInkPremiumFeature(H,"richPaste"),Ye=S.hasInkPremiumFeature(H,"imageUpload"),Je=S.hasInkPremiumFeature(H,"wysiwyg")&&Ge,C=ze&&ae?{...Ae.INK_DEFAULT_ICONS,...ae}:Ae.INK_DEFAULT_ICONS,Ze=Xe?S.themeTokensToStyle(qe):{},et=Qe&&Ve==="rich",r=l.useRef(null),D=l.useRef(new Ee.InkHistoryStack(g??x)),[tt,nt]=l.useState(new Set),[rt,le]=l.useState("p"),[ot,st]=l.useState(0),[ct,at]=l.useState(Z.INK_DEFAULT_TEXT_COLOR),[it,lt]=l.useState(Z.INK_DEFAULT_HIGHLIGHT_COLOR),[w,ue]=l.useState(O??!1),[ut,de]=l.useState(y??[]),[dt,me]=l.useState(E??[]),[mt,fe]=l.useState(N??!1),[he,z]=l.useState(!!(h!=null&&h.enabled&&h.openOnInit)),[pe,ft]=l.useState(""),[ht,pt]=l.useState(0),[gt,ge]=l.useState(!1),[Ct,U]=l.useState([]),[Ce,Tt]=l.useState({top:0,left:0}),k=y??ut,v=E??dt,X=N??mt,Te=je??f.slash;l.useEffect(()=>{O!==void 0&&ue(O)},[O]),l.useEffect(()=>{y&&de(y)},[y]),l.useEffect(()=>{E&&me(E)},[E]),l.useEffect(()=>{N!==void 0&&fe(N)},[N]),l.useEffect(()=>{!r.current||g===void 0||r.current.innerHTML!==g&&(r.current.innerHTML=g)},[g]),l.useEffect(()=>{!r.current||g||!x||(r.current.innerHTML=x,D.current=new Ee.InkHistoryStack(x))},[]);const Q=e=>{var t;D.current.push(e),M==null||M(e),se&&r.current&&st(((t=r.current.textContent)==null?void 0:t.length)??0)},L=e=>{r.current&&(r.current.innerHTML=e,Q(e))},B=e=>{de(e),V==null||V(e)},Y=e=>{me(e),W==null||W(e)},J=e=>{fe(e),$==null||$(e)},kt=e=>{ue(e),G==null||G(e)},j=()=>{nt(a.getActiveFormats());const e=a.queryCommandValue("formatBlock");if(e&&le(e.toLowerCase().replace(/[<>]/g,"")),ft(ne()),!r.current||!f.blocks)return;const t=window.getSelection(),n=(t==null?void 0:t.anchorNode)??null,o=F.getBlockElement(n,r.current);if(F.markActiveBlock(r.current,o),o){const s=r.current.getBoundingClientRect(),p=o.getBoundingClientRect();pt(p.top-s.top+r.current.scrollTop),ge(!0)}else ge(!1)},d=()=>{var t,n,o;if(!r.current)return;let e=r.current.innerHTML;if(w&&f.trackChanges){const s=window.getSelection();if(s&&!s.isCollapsed){const p=ne();if(p){const b=I.createTrackChange("delete",p,_);B([...k,b]),bt(b.id),e=r.current.innerHTML}}}if(Q(e),j(),Te&&r.current){const s=((n=(t=window.getSelection())==null?void 0:t.anchorNode)==null?void 0:n.textContent)??"",p=Ne.extractSlashQuery(s);if(p!==null){U(Ne.filterSlashCommands(p));const b=(o=window.getSelection())==null?void 0:o.getRangeAt(0);if(b&&r.current){const P=b.getBoundingClientRect(),R=r.current.getBoundingClientRect();Tt({top:P.bottom-R.top+8,left:P.left-R.left})}}else U([])}},bt=e=>{const t=window.getSelection();if(!t||t.rangeCount===0)return;const n=ne();n&&a.insertHTML(I.wrapDeleteHtml(n,e))},It=()=>{if(!r.current||!Oe||!f.typoAutoFix||i||u)return;const e=r.current.innerHTML,t=Rt.applyTypoAutoFix(e);t.html!==e&&(r.current.innerHTML=t.html,Q(t.html))},xt=e=>{var n;if(i||u)return;(n=r.current)==null||n.focus();const t=m.INK_BUTTON_CONFIG[e];t&&(t.value?a.execCommand(t.command,t.value):a.execCommand(t.command),d())},St=e=>{var t;i||u||((t=r.current)==null||t.focus(),a.execCommand("formatBlock",e),le(e),d())},_t=()=>{var t;if(i||u)return;const e=window.prompt("Enter URL:","https://");e&&((t=r.current)==null||t.focus(),a.insertLink(e),d())},ke=async e=>Ye&&ie?ie(e):a.fileToDataUrl(e),Ht=async()=>{if(i||u)return;const e=document.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{var o,s;const t=(o=e.files)==null?void 0:o[0];if(!t)return;const n=await ke(t);(s=r.current)==null||s.focus(),a.insertImage(n,t.name),d()},e.click()},be=()=>{var t;if(i||u||!f.table)return;(t=r.current)==null||t.focus();const e=Ot.buildTableHtml(Fe,Me);if(w&&f.trackChanges){const n=I.createTrackChange("insert",e,_);B([...k,n]),a.insertHTML(I.wrapInsertHtml(e,n.id))}else a.insertHTML(e);d()},Ie=()=>{const e=D.current.undo();if(e===null||!r.current){a.execCommand("undo"),d();return}L(e)},xe=()=>{const e=D.current.redo();if(e===null||!r.current){a.execCommand("redo"),d();return}L(e)},wt=()=>{var s;if(i||u||!f.comments)return;const e=window.prompt("Comment:");if(!(e!=null&&e.trim()))return;const t=ye.createInkId("hl");if((s=r.current)==null||s.focus(),!ee.wrapSelectionAsComment(t))return;const o=ee.createCommentThread(_,e.trim(),t);Y([o,...v]),J(!0),d()},Se=e=>{if(!r.current)return;const t=I.acceptTrackChangeInHtml(r.current.innerHTML,e);L(t),B(k.map(n=>n.id===e?{...n,accepted:!0}:n))},_e=e=>{if(!r.current)return;const t=I.rejectTrackChangeInHtml(r.current.innerHTML,e);L(t),B(k.map(n=>n.id===e?{...n,rejected:!0}:n))},He=async e=>{const t=await ke(e),n=`<img src="${t}" alt="" style="max-width:100%;height:auto;" />`;if(w&&f.trackChanges){const o=I.createTrackChange("insert",n,_);B([...k,o]),a.insertHTML(I.wrapInsertHtml(n,o.id))}else a.insertImage(t);d()},Lt=async e=>{if(i||u)return;const t=e.clipboardData;if(!t)return;if(et){const o=te.extractClipboardHtml(t);if(o){e.preventDefault();const p=te.sanitizePastedHtml(o);p&&(a.insertHTML(p),d());const b=t.items;if(oe&&b)for(const P of Array.from(b)){if(!P.type.startsWith("image/"))continue;const R=P.getAsFile();R&&await He(R)}return}const s=te.extractClipboardText(t);if(s){e.preventDefault(),a.insertHTML(s.replace(/\n/g,"<br />")),d();return}}if(!oe)return;const n=t.items;if(n)for(const o of Array.from(n)){if(!o.type.startsWith("image/"))continue;e.preventDefault();const s=o.getAsFile();s&&await He(s)}},At=e=>{e.key==="Escape"&&U([]),(e.metaKey||e.ctrlKey)&&e.key==="z"&&(e.preventDefault(),e.shiftKey?xe():Ie())},yt=e=>{var n,o;(n=r.current)==null||n.focus();const t=window.getSelection();if((o=t==null?void 0:t.anchorNode)!=null&&o.textContent){const p=t.anchorNode.textContent.replace(/(?:^|\s)\/[^\s]*$/," ");t.anchorNode.nodeType===Node.TEXT_NODE&&(t.anchorNode.textContent=p)}switch(U([]),e.insert){case"heading1":a.execCommand("formatBlock","h1");break;case"heading2":a.execCommand("formatBlock","h2");break;case"bulletList":a.execCommand("insertUnorderedList");break;case"orderedList":a.execCommand("insertOrderedList");break;case"table":be();return;case"ai":z(!0);break}d()},we=e=>{if(!r.current)return;const t=window.getSelection(),n=F.getBlockElement((t==null?void 0:t.anchorNode)??null,r.current);n&&F.moveBlock(n,e)&&(d(),j())},Et=(e,t)=>{if(e==="divider")return c.jsx("span",{className:m.INK_CLASS_DIVIDER},`divider-${t}`);if(e==="headingDropdown")return c.jsx(Dt.ToolbarDropdown,{title:"Heading",options:m.INK_HEADING_OPTIONS,value:rt||"p",disabled:i||u,onChange:St},"heading");if(e==="textColor")return c.jsx(ve.ToolbarColorPicker,{title:"Text color",type:"text",value:ct,disabled:i||u,onChange:o=>{var s;(s=r.current)==null||s.focus(),a.setTextColor(o),at(o),d()}},"textColor");if(e==="highlightColor")return c.jsx(ve.ToolbarColorPicker,{title:"Highlight color",type:"highlight",value:it,disabled:i||u,onChange:o=>{var s;(s=r.current)==null||s.focus(),a.setHighlightColor(o),lt(o),d()}},"highlightColor");if(e==="link")return c.jsx(T.ToolbarButton,{icon:C.link,title:"Insert link",disabled:i||u,onClick:_t},"link");if(e==="image")return c.jsx(T.ToolbarButton,{icon:C.image,title:"Insert image",disabled:i||u,onClick:()=>{Ht()}},"image");if(e==="table")return f.table?c.jsx(T.ToolbarButton,{icon:C.table,title:"Insert table",disabled:i||u,onClick:be},"table"):null;if(e==="undo")return c.jsx(T.ToolbarButton,{icon:C.undo,title:"Undo",disabled:i||u,onClick:Ie},"undo");if(e==="redo")return c.jsx(T.ToolbarButton,{icon:C.redo,title:"Redo",disabled:i||u,onClick:xe},"redo");if(e==="trackChanges")return f.trackChanges?c.jsx(T.ToolbarButton,{icon:C.trackChanges,title:"Track changes",active:w,disabled:i||u,onClick:()=>kt(!w)},"trackChanges"):null;if(e==="comments")return f.comments?c.jsx(T.ToolbarButton,{icon:C.comments,title:"Comments",active:X,disabled:i||u,onClick:()=>{X?J(!1):wt()}},"comments"):null;if(e==="ai")return!f.ai||!(h!=null&&h.enabled)?null:c.jsx(T.ToolbarButton,{icon:C.ai,title:"Ink AI",active:he,disabled:i||u,onClick:()=>z(o=>!o)},"ai");const n=m.INK_BUTTON_CONFIG[e];return n?c.jsx(T.ToolbarButton,{icon:C[e]??e.slice(0,1).toUpperCase(),title:n.title,active:tt.has(e),disabled:i||u,onClick:()=>xt(e)},e):null},Nt=typeof K=="number"?`${K}px`:K,vt=typeof q=="number"?`${q}px`:q,Bt=!!(h!=null&&h.enabled&&he);return c.jsxs("div",{className:Pt.cn(m.INK_CLASS_ROOT,Pe),"data-testid":Re,"data-disabled":i||void 0,"data-variant":De,"data-premium":H.active||void 0,"data-wysiwyg":Je||void 0,style:{...Ze,...We},...$e,children:[c.jsx("div",{className:m.INK_CLASS_TOOLBAR,role:"toolbar","aria-label":"Ink formatting toolbar",children:Be.map(Et)}),w&&f.trackChanges?c.jsx(Kt.TrackChangesBar,{changes:k,onAccept:Se,onReject:_e,onAcceptAll:()=>k.forEach(e=>Se(e.id)),onRejectAll:()=>k.forEach(e=>_e(e.id))}):null,c.jsxs("div",{className:m.INK_CLASS_SHELL,children:[c.jsxs("div",{className:m.INK_CLASS_BODY,children:[f.blocks?c.jsx(Ft.BlockHandles,{visible:gt&&!i&&!u,top:ht,onMoveUp:()=>we("up"),onMoveDown:()=>we("down")}):null,c.jsx("div",{ref:r,className:m.INK_CLASS_CONTENT,contentEditable:!i&&!u,role:"textbox","aria-multiline":"true","aria-placeholder":re,"data-placeholder":re,suppressContentEditableWarning:!0,style:{minHeight:Nt,maxHeight:vt},onInput:d,onBlur:It,onKeyUp:j,onKeyDown:At,onMouseUp:j,onPaste:e=>{Lt(e)}}),Te?c.jsx(Mt.SlashMenu,{items:Ct,top:Ce.top,left:Ce.left,onSelect:yt}):null]}),X&&f.comments?c.jsx(Ut.CommentsPanel,{comments:v,author:_,onClose:()=>J(!1),onResolve:e=>{const t=v.find(n=>n.id===e);Y(v.map(n=>n.id===e?{...n,resolved:!0}:n)),t&&r.current&&L(ee.removeCommentMark(r.current.innerHTML,t.highlightId))},onAddReply:(e,t)=>{Y(v.map(n=>n.id===e?{...n,replies:[...n.replies,{id:ye.createInkId("reply"),author:_,body:t,timestamp:Date.now()}]}:n))}}):null,Bt&&h?c.jsx(jt.AiPanel,{config:h,documentHtml:((Le=r.current)==null?void 0:Le.innerHTML)??g??"",selectionHtml:pe,onClose:()=>z(!1),onApplyHtml:e=>{var t;if((t=r.current)==null||t.focus(),pe)a.insertHTML(e);else{L(e);return}d()}}):null]}),se?c.jsxs("div",{className:m.INK_CLASS_FOOTER,children:[ot,ce?` / ${ce}`:""]}):null]})};exports.InkEditor=qt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InkEditor.d.ts","sourceRoot":"","sources":["../../../src/components/InkEditor/InkEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"InkEditor.d.ts","sourceRoot":"","sources":["../../../src/components/InkEditor/InkEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,aAAa,CAAC;AAgFrB,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAuuBxC,CAAC"}
|