useblocks 1.1.6 → 1.1.8

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 (35) hide show
  1. package/iframe/js/amp.DltrX-cv.js +1 -0
  2. package/iframe/js/iframe-eblock.js +1 -1
  3. package/iframe/js/iframe.js +1 -1
  4. package/iframe/js/rules.B4dVzZIU.js +1 -1
  5. package/iframe/js/sanitize-html.BUfJ0Zmy.js +1 -0
  6. package/package.json +1 -1
  7. package/static/core/3a92c038.js +78 -0
  8. package/static/core/{f1547990.js → 3fe138bd.js} +3 -3
  9. package/static/core/{9d75803c.js → 41400d24.js} +1 -1
  10. package/static/core/{fbcecf0c.js → 4cb1af33.js} +2 -2
  11. package/static/core/{e068fc9c.js → 5b91fab0.js} +4 -4
  12. package/static/core/{47dba41e.js → 6493972d.js} +2 -2
  13. package/static/core/7b3ab6c8.js +1 -0
  14. package/static/core/{a4277108.js → 7b4f9e02.js} +1 -1
  15. package/static/core/8aeabd5d.js +1 -0
  16. package/static/core/{335013fc.js → a5492c22.js} +10 -10
  17. package/static/core/{ee8bab83.js → b57dc87c.js} +1 -1
  18. package/static/core/{510315e7.js → c93b4f06.js} +1 -1
  19. package/static/core/{cb14142e.js → cc141b53.js} +1 -1
  20. package/static/core/d4e69323.js +3 -0
  21. package/static/core/{e72e96db.js → e9ed0819.js} +2 -2
  22. package/two_step_headless_plugin.html +558 -0
  23. package/ui-kit/index.js +1589 -1589
  24. package/{useblocks-core.c589fcf1.js → useblocks-core.242b532e.js} +1 -1
  25. package/useblocks-esm.js +2 -2
  26. package/useblocks.d.ts +70 -7
  27. package/useblocks.js +2 -2
  28. package/iframe/js/amp.CMBnFdLA.js +0 -1
  29. package/iframe/js/sanitize-html.jj9shohA.js +0 -1
  30. package/static/core/1326223f.js +0 -1
  31. package/static/core/3ee304c4.js +0 -1
  32. package/static/core/604497f2.js +0 -3
  33. package/static/core/b713ee78.js +0 -78
  34. /package/iframe/{iframe-eblock.c589fcf1.html → iframe-eblock.242b532e.html} +0 -0
  35. /package/iframe/{iframe.c589fcf1.html → iframe.242b532e.html} +0 -0
