@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.
Files changed (40) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/components/InkEditor/InkEditor.cjs +1 -1
  3. package/dist/components/InkEditor/InkEditor.d.ts.map +1 -1
  4. package/dist/components/InkEditor/InkEditor.js +344 -331
  5. package/dist/components/InkEditor/components/AiPanel/AiPanel.cjs +1 -1
  6. package/dist/components/InkEditor/components/AiPanel/AiPanel.js +7 -6
  7. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.cjs +1 -1
  8. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.js +3 -2
  9. package/dist/constants/index.d.ts +1 -0
  10. package/dist/constants/index.d.ts.map +1 -1
  11. package/dist/constants/premium.const.cjs +1 -0
  12. package/dist/constants/premium.const.d.ts +8 -0
  13. package/dist/constants/premium.const.d.ts.map +1 -0
  14. package/dist/constants/premium.const.js +97 -0
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.d.ts +3 -3
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +42 -29
  19. package/dist/styles.css +23 -1
  20. package/dist/types/index.d.ts +1 -0
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/dist/types/ink.types.d.ts +7 -0
  23. package/dist/types/ink.types.d.ts.map +1 -1
  24. package/dist/types/premium.types.d.ts +30 -0
  25. package/dist/types/premium.types.d.ts.map +1 -0
  26. package/dist/utils/index.d.ts +3 -0
  27. package/dist/utils/index.d.ts.map +1 -1
  28. package/dist/utils/license.utils.cjs +1 -0
  29. package/dist/utils/license.utils.d.ts +2 -0
  30. package/dist/utils/license.utils.d.ts.map +1 -0
  31. package/dist/utils/license.utils.js +16 -0
  32. package/dist/utils/paste.utils.cjs +1 -0
  33. package/dist/utils/paste.utils.d.ts +4 -0
  34. package/dist/utils/paste.utils.d.ts.map +1 -0
  35. package/dist/utils/paste.utils.js +31 -0
  36. package/dist/utils/premium.utils.cjs +1 -0
  37. package/dist/utils/premium.utils.d.ts +6 -0
  38. package/dist/utils/premium.utils.d.ts.map +1 -0
  39. package/dist/utils/premium.utils.js +30 -0
  40. package/package.json +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),I=require("../../../../constants/defaults.const.cjs"),O=require("../../../../constants/aiModels.const.cjs"),P=require("../../../../plugins/ai/aiPlugin.cjs"),C=require("../../../../utils/id.utils.cjs"),G=w=>{var p,N,f,y;const{config:s,documentHtml:k,selectionHtml:v,onApplyHtml:T,onClose:b}=w,[a,L]=i.useState("chat"),[x,g]=i.useState(""),[o,_]=i.useState([]),[l,j]=i.useState(!1),[r,h]=i.useState(null),[H,D]=i.useState([]),[A,M]=i.useState(I.INK_TRANSLATE_LANGUAGES[1]),R=s.providerId||O.INK_AI_DEMO_PROVIDER_ID,q=((p=s.uiTheme)==null?void 0:p.className)||s.className||"",c=async(t,d,u)=>{var S;j(!0);try{const E=t==="chat"&&u?[...o,{id:C.createInkId("turn"),role:"user",content:u,timestamp:Date.now(),capability:t}]:o;t==="chat"&&u&&_(E);const n=await P.inkAi.runProvider(R,{capability:t,html:k,selectionHtml:v||void 0,prompt:u,history:E,options:d,modelId:s.modelId,documentSnapshot:{html:k,selectionHtml:v||void 0}});(S=n.turns)!=null&&S.length?_(m=>[...m,...n.turns]):n.text&&t!=="chat"&&_(m=>[...m,{id:C.createInkId("turn"),role:"assistant",content:n.text||"",timestamp:Date.now(),capability:t}]),n.diff&&h(n.diff),n.reviewSuggestions&&D(n.reviewSuggestions)}finally{j(!1)}},K=t=>{t.preventDefault();const d=x.trim();!d||l||(g(""),c("chat",void 0,d))};return e.jsxs("aside",{className:`Ink-Ai ${q}`.trim(),"data-placement":s.placement||"sidebar",style:{"--ink-ai-accent":(N=s.uiTheme)==null?void 0:N.accent,"--ink-ai-surface":(f=s.uiTheme)==null?void 0:f.surface,"--ink-ai-border":(y=s.uiTheme)==null?void 0:y.border},"aria-label":"Ink AI",children:[e.jsxs("div",{className:"Ink-Ai__header",children:[e.jsx("strong",{children:"Ink AI"}),b?e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:b,title:"Close AI",children:"×"}):null]}),e.jsx("div",{className:"Ink-Ai__tabs",role:"tablist",children:["chat","actions","review","translate"].map(t=>e.jsx("button",{type:"button",role:"tab",className:`Ink-Editor__button${a===t?" Ink-Editor__button--active":""}`,"aria-selected":a===t,onClick:()=>L(t),children:t},t))}),e.jsxs("div",{className:"Ink-Ai__body",children:[a==="chat"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"Ink-Ai__history",children:o.length===0?e.jsxs("p",{className:"Ink-Ai__empty",children:["Multi-turn chat with local demo provider. Bring your own LLM via"," ",e.jsx("code",{children:"inkAi.registerProvider"}),"."]}):o.map(t=>e.jsxs("div",{className:`Ink-Ai__turn Ink-Ai__turn--${t.role}`,children:[e.jsx("span",{children:t.role}),e.jsx("p",{children:t.content})]},t.id))}),e.jsxs("form",{className:"Ink-Ai__form",onSubmit:K,children:[e.jsx("input",{value:x,onChange:t=>g(t.target.value),placeholder:"Ask Ink AI…",disabled:l}),e.jsx("button",{type:"submit",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,children:"Send"})]})]}):null,a==="actions"?e.jsxs("div",{className:"Ink-Ai__actions",children:[e.jsx("p",{className:"Ink-Ai__hint",children:"Quick actions use the current selection (or full document)."}),I.INK_QUICK_ACTIONS.map(t=>e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Ai__action",disabled:l,onClick:()=>void c(t.capability),children:t.label},t.id))]}):null,a==="review"?e.jsxs("div",{className:"Ink-Ai__review",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("review"),children:"Run grammar & style review"}),H.map(t=>e.jsxs("article",{className:`Ink-Ai__suggestion Ink-Ai__suggestion--${t.severity}`,children:[e.jsx("strong",{children:t.severity}),e.jsx("p",{children:t.message}),e.jsx("code",{children:t.suggestedText})]},t.id))]}):null,a==="translate"?e.jsxs("div",{className:"Ink-Ai__translate",children:[e.jsxs("label",{children:["Language",e.jsx("select",{value:A,onChange:t=>M(t.target.value),children:I.INK_TRANSLATE_LANGUAGES.map(t=>e.jsx("option",{value:t,children:t},t))})]}),e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("translate",{language:A}),children:"Translate"})]}):null,r?e.jsxs("div",{className:"Ink-Ai__diff",children:[e.jsx("strong",{children:"Suggested change"}),e.jsx("p",{children:r.summary}),e.jsx("div",{className:"Ink-Ai__diff-preview",dangerouslySetInnerHTML:{__html:r.suggestedHtml}}),e.jsxs("div",{className:"Ink-Ai__diff-actions",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",onClick:()=>{T(r.suggestedHtml),h(null)},children:"Apply"}),e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:()=>h(null),children:"Dismiss"})]})]}):null]}),e.jsx("footer",{className:"Ink-Ai__footer",children:"Demo provider · BYO LLM"})]})};exports.AiPanel=G;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),I=require("../../../../constants/defaults.const.cjs"),O=require("../../../../constants/aiModels.const.cjs"),P=require("../../../../plugins/ai/aiPlugin.cjs"),C=require("../../../../utils/id.utils.cjs");require("../../../../utils/paste.utils.cjs");const G=w=>{var p,N,f,y;const{config:s,documentHtml:k,selectionHtml:v,onApplyHtml:T,onClose:b}=w,[a,L]=i.useState("chat"),[x,g]=i.useState(""),[r,_]=i.useState([]),[l,j]=i.useState(!1),[o,h]=i.useState(null),[H,D]=i.useState([]),[A,q]=i.useState(I.INK_TRANSLATE_LANGUAGES[1]),M=s.providerId||O.INK_AI_DEMO_PROVIDER_ID,R=((p=s.uiTheme)==null?void 0:p.className)||s.className||"",c=async(t,d,u)=>{var S;j(!0);try{const E=t==="chat"&&u?[...r,{id:C.createInkId("turn"),role:"user",content:u,timestamp:Date.now(),capability:t}]:r;t==="chat"&&u&&_(E);const n=await P.inkAi.runProvider(M,{capability:t,html:k,selectionHtml:v||void 0,prompt:u,history:E,options:d,modelId:s.modelId,documentSnapshot:{html:k,selectionHtml:v||void 0}});(S=n.turns)!=null&&S.length?_(m=>[...m,...n.turns]):n.text&&t!=="chat"&&_(m=>[...m,{id:C.createInkId("turn"),role:"assistant",content:n.text||"",timestamp:Date.now(),capability:t}]),n.diff&&h(n.diff),n.reviewSuggestions&&D(n.reviewSuggestions)}finally{j(!1)}},K=t=>{t.preventDefault();const d=x.trim();!d||l||(g(""),c("chat",void 0,d))};return e.jsxs("aside",{className:`Ink-Ai ${R}`.trim(),"data-placement":s.placement||"sidebar",style:{"--ink-ai-accent":(N=s.uiTheme)==null?void 0:N.accent,"--ink-ai-surface":(f=s.uiTheme)==null?void 0:f.surface,"--ink-ai-border":(y=s.uiTheme)==null?void 0:y.border},"aria-label":"Ink AI",children:[e.jsxs("div",{className:"Ink-Ai__header",children:[e.jsx("strong",{children:"Ink AI"}),b?e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:b,title:"Close AI",children:"×"}):null]}),e.jsx("div",{className:"Ink-Ai__tabs",role:"tablist",children:["chat","actions","review","translate"].map(t=>e.jsx("button",{type:"button",role:"tab",className:`Ink-Editor__button${a===t?" Ink-Editor__button--active":""}`,"aria-selected":a===t,onClick:()=>L(t),children:t},t))}),e.jsxs("div",{className:"Ink-Ai__body",children:[a==="chat"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"Ink-Ai__history",children:r.length===0?e.jsxs("p",{className:"Ink-Ai__empty",children:["Multi-turn chat with local demo provider. Bring your own LLM via"," ",e.jsx("code",{children:"inkAi.registerProvider"}),"."]}):r.map(t=>e.jsxs("div",{className:`Ink-Ai__turn Ink-Ai__turn--${t.role}`,children:[e.jsx("span",{children:t.role}),e.jsx("p",{children:t.content})]},t.id))}),e.jsxs("form",{className:"Ink-Ai__form",onSubmit:K,children:[e.jsx("input",{value:x,onChange:t=>g(t.target.value),placeholder:"Ask Ink AI…",disabled:l}),e.jsx("button",{type:"submit",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,children:"Send"})]})]}):null,a==="actions"?e.jsxs("div",{className:"Ink-Ai__actions",children:[e.jsx("p",{className:"Ink-Ai__hint",children:"Quick actions use the current selection (or full document)."}),I.INK_QUICK_ACTIONS.map(t=>e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Ai__action",disabled:l,onClick:()=>void c(t.capability),children:t.label},t.id))]}):null,a==="review"?e.jsxs("div",{className:"Ink-Ai__review",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("review"),children:"Run grammar & style review"}),H.map(t=>e.jsxs("article",{className:`Ink-Ai__suggestion Ink-Ai__suggestion--${t.severity}`,children:[e.jsx("strong",{children:t.severity}),e.jsx("p",{children:t.message}),e.jsx("code",{children:t.suggestedText})]},t.id))]}):null,a==="translate"?e.jsxs("div",{className:"Ink-Ai__translate",children:[e.jsxs("label",{children:["Language",e.jsx("select",{value:A,onChange:t=>q(t.target.value),children:I.INK_TRANSLATE_LANGUAGES.map(t=>e.jsx("option",{value:t,children:t},t))})]}),e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",disabled:l,onClick:()=>void c("translate",{language:A}),children:"Translate"})]}):null,o?e.jsxs("div",{className:"Ink-Ai__diff",children:[e.jsx("strong",{children:"Suggested change"}),e.jsx("p",{children:o.summary}),e.jsx("div",{className:"Ink-Ai__diff-preview",dangerouslySetInnerHTML:{__html:o.suggestedHtml}}),e.jsxs("div",{className:"Ink-Ai__diff-actions",children:[e.jsx("button",{type:"button",className:"Ink-Editor__button Ink-Editor__button--active",onClick:()=>{T(o.suggestedHtml),h(null)},children:"Apply"}),e.jsx("button",{type:"button",className:"Ink-Editor__button",onClick:()=>h(null),children:"Dismiss"})]})]}):null]}),e.jsx("footer",{className:"Ink-Ai__footer",children:"Demo provider · BYO LLM"})]})};exports.AiPanel=G;
