polotno 3.0.0-beta.45 → 3.0.0-beta.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/config.d.ts CHANGED
@@ -19,7 +19,7 @@ export { setQuillFormats as unstable_setQuillFormats } from './canvas/html-eleme
19
19
  export { useDownScaling, setDownScalingEnabled } from './utils/flags.js';
20
20
  export { useRemoveBackground as unstable_setRemoveBackgroundEnabled, setRemoveBackgroundEnabled, } from './utils/flags.js';
21
21
  export { useHtmlTextRender as unstable_useHtmlTextRender, setRichTextEnabled, } from './utils/flags.js';
22
- export { setLegacuRichTextEnabled } from './utils/flags.js';
22
+ export { setLegacyRichTextEnabled } from './utils/flags.js';
23
23
  export { setForceTextFit as unstable_setForceTextFit } from './utils/flags.js';
24
24
  export { setTextSplitAllowed as unstable_setTextSplitAllowed } from './utils/flags.js';
25
25
  export { setTextOverflow as unstable_setTextOverflow, setTextOverflow, } from './utils/flags.js';
package/config.js CHANGED
@@ -1 +1 @@
1
- export{setGoogleFonts,addGlobalFont,removeGlobalFont,replaceGlobalFonts,setGoogleFontsVariants}from"./utils/fonts.js";export{setUploadFunc}from"./side-panel/upload-panel.js";export{setFontUploadFunc}from"./side-panel/text-panel.js";export{toggleFadeInAnimation}from"./canvas/use-fadein.js";export{setTransformerStyle,setHighlighterStyle,setInnerImageCropTransformerStyle,setOuterImageCropTransformerStyle}from"./canvas/workspace-style.js";export{setImageLoaderHook as unstable_setImageLoaderHook}from"./canvas/image-element.js";export{registerShapeModel as unstable_registerShapeModel}from"./model/group-model.js";export{registerShapeComponent as unstable_registerShapeComponent}from"./canvas/element.js";export{registerTransformerAttrs as unstable_registerTransformerAttrs}from"./canvas/page.js";export{registerToolbarComponent as unstable_registerToolbarComponent}from"./toolbar/toolbar.js";export{onLoadError,setAssetLoadTimeout,setFontLoadTimeout}from"./utils/loader.js";export{setSnapFilterFunc as unstable_setSnapFilterFunc}from"./canvas/use-transformer-snap.js";export{setTranslations,getTranslations}from"./utils/l10n.js";export{setIcons}from"./icons/registry.js";export{registerNextDomDrop as unstable_registerNextDomDrop}from"./canvas/page.js";export{getGoogleFontsListAPI,getGoogleFontImage,setAPI}from"./utils/api.js";export{setColorsPresetFunc}from"./toolbar/color-picker.js";export{setQuillFormats as unstable_setQuillFormats}from"./canvas/html-element.js";export{useDownScaling,setDownScalingEnabled}from"./utils/flags.js";export{useRemoveBackground as unstable_setRemoveBackgroundEnabled,setRemoveBackgroundEnabled}from"./utils/flags.js";export{useHtmlTextRender as unstable_useHtmlTextRender,setRichTextEnabled}from"./utils/flags.js";export{setLegacuRichTextEnabled}from"./utils/flags.js";export{setForceTextFit as unstable_setForceTextFit}from"./utils/flags.js";export{setTextSplitAllowed as unstable_setTextSplitAllowed}from"./utils/flags.js";export{setTextOverflow as unstable_setTextOverflow,setTextOverflow}from"./utils/flags.js";export{setTextVerticalResizeEnabled as unstable_setTextVerticalResizeEnabled,setTextVerticalResizeEnabled}from"./utils/flags.js";export{setAnimationsEnabled as unstable_setAnimationsEnabled,setAnimationsEnabled}from"./utils/flags.js";export{setAiTextEnabled}from"./utils/flags.js";export{setAutoDeleteEmptyText}from"./utils/flags.js";
1
+ export{setGoogleFonts,addGlobalFont,removeGlobalFont,replaceGlobalFonts,setGoogleFontsVariants}from"./utils/fonts.js";export{setUploadFunc}from"./side-panel/upload-panel.js";export{setFontUploadFunc}from"./side-panel/text-panel.js";export{toggleFadeInAnimation}from"./canvas/use-fadein.js";export{setTransformerStyle,setHighlighterStyle,setInnerImageCropTransformerStyle,setOuterImageCropTransformerStyle}from"./canvas/workspace-style.js";export{setImageLoaderHook as unstable_setImageLoaderHook}from"./canvas/image-element.js";export{registerShapeModel as unstable_registerShapeModel}from"./model/group-model.js";export{registerShapeComponent as unstable_registerShapeComponent}from"./canvas/element.js";export{registerTransformerAttrs as unstable_registerTransformerAttrs}from"./canvas/page.js";export{registerToolbarComponent as unstable_registerToolbarComponent}from"./toolbar/toolbar.js";export{onLoadError,setAssetLoadTimeout,setFontLoadTimeout}from"./utils/loader.js";export{setSnapFilterFunc as unstable_setSnapFilterFunc}from"./canvas/use-transformer-snap.js";export{setTranslations,getTranslations}from"./utils/l10n.js";export{setIcons}from"./icons/registry.js";export{registerNextDomDrop as unstable_registerNextDomDrop}from"./canvas/page.js";export{getGoogleFontsListAPI,getGoogleFontImage,setAPI}from"./utils/api.js";export{setColorsPresetFunc}from"./toolbar/color-picker.js";export{setQuillFormats as unstable_setQuillFormats}from"./canvas/html-element.js";export{useDownScaling,setDownScalingEnabled}from"./utils/flags.js";export{useRemoveBackground as unstable_setRemoveBackgroundEnabled,setRemoveBackgroundEnabled}from"./utils/flags.js";export{useHtmlTextRender as unstable_useHtmlTextRender,setRichTextEnabled}from"./utils/flags.js";export{setLegacyRichTextEnabled}from"./utils/flags.js";export{setForceTextFit as unstable_setForceTextFit}from"./utils/flags.js";export{setTextSplitAllowed as unstable_setTextSplitAllowed}from"./utils/flags.js";export{setTextOverflow as unstable_setTextOverflow,setTextOverflow}from"./utils/flags.js";export{setTextVerticalResizeEnabled as unstable_setTextVerticalResizeEnabled,setTextVerticalResizeEnabled}from"./utils/flags.js";export{setAnimationsEnabled as unstable_setAnimationsEnabled,setAnimationsEnabled}from"./utils/flags.js";export{setAiTextEnabled}from"./utils/flags.js";export{setAutoDeleteEmptyText}from"./utils/flags.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polotno",
3
- "version": "3.0.0-beta.45",
3
+ "version": "3.0.0-beta.46",
4
4
  "description": "Design Editor Framework",