@@ -1,3 +1,3 @@
1
- __useblocks__.define(`static/core/e72e96db.js`,[`require`,`exports`,`module`,`static/core/4dc58c63.js`,`static/core/f1547990.js`],function(e,t,n){let r=e("./4dc58c63.js"),i=e("./f1547990.js");function a(e){return function(t){return{setOptions:()=>{},instance:{},dispose:()=>{},...e(t)||{}}}}function o(e){return t=>{let n={},r=[];for(let n of e)r.push(n(t));for(let e of r)Object.assign(n,e.instance);return{instance:n,setOptions:async e=>{for(let t of r)await t.setOptions(e)},dispose:()=>{for(let e of r)e.dispose()}}}}function s(){let e=new Date;return e.valueOf()-e.getTimezoneOffset()*60*1e3}function c(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(e.length+(4-e.length%4)%4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new TextDecoder().decode(r)}function l(e){let[t,n,r]=e.split(`.`),i=JSON.parse(c(n));return{exp:i.exp,createdAt:i.iat,data:i}}var u=i.Ya();function d(e,t,n,r){e.inject(u,void 0),e.injectFactory(u,async(a,o)=>{try{let a=o?await o:void 0;if(!a){let t=e.getInstance(i.Ca);t&&(a=await t)}return t?!a||(l(a)?.exp??0)*1e3<=s()?await t(n,r,a):a:``}catch{return``}},!0)}var f=a(e=>{let t,n,r;return e.addService(i.$i,{execute:async n=>{if(t){let t=await e.getInstanceAsync(u);t&&n.headers.append(`authorization`,`Bearer ${t}`)}}}),{setOptions(a){let o=!i.Zi(n,a.user),s=r!==a.project;(t!==a.getAuthToken||o||s)&&(t=a.getAuthToken,n=a.user,r=a.project,d(e,t,a.user,a.project))}}});function p(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}var m={read:function(e){return e[0]===`"`&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function h(e,t){function n(n,r,i){if(!(typeof document>`u`)){i=p({},t,i),typeof i.expires==`number`&&(i.expires=new Date(Date.now()+i.expires*864e5)),i.expires&&=i.expires.toUTCString(),n=encodeURIComponent(n).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a=``;for(var o in i)i[o]&&(a+=`; `+o,i[o]!==!0&&(a+=`=`+i[o].split(`;`)[0]));return document.cookie=n+`=`+e.write(r,n)+a}}function r(t){if(!(typeof document>`u`||arguments.length&&!t)){for(var n=document.cookie?document.cookie.split(`; `):[],r={},i=0;i<n.length;i++){var a=n[i].split(`=`),o=a.slice(1).join(`=`);try{var s=decodeURIComponent(a[0]);if(r[s]=e.read(o,s),t===s)break}catch{}}return t?r[t]:r}}return Object.create({set:n,get:r,remove:function(e,t){n(e,``,p({},t,{expires:-1}))},withAttributes:function(e){return h(this.converter,p({},this.attributes,e))},withConverter:function(e){return h(p({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(t)},converter:{value:Object.freeze(e)}})}var g=h(m,{path:`/`}),_=r.a(((e,t)=>{(function(n){"use strict";var r=n.setTimeout,i=n.clearTimeout,a=n.XMLHttpRequest,o=n.XDomainRequest,s=n.ActiveXObject,c=n.EventSource,l=n.document,u=n.Promise,d=n.fetch,f=n.Response,p=n.TextDecoder,m=n.TextEncoder,h=n.AbortController;if(typeof window<`u`&&l!==void 0&&!(`readyState`in l)&&l.body==null&&(l.readyState=`loading`,window.addEventListener(`load`,function(e){l.readyState=`complete`},!1)),a==null&&s!=null&&(a=function(){return new s(`Microsoft.XMLHTTP`)}),Object.create??(Object.create=function(e){function t(){}return t.prototype=e,new t}),Date.now||(Date.now=function(){return new Date().getTime()}),h==null){var g=d;d=function(e,t){var n=t.signal;return g(e,{headers:t.headers,credentials:t.credentials,cache:t.cache}).then(function(e){var t=e.body.getReader();return n._reader=t,n._aborted&&n._reader.cancel(),{status:e.status,statusText:e.statusText,headers:e.headers,body:{getReader:function(){return t}}}})},h=function(){this.signal={_reader:null,_aborted:!1},this.abort=function(){this.signal._reader!=null&&this.signal._reader.cancel(),this.signal._aborted=!0}}}function _(){this.bitsNeeded=0,this.codePoint=0}_.prototype.decode=function(e){function t(e,t,n){if(n===1)return e>=128>>t&&e<<t<=2047;if(n===2)return e>=2048>>t&&e<<t<=55295||e>=57344>>t&&e<<t<=65535;if(n===3)return e>=65536>>t&&e<<t<=1114111;throw Error()}function n(e,t){if(e===6)return t>>6>15?3:t>31?2:1;if(e===12)return t>15?3:2;if(e===18)return 3;throw Error()}for(var r=65533,i=``,a=this.bitsNeeded,o=this.codePoint,s=0;s<e.length;s+=1){var c=e[s];a!==0&&(c<128||c>191||!t(o<<6|c&63,a-6,n(a,o)))&&(a=0,o=r,i+=String.fromCharCode(o)),a===0?(c>=0&&c<=127?(a=0,o=c):c>=192&&c<=223?(a=6,o=c&31):c>=224&&c<=239?(a=12,o=c&15):c>=240&&c<=247?(a=18,o=c&7):(a=0,o=r),a!==0&&!t(o,a,n(a,o))&&(a=0,o=r)):(a-=6,o=o<<6|c&63),a===0&&(o<=65535?i+=String.fromCharCode(o):(i+=String.fromCharCode(55296+(o-65535-1>>10)),i+=String.fromCharCode(56320+(o-65535-1&1023))))}return this.bitsNeeded=a,this.codePoint=o,i},(p==null||m==null||!function(){try{return new p().decode(new m().encode(`test`),{stream:!0})===`test`}catch{}return!1}())&&(p=_);var v=function(){};function y(e){this.withCredentials=!1,this.readyState=0,this.status=0,this.statusText=``,this.responseText=``,this.onprogress=v,this.onload=v,this.onerror=v,this.onreadystatechange=v,this._contentType=``,this._xhr=e,this._sendTimeout=0,this._abort=v}y.prototype.open=function(e,t){this._abort(!0);var n=this,o=this._xhr,s=1,c=0;this._abort=function(e){n._sendTimeout!==0&&(i(n._sendTimeout),n._sendTimeout=0),(s===1||s===2||s===3)&&(s=4,o.onload=v,o.onerror=v,o.onabort=v,o.onprogress=v,o.onreadystatechange=v,o.abort(),c!==0&&(i(c),c=0),e||(n.readyState=4,n.onabort(null),n.onreadystatechange())),s=0};var l=function(){if(s===1){var e=0,t=``,r=void 0;if(`contentType`in o)e=200,t=`OK`,r=o.contentType;else try{e=o.status,t=o.statusText,r=o.getResponseHeader(`Content-Type`)}catch{e=0,t=``,r=void 0}e!==0&&(s=2,n.readyState=2,n.status=e,n.statusText=t,n._contentType=r,n.onreadystatechange())}},u=function(){if(l(),s===2||s===3){s=3;var e=``;try{e=o.responseText}catch{}n.readyState=3,n.responseText=e,n.onprogress()}},d=function(e,t){if((t==null||t.preventDefault==null)&&(t={preventDefault:v}),u(),s===1||s===2||s===3){if(s=4,c!==0&&(i(c),c=0),n.readyState=4,e===`load`)n.onload(t);else if(e===`error`)n.onerror(t);else if(e===`abort`)n.onabort(t);else throw TypeError();n.onreadystatechange()}},f=function(e){o!=null&&(o.readyState===4?(!(`onload`in o)||!(`onerror`in o)||!(`onabort`in o))&&d(o.responseText===``?`error`:`load`,e):o.readyState===3?`onprogress`in o||u():o.readyState===2&&l())},p=function(){c=r(function(){p()},500),o.readyState===3&&u()};`onload`in o&&(o.onload=function(e){d(`load`,e)}),`onerror`in o&&(o.onerror=function(e){d(`error`,e)}),`onabort`in o&&(o.onabort=function(e){d(`abort`,e)}),`onprogress`in o&&(o.onprogress=u),`onreadystatechange`in o&&(o.onreadystatechange=function(e){f(e)}),(`contentType`in o||!(`ontimeout`in a.prototype))&&(t+=(t.indexOf(`?`)===-1?`?`:`&`)+`padding=true`),o.open(e,t,!0),`readyState`in o&&(c=r(function(){p()},0))},y.prototype.abort=function(){this._abort(!1)},y.prototype.getResponseHeader=function(e){return this._contentType},y.prototype.setRequestHeader=function(e,t){var n=this._xhr;`setRequestHeader`in n&&n.setRequestHeader(e,t)},y.prototype.getAllResponseHeaders=function(){return this._xhr.getAllResponseHeaders==null?``:this._xhr.getAllResponseHeaders()||``},y.prototype.send=function(){if((!(`ontimeout`in a.prototype)||!(`sendAsBinary`in a.prototype)&&!(`mozAnon`in a.prototype))&&l!=null&&l.readyState!=null&&l.readyState!==`complete`){var e=this;e._sendTimeout=r(function(){e._sendTimeout=0,e.send()},4);return}var t=this._xhr;`withCredentials`in t&&(t.withCredentials=this.withCredentials);try{t.send(void 0)}catch(e){throw e}};function b(e){return e.replace(/[A-Z]/g,function(e){return String.fromCharCode(e.charCodeAt(0)+32)})}function x(e){for(var t=Object.create(null),n=e.split(`\r
1
+ __useblocks__.define(`static/core/e9ed0819.js`,[`require`,`exports`,`module`,`static/core/4dc58c63.js`,`static/core/3fe138bd.js`],function(e,t,n){let r=e("./4dc58c63.js"),i=e("./3fe138bd.js");function a(e){return function(t){return{setOptions:()=>{},instance:{},dispose:()=>{},...e(t)||{}}}}function o(e){return t=>{let n={},r=[];for(let n of e)r.push(n(t));for(let e of r)Object.assign(n,e.instance);return{instance:n,setOptions:async e=>{for(let t of r)await t.setOptions(e)},dispose:()=>{for(let e of r)e.dispose()}}}}function s(){let e=new Date;return e.valueOf()-e.getTimezoneOffset()*60*1e3}function c(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(e.length+(4-e.length%4)%4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new TextDecoder().decode(r)}function l(e){let[t,n,r]=e.split(`.`),i=JSON.parse(c(n));return{exp:i.exp,createdAt:i.iat,data:i}}var u=i.eo();function d(e,t,n,r){e.inject(u,void 0),e.injectFactory(u,async(a,o)=>{try{let a=o?await o:void 0;if(!a){let t=e.getInstance(i.Oa);t&&(a=await t)}return t?!a||(l(a)?.exp??0)*1e3<=s()?await t(n,r,a):a:``}catch{return``}},!0)}var f=a(e=>{let t,n,r;return e.addService(i.ia,{execute:async n=>{if(t){let t=await e.getInstanceAsync(u);t&&n.headers.append(`authorization`,`Bearer ${t}`)}}}),{setOptions(a){let o=!i.na(n,a.user),s=r!==a.project;(t!==a.getAuthToken||o||s)&&(t=a.getAuthToken,n=a.user,r=a.project,d(e,t,a.user,a.project))}}});function p(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}var m={read:function(e){return e[0]===`"`&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}};function h(e,t){function n(n,r,i){if(!(typeof document>`u`)){i=p({},t,i),typeof i.expires==`number`&&(i.expires=new Date(Date.now()+i.expires*864e5)),i.expires&&=i.expires.toUTCString(),n=encodeURIComponent(n).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a=``;for(var o in i)i[o]&&(a+=`; `+o,i[o]!==!0&&(a+=`=`+i[o].split(`;`)[0]));return document.cookie=n+`=`+e.write(r,n)+a}}function r(t){if(!(typeof document>`u`||arguments.length&&!t)){for(var n=document.cookie?document.cookie.split(`; `):[],r={},i=0;i<n.length;i++){var a=n[i].split(`=`),o=a.slice(1).join(`=`);try{var s=decodeURIComponent(a[0]);if(r[s]=e.read(o,s),t===s)break}catch{}}return t?r[t]:r}}return Object.create({set:n,get:r,remove:function(e,t){n(e,``,p({},t,{expires:-1}))},withAttributes:function(e){return h(this.converter,p({},this.attributes,e))},withConverter:function(e){return h(p({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(t)},converter:{value:Object.freeze(e)}})}var g=h(m,{path:`/`}),_=r.a(((e,t)=>{(function(n){"use strict";var r=n.setTimeout,i=n.clearTimeout,a=n.XMLHttpRequest,o=n.XDomainRequest,s=n.ActiveXObject,c=n.EventSource,l=n.document,u=n.Promise,d=n.fetch,f=n.Response,p=n.TextDecoder,m=n.TextEncoder,h=n.AbortController;if(typeof window<`u`&&l!==void 0&&!(`readyState`in l)&&l.body==null&&(l.readyState=`loading`,window.addEventListener(`load`,function(e){l.readyState=`complete`},!1)),a==null&&s!=null&&(a=function(){return new s(`Microsoft.XMLHTTP`)}),Object.create??(Object.create=function(e){function t(){}return t.prototype=e,new t}),Date.now||(Date.now=function(){return new Date().getTime()}),h==null){var g=d;d=function(e,t){var n=t.signal;return g(e,{headers:t.headers,credentials:t.credentials,cache:t.cache}).then(function(e){var t=e.body.getReader();return n._reader=t,n._aborted&&n._reader.cancel(),{status:e.status,statusText:e.statusText,headers:e.headers,body:{getReader:function(){return t}}}})},h=function(){this.signal={_reader:null,_aborted:!1},this.abort=function(){this.signal._reader!=null&&this.signal._reader.cancel(),this.signal._aborted=!0}}}function _(){this.bitsNeeded=0,this.codePoint=0}_.prototype.decode=function(e){function t(e,t,n){if(n===1)return e>=128>>t&&e<<t<=2047;if(n===2)return e>=2048>>t&&e<<t<=55295||e>=57344>>t&&e<<t<=65535;if(n===3)return e>=65536>>t&&e<<t<=1114111;throw Error()}function n(e,t){if(e===6)return t>>6>15?3:t>31?2:1;if(e===12)return t>15?3:2;if(e===18)return 3;throw Error()}for(var r=65533,i=``,a=this.bitsNeeded,o=this.codePoint,s=0;s<e.length;s+=1){var c=e[s];a!==0&&(c<128||c>191||!t(o<<6|c&63,a-6,n(a,o)))&&(a=0,o=r,i+=String.fromCharCode(o)),a===0?(c>=0&&c<=127?(a=0,o=c):c>=192&&c<=223?(a=6,o=c&31):c>=224&&c<=239?(a=12,o=c&15):c>=240&&c<=247?(a=18,o=c&7):(a=0,o=r),a!==0&&!t(o,a,n(a,o))&&(a=0,o=r)):(a-=6,o=o<<6|c&63),a===0&&(o<=65535?i+=String.fromCharCode(o):(i+=String.fromCharCode(55296+(o-65535-1>>10)),i+=String.fromCharCode(56320+(o-65535-1&1023))))}return this.bitsNeeded=a,this.codePoint=o,i},(p==null||m==null||!function(){try{return new p().decode(new m().encode(`test`),{stream:!0})===`test`}catch{}return!1}())&&(p=_);var v=function(){};function y(e){this.withCredentials=!1,this.readyState=0,this.status=0,this.statusText=``,this.responseText=``,this.onprogress=v,this.onload=v,this.onerror=v,this.onreadystatechange=v,this._contentType=``,this._xhr=e,this._sendTimeout=0,this._abort=v}y.prototype.open=function(e,t){this._abort(!0);var n=this,o=this._xhr,s=1,c=0;this._abort=function(e){n._sendTimeout!==0&&(i(n._sendTimeout),n._sendTimeout=0),(s===1||s===2||s===3)&&(s=4,o.onload=v,o.onerror=v,o.onabort=v,o.onprogress=v,o.onreadystatechange=v,o.abort(),c!==0&&(i(c),c=0),e||(n.readyState=4,n.onabort(null),n.onreadystatechange())),s=0};var l=function(){if(s===1){var e=0,t=``,r=void 0;if(`contentType`in o)e=200,t=`OK`,r=o.contentType;else try{e=o.status,t=o.statusText,r=o.getResponseHeader(`Content-Type`)}catch{e=0,t=``,r=void 0}e!==0&&(s=2,n.readyState=2,n.status=e,n.statusText=t,n._contentType=r,n.onreadystatechange())}},u=function(){if(l(),s===2||s===3){s=3;var e=``;try{e=o.responseText}catch{}n.readyState=3,n.responseText=e,n.onprogress()}},d=function(e,t){if((t==null||t.preventDefault==null)&&(t={preventDefault:v}),u(),s===1||s===2||s===3){if(s=4,c!==0&&(i(c),c=0),n.readyState=4,e===`load`)n.onload(t);else if(e===`error`)n.onerror(t);else if(e===`abort`)n.onabort(t);else throw TypeError();n.onreadystatechange()}},f=function(e){o!=null&&(o.readyState===4?(!(`onload`in o)||!(`onerror`in o)||!(`onabort`in o))&&d(o.responseText===``?`error`:`load`,e):o.readyState===3?`onprogress`in o||u():o.readyState===2&&l())},p=function(){c=r(function(){p()},500),o.readyState===3&&u()};`onload`in o&&(o.onload=function(e){d(`load`,e)}),`onerror`in o&&(o.onerror=function(e){d(`error`,e)}),`onabort`in o&&(o.onabort=function(e){d(`abort`,e)}),`onprogress`in o&&(o.onprogress=u),`onreadystatechange`in o&&(o.onreadystatechange=function(e){f(e)}),(`contentType`in o||!(`ontimeout`in a.prototype))&&(t+=(t.indexOf(`?`)===-1?`?`:`&`)+`padding=true`),o.open(e,t,!0),`readyState`in o&&(c=r(function(){p()},0))},y.prototype.abort=function(){this._abort(!1)},y.prototype.getResponseHeader=function(e){return this._contentType},y.prototype.setRequestHeader=function(e,t){var n=this._xhr;`setRequestHeader`in n&&n.setRequestHeader(e,t)},y.prototype.getAllResponseHeaders=function(){return this._xhr.getAllResponseHeaders==null?``:this._xhr.getAllResponseHeaders()||``},y.prototype.send=function(){if((!(`ontimeout`in a.prototype)||!(`sendAsBinary`in a.prototype)&&!(`mozAnon`in a.prototype))&&l!=null&&l.readyState!=null&&l.readyState!==`complete`){var e=this;e._sendTimeout=r(function(){e._sendTimeout=0,e.send()},4);return}var t=this._xhr;`withCredentials`in t&&(t.withCredentials=this.withCredentials);try{t.send(void 0)}catch(e){throw e}};function b(e){return e.replace(/[A-Z]/g,function(e){return String.fromCharCode(e.charCodeAt(0)+32)})}function x(e){for(var t=Object.create(null),n=e.split(`\r
2
2
  `),r=0;r<n.length;r+=1){var i=n[r].split(`: `),a=i.shift(),o=i.join(`: `);t[b(a)]=o}this._map=t}x.prototype.get=function(e){return this._map[b(e)]},a!=null&&a.HEADERS_RECEIVED==null&&(a.HEADERS_RECEIVED=2);function S(){}S.prototype.open=function(e,t,n,r,i,o,s){e.open(`GET`,i);var c=0;for(var l in e.onprogress=function(){var t=e.responseText.slice(c);c+=t.length,n(t)},e.onerror=function(e){e.preventDefault(),r(Error(`NetworkError`))},e.onload=function(){r(null)},e.onabort=function(){r(null)},e.onreadystatechange=function(){if(e.readyState===a.HEADERS_RECEIVED){var n=e.status,r=e.statusText;t(n,r,e.getResponseHeader(`Content-Type`),new x(e.getAllResponseHeaders()))}},e.withCredentials=o,s)Object.prototype.hasOwnProperty.call(s,l)&&e.setRequestHeader(l,s[l]);return e.send(),e};function C(e){this._headers=e}C.prototype.get=function(e){return this._headers.get(e)};function w(){}w.prototype.open=function(e,t,n,r,i,a,o){var s=null,c=new h,l=c.signal,f=new p;return d(i,{headers:o,credentials:a?`include`:`same-origin`,signal:l,cache:`no-store`}).then(function(e){return s=e.body.getReader(),t(e.status,e.statusText,e.headers.get(`Content-Type`),new C(e.headers)),new u(function(e,t){var r=function(){s.read().then(function(t){t.done?e(void 0):(n(f.decode(t.value,{stream:!0})),r())}).catch(function(e){t(e)})};r()})}).catch(function(e){if(e.name!==`AbortError`)return e}).then(function(e){r(e)}),{abort:function(){s?.cancel(),c.abort()}}};function T(){this._listeners=Object.create(null)}function E(e){r(function(){throw e},0)}T.prototype.dispatchEvent=function(e){e.target=this;var t=this._listeners[e.type];if(t!=null)for(var n=t.length,r=0;r<n;r+=1){var i=t[r];try{typeof i.handleEvent==`function`?i.handleEvent(e):i.call(this,e)}catch(e){E(e)}}},T.prototype.addEventListener=function(e,t){e=String(e);var n=this._listeners,r=n[e];r??(r=[],n[e]=r);for(var i=!1,a=0;a<r.length;a+=1)r[a]===t&&(i=!0);i||r.push(t)},T.prototype.removeEventListener=function(e,t){e=String(e);var n=this._listeners,r=n[e];if(r!=null){for(var i=[],a=0;a<r.length;a+=1)r[a]!==t&&i.push(r[a]);i.length===0?delete n[e]:n[e]=i}};function D(e){this.type=e,this.target=void 0}function O(e,t){D.call(this,e),this.data=t.data,this.lastEventId=t.lastEventId}O.prototype=Object.create(D.prototype);function k(e,t){D.call(this,e),this.status=t.status,this.statusText=t.statusText,this.headers=t.headers}k.prototype=Object.create(D.prototype);function A(e,t){D.call(this,e),this.error=t.error}A.prototype=Object.create(D.prototype);var j=-1,M=0,N=1,P=2,F=-1,I=0,L=1,R=2,z=3,B=/^text\/event\-stream(;.*)?$/i,V=1e3,H=18e6,U=function(e,t){var n=e==null?t:parseInt(e,10);return n!==n&&(n=t),W(n)},W=function(e){return Math.min(Math.max(e,V),H)},G=function(e,t,n){try{typeof t==`function`&&t.call(e,n)}catch(e){E(e)}};function K(e,t){T.call(this),t||={},this.onopen=void 0,this.onmessage=void 0,this.onerror=void 0,this.url=void 0,this.readyState=void 0,this.withCredentials=void 0,this.headers=void 0,this._close=void 0,J(this,e,t)}function ee(){return a!=null&&`withCredentials`in a.prototype||o==null?new a:new o}var q=d!=null&&f!=null&&`body`in f.prototype;function J(e,t,n){t=String(t);var a=!!n.withCredentials,o=n.lastEventIdQueryParameterName||`lastEventId`,s=W(1e3),c=U(n.heartbeatTimeout,45e3),l=``,u=s,d=!1,f=0,p=n.headers||{},m=n.Transport,h=q&&m==null?void 0:new y(m==null?ee():new m),g=m!=null&&typeof m!=`string`?new m:h==null?new w:new S,_=void 0,v=0,b=j,x=``,C=``,T=``,E=``,D=I,V=0,H=0,K=function(t,n,r,i){if(b===M)if(t===200&&r!=null&&B.test(r)){b=N,d=Date.now(),u=s,e.readyState=N;var a=new k(`open`,{status:t,statusText:n,headers:i});e.dispatchEvent(a),G(e,e.onopen,a)}else{t===200?``+(r==null?`-`:r.replace(/\s+/g,` `)):(n&&=n.replace(/\s+/g,` `),``+t+n),X();var a=new k(`error`,{status:t,statusText:n,headers:i});e.dispatchEvent(a),G(e,e.onerror,a)}},J=function(t){if(b===N){for(var n=-1,a=0;a<t.length;a+=1){var o=t.charCodeAt(a);(o===10||o===13)&&(n=a)}var p=(n===-1?``:E)+t.slice(0,n+1);E=(n===-1?E:``)+t.slice(n+1),t!==``&&(d=Date.now(),f+=t.length);for(var m=0;m<p.length;m+=1){var o=p.charCodeAt(m);if(D===F&&o===10)D=I;else if(D===F&&(D=I),o===13||o===10){if(D!==I){D===L&&(H=m+1);var h=p.slice(V,H-1),g=p.slice(H+ +(H<m&&p.charCodeAt(H)===32),m);h===`data`?(x+=`
3
- `,x+=g):h===`id`?C=g:h===`event`?T=g:h===`retry`?(s=U(g,s),u=s):h===`heartbeatTimeout`&&(c=U(g,c),v!==0&&(i(v),v=r(function(){Z()},c)))}if(D===I){if(x!==``){l=C,T===``&&(T=`message`);var _=new O(T,{data:x.slice(1),lastEventId:C});if(e.dispatchEvent(_),T===`open`?G(e,e.onopen,_):T===`message`?G(e,e.onmessage,_):T===`error`&&G(e,e.onerror,_),b===P)return}x=``,T=``}D=o===13?F:I}else D===I&&(V=m,D=L),D===L?o===58&&(H=m+1,D=R):D===R&&(D=z)}}},Y=function(t){if(b===N||b===M){b=j,v!==0&&(i(v),v=0),v=r(function(){Z()},u),u=W(Math.min(s*16,u*2)),e.readyState=M;var n=new A(`error`,{error:t});e.dispatchEvent(n),G(e,e.onerror,n)}},X=function(){b=P,_!=null&&(_.abort(),_=void 0),v!==0&&(i(v),v=0),e.readyState=P},Z=function(){if(v=0,b!==j){if(!d&&_!=null)Y(Error(`No activity within `+c+` milliseconds. `+(b===M?`No response received.`:f+` chars received.`)+` Reconnecting.`)),_!=null&&(_.abort(),_=void 0);else{var n=Math.max((d||Date.now())+c-Date.now(),1);d=!1,v=r(function(){Z()},n)}return}d=!1,f=0,v=r(function(){Z()},c),b=M,x=``,T=``,C=l,E=``,V=0,H=0,D=I;var i=t;if(t.slice(0,5)!==`data:`&&t.slice(0,5)!==`blob:`&&l!==``){var a=t.indexOf(`?`);i=a===-1?t:t.slice(0,a+1)+t.slice(a+1).replace(/(?:^|&)([^=&]*)(?:=[^&]*)?/g,function(e,t){return t===o?``:e}),i+=(t.indexOf(`?`)===-1?`?`:`&`)+o+`=`+encodeURIComponent(l)}var s=e.withCredentials,u={};u.Accept=`text/event-stream`;var p=e.headers;if(p!=null)for(var m in p)Object.prototype.hasOwnProperty.call(p,m)&&(u[m]=p[m]);try{_=g.open(h,K,J,Y,i,s,u)}catch(e){throw X(),e}};e.url=t,e.readyState=M,e.withCredentials=a,e.headers=p,e._close=X,Z()}K.prototype=Object.create(T.prototype),K.prototype.CONNECTING=M,K.prototype.OPEN=N,K.prototype.CLOSED=P,K.prototype.close=function(){this._close()},K.CONNECTING=M,K.OPEN=N,K.CLOSED=P,K.prototype.withCredentials=void 0;var Y=c;a!=null&&(c==null||!(`withCredentials`in c.prototype))&&(Y=K),(function(r){if(typeof t==`object`&&typeof t.exports==`object`){var i=r(e);i!==void 0&&(t.exports=i)}else typeof define==`function`&&define.amd?define([`exports`],r):r(n)})(function(e){e.EventSourcePolyfill=K,e.NativeEventSource=c,e.EventSource=Y})})(typeof globalThis>`u`?typeof window<`u`?window:typeof self<`u`?self:e:globalThis)})),v=_();function y({candidates:e,headers:t,createEventSource:n,onMessage:r,onError:i}){let a=e.filter(Boolean),o=!1,s=null,c=()=>{s?.close(),s=null},l=e=>{if(o)return;let u=a[e];if(!u){i?.(Error(`Failed to connect to EventSource through proxy chain`));return}c();let d=n(u,{headers:t});s=d,d.onmessage=e=>{o||s!==d||r(e)},d.onerror=t=>{if(!(o||s!==d)){if(c(),e+1<a.length){l(e+1);return}i?.(t)}}};return l(0),{close(){o=!0,c()}}}var b=`https://api.unsplash.com`,x=`https://api.giphy.com/v1/gifs`;function S(e){return{error:e instanceof Error?e:Error(String(e))}}async function C(e){if(!e.ok)throw Error(`Request failed with status ${e.status}`);let t=await e.text();try{return t?JSON.parse(t):null}catch(e){throw e}}function w(e){return e&&Array.isArray(e.results)?e:e?.data&&Array.isArray(e.data.results)?e.data:e?.response&&Array.isArray(e.response.results)?e.response:{...e||{},results:[]}}var T=i.Pr({reducerPath:`imageApi`,baseQuery:void 0,endpoints:e=>({getImageInfo:e.query({queryFn:async function(e,t){try{let n=t.getState().configSlice?.config?.imageInfoToolUrl||`https://scr.useblocks.io/imageinfo`;return{data:await C(await fetch(`${n}?url=${encodeURIComponent(e)}`))}}catch(e){return S(e)}}}),getSearchImage:e.query({queryFn:async function({query:e,page:t},n){let r=e.keywords.replace(/[^\w\d\sа-яёА-ЯЁ]|_/g,``).replace(/[\s_-]+/g,` `);try{let a=n.getState().configSlice?.config,o=i.Ar.getInstance(n,i.Sa)!==void 0,s=new URL(`${b}/search/photos`);return s.searchParams.set(`client_id`,`S5iNcLqYgRBIOLQdluHdTsCJnjCvahzhG7JfYQOrV7o`),s.searchParams.set(`lang`,`ru`),s.searchParams.set(`per_page`,`18`),s.searchParams.set(`query`,r),s.searchParams.set(`page`,String(t)),e.color!==``&&s.searchParams.set(`color`,e.color),e.orientation!==``&&s.searchParams.set(`orientation`,e.orientation),{data:w(await C(await i.aa(s.toString(),{config:a,standalone:o,resourceType:`stockImages`,intent:`metadata`})))}}catch(e){return S(e)}}}),getUnsplashImage:e.query({queryFn:async function(e,t){try{let n=t.getState().configSlice?.config,r=i.Ar.getInstance(t,i.Sa)!==void 0,a=new URL(e);return a.searchParams.set(`client_id`,`S5iNcLqYgRBIOLQdluHdTsCJnjCvahzhG7JfYQOrV7o`),{data:await C(await i.aa(a.toString(),{config:n,standalone:r,resourceType:`stockImages`,intent:`metadata`}))}}catch(e){return S(e)}}}),sendAiImageRequest:e.query({queryFn:async function({body:e},t){try{return await i.Dr(t).aiGenerator.ai_create(e)}catch(e){throw Error(e)}}}),getAiImage:e.query({queryFn:async function(e,t){try{return await i.Dr(t).aiGenerator.ai_status_list(e)}catch(e){return S(e)}}}),getAiImageSSE:e.query({queryFn:e=>({data:[]}),async onCacheEntryAdded({task_id:e,entity_id:t,setError:n},r){let{updateCachedData:a,cacheEntryRemoved:o}=r,s=i.Dr(r).baseUrl||i.na(`https://app.useblocks.io/api`),c=r.getState().configSlice?.config,l=i.Ar.getInstance(r,i.Sa)!==void 0,d=i.ki.isPlugin?await i.Ar.getInstance(r,u):g.get(i.qr.em_token),f=d?{Authorization:`Bearer ${d}`}:{},p=`${s}/ai-generator/v1/ai-status?entity_id=${t}&stream=1&task_id=${e}`,m=i.ca(p,{config:c,method:`GET`,requestType:`ai`,standalone:l}),h=y({candidates:m.length>0?m:[p],headers:f,createEventSource:(e,t)=>new v.EventSourcePolyfill(e,t),onMessage:e=>{let t=JSON.parse(e.data);a(e=>{e.push(t)}),t.progress===100&&h.close()},onError:()=>{h.close()}});await o,h.close()}}),getSearchGif:e.query({queryFn:async function({query:e,page:t},n){let r=e.keywords.replace(/[^\w\d\sа-яёА-ЯЁ]|_/g,``).replace(/[\s_-]+/g,` `);try{let e=n.getState().configSlice?.config,a=i.Ar.getInstance(n,i.Sa)!==void 0;return{data:await C(await i.aa(`${x}/search?api_key=Nh77eBlPeMn1ed9MBAvL542NUGeNO26F&q=${encodeURIComponent(r)}&limit=25&offset=${t}&lang=en`,{config:e,standalone:a,resourceType:`generic`,intent:`metadata`}))}}catch(e){return S(e)}}})})}),{useLazyGetImageInfoQuery:E,useGetImageInfoQuery:D,useGetSearchImageQuery:O,useLazyGetSearchImageQuery:k,useSendAiImageRequestQuery:A,useLazySendAiImageRequestQuery:j,useGetAiImageQuery:M,useLazyGetAiImageQuery:N,useGetUnsplashImageQuery:P,useLazyGetUnsplashImageQuery:F,useGetSearchGifQuery:I,useLazyGetSearchGifQuery:L,useGetAiImageSSEQuery:R,useLazyGetAiImageSSEQuery:z}=T,B=`https://app.useblocks.io/api`.replaceAll(/[\\/]$/g,``),V=`wp-json/limits/v1`,H=`wp-json/subscription/v2`,U=i.Pr({reducerPath:`limitsApi`,baseQuery:i.Tr({baseUrl:B}),tagTypes:[`LimitsStats`,`LimitsWarnings`,`SubscriptionMe`],endpoints:e=>({getLimitsStats:e.query({query:()=>({url:`${V}/stats`,method:`GET`}),providesTags:[`LimitsStats`]}),getLimitsStatsByType:e.query({query:e=>({url:`${V}/stats/${e}`,method:`GET`}),providesTags:(e,t,n)=>[{type:`LimitsStats`,id:n}]}),getLimitsWarnings:e.query({query:()=>({url:`${V}/warnings`,method:`GET`}),providesTags:[`LimitsWarnings`]}),getSubscriptionMeV2:e.query({query:()=>({url:`${H}/me`,method:`GET`}),providesTags:[`SubscriptionMe`]})})}),{useGetLimitsStatsQuery:W,useLazyGetLimitsStatsQuery:G,useGetLimitsStatsByTypeQuery:K,useLazyGetLimitsStatsByTypeQuery:ee,useGetLimitsWarningsQuery:q,useLazyGetLimitsWarningsQuery:J,useGetSubscriptionMeV2Query:Y,useLazyGetSubscriptionMeV2Query:X}=U,Z=new URLSearchParams(window.location.search),Q=Z.get(`tag`),te=Z.get(`folder`),ne=i.vr({activeModal:``,switchToPlanRequestTitle:``,secondModal:``,projectsTotal:``,projectsTotalPages:``,folders:[],activeTagId:Q||null,activeFolderId:te||(Q?null:`all`),activeTab:null,activeIntegration:null,addNewProjectInitialTitle:null}),$=`projectsPageSlice`,re=i.Hr({name:$,initialState:ne,reducers:{openModal(e,t){e.activeModal=t.payload},openAddNewProjectModal(e,t){e.activeModal=i.wi.ADD_NEW_PROJECT_MODAL,e.addNewProjectInitialTitle=t.payload??null},setSwitchToPlanRequestTitle(e,t){e.switchToPlanRequestTitle=typeof t.payload==`string`?t.payload:``},setActiveTab(e,t){e.activeTab=t.payload},closeModal(e){e.activeModal=``,e.activeIntegration=null,e.addNewProjectInitialTitle=null,e.switchToPlanRequestTitle=``},openSecondModal(e,t){e.secondModal=t.payload},closeSecondModal(e){e.secondModal=``},setFolders(e,{payload:t}){e.folders=t},setActiveTagId(e,{payload:t}){e.activeTagId=t},setActiveIntegration(e,t){e.activeIntegration=t.payload}},extraReducers:e=>{e.addMatcher(i.zt.endpoints.getProjects.matchFulfilled,(e,t)=>{let n=t.meta,r=n.baseQueryMeta,i=n.projectsListPagination??r?.projectsListPagination;if(i!=null&&typeof i.total==`number`&&Number.isFinite(i.total)&&i.total>=0){e.projectsTotal=String(i.total),e.projectsTotalPages=String(typeof i.totalPages==`number`&&Number.isFinite(i.totalPages)?i.totalPages:``);return}let a=r?.response?.headers?.get?.(`X-WP-Total`),o=r?.response?.headers?.get?.(`X-WP-TotalPages`);e.projectsTotal=a??``,e.projectsTotalPages=o??``}),e.addMatcher(i.Et.endpoints.getFolders.matchFulfilled,(e,{payload:t})=>{e.folders=t})}}),{openModal:ie,openAddNewProjectModal:ae,setSwitchToPlanRequestTitle:oe,setActiveTab:se,closeModal:ce,openSecondModal:le,closeSecondModal:ue,setFolders:de,setActiveTagId:fe,setActiveIntegration:pe}=re.actions,me=e=>e[$].activeTab,he=e=>e[$].activeModal,ge=e=>e[$].secondModal,_e=e=>e[$].projectsTotal,ve=e=>e[$].activeIntegration;Object.defineProperty(t,"A",{enumerable:!0,get:function(){return a}}),Object.defineProperty(t,"C",{enumerable:!0,get:function(){return j}}),Object.defineProperty(t,"D",{enumerable:!0,get:function(){return u}}),Object.defineProperty(t,"E",{enumerable:!0,get:function(){return f}}),Object.defineProperty(t,"O",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"S",{enumerable:!0,get:function(){return F}}),Object.defineProperty(t,"T",{enumerable:!0,get:function(){return g}}),Object.defineProperty(t,"_",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"a",{enumerable:!0,get:function(){return re}}),Object.defineProperty(t,"b",{enumerable:!0,get:function(){return L}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return me}}),Object.defineProperty(t,"d",{enumerable:!0,get:function(){return se}}),Object.defineProperty(t,"f",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(t,"g",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(t,"h",{enumerable:!0,get:function(){return q}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return le}}),Object.defineProperty(t,"k",{enumerable:!0,get:function(){return o}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(t,"m",{enumerable:!0,get:function(){return W}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(t,"p",{enumerable:!0,get:function(){return U}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return he}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(t,"u",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(t,"v",{enumerable:!0,get:function(){return z}}),Object.defineProperty(t,"w",{enumerable:!0,get:function(){return _}}),Object.defineProperty(t,"x",{enumerable:!0,get:function(){return k}}),Object.defineProperty(t,"y",{enumerable:!0,get:function(){return E}})});
3
+ `,x+=g):h===`id`?C=g:h===`event`?T=g:h===`retry`?(s=U(g,s),u=s):h===`heartbeatTimeout`&&(c=U(g,c),v!==0&&(i(v),v=r(function(){Z()},c)))}if(D===I){if(x!==``){l=C,T===``&&(T=`message`);var _=new O(T,{data:x.slice(1),lastEventId:C});if(e.dispatchEvent(_),T===`open`?G(e,e.onopen,_):T===`message`?G(e,e.onmessage,_):T===`error`&&G(e,e.onerror,_),b===P)return}x=``,T=``}D=o===13?F:I}else D===I&&(V=m,D=L),D===L?o===58&&(H=m+1,D=R):D===R&&(D=z)}}},Y=function(t){if(b===N||b===M){b=j,v!==0&&(i(v),v=0),v=r(function(){Z()},u),u=W(Math.min(s*16,u*2)),e.readyState=M;var n=new A(`error`,{error:t});e.dispatchEvent(n),G(e,e.onerror,n)}},X=function(){b=P,_!=null&&(_.abort(),_=void 0),v!==0&&(i(v),v=0),e.readyState=P},Z=function(){if(v=0,b!==j){if(!d&&_!=null)Y(Error(`No activity within `+c+` milliseconds. `+(b===M?`No response received.`:f+` chars received.`)+` Reconnecting.`)),_!=null&&(_.abort(),_=void 0);else{var n=Math.max((d||Date.now())+c-Date.now(),1);d=!1,v=r(function(){Z()},n)}return}d=!1,f=0,v=r(function(){Z()},c),b=M,x=``,T=``,C=l,E=``,V=0,H=0,D=I;var i=t;if(t.slice(0,5)!==`data:`&&t.slice(0,5)!==`blob:`&&l!==``){var a=t.indexOf(`?`);i=a===-1?t:t.slice(0,a+1)+t.slice(a+1).replace(/(?:^|&)([^=&]*)(?:=[^&]*)?/g,function(e,t){return t===o?``:e}),i+=(t.indexOf(`?`)===-1?`?`:`&`)+o+`=`+encodeURIComponent(l)}var s=e.withCredentials,u={};u.Accept=`text/event-stream`;var p=e.headers;if(p!=null)for(var m in p)Object.prototype.hasOwnProperty.call(p,m)&&(u[m]=p[m]);try{_=g.open(h,K,J,Y,i,s,u)}catch(e){throw X(),e}};e.url=t,e.readyState=M,e.withCredentials=a,e.headers=p,e._close=X,Z()}K.prototype=Object.create(T.prototype),K.prototype.CONNECTING=M,K.prototype.OPEN=N,K.prototype.CLOSED=P,K.prototype.close=function(){this._close()},K.CONNECTING=M,K.OPEN=N,K.CLOSED=P,K.prototype.withCredentials=void 0;var Y=c;a!=null&&(c==null||!(`withCredentials`in c.prototype))&&(Y=K),(function(r){if(typeof t==`object`&&typeof t.exports==`object`){var i=r(e);i!==void 0&&(t.exports=i)}else typeof define==`function`&&define.amd?define([`exports`],r):r(n)})(function(e){e.EventSourcePolyfill=K,e.NativeEventSource=c,e.EventSource=Y})})(typeof globalThis>`u`?typeof window<`u`?window:typeof self<`u`?self:e:globalThis)})),v=_();function y({candidates:e,headers:t,createEventSource:n,onMessage:r,onError:i}){let a=e.filter(Boolean),o=!1,s=null,c=()=>{s?.close(),s=null},l=e=>{if(o)return;let u=a[e];if(!u){i?.(Error(`Failed to connect to EventSource through proxy chain`));return}c();let d=n(u,{headers:t});s=d,d.onmessage=e=>{o||s!==d||r(e)},d.onerror=t=>{if(!(o||s!==d)){if(c(),e+1<a.length){l(e+1);return}i?.(t)}}};return l(0),{close(){o=!0,c()}}}var b=`https://api.unsplash.com`,x=`https://api.giphy.com/v1/gifs`;function S(e){return{error:e instanceof Error?e:Error(String(e))}}async function C(e){if(!e.ok)throw Error(`Request failed with status ${e.status}`);let t=await e.text();try{return t?JSON.parse(t):null}catch(e){throw e}}function w(e){return e&&Array.isArray(e.results)?e:e?.data&&Array.isArray(e.data.results)?e.data:e?.response&&Array.isArray(e.response.results)?e.response:{...e||{},results:[]}}var T=i.zr({reducerPath:`imageApi`,baseQuery:void 0,endpoints:e=>({getImageInfo:e.query({queryFn:async function(e,t){try{let n=t.getState().configSlice?.config?.imageInfoToolUrl||`https://scr.useblocks.io/imageinfo`;return{data:await C(await fetch(`${n}?url=${encodeURIComponent(e)}`))}}catch(e){return S(e)}}}),getSearchImage:e.query({queryFn:async function({query:e,page:t},n){let r=e.keywords.replace(/[^\w\d\sа-яёА-ЯЁ]|_/g,``).replace(/[\s_-]+/g,` `);try{let a=n.getState().configSlice?.config,o=i.Fr.getInstance(n,i.Da)!==void 0,s=new URL(`${b}/search/photos`);return s.searchParams.set(`client_id`,`S5iNcLqYgRBIOLQdluHdTsCJnjCvahzhG7JfYQOrV7o`),s.searchParams.set(`lang`,`ru`),s.searchParams.set(`per_page`,`18`),s.searchParams.set(`query`,r),s.searchParams.set(`page`,String(t)),e.color!==``&&s.searchParams.set(`color`,e.color),e.orientation!==``&&s.searchParams.set(`orientation`,e.orientation),{data:w(await C(await i.ua(s.toString(),{config:a,standalone:o,resourceType:`stockImages`,intent:`metadata`})))}}catch(e){return S(e)}}}),getUnsplashImage:e.query({queryFn:async function(e,t){try{let n=t.getState().configSlice?.config,r=i.Fr.getInstance(t,i.Da)!==void 0,a=new URL(e);return a.searchParams.set(`client_id`,`S5iNcLqYgRBIOLQdluHdTsCJnjCvahzhG7JfYQOrV7o`),{data:await C(await i.ua(a.toString(),{config:n,standalone:r,resourceType:`stockImages`,intent:`metadata`}))}}catch(e){return S(e)}}}),sendAiImageRequest:e.query({queryFn:async function({body:e},t){try{return await i.Mr(t).aiGenerator.ai_create(e)}catch(e){throw Error(e)}}}),getAiImage:e.query({queryFn:async function(e,t){try{return await i.Mr(t).aiGenerator.ai_status_list(e)}catch(e){return S(e)}}}),getAiImageSSE:e.query({queryFn:e=>({data:[]}),async onCacheEntryAdded({task_id:e,entity_id:t,setError:n},r){let{updateCachedData:a,cacheEntryRemoved:o}=r,s=i.Mr(r).baseUrl||i.sa(`https://app.useblocks.io/api`),c=r.getState().configSlice?.config,l=i.Fr.getInstance(r,i.Da)!==void 0,d=i.Pi.isPlugin?await i.Fr.getInstance(r,u):g.get(i.Qr.em_token),f=d?{Authorization:`Bearer ${d}`}:{},p=`${s}/ai-generator/v1/ai-status?entity_id=${t}&stream=1&task_id=${e}`,m=i.pa(p,{config:c,method:`GET`,requestType:`ai`,standalone:l}),h=y({candidates:m.length>0?m:[p],headers:f,createEventSource:(e,t)=>new v.EventSourcePolyfill(e,t),onMessage:e=>{let t=JSON.parse(e.data);a(e=>{e.push(t)}),t.progress===100&&h.close()},onError:()=>{h.close()}});await o,h.close()}}),getSearchGif:e.query({queryFn:async function({query:e,page:t},n){let r=e.keywords.replace(/[^\w\d\sа-яёА-ЯЁ]|_/g,``).replace(/[\s_-]+/g,` `);try{let e=n.getState().configSlice?.config,a=i.Fr.getInstance(n,i.Da)!==void 0;return{data:await C(await i.ua(`${x}/search?api_key=Nh77eBlPeMn1ed9MBAvL542NUGeNO26F&q=${encodeURIComponent(r)}&limit=25&offset=${t}&lang=en`,{config:e,standalone:a,resourceType:`generic`,intent:`metadata`}))}}catch(e){return S(e)}}})})}),{useLazyGetImageInfoQuery:E,useGetImageInfoQuery:D,useGetSearchImageQuery:O,useLazyGetSearchImageQuery:k,useSendAiImageRequestQuery:A,useLazySendAiImageRequestQuery:j,useGetAiImageQuery:M,useLazyGetAiImageQuery:N,useGetUnsplashImageQuery:P,useLazyGetUnsplashImageQuery:F,useGetSearchGifQuery:I,useLazyGetSearchGifQuery:L,useGetAiImageSSEQuery:R,useLazyGetAiImageSSEQuery:z}=T,B=`https://app.useblocks.io/api`.replaceAll(/[\\/]$/g,``),V=`wp-json/limits/v1`,H=`wp-json/subscription/v2`,U=i.zr({reducerPath:`limitsApi`,baseQuery:i.Ar({baseUrl:B}),tagTypes:[`LimitsStats`,`LimitsWarnings`,`SubscriptionMe`],endpoints:e=>({getLimitsStats:e.query({query:()=>({url:`${V}/stats`,method:`GET`}),providesTags:[`LimitsStats`]}),getLimitsStatsByType:e.query({query:e=>({url:`${V}/stats/${e}`,method:`GET`}),providesTags:(e,t,n)=>[{type:`LimitsStats`,id:n}]}),getLimitsWarnings:e.query({query:()=>({url:`${V}/warnings`,method:`GET`}),providesTags:[`LimitsWarnings`]}),getSubscriptionMeV2:e.query({query:()=>({url:`${H}/me`,method:`GET`}),providesTags:[`SubscriptionMe`]})})}),{useGetLimitsStatsQuery:W,useLazyGetLimitsStatsQuery:G,useGetLimitsStatsByTypeQuery:K,useLazyGetLimitsStatsByTypeQuery:ee,useGetLimitsWarningsQuery:q,useLazyGetLimitsWarningsQuery:J,useGetSubscriptionMeV2Query:Y,useLazyGetSubscriptionMeV2Query:X}=U,Z=new URLSearchParams(window.location.search),Q=Z.get(`tag`),te=Z.get(`folder`),ne=i.Cr({activeModal:``,switchToPlanRequestTitle:``,secondModal:``,projectsTotal:``,projectsTotalPages:``,folders:[],activeTagId:Q||null,activeFolderId:te||(Q?null:`all`),activeTab:null,activeIntegration:null,addNewProjectInitialTitle:null}),$=`projectsPageSlice`,re=i.qr({name:$,initialState:ne,reducers:{openModal(e,t){e.activeModal=t.payload},openAddNewProjectModal(e,t){e.activeModal=i.ki.ADD_NEW_PROJECT_MODAL,e.addNewProjectInitialTitle=t.payload??null},setSwitchToPlanRequestTitle(e,t){e.switchToPlanRequestTitle=typeof t.payload==`string`?t.payload:``},setActiveTab(e,t){e.activeTab=t.payload},closeModal(e){e.activeModal=``,e.activeIntegration=null,e.addNewProjectInitialTitle=null,e.switchToPlanRequestTitle=``},openSecondModal(e,t){e.secondModal=t.payload},closeSecondModal(e){e.secondModal=``},setFolders(e,{payload:t}){e.folders=t},setActiveTagId(e,{payload:t}){e.activeTagId=t},setActiveIntegration(e,t){e.activeIntegration=t.payload}},extraReducers:e=>{e.addMatcher(i.zt.endpoints.getProjects.matchFulfilled,(e,t)=>{let n=t.meta,r=n.baseQueryMeta,i=n.projectsListPagination??r?.projectsListPagination;if(i!=null&&typeof i.total==`number`&&Number.isFinite(i.total)&&i.total>=0){e.projectsTotal=String(i.total),e.projectsTotalPages=String(typeof i.totalPages==`number`&&Number.isFinite(i.totalPages)?i.totalPages:``);return}let a=r?.response?.headers?.get?.(`X-WP-Total`),o=r?.response?.headers?.get?.(`X-WP-TotalPages`);e.projectsTotal=a??``,e.projectsTotalPages=o??``}),e.addMatcher(i.Et.endpoints.getFolders.matchFulfilled,(e,{payload:t})=>{e.folders=t})}}),{openModal:ie,openAddNewProjectModal:ae,setSwitchToPlanRequestTitle:oe,setActiveTab:se,closeModal:ce,openSecondModal:le,closeSecondModal:ue,setFolders:de,setActiveTagId:fe,setActiveIntegration:pe}=re.actions,me=e=>e[$].activeTab,he=e=>e[$].activeModal,ge=e=>e[$].secondModal,_e=e=>e[$].projectsTotal,ve=e=>e[$].activeIntegration;Object.defineProperty(t,"A",{enumerable:!0,get:function(){return a}}),Object.defineProperty(t,"C",{enumerable:!0,get:function(){return j}}),Object.defineProperty(t,"D",{enumerable:!0,get:function(){return u}}),Object.defineProperty(t,"E",{enumerable:!0,get:function(){return f}}),Object.defineProperty(t,"O",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"S",{enumerable:!0,get:function(){return F}}),Object.defineProperty(t,"T",{enumerable:!0,get:function(){return g}}),Object.defineProperty(t,"_",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"a",{enumerable:!0,get:function(){return re}}),Object.defineProperty(t,"b",{enumerable:!0,get:function(){return L}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return me}}),Object.defineProperty(t,"d",{enumerable:!0,get:function(){return se}}),Object.defineProperty(t,"f",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(t,"g",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(t,"h",{enumerable:!0,get:function(){return q}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return le}}),Object.defineProperty(t,"k",{enumerable:!0,get:function(){return o}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(t,"m",{enumerable:!0,get:function(){return W}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(t,"p",{enumerable:!0,get:function(){return U}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return he}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(t,"u",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(t,"v",{enumerable:!0,get:function(){return z}}),Object.defineProperty(t,"w",{enumerable:!0,get:function(){return _}}),Object.defineProperty(t,"x",{enumerable:!0,get:function(){return k}}),Object.defineProperty(t,"y",{enumerable:!0,get:function(){return E}})});
@@ -0,0 +1,558 @@
1
+ <!doctype html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Two-step flow: design → subject/preheader (headless)</title>
6
+ <script id="plugin-script" type="text/javascript" src="useblocks.js?242b532e"></script>
7
+ <style>
8
+ body {
9
+ margin: 0;
10
+ font-family: system-ui, sans-serif;
11
+ font-size: 14px;
12
+ }
13
+ .toolbar {
14
+ display: flex;
15
+ gap: 8px;
16
+ padding: 8px;
17
+ border-bottom: 1px solid #ddd;
18
+ align-items: center;
19
+ flex-wrap: wrap;
20
+ }
21
+ .step-btn.active {
22
+ font-weight: 600;
23
+ outline: 2px solid #852876;
24
+ }
25
+ #flow_log {
26
+ margin: 0;
27
+ padding: 8px;
28
+ background: #f5f5f5;
29
+ border-bottom: 1px solid #ddd;
30
+ max-height: 180px;
31
+ overflow: auto;
32
+ white-space: pre-wrap;
33
+ font-size: 12px;
34
+ }
35
+ .page {
36
+ display: none;
37
+ height: calc(100vh - 260px);
38
+ }
39
+ .page.active {
40
+ display: block;
41
+ }
42
+ #blocks-editor {
43
+ padding: 0;
44
+ background: #fff;
45
+ height: 100%;
46
+ min-height: 400px;
47
+ box-sizing: border-box;
48
+ }
49
+ .subject-page {
50
+ padding: 16px;
51
+ max-width: 640px;
52
+ }
53
+ .subject-page label {
54
+ display: block;
55
+ margin-top: 12px;
56
+ font-weight: 500;
57
+ }
58
+ .subject-page input,
59
+ .subject-page textarea {
60
+ width: 100%;
61
+ margin-top: 4px;
62
+ padding: 8px;
63
+ box-sizing: border-box;
64
+ }
65
+ .letter-state {
66
+ font-size: 12px;
67
+ color: #555;
68
+ margin-top: 8px;
69
+ }
70
+ </style>
71
+ </head>
72
+ <body>
73
+ <div class="toolbar">
74
+ <strong>Two-step editor flow</strong>
75
+ <button type="button" id="step_design" class="step-btn active">1. Design (full editor)</button>
76
+ <button type="button" id="step_subject" class="step-btn">2. Subject &amp; preheader (headless)</button>
77
+ <button type="button" id="btn_clear_log">Очистить log</button>
78
+ </div>
79
+ <pre id="flow_log"></pre>
80
+
81
+ <div id="page_design" class="page active">
82
+ <div id="blocks-editor"></div>
83
+ </div>
84
+
85
+ <div id="page_subject" class="page subject-page">
86
+ <p>
87
+ Шаг 2: редактор без <code>element</code> (headless), UI — свои поля хоста.
88
+ Синхронизация: <code>show()</code> → <code>getEmail()</code> →
89
+ <code>updateJsonAndEmail</code> (subject — entity, preheader — json). Persist при каждом переходе шага.
90
+ </p>
91
+ <label for="field_subject">Subject</label>
92
+ <input id="field_subject" type="text" autocomplete="off" />
93
+
94
+ <label for="field_preheader">Preheader</label>
95
+ <textarea id="field_preheader" rows="3"></textarea>
96
+
97
+ <p class="letter-state" id="headless_status">Headless: не инициализирован</p>
98
+ <button type="button" id="btn_subject_next">Next (завершить шаг 2)</button>
99
+ </div>
100
+
101
+ <script async defer>
102
+ /**
103
+ * Двухшаговый флоу встраивания редактора:
104
+ * - Шаг 1 (design): editor.init({ element }) — полный редактор, save через updateHtmlAndEmail
105
+ * - Шаг 2 (headless): editor.init({ content }) без element — UI полей хоста
106
+ * - subject — поле сущности (letterStore.subject), preheader — в json
107
+ * - Шаг 2 sync: show() → getEmail() → updateJsonAndEmail
108
+ * - Между шагами: persist текущего шага → destroy() → новый init
109
+ */
110
+
111
+ /** Как plugin.html: id письма и шаблон с API (без inline code при старте). */
112
+ const DEMO_LETTER_ID = 'test_test_test_test';
113
+ const INITIAL_TEMPLATE_ID = 321739;
114
+ /** Debounce 400ms для subject/preheader на шаге 2. */
115
+ const FIELD_DEBOUNCE_MS = 400;
116
+
117
+ const COMMON_STYLES =
118
+ '{"block":{"darkBgColor":"#1c52dc"},"text":{"fontFamily":["Safe Fonts","-apple-system, \'Segoe UI\', \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif"],"fontSize":16,"fontSizeDim":"px","lineHeight":21,"lineHeightDim":"px","color":"#5a5a5a","textAlign":"left","paddingBottom":10,"paddingBottomDim":"px"},"headings":{"fontFamily":["Safe Fonts","-apple-system, \'Segoe UI\', \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif"],"fontSize":24,"fontSizeDim":"px","lineHeight":32,"lineHeightDim":"px","color":"#333333","textAlign":"left","paddingTop":20,"paddingTopDim":"px","paddingBottom":10,"paddingBottomDim":"px","letterSpacing":0,"letterSpacingDim":"px","bold":true,"italic":false},"links":{"color":"#1C52DC","underline":true},"buttons":{"fontFamily":["Safe Fonts","-apple-system, \'Segoe UI\', \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif"],"fontSize":16,"fontSizeDim":"px","letterSpacing":0,"letterSpacingDim":"px","color":"#FFFFFF","bold":false,"italic":false,"backgroundColor":"#1C52DC","marginTop":10,"marginTopDim":"px","marginBottom":10,"marginBottomDim":"px","border":{"all":null,"top":null,"right":null,"bottom":null,"left":null},"borderRadius":{"all":5,"topLeft":null,"topRight":null,"bottomRight":null,"bottomLeft":null},"textAlign":"center","padding":{"all":null,"top":null,"right":null,"bottom":null,"left":null}},"block":{"backgroundColor":""}}';
119
+
120
+ /** Начальный email — как в plugin.html (тот же templateId + поля). */
121
+ const createInitialEmail = () => ({
122
+ id: DEMO_LETTER_ID,
123
+ author: 123,
124
+ isNew: false,
125
+ subject: 'topic',
126
+ preheader: '',
127
+ description: '',
128
+ project: 'undefined',
129
+ parent_email: '309707',
130
+ common_styles: COMMON_STYLES,
131
+ title: '',
132
+ date: '2024-01-12T08:42:09',
133
+ modified: '2024-02-16T17:21:01',
134
+ group: [],
135
+ lock: false,
136
+ utm_parameters: {
137
+ utm_content: 'ssssssss',
138
+ },
139
+ });
140
+
141
+ const buildDesignContent = () => {
142
+ const email = parseLetterJson();
143
+ // subject — entity field, preheader — из json.
144
+ if (letterStore.subject) {
145
+ email.subject = letterStore.subject;
146
+ }
147
+ delete email.code;
148
+
149
+ if (letterStore.html) {
150
+ return {
151
+ email: {
152
+ ...email,
153
+ id: DEMO_LETTER_ID,
154
+ code: letterStore.html,
155
+ },
156
+ };
157
+ }
158
+
159
+ return {
160
+ templateId: INITIAL_TEMPLATE_ID,
161
+ email: {
162
+ ...email,
163
+ id: DEMO_LETTER_ID,
164
+ },
165
+ };
166
+ };
167
+
168
+ const buildBaseConfig = () => ({
169
+ locale: 'en_US',
170
+ mode: 'pro',
171
+ theme: 'light',
172
+ previewIconEnabled: true,
173
+ livePreviewEnabled: true,
174
+ nextButtonEnabled: true,
175
+ mergeTags: {
176
+ syntax: ['{{%value%}}'],
177
+ items: [
178
+ { label: 'System', value: 'System', children: systemfields },
179
+ { label: 'User', value: 'User', children: systemfields },
180
+ ],
181
+ },
182
+ });
183
+
184
+ const systemfields = [
185
+ { label: 'Имя получателя', value: 'ToName' },
186
+ { label: 'Доп. поле «Имя»', value: 'Name' },
187
+ ];
188
+
189
+ const getAuthToken = async () => {
190
+ const formdata = new FormData();
191
+ formdata.append('grant_type', 'client_credentials');
192
+ formdata.append('client_id', '****');
193
+ formdata.append('client_secret', '****');
194
+ return fetch('/api?oauth=token', { method: 'POST', body: formdata })
195
+ .then((r) => r.json())
196
+ .then((r) => r.access_token)
197
+ .catch(() => '');
198
+ };
199
+
200
+ /** In-memory store: subject + html + json (preheader в json). */
201
+ const letterStore = {
202
+ id: DEMO_LETTER_ID,
203
+ subject: 'topic',
204
+ html: '',
205
+ json: JSON.stringify(createInitialEmail()),
206
+ };
207
+
208
+ let editorInstance = null;
209
+ let currentStep = 'design';
210
+ let isEmailInitialized = false;
211
+ let isNotSaved = false;
212
+ let preheaderDebounceTimer = null;
213
+ let subjectDebounceTimer = null;
214
+
215
+ const flowLog = document.getElementById('flow_log');
216
+ const headlessStatus = document.getElementById('headless_status');
217
+
218
+ const appendLog = (msg) => {
219
+ const line = `[${new Date().toLocaleTimeString()}] ${msg}`;
220
+ console.log(line);
221
+ flowLog.textContent = `${flowLog.textContent}${flowLog.textContent ? '\n' : ''}${line}`;
222
+ flowLog.scrollTop = flowLog.scrollHeight;
223
+ };
224
+
225
+ const parseLetterJson = () => {
226
+ try {
227
+ return JSON.parse(letterStore.json || '{}');
228
+ } catch {
229
+ return {};
230
+ }
231
+ };
232
+
233
+ const getHeadlessFieldValues = () => ({
234
+ subject: document.getElementById('field_subject').value,
235
+ preheader: document.getElementById('field_preheader').value,
236
+ });
237
+
238
+ /** Заполнить поля шага 2: subject из entity, preheader из json. */
239
+ const syncHeadlessFieldsFromStore = () => {
240
+ const email = parseLetterJson();
241
+ document.getElementById('field_subject').value = letterStore.subject ?? email.subject ?? '';
242
+ document.getElementById('field_preheader').value = email.preheader ?? '';
243
+ };
244
+
245
+ const clearFieldDebounce = () => {
246
+ if (preheaderDebounceTimer) {
247
+ clearTimeout(preheaderDebounceTimer);
248
+ preheaderDebounceTimer = null;
249
+ }
250
+ if (subjectDebounceTimer) {
251
+ clearTimeout(subjectDebounceTimer);
252
+ subjectDebounceTimer = null;
253
+ }
254
+ };
255
+
256
+ /**
257
+ * Merge getEmail() в json + compile html.
258
+ * letterPatch — доп. поля entity (subject и т.д.).
259
+ */
260
+ const updateJsonAndEmail = async (data, letterPatch = {}) => {
261
+ const email = parseLetterJson();
262
+ const safeSubject = (data.subject || letterStore.subject || '').trim() || letterStore.subject;
263
+ const safeData = { ...data, subject: safeSubject, id: DEMO_LETTER_ID };
264
+ letterStore.subject = safeSubject;
265
+ letterStore.json = JSON.stringify({ ...email, ...safeData, ...letterPatch });
266
+ if (editorInstance) {
267
+ const compiled = await editorInstance.compileEmail();
268
+ if (compiled?.compiled?.html) {
269
+ letterStore.html = compiled.compiled.html;
270
+ }
271
+ }
272
+ isNotSaved = false;
273
+ };
274
+
275
+ /** Шаг 1: save после правок в design-редакторе. */
276
+ const updateHtmlAndEmail = async (data, instance = editorInstance) => {
277
+ if (!instance) {
278
+ throw new Error('editor instance missing');
279
+ }
280
+ await updateJsonAndEmail(data);
281
+ appendLog(
282
+ `updateHtmlAndEmail: html=${letterStore.html?.length ?? 0}b subject="${letterStore.subject}" preheader="${parseLetterJson().preheader ?? ''}"`,
283
+ );
284
+ };
285
+
286
+ /**
287
+ * Шаг 2: show() → getEmail() → updateJsonAndEmail.
288
+ * Всегда передаём subject и preheader вместе.
289
+ */
290
+ const updateLetterAndJson = async ({ preheader, newData = {} } = {}) => {
291
+ if (!editorInstance) {
292
+ appendLog('updateLetterAndJson: skip — no editor instance');
293
+ return;
294
+ }
295
+ const email = parseLetterJson();
296
+ const nextPreheader = preheader !== undefined ? preheader : email.preheader;
297
+ const nextSubject = newData.subject ?? letterStore.subject ?? email.subject;
298
+
299
+ appendLog(
300
+ `updateLetterAndJson: show() subject="${nextSubject}" preheader="${nextPreheader ?? ''}"`,
301
+ );
302
+ await editorInstance.show({
303
+ ...email,
304
+ id: DEMO_LETTER_ID,
305
+ subject: nextSubject,
306
+ preheader: nextPreheader,
307
+ code: letterStore.html,
308
+ });
309
+
310
+ const data = await editorInstance.getEmail();
311
+ await updateJsonAndEmail({ ...data, id: DEMO_LETTER_ID }, newData);
312
+ appendLog(
313
+ `updateLetterAndJson: persisted subject="${letterStore.subject}" preheader="${parseLetterJson().preheader ?? ''}" html=${letterStore.html?.length ?? 0}b`,
314
+ );
315
+ };
316
+
317
+ const destroyEditor = async () => {
318
+ if (editorInstance) {
319
+ appendLog('destroyEditor: instance.destroy()');
320
+ await editorInstance.destroy();
321
+ editorInstance = null;
322
+ }
323
+ isEmailInitialized = false;
324
+ };
325
+
326
+ /** Новый DOM-узел — иначе shadow root / ELEMENT_MAP ломают повторный init на том же #blocks-editor. */
327
+ const replaceDesignEditorMount = () => {
328
+ const page = document.getElementById('page_design');
329
+ const old = document.getElementById('blocks-editor');
330
+ if (!page || !old) {
331
+ return;
332
+ }
333
+ const fresh = document.createElement('div');
334
+ fresh.id = 'blocks-editor';
335
+ page.replaceChild(fresh, old);
336
+ };
337
+
338
+ const persistDesignBeforeLeave = async () => {
339
+ if (!editorInstance) {
340
+ return;
341
+ }
342
+ try {
343
+ const data = await editorInstance.getEmail();
344
+ await updateHtmlAndEmail(data);
345
+ appendLog(
346
+ `persistDesignBeforeLeave: subject="${letterStore.subject}" preheader="${parseLetterJson().preheader ?? ''}"`,
347
+ );
348
+ } catch (error) {
349
+ const message = error && error.message ? error.message : String(error);
350
+ appendLog(`persistDesignBeforeLeave failed: ${message}`);
351
+ }
352
+ };
353
+
354
+ /** Перед уходом с шага 2: flush debounce + updateLetterAndJson с полями формы. */
355
+ const persistHeadlessBeforeLeave = async () => {
356
+ clearFieldDebounce();
357
+ if (!editorInstance) {
358
+ return;
359
+ }
360
+ try {
361
+ const { subject, preheader } = getHeadlessFieldValues();
362
+ await updateLetterAndJson({ preheader, newData: { subject } });
363
+ appendLog(
364
+ `persistHeadlessBeforeLeave: subject="${letterStore.subject}" preheader="${parseLetterJson().preheader ?? ''}"`,
365
+ );
366
+ } catch (error) {
367
+ const message = error && error.message ? error.message : String(error);
368
+ appendLog(`persistHeadlessBeforeLeave failed: ${message}`);
369
+ }
370
+ };
371
+
372
+ const initDesignEditor = async () => {
373
+ await destroyEditor();
374
+ replaceDesignEditorMount();
375
+ appendLog('initDesignEditor: editor.init({ element: #blocks-editor })');
376
+
377
+ editorInstance = await emailmaker.init({
378
+ getAuthToken,
379
+ element: '#blocks-editor',
380
+ project: undefined,
381
+ previewIconEnabled: true,
382
+ livePreviewEnabled: true,
383
+ nextButtonEnabled: true,
384
+ content: buildDesignContent(),
385
+ config: buildBaseConfig(),
386
+ handleReadEmailRevisions: () => [],
387
+ handleEmailInit: async (data) => {
388
+ appendLog(`ON_EMAIL_INIT (design) preheader=${data?.preheader ?? ''} html=${data?.html?.length ?? 0}b`);
389
+ isEmailInitialized = true;
390
+ },
391
+ handleEmailChanged: () => {
392
+ isNotSaved = true;
393
+ },
394
+ handleSaveButtonClick: async () => {
395
+ appendLog('handleSaveButtonClick: analytics hook');
396
+ },
397
+ handleNextButtonClick: async (data) => {
398
+ appendLog('handleNextButtonClick: save design → go to step 2');
399
+ await updateHtmlAndEmail(data);
400
+ await goToStep('subject');
401
+ },
402
+ handleEmailAutosave: async ({ value }) => {
403
+ if (!isEmailInitialized) {
404
+ return value;
405
+ }
406
+ const compiled = await editorInstance?.compileEmail();
407
+ if (!compiled?.compiled?.html) {
408
+ return value;
409
+ }
410
+ appendLog('handleEmailAutosave (design)');
411
+ await updateHtmlAndEmail(value);
412
+ return value;
413
+ },
414
+ handleSaveEmail: async ({ value }) => {
415
+ appendLog('handleSaveEmail (design)');
416
+ await updateHtmlAndEmail(value);
417
+ return value;
418
+ },
419
+ });
420
+
421
+ try {
422
+ const compiled = await editorInstance.compileEmail();
423
+ appendLog(
424
+ `initDesignEditor done: compile html=${compiled?.compiled?.html?.length ?? 0}b`,
425
+ );
426
+ } catch (error) {
427
+ const message = error && error.message ? error.message : String(error);
428
+ appendLog(`initDesignEditor compile check failed: ${message}`);
429
+ }
430
+ };
431
+
432
+ const initHeadlessEditor = async () => {
433
+ await destroyEditor();
434
+ appendLog('initHeadlessEditor: editor.init({ NO element }) — headless');
435
+
436
+ // Headless init: subject из store, preheader из json, code из html.
437
+ const email = parseLetterJson();
438
+ const subject = letterStore.subject;
439
+ const preheader = email.preheader ?? '';
440
+ const code = letterStore.html;
441
+
442
+ editorInstance = await emailmaker.init({
443
+ getAuthToken,
444
+ config: { locale: 'en_US' },
445
+ content: {
446
+ email: {
447
+ ...email,
448
+ id: DEMO_LETTER_ID,
449
+ subject,
450
+ code,
451
+ preheader,
452
+ },
453
+ },
454
+ handleReadEmailRevisions: () => [],
455
+ handleEmailInit: async () => {
456
+ appendLog('handleEmailInit (headless): emailInitialized');
457
+ isEmailInitialized = true;
458
+ headlessStatus.textContent = 'Headless: initialized';
459
+ },
460
+ });
461
+
462
+ syncHeadlessFieldsFromStore();
463
+ appendLog(
464
+ `initHeadlessEditor: fields subject="${letterStore.subject}" preheader="${parseLetterJson().preheader ?? ''}"`,
465
+ );
466
+ headlessStatus.textContent = isEmailInitialized ? 'Headless: initialized' : 'Headless: waiting init…';
467
+ };
468
+
469
+ const goToStep = async (step) => {
470
+ if (step === currentStep) {
471
+ return;
472
+ }
473
+ // Persist текущего шага перед destroy (оба направления).
474
+ if (currentStep === 'design') {
475
+ await persistDesignBeforeLeave();
476
+ } else if (currentStep === 'subject') {
477
+ await persistHeadlessBeforeLeave();
478
+ }
479
+ currentStep = step;
480
+ document.getElementById('page_design').classList.toggle('active', step === 'design');
481
+ document.getElementById('page_subject').classList.toggle('active', step === 'subject');
482
+ document.getElementById('step_design').classList.toggle('active', step === 'design');
483
+ document.getElementById('step_subject').classList.toggle('active', step === 'subject');
484
+
485
+ if (step === 'design') {
486
+ await initDesignEditor();
487
+ } else {
488
+ await initHeadlessEditor();
489
+ }
490
+ };
491
+
492
+ /** Preheader input → debounce → { preheader, newData: { subject } }. */
493
+ const schedulePreheaderSync = () => {
494
+ if (preheaderDebounceTimer) {
495
+ clearTimeout(preheaderDebounceTimer);
496
+ }
497
+ preheaderDebounceTimer = setTimeout(() => {
498
+ const { subject, preheader } = getHeadlessFieldValues();
499
+ appendLog(`debounce ${FIELD_DEBOUNCE_MS}ms → updateLetterAndJson (preheader+subject)`);
500
+ void updateLetterAndJson({ preheader, newData: { subject } });
501
+ }, FIELD_DEBOUNCE_MS);
502
+ };
503
+
504
+ /** Subject input → debounce → updateLetterAndJson с актуальным preheader. */
505
+ const scheduleSubjectSync = () => {
506
+ if (subjectDebounceTimer) {
507
+ clearTimeout(subjectDebounceTimer);
508
+ }
509
+ subjectDebounceTimer = setTimeout(() => {
510
+ const { subject, preheader } = getHeadlessFieldValues();
511
+ appendLog(`debounce ${FIELD_DEBOUNCE_MS}ms → updateLetterAndJson (subject+preheader)`);
512
+ void updateLetterAndJson({ preheader, newData: { subject } });
513
+ }, FIELD_DEBOUNCE_MS);
514
+ };
515
+
516
+ const onSubjectFieldBlur = () => {
517
+ clearFieldDebounce();
518
+ const { subject, preheader } = getHeadlessFieldValues();
519
+ appendLog('subject blur → updateLetterAndJson (subject+preheader)');
520
+ void updateLetterAndJson({ preheader, newData: { subject } });
521
+ };
522
+
523
+ document.getElementById('step_design').addEventListener('click', () => {
524
+ void goToStep('design');
525
+ });
526
+ document.getElementById('step_subject').addEventListener('click', () => {
527
+ void goToStep('subject');
528
+ });
529
+ document.getElementById('btn_clear_log').addEventListener('click', () => {
530
+ flowLog.textContent = '';
531
+ });
532
+ document.getElementById('field_preheader').addEventListener('input', schedulePreheaderSync);
533
+ document.getElementById('field_subject').addEventListener('input', scheduleSubjectSync);
534
+ document.getElementById('field_subject').addEventListener('blur', onSubjectFieldBlur);
535
+ document.getElementById('btn_subject_next').addEventListener('click', async () => {
536
+ clearFieldDebounce();
537
+ const { subject, preheader } = getHeadlessFieldValues();
538
+ appendLog('step 2 Next: updateLetterAndJson + finish');
539
+ await updateLetterAndJson({ preheader, newData: { subject } });
540
+ appendLog(
541
+ `DONE letter: subject="${letterStore.subject}", preheader="${parseLetterJson().preheader ?? ''}", html=${letterStore.html?.length}b`,
542
+ );
543
+ });
544
+
545
+ (async () => {
546
+ try {
547
+ appendLog('=== two-step flow demo START (step 1: design) ===');
548
+ appendLog(`letter id=${DEMO_LETTER_ID}, templateId=${INITIAL_TEMPLATE_ID} (no inline code)`);
549
+ await initDesignEditor();
550
+ } catch (error) {
551
+ const message = error && error.message ? error.message : String(error);
552
+ appendLog(`FATAL: ${message}`);
553
+ console.error(error);
554
+ }
555
+ })();
556
+ </script>
557
+ </body>
558
+ </html>