@@ -4,9 +4,10 @@ import { INK_TRANSLATE_LANGUAGES as T, INK_QUICK_ACTIONS as G } from "../../../.
4
4
  import { INK_AI_DEMO_PROVIDER_ID as P } from "../../../../constants/aiModels.const.js";
5
5
  import { inkAi as Q } from "../../../../plugins/ai/aiPlugin.js";
6
6
  import { createInkId as H } from "../../../../utils/id.utils.js";
7
- const J = (D) => {
7
+ import "../../../../utils/paste.utils.js";
8
+ const W = (D) => {
8
9
  var N, y, E, C;
9
- const { config: i, documentHtml: k, selectionHtml: v, onApplyHtml: L, onClose: b } = D, [a, x] = l("chat"), [p, g] = l(""), [r, _] = l([]), [o, f] = l(!1), [c, h] = l(null), [M, R] = l([]), [A, K] = l(T[1]), O = i.providerId || P, $ = ((N = i.uiTheme) == null ? void 0 : N.className) || i.className || "", d = async (e, u, m) => {
10
+ const { config: i, documentHtml: k, selectionHtml: v, onApplyHtml: L, onClose: p } = D, [a, x] = l("chat"), [b, g] = l(""), [r, _] = l([]), [o, f] = l(!1), [c, h] = l(null), [M, R] = l([]), [A, K] = l(T[1]), O = i.providerId || P, $ = ((N = i.uiTheme) == null ? void 0 : N.className) || i.className || "", d = async (e, u, m) => {
10
11
  var w;
11
12
  f(!0);
12
13
  try {
@@ -46,7 +47,7 @@ const J = (D) => {
46
47
  }
47
48
  }, B = (e) => {
48
49
  e.preventDefault();
49
- const u = p.trim();
50
+ const u = b.trim();
50
51
  !u || o || (g(""), d("chat", void 0, u));
51
52
  };
52
53
  return /* @__PURE__ */ n(
@@ -63,7 +64,7 @@ const J = (D) => {
63
64
  children: [
64
65
  /* @__PURE__ */ n("div", { className: "Ink-Ai__header", children: [
65
66
  /* @__PURE__ */ t("strong", { children: "Ink AI" }),
66
- b ? /* @__PURE__ */ t("button", { type: "button", className: "Ink-Editor__button", onClick: b, title: "Close AI", children: "×" }) : null
67
+ p ? /* @__PURE__ */ t("button", { type: "button", className: "Ink-Editor__button", onClick: p, title: "Close AI", children: "×" }) : null
67
68
  ] }),
68
69
  /* @__PURE__ */ t("div", { className: "Ink-Ai__tabs", role: "tablist", children: ["chat", "actions", "review", "translate"].map((e) => /* @__PURE__ */ t(
69
70
  "button",
@@ -92,7 +93,7 @@ const J = (D) => {
92
93
  /* @__PURE__ */ t(
93
94
  "input",
94
95
  {
95
- value: p,
96
+ value: b,
96
97
  onChange: (e) => g(e.target.value),
97
98
  placeholder: "Ask Ink AI…",
98
99
  disabled: o
@@ -174,5 +175,5 @@ const J = (D) => {
174
175
  );
175
176
  };
176
177
  export {
177
- J as AiPanel
178
+ W as AiPanel
178
179
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),o=require("../../../../constants/defaults.const.cjs"),l=require("../../../../utils/cn.utils.cjs"),c=n=>{const{icon:s,title:t,active:e=!1,onClick:r,disabled:a=!1}=n;return i.jsx("button",{type:"button",title:t,"aria-label":t,"aria-pressed":e,disabled:a,className:l.cn(o.INK_CLASS_BUTTON,e&&o.INK_CLASS_BUTTON_ACTIVE),onClick:r,children:s})};exports.ToolbarButton=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),o=require("../../../../constants/defaults.const.cjs"),l=require("../../../../utils/cn.utils.cjs");require("../../../../utils/paste.utils.cjs");const c=r=>{const{icon:n,title:e,active:t=!1,onClick:s,disabled:i=!1}=r;return a.jsx("button",{type:"button",title:e,"aria-label":e,"aria-pressed":t,disabled:i,className:l.cn(o.INK_CLASS_BUTTON,t&&o.INK_CLASS_BUTTON_ACTIVE),onClick:s,children:n})};exports.ToolbarButton=c;
@@ -1,7 +1,8 @@
1
1
  import { jsx as l } from "react/jsx-runtime";
2
2
  import { INK_CLASS_BUTTON_ACTIVE as n, INK_CLASS_BUTTON as s } from "../../../../constants/defaults.const.js";
3
3
  import { cn as c } from "../../../../utils/cn.utils.js";
4
- const b = (r) => {
4
+ import "../../../../utils/paste.utils.js";
5
+ const f = (r) => {
5
6
  const { icon: e, title: t, active: o = !1, onClick: a, disabled: i = !1 } = r;
6
7
  return /* @__PURE__ */ l(
7
8
  "button",
@@ -18,5 +19,5 @@ const b = (r) => {
18
19
  );
19
20
  };
20
21
  export {
21
- b as ToolbarButton
22
+ f as ToolbarButton
22
23
  };
@@ -2,4 +2,5 @@ export * from './numbers.const';
2
2
  export * from './typos.const';
3
3
  export * from './defaults.const';
4
4
  export * from './aiModels.const';
5
+ export * from './premium.const';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t="ink_prem_",e=["icons","theme","richPaste","imageUpload","wysiwyg"],i={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:"</>"},n={border:"--ink-border",background:"--ink-bg",toolbar:"--ink-toolbar",text:"--ink-text",muted:"--ink-muted",accent:"--ink-accent",accentSoft:"--ink-accent-soft",shadow:"--ink-shadow",radius:"--ink-radius",fontFamily:"--ink-font-family"},o=["p","br","div","span","strong","b","em","i","u","s","strike","h1","h2","h3","h4","h5","h6","ul","ol","li","blockquote","pre","code","a","img","table","thead","tbody","tr","th","td","hr","sub","sup"],a=["href","src","alt","title","style","colspan","rowspan","width","height","target","rel"];exports.INK_DEFAULT_ICONS=i;exports.INK_PASTE_ALLOWED_ATTRS=a;exports.INK_PASTE_ALLOWED_TAGS=o;exports.INK_PREMIUM_FEATURES=e;exports.INK_PREMIUM_LICENSE_PREFIX=t;exports.INK_THEME_CSS_VARS=n;
@@ -0,0 +1,8 @@
1
+ import { InkIconKey, InkPremiumFeature, InkThemeTokens } from '../types';
2
+ export declare const INK_PREMIUM_LICENSE_PREFIX = "ink_prem_";
3
+ export declare const INK_PREMIUM_FEATURES: InkPremiumFeature[];
4
+ export declare const INK_DEFAULT_ICONS: Record<InkIconKey, string>;
5
+ export declare const INK_THEME_CSS_VARS: Record<keyof InkThemeTokens, string>;
6
+ export declare const INK_PASTE_ALLOWED_TAGS: readonly ["p", "br", "div", "span", "strong", "b", "em", "i", "u", "s", "strike", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "blockquote", "pre", "code", "a", "img", "table", "thead", "tbody", "tr", "th", "td", "hr", "sub", "sup"];
7
+ export declare const INK_PASTE_ALLOWED_ATTRS: readonly ["href", "src", "alt", "title", "style", "colspan", "rowspan", "width", "height", "target", "rel"];
8
+ //# sourceMappingURL=premium.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium.const.d.ts","sourceRoot":"","sources":["../../src/constants/premium.const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAMnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAwBxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,cAAc,EAAE,MAAM,CAWnE,CAAC;AAEF,eAAO,MAAM,sBAAsB,mPAmCzB,CAAC;AAEX,eAAO,MAAM,uBAAuB,6GAY1B,CAAC"}
@@ -0,0 +1,97 @@
1
+ const t = "ink_prem_", e = [
2
+ "icons",
3
+ "theme",
4
+ "richPaste",
5
+ "imageUpload",
6
+ "wysiwyg"
7
+ ], i = {
8
+ bold: "B",
9
+ italic: "I",
10
+ underline: "U",
11
+ strikethrough: "S",
12
+ bulletList: "•",
13
+ orderedList: "1.",
14
+ link: "🔗",
15
+ image: "🖼",
16
+ table: "▦",
17
+ undo: "↶",
18
+ redo: "↷",
19
+ trackChanges: "±",
20
+ comments: "💬",
21
+ ai: "✦",
22
+ clearFormat: "⌫",
23
+ alignLeft: "⫷",
24
+ alignCenter: "☰",
25
+ alignRight: "⫸",
26
+ alignJustify: "≡",
27
+ indent: "→",
28
+ outdent: "←",
29
+ blockquote: "“",
30
+ code: "</>"
31
+ }, n = {
32
+ border: "--ink-border",
33
+ background: "--ink-bg",
34
+ toolbar: "--ink-toolbar",
35
+ text: "--ink-text",
36
+ muted: "--ink-muted",
37
+ accent: "--ink-accent",
38
+ accentSoft: "--ink-accent-soft",
39
+ shadow: "--ink-shadow",
40
+ radius: "--ink-radius",
41
+ fontFamily: "--ink-font-family"
42
+ }, o = [
43
+ "p",
44
+ "br",
45
+ "div",
46
+ "span",
47
+ "strong",
48
+ "b",
49
+ "em",
50
+ "i",
51
+ "u",
52
+ "s",
53
+ "strike",
54
+ "h1",
55
+ "h2",
56
+ "h3",
57
+ "h4",
58
+ "h5",
59
+ "h6",
60
+ "ul",
61
+ "ol",
62
+ "li",
63
+ "blockquote",
64
+ "pre",
65
+ "code",
66
+ "a",
67
+ "img",
68
+ "table",
69
+ "thead",
70
+ "tbody",
71
+ "tr",
72
+ "th",
73
+ "td",
74
+ "hr",
75
+ "sub",
76
+ "sup"
77
+ ], a = [
78
+ "href",
79
+ "src",
80
+ "alt",
81
+ "title",
82
+ "style",
83
+ "colspan",
84
+ "rowspan",
85
+ "width",
86
+ "height",
87
+ "target",
88
+ "rel"
89
+ ];
90
+ export {
91
+ i as INK_DEFAULT_ICONS,
92
+ a as INK_PASTE_ALLOWED_ATTRS,
93
+ o as INK_PASTE_ALLOWED_TAGS,
94
+ e as INK_PREMIUM_FEATURES,
95
+ t as INK_PREMIUM_LICENSE_PREFIX,
96
+ n as INK_THEME_CSS_VARS
97
+ };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./components/InkEditor/InkEditor.cjs"),A=require("./utils/cn.utils.cjs"),r=require("./utils/typo.utils.cjs"),i=require("./utils/id.utils.cjs"),n=require("./utils/table.utils.cjs"),O=require("./utils/trackChanges.utils.cjs"),N=require("./utils/comments.utils.cjs"),o=require("./utils/history.utils.cjs"),T=require("./constants/typos.const.cjs"),_=require("./constants/defaults.const.cjs"),e=require("./constants/aiModels.const.cjs"),I=require("./plugins/ai/aiPlugin.cjs");exports.InkEditor=t.InkEditor;exports.cn=A.cn;exports.applyTypoAutoFix=r.applyTypoAutoFix;exports.createInkId=i.createInkId;exports.buildTableHtml=n.buildTableHtml;exports.createTrackChange=O.createTrackChange;exports.createCommentThread=N.createCommentThread;exports.InkHistoryStack=o.InkHistoryStack;exports.TYPO_DICTIONARY=T.TYPO_DICTIONARY;exports.INK_COLLAB_TOOLBAR=_.INK_COLLAB_TOOLBAR;exports.INK_DEFAULT_FEATURES=_.INK_DEFAULT_FEATURES;exports.INK_DEFAULT_TOOLBAR=_.INK_DEFAULT_TOOLBAR;exports.INK_HEADING_OPTIONS=_.INK_HEADING_OPTIONS;exports.INK_QUICK_ACTIONS=_.INK_QUICK_ACTIONS;exports.INK_SIMPLE_TOOLBAR=_.INK_SIMPLE_TOOLBAR;exports.INK_SLASH_COMMANDS=_.INK_SLASH_COMMANDS;exports.INK_TRANSLATE_LANGUAGES=_.INK_TRANSLATE_LANGUAGES;exports.INK_AI_DEMO_MODEL_ID=e.INK_AI_DEMO_MODEL_ID;exports.INK_AI_DEMO_PROVIDER_ID=e.INK_AI_DEMO_PROVIDER_ID;exports.INK_AI_MODEL_CATALOG=e.INK_AI_MODEL_CATALOG;exports.createInkAiPlugin=I.createInkAiPlugin;exports.inkAi=I.inkAi;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./components/InkEditor/InkEditor.cjs"),n=require("./utils/cn.utils.cjs"),s=require("./utils/typo.utils.cjs"),A=require("./utils/id.utils.cjs"),u=require("./utils/table.utils.cjs"),o=require("./utils/trackChanges.utils.cjs"),N=require("./utils/comments.utils.cjs"),E=require("./utils/history.utils.cjs"),c=require("./constants/typos.const.cjs"),e=require("./constants/defaults.const.cjs"),I=require("./constants/aiModels.const.cjs"),t=require("./constants/premium.const.cjs"),_=require("./utils/premium.utils.cjs"),T=require("./utils/license.utils.cjs"),O=require("./utils/paste.utils.cjs"),i=require("./plugins/ai/aiPlugin.cjs");exports.InkEditor=r.InkEditor;exports.cn=n.cn;exports.applyTypoAutoFix=s.applyTypoAutoFix;exports.createInkId=A.createInkId;exports.buildTableHtml=u.buildTableHtml;exports.createTrackChange=o.createTrackChange;exports.createCommentThread=N.createCommentThread;exports.InkHistoryStack=E.InkHistoryStack;exports.TYPO_DICTIONARY=c.TYPO_DICTIONARY;exports.INK_COLLAB_TOOLBAR=e.INK_COLLAB_TOOLBAR;exports.INK_DEFAULT_FEATURES=e.INK_DEFAULT_FEATURES;exports.INK_DEFAULT_TOOLBAR=e.INK_DEFAULT_TOOLBAR;exports.INK_HEADING_OPTIONS=e.INK_HEADING_OPTIONS;exports.INK_QUICK_ACTIONS=e.INK_QUICK_ACTIONS;exports.INK_SIMPLE_TOOLBAR=e.INK_SIMPLE_TOOLBAR;exports.INK_SLASH_COMMANDS=e.INK_SLASH_COMMANDS;exports.INK_TRANSLATE_LANGUAGES=e.INK_TRANSLATE_LANGUAGES;exports.INK_AI_DEMO_MODEL_ID=I.INK_AI_DEMO_MODEL_ID;exports.INK_AI_DEMO_PROVIDER_ID=I.INK_AI_DEMO_PROVIDER_ID;exports.INK_AI_MODEL_CATALOG=I.INK_AI_MODEL_CATALOG;exports.INK_DEFAULT_ICONS=t.INK_DEFAULT_ICONS;exports.INK_PREMIUM_FEATURES=t.INK_PREMIUM_FEATURES;exports.INK_PREMIUM_LICENSE_PREFIX=t.INK_PREMIUM_LICENSE_PREFIX;exports.hasInkPremiumFeature=_.hasInkPremiumFeature;exports.isInkPremiumLicenseKey=_.isInkPremiumLicenseKey;exports.resolveInkPremium=_.resolveInkPremium;exports.themeTokensToStyle=_.themeTokensToStyle;exports.mintInkPremiumLicenseKey=T.mintInkPremiumLicenseKey;exports.sanitizePastedHtml=O.sanitizePastedHtml;exports.createInkAiPlugin=i.createInkAiPlugin;exports.inkAi=i.inkAi;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { InkEditor } from './components';
2
- export { applyTypoAutoFix, cn, buildTableHtml, createInkId, createCommentThread, createTrackChange, InkHistoryStack, } from './utils';
2
+ export { applyTypoAutoFix, cn, buildTableHtml, createInkId, createCommentThread, createTrackChange, InkHistoryStack, resolveInkPremium, hasInkPremiumFeature, isInkPremiumLicenseKey, mintInkPremiumLicenseKey, themeTokensToStyle, sanitizePastedHtml, } from './utils';
3
3
  export { inkAi, createInkAiPlugin } from './plugins/ai';
4
- export { INK_DEFAULT_TOOLBAR, INK_SIMPLE_TOOLBAR, INK_COLLAB_TOOLBAR, INK_HEADING_OPTIONS, INK_SLASH_COMMANDS, INK_AI_MODEL_CATALOG, INK_AI_DEMO_PROVIDER_ID, INK_AI_DEMO_MODEL_ID, INK_TRANSLATE_LANGUAGES, INK_QUICK_ACTIONS, INK_DEFAULT_FEATURES, TYPO_DICTIONARY, } from './constants';
5
- export type { InkEditorProps, ToolbarOption, TypoFixResult, SlashCommandItem, InkAiCapability, InkAiRequest, InkAiResponse, InkAiAgent, InkAiPlugin, InkAiChatTurn, InkAiDiffSuggestion, InkAiReviewSuggestion, InkAiContextFile, InkAiDocumentSnapshot, InkAiModelCatalogEntry, InkAiProvider, InkAiConfig, InkAiUiTheme, InkCommentReply, InkCommentThread, InkTrackChange, InkTrackChangeType, InkFeaturesConfig, InkFeatureName, InkEditorVariant, InkAiPlacement, } from './types';
4
+ export { INK_DEFAULT_TOOLBAR, INK_SIMPLE_TOOLBAR, INK_COLLAB_TOOLBAR, INK_HEADING_OPTIONS, INK_SLASH_COMMANDS, INK_AI_MODEL_CATALOG, INK_AI_DEMO_PROVIDER_ID, INK_AI_DEMO_MODEL_ID, INK_TRANSLATE_LANGUAGES, INK_QUICK_ACTIONS, INK_DEFAULT_FEATURES, INK_DEFAULT_ICONS, INK_PREMIUM_FEATURES, INK_PREMIUM_LICENSE_PREFIX, TYPO_DICTIONARY, } from './constants';
5
+ export type { InkEditorProps, ToolbarOption, TypoFixResult, SlashCommandItem, InkAiCapability, InkAiRequest, InkAiResponse, InkAiAgent, InkAiPlugin, InkAiChatTurn, InkAiDiffSuggestion, InkAiReviewSuggestion, InkAiContextFile, InkAiDocumentSnapshot, InkAiModelCatalogEntry, InkAiProvider, InkAiConfig, InkAiUiTheme, InkCommentReply, InkCommentThread, InkTrackChange, InkTrackChangeType, InkFeaturesConfig, InkFeatureName, InkEditorVariant, InkAiPlacement, InkPremiumFeature, InkPasteMode, InkIconKey, InkIconMap, InkThemeTokens, InkPremiumConfig, InkResolvedPremium, InkImageUploadHandler, } from './types';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,EAAE,EACF,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,EAAE,EACF,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,36 +1,49 @@
1
1
  import { InkEditor as I } from "./components/InkEditor/InkEditor.js";
2
- import { cn as e } from "./utils/cn.utils.js";
3
- import { applyTypoAutoFix as t } from "./utils/typo.utils.js";
2
+ import { cn as _ } from "./utils/cn.utils.js";
3
+ import { applyTypoAutoFix as m } from "./utils/typo.utils.js";
4
4
  import { createInkId as N } from "./utils/id.utils.js";
5
- import { buildTableHtml as m } from "./utils/table.utils.js";
6
- import { createTrackChange as E } from "./utils/trackChanges.utils.js";
7
- import { createCommentThread as x } from "./utils/comments.utils.js";
8
- import { InkHistoryStack as D } from "./utils/history.utils.js";
9
- import { TYPO_DICTIONARY as a } from "./constants/typos.const.js";
10
- import { INK_COLLAB_TOOLBAR as n, INK_DEFAULT_FEATURES as i, INK_DEFAULT_TOOLBAR as C, INK_HEADING_OPTIONS as R, INK_QUICK_ACTIONS as c, INK_SIMPLE_TOOLBAR as k, INK_SLASH_COMMANDS as M, INK_TRANSLATE_LANGUAGES as l } from "./constants/defaults.const.js";
11
- import { INK_AI_DEMO_MODEL_ID as U, INK_AI_DEMO_PROVIDER_ID as d, INK_AI_MODEL_CATALOG as B } from "./constants/aiModels.const.js";
12
- import { createInkAiPlugin as G, inkAi as H } from "./plugins/ai/aiPlugin.js";
5
+ import { buildTableHtml as T } from "./utils/table.utils.js";
6
+ import { createTrackChange as p } from "./utils/trackChanges.utils.js";
7
+ import { createCommentThread as n } from "./utils/comments.utils.js";
8
+ import { InkHistoryStack as x } from "./utils/history.utils.js";
9
+ import { TYPO_DICTIONARY as f } from "./constants/typos.const.js";
10
+ import { INK_COLLAB_TOOLBAR as S, INK_DEFAULT_FEATURES as D, INK_DEFAULT_TOOLBAR as P, INK_HEADING_OPTIONS as k, INK_QUICK_ACTIONS as R, INK_SIMPLE_TOOLBAR as M, INK_SLASH_COMMANDS as C, INK_TRANSLATE_LANGUAGES as c } from "./constants/defaults.const.js";
11
+ import { INK_AI_DEMO_MODEL_ID as U, INK_AI_DEMO_PROVIDER_ID as l, INK_AI_MODEL_CATALOG as u } from "./constants/aiModels.const.js";
12
+ import { INK_DEFAULT_ICONS as y, INK_PREMIUM_FEATURES as d, INK_PREMIUM_LICENSE_PREFIX as H } from "./constants/premium.const.js";
13
+ import { hasInkPremiumFeature as B, isInkPremiumLicenseKey as G, resolveInkPremium as b, themeTokensToStyle as g } from "./utils/premium.utils.js";
14
+ import { mintInkPremiumLicenseKey as v } from "./utils/license.utils.js";
15
+ import { sanitizePastedHtml as Q } from "./utils/paste.utils.js";
16
+ import { createInkAiPlugin as X, inkAi as j } from "./plugins/ai/aiPlugin.js";
13
17
  export {
14
18
  U as INK_AI_DEMO_MODEL_ID,
15
- d as INK_AI_DEMO_PROVIDER_ID,
16
- B as INK_AI_MODEL_CATALOG,
17
- n as INK_COLLAB_TOOLBAR,
18
- i as INK_DEFAULT_FEATURES,
19
- C as INK_DEFAULT_TOOLBAR,
20
- R as INK_HEADING_OPTIONS,
21
- c as INK_QUICK_ACTIONS,
22
- k as INK_SIMPLE_TOOLBAR,
23
- M as INK_SLASH_COMMANDS,
24
- l as INK_TRANSLATE_LANGUAGES,
19
+ l as INK_AI_DEMO_PROVIDER_ID,
20
+ u as INK_AI_MODEL_CATALOG,
21
+ S as INK_COLLAB_TOOLBAR,
22
+ D as INK_DEFAULT_FEATURES,
23
+ y as INK_DEFAULT_ICONS,
24
+ P as INK_DEFAULT_TOOLBAR,
25
+ k as INK_HEADING_OPTIONS,
26
+ d as INK_PREMIUM_FEATURES,
27
+ H as INK_PREMIUM_LICENSE_PREFIX,
28
+ R as INK_QUICK_ACTIONS,
29
+ M as INK_SIMPLE_TOOLBAR,
30
+ C as INK_SLASH_COMMANDS,
31
+ c as INK_TRANSLATE_LANGUAGES,
25
32
  I as InkEditor,
26
- D as InkHistoryStack,
27
- a as TYPO_DICTIONARY,
28
- t as applyTypoAutoFix,
29
- m as buildTableHtml,
30
- e as cn,
31
- x as createCommentThread,
32
- G as createInkAiPlugin,
33
+ x as InkHistoryStack,
34
+ f as TYPO_DICTIONARY,
35
+ m as applyTypoAutoFix,
36
+ T as buildTableHtml,
37
+ _ as cn,
38
+ n as createCommentThread,
39
+ X as createInkAiPlugin,
33
40
  N as createInkId,
34
- E as createTrackChange,
35
- H as inkAi
41
+ p as createTrackChange,
42
+ B as hasInkPremiumFeature,
43
+ j as inkAi,
44
+ G as isInkPremiumLicenseKey,
45
+ v as mintInkPremiumLicenseKey,
46
+ b as resolveInkPremium,
47
+ Q as sanitizePastedHtml,
48
+ g as themeTokensToStyle
36
49
  };
package/dist/styles.css CHANGED
@@ -8,6 +8,7 @@
8
8
  --ink-accent-soft: #ccfbf1;
9
9
  --ink-shadow: 0 10px 40px rgb(15 23 42 / 0.08);
10
10
  --ink-radius: 1rem;
11
+ --ink-font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
11
12
  --ink-ai-accent: var(--ink-accent);
12
13
  --ink-ai-surface: #f8fafc;
13
14
  --ink-ai-border: var(--ink-border);
@@ -17,7 +18,28 @@
17
18
  background: var(--ink-bg);
18
19
  color: var(--ink-text);
19
20
  box-shadow: var(--ink-shadow);
20
- font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
21
+ font-family: var(--ink-font-family);
22
+ }
23
+
24
+ .Ink-Editor[data-wysiwyg='true'] .Ink-Editor__content {
25
+ font-family: inherit;
26
+ line-height: 1.65;
27
+ }
28
+
29
+ .Ink-Editor[data-wysiwyg='true'] .Ink-Editor__content img {
30
+ max-width: 100%;
31
+ height: auto;
32
+ }
33
+
34
+ .Ink-Editor[data-wysiwyg='true'] .Ink-Editor__content table {
35
+ border-collapse: collapse;
36
+ width: 100%;
37
+ }
38
+
39
+ .Ink-Editor[data-wysiwyg='true'] .Ink-Editor__content th,
40
+ .Ink-Editor[data-wysiwyg='true'] .Ink-Editor__content td {
41
+ border: 1px solid var(--ink-border);
42
+ padding: 0.4rem 0.6rem;
21
43
  }
22
44
 
23
45
  .Ink-Editor[data-variant='document'] {
@@ -3,4 +3,5 @@ export type { InkAiCapability, InkAiRequest, InkAiResponse, InkAiAgent, InkAiPlu
3
3
  export type { InkCommentReply, InkCommentThread, InkCommentsChangeHandler, } from './comments.types';
4
4
  export type { InkTrackChangeType, InkTrackChange, InkTrackChangesChangeHandler, } from './trackChanges.types';
5
5
  export type { InkFeatureName, InkFeaturesConfig, InkEditorVariant, InkAiPlacement, } from './features.types';
6
+ export type { InkPremiumFeature, InkPasteMode, InkIconKey, InkIconMap, InkThemeTokens, InkPremiumConfig, InkResolvedPremium, InkImageUploadHandler, InkThemeStyle, } from './premium.types';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,GACd,MAAM,iBAAiB,CAAC"}
@@ -2,6 +2,7 @@ import { HTMLAttributes, ReactNode } from 'react';
2
2
  import { InkAiConfig } from './ai.types';
3
3
  import { InkCommentThread, InkCommentsChangeHandler } from './comments.types';
4
4
  import { InkEditorVariant, InkFeaturesConfig } from './features.types';
5
+ import { InkIconMap, InkImageUploadHandler, InkPasteMode, InkPremiumConfig, InkThemeTokens } from './premium.types';
5
6
  import { InkTrackChange, InkTrackChangesChangeHandler } from './trackChanges.types';
6
7
  export type ToolbarOption = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'heading1' | 'heading2' | 'heading3' | 'heading4' | 'heading5' | 'heading6' | 'paragraph' | 'headingDropdown' | 'bulletList' | 'orderedList' | 'blockquote' | 'code' | 'link' | 'image' | 'table' | 'undo' | 'redo' | 'trackChanges' | 'comments' | 'ai' | 'textColor' | 'highlightColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'indent' | 'outdent' | 'clearFormat' | 'divider';
7
8
  export interface InkEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
@@ -34,6 +35,12 @@ export interface InkEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
34
35
  slashCommands?: boolean;
35
36
  tableRows?: number;
36
37
  tableCols?: number;
38
+ premium?: InkPremiumConfig;
39
+ theme?: InkThemeTokens;
40
+ icons?: InkIconMap;
41
+ pasteMode?: InkPasteMode;
42
+ onImageUpload?: InkImageUploadHandler;
43
+ wysiwyg?: boolean;
37
44
  }
38
45
  export interface ToolbarButtonProps {
39
46
  icon: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ink.types.d.ts","sourceRoot":"","sources":["../../src/types/ink.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ink.types.d.ts","sourceRoot":"","sources":["../../src/types/ink.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { ToolbarOption } from './ink.types';
3
+ export type InkPremiumFeature = 'icons' | 'theme' | 'richPaste' | 'imageUpload' | 'wysiwyg';
4
+ export type InkPasteMode = 'plain' | 'rich';
5
+ export type InkIconKey = Extract<ToolbarOption, 'bold' | 'italic' | 'underline' | 'strikethrough' | 'bulletList' | 'orderedList' | 'link' | 'image' | 'table' | 'undo' | 'redo' | 'trackChanges' | 'comments' | 'ai' | 'clearFormat' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'indent' | 'outdent' | 'blockquote' | 'code'>;
6
+ export type InkIconMap = Partial<Record<InkIconKey, ReactNode>>;
7
+ export interface InkThemeTokens {
8
+ border?: string;
9
+ background?: string;
10
+ toolbar?: string;
11
+ text?: string;
12
+ muted?: string;
13
+ accent?: string;
14
+ accentSoft?: string;
15
+ shadow?: string;
16
+ radius?: string;
17
+ fontFamily?: string;
18
+ }
19
+ export interface InkPremiumConfig {
20
+ enabled?: boolean;
21
+ licenseKey?: string;
22
+ features?: Partial<Record<InkPremiumFeature, boolean>>;
23
+ }
24
+ export interface InkResolvedPremium {
25
+ active: boolean;
26
+ features: Record<InkPremiumFeature, boolean>;
27
+ }
28
+ export type InkImageUploadHandler = (file: File) => Promise<string> | string;
29
+ export type InkThemeStyle = CSSProperties;
30
+ //# sourceMappingURL=premium.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium.types.d.ts","sourceRoot":"","sources":["../../src/types/premium.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,OAAO,GACP,WAAW,GACX,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,aAAa,EACX,MAAM,GACN,QAAQ,GACR,WAAW,GACX,eAAe,GACf,YAAY,GACZ,aAAa,GACb,MAAM,GACN,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,cAAc,GACd,UAAU,GACV,IAAI,GACJ,aAAa,GACb,WAAW,GACX,aAAa,GACb,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,MAAM,CACT,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE7E,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC"}
@@ -7,4 +7,7 @@ export { wrapInsertHtml, wrapDeleteHtml, createTrackChange, acceptTrackChangeInH
7
7
  export { createCommentThread, wrapSelectionAsComment, removeCommentMark, } from './comments.utils';
8
8
  export { InkHistoryStack } from './history.utils';
9
9
  export { filterSlashCommands, extractSlashQuery } from './slash.utils';
10
+ export { resolveInkPremium, hasInkPremiumFeature, isInkPremiumLicenseKey, themeTokensToStyle, } from './premium.utils';
11
+ export { mintInkPremiumLicenseKey } from './license.utils';
12
+ export { sanitizePastedHtml, extractClipboardHtml, extractClipboardText, } from './paste.utils';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../constants/premium.const.cjs"),n="ABCDEFGHJKLMNPQRSTUVWXYZ23456789",r=4,i=4,c=()=>{const e=new Uint8Array(r);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(e);else for(let t=0;t<e.length;t+=1)e[t]=Math.floor(Math.random()*256);return Array.from(e,t=>n[t%n.length]).join("")},s=()=>{const e=Array.from({length:i},()=>c()).join("_");return`${o.INK_PREMIUM_LICENSE_PREFIX}${e}`};exports.mintInkPremiumLicenseKey=s;
@@ -0,0 +1,2 @@
1
+ export declare const mintInkPremiumLicenseKey: () => string;
2
+ //# sourceMappingURL=license.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.utils.d.ts","sourceRoot":"","sources":["../../src/utils/license.utils.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,wBAAwB,QAAO,MAG3C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { INK_PREMIUM_LICENSE_PREFIX as e } from "../constants/premium.const.js";
2
+ const o = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789", r = 4, E = 4, c = () => {
3
+ const t = new Uint8Array(r);
4
+ if (typeof crypto < "u" && typeof crypto.getRandomValues == "function")
5
+ crypto.getRandomValues(t);
6
+ else
7
+ for (let n = 0; n < t.length; n += 1)
8
+ t[n] = Math.floor(Math.random() * 256);
9
+ return Array.from(t, (n) => o[n % o.length]).join("");
10
+ }, s = () => {
11
+ const t = Array.from({ length: E }, () => c()).join("_");
12
+ return `${e}${t}`;
13
+ };
14
+ export {
15
+ s as mintInkPremiumLicenseKey
16
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../constants/premium.const.cjs"),l=new Set(s.INK_PASTE_ALLOWED_TAGS),u=new Set(s.INK_PASTE_ALLOWED_ATTRS),c=(e,o)=>{if(e.nodeType===Node.TEXT_NODE){o.appendChild(e.cloneNode(!0));return}if(e.nodeType!==Node.ELEMENT_NODE)return;const n=e,t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="iframe"||t==="object")return;if(!l.has(t)){Array.from(n.childNodes).forEach(r=>c(r,o));return}const i=document.createElement(t);Array.from(n.attributes).forEach(r=>{const a=r.name.toLowerCase();u.has(a)&&(a.startsWith("on")||(a==="href"||a==="src")&&r.value.trim().toLowerCase().startsWith("javascript:")||i.setAttribute(r.name,r.value))}),Array.from(n.childNodes).forEach(r=>c(r,i)),o.appendChild(i)},m=e=>{if(!e.trim())return"";const o=document.createElement("template");o.innerHTML=e;const n=document.createElement("div");return Array.from(o.content.childNodes).forEach(t=>c(t,n)),n.innerHTML},d=e=>e&&e.getData("text/html")||"",f=e=>e&&e.getData("text/plain")||"";exports.extractClipboardHtml=d;exports.extractClipboardText=f;exports.sanitizePastedHtml=m;
@@ -0,0 +1,4 @@
1
+ export declare const sanitizePastedHtml: (html: string) => string;
2
+ export declare const extractClipboardHtml: (data: DataTransfer | null) => string;
3
+ export declare const extractClipboardText: (data: DataTransfer | null) => string;
4
+ //# sourceMappingURL=paste.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste.utils.d.ts","sourceRoot":"","sources":["../../src/utils/paste.utils.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAOjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { INK_PASTE_ALLOWED_TAGS as s, INK_PASTE_ALLOWED_ATTRS as m } from "../constants/premium.const.js";
2
+ const u = new Set(s), f = new Set(m), c = (e, o) => {
3
+ if (e.nodeType === Node.TEXT_NODE) {
4
+ o.appendChild(e.cloneNode(!0));
5
+ return;
6
+ }
7
+ if (e.nodeType !== Node.ELEMENT_NODE) return;
8
+ const n = e, t = n.tagName.toLowerCase();
9
+ if (t === "script" || t === "style" || t === "iframe" || t === "object")
10
+ return;
11
+ if (!u.has(t)) {
12
+ Array.from(n.childNodes).forEach((r) => c(r, o));
13
+ return;
14
+ }
15
+ const i = document.createElement(t);
16
+ Array.from(n.attributes).forEach((r) => {
17
+ const a = r.name.toLowerCase();
18
+ f.has(a) && (a.startsWith("on") || (a === "href" || a === "src") && r.value.trim().toLowerCase().startsWith("javascript:") || i.setAttribute(r.name, r.value));
19
+ }), Array.from(n.childNodes).forEach((r) => c(r, i)), o.appendChild(i);
20
+ }, E = (e) => {
21
+ if (!e.trim()) return "";
22
+ const o = document.createElement("template");
23
+ o.innerHTML = e;
24
+ const n = document.createElement("div");
25
+ return Array.from(o.content.childNodes).forEach((t) => c(t, n)), n.innerHTML;
26
+ }, d = (e) => e && e.getData("text/html") || "", T = (e) => e && e.getData("text/plain") || "";
27
+ export {
28
+ d as extractClipboardHtml,
29
+ T as extractClipboardText,
30
+ E as sanitizePastedHtml
31
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../constants/premium.const.cjs"),E=()=>Object.fromEntries(r.INK_PREMIUM_FEATURES.map(e=>[e,!1])),n=()=>Object.fromEntries(r.INK_PREMIUM_FEATURES.map(e=>[e,!0])),l=/^[A-Z0-9]{4}(?:_[A-Z0-9]{4}){3}$/,u=e=>{if(!e)return!1;const t=e.trim();if(!t.startsWith(r.INK_PREMIUM_LICENSE_PREFIX))return!1;const s=t.slice(r.INK_PREMIUM_LICENSE_PREFIX.length);return l.test(s)},I=e=>{const t=!!(e!=null&&e.enabled||u(e==null?void 0:e.licenseKey));if(!t)return{active:!1,features:E()};const s=n();if(e!=null&&e.features)for(const a of r.INK_PREMIUM_FEATURES)e.features[a]===!1&&(s[a]=!1);return{active:t,features:s}},_=(e,t)=>e.active&&e.features[t],m=e=>{if(!e)return{};const t={};return Object.keys(r.INK_THEME_CSS_VARS).forEach(s=>{const a=e[s];a&&(t[r.INK_THEME_CSS_VARS[s]]=a)}),t};exports.hasInkPremiumFeature=_;exports.isInkPremiumLicenseKey=u;exports.resolveInkPremium=I;exports.themeTokensToStyle=m;
@@ -0,0 +1,6 @@
1
+ import { InkPremiumConfig, InkPremiumFeature, InkResolvedPremium, InkThemeTokens } from '../types';
2
+ export declare const isInkPremiumLicenseKey: (licenseKey?: string) => boolean;
3
+ export declare const resolveInkPremium: (config?: InkPremiumConfig) => InkResolvedPremium;
4
+ export declare const hasInkPremiumFeature: (premium: InkResolvedPremium, feature: InkPremiumFeature) => boolean;
5
+ export declare const themeTokensToStyle: (theme?: InkThemeTokens) => Record<string, string>;
6
+ //# sourceMappingURL=premium.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"premium.utils.d.ts","sourceRoot":"","sources":["../../src/utils/premium.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,UAAU,CAAC;AAqBlB,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,KAAG,OAM5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,KAAG,kBAc7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,kBAAkB,EAC3B,SAAS,iBAAiB,KACzB,OAAsD,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,QAAQ,cAAc,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAUhF,CAAC"}