5
5
  "author": "Anton Lavrenov",
6
6
  "keywords": [
package/polotno.bundle.js CHANGED
@@ -793,4 +793,4 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl
793
793
  min-width: 0;
794
794
  flex-direction: column;
795
795
  position: relative;
796
- `,C_e=x.forwardRef((e,t)=>{let n=x.useRef(null),r=x.useCallback(e=>{n.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]);return(0,G.jsx)(d4,{elementRef:n,children:(0,G.jsx)(b_e,{...e,ref:r,className:`polotno-ui ${e.className||``}`.trim()})})}),w_e=x.forwardRef((e,t)=>(0,G.jsx)(x_e,{...e,ref:t})),T_e=x.forwardRef((e,t)=>(0,G.jsx)(S_e,{...e,ref:t})),E_e=({store:e,style:t,sections:n})=>{let r=Y9;return n&&(r=n.map(e=>{let t=Y9.find(t=>t.name===e);return t||console.error(`Section ${e} not found`),t}).filter(e=>!!e)),(0,G.jsxs)(C_e,{className:`polotno-app-container`,style:t,children:[(0,G.jsx)(w_e,{children:(0,G.jsx)(X9,{store:e,sections:r})}),(0,G.jsxs)(T_e,{children:[(0,G.jsx)(Qme,{store:e,components:{ActionControls:()=>(0,G.jsx)(z8,{store:e})}}),(0,G.jsx)(Bde,{store:e}),(0,G.jsx)(y_e,{store:e})]})]})};function $9({container:e,key:t,showCredit:n,sections:r}){let i=cC({key:t,showCredit:n}),a=S.createRoot(e);return a.render((0,G.jsx)(E_e,{store:i,sections:r})),i.addPage(),i.history.clear(),{store:i,root:a,destroy:()=>a.unmount()}}var D_e=l({addGlobalFont:()=>pv,getGoogleFontImage:()=>i_,getGoogleFontsListAPI:()=>r_,getTranslations:()=>mV,onLoadError:()=>I_,removeGlobalFont:()=>mv,replaceGlobalFonts:()=>hv,setAPI:()=>Iee,setAiTextEnabled:()=>Ree,setAnimationsEnabled:()=>h_,setAssetLoadTimeout:()=>A_,setAutoDeleteEmptyText:()=>Wee,setColorsPresetFunc:()=>_pe,setDownScalingEnabled:()=>f_,setFontLoadTimeout:()=>ote,setFontUploadFunc:()=>lhe,setGoogleFonts:()=>uv,setGoogleFontsVariants:()=>_te,setHighlighterStyle:()=>Ep,setIcons:()=>bU,setInnerImageCropTransformerStyle:()=>Dp,setLegacuRichTextEnabled:()=>Bee,setOuterImageCropTransformerStyle:()=>Op,setRemoveBackgroundEnabled:()=>u_,setRichTextEnabled:()=>Vee,setTextOverflow:()=>p_,setTextVerticalResizeEnabled:()=>l_,setTransformerStyle:()=>Tp,setTranslations:()=>pV,setUploadFunc:()=>khe,toggleFadeInAnimation:()=>ate,unstable_registerNextDomDrop:()=>gB,unstable_registerShapeComponent:()=>Gz,unstable_registerShapeModel:()=>Lte,unstable_registerToolbarComponent:()=>Zme,unstable_registerTransformerAttrs:()=>aB,unstable_setAnimationsEnabled:()=>h_,unstable_setForceTextFit:()=>Uee,unstable_setImageLoaderHook:()=>MC,unstable_setQuillFormats:()=>Koe,unstable_setRemoveBackgroundEnabled:()=>Lee,unstable_setSnapFilterFunc:()=>CN,unstable_setTextOverflow:()=>p_,unstable_setTextSplitAllowed:()=>m_,unstable_setTextVerticalResizeEnabled:()=>l_,unstable_useHtmlTextRender:()=>zee,useDownScaling:()=>Hee});window.createPolotnoApp=$9,window.polotnoConfig=D_e,e.createPolotnoApp=$9});
796
+ `,C_e=x.forwardRef((e,t)=>{let n=x.useRef(null),r=x.useCallback(e=>{n.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]);return(0,G.jsx)(d4,{elementRef:n,children:(0,G.jsx)(b_e,{...e,ref:r,className:`polotno-ui ${e.className||``}`.trim()})})}),w_e=x.forwardRef((e,t)=>(0,G.jsx)(x_e,{...e,ref:t})),T_e=x.forwardRef((e,t)=>(0,G.jsx)(S_e,{...e,ref:t})),E_e=({store:e,style:t,sections:n})=>{let r=Y9;return n&&(r=n.map(e=>{let t=Y9.find(t=>t.name===e);return t||console.error(`Section ${e} not found`),t}).filter(e=>!!e)),(0,G.jsxs)(C_e,{className:`polotno-app-container`,style:t,children:[(0,G.jsx)(w_e,{children:(0,G.jsx)(X9,{store:e,sections:r})}),(0,G.jsxs)(T_e,{children:[(0,G.jsx)(Qme,{store:e,components:{ActionControls:()=>(0,G.jsx)(z8,{store:e})}}),(0,G.jsx)(Bde,{store:e}),(0,G.jsx)(y_e,{store:e})]})]})};function $9({container:e,key:t,showCredit:n,sections:r}){let i=cC({key:t,showCredit:n}),a=S.createRoot(e);return a.render((0,G.jsx)(E_e,{store:i,sections:r})),i.addPage(),i.history.clear(),{store:i,root:a,destroy:()=>a.unmount()}}var D_e=l({addGlobalFont:()=>pv,getGoogleFontImage:()=>i_,getGoogleFontsListAPI:()=>r_,getTranslations:()=>mV,onLoadError:()=>I_,removeGlobalFont:()=>mv,replaceGlobalFonts:()=>hv,setAPI:()=>Iee,setAiTextEnabled:()=>Ree,setAnimationsEnabled:()=>h_,setAssetLoadTimeout:()=>A_,setAutoDeleteEmptyText:()=>Wee,setColorsPresetFunc:()=>_pe,setDownScalingEnabled:()=>f_,setFontLoadTimeout:()=>ote,setFontUploadFunc:()=>lhe,setGoogleFonts:()=>uv,setGoogleFontsVariants:()=>_te,setHighlighterStyle:()=>Ep,setIcons:()=>bU,setInnerImageCropTransformerStyle:()=>Dp,setLegacyRichTextEnabled:()=>Bee,setOuterImageCropTransformerStyle:()=>Op,setRemoveBackgroundEnabled:()=>u_,setRichTextEnabled:()=>Vee,setTextOverflow:()=>p_,setTextVerticalResizeEnabled:()=>l_,setTransformerStyle:()=>Tp,setTranslations:()=>pV,setUploadFunc:()=>khe,toggleFadeInAnimation:()=>ate,unstable_registerNextDomDrop:()=>gB,unstable_registerShapeComponent:()=>Gz,unstable_registerShapeModel:()=>Lte,unstable_registerToolbarComponent:()=>Zme,unstable_registerTransformerAttrs:()=>aB,unstable_setAnimationsEnabled:()=>h_,unstable_setForceTextFit:()=>Uee,unstable_setImageLoaderHook:()=>MC,unstable_setQuillFormats:()=>Koe,unstable_setRemoveBackgroundEnabled:()=>Lee,unstable_setSnapFilterFunc:()=>CN,unstable_setTextOverflow:()=>p_,unstable_setTextSplitAllowed:()=>m_,unstable_setTextVerticalResizeEnabled:()=>l_,unstable_useHtmlTextRender:()=>zee,useDownScaling:()=>Hee});window.createPolotnoApp=$9,window.polotnoConfig=D_e,e.createPolotnoApp=$9});
package/utils/flags.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare const setRemoveBackgroundEnabled: (value: boolean) => void;
16
16
  export declare const useRemoveBackground: (value: boolean) => void;
