polotno 2.40.0 → 2.40.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.
@@ -1 +1 @@
1
- import e from"react";import{observer as t}from"mobx-react-lite";import{runInAction as o}from"mobx";import{Button as n,ButtonGroup as l,Tooltip as i,Position as r}from"@blueprintjs/core";import{Bold as a,Italic as c,Underline as m,Strikethrough as s,AlignLeft as p,AlignCenter as d,AlignRight as u,AlignJustify as x}from"@blueprintjs/icons";import{ElementContainer as b,extendToolbar as f}from"./element-container.js";import g from"./color-picker.js";import h from"./filters-picker.js";import E from"@meronex/icons/md/MdFormatTextdirectionRToL.js";import T from"@meronex/icons/md/MdFormatTextdirectionLToR.js";import F from"@meronex/icons/mdc/MdcFormatVerticalAlignTop.js";import v from"@meronex/icons/mdc/MdcFormatVerticalAlignCenter.js";import j from"@meronex/icons/mdc/MdcFormatVerticalAlignBottom.js";import y from"@meronex/icons/mdc/MdcFormatListBulleted.js";import D from"@meronex/icons/mdc/MdcFormatListNumbered.js";import{AnimationsPicker as S}from"./animations-picker.js";import{flags as A}from"../utils/flags.js";import{TextAiWrite as w}from"./text-ai-write.js";import{t as O}from"../utils/l10n.js";import{quillRef as C,createQuill as M,setQuillContent as k}from"../canvas/html-element.js";import{TextFontFamily as G,TextSpacing as B,TextFontSize as L,TextTransform as _}from"./text-toolbar.js";const W=({html:e})=>{const t=document.createElement("div");document.body.appendChild(t),t.style.display="none",t.style.whiteSpace="pre-wrap";const o=M(t);return k(o,e),o},N=e=>{e.root.parentElement.remove()},V=["left","center","right","justify"],I=["top","middle","bottom"],Q={top:e.createElement("span",{className:"bp5-icon"},e.createElement(F,null)),middle:e.createElement("span",{className:"bp5-icon"},e.createElement(v,null)),bottom:e.createElement("span",{className:"bp5-icon"},e.createElement(j,null))},z=t(({active:t,globalActive:l,format:a,element:c,disableGlobal:m,enableGlobal:s,icon:p,ariaLabel:d,tooltipContent:u})=>{const x=u||d||a;return e.createElement(i,{content:x,position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:p,active:t,"aria-label":x,onMouseDown:e=>{e.preventDefault()},onClick:e=>{let t=window.__polotnoQuill;const n=C.currentFormat;if(t){const e=t.getSelection();return e.length>0?t.formatText(e.index,e.length,a,!n[a],"user"):t.format(a,!n[a],"user"),o(()=>{C.currentFormat=t.getFormat(t.getSelection())}),void(l&&m())}t=W({html:c.text}),t.setSelection(0,t.getLength(),"api"),t.format(a,!1);const i=t.root.innerHTML;N(t),c.set({text:i}),l?m():s()}}))});export const TextBold=t(({element:t,store:o})=>{const n=C.currentFormat;return e.createElement(z,{format:"bold",active:n.bold||"bold"===t.fontWeight||"700"===t.fontWeight,globalActive:"bold"===t.fontWeight||"700"===t.fontWeight,element:t,disableGlobal:()=>t.set({fontWeight:"normal"}),enableGlobal:()=>t.set({fontWeight:"bold"}),icon:e.createElement(a,null),tooltipContent:O("toolbar.bold")})});export const FontStyleGroup=t(({element:t,store:o,elements:a,components:b})=>{const f=(null==b?void 0:b.TextBold)||TextBold,g=C.currentFormat;return e.createElement(l,null,e.createElement(f,{element:t,store:o}),e.createElement(z,{format:"italic",active:g.italic||"italic"===t.fontStyle,globalActive:"italic"===t.fontStyle,element:t,disableGlobal:()=>t.set({fontStyle:"normal"}),enableGlobal:()=>t.set({fontStyle:"italic"}),icon:e.createElement(c,null),tooltipContent:O("toolbar.italic")}),e.createElement(z,{format:"underline",active:g.underline||t.textDecoration.indexOf("underline")>=0,globalActive:t.textDecoration.indexOf("underline")>=0,element:t,disableGlobal:()=>{let e=t.textDecoration.split(" ");e=e.filter(e=>"underline"!==e),t.set({textDecoration:e.join(" ")})},enableGlobal:()=>{let e=t.textDecoration.split(" ");e.push("underline"),t.set({textDecoration:e.join(" ")})},icon:e.createElement(m,null),tooltipContent:O("toolbar.underline")}),e.createElement(z,{format:"strike",active:g.strike||t.textDecoration.indexOf("line-through")>=0,globalActive:t.textDecoration.indexOf("line-through")>=0,element:t,disableGlobal:()=>{let e=t.textDecoration.split(" ");e=e.filter(e=>"line-through"!==e),t.set({textDecoration:e.join(" ")})},enableGlobal:()=>{let e=t.textDecoration.split(" ");e.push("line-through"),t.set({textDecoration:e.join(" ")})},icon:e.createElement(s,null),tooltipContent:O("toolbar.strikethrough")}),e.createElement(i,{content:O("toolbar.textAlign"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:"left"===t.align?e.createElement(p,null):"center"===t.align?e.createElement(d,null):"right"===t.align?e.createElement(u,null):e.createElement(x,null),onClick:()=>{const e=(V.indexOf(t.align)+1+V.length)%V.length,n=V[e];o.history.transaction(()=>{a.forEach(e=>{e.set({align:n})})})},"aria-label":O("toolbar.textAlign")})),A.textVerticalResizeEnabled&&e.createElement(i,{content:O("toolbar.verticalAlign"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:Q[t.verticalAlign],onClick:()=>{const e=(I.indexOf(t.verticalAlign)+1+I.length)%I.length,n=I[e];o.history.transaction(()=>{t.set({verticalAlign:n})})},"aria-label":O("toolbar.verticalAlign")})),e.createElement(i,{content:O("toolbar.listFormat"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:"bullet"===g.list?e.createElement("span",{className:"bp5-icon"},e.createElement(D,{style:{width:"20px",height:"20px"}})):e.createElement("span",{className:"bp5-icon"},e.createElement(y,{style:{width:"20px",height:"20px"}})),onMouseDown:e=>{e.preventDefault()},onClick:()=>{let e=window.__polotnoQuill,o=!e;e=e||W({html:t.text}),o&&e.setSelection(0,e.getLength(),"api");const n=e.getFormat();n.list?"bullet"===n.list?e.format("list","ordered"):e.format("list",!1):e.format("list","bullet"),o&&(t.set({text:e.root.innerHTML}),N(e))},"aria-label":O("toolbar.listFormat")})))});export const FontColorInput=t(({element:t,store:o})=>{const[n,l]=e.useState(null),i=C.currentFormat;return e.createElement(g,{value:i.color||t.fill,gradientEnabled:!0,onOpen:()=>{const e=window.__polotnoQuill;e&&l(e.getSelection())},onClose:()=>{const e=window.__polotnoQuill;e&&e.setSelection(n)},onChange:e=>{const o=window.__polotnoQuill,l=(null==o?void 0:o.getSelection())||n;if(!l){var i=t.text.replace(/style=".*?"/g,"");return void t.set({fill:e,text:i})}const r=(null==l?void 0:l.length)>=(null==o?void 0:o.getLength())-1;o&&!r&&(null==l?void 0:l.length)?o.formatText(l.index,l.length,"color",e,"user"):(i=t.text.replace(/style=".*?"/g,""),t.set({fill:e,text:i}))},store:o})});export const DirectionInput=t(({element:t})=>{const o=t,l="rtl"===o.dir?E:T,a=O("toolbar.textDirection");return e.createElement(i,{content:a,position:r.BOTTOM},e.createElement(n,{icon:e.createElement(l,{className:"bp5-icon",style:{fontSize:"20px"}}),minimal:!0,onClick:()=>{t.set({dir:"rtl"===o.dir?"ltr":"rtl"})},"aria-label":a}))});const R={TextFontFamily:G,TextFontSize:L,TextFontVariant:FontStyleGroup,TextTransform:_,TextFilters:h,TextFill:FontColorInput,TextSpacing:B,TextDirection:DirectionInput,TextAnimations:S,TextAiWrite:w};export const HtmlToolbar=t(({store:t,components:o})=>{const n=t.selectedElements,l=t.selectedElements[0],i=["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextTransform","TextFilters",A.animationsEnabled&&"TextAnimations","TextAiWrite"],r=f({type:"text",usedItems:i,components:o});return e.createElement(b,{items:r,itemRender:i=>{if("TextBold"===i){return null}const r=o[i]||R[i];return e.createElement(r,{element:l,elements:n,store:t,key:i,components:o})}})});
1
+ import e from"react";import{observer as t}from"mobx-react-lite";import{runInAction as o}from"mobx";import{Button as n,ButtonGroup as l,Tooltip as i,Position as r}from"@blueprintjs/core";import{Bold as a,Italic as c,Underline as m,Strikethrough as s,AlignLeft as p,AlignCenter as d,AlignRight as u,AlignJustify as x}from"@blueprintjs/icons";import{ElementContainer as b,extendToolbar as f}from"./element-container.js";import g from"./color-picker.js";import h from"./filters-picker.js";import E from"@meronex/icons/md/MdFormatTextdirectionRToL.js";import T from"@meronex/icons/md/MdFormatTextdirectionLToR.js";import F from"@meronex/icons/mdc/MdcFormatVerticalAlignTop.js";import v from"@meronex/icons/mdc/MdcFormatVerticalAlignCenter.js";import j from"@meronex/icons/mdc/MdcFormatVerticalAlignBottom.js";import y from"@meronex/icons/mdc/MdcFormatListBulleted.js";import D from"@meronex/icons/mdc/MdcFormatListNumbered.js";import{AnimationsPicker as S}from"./animations-picker.js";import{flags as A}from"../utils/flags.js";import{TextAiWrite as w}from"./text-ai-write.js";import{t as O}from"../utils/l10n.js";import{quillRef as C,createQuill as M,setQuillContent as k}from"../canvas/html-element.js";import{TextFontFamily as G,TextSpacing as B,TextFontSize as L,TextTransform as _}from"./text-toolbar.js";const W=({html:e})=>{const t=document.createElement("div");document.body.appendChild(t),t.style.display="none",t.style.whiteSpace="pre-wrap";const o=M(t);return k(o,e),o},N=e=>{e.root.parentElement.remove()},V=["left","center","right","justify"],I=["top","middle","bottom"],Q={top:e.createElement("span",{className:"bp5-icon"},e.createElement(F,null)),middle:e.createElement("span",{className:"bp5-icon"},e.createElement(v,null)),bottom:e.createElement("span",{className:"bp5-icon"},e.createElement(j,null))},z=t(({active:t,globalActive:l,format:a,element:c,disableGlobal:m,enableGlobal:s,icon:p,ariaLabel:d,tooltipContent:u})=>{const x=u||d||a;return e.createElement(i,{content:x,position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:p,active:t,"aria-label":x,onMouseDown:e=>{e.preventDefault()},onClick:e=>{let t=window.__polotnoQuill;const n=C.currentFormat;if(t){const e=t.getSelection();return e.length>0?t.formatText(e.index,e.length,a,!n[a],"user"):t.format(a,!n[a],"user"),o(()=>{C.currentFormat=t.getFormat(t.getSelection())}),void(l&&m())}t=W({html:c.text}),t.setSelection(0,t.getLength(),"api"),t.format(a,!1);const i=t.root.innerHTML;N(t),c.set({text:i}),l?m():s()}}))});export const TextBold=t(({element:t,store:o})=>{const n=C.currentFormat;return e.createElement(z,{format:"bold",active:n.bold||"bold"===t.fontWeight||"700"===t.fontWeight,globalActive:"bold"===t.fontWeight||"700"===t.fontWeight,element:t,disableGlobal:()=>t.set({fontWeight:"normal"}),enableGlobal:()=>t.set({fontWeight:"bold"}),icon:e.createElement(a,null),tooltipContent:O("toolbar.bold")})});export const FontStyleGroup=t(({element:t,store:o,elements:a,components:b})=>{const f=(null==b?void 0:b.TextBold)||TextBold,g=C.currentFormat;return e.createElement(l,null,e.createElement(f,{element:t,store:o}),e.createElement(z,{format:"italic",active:g.italic||"italic"===t.fontStyle,globalActive:"italic"===t.fontStyle,element:t,disableGlobal:()=>t.set({fontStyle:"normal"}),enableGlobal:()=>t.set({fontStyle:"italic"}),icon:e.createElement(c,null),tooltipContent:O("toolbar.italic")}),e.createElement(z,{format:"underline",active:g.underline||t.textDecoration.indexOf("underline")>=0,globalActive:t.textDecoration.indexOf("underline")>=0,element:t,disableGlobal:()=>{let e=t.textDecoration.split(" ");e=e.filter(e=>"underline"!==e),t.set({textDecoration:e.join(" ")})},enableGlobal:()=>{let e=t.textDecoration.split(" ");e.push("underline"),t.set({textDecoration:e.join(" ")})},icon:e.createElement(m,null),tooltipContent:O("toolbar.underline")}),e.createElement(z,{format:"strike",active:g.strike||t.textDecoration.indexOf("line-through")>=0,globalActive:t.textDecoration.indexOf("line-through")>=0,element:t,disableGlobal:()=>{let e=t.textDecoration.split(" ");e=e.filter(e=>"line-through"!==e),t.set({textDecoration:e.join(" ")})},enableGlobal:()=>{let e=t.textDecoration.split(" ");e.push("line-through"),t.set({textDecoration:e.join(" ")})},icon:e.createElement(s,null),tooltipContent:O("toolbar.strikethrough")}),e.createElement(i,{content:O("toolbar.textAlign"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:"left"===t.align?e.createElement(p,null):"center"===t.align?e.createElement(d,null):"right"===t.align?e.createElement(u,null):e.createElement(x,null),onClick:()=>{const e=(V.indexOf(t.align)+1+V.length)%V.length,n=V[e];o.history.transaction(()=>{a.forEach(e=>{e.set({align:n})})})},"aria-label":O("toolbar.textAlign")})),A.textVerticalResizeEnabled&&e.createElement(i,{content:O("toolbar.verticalAlign"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:Q[t.verticalAlign],onClick:()=>{const e=(I.indexOf(t.verticalAlign)+1+I.length)%I.length,n=I[e];o.history.transaction(()=>{t.set({verticalAlign:n})})},"aria-label":O("toolbar.verticalAlign")})),e.createElement(i,{content:O("toolbar.listFormat"),position:r.BOTTOM},e.createElement(n,{minimal:!0,icon:"bullet"===g.list?e.createElement("span",{className:"bp5-icon"},e.createElement(D,{style:{width:"20px",height:"20px"}})):e.createElement("span",{className:"bp5-icon"},e.createElement(y,{style:{width:"20px",height:"20px"}})),onMouseDown:e=>{e.preventDefault()},onClick:()=>{let e=window.__polotnoQuill,o=!e;e=e||W({html:t.text}),o&&e.setSelection(0,e.getLength(),"api");const n=e.getFormat();n.list?"bullet"===n.list?e.format("list","ordered"):e.format("list",!1):e.format("list","bullet"),o&&(t.set({text:e.root.innerHTML}),N(e))},"aria-label":O("toolbar.listFormat")})))});export const FontColorInput=t(({element:t,store:o})=>{const[n,l]=e.useState(null),i=C.currentFormat;return e.createElement(g,{value:i.color||t.fill,gradientEnabled:!0,onOpen:()=>{const e=window.__polotnoQuill;e&&l(e.getSelection())},onClose:()=>{const e=window.__polotnoQuill;e&&e.setSelection(n)},onChange:e=>{const o=window.__polotnoQuill,l=(null==o?void 0:o.getSelection())||n,i=!!(o&&l&&l.length>0),r=i&&l.length>=o.getLength()-1;var a;!i||r?o?(o.formatText(0,o.getLength(),"color",!1,"user"),t.set({fill:e})):t.set({fill:e,text:(a=t.text,a.replace(/style="([^"]*)"/g,(e,t)=>{const o=t.split(";").map(e=>e.trim()).filter(e=>e.length>0&&!/^color\s*:/i.test(e));return 0===o.length?"":`style="${o.join("; ")};"`}))}):o.formatText(l.index,l.length,"color",e,"user")},store:o})});export const DirectionInput=t(({element:t})=>{const o=t,l="rtl"===o.dir?E:T,a=O("toolbar.textDirection");return e.createElement(i,{content:a,position:r.BOTTOM},e.createElement(n,{icon:e.createElement(l,{className:"bp5-icon",style:{fontSize:"20px"}}),minimal:!0,onClick:()=>{t.set({dir:"rtl"===o.dir?"ltr":"rtl"})},"aria-label":a}))});const R={TextFontFamily:G,TextFontSize:L,TextFontVariant:FontStyleGroup,TextTransform:_,TextFilters:h,TextFill:FontColorInput,TextSpacing:B,TextDirection:DirectionInput,TextAnimations:S,TextAiWrite:w};export const HtmlToolbar=t(({store:t,components:o})=>{const n=t.selectedElements,l=t.selectedElements[0],i=["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextTransform","TextFilters",A.animationsEnabled&&"TextAnimations","TextAiWrite"],r=f({type:"text",usedItems:i,components:o});return e.createElement(b,{items:r,itemRender:i=>{if("TextBold"===i){return null}const r=o[i]||R[i];return e.createElement(r,{element:l,elements:n,store:t,key:i,components:o})}})});
@@ -1,7 +1,7 @@
1
- var e=this&&this.__rest||function(e,t){var n={};for(var o in e){Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o])}if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(o=Object.getOwnPropertySymbols(e);a<o.length;a++){t.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(e,o[a])&&(n[o[a]]=e[o[a]])}}return n};import t from"react";import{observer as n}from"mobx-react-lite";import{Button as o,ButtonGroup as a,InputGroup as l,Menu as i,MenuDivider as r,MenuItem as c,NumericInput as s,Popover as m,Position as p,Slider as u,Tooltip as f}from"@blueprintjs/core";import{FixedSizeList as d}from"react-window";import h from"swr";import{AlignCenter as x,AlignJustify as E,AlignLeft as g,AlignRight as T,Bold as b,CaretDown as y,Italic as O,Search as v,Strikethrough as F,Underline as S}from"@blueprintjs/icons";import{getFontsList as C,globalFonts as I,isGoogleFontChanged as N}from"../utils/fonts.js";import{getGoogleFontImage as A,getGoogleFontsListAPI as M}from"../utils/api.js";import w from"./color-picker.js";import j from"./filters-picker.js";import{AnimationsPicker as L}from"./animations-picker.js";import{ElementContainer as V,extendToolbar as _}from"./element-container.js";import{TextAiWrite as k}from"./text-ai-write.js";import D from"@meronex/icons/mdc/MdcFormatLineSpacing.js";import P from"@meronex/icons/mdc/MdcFormatLetterCase.js";import R from"../utils/styled.js";import z from"@meronex/icons/mdc/MdcFormatVerticalAlignTop.js";import B from"@meronex/icons/mdc/MdcFormatVerticalAlignCenter.js";import G from"@meronex/icons/mdc/MdcFormatVerticalAlignBottom.js";import{t as W}from"../utils/l10n.js";import{flags as H}from"../utils/flags.js";const q=R("img")`
1
+ var e=this&&this.__rest||function(e,t){var n={};for(var o in e){Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o])}if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var l=0;for(o=Object.getOwnPropertySymbols(e);l<o.length;l++){t.indexOf(o[l])<0&&Object.prototype.propertyIsEnumerable.call(e,o[l])&&(n[o[l]]=e[o[l]])}}return n};import t from"react";import{observer as n}from"mobx-react-lite";import{Button as o,ButtonGroup as l,InputGroup as a,Menu as r,MenuDivider as i,MenuItem as c,NumericInput as s,Popover as m,Position as p,Slider as u,Tooltip as f}from"@blueprintjs/core";import{FixedSizeList as d}from"react-window";import h from"swr";import{AlignCenter as x,AlignJustify as E,AlignLeft as g,AlignRight as T,Bold as b,CaretDown as y,Italic as O,Search as v,Strikethrough as F,Underline as S}from"@blueprintjs/icons";import{getFontsList as I,globalFonts as C,isGoogleFontChanged as N}from"../utils/fonts.js";import{getGoogleFontImage as A,getGoogleFontsListAPI as w}from"../utils/api.js";import M from"./color-picker.js";import j from"./filters-picker.js";import{AnimationsPicker as L}from"./animations-picker.js";import{ElementContainer as V,extendToolbar as _}from"./element-container.js";import{TextAiWrite as k}from"./text-ai-write.js";import D from"@meronex/icons/mdc/MdcFormatLineSpacing.js";import P from"@meronex/icons/mdc/MdcFormatLetterCase.js";import R from"../utils/styled.js";import B from"@meronex/icons/mdc/MdcFormatVerticalAlignTop.js";import z from"@meronex/icons/mdc/MdcFormatVerticalAlignCenter.js";import G from"@meronex/icons/mdc/MdcFormatVerticalAlignBottom.js";import{t as W}from"../utils/l10n.js";import{flags as H}from"../utils/flags.js";const q=R("img")`
2
2
  height: 20px;
3
3
 
4
4
  .bp5-dark & {
5
5
  filter: invert(1);
6
6
  }
7
- `,J=C(),K=({fontFamily:e,handleClick:n,modifiers:o,store:a,isCustom:l})=>{const[i,s]=t.useState(!l);if(t.useEffect(()=>{i||a.loadFont(e)},[e,i]),"_divider"===e){return t.createElement("div",{style:{paddingTop:"10px"}},t.createElement(r,null))}const m=i?t.createElement(q,{src:A(e),alt:e,onError:()=>{s(!1)}}):e;return t.createElement(c,{text:m,active:o.active,disabled:o.disabled,onClick:n,style:{fontFamily:'"'+e+'"'}})},Q=({onChange:e,defaultValue:n})=>{const o=t.useRef(null);return t.useEffect(()=>{o.current&&o.current.focus()},[]),t.createElement(l,{leftIcon:t.createElement(v,null),inputRef:o,defaultValue:n,onChange:t=>e(t.target.value)})};export const FontMenu=({store:e,fonts:n,activeFont:a,activeFontLabel:l,onFontSelect:r})=>{const[c,s]=t.useState(""),u=n.filter(e=>(null==e?void 0:e.toLowerCase().indexOf(c.toLowerCase()))>=0);return t.createElement(m,{content:t.createElement("div",null,t.createElement(Q,{onChange:e=>s(e),defaultValue:c}),t.createElement("div",{style:{paddingTop:"5px"}},t.createElement(d,{innerElementType:t.forwardRef((e,n)=>t.createElement(i,Object.assign({ulRef:n},e))),height:Math.min(400,30*u.length)+10,width:210,itemCount:u.length,itemSize:30,children:({index:n,style:o})=>{const l=u[n];return t.createElement("div",{style:o},t.createElement(K,{key:l,fontFamily:l,modifiers:{active:a===l},handleClick:()=>r(l),store:e,isCustom:e.fonts.find(e=>e.fontFamily===l)||I.find(e=>e.fontFamily===l)}))}})))},t.createElement(f,{content:W("toolbar.fontFamily"),position:p.BOTTOM},t.createElement(o,{text:l,rightIcon:t.createElement(y,null),minimal:!0,style:{marginRight:"5px",fontFamily:'"'+a+'"',overflow:"hidden",whiteSpace:"nowrap",maxHeight:"30px"},"aria-label":W("toolbar.fontFamily")})))};const U={};export const fetcher=e=>U[e]?Promise.resolve(U[e]):fetch(e).then(e=>e.json()).then(t=>(U[e]=t,t));export const TextFontFamily=n(({elements:e,store:n})=>{const{data:o,mutate:a}=h(M(),fetcher,{isPaused:()=>N(),fallbackData:[]});t.useEffect(()=>{a()},[N()]);const l=n.fonts.concat(I).map(e=>e.fontFamily).concat((null==o?void 0:o.length)&&!N()?o:J);let i=e[0].fontFamily;i.length>15&&(i=i.slice(0,15)+"...");const r=[];n.find(e=>("text"===e.type&&r.push(e.fontFamily),!1));const c=[...new Set(r.concat("_divider").concat(l))];return t.createElement(FontMenu,{fonts:c,activeFont:e[0].fontFamily,activeFontLabel:i,store:n,onFontSelect:t=>{n.history.transaction(()=>{e.forEach(e=>{e.set({fontFamily:t})})})}})});export const TextFontSize=n(({elements:e,store:n})=>{const[o,a]=t.useState(!1);return t.createElement(f,{content:W("toolbar.fontSize"),position:p.BOTTOM,openOnTargetFocus:!1,disabled:o},t.createElement(s,{"aria-label":W("toolbar.fontSize"),onFocus:()=>a(!0),onBlur:()=>a(!1),onValueChange:t=>{if(Number.isNaN(t)){return}const o=4*n.height;t=Math.max(5,Math.min(o,t)),n.history.transaction(()=>{e.forEach(e=>{e.set({fontSize:t,width:Math.max(t,e.width)})})})},value:Math.round(e[0].fontSize),style:{width:"50px"},min:5,max:4*n.height}))});export const ALIGN_OPTIONS=["left","center","right","justify"];export const VERTICAL_ALIGN_OPTIONS=["top","middle","bottom"];export const VERTICAL_ALIGN_ICONS={top:t.createElement("span",{className:"bp5-icon"},t.createElement(z,null)),middle:t.createElement("span",{className:"bp5-icon"},t.createElement(B,null)),bottom:t.createElement("span",{className:"bp5-icon"},t.createElement(G,null))};export const TextFontVariant=n(({elements:e,store:n})=>{const l=e[0];return t.createElement(a,null,t.createElement(f,{content:W("toolbar.textAlign"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:"left"===l.align?t.createElement(g,null):"center"===l.align?t.createElement(x,null):"right"===l.align?t.createElement(T,null):t.createElement(E,null),onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t=(ALIGN_OPTIONS.indexOf(l.align)+1+ALIGN_OPTIONS.length)%ALIGN_OPTIONS.length,o=ALIGN_OPTIONS[t];n.history.transaction(()=>{e.forEach(e=>{e.set({align:o})})})},"aria-label":W("toolbar.textAlign")})),H.textVerticalResizeEnabled&&t.createElement(f,{content:W("toolbar.verticalAlign"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:VERTICAL_ALIGN_ICONS[l.verticalAlign],onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t=(VERTICAL_ALIGN_OPTIONS.indexOf(l.verticalAlign)+1+VERTICAL_ALIGN_OPTIONS.length)%VERTICAL_ALIGN_OPTIONS.length,o=VERTICAL_ALIGN_OPTIONS[t];n.history.transaction(()=>{e.forEach(e=>{e.set({verticalAlign:o})})})},"aria-label":W("toolbar.verticalAlign")})),t.createElement(f,{content:W("toolbar.bold"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(b,null),active:"bold"===l.fontWeight||"700"===l.fontWeight,onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t="bold"===l.fontWeight||"700"===l.fontWeight;n.history.transaction(()=>{e.forEach(e=>{t?e.set({fontWeight:"normal"}):e.set({fontWeight:"bold"})})})},"aria-label":W("toolbar.bold")})),t.createElement(f,{content:W("toolbar.italic"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(O,null),active:"italic"===l.fontStyle,onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t="italic"===l.fontStyle;n.history.transaction(()=>{e.forEach(e=>{t?e.set({fontStyle:"normal"}):e.set({fontStyle:"italic"})})})},"aria-label":W("toolbar.italic")})),t.createElement(f,{content:W("toolbar.underline"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(S,null),active:l.textDecoration.indexOf("underline")>=0,onMouseDown:e=>{e.preventDefault()},onClick:()=>{let t=l.textDecoration.split(" ");t.indexOf("underline")>=0?t=t.filter(e=>"underline"!==e):t.push("underline"),n.history.transaction(()=>{e.forEach(e=>{e.set({textDecoration:t.join(" ")})})})},"aria-label":W("toolbar.underline")})),t.createElement(f,{content:W("toolbar.strikethrough"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(F,null),active:l.textDecoration.indexOf("line-through")>=0,onMouseDown:e=>{e.preventDefault()},onClick:()=>{let t=l.textDecoration.split(" ");t.indexOf("line-through")>=0?t=t.filter(e=>"line-through"!==e):t.push("line-through"),n.history.transaction(()=>{e.forEach(e=>{e.set({textDecoration:t.join(" ")})})})},"aria-label":W("toolbar.strikethrough")})))});export const TextTransform=n(({elements:e,store:n})=>t.createElement(a,null,t.createElement(f,{content:W("toolbar.uppercase")},t.createElement(o,{variant:"minimal",active:"uppercase"==e[0].textTransform,icon:t.createElement(P,{size:16,className:"bp5-icon"}),onMouseDown:e=>{e.preventDefault()},onClick:()=>{n.history.transaction(()=>{e.forEach(e=>{e.set({textTransform:"uppercase"===e.textTransform?"none":"uppercase"})})})}}))));export const TextFill=n(({elements:e,store:n})=>t.createElement(w,{value:e[0].fill,style:{marginRight:"5px"},gradientEnabled:!0,onChange:t=>n.history.transaction(()=>{e.forEach(e=>{e.set({fill:t})})}),store:n}));export const NumberInput=n=>{var{value:o,onValueChange:a}=n,l=e(n,["value","onValueChange"]);const[i,r]=t.useState(o.toString());return t.useEffect(()=>{r(o.toString())},[o]),t.createElement(s,Object.assign({value:i,onValueChange:(e,t)=>{r(t),Number.isNaN(e)||a(e)}},l))};export const TextSpacing=n(({elements:e,store:n})=>{const a=e[0],l=t=>{n.history.transaction(()=>{e.forEach(e=>{e.set(t)})})},i="number"==typeof a.lineHeight?100*a.lineHeight:120;return t.createElement(m,{position:p.BOTTOM,content:t.createElement("div",{style:{padding:"15px",width:"230px"}},t.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"}},t.createElement("div",null,W("toolbar.lineHeight")),t.createElement("div",null,t.createElement(NumberInput,{value:Math.round(i),onValueChange:e=>{l({lineHeight:e/100})},style:{width:"50px"},min:50,max:250,buttonPosition:"none"}))),t.createElement(u,{value:Math.round(i),onChange:e=>{l({lineHeight:e/100})},min:50,max:250,stepSize:1,showTrackFill:!1,labelRenderer:!1}),t.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"}},t.createElement("div",null,W("toolbar.letterSpacing")),t.createElement("div",null,t.createElement(NumberInput,{value:Math.round(100*a.letterSpacing),onValueChange:e=>{l({letterSpacing:e/100})},style:{width:"50px"},min:-50,max:250,buttonPosition:"none"}))),t.createElement(u,{value:Math.round(100*a.letterSpacing),onChange:e=>{l({letterSpacing:e/100})},min:-50,max:250,stepSize:1,showTrackFill:!1,labelRenderer:!1}))},t.createElement(f,{content:W("toolbar.spacing"),position:p.BOTTOM},t.createElement(o,{icon:t.createElement(D,{className:"bp5-icon",style:{fontSize:"20px"}}),minimal:!0,"aria-label":W("toolbar.spacing")})))});const X={TextFontFamily,TextFontSize,TextFontVariant,TextTransform,TextFill,TextSpacing,TextAiWrite:k,TextFilters:j,TextAnimations:L};export const TextToolbar=n(({store:e,components:n})=>{const o=e.selectedElements,a=["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextTransform","TextFilters",H.animationsEnabled&&"TextAnimations",H.aiTextEnabled&&"TextAiWrite"],l=_({type:"text",usedItems:a,components:n});return t.createElement(V,{items:l,itemRender:a=>{const l=n[a]||X[a];return t.createElement(l,{elements:o,element:o[0],store:e,key:a})}})});export default TextToolbar;
7
+ `,J=I(),K=({fontFamily:e,handleClick:n,modifiers:o,store:l,isCustom:a})=>{const[r,s]=t.useState(!a);if(t.useEffect(()=>{r||l.loadFont(e)},[e,r]),"_divider"===e){return t.createElement("div",{style:{paddingTop:"10px"}},t.createElement(i,null))}const m=r?t.createElement(q,{src:A(e),alt:e,onError:()=>{s(!1)}}):e;return t.createElement(c,{text:m,active:o.active,disabled:o.disabled,onClick:n,style:{fontFamily:'"'+e+'"'}})},Q=({onChange:e,defaultValue:n})=>{const o=t.useRef(null);return t.useEffect(()=>{o.current&&o.current.focus()},[]),t.createElement(a,{leftIcon:t.createElement(v,null),inputRef:o,defaultValue:n,onChange:t=>e(t.target.value)})};export const FontMenu=({store:e,fonts:n,activeFont:l,activeFontLabel:a,onFontSelect:i})=>{const[c,s]=t.useState(""),u=n.filter(e=>(null==e?void 0:e.toLowerCase().indexOf(c.toLowerCase()))>=0);return t.createElement(m,{content:t.createElement("div",null,t.createElement(Q,{onChange:e=>s(e),defaultValue:c}),t.createElement("div",{style:{paddingTop:"5px"}},t.createElement(d,{innerElementType:t.forwardRef((e,n)=>t.createElement(r,Object.assign({ulRef:n},e))),height:Math.min(400,30*u.length)+10,width:210,itemCount:u.length,itemSize:30,children:({index:n,style:o})=>{const a=u[n];return t.createElement("div",{style:o},t.createElement(K,{key:a,fontFamily:a,modifiers:{active:l===a},handleClick:()=>i(a),store:e,isCustom:e.fonts.find(e=>e.fontFamily===a)||C.find(e=>e.fontFamily===a)}))}})))},t.createElement(f,{content:W("toolbar.fontFamily"),position:p.BOTTOM},t.createElement(o,{text:a,rightIcon:t.createElement(y,null),minimal:!0,style:{marginRight:"5px",fontFamily:'"'+l+'"',overflow:"hidden",whiteSpace:"nowrap",maxHeight:"30px"},"aria-label":W("toolbar.fontFamily")})))};const U={};export const fetcher=e=>U[e]?Promise.resolve(U[e]):fetch(e).then(e=>e.json()).then(t=>(U[e]=t,t));export const TextFontFamily=n(({elements:e,store:n})=>{const{data:o,mutate:l}=h(w(),fetcher,{isPaused:()=>N(),fallbackData:[]});t.useEffect(()=>{l()},[N()]);const a=n.fonts.concat(C).map(e=>e.fontFamily).concat((null==o?void 0:o.length)&&!N()?o:J);let r=e[0].fontFamily;r.length>15&&(r=r.slice(0,15)+"...");const i=[];n.find(e=>("text"===e.type&&i.push(e.fontFamily),!1));const c=[...new Set(i.concat("_divider").concat(a))];return t.createElement(FontMenu,{fonts:c,activeFont:e[0].fontFamily,activeFontLabel:r,store:n,onFontSelect:t=>{n.history.transaction(()=>{e.forEach(e=>{e.set({fontFamily:t})})})}})});export const TextFontSize=n(({elements:e,store:n})=>{const[o,l]=t.useState(!1);return t.createElement(f,{content:W("toolbar.fontSize"),position:p.BOTTOM,openOnTargetFocus:!1,disabled:o},t.createElement(NumberInput,{"aria-label":W("toolbar.fontSize"),onFocus:()=>l(!0),onBlur:()=>l(!1),onValueChange:t=>{n.history.transaction(()=>{e.forEach(e=>{e.set({fontSize:t,width:Math.max(t,e.width)})})})},value:Math.round(e[0].fontSize),style:{width:"50px"},min:5,max:4*n.height}))});export const ALIGN_OPTIONS=["left","center","right","justify"];export const VERTICAL_ALIGN_OPTIONS=["top","middle","bottom"];export const VERTICAL_ALIGN_ICONS={top:t.createElement("span",{className:"bp5-icon"},t.createElement(B,null)),middle:t.createElement("span",{className:"bp5-icon"},t.createElement(z,null)),bottom:t.createElement("span",{className:"bp5-icon"},t.createElement(G,null))};export const TextFontVariant=n(({elements:e,store:n})=>{const a=e[0];return t.createElement(l,null,t.createElement(f,{content:W("toolbar.textAlign"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:"left"===a.align?t.createElement(g,null):"center"===a.align?t.createElement(x,null):"right"===a.align?t.createElement(T,null):t.createElement(E,null),onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t=(ALIGN_OPTIONS.indexOf(a.align)+1+ALIGN_OPTIONS.length)%ALIGN_OPTIONS.length,o=ALIGN_OPTIONS[t];n.history.transaction(()=>{e.forEach(e=>{e.set({align:o})})})},"aria-label":W("toolbar.textAlign")})),H.textVerticalResizeEnabled&&t.createElement(f,{content:W("toolbar.verticalAlign"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:VERTICAL_ALIGN_ICONS[a.verticalAlign],onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t=(VERTICAL_ALIGN_OPTIONS.indexOf(a.verticalAlign)+1+VERTICAL_ALIGN_OPTIONS.length)%VERTICAL_ALIGN_OPTIONS.length,o=VERTICAL_ALIGN_OPTIONS[t];n.history.transaction(()=>{e.forEach(e=>{e.set({verticalAlign:o})})})},"aria-label":W("toolbar.verticalAlign")})),t.createElement(f,{content:W("toolbar.bold"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(b,null),active:"bold"===a.fontWeight||"700"===a.fontWeight,onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t="bold"===a.fontWeight||"700"===a.fontWeight;n.history.transaction(()=>{e.forEach(e=>{t?e.set({fontWeight:"normal"}):e.set({fontWeight:"bold"})})})},"aria-label":W("toolbar.bold")})),t.createElement(f,{content:W("toolbar.italic"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(O,null),active:"italic"===a.fontStyle,onMouseDown:e=>{e.preventDefault()},onClick:()=>{const t="italic"===a.fontStyle;n.history.transaction(()=>{e.forEach(e=>{t?e.set({fontStyle:"normal"}):e.set({fontStyle:"italic"})})})},"aria-label":W("toolbar.italic")})),t.createElement(f,{content:W("toolbar.underline"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(S,null),active:a.textDecoration.indexOf("underline")>=0,onMouseDown:e=>{e.preventDefault()},onClick:()=>{let t=a.textDecoration.split(" ");t.indexOf("underline")>=0?t=t.filter(e=>"underline"!==e):t.push("underline"),n.history.transaction(()=>{e.forEach(e=>{e.set({textDecoration:t.join(" ")})})})},"aria-label":W("toolbar.underline")})),t.createElement(f,{content:W("toolbar.strikethrough"),position:p.BOTTOM},t.createElement(o,{minimal:!0,icon:t.createElement(F,null),active:a.textDecoration.indexOf("line-through")>=0,onMouseDown:e=>{e.preventDefault()},onClick:()=>{let t=a.textDecoration.split(" ");t.indexOf("line-through")>=0?t=t.filter(e=>"line-through"!==e):t.push("line-through"),n.history.transaction(()=>{e.forEach(e=>{e.set({textDecoration:t.join(" ")})})})},"aria-label":W("toolbar.strikethrough")})))});export const TextTransform=n(({elements:e,store:n})=>t.createElement(l,null,t.createElement(f,{content:W("toolbar.uppercase")},t.createElement(o,{variant:"minimal",active:"uppercase"==e[0].textTransform,icon:t.createElement(P,{size:16,className:"bp5-icon"}),onMouseDown:e=>{e.preventDefault()},onClick:()=>{n.history.transaction(()=>{e.forEach(e=>{e.set({textTransform:"uppercase"===e.textTransform?"none":"uppercase"})})})}}))));export const TextFill=n(({elements:e,store:n})=>t.createElement(M,{value:e[0].fill,style:{marginRight:"5px"},gradientEnabled:!0,onChange:t=>n.history.transaction(()=>{e.forEach(e=>{e.set({fill:t})})}),store:n}));export const NumberInput=n=>{var{value:o,onValueChange:l}=n,a=e(n,["value","onValueChange"]);const[r,i]=t.useState(o.toString());t.useEffect(()=>{i(o.toString())},[o]);const{min:c,max:m}=a,p="number"==typeof c||"number"==typeof m;return t.createElement(s,Object.assign({value:r,onValueChange:(e,t)=>{i(t),Number.isNaN(e)||"number"==typeof c&&e<c||"number"==typeof m&&e>m||l(e)},clampValueOnBlur:p},a))};export const TextSpacing=n(({elements:e,store:n})=>{const l=e[0],a=t=>{n.history.transaction(()=>{e.forEach(e=>{e.set(t)})})},r="number"==typeof l.lineHeight?100*l.lineHeight:120;return t.createElement(m,{position:p.BOTTOM,content:t.createElement("div",{style:{padding:"15px",width:"230px"}},t.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"}},t.createElement("div",null,W("toolbar.lineHeight")),t.createElement("div",null,t.createElement(NumberInput,{value:Math.round(r),onValueChange:e=>{a({lineHeight:e/100})},style:{width:"50px"},min:50,max:250,buttonPosition:"none"}))),t.createElement(u,{value:Math.round(r),onChange:e=>{a({lineHeight:e/100})},min:50,max:250,stepSize:1,showTrackFill:!1,labelRenderer:!1}),t.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"}},t.createElement("div",null,W("toolbar.letterSpacing")),t.createElement("div",null,t.createElement(NumberInput,{value:Math.round(100*l.letterSpacing),onValueChange:e=>{a({letterSpacing:e/100})},style:{width:"50px"},min:-50,max:250,buttonPosition:"none"}))),t.createElement(u,{value:Math.round(100*l.letterSpacing),onChange:e=>{a({letterSpacing:e/100})},min:-50,max:250,stepSize:1,showTrackFill:!1,labelRenderer:!1}))},t.createElement(f,{content:W("toolbar.spacing"),position:p.BOTTOM},t.createElement(o,{icon:t.createElement(D,{className:"bp5-icon",style:{fontSize:"20px"}}),minimal:!0,"aria-label":W("toolbar.spacing")})))});const X={TextFontFamily,TextFontSize,TextFontVariant,TextTransform,TextFill,TextSpacing,TextAiWrite:k,TextFilters:j,TextAnimations:L};export const TextToolbar=n(({store:e,components:n})=>{const o=e.selectedElements,l=["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextTransform","TextFilters",H.animationsEnabled&&"TextAnimations",H.aiTextEnabled&&"TextAiWrite"],a=_({type:"text",usedItems:l,components:n});return t.createElement(V,{items:a,itemRender:l=>{const a=n[l]||X[l];return t.createElement(a,{elements:o,element:o[0],store:e,key:l})}})});export default TextToolbar;
@@ -1 +1 @@
1
- import*as e from"mobx";import{getAPI as o}from"./api.js";import{setRemoveBackgroundEnabled as t}from"./flags.js";const n=e.observable({value:!1}),a=e.observable({value:"v1"});export const ___=()=>a.value;const i=e.observable({value:0});export const ____=()=>i.value;export const isCreditVisible=()=>n.value;const r=e.action(()=>{n.value=!0});let s="";export const getKey=()=>s||"";let l="undefined"!=typeof window?window.location.origin:"";const c="undefined"!=typeof navigator&&navigator.userAgent.indexOf("Headless")>-1,d="undefined"!=typeof navigator&&navigator.userAgent.indexOf("Electron")>-1;"file://"===l&&c&&(l="headless"),"file://"===l&&d&&(l="electron");const p=`%cPolotno error! Current domain is not allowed. It may lead to unexpected behavior and stop working. Please add "${l}" here: https://polotno.com/cabinet`;let u=fetch;export const __=e=>{u=e};export async function isKeyPaid(n){for(let s=0;s<5;s++){try{const r=await u(o()+"/validate-key",{method:"POST",body:JSON.stringify({key:n,site:location.host,skdVersion:"2.40.0"})});if(e.runInAction(()=>{a.value=r.headers.get("x-api-version")||""}),!n){return console.error("Polotno API is initialized without API key. It may lead to unexpected behavior and stop working. Please create API key here: https://polotno.com/cabinet"),e.runInAction(()=>{i.value=1}),!1}if(200!==r.status){await new Promise(e=>setTimeout(e,3e3));continue}const s=await r.json();return s.is_valid||(console.error("Polotno API key is not valid. Please get new API key here: https://polotno.com/cabinet"),e.runInAction(()=>{i.value=1})),s.is_paid||(console.log("%cPolotno Free Version. For development usage only. https://polotno.com/","background: rgb(0, 161, 255); color: white; padding: 5px; margin: 5px;"),e.runInAction(()=>{0===i.value&&(i.value=2)})),s.is_domain_valid||console.log(p,"background: rgba(247, 101, 68, 1); color: white; padding: 5px; margin: 5px;"),t(s.remove_background_enabled),s.is_paid||!1}catch(r){await new Promise(e=>setTimeout(e,3e3))}}return console.error("Can not validate Polotno API key. Please report to anton@polotno.com immediately."),!0}export async function validateKey(e,o){s=e,await isKeyPaid(e)&&!o||r()}
1
+ import*as e from"mobx";import{getAPI as o}from"./api.js";import{setRemoveBackgroundEnabled as t}from"./flags.js";const n=e.observable({value:!1}),a=e.observable({value:"v1"});export const ___=()=>a.value;const i=e.observable({value:0});export const ____=()=>i.value;export const isCreditVisible=()=>n.value;const r=e.action(()=>{n.value=!0});let s="";export const getKey=()=>s||"";let l="undefined"!=typeof window?window.location.origin:"";const c="undefined"!=typeof navigator&&navigator.userAgent.indexOf("Headless")>-1,d="undefined"!=typeof navigator&&navigator.userAgent.indexOf("Electron")>-1;"file://"===l&&c&&(l="headless"),"file://"===l&&d&&(l="electron");const p=`%cPolotno error! Current domain is not allowed. It may lead to unexpected behavior and stop working. Please add "${l}" here: https://polotno.com/cabinet`;let u=fetch;export const __=e=>{u=e};export async function isKeyPaid(n){for(let s=0;s<5;s++){try{const r=await u(o()+"/validate-key",{method:"POST",body:JSON.stringify({key:n,site:location.host,skdVersion:"2.40.1"})});if(e.runInAction(()=>{a.value=r.headers.get("x-api-version")||""}),!n){return console.error("Polotno API is initialized without API key. It may lead to unexpected behavior and stop working. Please create API key here: https://polotno.com/cabinet"),e.runInAction(()=>{i.value=1}),!1}if(200!==r.status){await new Promise(e=>setTimeout(e,3e3));continue}const s=await r.json();return s.is_valid||(console.error("Polotno API key is not valid. Please get new API key here: https://polotno.com/cabinet"),e.runInAction(()=>{i.value=1})),s.is_paid||(console.log("%cPolotno Free Version. For development usage only. https://polotno.com/","background: rgb(0, 161, 255); color: white; padding: 5px; margin: 5px;"),e.runInAction(()=>{0===i.value&&(i.value=2)})),s.is_domain_valid||console.log(p,"background: rgba(247, 101, 68, 1); color: white; padding: 5px; margin: 5px;"),t(s.remove_background_enabled),s.is_paid||!1}catch(r){await new Promise(e=>setTimeout(e,3e3))}}return console.error("Can not validate Polotno API key. Please report to anton@polotno.com immediately."),!0}export async function validateKey(e,o){s=e,await isKeyPaid(e)&&!o||r()}