builder-settings-types 0.0.147 → 0.0.149
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let R=(c=21)=>{let t="",e=crypto.getRandomValues(new Uint8Array(c|=0));for(;c--;)t+=$[e[c]&63];return t};function S(c){if(c===null||typeof c!="object")return c;if(c instanceof Date)return new Date(c.getTime());if(Array.isArray(c)){const i=[];for(let s=0;s<c.length;s++)i[s]=S(c[s]);return i}const t={};for(const i in c)Object.prototype.hasOwnProperty.call(c,i)&&(t[i]=S(c[i]));const e=Object.getPrototypeOf(c);return e!==Object.prototype&&Object.setPrototypeOf(t,e),t}function j(c){switch(c){case"number":return 0;case"text":return"";case"select":return null;case"color":return"#000000";case"date":return new Date().toISOString().split("T")[0];case"button":return"";default:return""}}class m{constructor(t={}){this.props=t,this.id=t.id||R(),this.value=this.props.default,this.desktop=this.props.default,this.title=t.title||""}destroy(){throw new Error("Method not implemented.")}setOnChange(t){return this.onChange=t,this}setValue(t){this.value=t,this.inputEl&&(this.inputEl.value=String(t)),this.onChange&&this.onChange(t),this.props.detectChange&&this.props.detectChange(t)}clone(){const t=this.constructor,e=S(this.props),i=new t(e);return i.value=S(this.value),i}createInput(t){t={...this.props.inputProps,...t};const e=document.createElement("div");if(e.className=t.wrapperClassName||"",t.title||t.icon){const a=document.createElement("div");if(a.className="icon-container",t.icon){const o=this.createIcon(t.icon,t.iconClassName);a.appendChild(o)}if(t.title){const o=this.createLabel(t.title,t.labelClassName);a.appendChild(o)}e.appendChild(a)}const i=document.createElement("div");i.className=t.wrapperClassName||"";const s=document.createElement("input");this.inputEl=s,s.value=String(t.value||j(t.inputType)),s.type=t.inputType,s.placeholder=t.placeholder||"",s.className=t.inputClassName||"";const n=a=>{const o=a.target;let l=o.value;switch(t.inputType){case"number":l=Number(o.value);break;case"color":l=o.value;break;case"date":l=o.value;break;case"select":l=o.value;break;case"text":l=o.value;break;case"button":l=o.value;break;default:l=o.value}this.value=l,this.onChange&&this.onChange(this.value),this.props.detectChange&&this.props.detectChange(this.value)};return s.addEventListener("input",n),s.addEventListener("change",n),t.inputCustomizer&&t.inputCustomizer(s),i.appendChild(s),e.appendChild(i),e}createLabel(t,e){const i=document.createElement("span");return i.textContent=t,i.className="input-label "+(e||""),i}createIcon(t,e){const i=document.createElement("span");return i.className="input-icon "+(e||""),i.innerHTML=t,i}}function V(c,t){for(const e in c)if(c.hasOwnProperty(e)){const i=c[e];t(e,i)}}const E=class E{constructor(t){this.elementRef=null,this.isHidden=!1,this.custom=!1,this.initialValues={},this.changeTimeout=null,this.isHandlingChange=!1,this.changeHandlers=new Set,this.blurTimeout=null,this.lastValues={},this.lastChangeTime=0,this.CHANGE_DEBOUNCE=100,this.handleBlur=()=>{},this.pendingBlurHandler=null,this.hasFocus=!1,this.focusTrackingEnabled=!1,this.handleFocus=()=>{},this.blurDebounceTime=100,this.lastBlurTime=0,this.isProcessingBlur=!1,this.isInteracting=!1,this.interactionStartTime=0,this.modifiedSettings=new Set,this.handleInteractionStart=e=>{this.isInteracting||(this.isInteracting=!0,this.interactionStartTime=Date.now(),this.modifiedSettings.clear(),console.log(`[${this.title}] Setting interaction started`))},this.id=t.id||R(),this.title=t.title,this.settings=t.settings,this.description=t.description,this.icon=t.icon,this.isCollapsed=t.collapsed??!1,this.isMain=t.main??!1,this.custom=t.custom??!1,this.hideCondition=t.hideCondition,this.onBlur=t.onBlur,this.blurDebounceTime=t.blurDebounceTime??100,Object.assign(this,t.settings),this.initialValues=this.getValues()}static hide(){this.hiddenElements.forEach(t=>{t&&(t.style.display="none")})}static show(){this.hiddenElements.forEach(t=>{t&&(t.style.display="")})}setOnChange(t){this.onChange=t;const e=()=>{this.isHandlingChange||(this.isHandlingChange=!0,this.changeTimeout&&clearTimeout(this.changeTimeout),this.changeTimeout=setTimeout(()=>{const i=this.getValues(),s=this.calculateChanges(this.initialValues,i);if(Object.keys(s).length>0){this.lastChangeTime=Date.now();for(const n of Object.keys(s))this.modifiedSettings.add(n);this.initialValues=i,t(i),this.updateVisibility()}this.isHandlingChange=!1},50))};return this.changeHandlers.clear(),V(this.settings,(i,s)=>{var n;if(s instanceof E)s.setOnChange(a=>{const o=this.getValues();this.initialValues=o,t(o)}),this.changeHandlers.add(()=>t(this.getValues()));else if(s instanceof m){const a=()=>e();this.changeHandlers.add(a),s.setOnChange(a)}else{const a=()=>{e()};this.changeHandlers.add(a),(n=s.setOnChange)==null||n.call(s,a)}}),this}setOnBlur(t,e){return this.onBlur=t,this.pendingBlurHandler=t,this.focusTrackingEnabled=!0,e!==void 0&&(this.blurDebounceTime=e),this.handleBlur=i=>{if((i==null?void 0:i.target)instanceof HTMLElement){const s=i.relatedTarget;if(s&&this.elementRef&&this.elementRef.contains(s))return}this.blurTimeout&&clearTimeout(this.blurTimeout),this.blurTimeout=setTimeout(()=>{this.saveChangesImmediately();const s=this.getValues();this.onBlur&&this.onBlur(s)},this.blurDebounceTime)},this.elementRef&&this.setupFocusHandlers(),this}hasFocusWithin(){if(!this.elementRef)return!1;const t=document.activeElement;return this.elementRef.contains(t)||this.hasFocus}setupFocusHandlers(){if(!this.elementRef||!this.focusTrackingEnabled)return;this.elementRef.removeEventListener("focusout",this.handleBlur),this.elementRef.addEventListener("focusout",this.handleBlur);const t=this.elementRef.closest("form");t&&(t.removeEventListener("submit",this.handleBlur),t.addEventListener("submit",this.handleBlur)),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.elementRef&&document.activeElement&&this.elementRef.contains(document.activeElement)&&this.handleBlur()})}cleanup(){if(this.changeTimeout&&(clearTimeout(this.changeTimeout),this.changeTimeout=null),this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.elementRef){this.elementRef.removeEventListener("focusout",this.handleBlur);const t=this.elementRef.closest("form");t&&t.removeEventListener("submit",this.handleBlur)}document.removeEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.elementRef&&document.activeElement&&this.elementRef.contains(document.activeElement)&&this.handleBlur()}),V(this.settings,(t,e)=>{typeof e.cleanup=="function"&&e.cleanup()}),this.changeHandlers.clear()}clone(){const t={};V(this.settings,(n,a)=>{typeof a.clone=="function"?t[n]=a.clone():(console.warn(`Setting with key '${n}' does not have a clone method. Copying reference.`),t[n]=a)});const e={title:this.title,settings:t,description:this.description,icon:this.icon,collapsed:this.isCollapsed,main:this.isMain,custom:this.custom,hideCondition:this.hideCondition},i=this.constructor,s=new i(e);return s.initialValues=this.getValues(),s}calculateChanges(t,e){const i={};return new Set([...Object.keys(t),...Object.keys(e)]).forEach(n=>{const a=t[n],o=e[n];JSON.stringify(a)!==JSON.stringify(o)&&(i[n]={from:a,to:o})}),i}hide(){this.elementRef&&(this.elementRef.style.display="none",this.isHidden=!0)}show(){this.elementRef&&(this.elementRef.style.display="",this.isHidden=!1)}getValues(t){if(t===void 0){const e={};for(const i in this.settings)if(this.settings.hasOwnProperty(i)){const s=this.settings[i];s instanceof E?e[i]=s.getValues():e[i]=s.value}return e}else{const e=this.settings[t];return e?(this.isInteracting&&this.modifiedSettings.add(t),e instanceof E?e.getValues():e.value):void 0}}draw(){const t=document.createElement("div");t.className="setting-group",t.id=`setting-group-${this.id}`,E.hiddenElements.add(t),this.hideCondition&&this.hideCondition()&&(t.style.display="none"),this.isMain&&t.classList.add("main-group");const e=document.createElement("div");e.className="setting-group-title",this.isCollapsed&&e.classList.add("collapsed-view"),e.setAttribute("role","button"),e.setAttribute("aria-expanded",(!this.isCollapsed).toString()),e.setAttribute("tabindex","0");const i=document.createElement("div");if(i.className="title-section",this.icon){const r=document.createElement("span");r.className="group-icon",r.innerHTML=this.icon,i.appendChild(r)}this.custom&&t.classList.add("custom_class");const s=document.createElement("h3");s.textContent=this.title,i.appendChild(s);const n=document.createElement("div");if(n.className="actions-section",this.description&&this.isCollapsed){const r=document.createElement("span");r.className="info-marker",r.innerHTML=`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let R=(c=21)=>{let t="",e=crypto.getRandomValues(new Uint8Array(c|=0));for(;c--;)t+=$[e[c]&63];return t};function S(c){if(c===null||typeof c!="object")return c;if(c instanceof Date)return new Date(c.getTime());if(Array.isArray(c)){const i=[];for(let s=0;s<c.length;s++)i[s]=S(c[s]);return i}const t={};for(const i in c)Object.prototype.hasOwnProperty.call(c,i)&&(t[i]=S(c[i]));const e=Object.getPrototypeOf(c);return e!==Object.prototype&&Object.setPrototypeOf(t,e),t}function j(c){switch(c){case"number":return 0;case"text":return"";case"select":return null;case"color":return"#000000";case"date":return new Date().toISOString().split("T")[0];case"button":return"";default:return""}}class m{constructor(t={}){this.props=t,this.id=t.id||R(),this.value=this.props.default,this.desktop=this.props.default,this.title=t.title||""}destroy(){throw new Error("Method not implemented.")}setOnChange(t){return this.onChange=t,this}setValue(t){this.value=t,this.inputEl&&(this.inputEl.value=String(t)),this.onChange&&this.onChange(t),this.props.detectChange&&this.props.detectChange(t)}clone(){const t=this.constructor,e=S(this.props),i=new t(e);return i.value=S(this.value),i}createInput(t){t={...this.props.inputProps,...t};const e=document.createElement("div");if(e.className=t.wrapperClassName||"",t.title||t.icon){const a=document.createElement("div");if(a.className="icon-container",t.icon){const o=this.createIcon(t.icon,t.iconClassName);a.appendChild(o)}if(t.title){const o=this.createLabel(t.title,t.labelClassName);a.appendChild(o)}e.appendChild(a)}const i=document.createElement("div");i.className=t.wrapperClassName||"";const s=document.createElement("input");this.inputEl=s,s.value=String(t.value||j(t.inputType)),s.type=t.inputType,s.placeholder=t.placeholder||"",s.className=t.inputClassName||"";const n=a=>{const o=a.target;let l=o.value;switch(t.inputType){case"number":l=Number(o.value);break;case"color":l=o.value;break;case"date":l=o.value;break;case"select":l=o.value;break;case"text":l=o.value;break;case"button":l=o.value;break;default:l=o.value}this.value=l,this.onChange&&this.onChange(this.value),this.props.detectChange&&this.props.detectChange(this.value)};return s.addEventListener("input",n),s.addEventListener("change",n),t.inputCustomizer&&t.inputCustomizer(s),i.appendChild(s),e.appendChild(i),e}createLabel(t,e){const i=document.createElement("span");return i.textContent=t,i.className="input-label "+(e||""),i}createIcon(t,e){const i=document.createElement("span");return i.className="input-icon "+(e||""),i.innerHTML=t,i}}function T(c,t){for(const e in c)if(c.hasOwnProperty(e)){const i=c[e];t(e,i)}}const x=class x{constructor(t){this.elementRef=null,this.isHidden=!1,this.custom=!1,this.initialValues={},this.changeTimeout=null,this.isHandlingChange=!1,this.changeHandlers=new Set,this.blurTimeout=null,this.lastValues={},this.lastChangeTime=0,this.CHANGE_DEBOUNCE=100,this.handleBlur=()=>{},this.pendingBlurHandler=null,this.hasFocus=!1,this.focusTrackingEnabled=!1,this.handleFocus=()=>{},this.blurDebounceTime=100,this.lastBlurTime=0,this.isProcessingBlur=!1,this.isInteracting=!1,this.interactionStartTime=0,this.modifiedSettings=new Set,this.activeSettingId=null,this.hasValueChanged=!1,this.handleInteractionStart=e=>{this.isInteracting||(this.isInteracting=!0,this.interactionStartTime=Date.now(),this.modifiedSettings.clear(),console.log(`[${this.title}] Setting interaction started`))},this.handleChange=e=>{if(e.target instanceof HTMLElement){this.hasValueChanged=!0;const i=e.target.closest("[data-setting-id]");if(i){const s=i.getAttribute("data-setting-id");typeof s=="string"&&(this.activeSettingId=s)}}},typeof t.id=="string"&&t.id.trim()!==""?this.id=t.id.trim():this.id=R(),typeof t.title=="string"?this.title=t.title:(this.title="Untitled Setting Group",console.warn(`SettingGroup constructor: Invalid title provided, defaulting to '${this.title}'.`,t)),this.settings=t.settings,typeof t.description=="string"?this.description=t.description:t.description===null||t.description===void 0?this.description=void 0:(this.description=String(t.description),console.warn("SettingGroup constructor: Invalid description type, coercing to string.",t)),this.icon=t.icon,this.isCollapsed=t.collapsed??!1,this.isMain=t.main??!1,this.custom=t.custom??!1,this.hideCondition=t.hideCondition,this.onBlur=t.onBlur,this.blurDebounceTime=t.blurDebounceTime??100,Object.assign(this,t.settings),this.initialValues=this.getValues()}static hide(){this.hiddenElements.forEach(t=>{t&&(t.style.display="none")})}static show(){this.hiddenElements.forEach(t=>{t&&(t.style.display="")})}setOnChange(t){this.onChange=t;const e=()=>{this.isHandlingChange||(this.isHandlingChange=!0,this.changeTimeout&&clearTimeout(this.changeTimeout),this.changeTimeout=setTimeout(()=>{const i=this.getValues(),s=this.calculateChanges(this.initialValues,i);Object.keys(s).length>0&&(this.hasValueChanged=!0,this.lastChangeTime=Date.now(),this.initialValues=i,t(i),this.updateVisibility()),this.isHandlingChange=!1},50))};return this.changeHandlers.clear(),T(this.settings,(i,s)=>{var n;if(s instanceof x)s.setOnChange(a=>{this.hasValueChanged=!0;const o=this.getValues();this.initialValues=o,t(o)}),this.changeHandlers.add(()=>t(this.getValues()));else if(s instanceof m){const a=()=>{this.hasValueChanged=!0,e()};this.changeHandlers.add(a),s.setOnChange(a)}else{const a=()=>{this.hasValueChanged=!0,e()};this.changeHandlers.add(a),(n=s.setOnChange)==null||n.call(s,a)}}),this}setOnBlur(t,e){return this.onBlur=t,this.pendingBlurHandler=t,this.focusTrackingEnabled=!0,e!==void 0&&(this.blurDebounceTime=e),this.handleBlur=i=>{if(!this.hasValueChanged&&!i)return;let n=null;if((i==null?void 0:i.target)instanceof HTMLElement){const a=i.target.closest("[data-setting-id]");if(a){const o=a.getAttribute("data-setting-id");typeof o=="string"&&(n=o)}}this.blurTimeout&&clearTimeout(this.blurTimeout),this.blurTimeout=setTimeout(()=>{try{this.saveChangesImmediately();const a=this.getValues();(this.activeSettingId===null&&n!==null||n===null&&this.activeSettingId!==null||this.activeSettingId!==n||this.hasValueChanged)&&this.onBlur&&(this.onBlur(a||{}),this.hasValueChanged=!1),this.activeSettingId=n}catch(a){console.error("Error in blur handler:",a),this.hasValueChanged=!1,this.activeSettingId=null}},this.blurDebounceTime)},this.elementRef&&this.setupFocusHandlers(),this}hasFocusWithin(){if(!this.elementRef)return!1;const t=document.activeElement;return this.elementRef.contains(t)||this.hasFocus}setupFocusHandlers(){if(!this.elementRef||!this.focusTrackingEnabled)return;this.elementRef.removeEventListener("focusout",this.handleBlur),this.elementRef.removeEventListener("change",this.handleChange),this.elementRef.removeEventListener("input",this.handleChange),this.elementRef.addEventListener("focusout",this.handleBlur),this.elementRef.addEventListener("change",this.handleChange),this.elementRef.addEventListener("input",this.handleChange);const t=this.elementRef.closest("form");t&&(t.removeEventListener("submit",this.handleBlur),t.addEventListener("submit",this.handleBlur)),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.elementRef&&document.activeElement&&this.elementRef.contains(document.activeElement)&&this.handleBlur()})}cleanup(){if(this.changeTimeout&&(clearTimeout(this.changeTimeout),this.changeTimeout=null),this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.elementRef){this.elementRef.removeEventListener("focusout",this.handleBlur),this.elementRef.removeEventListener("change",this.handleChange),this.elementRef.removeEventListener("input",this.handleChange);const t=this.elementRef.closest("form");t&&t.removeEventListener("submit",this.handleBlur)}document.removeEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.elementRef&&document.activeElement&&this.elementRef.contains(document.activeElement)&&this.handleBlur()}),T(this.settings,(t,e)=>{typeof e.cleanup=="function"&&e.cleanup()}),this.changeHandlers.clear(),this.activeSettingId=null,this.hasValueChanged=!1}clone(){const t={};T(this.settings,(n,a)=>{typeof a.clone=="function"?t[n]=a.clone():(console.warn(`Setting with key '${n}' does not have a clone method. Copying reference.`),t[n]=a)});const e={title:this.title,settings:t,description:this.description,icon:this.icon,collapsed:this.isCollapsed,main:this.isMain,custom:this.custom,hideCondition:this.hideCondition},i=this.constructor,s=new i(e);return s.initialValues=this.getValues(),s}calculateChanges(t,e){const i={};return new Set([...Object.keys(t),...Object.keys(e)]).forEach(n=>{const a=t[n],o=e[n];JSON.stringify(a)!==JSON.stringify(o)&&(i[n]={from:a,to:o})}),i}hide(){this.elementRef&&(this.elementRef.style.display="none",this.isHidden=!0)}show(){this.elementRef&&(this.elementRef.style.display="",this.isHidden=!1)}getValues(t){try{if(t===void 0){const e={};for(const i in this.settings)if(this.settings.hasOwnProperty(i)){const s=this.settings[i];if(!s)continue;s instanceof x?e[i]=s.getValues():typeof s.value<"u"&&(e[i]=s.value)}return e}else{const e=this.settings[t];return e?(this.isInteracting&&typeof t=="string"&&this.modifiedSettings.add(t),e instanceof x?e.getValues():typeof e.value<"u"?e.value:void 0):void 0}}catch(e){return console.error("Error in getValues:",e),{}}}draw(){const t=document.createElement("div");t.className="setting-group",t.id=`setting-group-${this.id}`,x.hiddenElements.add(t),this.hideCondition&&this.hideCondition()&&(t.style.display="none"),this.isMain&&t.classList.add("main-group");const e=document.createElement("div");e.className="setting-group-title",this.isCollapsed&&e.classList.add("collapsed-view"),e.setAttribute("role","button"),e.setAttribute("aria-expanded",(!this.isCollapsed).toString()),e.setAttribute("tabindex","0");const i=document.createElement("div");if(i.className="title-section",this.icon){const r=document.createElement("span");r.className="group-icon",r.innerHTML=this.icon,i.appendChild(r)}this.custom&&t.classList.add("custom_class");const s=document.createElement("h3");s.textContent=this.title,i.appendChild(s);const n=document.createElement("div");if(n.className="actions-section",this.description&&this.isCollapsed){const r=document.createElement("span");r.className="info-marker",r.innerHTML=`
|
|
2
2
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
3
|
<path d="M8 5.33333V8M8 10.6667H8.00667M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z"
|
|
4
4
|
stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<path d="M8 5.33333V8M8 10.6667H8.00667M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z"
|
|
13
13
|
stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
14
14
|
</svg>
|
|
15
|
-
`,d.title=this.description,n.insertBefore(d,a)}}else{if(!r){const d=document.createElement("div");d.className="setting-group-description",d.textContent=this.description,o.insertBefore(d,o.firstChild)}u&&u.remove()}};if(e.onclick=l,e.onkeydown=r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),l())},Object.keys(this.settings).length>0){for(const r in this.settings)if(this.settings.hasOwnProperty(r)){const u=this.settings[r];o.appendChild(u.draw())}}else{const r=document.createElement("div");r.className="setting-group-empty",r.textContent="No settings in this group",o.appendChild(r)}return e.appendChild(i),e.appendChild(n),t.appendChild(e),t.appendChild(o),this.elementRef=t,this.pendingBlurHandler&&(this.setupFocusHandlers(),this.pendingBlurHandler=null),t}collapse(){if(!this.elementRef||this.isCollapsed)return;const t=this.elementRef.querySelector(".setting-group-content"),e=this.elementRef.querySelector(".setting-group-arrow"),i=this.elementRef.querySelector(".setting-group-title");t&&e&&i&&(this.isCollapsed=!0,t.classList.add("collapsed"),e.classList.add("rotated"),i.setAttribute("aria-expanded","false"))}expand(){if(!this.elementRef||!this.isCollapsed)return;const t=this.elementRef.querySelector(".setting-group-content"),e=this.elementRef.querySelector(".setting-group-arrow"),i=this.elementRef.querySelector(".setting-group-title");t&&e&&i&&(this.isCollapsed=!1,t.classList.remove("collapsed"),e.classList.remove("rotated"),i.setAttribute("aria-expanded","true"))}updateVisibility(){this.elementRef&&this.hideCondition&&(this.elementRef.style.display=this.hideCondition()?"none":"")}toggle(){this.isHidden?this.show():this.hide()}saveChangesImmediately(){if(!this.onChange)return;this.changeTimeout&&(clearTimeout(this.changeTimeout),this.changeTimeout=null);const t=this.getValues(),e=this.calculateChanges(this.initialValues,t);Object.keys(e).length>0&&(this.initialValues=t,this.onChange(t),this.updateVisibility())}};
|
|
15
|
+
`,d.title=this.description,n.insertBefore(d,a)}}else{if(!r){const d=document.createElement("div");d.className="setting-group-description",d.textContent=this.description,o.insertBefore(d,o.firstChild)}u&&u.remove()}};if(e.onclick=l,e.onkeydown=r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),l())},Object.keys(this.settings).length>0){for(const r in this.settings)if(this.settings.hasOwnProperty(r)){const u=this.settings[r];o.appendChild(u.draw())}}else{const r=document.createElement("div");r.className="setting-group-empty",r.textContent="No settings in this group",o.appendChild(r)}return e.appendChild(i),e.appendChild(n),t.appendChild(e),t.appendChild(o),this.elementRef=t,this.pendingBlurHandler&&(this.setupFocusHandlers(),this.pendingBlurHandler=null),t}collapse(){if(!this.elementRef||this.isCollapsed)return;const t=this.elementRef.querySelector(".setting-group-content"),e=this.elementRef.querySelector(".setting-group-arrow"),i=this.elementRef.querySelector(".setting-group-title");t&&e&&i&&(this.isCollapsed=!0,t.classList.add("collapsed"),e.classList.add("rotated"),i.setAttribute("aria-expanded","false"))}expand(){if(!this.elementRef||!this.isCollapsed)return;const t=this.elementRef.querySelector(".setting-group-content"),e=this.elementRef.querySelector(".setting-group-arrow"),i=this.elementRef.querySelector(".setting-group-title");t&&e&&i&&(this.isCollapsed=!1,t.classList.remove("collapsed"),e.classList.remove("rotated"),i.setAttribute("aria-expanded","true"))}updateVisibility(){this.elementRef&&this.hideCondition&&(this.elementRef.style.display=this.hideCondition()?"none":"")}toggle(){this.isHidden?this.show():this.hide()}saveChangesImmediately(){if(!this.onChange)return;this.changeTimeout&&(clearTimeout(this.changeTimeout),this.changeTimeout=null);const t=this.getValues(),e=this.calculateChanges(this.initialValues,t);Object.keys(e).length>0&&(this.initialValues=t,this.onChange(t),this.updateVisibility())}};x.hiddenElements=new Set;let f=x;class M extends m{constructor(t={}){super(t),this.inputType="text",t.onChange&&this.setOnChange(t.onChange)}draw(){const t=e=>{this.props.maxLength!==void 0&&(e.maxLength=this.props.maxLength),this.props.className&&e.classList.add(this.props.className)};return this.createInput({value:this.value,inputType:this.inputType,title:this.props.title,placeholder:this.props.placeholder,icon:this.props.icon,inputClassName:"string-setting-input "+(this.props.inputClassName||""),wrapperClassName:"string-setting-wrapper "+(this.props.wrapperClassName||""),inputCustomizer:t})}}const B="<svg xmlns='http://www.w3.org/2000/svg' width='18' height='19' viewBox='0 0 18 19' fill='none'><path d='M8.99999 15.8542C9.79613 16.5667 10.8475 17 12 17C14.4853 17 16.5 14.9853 16.5 12.5C16.5 10.4248 15.0953 8.67769 13.1849 8.15763M4.81513 8.15762C2.9047 8.67768 1.5 10.4248 1.5 12.5C1.5 14.9853 3.51472 17 6 17C8.48528 17 10.5 14.9853 10.5 12.5C10.5 11.9146 10.3882 11.3554 10.1849 10.8424M13.5 6.5C13.5 8.98528 11.4853 11 9 11C6.51472 11 4.5 8.98528 4.5 6.5C4.5 4.01472 6.51472 2 9 2C11.4853 2 13.5 4.01472 13.5 6.5Z' stroke='#667085' stroke-linecap='round' stroke-linejoin='round'/></svg>";class H extends M{constructor(t){super({...t,icon:t.icon||B,title:t.title||"Color"}),this.inputType="color",this.detectChange=t.detectChange}hexToRgb(t){t=t.replace("#","");const e=parseInt(t.substring(0,2),16),i=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16);return`${e}, ${i}, ${s}`}rgbToHex(t){const[e,i,s]=t.split(",").map(a=>parseInt(a.trim()));if(isNaN(e)||isNaN(i)||isNaN(s))return"#000000";const n=a=>{const o=a.toString(16);return o.length===1?"0"+o:o};return`#${n(e)}${n(i)}${n(s)}`}draw(){const t=document.createElement("div");t.className="color-setting-wrapper";const e=document.createElement("div");e.className="icon-container";const i=this.createIcon(this.props.icon||B),s=this.createLabel(this.title||"Color");e.appendChild(i),e.appendChild(s);const n=document.createElement("div");n.className="color-input-wrapper";const a=d=>{const g=d.value.split(",").map(I=>parseInt(I.trim()));if(g.length!==3||g.some(isNaN))return d.style.border="1px solid red",!1;const[p,C,v]=g,y=p>=0&&p<=255&&C>=0&&C<=255&&v>=0&&v<=255;return d.style.border=y?"":"1px solid red",y},o=document.createElement("div");o.className="color-preview",o.style.backgroundColor=this.value?`rgb(${this.value})`:"";const l=this.createInput({value:this.value,inputType:"text",inputClassName:"color-text-input"}),h=l.querySelector("input");h.readOnly=!0;const r=this.createInput({value:this.value?this.rgbToHex(this.value):"",inputType:this.inputType,inputClassName:"color-picker"}),u=r.querySelector("input");return h.oninput=d=>{var p;let g=d.target.value.trim();a(h)&&(this.value=g,(p=this.onChange)==null||p.call(this,g),u.value=this.rgbToHex(g),o.style.backgroundColor=`rgb(${g})`)},u.oninput=d=>{var C,v;const g=d.target.value,p=this.hexToRgb(g);this.value=p,(C=this.onChange)==null||C.call(this,p),(v=this.detectChange)==null||v.call(this,p),h.value=p,o.style.backgroundColor=`rgb(${p})`},u.onchange=d=>{var C,v;const g=d.target.value,p=this.hexToRgb(g);this.value=p,(C=this.onChange)==null||C.call(this,p),(v=this.detectChange)==null||v.call(this,p),h.value=p,o.style.backgroundColor=`rgb(${p})`},n.appendChild(o),n.appendChild(r),n.appendChild(l),t.appendChild(e),t.appendChild(n),this.value&&(h.value=this.value,u.value=this.rgbToHex(this.value),o.style.backgroundColor=`rgb(${this.value})`),t}}class b extends m{constructor(t){super(t),this.inputType="number",this.inputElement=null,this.mobileValue=t.mobile,this.validateProps(),this.value=this.validateValue(this.value)}draw(){const t=s=>{this.props.minValue!==void 0&&(s.min=String(this.props.minValue)),this.props.maxValue!==void 0&&(s.max=String(this.props.maxValue)),this.props.className&&s.classList.add(this.props.className),s.addEventListener("input",()=>{const n=this.props.minValue??Number.MIN_SAFE_INTEGER,a=this.props.maxValue??Number.MAX_SAFE_INTEGER;let o=Number(s.value);o<n&&(o=n),o>a&&(o=a),String(o)!==s.value&&(s.value=String(o)),this.setValue(o)}),s.addEventListener("blur",()=>{var a,o;const n=this.validateValue(Number(s.value));n!==Number(s.value)&&(s.value=String(n),this.setValue(n)),(o=(a=this.props).onBlur)==null||o.call(a)})},e=this.createInput({value:this.value,inputType:this.inputType,title:this.props.title,icon:this.props.icon,inputClassName:"number-setting-input "+(this.props.inputClassName||""),wrapperClassName:"number-setting-wrapper "+(this.props.wrapperClassName||""),inputCustomizer:t});if(this.inputElement=e.querySelector("input.number-setting-input"),!this.props.suffix||this.props.suffix==="none")return e;e.classList.add("suffix-wrapper"),this.inputElement&&(this.inputElement.style.paddingRight="35px");const i=document.createElement("span");return i.className="suffix-label",i.textContent=this.props.suffix,e.appendChild(i),e}setValue(t){const e=this.validateValue(t);super.setValue(e),this.inputElement&&this.inputElement.value!==String(e)&&(this.inputElement.value=String(e??""))}validateValue(t){(t==null||isNaN(t))&&(t=this.props.default??0);const e=this.props.minValue??Number.MIN_SAFE_INTEGER,i=this.props.maxValue??Number.MAX_SAFE_INTEGER;let s=Number(t);return s<e&&(s=e),s>i&&(s=i),s}getMobileValue(){return this.mobileValue}setMobileValue(t){this.mobileValue=t}validateProps(){this.props.minValue!==void 0&&(this.props.default??0)<this.props.minValue&&console.warn(`Default value ${this.props.default} is less than minValue ${this.props.minValue}`),this.props.maxValue!==void 0&&(this.props.default??0)>this.props.maxValue&&console.warn(`Default value ${this.props.default} is greater than maxValue ${this.props.maxValue}`)}}const W=`
|
|
16
16
|
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
|
|
17
17
|
<path d="M9 17C13.4183 17 17 13.4183 17 9C17 4.58172 13.4183 1 9 1C4.58172 1 1 4.58172 1 9C1 13.4183 4.58172 17 9 17Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
18
18
|
<path d="M9 1V17C4.58172 17 1 13.4183 1 9C1 4.58172 4.58172 1 9 1Z" fill="#667085" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
}
|
|
91
91
|
`,document.head.appendChild(l)}return i.appendChild(s),i.appendChild(n),t.appendChild(i),t}setDetectChange(t){this.detectChangeCallback=t}}const et=`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
92
92
|
<path d="M13.3334 5.99996H2.66675M13.3334 9.99996H2.66675M5.33341 12.6666V3.33329M10.6667 12.6666V3.33329" stroke="#667085" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
93
|
-
</svg>`;class it extends m{constructor(t={}){t.rowGap=t.rowGap??!0,t.columnGap=t.columnGap??!0,t.title=t.title??"Gap",t.icon=t.icon??et,t.suffix=t.suffix??"px",t.minValue=t.minValue??0,super(t),this.inputType="number",this.inputValues={},this.mobileValue=t.mobile,this.value=this.validateValue(t.default??0),t.rowGap&&(this.inputValues.row=this.value),t.columnGap&&(this.inputValues.column=this.value)}draw(){const t=document.createElement("div");t.className=`setting-container ${this.props.className||""}`,t.id=this.id;const e=document.createElement("div");e.className="setting-label-input-wrapper";const i=document.createElement("label");i.className="setting-label",i.setAttribute("for",this.id+"-input");const s=document.createElement("span");if(s.textContent=this.props.title??"Gap",i.appendChild(s),this.props.icon){const o=document.createElement("span");o.className="setting-icon",o.innerHTML=this.props.icon,i.insertBefore(o,s)}const n=document.createElement("div");n.className=`setting-input-wrapper ${this.props.wrapperClassName||""}`,n.classList.add("gap-setting-wrapper");const a=document.createElement("div");return a.className="gap-inputs-container",this.props.rowGap&&a.appendChild(this.createGapInput("row","Row")),this.props.columnGap&&a.appendChild(this.createGapInput("column","Col")),n.appendChild(a),e.appendChild(i),e.appendChild(n),t.appendChild(e),t}createGapInput(t,e){const i=document.createElement("div");i.className="gap-input-wrapper";const s=document.createElement("input");if(s.type="number",s.className=`gap-input gap-${t}-input ${this.props.inputClassName||""}`,s.id=`${this.id}-${t}-input`,s.min=String(this.props.minValue??0),this.props.maxValue!==void 0&&(s.max=String(this.props.maxValue)),s.step=String(this.props.step??1),s.value=String(this.inputValues[t]??this.value),s.title=e,s.addEventListener("input",n=>{const a=n.target;let o=parseFloat(a.value);o=this.validateValue(o),String(o)!==a.value&&(a.value=String(o)),this.inputValues[t]=o,this.setValue(o)}),s.addEventListener("blur",n=>{var l,h;const a=n.target;let o=parseFloat(a.value);o=this.validateValue(o),String(o)!==a.value&&(a.value=String(o),this.inputValues[t]=o,this.setValue(o)),(h=(l=this.props).onBlur)==null||h.call(l)}),i.appendChild(s),this.props.suffix&&this.props.suffix!=="none"){const n=document.createElement("span");n.className="gap-suffix",n.textContent=this.props.suffix,i.appendChild(n),s.style.paddingRight="30px"}return i}validateValue(t){(t==null||isNaN(t))&&(t=this.props.default??0);const e=this.props.minValue??Number.MIN_SAFE_INTEGER,i=this.props.maxValue??Number.MAX_SAFE_INTEGER;let s=Number(t);return s<e&&(s=e),s>i&&(s=i),s}getMobileValue(){return this.mobileValue}}class x extends f{constructor(t){var o;if(!t.tabs)throw new Error("Tabs array is required for TabsSettings");const e=t.tabs,i=t.activeTabId||((o=e[0])==null?void 0:o.id)||"",s=e.find(l=>l.id===i),n=s?s.settings:{},a={title:t.title||"",settings:n,collapsed:t.collapsed,main:t.main,description:t.description,icon:t.icon,custom:t.custom,hideCondition:t.hideCondition,onBlur:t.onBlur};super(a),this.tabs=[],this.activeTabId="",this.tabsContainer=null,this.previousTabId="",this.container=null,this.tabValues={},this.internalChangeTimeout=null,this.isHandlingInternalChange=!1,this.INTERNAL_CHANGE_DEBOUNCE=50,this.tabs=e,this.activeTabId=i,this.previousTabId=i,this.onStateChangeCallback=t.onStateChange,this.detectChangeCallback=t.detectChange,this.initializeTabValues(),this.connectChildChangeHandlers()}updateSettingsFromTab(t){const e=this.tabs.find(i=>i.id===t);e&&(this.settings=e.settings,this.tabValues[t]=this.getTabValues(e),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},Object.values(e.settings).forEach(i=>{i instanceof x&&(i._parentTabsSettings=this)}),this.connectChildChangeHandlers())}connectChildChangeHandlers(){if(!this.settings)return;const t=()=>{Promise.resolve().then(()=>{if(this.activeTabId){const e=this.tabs.find(i=>i.id===this.activeTabId);e&&(this.tabValues[this.activeTabId]=this.getTabValues(e))}this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.triggerDebouncedChange()})};Object.values(this.settings).forEach(e=>{e instanceof f?e.setOnChange(()=>{t()}):e instanceof m&&e.setOnChange(()=>{t()})}),this.tabs.forEach(e=>{Object.entries(e.settings).forEach(([i,s])=>{(s instanceof f||s instanceof m)&&(s instanceof x?(s._parentTabsSettings=this,s.setOnChange(n=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})})):s instanceof f?s.setOnChange(()=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})}):s instanceof m&&s.setOnChange(()=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})}))})})}draw(){const t=super.draw();this.container=t,t.classList.add("tabs-settings-container");const e=document.createElement("div");e.classList.add("tabs-header"),this.main&&e.classList.add("main-header"),this.tabsContainer=e,this.tabs.forEach(s=>{const n=document.createElement("button");n.classList.add("tab-button"),s.id===this.activeTabId&&n.classList.add("active"),n.textContent=s.label,n.onclick=()=>this.handleTabClick(s.id),e.appendChild(n)});const i=t.querySelector(".setting-group-content");return i&&t.insertBefore(e,i),t}handleTabClick(t){var o,l;if(t===this.activeTabId)return;const e=this.tabs.find(h=>h.id===this.activeTabId);e&&(this.tabValues[this.activeTabId]=this.getTabValues(e)),this.previousTabId=this.activeTabId,this.activeTabId=t;const i=(o=this.tabsContainer)==null?void 0:o.querySelectorAll(".tab-button");i==null||i.forEach(h=>{if(h instanceof HTMLElement){const r=this.tabs.find(u=>u.label===h.textContent);h.classList.toggle("active",(r==null?void 0:r.id)===t)}}),this.updateSettingsFromTab(t);const s=(l=this.container)==null?void 0:l.querySelector(".setting-group-content");if(s){s.innerHTML="";const h=this.settings;Object.values(h).forEach(r=>{s.appendChild(r.draw())})}const n=this.getValues();this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.connectChildChangeHandlers(),this.onStateChangeCallback&&this.onStateChangeCallback(t,n),this.detectChangeCallback&&this.detectChangeCallback(t,n),this.onChange&&this.onChange(n);const a=this.findParentTabsSettings();a&&a.onChange&&a.onChange(a.getValues())}findParentTabsSettings(){return this._parentTabsSettings||null}setOnStateChange(t){return this.onStateChangeCallback=t,this}setDetectChange(t){return this.detectChangeCallback=t,this}getActiveTabId(){return this.activeTabId}getValues(){return this.updateTabValues(),{tabs:this.tabValues,activeTabId:this.activeTabId}}updateTabValues(){!this.tabs||this.tabs.length===0||this.tabs.forEach(t=>{this.tabValues[t.id]=this.getTabValues(t)})}propagateChanges(){const t=this.findParentTabsSettings();t&&(t.updateTabValues(),t.triggerDebouncedChange())}triggerDebouncedChange(){this.isHandlingInternalChange||(this.isHandlingInternalChange=!0,this.internalChangeTimeout&&clearTimeout(this.internalChangeTimeout),this.internalChangeTimeout=setTimeout(()=>{this.onChange&&this.onChange(this.getValues()),this.isHandlingInternalChange=!1,this.internalChangeTimeout=null;const t=this.findParentTabsSettings();t&&t.triggerDebouncedChange()},this.INTERNAL_CHANGE_DEBOUNCE))}updateInitialValues(){!this.tabs||this.tabs.length===0||(this.updateTabValues(),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.tabs.forEach(t=>{Object.values(t.settings).forEach(e=>{e instanceof x&&e.updateInitialValues()})}))}setOnChange(t){return this.onChange=t,this.connectChildChangeHandlers(),this.updateTabValues(),this}initializeTabValues(){!this.tabs||this.tabs.length===0||(this.tabs.forEach(t=>{this.tabValues[t.id]=this.getTabValues(t)}),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId})}getTabValues(t){const e={};return Object.entries(t.settings).forEach(([i,s])=>{s instanceof x||s instanceof f?e[i]=s.getValues():(s instanceof m,e[i]=s.value)}),e}clone(){const t=this.tabs.map(i=>{const s={};return Object.entries(i.settings).forEach(([n,a])=>{typeof a.clone=="function"?s[n]=a.clone():(console.warn(`Setting with key '${n}' in tab '${i.id}' does not have a clone method. Copying reference.`),s[n]=a)}),{...i,settings:s}}),e={title:this.title,tabs:t,activeTabId:this.activeTabId,collapsed:this.isCollapsed,main:this.isMain,description:this.description,icon:this.icon,custom:this.custom,hideCondition:this.hideCondition,settings:{}};return new x(e)}setValue(t){if(t&&typeof t=="object"){let e=!1;if(t.activeTabId&&t.activeTabId!==this.activeTabId&&(this.previousTabId=this.activeTabId,this.activeTabId=t.activeTabId,e=!0),t.tabs&&typeof t.tabs=="object"&&Object.entries(t.tabs).forEach(([i,s])=>{const n=this.tabs.find(a=>a.id===i);n&&s&&typeof s=="object"&&Object.entries(s).forEach(([a,o])=>{n.settings[a]&&typeof n.settings[a].setValue=="function"&&n.settings[a].setValue(o)})}),this.updateTabValues(),this.triggerDebouncedChange(),this.container){if(this.updateSettingsFromTab(this.activeTabId),this.tabsContainer){const s=this.tabsContainer.querySelectorAll(".tab-button");s==null||s.forEach(n=>{if(n instanceof HTMLElement){const a=this.tabs.find(o=>o.label===n.textContent);n.classList.toggle("active",(a==null?void 0:a.id)===this.activeTabId)}})}const i=this.container.querySelector(".setting-group-content");if(i){i.innerHTML="";const s=this.settings;Object.values(s).forEach(n=>{i.appendChild(n.draw())})}e&&this.onStateChangeCallback&&this.onStateChangeCallback(this.activeTabId,this.getValues())}this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId}}}updateTabSetting(t,e,i){const s=this.tabs.find(a=>a.id===t);if(!s||!s.settings[e])return;const n=s.settings[e];typeof n.setValue=="function"&&(n.setValue(i),this.tabValues[t]=this.getTabValues(s),t!==this.activeTabId&&this.onChange&&this.onChange(this.getValues()))}getTabsConfiguration(){return this.tabs}}const st=`<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
|
|
93
|
+
</svg>`;class it extends m{constructor(t={}){t.rowGap=t.rowGap??!0,t.columnGap=t.columnGap??!0,t.title=t.title??"Gap",t.icon=t.icon??et,t.suffix=t.suffix??"px",t.minValue=t.minValue??0,super(t),this.inputType="number",this.inputValues={},this.mobileValue=t.mobile,this.value=this.validateValue(t.default??0),t.rowGap&&(this.inputValues.row=this.value),t.columnGap&&(this.inputValues.column=this.value)}draw(){const t=document.createElement("div");t.className=`setting-container ${this.props.className||""}`,t.id=this.id;const e=document.createElement("div");e.className="setting-label-input-wrapper";const i=document.createElement("label");i.className="setting-label",i.setAttribute("for",this.id+"-input");const s=document.createElement("span");if(s.textContent=this.props.title??"Gap",i.appendChild(s),this.props.icon){const o=document.createElement("span");o.className="setting-icon",o.innerHTML=this.props.icon,i.insertBefore(o,s)}const n=document.createElement("div");n.className=`setting-input-wrapper ${this.props.wrapperClassName||""}`,n.classList.add("gap-setting-wrapper");const a=document.createElement("div");return a.className="gap-inputs-container",this.props.rowGap&&a.appendChild(this.createGapInput("row","Row")),this.props.columnGap&&a.appendChild(this.createGapInput("column","Col")),n.appendChild(a),e.appendChild(i),e.appendChild(n),t.appendChild(e),t}createGapInput(t,e){const i=document.createElement("div");i.className="gap-input-wrapper";const s=document.createElement("input");if(s.type="number",s.className=`gap-input gap-${t}-input ${this.props.inputClassName||""}`,s.id=`${this.id}-${t}-input`,s.min=String(this.props.minValue??0),this.props.maxValue!==void 0&&(s.max=String(this.props.maxValue)),s.step=String(this.props.step??1),s.value=String(this.inputValues[t]??this.value),s.title=e,s.addEventListener("input",n=>{const a=n.target;let o=parseFloat(a.value);o=this.validateValue(o),String(o)!==a.value&&(a.value=String(o)),this.inputValues[t]=o,this.setValue(o)}),s.addEventListener("blur",n=>{var l,h;const a=n.target;let o=parseFloat(a.value);o=this.validateValue(o),String(o)!==a.value&&(a.value=String(o),this.inputValues[t]=o,this.setValue(o)),(h=(l=this.props).onBlur)==null||h.call(l)}),i.appendChild(s),this.props.suffix&&this.props.suffix!=="none"){const n=document.createElement("span");n.className="gap-suffix",n.textContent=this.props.suffix,i.appendChild(n),s.style.paddingRight="30px"}return i}validateValue(t){(t==null||isNaN(t))&&(t=this.props.default??0);const e=this.props.minValue??Number.MIN_SAFE_INTEGER,i=this.props.maxValue??Number.MAX_SAFE_INTEGER;let s=Number(t);return s<e&&(s=e),s>i&&(s=i),s}getMobileValue(){return this.mobileValue}}class E extends f{constructor(t){var o;if(!t.tabs)throw new Error("Tabs array is required for TabsSettings");const e=t.tabs,i=t.activeTabId||((o=e[0])==null?void 0:o.id)||"",s=e.find(l=>l.id===i),n=s?s.settings:{},a={title:t.title||"",settings:n,collapsed:t.collapsed,main:t.main,description:t.description,icon:t.icon,custom:t.custom,hideCondition:t.hideCondition,onBlur:t.onBlur};super(a),this.tabs=[],this.activeTabId="",this.tabsContainer=null,this.previousTabId="",this.container=null,this.tabValues={},this.internalChangeTimeout=null,this.isHandlingInternalChange=!1,this.INTERNAL_CHANGE_DEBOUNCE=50,this.tabs=e,this.activeTabId=i,this.previousTabId=i,this.onStateChangeCallback=t.onStateChange,this.detectChangeCallback=t.detectChange,this.initializeTabValues(),this.connectChildChangeHandlers()}updateSettingsFromTab(t){const e=this.tabs.find(i=>i.id===t);e&&(this.settings=e.settings,this.tabValues[t]=this.getTabValues(e),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},Object.values(e.settings).forEach(i=>{i instanceof E&&(i._parentTabsSettings=this)}),this.connectChildChangeHandlers())}connectChildChangeHandlers(){if(!this.settings)return;const t=()=>{Promise.resolve().then(()=>{if(this.activeTabId){const e=this.tabs.find(i=>i.id===this.activeTabId);e&&(this.tabValues[this.activeTabId]=this.getTabValues(e))}this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.triggerDebouncedChange()})};Object.values(this.settings).forEach(e=>{e instanceof f?e.setOnChange(()=>{t()}):e instanceof m&&e.setOnChange(()=>{t()})}),this.tabs.forEach(e=>{Object.entries(e.settings).forEach(([i,s])=>{(s instanceof f||s instanceof m)&&(s instanceof E?(s._parentTabsSettings=this,s.setOnChange(n=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})})):s instanceof f?s.setOnChange(()=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})}):s instanceof m&&s.setOnChange(()=>{Promise.resolve().then(()=>{this.tabValues[e.id]=this.getTabValues(e),this.triggerDebouncedChange()})}))})})}draw(){const t=super.draw();this.container=t,t.classList.add("tabs-settings-container");const e=document.createElement("div");e.classList.add("tabs-header"),this.main&&e.classList.add("main-header"),this.tabsContainer=e,this.tabs.forEach(s=>{const n=document.createElement("button");n.classList.add("tab-button"),s.id===this.activeTabId&&n.classList.add("active"),n.textContent=s.label,n.onclick=()=>this.handleTabClick(s.id),e.appendChild(n)});const i=t.querySelector(".setting-group-content");return i&&t.insertBefore(e,i),t}handleTabClick(t){var o,l;if(t===this.activeTabId)return;const e=this.tabs.find(h=>h.id===this.activeTabId);e&&(this.tabValues[this.activeTabId]=this.getTabValues(e)),this.previousTabId=this.activeTabId,this.activeTabId=t;const i=(o=this.tabsContainer)==null?void 0:o.querySelectorAll(".tab-button");i==null||i.forEach(h=>{if(h instanceof HTMLElement){const r=this.tabs.find(u=>u.label===h.textContent);h.classList.toggle("active",(r==null?void 0:r.id)===t)}}),this.updateSettingsFromTab(t);const s=(l=this.container)==null?void 0:l.querySelector(".setting-group-content");if(s){s.innerHTML="";const h=this.settings;Object.values(h).forEach(r=>{s.appendChild(r.draw())})}const n=this.getValues();this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.connectChildChangeHandlers(),this.onStateChangeCallback&&this.onStateChangeCallback(t,n),this.detectChangeCallback&&this.detectChangeCallback(t,n),this.onChange&&this.onChange(n);const a=this.findParentTabsSettings();a&&a.onChange&&a.onChange(a.getValues())}findParentTabsSettings(){return this._parentTabsSettings||null}setOnStateChange(t){return this.onStateChangeCallback=t,this}setDetectChange(t){return this.detectChangeCallback=t,this}getActiveTabId(){return this.activeTabId}getValues(){return this.updateTabValues(),{tabs:this.tabValues,activeTabId:this.activeTabId}}updateTabValues(){!this.tabs||this.tabs.length===0||this.tabs.forEach(t=>{this.tabValues[t.id]=this.getTabValues(t)})}propagateChanges(){const t=this.findParentTabsSettings();t&&(t.updateTabValues(),t.triggerDebouncedChange())}triggerDebouncedChange(){this.isHandlingInternalChange||(this.isHandlingInternalChange=!0,this.internalChangeTimeout&&clearTimeout(this.internalChangeTimeout),this.internalChangeTimeout=setTimeout(()=>{this.onChange&&this.onChange(this.getValues()),this.isHandlingInternalChange=!1,this.internalChangeTimeout=null;const t=this.findParentTabsSettings();t&&t.triggerDebouncedChange()},this.INTERNAL_CHANGE_DEBOUNCE))}updateInitialValues(){!this.tabs||this.tabs.length===0||(this.updateTabValues(),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId},this.tabs.forEach(t=>{Object.values(t.settings).forEach(e=>{e instanceof E&&e.updateInitialValues()})}))}setOnChange(t){return this.onChange=t,this.connectChildChangeHandlers(),this.updateTabValues(),this}initializeTabValues(){!this.tabs||this.tabs.length===0||(this.tabs.forEach(t=>{this.tabValues[t.id]=this.getTabValues(t)}),this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId})}getTabValues(t){const e={};return Object.entries(t.settings).forEach(([i,s])=>{s instanceof E||s instanceof f?e[i]=s.getValues():(s instanceof m,e[i]=s.value)}),e}clone(){const t=this.tabs.map(i=>{const s={};return Object.entries(i.settings).forEach(([n,a])=>{typeof a.clone=="function"?s[n]=a.clone():(console.warn(`Setting with key '${n}' in tab '${i.id}' does not have a clone method. Copying reference.`),s[n]=a)}),{...i,settings:s}}),e={title:this.title,tabs:t,activeTabId:this.activeTabId,collapsed:this.isCollapsed,main:this.isMain,description:this.description,icon:this.icon,custom:this.custom,hideCondition:this.hideCondition,settings:{}};return new E(e)}setValue(t){if(t&&typeof t=="object"){let e=!1;if(t.activeTabId&&t.activeTabId!==this.activeTabId&&(this.previousTabId=this.activeTabId,this.activeTabId=t.activeTabId,e=!0),t.tabs&&typeof t.tabs=="object"&&Object.entries(t.tabs).forEach(([i,s])=>{const n=this.tabs.find(a=>a.id===i);n&&s&&typeof s=="object"&&Object.entries(s).forEach(([a,o])=>{n.settings[a]&&typeof n.settings[a].setValue=="function"&&n.settings[a].setValue(o)})}),this.updateTabValues(),this.triggerDebouncedChange(),this.container){if(this.updateSettingsFromTab(this.activeTabId),this.tabsContainer){const s=this.tabsContainer.querySelectorAll(".tab-button");s==null||s.forEach(n=>{if(n instanceof HTMLElement){const a=this.tabs.find(o=>o.label===n.textContent);n.classList.toggle("active",(a==null?void 0:a.id)===this.activeTabId)}})}const i=this.container.querySelector(".setting-group-content");if(i){i.innerHTML="";const s=this.settings;Object.values(s).forEach(n=>{i.appendChild(n.draw())})}e&&this.onStateChangeCallback&&this.onStateChangeCallback(this.activeTabId,this.getValues())}this.initialValues={tabs:this.tabValues,activeTabId:this.activeTabId}}}updateTabSetting(t,e,i){const s=this.tabs.find(a=>a.id===t);if(!s||!s.settings[e])return;const n=s.settings[e];typeof n.setValue=="function"&&(n.setValue(i),this.tabValues[t]=this.getTabValues(s),t!==this.activeTabId&&this.onChange&&this.onChange(this.getValues()))}getTabsConfiguration(){return this.tabs}}const st=`<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
|
|
94
94
|
<path d="M2.25 11.75H15.75M5.85 2.75H12.15C13.4101 2.75 14.0402 2.75 14.5215 2.99524C14.9448 3.21095 15.289 3.55516 15.5048 3.97852C15.75 4.45982 15.75 5.08988 15.75 6.35V12.65C15.75 13.9101 15.75 14.5402 15.5048 15.0215C15.289 15.4448 14.9448 15.789 14.5215 16.0048C14.0402 16.25 13.4101 16.25 12.15 16.25H5.85C4.58988 16.25 3.95982 16.25 3.47852 16.0048C3.05516 15.789 2.71095 15.4448 2.49524 15.0215C2.25 14.5402 2.25 13.9101 2.25 12.65V6.35C2.25 5.08988 2.25 4.45982 2.49524 3.97852C2.71095 3.55516 3.05516 3.21095 3.47852 2.99524C3.95982 2.75 4.58988 2.75 5.85 2.75Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
95
95
|
</svg>`;class nt extends b{constructor(t={}){super({...t,minValue:t.minValue??0,maxValue:t.maxValue??1e3,icon:t.icon||st,title:t.title||"Margin Bottom",default:t.default??20,wrapperClassName:"margin-bottom-wrapper "+(t.wrapperClassName||"")}),this.inputType="number"}}const at=`
|
|
96
96
|
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
font-weight: ${s};
|
|
125
125
|
font-size: ${n}px;
|
|
126
126
|
text-align: ${a};
|
|
127
|
-
`}}class
|
|
127
|
+
`}}class V extends m{constructor(t){super({...t,default:t.default!==void 0?t.default:"auto"}),this.inputType="number",this.value=t.default!==void 0?t.default:"auto"}draw(){const t=this.value==="auto"?"text":"number",e=o=>{this.value!=="auto"&&(this.props.minValue!==void 0&&(o.min=String(this.props.minValue)),this.props.maxValue!==void 0&&(o.max=String(this.props.maxValue)),this.props.className&&o.classList.add(this.props.className),o.addEventListener("input",()=>{const l=this.props.minValue??Number.MIN_SAFE_INTEGER,h=this.props.maxValue??Number.MAX_SAFE_INTEGER;let r=Number(o.value);r<l&&(r=l),r>h&&(r=h),o.value=String(r)}))},i=this.createInput({value:this.value,inputType:t,title:this.props.title,icon:this.props.icon,inputClassName:"number-setting-input "+(this.props.inputClassName||""),wrapperClassName:"number-setting-wrapper "+(this.props.wrapperClassName||""),inputCustomizer:e,placeholder:this.value==="auto"?"auto":""});if(!this.props.suffix||this.props.suffix==="none")return i;i.classList.add("suffix-wrapper");const s=i.querySelector("input.number-setting-input");s&&(s.style.paddingRight="35px");const n=document.createElement("span");n.className="suffix-label",n.textContent=this.props.suffix,i.appendChild(n);const a=i.querySelector("input");return a&&(a.oninput=o=>{const l=o.target.value.trim();if(l.toLowerCase()==="auto")this.value="auto";else{const h=Number(l);isNaN(h)||(this.value=h)}this.onChange&&this.onChange(this.value)}),i}}class ut extends f{constructor(t){super({title:"Margins",collapsed:t==null?void 0:t.collapsed,hideCondition:t==null?void 0:t.hideCondition,settings:{marginTop:new V({title:"Top",icon:pt,suffix:"px",default:(t==null?void 0:t.marginTop)??"auto"}),marginRight:new V({title:"Right",icon:gt,suffix:"px",default:(t==null?void 0:t.marginRight)??0}),marginBottom:new V({title:"Bottom",icon:mt,suffix:"px",default:(t==null?void 0:t.marginBottom)??0}),marginLeft:new V({title:"Left",icon:ft,suffix:"px",default:(t==null?void 0:t.marginLeft)??0})}})}getCssCode(){const t=typeof this.settings.marginTop.value=="number"?`${this.settings.marginTop.value}px`:this.settings.marginTop.value,e=typeof this.settings.marginRight.value=="number"?`${this.settings.marginRight.value}px`:this.settings.marginRight.value,i=typeof this.settings.marginBottom.value=="number"?`${this.settings.marginBottom.value}px`:this.settings.marginBottom.value,s=typeof this.settings.marginLeft.value=="number"?`${this.settings.marginLeft.value}px`:this.settings.marginLeft.value;return`
|
|
128
128
|
margin-top: ${t};
|
|
129
129
|
margin-right: ${e};
|
|
130
130
|
margin-bottom: ${i};
|
|
@@ -166,4 +166,4 @@
|
|
|
166
166
|
`:`
|
|
167
167
|
background-color: ${i};
|
|
168
168
|
opacity: ${s/100};
|
|
169
|
-
`}}exports.AlignSetting=A;exports.BackgroundSettingSet=bt;exports.BorderSettingSet=lt;exports.ButtonSetting=D;exports.ColorSetting=H;exports.DimensionSetting=F;exports.GapSetting=it;exports.HeaderTypographySettingSet=dt;exports.HeightSetting=Z;exports.MarginBottomSetting=nt;exports.MarginSettingGroup=ut;exports.NumberSetting=b;exports.OpacitySetting=L;exports.SelectApiSettings=K;exports.SelectSetting=N;exports.Setting=m;exports.SettingGroup=f;exports.StringSetting=M;exports.TabsContainerGroup=vt;exports.TabsSettings=
|
|
169
|
+
`}}exports.AlignSetting=A;exports.BackgroundSettingSet=bt;exports.BorderSettingSet=lt;exports.ButtonSetting=D;exports.ColorSetting=H;exports.DimensionSetting=F;exports.GapSetting=it;exports.HeaderTypographySettingSet=dt;exports.HeightSetting=Z;exports.MarginBottomSetting=nt;exports.MarginSettingGroup=ut;exports.NumberSetting=b;exports.OpacitySetting=L;exports.SelectApiSettings=K;exports.SelectSetting=N;exports.Setting=m;exports.SettingGroup=f;exports.StringSetting=M;exports.TabsContainerGroup=vt;exports.TabsSettings=E;exports.Toggle=tt;exports.UploadSetting=_;exports.WidthSetting=X;exports.iterateSettings=T;
|
|
@@ -5,7 +5,7 @@ let R = (c = 21) => {
|
|
|
5
5
|
t += A[e[c] & 63];
|
|
6
6
|
return t;
|
|
7
7
|
};
|
|
8
|
-
function
|
|
8
|
+
function y(c) {
|
|
9
9
|
if (c === null || typeof c != "object")
|
|
10
10
|
return c;
|
|
11
11
|
if (c instanceof Date)
|
|
@@ -13,12 +13,12 @@ function T(c) {
|
|
|
13
13
|
if (Array.isArray(c)) {
|
|
14
14
|
const i = [];
|
|
15
15
|
for (let s = 0; s < c.length; s++)
|
|
16
|
-
i[s] =
|
|
16
|
+
i[s] = y(c[s]);
|
|
17
17
|
return i;
|
|
18
18
|
}
|
|
19
19
|
const t = {};
|
|
20
20
|
for (const i in c)
|
|
21
|
-
Object.prototype.hasOwnProperty.call(c, i) && (t[i] =
|
|
21
|
+
Object.prototype.hasOwnProperty.call(c, i) && (t[i] = y(c[i]));
|
|
22
22
|
const e = Object.getPrototypeOf(c);
|
|
23
23
|
return e !== Object.prototype && Object.setPrototypeOf(t, e), t;
|
|
24
24
|
}
|
|
@@ -55,8 +55,8 @@ class m {
|
|
|
55
55
|
}
|
|
56
56
|
// Basic clone method
|
|
57
57
|
clone() {
|
|
58
|
-
const t = this.constructor, e =
|
|
59
|
-
return i.value =
|
|
58
|
+
const t = this.constructor, e = y(this.props), i = new t(e);
|
|
59
|
+
return i.value = y(this.value), i;
|
|
60
60
|
}
|
|
61
61
|
createInput(t) {
|
|
62
62
|
t = { ...this.props.inputProps, ...t };
|
|
@@ -122,13 +122,22 @@ function M(c, t) {
|
|
|
122
122
|
t(e, i);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
const
|
|
125
|
+
const E = class E {
|
|
126
126
|
constructor(t) {
|
|
127
127
|
this.elementRef = null, this.isHidden = !1, this.custom = !1, this.initialValues = {}, this.changeTimeout = null, this.isHandlingChange = !1, this.changeHandlers = /* @__PURE__ */ new Set(), this.blurTimeout = null, this.lastValues = {}, this.lastChangeTime = 0, this.CHANGE_DEBOUNCE = 100, this.handleBlur = () => {
|
|
128
128
|
}, this.pendingBlurHandler = null, this.hasFocus = !1, this.focusTrackingEnabled = !1, this.handleFocus = () => {
|
|
129
|
-
}, this.blurDebounceTime = 100, this.lastBlurTime = 0, this.isProcessingBlur = !1, this.isInteracting = !1, this.interactionStartTime = 0, this.modifiedSettings = /* @__PURE__ */ new Set(), this.handleInteractionStart = (e) => {
|
|
129
|
+
}, this.blurDebounceTime = 100, this.lastBlurTime = 0, this.isProcessingBlur = !1, this.isInteracting = !1, this.interactionStartTime = 0, this.modifiedSettings = /* @__PURE__ */ new Set(), this.activeSettingId = null, this.hasValueChanged = !1, this.handleInteractionStart = (e) => {
|
|
130
130
|
this.isInteracting || (this.isInteracting = !0, this.interactionStartTime = Date.now(), this.modifiedSettings.clear(), console.log(`[${this.title}] Setting interaction started`));
|
|
131
|
-
}, this.
|
|
131
|
+
}, this.handleChange = (e) => {
|
|
132
|
+
if (e.target instanceof HTMLElement) {
|
|
133
|
+
this.hasValueChanged = !0;
|
|
134
|
+
const i = e.target.closest("[data-setting-id]");
|
|
135
|
+
if (i) {
|
|
136
|
+
const s = i.getAttribute("data-setting-id");
|
|
137
|
+
typeof s == "string" && (this.activeSettingId = s);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}, typeof t.id == "string" && t.id.trim() !== "" ? this.id = t.id.trim() : this.id = R(), typeof t.title == "string" ? this.title = t.title : (this.title = "Untitled Setting Group", console.warn(`SettingGroup constructor: Invalid title provided, defaulting to '${this.title}'.`, t)), this.settings = t.settings, typeof t.description == "string" ? this.description = t.description : t.description === null || t.description === void 0 ? this.description = void 0 : (this.description = String(t.description), console.warn("SettingGroup constructor: Invalid description type, coercing to string.", t)), this.icon = t.icon, this.isCollapsed = t.collapsed ?? !1, this.isMain = t.main ?? !1, this.custom = t.custom ?? !1, this.hideCondition = t.hideCondition, this.onBlur = t.onBlur, this.blurDebounceTime = t.blurDebounceTime ?? 100, Object.assign(this, t.settings), this.initialValues = this.getValues();
|
|
132
141
|
}
|
|
133
142
|
static hide() {
|
|
134
143
|
this.hiddenElements.forEach((t) => {
|
|
@@ -148,28 +157,25 @@ const x = class x {
|
|
|
148
157
|
this.initialValues,
|
|
149
158
|
i
|
|
150
159
|
);
|
|
151
|
-
|
|
152
|
-
this.lastChangeTime = Date.now();
|
|
153
|
-
for (const n of Object.keys(s))
|
|
154
|
-
this.modifiedSettings.add(n);
|
|
155
|
-
this.initialValues = i, t(i), this.updateVisibility();
|
|
156
|
-
}
|
|
157
|
-
this.isHandlingChange = !1;
|
|
160
|
+
Object.keys(s).length > 0 && (this.hasValueChanged = !0, this.lastChangeTime = Date.now(), this.initialValues = i, t(i), this.updateVisibility()), this.isHandlingChange = !1;
|
|
158
161
|
}, 50));
|
|
159
162
|
};
|
|
160
163
|
return this.changeHandlers.clear(), M(this.settings, (i, s) => {
|
|
161
164
|
var n;
|
|
162
|
-
if (s instanceof
|
|
165
|
+
if (s instanceof E)
|
|
163
166
|
s.setOnChange((a) => {
|
|
167
|
+
this.hasValueChanged = !0;
|
|
164
168
|
const o = this.getValues();
|
|
165
169
|
this.initialValues = o, t(o);
|
|
166
170
|
}), this.changeHandlers.add(() => t(this.getValues()));
|
|
167
171
|
else if (s instanceof m) {
|
|
168
|
-
const a = () =>
|
|
172
|
+
const a = () => {
|
|
173
|
+
this.hasValueChanged = !0, e();
|
|
174
|
+
};
|
|
169
175
|
this.changeHandlers.add(a), s.setOnChange(a);
|
|
170
176
|
} else {
|
|
171
177
|
const a = () => {
|
|
172
|
-
e();
|
|
178
|
+
this.hasValueChanged = !0, e();
|
|
173
179
|
};
|
|
174
180
|
this.changeHandlers.add(a), (n = s.setOnChange) == null || n.call(s, a);
|
|
175
181
|
}
|
|
@@ -177,15 +183,23 @@ const x = class x {
|
|
|
177
183
|
}
|
|
178
184
|
setOnBlur(t, e) {
|
|
179
185
|
return this.onBlur = t, this.pendingBlurHandler = t, this.focusTrackingEnabled = !0, e !== void 0 && (this.blurDebounceTime = e), this.handleBlur = (i) => {
|
|
186
|
+
if (!this.hasValueChanged && !i) return;
|
|
187
|
+
let n = null;
|
|
180
188
|
if ((i == null ? void 0 : i.target) instanceof HTMLElement) {
|
|
181
|
-
const
|
|
182
|
-
if (
|
|
183
|
-
|
|
189
|
+
const a = i.target.closest("[data-setting-id]");
|
|
190
|
+
if (a) {
|
|
191
|
+
const o = a.getAttribute("data-setting-id");
|
|
192
|
+
typeof o == "string" && (n = o);
|
|
193
|
+
}
|
|
184
194
|
}
|
|
185
195
|
this.blurTimeout && clearTimeout(this.blurTimeout), this.blurTimeout = setTimeout(() => {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
try {
|
|
197
|
+
this.saveChangesImmediately();
|
|
198
|
+
const a = this.getValues();
|
|
199
|
+
(this.activeSettingId === null && n !== null || n === null && this.activeSettingId !== null || this.activeSettingId !== n || this.hasValueChanged) && this.onBlur && (this.onBlur(a || {}), this.hasValueChanged = !1), this.activeSettingId = n;
|
|
200
|
+
} catch (a) {
|
|
201
|
+
console.error("Error in blur handler:", a), this.hasValueChanged = !1, this.activeSettingId = null;
|
|
202
|
+
}
|
|
189
203
|
}, this.blurDebounceTime);
|
|
190
204
|
}, this.elementRef && this.setupFocusHandlers(), this;
|
|
191
205
|
}
|
|
@@ -196,7 +210,7 @@ const x = class x {
|
|
|
196
210
|
}
|
|
197
211
|
setupFocusHandlers() {
|
|
198
212
|
if (!this.elementRef || !this.focusTrackingEnabled) return;
|
|
199
|
-
this.elementRef.removeEventListener("focusout", this.handleBlur), this.elementRef.addEventListener("focusout", this.handleBlur);
|
|
213
|
+
this.elementRef.removeEventListener("focusout", this.handleBlur), this.elementRef.removeEventListener("change", this.handleChange), this.elementRef.removeEventListener("input", this.handleChange), this.elementRef.addEventListener("focusout", this.handleBlur), this.elementRef.addEventListener("change", this.handleChange), this.elementRef.addEventListener("input", this.handleChange);
|
|
200
214
|
const t = this.elementRef.closest("form");
|
|
201
215
|
t && (t.removeEventListener("submit", this.handleBlur), t.addEventListener("submit", this.handleBlur)), document.addEventListener("visibilitychange", () => {
|
|
202
216
|
document.visibilityState === "hidden" && this.elementRef && document.activeElement && this.elementRef.contains(document.activeElement) && this.handleBlur();
|
|
@@ -204,7 +218,7 @@ const x = class x {
|
|
|
204
218
|
}
|
|
205
219
|
cleanup() {
|
|
206
220
|
if (this.changeTimeout && (clearTimeout(this.changeTimeout), this.changeTimeout = null), this.blurTimeout && (clearTimeout(this.blurTimeout), this.blurTimeout = null), this.elementRef) {
|
|
207
|
-
this.elementRef.removeEventListener("focusout", this.handleBlur);
|
|
221
|
+
this.elementRef.removeEventListener("focusout", this.handleBlur), this.elementRef.removeEventListener("change", this.handleChange), this.elementRef.removeEventListener("input", this.handleChange);
|
|
208
222
|
const t = this.elementRef.closest("form");
|
|
209
223
|
t && t.removeEventListener("submit", this.handleBlur);
|
|
210
224
|
}
|
|
@@ -212,7 +226,7 @@ const x = class x {
|
|
|
212
226
|
document.visibilityState === "hidden" && this.elementRef && document.activeElement && this.elementRef.contains(document.activeElement) && this.handleBlur();
|
|
213
227
|
}), M(this.settings, (t, e) => {
|
|
214
228
|
typeof e.cleanup == "function" && e.cleanup();
|
|
215
|
-
}), this.changeHandlers.clear();
|
|
229
|
+
}), this.changeHandlers.clear(), this.activeSettingId = null, this.hasValueChanged = !1;
|
|
216
230
|
}
|
|
217
231
|
clone() {
|
|
218
232
|
const t = {};
|
|
@@ -248,22 +262,27 @@ const x = class x {
|
|
|
248
262
|
this.elementRef && (this.elementRef.style.display = "", this.isHidden = !1);
|
|
249
263
|
}
|
|
250
264
|
getValues(t) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
265
|
+
try {
|
|
266
|
+
if (t === void 0) {
|
|
267
|
+
const e = {};
|
|
268
|
+
for (const i in this.settings)
|
|
269
|
+
if (this.settings.hasOwnProperty(i)) {
|
|
270
|
+
const s = this.settings[i];
|
|
271
|
+
if (!s) continue;
|
|
272
|
+
s instanceof E ? e[i] = s.getValues() : typeof s.value < "u" && (e[i] = s.value);
|
|
273
|
+
}
|
|
274
|
+
return e;
|
|
275
|
+
} else {
|
|
276
|
+
const e = this.settings[t];
|
|
277
|
+
return e ? (this.isInteracting && typeof t == "string" && this.modifiedSettings.add(t), e instanceof E ? e.getValues() : typeof e.value < "u" ? e.value : void 0) : void 0;
|
|
278
|
+
}
|
|
279
|
+
} catch (e) {
|
|
280
|
+
return console.error("Error in getValues:", e), {};
|
|
262
281
|
}
|
|
263
282
|
}
|
|
264
283
|
draw() {
|
|
265
284
|
const t = document.createElement("div");
|
|
266
|
-
t.className = "setting-group", t.id = `setting-group-${this.id}`,
|
|
285
|
+
t.className = "setting-group", t.id = `setting-group-${this.id}`, E.hiddenElements.add(t), this.hideCondition && this.hideCondition() && (t.style.display = "none"), this.isMain && t.classList.add("main-group");
|
|
267
286
|
const e = document.createElement("div");
|
|
268
287
|
e.className = "setting-group-title", this.isCollapsed && e.classList.add("collapsed-view"), e.setAttribute("role", "button"), e.setAttribute(
|
|
269
288
|
"aria-expanded",
|
|
@@ -271,21 +290,21 @@ const x = class x {
|
|
|
271
290
|
), e.setAttribute("tabindex", "0");
|
|
272
291
|
const i = document.createElement("div");
|
|
273
292
|
if (i.className = "title-section", this.icon) {
|
|
274
|
-
const
|
|
275
|
-
|
|
293
|
+
const h = document.createElement("span");
|
|
294
|
+
h.className = "group-icon", h.innerHTML = this.icon, i.appendChild(h);
|
|
276
295
|
}
|
|
277
296
|
this.custom && t.classList.add("custom_class");
|
|
278
297
|
const s = document.createElement("h3");
|
|
279
298
|
s.textContent = this.title, i.appendChild(s);
|
|
280
299
|
const n = document.createElement("div");
|
|
281
300
|
if (n.className = "actions-section", this.description && this.isCollapsed) {
|
|
282
|
-
const
|
|
283
|
-
|
|
301
|
+
const h = document.createElement("span");
|
|
302
|
+
h.className = "info-marker", h.innerHTML = `
|
|
284
303
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
285
304
|
<path d="M8 5.33333V8M8 10.6667H8.00667M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z"
|
|
286
305
|
stroke="currentColor" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
|
287
306
|
</svg>
|
|
288
|
-
`,
|
|
307
|
+
`, h.title = this.description, n.appendChild(h);
|
|
289
308
|
}
|
|
290
309
|
const a = document.createElement("span");
|
|
291
310
|
a.className = "setting-group-arrow", a.innerHTML = `
|
|
@@ -295,20 +314,20 @@ const x = class x {
|
|
|
295
314
|
`, this.isCollapsed && a.classList.add("rotated"), n.appendChild(a);
|
|
296
315
|
const o = document.createElement("div");
|
|
297
316
|
if (o.className = "setting-group-content", this.isCollapsed && (o.classList.add("collapsed"), e.classList.add("collapsed-view"), a.classList.add("rotated"), t.classList.add("collapsed")), this.isMain && o.classList.add("main-content"), this.description && !this.isCollapsed) {
|
|
298
|
-
const
|
|
299
|
-
|
|
317
|
+
const h = document.createElement("div");
|
|
318
|
+
h.className = "setting-group-description", h.textContent = this.description, o.appendChild(h);
|
|
300
319
|
}
|
|
301
320
|
const l = () => {
|
|
302
321
|
this.isCollapsed = !this.isCollapsed, o.classList.toggle("collapsed"), e.classList.toggle("collapsed-view"), a.classList.toggle("rotated"), t.classList.toggle("collapsed", this.isCollapsed), e.setAttribute(
|
|
303
322
|
"aria-expanded",
|
|
304
323
|
(!this.isCollapsed).toString()
|
|
305
324
|
);
|
|
306
|
-
const
|
|
325
|
+
const h = o.querySelector(
|
|
307
326
|
".setting-group-description"
|
|
308
327
|
), u = n.querySelector(".info-marker");
|
|
309
328
|
if (this.description)
|
|
310
329
|
if (this.isCollapsed) {
|
|
311
|
-
if (
|
|
330
|
+
if (h && h.remove(), !u) {
|
|
312
331
|
const d = document.createElement("span");
|
|
313
332
|
d.className = "info-marker", d.innerHTML = `
|
|
314
333
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -318,7 +337,7 @@ const x = class x {
|
|
|
318
337
|
`, d.title = this.description, n.insertBefore(d, a);
|
|
319
338
|
}
|
|
320
339
|
} else {
|
|
321
|
-
if (!
|
|
340
|
+
if (!h) {
|
|
322
341
|
const d = document.createElement("div");
|
|
323
342
|
d.className = "setting-group-description", d.textContent = this.description, o.insertBefore(
|
|
324
343
|
d,
|
|
@@ -328,17 +347,17 @@ const x = class x {
|
|
|
328
347
|
u && u.remove();
|
|
329
348
|
}
|
|
330
349
|
};
|
|
331
|
-
if (e.onclick = l, e.onkeydown = (
|
|
332
|
-
(
|
|
350
|
+
if (e.onclick = l, e.onkeydown = (h) => {
|
|
351
|
+
(h.key === "Enter" || h.key === " ") && (h.preventDefault(), l());
|
|
333
352
|
}, Object.keys(this.settings).length > 0) {
|
|
334
|
-
for (const
|
|
335
|
-
if (this.settings.hasOwnProperty(
|
|
336
|
-
const u = this.settings[
|
|
353
|
+
for (const h in this.settings)
|
|
354
|
+
if (this.settings.hasOwnProperty(h)) {
|
|
355
|
+
const u = this.settings[h];
|
|
337
356
|
o.appendChild(u.draw());
|
|
338
357
|
}
|
|
339
358
|
} else {
|
|
340
|
-
const
|
|
341
|
-
|
|
359
|
+
const h = document.createElement("div");
|
|
360
|
+
h.className = "setting-group-empty", h.textContent = "No settings in this group", o.appendChild(h);
|
|
342
361
|
}
|
|
343
362
|
return e.appendChild(i), e.appendChild(n), t.appendChild(e), t.appendChild(o), this.elementRef = t, this.pendingBlurHandler && (this.setupFocusHandlers(), this.pendingBlurHandler = null), t;
|
|
344
363
|
}
|
|
@@ -374,8 +393,8 @@ const x = class x {
|
|
|
374
393
|
Object.keys(e).length > 0 && (this.initialValues = t, this.onChange(t), this.updateVisibility());
|
|
375
394
|
}
|
|
376
395
|
};
|
|
377
|
-
|
|
378
|
-
let f =
|
|
396
|
+
E.hiddenElements = /* @__PURE__ */ new Set();
|
|
397
|
+
let f = E;
|
|
379
398
|
class H extends m {
|
|
380
399
|
constructor(t = {}) {
|
|
381
400
|
super(t), this.inputType = "text", t.onChange && this.setOnChange(t.onChange);
|
|
@@ -440,26 +459,26 @@ class O extends H {
|
|
|
440
459
|
value: this.value,
|
|
441
460
|
inputType: "text",
|
|
442
461
|
inputClassName: "color-text-input"
|
|
443
|
-
}),
|
|
444
|
-
|
|
445
|
-
const
|
|
462
|
+
}), r = l.querySelector("input");
|
|
463
|
+
r.readOnly = !0;
|
|
464
|
+
const h = this.createInput({
|
|
446
465
|
value: this.value ? this.rgbToHex(this.value) : "",
|
|
447
466
|
inputType: this.inputType,
|
|
448
467
|
inputClassName: "color-picker"
|
|
449
|
-
}), u =
|
|
450
|
-
return
|
|
468
|
+
}), u = h.querySelector("input");
|
|
469
|
+
return r.oninput = (d) => {
|
|
451
470
|
var p;
|
|
452
471
|
let g = d.target.value.trim();
|
|
453
|
-
a(
|
|
472
|
+
a(r) && (this.value = g, (p = this.onChange) == null || p.call(this, g), u.value = this.rgbToHex(g), o.style.backgroundColor = `rgb(${g})`);
|
|
454
473
|
}, u.oninput = (d) => {
|
|
455
474
|
var C, v;
|
|
456
475
|
const g = d.target.value, p = this.hexToRgb(g);
|
|
457
|
-
this.value = p, (C = this.onChange) == null || C.call(this, p), (v = this.detectChange) == null || v.call(this, p),
|
|
476
|
+
this.value = p, (C = this.onChange) == null || C.call(this, p), (v = this.detectChange) == null || v.call(this, p), r.value = p, o.style.backgroundColor = `rgb(${p})`;
|
|
458
477
|
}, u.onchange = (d) => {
|
|
459
478
|
var C, v;
|
|
460
479
|
const g = d.target.value, p = this.hexToRgb(g);
|
|
461
|
-
this.value = p, (C = this.onChange) == null || C.call(this, p), (v = this.detectChange) == null || v.call(this, p),
|
|
462
|
-
}, n.appendChild(o), n.appendChild(
|
|
480
|
+
this.value = p, (C = this.onChange) == null || C.call(this, p), (v = this.detectChange) == null || v.call(this, p), r.value = p, o.style.backgroundColor = `rgb(${p})`;
|
|
481
|
+
}, n.appendChild(o), n.appendChild(h), n.appendChild(l), t.appendChild(e), t.appendChild(n), this.value && (r.value = this.value, u.value = this.rgbToHex(this.value), o.style.backgroundColor = `rgb(${this.value})`), t;
|
|
463
482
|
}
|
|
464
483
|
}
|
|
465
484
|
class b extends m {
|
|
@@ -517,7 +536,7 @@ const $ = `
|
|
|
517
536
|
<path d="M9 17C13.4183 17 17 13.4183 17 9C17 4.58172 13.4183 1 9 1C4.58172 1 1 4.58172 1 9C1 13.4183 4.58172 17 9 17Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
518
537
|
<path d="M9 1V17C4.58172 17 1 13.4183 1 9C1 4.58172 4.58172 1 9 1Z" fill="#667085" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
519
538
|
</svg>`;
|
|
520
|
-
class
|
|
539
|
+
class T extends b {
|
|
521
540
|
constructor(t = {}) {
|
|
522
541
|
const e = {
|
|
523
542
|
title: "Opacity",
|
|
@@ -591,8 +610,8 @@ class B extends m {
|
|
|
591
610
|
selectOption(t, e, i) {
|
|
592
611
|
var n, a, o;
|
|
593
612
|
const s = this._options[e];
|
|
594
|
-
s && (this.value = s.value, (n = this.onChange) == null || n.call(this, this.value), this.selectedOptionIndex = e, this.isOpen = !1, i.textContent = s.name, (a = this.optionsListEl) == null || a.classList.remove("open"), (o = this.svgContainer) == null || o.classList.remove("open"), this.optionsListEl && this.optionsListEl.querySelectorAll(".select-option").forEach((
|
|
595
|
-
|
|
613
|
+
s && (this.value = s.value, (n = this.onChange) == null || n.call(this, this.value), this.selectedOptionIndex = e, this.isOpen = !1, i.textContent = s.name, (a = this.optionsListEl) == null || a.classList.remove("open"), (o = this.svgContainer) == null || o.classList.remove("open"), this.optionsListEl && this.optionsListEl.querySelectorAll(".select-option").forEach((r, h) => {
|
|
614
|
+
h === e ? r.classList.add("selected") : r.classList.remove("selected");
|
|
596
615
|
}));
|
|
597
616
|
}
|
|
598
617
|
updateOptionsList() {
|
|
@@ -690,7 +709,7 @@ class lt extends m {
|
|
|
690
709
|
return e.className = "button-setting-wrapper " + (this.props.wrapperClassName || ""), e.appendChild(t), e;
|
|
691
710
|
}
|
|
692
711
|
}
|
|
693
|
-
class
|
|
712
|
+
class ht extends m {
|
|
694
713
|
constructor(t = {}) {
|
|
695
714
|
super(t), this.inputType = { width: "number", height: "number" }, this.aspectRatio = 1, this.isUpdating = !1;
|
|
696
715
|
const e = t.width || 0, i = t.height || 0;
|
|
@@ -838,19 +857,19 @@ class U extends m {
|
|
|
838
857
|
draw() {
|
|
839
858
|
const t = document.createElement("div");
|
|
840
859
|
t.className = "upload-setting-wrapper", t.setAttribute("data-setting-id", this.id), t.addEventListener("focusout", (l) => {
|
|
841
|
-
var
|
|
842
|
-
l.relatedTarget && t.contains(l.relatedTarget) || (
|
|
860
|
+
var r;
|
|
861
|
+
l.relatedTarget && t.contains(l.relatedTarget) || (r = this.onBlur) == null || r.call(this);
|
|
843
862
|
}, !0);
|
|
844
863
|
const e = !!(this.props.title || this.props.icon);
|
|
845
864
|
if (e || t.classList.add("no-label"), e) {
|
|
846
865
|
const l = document.createElement("div");
|
|
847
866
|
if (l.className = "icon-title-container", this.props.icon) {
|
|
848
|
-
const
|
|
849
|
-
l.appendChild(
|
|
867
|
+
const r = this.createIcon(this.props.icon);
|
|
868
|
+
l.appendChild(r);
|
|
850
869
|
}
|
|
851
870
|
if (this.props.title) {
|
|
852
|
-
const
|
|
853
|
-
l.appendChild(
|
|
871
|
+
const r = this.createLabel(this.props.title);
|
|
872
|
+
l.appendChild(r);
|
|
854
873
|
}
|
|
855
874
|
t.appendChild(l);
|
|
856
875
|
}
|
|
@@ -861,9 +880,9 @@ class U extends m {
|
|
|
861
880
|
const n = document.createElement("div");
|
|
862
881
|
if (n.className = "preview-placeholder", n.innerHTML = F, this.previewWrapper = document.createElement("div"), this.previewWrapper.className = "preview-wrapper", this.previewEl = document.createElement("img"), this.previewEl.className = "upload-preview", this.props.delete) {
|
|
863
882
|
const l = document.createElement("button");
|
|
864
|
-
l.className = "delete-button", l.type = "button", l.title = "Delete image", l.innerHTML = q, this.previewWrapper.appendChild(l), l.onclick = (
|
|
865
|
-
var
|
|
866
|
-
|
|
883
|
+
l.className = "delete-button", l.type = "button", l.title = "Delete image", l.innerHTML = q, this.previewWrapper.appendChild(l), l.onclick = (r) => {
|
|
884
|
+
var h;
|
|
885
|
+
r.stopPropagation(), this.value = "", o.value = "", this.updatePreviewState(null), (h = this.onChange) == null || h.call(this, "");
|
|
867
886
|
};
|
|
868
887
|
}
|
|
869
888
|
this.previewWrapper.appendChild(this.previewEl);
|
|
@@ -876,8 +895,8 @@ class U extends m {
|
|
|
876
895
|
return o.type = "file", o.accept = "image/*", o.style.display = "none", i.appendChild(n), i.appendChild(this.previewWrapper), i.appendChild(a), t.appendChild(i), t.appendChild(o), s ? this.updatePreviewState(this.value) : this.updatePreviewState(null), a.onclick = () => {
|
|
877
896
|
o.click();
|
|
878
897
|
}, o.onchange = async () => {
|
|
879
|
-
var
|
|
880
|
-
const l = (
|
|
898
|
+
var r, h, u, d;
|
|
899
|
+
const l = (r = o.files) == null ? void 0 : r[0];
|
|
881
900
|
if (l)
|
|
882
901
|
try {
|
|
883
902
|
a.classList.add("loading"), a.disabled = !0;
|
|
@@ -895,7 +914,7 @@ class U extends m {
|
|
|
895
914
|
let w;
|
|
896
915
|
if (this.props.parseResponse)
|
|
897
916
|
w = this.props.parseResponse(k);
|
|
898
|
-
else if (w = (
|
|
917
|
+
else if (w = (h = k == null ? void 0 : k.data) == null ? void 0 : h.url, !w)
|
|
899
918
|
throw new Error(
|
|
900
919
|
"No URL found in response. Provide a parseResponse if needed."
|
|
901
920
|
);
|
|
@@ -910,7 +929,7 @@ class U extends m {
|
|
|
910
929
|
}, t;
|
|
911
930
|
}
|
|
912
931
|
}
|
|
913
|
-
class
|
|
932
|
+
class rt extends b {
|
|
914
933
|
// Store mobile value
|
|
915
934
|
constructor(t = {}) {
|
|
916
935
|
const e = {
|
|
@@ -1019,7 +1038,7 @@ class dt extends m {
|
|
|
1019
1038
|
const a = new Set(this._options.map((l) => JSON.stringify(l.value))), o = n.filter((l) => !a.has(JSON.stringify(l.value)));
|
|
1020
1039
|
if (this._options.push(...o), this.isLoading = !1, this.hasInitializedOptions = !0, this.value !== void 0) {
|
|
1021
1040
|
const l = this._options.findIndex(
|
|
1022
|
-
(
|
|
1041
|
+
(r) => JSON.stringify(r.value) === JSON.stringify(this.value)
|
|
1023
1042
|
);
|
|
1024
1043
|
this.selectedOptionIndex = l !== -1 ? l : null;
|
|
1025
1044
|
} else
|
|
@@ -1031,7 +1050,7 @@ class dt extends m {
|
|
|
1031
1050
|
const a = new Set(this._options.map((l) => JSON.stringify(l.value))), o = n.filter((l) => !a.has(JSON.stringify(l.value)));
|
|
1032
1051
|
if (this._options.push(...o), this.isLoading = !1, this.value !== void 0) {
|
|
1033
1052
|
const l = this._options.findIndex(
|
|
1034
|
-
(
|
|
1053
|
+
(r) => JSON.stringify(r.value) === JSON.stringify(this.value)
|
|
1035
1054
|
);
|
|
1036
1055
|
this.selectedOptionIndex = l !== -1 ? l : null;
|
|
1037
1056
|
} else
|
|
@@ -1042,7 +1061,7 @@ class dt extends m {
|
|
|
1042
1061
|
})), t;
|
|
1043
1062
|
}
|
|
1044
1063
|
selectApiOption(t, e, i) {
|
|
1045
|
-
var l,
|
|
1064
|
+
var l, r, h, u;
|
|
1046
1065
|
const s = t.target, n = s.querySelector(".select-api-radio") || ((l = s.closest(".select-api-option")) == null ? void 0 : l.querySelector(".select-api-radio"));
|
|
1047
1066
|
n && (n.checked = !0), this.selectedOptionIndex = e;
|
|
1048
1067
|
const a = this._options[e].value;
|
|
@@ -1054,7 +1073,7 @@ class dt extends m {
|
|
|
1054
1073
|
const d = i.firstChild;
|
|
1055
1074
|
d && d.tagName === "SPAN" && (d.textContent = this._options[e].name);
|
|
1056
1075
|
}
|
|
1057
|
-
this.isOpen = !1, (
|
|
1076
|
+
this.isOpen = !1, (r = this.optionsListEl) == null || r.classList.remove("open"), (h = this.svgContainer) == null || h.classList.remove("open"), (u = this.onChange) == null || u.call(this, a), this.detectChangeCallback && this.detectChangeCallback(a);
|
|
1058
1077
|
}
|
|
1059
1078
|
updateOptionsList() {
|
|
1060
1079
|
!this.optionsListEl || !this.buttonEl || (this.optionsListEl.innerHTML = "", this._options.forEach((t, e) => {
|
|
@@ -1110,19 +1129,19 @@ class ut extends m {
|
|
|
1110
1129
|
i.className = "toggle-switch";
|
|
1111
1130
|
const s = document.createElement("input");
|
|
1112
1131
|
s.type = "checkbox", s.checked = ((o = (a = this.props.options) == null ? void 0 : a.find((l) => l.value === this.value)) == null ? void 0 : o.status) ?? !1, s.addEventListener("change", () => {
|
|
1113
|
-
var
|
|
1114
|
-
const l = ((
|
|
1132
|
+
var r, h;
|
|
1133
|
+
const l = ((h = (r = this.props.options) == null ? void 0 : r.find((u) => u.status === s.checked)) == null ? void 0 : h.value) ?? "";
|
|
1115
1134
|
this.value = l, this.onChange && this.onChange(this.value), this.detectChangeCallback && this.detectChangeCallback(this.value);
|
|
1116
1135
|
});
|
|
1117
1136
|
const n = document.createElement("span");
|
|
1118
1137
|
if (n.className = "toggle-slider", this.props.activeColor || this.props.inactiveColor) {
|
|
1119
|
-
const l = document.createElement("style"),
|
|
1138
|
+
const l = document.createElement("style"), r = this.props.activeColor || "#4CAF50", h = this.props.inactiveColor || "#ccc";
|
|
1120
1139
|
l.textContent = `
|
|
1121
1140
|
.toggle-switch input:checked + .toggle-slider {
|
|
1122
|
-
background-color: ${
|
|
1141
|
+
background-color: ${r};
|
|
1123
1142
|
}
|
|
1124
1143
|
.toggle-switch .toggle-slider {
|
|
1125
|
-
background-color: ${
|
|
1144
|
+
background-color: ${h};
|
|
1126
1145
|
}
|
|
1127
1146
|
`, document.head.appendChild(l);
|
|
1128
1147
|
}
|
|
@@ -1167,10 +1186,10 @@ class pt extends m {
|
|
|
1167
1186
|
let o = parseFloat(a.value);
|
|
1168
1187
|
o = this.validateValue(o), String(o) !== a.value && (a.value = String(o)), this.inputValues[t] = o, this.setValue(o);
|
|
1169
1188
|
}), s.addEventListener("blur", (n) => {
|
|
1170
|
-
var l,
|
|
1189
|
+
var l, r;
|
|
1171
1190
|
const a = n.target;
|
|
1172
1191
|
let o = parseFloat(a.value);
|
|
1173
|
-
o = this.validateValue(o), String(o) !== a.value && (a.value = String(o), this.inputValues[t] = o, this.setValue(o)), (
|
|
1192
|
+
o = this.validateValue(o), String(o) !== a.value && (a.value = String(o), this.inputValues[t] = o, this.setValue(o)), (r = (l = this.props).onBlur) == null || r.call(l);
|
|
1174
1193
|
}), i.appendChild(s), this.props.suffix && this.props.suffix !== "none") {
|
|
1175
1194
|
const n = document.createElement("span");
|
|
1176
1195
|
n.className = "gap-suffix", n.textContent = this.props.suffix, i.appendChild(n), s.style.paddingRight = "30px";
|
|
@@ -1187,7 +1206,7 @@ class pt extends m {
|
|
|
1187
1206
|
return this.mobileValue;
|
|
1188
1207
|
}
|
|
1189
1208
|
}
|
|
1190
|
-
class
|
|
1209
|
+
class x extends f {
|
|
1191
1210
|
// ms
|
|
1192
1211
|
constructor(t) {
|
|
1193
1212
|
var o;
|
|
@@ -1212,7 +1231,7 @@ class E extends f {
|
|
|
1212
1231
|
tabs: this.tabValues,
|
|
1213
1232
|
activeTabId: this.activeTabId
|
|
1214
1233
|
}, Object.values(e.settings).forEach((i) => {
|
|
1215
|
-
i instanceof
|
|
1234
|
+
i instanceof x && (i._parentTabsSettings = this);
|
|
1216
1235
|
}), this.connectChildChangeHandlers());
|
|
1217
1236
|
}
|
|
1218
1237
|
/**
|
|
@@ -1240,7 +1259,7 @@ class E extends f {
|
|
|
1240
1259
|
});
|
|
1241
1260
|
}), this.tabs.forEach((e) => {
|
|
1242
1261
|
Object.entries(e.settings).forEach(([i, s]) => {
|
|
1243
|
-
(s instanceof f || s instanceof m) && (s instanceof
|
|
1262
|
+
(s instanceof f || s instanceof m) && (s instanceof x ? (s._parentTabsSettings = this, s.setOnChange((n) => {
|
|
1244
1263
|
Promise.resolve().then(() => {
|
|
1245
1264
|
this.tabValues[e.id] = this.getTabValues(e), this.triggerDebouncedChange();
|
|
1246
1265
|
});
|
|
@@ -1270,21 +1289,21 @@ class E extends f {
|
|
|
1270
1289
|
handleTabClick(t) {
|
|
1271
1290
|
var o, l;
|
|
1272
1291
|
if (t === this.activeTabId) return;
|
|
1273
|
-
const e = this.tabs.find((
|
|
1292
|
+
const e = this.tabs.find((r) => r.id === this.activeTabId);
|
|
1274
1293
|
e && (this.tabValues[this.activeTabId] = this.getTabValues(e)), this.previousTabId = this.activeTabId, this.activeTabId = t;
|
|
1275
1294
|
const i = (o = this.tabsContainer) == null ? void 0 : o.querySelectorAll(".tab-button");
|
|
1276
|
-
i == null || i.forEach((
|
|
1277
|
-
if (
|
|
1278
|
-
const
|
|
1279
|
-
|
|
1295
|
+
i == null || i.forEach((r) => {
|
|
1296
|
+
if (r instanceof HTMLElement) {
|
|
1297
|
+
const h = this.tabs.find((u) => u.label === r.textContent);
|
|
1298
|
+
r.classList.toggle("active", (h == null ? void 0 : h.id) === t);
|
|
1280
1299
|
}
|
|
1281
1300
|
}), this.updateSettingsFromTab(t);
|
|
1282
1301
|
const s = (l = this.container) == null ? void 0 : l.querySelector(".setting-group-content");
|
|
1283
1302
|
if (s) {
|
|
1284
1303
|
s.innerHTML = "";
|
|
1285
|
-
const
|
|
1286
|
-
Object.values(
|
|
1287
|
-
s.appendChild(
|
|
1304
|
+
const r = this.settings;
|
|
1305
|
+
Object.values(r).forEach((h) => {
|
|
1306
|
+
s.appendChild(h.draw());
|
|
1288
1307
|
});
|
|
1289
1308
|
}
|
|
1290
1309
|
const n = this.getValues();
|
|
@@ -1350,7 +1369,7 @@ class E extends f {
|
|
|
1350
1369
|
activeTabId: this.activeTabId
|
|
1351
1370
|
}, this.tabs.forEach((t) => {
|
|
1352
1371
|
Object.values(t.settings).forEach((e) => {
|
|
1353
|
-
e instanceof
|
|
1372
|
+
e instanceof x && e.updateInitialValues();
|
|
1354
1373
|
});
|
|
1355
1374
|
}));
|
|
1356
1375
|
}
|
|
@@ -1374,7 +1393,7 @@ class E extends f {
|
|
|
1374
1393
|
getTabValues(t) {
|
|
1375
1394
|
const e = {};
|
|
1376
1395
|
return Object.entries(t.settings).forEach(([i, s]) => {
|
|
1377
|
-
s instanceof
|
|
1396
|
+
s instanceof x || s instanceof f ? e[i] = s.getValues() : (s instanceof m, e[i] = s.value);
|
|
1378
1397
|
}), e;
|
|
1379
1398
|
}
|
|
1380
1399
|
/**
|
|
@@ -1402,7 +1421,7 @@ class E extends f {
|
|
|
1402
1421
|
settings: {}
|
|
1403
1422
|
// We don't clone callbacks - they should be set up again on the clone
|
|
1404
1423
|
};
|
|
1405
|
-
return new
|
|
1424
|
+
return new x(e);
|
|
1406
1425
|
}
|
|
1407
1426
|
/**
|
|
1408
1427
|
* Override setValue method to update the TabsSettings state
|
|
@@ -1497,7 +1516,7 @@ class mt extends f {
|
|
|
1497
1516
|
color: new O({
|
|
1498
1517
|
default: (t == null ? void 0 : t.color) ?? "0, 0, 30"
|
|
1499
1518
|
}),
|
|
1500
|
-
opacity: new
|
|
1519
|
+
opacity: new T({
|
|
1501
1520
|
default: (t == null ? void 0 : t.opacity) ?? 100,
|
|
1502
1521
|
minValue: 0,
|
|
1503
1522
|
maxValue: 100
|
|
@@ -1547,7 +1566,7 @@ class ft extends f {
|
|
|
1547
1566
|
color: new O({
|
|
1548
1567
|
default: t.colorDefault ?? "0, 0, 30"
|
|
1549
1568
|
}),
|
|
1550
|
-
opacity: new
|
|
1569
|
+
opacity: new T({
|
|
1551
1570
|
default: t.colorOpacityDefault ?? 100
|
|
1552
1571
|
}),
|
|
1553
1572
|
fontFamily: new B({
|
|
@@ -1600,7 +1619,7 @@ class ft extends f {
|
|
|
1600
1619
|
`;
|
|
1601
1620
|
}
|
|
1602
1621
|
}
|
|
1603
|
-
class
|
|
1622
|
+
class V extends m {
|
|
1604
1623
|
constructor(t) {
|
|
1605
1624
|
super({
|
|
1606
1625
|
...t,
|
|
@@ -1610,9 +1629,9 @@ class y extends m {
|
|
|
1610
1629
|
draw() {
|
|
1611
1630
|
const t = this.value === "auto" ? "text" : "number", e = (o) => {
|
|
1612
1631
|
this.value !== "auto" && (this.props.minValue !== void 0 && (o.min = String(this.props.minValue)), this.props.maxValue !== void 0 && (o.max = String(this.props.maxValue)), this.props.className && o.classList.add(this.props.className), o.addEventListener("input", () => {
|
|
1613
|
-
const l = this.props.minValue ?? Number.MIN_SAFE_INTEGER,
|
|
1614
|
-
let
|
|
1615
|
-
|
|
1632
|
+
const l = this.props.minValue ?? Number.MIN_SAFE_INTEGER, r = this.props.maxValue ?? Number.MAX_SAFE_INTEGER;
|
|
1633
|
+
let h = Number(o.value);
|
|
1634
|
+
h < l && (h = l), h > r && (h = r), o.value = String(h);
|
|
1616
1635
|
}));
|
|
1617
1636
|
}, i = this.createInput({
|
|
1618
1637
|
value: this.value,
|
|
@@ -1639,8 +1658,8 @@ class y extends m {
|
|
|
1639
1658
|
if (l.toLowerCase() === "auto")
|
|
1640
1659
|
this.value = "auto";
|
|
1641
1660
|
else {
|
|
1642
|
-
const
|
|
1643
|
-
isNaN(
|
|
1661
|
+
const r = Number(l);
|
|
1662
|
+
isNaN(r) || (this.value = r);
|
|
1644
1663
|
}
|
|
1645
1664
|
this.onChange && this.onChange(this.value);
|
|
1646
1665
|
}), i;
|
|
@@ -1653,25 +1672,25 @@ class Ct extends f {
|
|
|
1653
1672
|
collapsed: t == null ? void 0 : t.collapsed,
|
|
1654
1673
|
hideCondition: t == null ? void 0 : t.hideCondition,
|
|
1655
1674
|
settings: {
|
|
1656
|
-
marginTop: new
|
|
1675
|
+
marginTop: new V({
|
|
1657
1676
|
title: "Top",
|
|
1658
1677
|
icon: it,
|
|
1659
1678
|
suffix: "px",
|
|
1660
1679
|
default: (t == null ? void 0 : t.marginTop) ?? "auto"
|
|
1661
1680
|
}),
|
|
1662
|
-
marginRight: new
|
|
1681
|
+
marginRight: new V({
|
|
1663
1682
|
title: "Right",
|
|
1664
1683
|
icon: st,
|
|
1665
1684
|
suffix: "px",
|
|
1666
1685
|
default: (t == null ? void 0 : t.marginRight) ?? 0
|
|
1667
1686
|
}),
|
|
1668
|
-
marginBottom: new
|
|
1687
|
+
marginBottom: new V({
|
|
1669
1688
|
title: "Bottom",
|
|
1670
1689
|
icon: nt,
|
|
1671
1690
|
suffix: "px",
|
|
1672
1691
|
default: (t == null ? void 0 : t.marginBottom) ?? 0
|
|
1673
1692
|
}),
|
|
1674
|
-
marginLeft: new
|
|
1693
|
+
marginLeft: new V({
|
|
1675
1694
|
title: "Left",
|
|
1676
1695
|
icon: at,
|
|
1677
1696
|
suffix: "px",
|
|
@@ -1847,13 +1866,13 @@ class bt extends f {
|
|
|
1847
1866
|
...t == null ? void 0 : t.uploadProps,
|
|
1848
1867
|
default: (t == null ? void 0 : t.backgroundImage) ?? ""
|
|
1849
1868
|
}),
|
|
1850
|
-
opacity: new
|
|
1869
|
+
opacity: new T({
|
|
1851
1870
|
default: (t == null ? void 0 : t.opacity) ?? 100
|
|
1852
1871
|
}),
|
|
1853
1872
|
backgroundColor: new O({
|
|
1854
1873
|
default: (t == null ? void 0 : t.backgroundColor) ?? "0, 0, 30"
|
|
1855
1874
|
}),
|
|
1856
|
-
opacityBG: new
|
|
1875
|
+
opacityBG: new T({
|
|
1857
1876
|
default: (t == null ? void 0 : t.opacityBG) ?? 100
|
|
1858
1877
|
})
|
|
1859
1878
|
}
|
|
@@ -1892,21 +1911,21 @@ export {
|
|
|
1892
1911
|
mt as BorderSettingSet,
|
|
1893
1912
|
lt as ButtonSetting,
|
|
1894
1913
|
O as ColorSetting,
|
|
1895
|
-
|
|
1914
|
+
ht as DimensionSetting,
|
|
1896
1915
|
pt as GapSetting,
|
|
1897
1916
|
ft as HeaderTypographySettingSet,
|
|
1898
|
-
|
|
1917
|
+
rt as HeightSetting,
|
|
1899
1918
|
gt as MarginBottomSetting,
|
|
1900
1919
|
Ct as MarginSettingGroup,
|
|
1901
1920
|
b as NumberSetting,
|
|
1902
|
-
|
|
1921
|
+
T as OpacitySetting,
|
|
1903
1922
|
dt as SelectApiSettings,
|
|
1904
1923
|
B as SelectSetting,
|
|
1905
1924
|
m as Setting,
|
|
1906
1925
|
f as SettingGroup,
|
|
1907
1926
|
H as StringSetting,
|
|
1908
1927
|
vt as TabsContainerGroup,
|
|
1909
|
-
|
|
1928
|
+
x as TabsSettings,
|
|
1910
1929
|
ut as Toggle,
|
|
1911
1930
|
U as UploadSetting,
|
|
1912
1931
|
ct as WidthSetting,
|
package/dist/index.d.ts
CHANGED
|
@@ -450,6 +450,8 @@ export declare class SettingGroup<T extends Record<string, Setting<any, any> | S
|
|
|
450
450
|
private isInteracting;
|
|
451
451
|
private interactionStartTime;
|
|
452
452
|
private modifiedSettings;
|
|
453
|
+
private activeSettingId;
|
|
454
|
+
private hasValueChanged;
|
|
453
455
|
constructor(groupProps: SettingGroupProps<T>);
|
|
454
456
|
static hide(): void;
|
|
455
457
|
static show(): void;
|
|
@@ -470,6 +472,7 @@ export declare class SettingGroup<T extends Record<string, Setting<any, any> | S
|
|
|
470
472
|
updateVisibility(): void;
|
|
471
473
|
toggle(): void;
|
|
472
474
|
private saveChangesImmediately;
|
|
475
|
+
private handleChange;
|
|
473
476
|
}
|
|
474
477
|
|
|
475
478
|
export declare type SettingGroupProps<T> = {
|
package/package.json
CHANGED