@frontastic/common 2.45.0 → 2.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
|
|
2
|
+
## Version 2.47.0 (2023-09-05)
|
|
3
|
+
|
|
4
|
+
** New Features and Improvements **
|
|
5
|
+
|
|
6
|
+
- Update the Shopify integration from API version 2022-10 to version 2023-07
|
|
7
|
+
|
|
8
|
+
## Version 2.46.0 (2023-07-18)
|
|
9
|
+
|
|
10
|
+
** New Features and Improvements **
|
|
11
|
+
|
|
12
|
+
- Update to webpack 5
|
|
13
|
+
|
|
2
14
|
## Version 2.45.0 (2023-06-27)
|
|
3
15
|
|
|
4
16
|
** New Features and Improvements **
|
package/composer.json
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
* [__construct()](#__construct)
|
|
8
8
|
* [getCustomers()](#getcustomers)
|
|
9
|
-
* [getCustomersInHost()](#getcustomersinhost)
|
|
10
9
|
* [getCustomer()](#getcustomer)
|
|
11
10
|
* [getProject()](#getproject)
|
|
12
11
|
* [getForHost()](#getforhost)
|
|
@@ -35,14 +34,6 @@ public function getCustomers(): array
|
|
|
35
34
|
|
|
36
35
|
Return Value: `array`
|
|
37
36
|
|
|
38
|
-
### getCustomersInHost()
|
|
39
|
-
|
|
40
|
-
```php
|
|
41
|
-
public function getCustomersInHost(): array
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Return Value: `array`
|
|
45
|
-
|
|
46
37
|
### getCustomer()
|
|
47
38
|
|
|
48
39
|
```php
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontastic/common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.47.0",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"@babel/core": "7.21.0",
|
|
6
6
|
"@babel/plugin-proposal-class-properties": "^7.5.0",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"eslint-plugin-standard": "^4.0.0",
|
|
29
29
|
"jest": "26.6.3",
|
|
30
30
|
"mime": "^1.4.1",
|
|
31
|
-
"webpack": "
|
|
32
|
-
"webpack-cli": "^
|
|
31
|
+
"webpack": "5.88.1",
|
|
32
|
+
"webpack-cli": "^5.1.4",
|
|
33
33
|
"whatwg-fetch": "3.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
package/src/js/domain/page.js
CHANGED
|
@@ -9,7 +9,7 @@ class Page {
|
|
|
9
9
|
this.nodes = page.nodes || []
|
|
10
10
|
this.layoutId = page.layoutId || DEFAULT_PAGE_LAYOUT
|
|
11
11
|
this.name = page.name || DEFAULT_PAGE_NAME
|
|
12
|
-
|
|
12
|
+
this._type = page._type || ''
|
|
13
13
|
this.regions = {}
|
|
14
14
|
|
|
15
15
|
this.tasticSchemas = (tastics || []).map(tastic => { return tastic.configurationSchema })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["frontastic-common"]=t():e["frontastic-common"]=t()}(global,(function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t){e.exports=require("crypto")},function(e){e.exports=JSON.parse('{"schema":[{"name":"Value Order","fields":[{"label":"Strip Label Prefix","field":"stripLabelPrefix","type":"boolean","default":false},{"label":"Sort Order","field":"sortOrder","type":"enum","values":[{"value":"sort-undefined","name":"Undefined"},{"value":"sort-ascending","name":"Ascending"},{"value":"sort-descending","name":"Descending"}],"default":"sort-undefined"}]}]}')},function(e){e.exports=JSON.parse('{"schema":[{"name":"Display properties","fields":[{"label":"Highlight menu item","field":"displayHighlightMenuItem","type":"boolean","default":false},{"label":"Highlight category tag","field":"displayHighlightCategoryTag","type":"boolean","default":false},{"label":"Description","field":"displayDescription","type":"string","translatable":true},{"label":"Custom CSS class","field":"displayClassname","type":"string","translatable":false},{"label":"Image","field":"displayMedia","type":"media","options":{"ratio":"4:1"}}]},{"name":"SEO","fields":[{"label":"Title","field":"seoTitle","type":"string","translatable":true},{"label":"Description","field":"seoDescription","type":"string","translatable":true},{"label":"Keywords","field":"seoKeywords","type":"string","translatable":true}]}]}')},function(e){e.exports=JSON.parse('{"schema":[]}')},function(e,t,n){"use strict";function i(e){return"stream"===e||"dataSource"===e}n.r(t),n.d(t,"ConfigurationSchema",(function(){return f})),n.d(t,"DefaultSchemas",(function(){return h})),n.d(t,"generateId",(function(){return S})),n.d(t,"getTranslation",(function(){return T})),n.d(t,"httpBuildQuery",(function(){return j})),n.d(t,"httpParseQuery",(function(){return F})),n.d(t,"isTranslatableByDefault",(function(){return C})),n.d(t,"shouldFieldBeTranslated",(function(){return x})),n.d(t,"registerServiceWorker",(function(){return N})),n.d(t,"VisibilityChange",(function(){return R})),n.d(t,"cellDimensions",(function(){return P})),n.d(t,"Cell",(function(){return _})),n.d(t,"Page",(function(){return H})),n.d(t,"Region",(function(){return z})),n.d(t,"Tastic",(function(){return A})),n.d(t,"MediaApi",(function(){return $})),n.d(t,"FacetTypeSchemaMap",(function(){return B})),n.d(t,"omit",(function(){return V})),n.d(t,"deprecate",(function(){return K})),n.d(t,"debounce",(function(){return G})),n.d(t,"throttle",(function(){return Q})),n.d(t,"Notifier",(function(){return X}));const r=["product","product-list","content","content-list"];function o(e,t,n){return void 0!==e?Boolean(e):"stream"===t&&r.includes(n)}function s(e){if(!Array.isArray(e.fields))return{};let t={};for(let n=0;n<e.fields.length;++n){const i=e.fields[n];if(!i||!i.field)continue;const r=i.type||"text";t[i.field]={field:i.field,type:r,sectionName:e.name||"",values:i.values||[],default:u(r,i.default),validate:i.validate||{},fields:i.fields||null,min:void 0===i.min?1:i.min,max:i.max||16,required:o(i.required,r,i.streamType),disabled:!0===i.disabled,translatable:i.translatable}}return t}function a(e,t){let n=e.default;if(void 0!==t[e.field]&&null!==t[e.field]&&(n=t[e.field]),"group"===e.type){let t=(n||[]).slice(0,e.max);for(let n=t.length;n<e.min;++n)t[n]={};return i=t,r=e.fields,(i||[]).map(e=>{null!==e&&"object"==typeof e||(e={});for(let t of r)void 0!==e[t.field]&&null!==e[t.field]||(e[t.field]=t.default||null);return e})}var i,r;return n}function l(e,t,n,i){("object"!=typeof i||Array.isArray(i))&&(i={});let r={};for(let o of Object.values(e))r[o.field]=c(o,t,n,i);return r}function c(e,t,n,r){const o=r[e.field];if("group"===e.type){const i=s(e);return a(e,t).map((e,t)=>{const r=void 0!==o&&o.length>t?o[t]:{};return l(i,e,n,r)})}if(void 0!==o)return o;const c=a(e,t);return i(e.type)?n[c]||null:c}function u(e,t){if(void 0!==t)return t;switch(e){case"group":return[];case"decimal":case"integer":case"float":case"number":return 0;case"string":case"text":case"markdown":return"";case"json":return"{}";case"boolean":return!1;case"instant":case"encrypted":default:return null}}class d{constructor(e=[],t={}){this.schema=e,this.setConfiguration(t),this.fields={};for(let e=0;e<this.schema.length;++e)this.fields={...this.fields,...s(this.schema[e])}}setConfiguration(e){this.configuration=Array.isArray(e)?{}:e||{}}set(e,t){if(!this.fields[e])throw new Error("Unknown field "+e+" in this configuration schema.");return new d(this.schema,{...this.configuration,[e]:t})}get(e){const t=this.fields[e];return t?a(t,this.configuration):(console.warn("Unknown field "+e+" in this configuration schema."),this.configuration[e]||null)}getField(e){const t=this.fields[e];if(!t)throw new Error("Unknown field "+e+" in this configuration schema.");return t}has(e){return!!this.fields[e]}getSchema(){return this.schema}getConfiguration(){return this.configuration}isFieldRequired(e){return this.getField(e).required}isFieldDisabled(e){return this.getField(e).disabled}hasMissingRequiredValueInField(e,t=!1){const n=this.getField(e),r=this.get(e);return"group"===n.type?r.some(e=>new d([n],e).hasMissingRequiredFieldValues(t)):!!n.required&&((!i(n.type)||!t)&&("reference"===n.type?null!==r?Object.values(r).some(e=>!e)||0===Object.values(r).length:"object"!=typeof r||null===r||"string"!=typeof r.type||""===r.type||"string"!=typeof r.target||""===r.target:i(n.type)&&r||"media"===n.type&&r?Object.values(r).some(e=>!e):("string"===n.type||"markdown"===n.type)&&n.translatable&&r?Object.values(r).some(e=>!e)||0===Object.values(r).length:null==r||""===r))}hasMissingRequiredFieldValues(e=!1){return Object.keys(this.fields).some(t=>this.hasMissingRequiredValueInField(t,e))}hasMissingRequiredFieldValuesInSection(e,t=!1){return Object.entries(this.fields).some(([n,i])=>i.sectionName===e&&this.hasMissingRequiredValueInField(n,t))}getConfigurationWithResolvedStreams(e={},t={}){return l(this.fields,this.configuration,e,t)}}var f=d,h={NodeConfigurationSchema:n(2),CellConfigurationSchema:n(3)},g=n(0),m=n.n(g),p={randomUUID:m.a.randomUUID};const y=new Uint8Array(256);let b=y.length;function w(){return b>y.length-16&&(m.a.randomFillSync(y),b=0),y.slice(b,b+=16)}const v=[];for(let e=0;e<256;++e)v.push((e+256).toString(16).slice(1));function I(e,t=0){return(v[e[t+0]]+v[e[t+1]]+v[e[t+2]]+v[e[t+3]]+"-"+v[e[t+4]]+v[e[t+5]]+"-"+v[e[t+6]]+v[e[t+7]]+"-"+v[e[t+8]]+v[e[t+9]]+"-"+v[e[t+10]]+v[e[t+11]]+v[e[t+12]]+v[e[t+13]]+v[e[t+14]]+v[e[t+15]]).toLowerCase()}var k=function(e,t,n){if(p.randomUUID&&!t&&!e)return p.randomUUID();const i=(e=e||{}).random||(e.rng||w)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=i[e];return t}return I(i)},S=function(){return k()},T=function(e,t,n){if(!e||"object"!=typeof e)return{text:e,locale:t};if(e[t])return{text:e[t],locale:t};if(e[n])return{text:e[n],locale:n};if(!Object.keys(e).length)return{text:"",locale:null,translated:!1};let i=Object.keys(e)[0];return{text:e[i]||"",locale:i,translated:!1}};const C=e=>{switch(e){case"string":case"text":case"markdown":case"json":return!0;default:return!1}},x=e=>void 0!==e.translatable?e.translatable:C(e.type);let O=function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")};var j=function(e,t,n){let i,r,o=[],s=function(e,t,n){let i,r=[];if(!0===t?t="1":!1===t&&(t="0"),null!=t){if("object"==typeof t){for(i in t)null!=t[i]&&r.push(s(e+"["+i+"]",t[i],n));return r.join(n)}if("function"!=typeof t)return O(e)+"="+O(t);throw new Error("There was an error processing for httpBuildQuery().")}return""};for(r in n||(n="&"),e){i=e[r],t&&!isNaN(r)&&(r=String(t)+r);let a=s(r,i,n);""!==a&&o.push(a)}return o.join(n)};let E=function(e){if("object"!=typeof e)return!1;let t=0;for(let n of Object.keys(e))if(+n!=t++)return!1;return!0},D=function(e){for(let[t,n]of Object.entries(e))n&&"object"==typeof n&&(e[t]=D(n)),E(n)&&(e[t]=Object.values(n));return e};var F=function(e){let t={};return function(e,t){var n,i,r,o,s,a,l,c,u,d,f,h,g,m=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),p=m.length,y=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))};for(t||(t=this.window),n=0;n<p;n++){for(u=y((c=m[n].split("="))[0]),d=c.length<2?"":y(c[1]);" "===u.charAt(0);)u=u.slice(1);if(u.indexOf("\0")>-1&&(u=u.slice(0,u.indexOf("\0"))),u&&"["!==u.charAt(0)){for(h=[],f=0,i=0;i<u.length;i++)if("["!==u.charAt(i)||f){if("]"===u.charAt(i)&&f&&(h.length||h.push(u.slice(0,f-1)),h.push(u.substr(f,i-f)),f=0,"["!==u.charAt(i+1)))break}else f=i+1;for(h.length||(h=[u]),i=0;i<h[0].length&&(" "!==(l=h[0].charAt(i))&&"."!==l&&"["!==l||(h[0]=h[0].substr(0,i)+"_"+h[0].substr(i+1)),"["!==l);i++);for(a=t,i=0,g=h.length;i<g;i++)if(u=h[i].replace(/^['"]/,"").replace(/['"]$/,""),i!==h.length-1,s=a,""!==u&&" "!==u||0===i)void 0===a[u]&&(a[u]={}),a=a[u];else{for(o in r=-1,a)a.hasOwnProperty(o)&&+o>r&&o.match(/^\d+$/g)&&(r=+o);u=r+1}s[u]=d}}}(e,t),t=D(t),t};const U=Boolean("undefined"==typeof window||!window.location.hostname||"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function N(){if("serviceWorker"in navigator){const e=process.env.PUBLIC_URL||"/";if(new URL(e,window.location).origin!==window.location.origin)return;window.addEventListener("load",()=>{const e="/service-worker.js";U?function(e){fetch(e).then(t=>{404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then(e=>{e.unregister().then(()=>{window.location.reload()})}):M(e)}).catch(()=>{console.log("No internet connection found. App is running in offline mode.")})}(e):M(e)})}}function M(e){navigator.serviceWorker.register(e).then(e=>{e.onupdatefound=()=>{const t=e.installing;t.onstatechange=()=>{"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))}}}).catch(e=>{console.error("Error during service worker registration:",e)})}var R=function(){let e,t,n={};if(this.registerCallBack=function(e,t){let i=null;do{i=Math.floor(65536*(1+Math.random())).toString(16).substring(1)}while(i in n);return n[i]={hidden:e,active:t},i},this.removeCallBack=function(e){delete n[e]},"undefined"==typeof document?(e=!1,t=!1):void 0!==document.hidden?(e="hidden",t="visibilitychange"):void 0!==document.mozHidden?(e="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(e="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(e="webkitHidden",t="webkitvisibilitychange"),e&&t){let i=function(){for(let t of Object.values(n))document[e]?t.hidden():t.active()};void 0===document.addEventListener||void 0===document[e]?console.warn("This feature requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."):document.addEventListener(t,i,!1)}},P=[{size:12,name:"1",icon:"looks_one"},{size:6,name:"1/2",icon:"looks_two"},{size:4,name:"1/3",icon:"looks_3"},{size:8,name:"2/3",icon:"looks_3"},{size:3,name:"1/4",icon:"looks_4"},{size:9,name:"3/4",icon:"looks_4"},{size:2,name:"1/6",icon:"looks_6"}];var A=class{constructor(e={}){this.tasticId=e.tasticId||S(),this.tasticType=e.tasticType,this.configuration=e.configuration||{};let t=[{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string"},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0},{label:"Anchor",field:"tasticId",type:"string",translatable:!1,disabled:!0,default:"#"+this.tasticId}]}];if(e.schema)for(let n=0;n<e.schema.length;++n)t.push(e.schema[n]);this.schema=new f(t,this.configuration)}export(){return{tasticId:this.tasticId,tasticType:this.tasticType,configuration:this.schema.getConfiguration()}}};var _=class{constructor(e={}){if(this.cellId=e.cellId||S(),this.configuration=e.configuration||{},this.customConfiguration=e.customConfiguration||{},this.schema=new f([{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string",translatable:!0},{label:"Layout element width",field:"size",type:"enum",values:P&&P.map(e=>({name:e.name,value:e.size})),default:12},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]}],this.configuration),this.tastics=[],e.tastics&&e.tastics.length)for(let t=0;t<e.tastics.length;++t)this.tastics.push(new A(e.tastics[t]))}addTastic(e,t={},n=[],i=0){const r=new A({tasticType:e,configuration:t,schema:n});return this.tastics.splice(i,0,r),r}getTastic(e){for(let t of this.tastics)if(t.tasticId===e)return t;throw new Error("Could not find component with ID "+e)}getTasticCount(){return this.tastics.length}export(){return{cellId:this.cellId,configuration:this.schema.getConfiguration(),customConfiguration:this.customConfiguration,tastics:this.tastics.map(e=>e.export())}}};var q=class{constructor(e){if(!e.kitDefinitionId)throw new Error("Missing kitDefinitionId in "+JSON.stringify(e));this.kitDefinitionId=e.kitDefinitionId,this.kitId=e.kitId||S(),this.configuration=e.configuration||{}}export(){return{kitId:this.kitId,kitDefinitionId:this.kitDefinitionId,configuration:this.configuration}}};var z=class{constructor(e={}){if(this.regionId=e.regionId||S(),this.configuration=e.configuration||{},this.schema=new f([{name:"Responsive",folded:!0,fields:[{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]},{name:"Layout",fields:[{label:"Cell direction",field:"flexDirection",type:"enum",default:"row",values:[{value:"row",name:"Row"},{value:"column",name:"Column"},{value:"row-reverse",name:"Row (reversed)"},{value:"column-reverse",name:"Column (reversed)"}]},{label:"Cell wrapping",field:"flexWrap",type:"enum",default:"wrap",values:[{value:"nowrap",name:"No wrapping"},{value:"wrap",name:"Wrap cells"}]},{label:"Justify cells",field:"justifyContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center Cells"},{value:"space-between",name:"Space between cells"},{value:"space-around",name:"Space around cells"},{value:"space-even",name:"Evenly spaced cells"}]},{label:"Cell alignment",field:"alignItems",type:"enum",default:"stretch",values:[{value:"flex-start",name:"Align to start"},{value:"flex-end",name:"Align to end"},{value:"center",name:"Center cells"},{value:"stretch",name:"Stretch cells"},{value:"baseline",name:"Align to baseline"}]},{label:"Align multiple cell rows",field:"alignContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center rows"},{value:"stretch",name:"Stretch rows"},{value:"space-between",name:"Space between rows"},{value:"space-around",name:"Space around rows"}]}]}],this.configuration),this.elements=[],e.elements&&e.elements.length)for(let t=0;t<e.elements.length;++t)this.addElement(e.elements[t])}addElement(e){if(e.cellId)return this.addCell(e);if(e.kitId)return this.addKit(e);throw new TypeError("Unknown element type: "+JSON.stringify(e))}addCell(e){return this.elements.push(new _(e)),this.elements[this.elements.length-1]}addKit(e){return this.elements.push(new q(e)),this.elements[this.elements.length-1]}getElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e of this.elements)if(e[t]===n)return e;throw new Error("Could not find element with ID "+JSON.stringify(n))}getCells(){return this.elements.filter(e=>e instanceof _)}getKits(){return this.elements.filter(e=>e instanceof q)}export(){return{regionId:this.regionId,configuration:this.schema.getConfiguration(),elements:this.elements.map(e=>e.export())}}};var H=class{constructor(e={},t=[],n=[]){this.pageId=e.pageId||null,this.nodes=e.nodes||[],this.layoutId=e.layoutId||"three_rows",this.name=e.name||"Unnamed Page",this.regions={},this.tasticSchemas=(n||[]).map(e=>e.configurationSchema);for(let n=0;n<t.length;++n){let i=t[n];e.regions&&e.regions[i]&&e.regions[i].elements&&e.regions[i].elements.length&&(e.regions[i].elements=this.mapTastics(e.regions[i].elements)),this.createRegion(i,e.regions&&e.regions[i]||{})}}mapTastics(e){for(let t=0;t<e.length;++t){let n=e[t];if(n.cellId&&(n.tastics&&n.tastics.length))for(let e=0;e<n.tastics.length;++e){let t=n.tastics[e];t.schema={schema:[]};for(let e of this.tasticSchemas)if(e.tasticType===t.tasticType){t.schema=e.schema;break}}}return e}createRegion(e,t){t.regionId=e,this.regions[e]=new z(t)}getRegion(e){if(!this.regions[e])throw new Error("Region with identifier "+e+" unknown.");return this.regions[e]}addCell(e,t={}){return this.getRegion(e).addCell({configuration:t})}duplicateCell(e,t){const n=this.addCell(e,t.configuration);return t.tastics.forEach((t,i)=>{this.addTastic(e,n.cellId,t.tasticType,i,t.configuration)}),n}addKit(e,t){return this.getRegion(e).addKit(t)}findElement(e){const t=Object.keys(e)[0],n=Object.values(e)[0];for(let e in this.regions)for(let[i,r]of Object.entries(this.regions[e].elements))if(r[t]===n)return[e,+i];throw new Error("Could not find element with "+JSON.stringify(e))}hasElement(e){try{return!!this.findElement(e)}catch(e){return!1}}getElement(e){let[t,n]=this.findElement(e);return this.regions[t].elements[n]}removeElement(e){let[t,n]=this.findElement(e);this.regions[t].elements.splice(n,1)}moveElement(e,t){if(!this.regions[t.region])throw new Error("Unknown target region "+t.region);let[n,i]=this.findElement(e),r=this.regions[n].elements.splice(i,1)[0];this.regions[t.region].elements.splice(void 0===t.element?this.regions[t.region].elements.length:t.element-(n===t.region&&t.element>i?1:0),0,r)}addTastic(e,t,n,i,r={}){let o=null;for(let e of this.tasticSchemas)if(e.tasticType===n){o=e;break}return this.getRegion(e).getElement({cellId:t}).addTastic(n,r,o,i)}getTastics(){let e=[];return Object.values(this.regions).forEach(t=>{t.getCells().forEach(t=>{e=e.concat(t.tastics)})}),e}findTastic(e){for(let t in this.regions)for(let n=0;n<this.regions[t].elements.length;++n)for(let i in this.regions[t].elements[n].tastics||[]){if(this.regions[t].elements[n].tastics[i].tasticId===e)return[t,+n,+i]}throw new Error("Could not find tastic with id "+e)}hasTastic(e){try{return!!this.findTastic(e)}catch(e){return!1}}getTastic(e){let[t,n,i]=this.findTastic(e);return this.regions[t].elements[n].tastics[i]}removeTastic(e){let[t,n,i]=this.findTastic(e);this.regions[t].elements[n].tastics.splice(i,1)}moveTastic(e,t){let[n,i,r]=this.findTastic(e),o=this.regions[n].elements[i].tastics.splice(r,1)[0],[s,a]=this.findElement({cellId:t.cell});this.regions[s].elements[a].tastics.splice(void 0===t.tasticDropPosition?this.regions[s].elements[a].tastics.length:t.tasticDropPosition-(n===s&&i===a&&t.tasticDropPosition>=r?1:0),0,o)}duplicateTastic(e,t){const[n,,i]=this.findTastic(e),r=this.getTastic(e);return this.addTastic(n,t,r.tasticType,i+1,r.configuration)}export(){let e={};for(let[t,n]of Object.entries(this.regions))e[t]=n.export();return{pageId:this.pageId,nodes:this.nodes,layoutId:this.layoutId,name:this.name,regions:e}}};const L=(e,t,n,i)=>{i={resourceType:t,type:"upload",...i};let r=[];for(let[e,t]of Object.entries(i))switch(e){case"secure":case"resourceType":case"type":break;case"background":case"crop":case"fetch_format":case"gravity":case"height":case"quality":case"width":case"x":case"y":t&&r.push(e[0]+"_"+t);break;default:throw new Error("Unhandled image transformation "+e)}return r.sort(),`https://res.cloudinary.com/${n.cloudName}/${i.resourceType}/${i.type}/${r.join(",")}/${o=e,encodeURI(o).replace(/[?=]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}`;var o};var W=class{constructor(e){this.configuration={cloudName:e.cloudName}}getImageUrl(e,t,n,i={}){return L(e.mediaId,"string"==typeof e.resourceType&&""!==e.resourceType?e.resourceType:"image",this.configuration,{fetch_format:e.format&&"svg"===e.format?void 0:"auto",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getFetchImageUrl(e,t,n,i={}){return e.startsWith("//")&&(e="https:"+e),L(e,"image",this.configuration,{fetch_format:"auto",type:"fetch",width:t,height:n,secure:!0,...this.getQuality(i),...this.getFetchFormat(i),...this.getGravityOptions(i),...this.cropOptions(i)})}getImageUrlWithoutDefaults(e,t,n,i={}){return L(e.mediaId,"string"==typeof e.resourceType&&""!==e.resourceType?e.resourceType:"image",this.configuration,{width:t,height:n,...i})}getGravityOptions(e){if(e.crop)return{};let t={gravity:"faces:auto"};return e.gravity&&(t.gravity="custom"===e.gravity.mode?"xy_center":e.gravity.mode,e.gravity.coordinates&&(t.x=e.gravity.coordinates.x,t.y=e.gravity.coordinates.y)),t}cropOptions(e){let t={crop:"fill"};return e.crop&&(t.crop=e.crop),e.background&&(t.background=e.background),t}getQuality(e){let t={quality:"auto"};return e.quality&&(t.quality=e.quality),t}getFetchFormat(e){let t={};return e.fetch_format&&(t.fetch_format=e.fetch_format),e.fetchFormat&&(t.fetch_format=e.fetchFormat),t}};var $=class{constructor(){this.imageSizes=[16,32,64,128,256,512,1024,2048]}getImageDimensions(e,t,n,i=null,r=1){let o=this.getFloatRatio(e,i),s=t&&Math.round(+t*r),a=n&&Math.round(+n*r);return s&&i&&(a=Math.round(s*o)),a&&!s&&i&&(s=Math.round(a/o)),[s,a]}getFloatRatio(e=null,t=null){if(!t&&e&&e.width&&e.height)return e.height/e.width;const n=String(t).match(/([0-9]+):([0-9]+)/);return n?n[2]/n[1]:t}getImageLink(e,t,n,i,r,o={},s=1){let a=this.getMediaApi(t),[l,c]=this.getImageDimensions(e,n,i,r,s),u=l/c;if(["fill","pad"].includes(o.crop)){for(let e=0;e<this.imageSizes.length;++e)if(this.imageSizes[e]>=l){l=this.imageSizes[e];break}c=o.autoHeight?null:Math.ceil(l/u)}return"string"==typeof e?a.getFetchImageUrl(e,l,c,o):a.getImageUrl(e,l,c,o)}getMediaApi(e){switch(e.media.engine){case"cloudinary":return new W(e.media);default:throw new Error("No valid media API found.")}}static getElementDimensions(e){let t=0;if(getComputedStyle){let n=getComputedStyle(e);t+=parseFloat(n.paddingLeft)+parseFloat(n.paddingRight)}return{width:e.clientWidth-t,height:e.clientHeight}}},J=n(1),B={enum:J,localizedEnum:J},V=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),K=(e,t=null)=>{"undefined"!=typeof PRODUCTION&&PRODUCTION||"undefined"==typeof window||!window||!window.document||console.info("%c🗑 %cDeprecation Notice: %s %s","color: gray","color: orange",t?"["+(t.displayName||t.constructor.name)+"]":"",e)},G=(e,t,n=!1)=>{let i=!1;return function(){let r=this,o=arguments,s=function(){i=null,n||e.apply(r,o)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(r,o)}},Q=(e,t)=>{let n=!1;return function(){n||(e.apply(this,arguments),n=!0,setTimeout((function(){n=!1}),t))}};var X=class{constructor(e,t={}){if(this.context={customer:"demo",idDebug:!1,endpoint:"preview",...e},this.messageHandlers=t,!this.context.previewId)throw new Error("context.previewId is required");this.webSocket=null,this.connected=!1,this.connectionFails=0,this.connect()}connect(){this.webSocket=new WebSocket((this.context.isDebug?"ws://":"wss://")+this.context.customer+".frontastic.io"+(this.context.isDebug?".local":"")+`:8080/ws?${this.context.endpoint}=${this.context.previewId}`),this.webSocket.onmessage=this.handleMessage.bind(this),this.webSocket.onopen=()=>{this.connectionFails=0,this.connected=!0},this.webSocket.onclose=()=>{this.webSocket=null,this.connected=!1,setTimeout(this.connect.bind(this),1e3*Math.min(++this.connectionFails,30))}}handleMessage(e){let t=JSON.parse(e.data);if("Ping"!==t.Name)return this.messageHandlers[t.Name]?this.messageHandlers[t.Name](t.Payload,t):void console.info("Unknown WebSocket message",t)}sendMessage(e,t=!1){if(e.Channel=this.context.previewId,e.Payload=e.Payload||[],this.connected)return this.webSocket.send(JSON.stringify(e));t&&setTimeout(()=>{this.sendMessage(e,!0)},100)}close(){this.webSocket.onclose=()=>{},this.webSocket.close()}}}])}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["frontastic-common"]=t():e["frontastic-common"]=t()}(global,(()=>(()=>{"use strict";var e={n:t=>{var i=t&&t.__esModule?()=>t.default:()=>t;return e.d(i,{a:i}),i},d:(t,i)=>{for(var n in i)e.o(i,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:i[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function i(e){return"stream"===e||"dataSource"===e}e.r(t),e.d(t,{Cell:()=>A,ConfigurationSchema:()=>u,DefaultSchemas:()=>h,FacetTypeSchemaMap:()=>W,MediaApi:()=>H,Notifier:()=>K,Page:()=>q,Region:()=>_,Tastic:()=>M,VisibilityChange:()=>N,cellDimensions:()=>R,debounce:()=>J,deprecate:()=>B,generateId:()=>I,getTranslation:()=>k,httpBuildQuery:()=>O,httpParseQuery:()=>E,isTranslatableByDefault:()=>S,omit:()=>$,registerServiceWorker:()=>F,shouldFieldBeTranslated:()=>T,throttle:()=>V});const n=["product","product-list","content","content-list"];function s(e,t,i){return void 0!==e?Boolean(e):"stream"===t&&n.includes(i)}function o(e){if(!Array.isArray(e.fields))return{};let t={};for(let i=0;i<e.fields.length;++i){const n=e.fields[i];if(!n||!n.field)continue;const o=n.type||"text";t[n.field]={field:n.field,type:o,sectionName:e.name||"",values:n.values||[],default:c(o,n.default),validate:n.validate||{},fields:n.fields||null,min:void 0===n.min?1:n.min,max:n.max||16,required:s(n.required,o,n.streamType),disabled:!0===n.disabled,translatable:n.translatable}}return t}function r(e,t){let i=e.default;if(void 0!==t[e.field]&&null!==t[e.field]&&(i=t[e.field]),"group"===e.type){let t=(i||[]).slice(0,e.max);for(let i=t.length;i<e.min;++i)t[i]={};return n=t,s=e.fields,(n||[]).map((e=>{null!==e&&"object"==typeof e||(e={});for(let t of s)void 0!==e[t.field]&&null!==e[t.field]||(e[t.field]=t.default||null);return e}))}var n,s;return i}function a(e,t,i,n){("object"!=typeof n||Array.isArray(n))&&(n={});let s={};for(let o of Object.values(e))s[o.field]=l(o,t,i,n);return s}function l(e,t,n,s){const l=s[e.field];if("group"===e.type){const i=o(e);return r(e,t).map(((e,t)=>{const s=void 0!==l&&l.length>t?l[t]:{};return a(i,e,n,s)}))}if(void 0!==l)return l;const c=r(e,t);return i(e.type)?n[c]||null:c}function c(e,t){if(void 0!==t)return t;switch(e){case"group":return[];case"decimal":case"integer":case"float":case"number":return 0;case"string":case"text":case"markdown":return"";case"json":return"{}";case"boolean":return!1;default:return null}}class d{constructor(e=[],t={}){this.schema=e,this.setConfiguration(t),this.fields={};for(let e=0;e<this.schema.length;++e)this.fields={...this.fields,...o(this.schema[e])}}setConfiguration(e){this.configuration=Array.isArray(e)?{}:e||{}}set(e,t){if(!this.fields[e])throw new Error("Unknown field "+e+" in this configuration schema.");return new d(this.schema,{...this.configuration,[e]:t})}get(e){const t=this.fields[e];return t?r(t,this.configuration):(console.warn("Unknown field "+e+" in this configuration schema."),this.configuration[e]||null)}getField(e){const t=this.fields[e];if(!t)throw new Error("Unknown field "+e+" in this configuration schema.");return t}has(e){return!!this.fields[e]}getSchema(){return this.schema}getConfiguration(){return this.configuration}isFieldRequired(e){return this.getField(e).required}isFieldDisabled(e){return this.getField(e).disabled}hasMissingRequiredValueInField(e,t=!1){const n=this.getField(e),s=this.get(e);return"group"===n.type?s.some((e=>new d([n],e).hasMissingRequiredFieldValues(t))):!!n.required&&(!i(n.type)||!t)&&("reference"===n.type?null!==s?Object.values(s).some((e=>!e))||0===Object.values(s).length:"object"!=typeof s||null===s||"string"!=typeof s.type||""===s.type||"string"!=typeof s.target||""===s.target:i(n.type)&&s||"media"===n.type&&s?Object.values(s).some((e=>!e)):("string"===n.type||"markdown"===n.type)&&n.translatable&&s?Object.values(s).some((e=>!e))||0===Object.values(s).length:null==s||""===s)}hasMissingRequiredFieldValues(e=!1){return Object.keys(this.fields).some((t=>this.hasMissingRequiredValueInField(t,e)))}hasMissingRequiredFieldValuesInSection(e,t=!1){return Object.entries(this.fields).some((([i,n])=>n.sectionName===e&&this.hasMissingRequiredValueInField(i,t)))}getConfigurationWithResolvedStreams(e={},t={}){return a(this.fields,this.configuration,e,t)}}const u=d,h={NodeConfigurationSchema:JSON.parse('{"schema":[{"name":"Display properties","fields":[{"label":"Highlight menu item","field":"displayHighlightMenuItem","type":"boolean","default":false},{"label":"Highlight category tag","field":"displayHighlightCategoryTag","type":"boolean","default":false},{"label":"Description","field":"displayDescription","type":"string","translatable":true},{"label":"Custom CSS class","field":"displayClassname","type":"string","translatable":false},{"label":"Image","field":"displayMedia","type":"media","options":{"ratio":"4:1"}}]},{"name":"SEO","fields":[{"label":"Title","field":"seoTitle","type":"string","translatable":true},{"label":"Description","field":"seoDescription","type":"string","translatable":true},{"label":"Keywords","field":"seoKeywords","type":"string","translatable":true}]}]}'),CellConfigurationSchema:{schema:[]}},f=require("crypto");var g=e.n(f);const m={randomUUID:g().randomUUID},p=new Uint8Array(256);let y=p.length;function b(){return y>p.length-16&&(g().randomFillSync(p),y=0),p.slice(y,y+=16)}const w=[];for(let e=0;e<256;++e)w.push((e+256).toString(16).slice(1));const v=function(e,t,i){if(m.randomUUID&&!t&&!e)return m.randomUUID();const n=(e=e||{}).random||(e.rng||b)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){i=i||0;for(let e=0;e<16;++e)t[i+e]=n[e];return t}return function(e,t=0){return(w[e[t+0]]+w[e[t+1]]+w[e[t+2]]+w[e[t+3]]+"-"+w[e[t+4]]+w[e[t+5]]+"-"+w[e[t+6]]+w[e[t+7]]+"-"+w[e[t+8]]+w[e[t+9]]+"-"+w[e[t+10]]+w[e[t+11]]+w[e[t+12]]+w[e[t+13]]+w[e[t+14]]+w[e[t+15]]).toLowerCase()}(n)};function I(){return v()}function k(e,t,i){if(!e||"object"!=typeof e)return{text:e,locale:t};if(e[t])return{text:e[t],locale:t};if(e[i])return{text:e[i],locale:i};if(!Object.keys(e).length)return{text:"",locale:null,translated:!1};let n=Object.keys(e)[0];return{text:e[n]||"",locale:n,translated:!1}}const S=e=>{switch(e){case"string":case"text":case"markdown":case"json":return!0;default:return!1}},T=e=>void 0!==e.translatable?e.translatable:S(e.type);let C=function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")};const O=function(e,t,i){let n,s,o=[],r=function(e,t,i){let n,s=[];if(!0===t?t="1":!1===t&&(t="0"),null!=t){if("object"==typeof t){for(n in t)null!=t[n]&&s.push(r(e+"["+n+"]",t[n],i));return s.join(i)}if("function"!=typeof t)return C(e)+"="+C(t);throw new Error("There was an error processing for httpBuildQuery().")}return""};for(s in i||(i="&"),e){n=e[s],t&&!isNaN(s)&&(s=String(t)+s);let a=r(s,n,i);""!==a&&o.push(a)}return o.join(i)};let x=function(e){if("object"!=typeof e)return!1;let t=0;for(let i of Object.keys(e))if(+i!=t++)return!1;return!0},j=function(e){for(let[t,i]of Object.entries(e))i&&"object"==typeof i&&(e[t]=j(i)),x(i)&&(e[t]=Object.values(i));return e};const E=function(e){let t={};return function(e,t){var i,n,s,o,r,a,l,c,d,u,h,f,g,m=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),p=m.length,y=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))};for(t||(t=this.window),i=0;i<p;i++){for(d=y((c=m[i].split("="))[0]),u=c.length<2?"":y(c[1]);" "===d.charAt(0);)d=d.slice(1);if(d.indexOf("\0")>-1&&(d=d.slice(0,d.indexOf("\0"))),d&&"["!==d.charAt(0)){for(f=[],h=0,n=0;n<d.length;n++)if("["!==d.charAt(n)||h){if("]"===d.charAt(n)&&h&&(f.length||f.push(d.slice(0,h-1)),f.push(d.substr(h,n-h)),h=0,"["!==d.charAt(n+1)))break}else h=n+1;for(f.length||(f=[d]),n=0;n<f[0].length&&(" "!==(l=f[0].charAt(n))&&"."!==l&&"["!==l||(f[0]=f[0].substr(0,n)+"_"+f[0].substr(n+1)),"["!==l);n++);for(a=t,n=0,g=f.length;n<g;n++)if(d=f[n].replace(/^['"]/,"").replace(/['"]$/,""),f.length,r=a,""!==d&&" "!==d||0===n)void 0===a[d]&&(a[d]={}),a=a[d];else{for(o in s=-1,a)a.hasOwnProperty(o)&&+o>s&&o.match(/^\d+$/g)&&(s=+o);d=s+1}r[d]=u}}}(e,t),t=j(t),t},D=Boolean("undefined"==typeof window||!window.location.hostname||"localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));function F(){if("serviceWorker"in navigator){const e=process.env.PUBLIC_URL||"/";if(new URL(e,window.location).origin!==window.location.origin)return;window.addEventListener("load",(()=>{const e="/service-worker.js";D?function(e){fetch(e).then((t=>{404===t.status||-1===t.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then((e=>{e.unregister().then((()=>{window.location.reload()}))})):U(e)})).catch((()=>{console.log("No internet connection found. App is running in offline mode.")}))}(e):U(e)}))}}function U(e){navigator.serviceWorker.register(e).then((e=>{e.onupdatefound=()=>{const t=e.installing;t.onstatechange=()=>{"installed"===t.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))}}})).catch((e=>{console.error("Error during service worker registration:",e)}))}const N=function(){let e,t,i={};if(this.registerCallBack=function(e,t){let n=null;do{n=Math.floor(65536*(1+Math.random())).toString(16).substring(1)}while(n in i);return i[n]={hidden:e,active:t},n},this.removeCallBack=function(e){delete i[e]},"undefined"==typeof document?(e=!1,t=!1):void 0!==document.hidden?(e="hidden",t="visibilitychange"):void 0!==document.mozHidden?(e="mozHidden",t="mozvisibilitychange"):void 0!==document.msHidden?(e="msHidden",t="msvisibilitychange"):void 0!==document.webkitHidden&&(e="webkitHidden",t="webkitvisibilitychange"),e&&t){let n=function(){for(let t of Object.values(i))document[e]?t.hidden():t.active()};void 0===document.addEventListener||void 0===document[e]?console.warn("This feature requires a browser, such as Google Chrome or Firefox, that supports the Page Visibility API."):document.addEventListener(t,n,!1)}},R=[{size:12,name:"1",icon:"looks_one"},{size:6,name:"1/2",icon:"looks_two"},{size:4,name:"1/3",icon:"looks_3"},{size:8,name:"2/3",icon:"looks_3"},{size:3,name:"1/4",icon:"looks_4"},{size:9,name:"3/4",icon:"looks_4"},{size:2,name:"1/6",icon:"looks_6"}],M=class{constructor(e={}){this.tasticId=e.tasticId||I(),this.tasticType=e.tasticType,this.configuration=e.configuration||{};let t=[{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string"},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0},{label:"Anchor",field:"tasticId",type:"string",translatable:!1,disabled:!0,default:"#"+this.tasticId}]}];if(e.schema)for(let i=0;i<e.schema.length;++i)t.push(e.schema[i]);this.schema=new u(t,this.configuration)}export(){return{tasticId:this.tasticId,tasticType:this.tasticType,configuration:this.schema.getConfiguration()}}},A=class{constructor(e={}){if(this.cellId=e.cellId||I(),this.configuration=e.configuration||{},this.customConfiguration=e.customConfiguration||{},this.schema=new u([{name:"General settings",folded:!0,fields:[{label:"Name",field:"name",type:"string",translatable:!0},{label:"Layout element width",field:"size",type:"enum",values:R&&R.map((e=>({name:e.name,value:e.size}))),default:12},{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]}],this.configuration),this.tastics=[],e.tastics&&e.tastics.length)for(let t=0;t<e.tastics.length;++t)this.tastics.push(new M(e.tastics[t]))}addTastic(e,t={},i=[],n=0){const s=new M({tasticType:e,configuration:t,schema:i});return this.tastics.splice(n,0,s),s}getTastic(e){for(let t of this.tastics)if(t.tasticId===e)return t;throw new Error("Could not find component with ID "+e)}getTasticCount(){return this.tastics.length}export(){return{cellId:this.cellId,configuration:this.schema.getConfiguration(),customConfiguration:this.customConfiguration,tastics:this.tastics.map((e=>e.export()))}}},P=class{constructor(e){if(!e.kitDefinitionId)throw new Error("Missing kitDefinitionId in "+JSON.stringify(e));this.kitDefinitionId=e.kitDefinitionId,this.kitId=e.kitId||I(),this.configuration=e.configuration||{}}export(){return{kitId:this.kitId,kitDefinitionId:this.kitDefinitionId,configuration:this.configuration}}},_=class{constructor(e={}){if(this.regionId=e.regionId||I(),this.configuration=e.configuration||{},this.schema=new u([{name:"Responsive",folded:!0,fields:[{label:"Show on mobile",field:"mobile",type:"boolean",default:!0},{label:"Show on tablet",field:"tablet",type:"boolean",default:!0},{label:"Show on desktop",field:"desktop",type:"boolean",default:!0}]},{name:"Layout",fields:[{label:"Cell direction",field:"flexDirection",type:"enum",default:"row",values:[{value:"row",name:"Row"},{value:"column",name:"Column"},{value:"row-reverse",name:"Row (reversed)"},{value:"column-reverse",name:"Column (reversed)"}]},{label:"Cell wrapping",field:"flexWrap",type:"enum",default:"wrap",values:[{value:"nowrap",name:"No wrapping"},{value:"wrap",name:"Wrap cells"}]},{label:"Justify cells",field:"justifyContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center Cells"},{value:"space-between",name:"Space between cells"},{value:"space-around",name:"Space around cells"},{value:"space-even",name:"Evenly spaced cells"}]},{label:"Cell alignment",field:"alignItems",type:"enum",default:"stretch",values:[{value:"flex-start",name:"Align to start"},{value:"flex-end",name:"Align to end"},{value:"center",name:"Center cells"},{value:"stretch",name:"Stretch cells"},{value:"baseline",name:"Align to baseline"}]},{label:"Align multiple cell rows",field:"alignContent",type:"enum",default:"space-between",values:[{value:"flex-start",name:"Put at beginning"},{value:"flex-end",name:"Put at end"},{value:"center",name:"Center rows"},{value:"stretch",name:"Stretch rows"},{value:"space-between",name:"Space between rows"},{value:"space-around",name:"Space around rows"}]}]}],this.configuration),this.elements=[],e.elements&&e.elements.length)for(let t=0;t<e.elements.length;++t)this.addElement(e.elements[t])}addElement(e){if(e.cellId)return this.addCell(e);if(e.kitId)return this.addKit(e);throw new TypeError("Unknown element type: "+JSON.stringify(e))}addCell(e){return this.elements.push(new A(e)),this.elements[this.elements.length-1]}addKit(e){return this.elements.push(new P(e)),this.elements[this.elements.length-1]}getElement(e){const t=Object.keys(e)[0],i=Object.values(e)[0];for(let e of this.elements)if(e[t]===i)return e;throw new Error("Could not find element with ID "+JSON.stringify(i))}getCells(){return this.elements.filter((e=>e instanceof A))}getKits(){return this.elements.filter((e=>e instanceof P))}export(){return{regionId:this.regionId,configuration:this.schema.getConfiguration(),elements:this.elements.map((e=>e.export()))}}},q=class{constructor(e={},t=[],i=[]){this.pageId=e.pageId||null,this.nodes=e.nodes||[],this.layoutId=e.layoutId||"three_rows",this.name=e.name||"Unnamed Page",this._type=e._type||"",this.regions={},this.tasticSchemas=(i||[]).map((e=>e.configurationSchema));for(let i=0;i<t.length;++i){let n=t[i];e.regions&&e.regions[n]&&e.regions[n].elements&&e.regions[n].elements.length&&(e.regions[n].elements=this.mapTastics(e.regions[n].elements)),this.createRegion(n,e.regions&&e.regions[n]||{})}}mapTastics(e){for(let t=0;t<e.length;++t){let i=e[t];if(i.cellId&&i.tastics&&i.tastics.length)for(let e=0;e<i.tastics.length;++e){let t=i.tastics[e];t.schema={schema:[]};for(let e of this.tasticSchemas)if(e.tasticType===t.tasticType){t.schema=e.schema;break}}}return e}createRegion(e,t){t.regionId=e,this.regions[e]=new _(t)}getRegion(e){if(!this.regions[e])throw new Error("Region with identifier "+e+" unknown.");return this.regions[e]}addCell(e,t={}){return this.getRegion(e).addCell({configuration:t})}duplicateCell(e,t){const i=this.addCell(e,t.configuration);return t.tastics.forEach(((t,n)=>{this.addTastic(e,i.cellId,t.tasticType,n,t.configuration)})),i}addKit(e,t){return this.getRegion(e).addKit(t)}findElement(e){const t=Object.keys(e)[0],i=Object.values(e)[0];for(let e in this.regions)for(let[n,s]of Object.entries(this.regions[e].elements))if(s[t]===i)return[e,+n];throw new Error("Could not find element with "+JSON.stringify(e))}hasElement(e){try{return!!this.findElement(e)}catch(e){return!1}}getElement(e){let[t,i]=this.findElement(e);return this.regions[t].elements[i]}removeElement(e){let[t,i]=this.findElement(e);this.regions[t].elements.splice(i,1)}moveElement(e,t){if(!this.regions[t.region])throw new Error("Unknown target region "+t.region);let[i,n]=this.findElement(e),s=this.regions[i].elements.splice(n,1)[0];this.regions[t.region].elements.splice(void 0===t.element?this.regions[t.region].elements.length:t.element-(i===t.region&&t.element>n?1:0),0,s)}addTastic(e,t,i,n,s={}){let o=null;for(let e of this.tasticSchemas)if(e.tasticType===i){o=e;break}return this.getRegion(e).getElement({cellId:t}).addTastic(i,s,o,n)}getTastics(){let e=[];return Object.values(this.regions).forEach((t=>{t.getCells().forEach((t=>{e=e.concat(t.tastics)}))})),e}findTastic(e){for(let t in this.regions)for(let i=0;i<this.regions[t].elements.length;++i)for(let n in this.regions[t].elements[i].tastics||[])if(this.regions[t].elements[i].tastics[n].tasticId===e)return[t,+i,+n];throw new Error("Could not find tastic with id "+e)}hasTastic(e){try{return!!this.findTastic(e)}catch(e){return!1}}getTastic(e){let[t,i,n]=this.findTastic(e);return this.regions[t].elements[i].tastics[n]}removeTastic(e){let[t,i,n]=this.findTastic(e);this.regions[t].elements[i].tastics.splice(n,1)}moveTastic(e,t){let[i,n,s]=this.findTastic(e),o=this.regions[i].elements[n].tastics.splice(s,1)[0],[r,a]=this.findElement({cellId:t.cell});this.regions[r].elements[a].tastics.splice(void 0===t.tasticDropPosition?this.regions[r].elements[a].tastics.length:t.tasticDropPosition-(i===r&&n===a&&t.tasticDropPosition>=s?1:0),0,o)}duplicateTastic(e,t){const[i,,n]=this.findTastic(e),s=this.getTastic(e);return this.addTastic(i,t,s.tasticType,n+1,s.configuration)}export(){let e={};for(let[t,i]of Object.entries(this.regions))e[t]=i.export();return{pageId:this.pageId,nodes:this.nodes,layoutId:this.layoutId,name:this.name,regions:e}}},z=(e,t,i,n)=>{n={resourceType:t,type:"upload",...n};let s=[];for(let[e,t]of Object.entries(n))switch(e){case"secure":case"resourceType":case"type":break;case"background":case"crop":case"fetch_format":case"gravity":case"height":case"quality":case"width":case"x":case"y":t&&s.push(e[0]+"_"+t);break;default:throw new Error("Unhandled image transformation "+e)}return s.sort(),`https://res.cloudinary.com/${i.cloudName}/${n.resourceType}/${n.type}/${s.join(",")}/${o=e,encodeURI(o).replace(/[?=]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}`;var o},H=class{constructor(){this.imageSizes=[16,32,64,128,256,512,1024,2048]}getImageDimensions(e,t,i,n=null,s=1){let o=this.getFloatRatio(e,n),r=t&&Math.round(+t*s),a=i&&Math.round(+i*s);return r&&n&&(a=Math.round(r*o)),a&&!r&&n&&(r=Math.round(a/o)),[r,a]}getFloatRatio(e=null,t=null){if(!t&&e&&e.width&&e.height)return e.height/e.width;const i=String(t).match(/([0-9]+):([0-9]+)/);return i?i[2]/i[1]:t}getImageLink(e,t,i,n,s,o={},r=1){let a=this.getMediaApi(t),[l,c]=this.getImageDimensions(e,i,n,s,r),d=l/c;if(["fill","pad"].includes(o.crop)){for(let e=0;e<this.imageSizes.length;++e)if(this.imageSizes[e]>=l){l=this.imageSizes[e];break}c=o.autoHeight?null:Math.ceil(l/d)}return"string"==typeof e?a.getFetchImageUrl(e,l,c,o):a.getImageUrl(e,l,c,o)}getMediaApi(e){if("cloudinary"===e.media.engine)return new class{constructor(e){this.configuration={cloudName:e.cloudName}}getImageUrl(e,t,i,n={}){return z(e.mediaId,"string"==typeof e.resourceType&&""!==e.resourceType?e.resourceType:"image",this.configuration,{fetch_format:e.format&&"svg"===e.format?void 0:"auto",width:t,height:i,secure:!0,...this.getQuality(n),...this.getFetchFormat(n),...this.getGravityOptions(n),...this.cropOptions(n)})}getFetchImageUrl(e,t,i,n={}){return e.startsWith("//")&&(e="https:"+e),z(e,"image",this.configuration,{fetch_format:"auto",type:"fetch",width:t,height:i,secure:!0,...this.getQuality(n),...this.getFetchFormat(n),...this.getGravityOptions(n),...this.cropOptions(n)})}getImageUrlWithoutDefaults(e,t,i,n={}){return z(e.mediaId,"string"==typeof e.resourceType&&""!==e.resourceType?e.resourceType:"image",this.configuration,{width:t,height:i,...n})}getGravityOptions(e){if(e.crop)return{};let t={gravity:"faces:auto"};return e.gravity&&(t.gravity="custom"===e.gravity.mode?"xy_center":e.gravity.mode,e.gravity.coordinates&&(t.x=e.gravity.coordinates.x,t.y=e.gravity.coordinates.y)),t}cropOptions(e){let t={crop:"fill"};return e.crop&&(t.crop=e.crop),e.background&&(t.background=e.background),t}getQuality(e){let t={quality:"auto"};return e.quality&&(t.quality=e.quality),t}getFetchFormat(e){let t={};return e.fetch_format&&(t.fetch_format=e.fetch_format),e.fetchFormat&&(t.fetch_format=e.fetchFormat),t}}(e.media);throw new Error("No valid media API found.")}static getElementDimensions(e){let t=0;if(getComputedStyle){let i=getComputedStyle(e);t+=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)}return{width:e.clientWidth-t,height:e.clientHeight}}},L=JSON.parse('{"schema":[{"name":"Value Order","fields":[{"label":"Strip Label Prefix","field":"stripLabelPrefix","type":"boolean","default":false},{"label":"Sort Order","field":"sortOrder","type":"enum","values":[{"value":"sort-undefined","name":"Undefined"},{"value":"sort-ascending","name":"Ascending"},{"value":"sort-descending","name":"Descending"}],"default":"sort-undefined"}]}]}'),W={enum:L,localizedEnum:L},$=(e,t)=>Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e)))),B=(e,t=null)=>{"undefined"!=typeof PRODUCTION&&PRODUCTION||"undefined"==typeof window||!window||!window.document||console.info("%c🗑 %cDeprecation Notice: %s %s","color: gray","color: orange",t?"["+(t.displayName||t.constructor.name)+"]":"",e)},J=(e,t,i=!1)=>{let n=!1;return function(){let s=this,o=arguments,r=i&&!n;clearTimeout(n),n=setTimeout((function(){n=null,i||e.apply(s,o)}),t),r&&e.apply(s,o)}},V=(e,t)=>{let i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout((function(){i=!1}),t))}},K=class{constructor(e,t={}){if(this.context={customer:"demo",idDebug:!1,endpoint:"preview",...e},this.messageHandlers=t,!this.context.previewId)throw new Error("context.previewId is required");this.webSocket=null,this.connected=!1,this.connectionFails=0,this.connect()}connect(){this.webSocket=new WebSocket((this.context.isDebug?"ws://":"wss://")+`${this.context.customer}.frontastic.io`+(this.context.isDebug?".local":"")+`:8080/ws?${this.context.endpoint}=${this.context.previewId}`),this.webSocket.onmessage=this.handleMessage.bind(this),this.webSocket.onopen=()=>{this.connectionFails=0,this.connected=!0},this.webSocket.onclose=()=>{this.webSocket=null,this.connected=!1,setTimeout(this.connect.bind(this),1e3*Math.min(++this.connectionFails,30))}}handleMessage(e){let t=JSON.parse(e.data);if("Ping"!==t.Name)return this.messageHandlers[t.Name]?this.messageHandlers[t.Name](t.Payload,t):void console.info("Unknown WebSocket message",t)}sendMessage(e,t=!1){if(e.Channel=this.context.previewId,e.Payload=e.Payload||[],this.connected)return this.webSocket.send(JSON.stringify(e));t&&setTimeout((()=>{this.sendMessage(e,!0)}),100)}close(){this.webSocket.onclose=()=>{},this.webSocket.close()}};return t})()));
|