17
17
  export declare const setAiTextEnabled: (value: boolean) => void;
18
18
  export declare const useHtmlTextRender: (value: boolean) => void;
19
- export declare const setLegacuRichTextEnabled: (value: any) => void;
19
+ export declare const setLegacyRichTextEnabled: (value: any) => void;
20
20
  export declare const setRichTextEnabled: (_value: boolean) => void;
21
21
  export declare const setRenderTagTextEnabled: (_value: boolean) => void;
22
22
  export declare const setDownScalingEnabled: (value: boolean) => void;
package/utils/flags.js CHANGED
@@ -1 +1 @@
1
- import*as e from"mobx";export const flags=e.observable({imageDownScalingEnabled:!0,removeBackgroundEnabled:!1,htmlRenderEnabled:!1,renderTagTextEnabled:!0,forceTextFitEnabled:!1,textVerticalResizeEnabled:!1,textOverflow:"resize",textSplitAllowed:!1,animationsEnabled:!1,aiTextEnabled:!1,autoDeleteEmptyText:!0});const t="undefined"!=typeof window&&"localhost"===window.location.hostname,n="undefined"!=typeof process&&"development"===process.env.NODE_ENV,o=t||n;export const setTextVerticalResizeEnabled=e.action(e=>{flags.textVerticalResizeEnabled=e});export const setRemoveBackgroundEnabled=e.action(e=>{flags.removeBackgroundEnabled=e});export const useRemoveBackground=e.action(e=>{o&&console.warn("useRemoveBackground is deprecated. Use setRemoveBackgroundEnabled instead."),setRemoveBackgroundEnabled(e)});export const setAiTextEnabled=e.action(e=>{flags.aiTextEnabled=e});export const useHtmlTextRender=e.action(e=>{o&&console.warn("useHtmlTextRender is deprecated. Use setRichTextEnabled instead."),flags.htmlRenderEnabled=e});const a=t=>e.action(e=>{o&&console.warn(`${t}() is a no-op: the new text rendering engine is enabled by default.`)});export const setLegacuRichTextEnabled=t=>{e.runInAction(()=>{flags.htmlRenderEnabled=!0,flags.renderTagTextEnabled=!1})};export const setRichTextEnabled=a("setRichTextEnabled");export const setRenderTagTextEnabled=a("setRenderTagTextEnabled");export const setDownScalingEnabled=e.action(e=>{flags.imageDownScalingEnabled=e});export const useDownScaling=e.action(e=>{console.warn("useDownScaling is deprecated. Use setDownScalingEnabled instead."),setDownScalingEnabled(e)});export const setForceTextFit=e.action(e=>{console.warn("setForceTextFit is deprecated. Use setTextOverflow instead."),flags.textOverflow="change-font-size"});export const setTextOverflow=e.action(e=>{flags.textOverflow=e});export const setTextSplitAllowed=e.action(e=>{flags.textSplitAllowed=e});export const setAnimationsEnabled=e.action(e=>{flags.animationsEnabled=e});export const setAutoDeleteEmptyText=e.action(e=>{flags.autoDeleteEmptyText=e});
1
+ import*as e from"mobx";export const flags=e.observable({imageDownScalingEnabled:!0,removeBackgroundEnabled:!1,htmlRenderEnabled:!1,renderTagTextEnabled:!0,forceTextFitEnabled:!1,textVerticalResizeEnabled:!1,textOverflow:"resize",textSplitAllowed:!1,animationsEnabled:!1,aiTextEnabled:!1,autoDeleteEmptyText:!0});const t="undefined"!=typeof window&&"localhost"===window.location.hostname,n="undefined"!=typeof process&&"development"===process.env.NODE_ENV,o=t||n;export const setTextVerticalResizeEnabled=e.action(e=>{flags.textVerticalResizeEnabled=e});export const setRemoveBackgroundEnabled=e.action(e=>{flags.removeBackgroundEnabled=e});export const useRemoveBackground=e.action(e=>{o&&console.warn("useRemoveBackground is deprecated. Use setRemoveBackgroundEnabled instead."),setRemoveBackgroundEnabled(e)});export const setAiTextEnabled=e.action(e=>{flags.aiTextEnabled=e});export const useHtmlTextRender=e.action(e=>{o&&console.warn("useHtmlTextRender is deprecated. Use setRichTextEnabled instead."),flags.htmlRenderEnabled=e});const a=t=>e.action(e=>{o&&console.warn(`${t}() is a no-op: the new text rendering engine is enabled by default.`)});export const setLegacyRichTextEnabled=t=>{e.runInAction(()=>{flags.htmlRenderEnabled=!0,flags.renderTagTextEnabled=!1})};export const setRichTextEnabled=a("setRichTextEnabled");export const setRenderTagTextEnabled=a("setRenderTagTextEnabled");export const setDownScalingEnabled=e.action(e=>{flags.imageDownScalingEnabled=e});export const useDownScaling=e.action(e=>{console.warn("useDownScaling is deprecated. Use setDownScalingEnabled instead."),setDownScalingEnabled(e)});export const setForceTextFit=e.action(e=>{console.warn("setForceTextFit is deprecated. Use setTextOverflow instead."),flags.textOverflow="change-font-size"});export const setTextOverflow=e.action(e=>{flags.textOverflow=e});export const setTextSplitAllowed=e.action(e=>{flags.textSplitAllowed=e});export const setAnimationsEnabled=e.action(e=>{flags.animationsEnabled=e});export const setAutoDeleteEmptyText=e.action(e=>{flags.autoDeleteEmptyText=e});
@@ -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:"3.0.0-beta.45"})});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:"3.0.0-beta.46"})});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()}