@xlabs-store/core 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/components/index.js +1 -1
  2. package/components/p-CQ2VND9-.js +1 -0
  3. package/components/p-CQQI-pRu.js +1 -0
  4. package/components/p-CkwLFDlS.js +1 -0
  5. package/components/p-CzHtwC1k.js +1 -0
  6. package/components/{p-BlvrLhyv.js → p-DqayamUz.js} +1 -1
  7. package/components/x-form-builder.js +1 -1
  8. package/components/x-icon-picker-dropdown-content.js +1 -1
  9. package/components/x-input-icon.js +1 -1
  10. package/components/x-login.js +1 -1
  11. package/components/x-table.js +1 -1
  12. package/dist/cjs/icons-BfHE2jcr.js +19261 -0
  13. package/dist/cjs/index.cjs.js +2 -2
  14. package/dist/cjs/{schema-builder-BKX4QdTc.js → schema-builder-DAwDwgIM.js} +98 -14
  15. package/dist/cjs/x-address_51.cjs.entry.js +115 -11
  16. package/dist/cjs/x-icon-picker-dropdown-content.cjs.entry.js +1 -1
  17. package/dist/collection/components/x-form-builder/services/schema/condition-builder.js +48 -6
  18. package/dist/collection/components/x-form-builder/services/schema/form-mapping.js +2 -2
  19. package/dist/collection/components/x-form-builder/utils/condition-engine.js +48 -6
  20. package/dist/collection/components/x-form-builder/x-form-builder.js +96 -6
  21. package/dist/collection/components/x-icon/icons.js +11462 -11492
  22. package/dist/collection/components/x-table/x-table.js +18 -4
  23. package/dist/esm/icons-CQ2VND9-.js +19259 -0
  24. package/dist/esm/index.js +2 -2
  25. package/dist/esm/{schema-builder-DlGEzg5B.js → schema-builder-CekbhOnD.js} +98 -14
  26. package/dist/esm/x-address_51.entry.js +115 -11
  27. package/dist/esm/x-icon-picker-dropdown-content.entry.js +1 -1
  28. package/dist/types/components/x-form-builder/types/common/field-types-enum.d.ts +1 -1
  29. package/dist/types/components/x-form-builder/types/fields/advanced-fields.d.ts +1 -0
  30. package/dist/types/components/x-form-builder/types/fields/form-field-union.d.ts +2 -2
  31. package/dist/types/components/x-form-builder/types/fields/layout-fields.d.ts +10 -1
  32. package/dist/types/components/x-form-builder/types/fields/special-input-fields.d.ts +3 -0
  33. package/dist/types/components/x-form-builder/x-form-builder.d.ts +2 -0
  34. package/dist/xlabs/index.esm.js +1 -1
  35. package/dist/xlabs/{p-45fda37b.entry.js → p-99c568fd.entry.js} +1 -1
  36. package/dist/xlabs/p-CQ2VND9-.js +1 -0
  37. package/dist/xlabs/p-CkwLFDlS.js +1 -0
  38. package/dist/xlabs/p-a4995e36.entry.js +1 -0
  39. package/dist/xlabs/xlabs.esm.js +1 -1
  40. package/package.json +1 -1
  41. package/components/p-BGNOiTqa.js +0 -1
  42. package/components/p-BgCjF74f.js +0 -1
  43. package/components/p-xf66Fag-.js +0 -1
  44. package/components/p-xzKm-BQN.js +0 -1
  45. package/dist/cjs/icons-DJ-kuboh.js +0 -19291
  46. package/dist/esm/icons-BgCjF74f.js +0 -19289
  47. package/dist/xlabs/p-239cf367.entry.js +0 -1
  48. package/dist/xlabs/p-BgCjF74f.js +0 -1
  49. package/dist/xlabs/p-xf66Fag-.js +0 -1
@@ -1 +0,0 @@
1
- import{t}from"./p-DFADJBLL.js";class e{static number(t){return Number(t)}static string(t){return String(t)}static boolean(t){return Boolean(t)}static date(t){return new Date(t)}static detect(t,s){switch(t.type){case"number":return e.number(s);case"email":case"text":case"textarea":case"phone":case"url":case"password":case"color":case"file":return e.string(s);case"switch":return e.boolean(s);case"date":case"datetime":return e.date(s);default:return s}}}function s(t,e){if(!t||!e)return;const s=e.split(".");let r=t;for(const t of s){if(!r||"object"!=typeof r||!(t in r))return;r=r[t]}return r}class r{get mapping(){return{equals:this.equals.bind(this),notEquals:this.notEquals.bind(this),contains:this.contains.bind(this),notContains:this.notContains.bind(this),greaterThan:this.greaterThan.bind(this),lessThan:this.lessThan.bind(this),greaterThanOrEqual:this.greaterThanOrEqual.bind(this),lessThanOrEqual:this.lessThanOrEqual.bind(this),isEmpty:this.isEmpty.bind(this),isNotEmpty:this.isNotEmpty.bind(this),startsWith:this.startsWith.bind(this),endsWith:this.endsWith.bind(this),in:this.in.bind(this),notIn:this.notIn.bind(this)}}equals(t,s,r){return r=e.detect(s,r),t.value===r}notEquals(t,s,r){return r=e.detect(s,r),t.value!==r}contains(t,s,r){return r=e.detect(s,r),Array.isArray(r)?r.includes(t.value):"string"==typeof r&&r.includes(String(t.value))}greaterThan(t,s,r){if("number"==typeof(r=e.detect(s,r))){const e="number"==typeof t.value?t.value:Number(t.value??NaN);return!!Number.isFinite(e)&&r>e}return!1}lessThan(t,s,r){if("number"==typeof(r=e.detect(s,r))){const e="number"==typeof t.value?t.value:Number(t.value??NaN);return!!Number.isFinite(e)&&r<e}return!1}isEmpty(t,s,r){return null==(r=e.detect(s,r))||""===r||Array.isArray(r)&&0===r.length}isNotEmpty(t,s,r){return!(null==(r=e.detect(s,r))||""===r||Array.isArray(r)&&0===r.length)}notContains(t,s,r){return r=e.detect(s,r),Array.isArray(r)?!r.includes(t.value):"string"!=typeof r||!r.includes(String(t.value))}greaterThanOrEqual(t,s,r){if("number"==typeof(r=e.detect(s,r))){const e="number"==typeof t.value?t.value:Number(t.value??NaN);return!!Number.isFinite(e)&&r>=e}return!1}lessThanOrEqual(t,s,r){if("number"==typeof(r=e.detect(s,r))){const e="number"==typeof t.value?t.value:Number(t.value??NaN);return!!Number.isFinite(e)&&r<=e}return!1}startsWith(t,s,r){return"string"==typeof(r=e.detect(s,r))&&r.startsWith(String(t.value))}endsWith(t,s,r){return"string"==typeof(r=e.detect(s,r))&&r.endsWith(String(t.value))}in(t,s,r){return r=e.detect(s,r),Array.isArray(t.value)?t.value.includes(r):"string"==typeof t.value&&t.value.split(",").map((t=>t.trim())).includes(String(r))}notIn(t,s,r){return r=e.detect(s,r),Array.isArray(t.value)?!t.value.includes(r):"string"!=typeof t.value||!t.value.split(",").map((t=>t.trim())).includes(String(r))}run(t,e,r){return function(t,e,r){if(!t||!t.field||!t.operator)return!1;const{field:i,operator:n,value:a}=t,o=function(t,e,r){if(t)return t.startsWith("$")?s(r,t.substring(1)):s(e,t)}(i,e,r);return(()=>{switch(n){case"equals":return o===a;case"notEquals":return o!==a;case"contains":return Array.isArray(o)?o.includes(a):"string"==typeof o&&o.includes(String(a));case"notContains":return Array.isArray(o)?!o.includes(a):"string"!=typeof o||!o.includes(String(a));case"greaterThan":return Number(o)>Number(a);case"lessThan":return Number(o)<Number(a);case"greaterThanOrEqual":return Number(o)>=Number(a);case"lessThanOrEqual":return Number(o)<=Number(a);case"isNotEmpty":case"notEmpty":return null!=o&&""!==o&&!(Array.isArray(o)&&0===o.length);case"isEmpty":case"empty":return null==o||""===o||Array.isArray(o)&&0===o.length;case"startsWith":return String(o).startsWith(String(a));case"endsWith":return String(o).endsWith(String(a));case"in":return Array.isArray(a)?a.includes(o):"string"==typeof a&&a.split(",").map((t=>t.trim())).includes(String(o));case"notIn":return Array.isArray(a)?!a.includes(o):"string"!=typeof a||!a.split(",").map((t=>t.trim())).includes(String(o));default:return!1}})()}({field:t.field,operator:t.condition,value:t.value},e,r)}}class i extends r{builder;get form(){return this.builder.form}get schema(){return this.builder.schema}get conditions(){return this.schema.conditions||[]}executors=[];isCheckingAll=!1;constructor(t){super(),this.builder=t,this.extract()}checkAll(){this.isCheckingAll=!0,this.executors.forEach((t=>t())),this.isCheckingAll=!1,this.builder.notifySubscribers()}extract(){this.conditions.forEach((t=>{"when"in t?this.advanced(t):"conditions"in t?this.group(t):this.condition(t)}))}getEvaluationValues(){const t={};return this.form.mappingById.forEach(((e,s)=>{e.control&&(t[s]=e.control.value)})),this.form.mapping.forEach(((e,s)=>{e.control&&(t[s]=e.control.value)})),t}group(t){const e=()=>{const e=this.getEvaluationValues();this.builder.callEvent("beforeConditionCheck",t,e);const s=t.conditions.map((t=>this.run(t,e,this.builder.context))),r="and"===t.operator?s.every(Boolean):s.some(Boolean);r&&t.actions.forEach((t=>{this.execute(t.action,t.actionField)})),this.builder.callEvent("afterConditionCheck",t,e,r),this.isCheckingAll||this.builder.notifySubscribers()};t.conditions.forEach((t=>{const s=this.form.mapping.get(t.field);s&&"control"in s&&s.control&&s.control.subscribe((()=>e()))})),this.executors.push(e),e()}advanced(t){const e=()=>{const e=this.getEvaluationValues();this.builder.callEvent("beforeConditionCheck",t,e);const s=t.when.rules.map((s=>!(!(this.form.mappingById.get(s.field)??this.form.mapping.get(s.field))&&!s.field?.startsWith("$"))&&this.run({id:t.id,field:s.field,condition:s.operator,value:s.value,action:"show",actionField:"none"},e,this.builder.context))),r="or"===t.when.operator?s.some(Boolean):s.every(Boolean);(r?t.then:t.else||[]).forEach((t=>{const e=this.form.mappingById.get(t.target)??this.form.mapping.get(t.target);this.execute(t.action,e?e.id||e.name:t.target,t.value)})),this.builder.callEvent("afterConditionCheck",t,e,r),this.isCheckingAll||this.builder.notifySubscribers()};t.when.rules.forEach((t=>{const s=this.form.mappingById.get(t.field)??this.form.mapping.get(t.field);s&&"control"in s&&s.control&&s.control.subscribe((()=>e()))})),this.executors.push(e),e()}condition(t){const e=()=>{const e=this.form.mappingById.get(t.field)||this.form.mapping.get(t.field);if(e&&"control"in e&&e.control){const s=e.control.value,r=this.getEvaluationValues();this.builder.callEvent("beforeConditionCheck",t,s);const i=this.run(t,r,this.builder.context);i&&this.execute(t.action,t.actionField),this.builder.callEvent("afterConditionCheck",t,s,i),this.isCheckingAll||this.builder.notifySubscribers()}},s=this.form.mappingById.get(t.field)||this.form.mapping.get(t.field);s&&"control"in s&&s.control&&(s.control.subscribe((()=>e())),this.executors.push(e)),e()}execute(t,e,s){const r="all"===e?Array.from(this.form.mapping.keys()):[e];for(const e of r){const r=this.form.mappingById.get(e)||this.form.mapping.get(e);if(console.log(`[ConditionEngine] Executing action '${t}' on field '${e}'. Field found:`,!!r,"Value:",s),r)switch(t){case"show":r.hidden=!1;break;case"hide":r.hidden=!0;break;case"enable":r.disabled=!1;break;case"disable":r.disabled=!0;break;case"require":r.required=!0;break;case"unrequire":r.required=!1;break;case"setContent":r.content=s;break;case"setLabel":r.label=String(s)}}}}class n{builder;constructor(t){this.builder=t,this.extract()}extract(){Array.from(this.builder.form.mapping.values()).forEach((t=>{"number"===t.type&&t.formula&&this.setupFormula(t)}))}setupFormula(t){const e=t.formula,s=this.getDependencies(e),r=()=>{const s=this.getEvaluationValues(),r=this.evaluate(e,s),i=t.control;i&&i.value!==r&&i.setValue(r)},i=new Set;s.forEach((t=>{if(i.has(t))return;const e=this.builder.form.mappingById.get(t)||this.builder.form.mapping.get(t);e&&e.control&&(e.control.subscribe((()=>{r()})),i.add(t))})),setTimeout((()=>r()),0)}getDependencies(t){return(t.match(/[\$]{1,2}[a-zA-Z0-9_-]+/g)||[]).map((t=>t.replace(/^[\$]{1,2}/,"")))}getEvaluationValues(){const t={};return this.builder.form.mappingById.forEach(((e,s)=>{e.control&&(t[s]=e.control.value)})),this.builder.form.mapping.forEach(((e,s)=>{e.control&&(t[s]=e.control.value)})),t}evaluate(t,e){try{let s=t;const r=this.getDependencies(t);r.sort(((t,e)=>e.length-t.length)),r.forEach((t=>{const r=void 0!==e[t]?e[t]:0,i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(`\\$[\\$]?${i}(\\b|[^a-zA-Z0-9_-])`,"g");s=s.replace(n,((t,e)=>String(r||0)+(e||"")))}));const i=s.replace(/[^0-9\+\-\*\/\(\)\. ]/g,"");if(!i.trim())return 0;const n=new Function(`return ${i}`)(),a=Number(n);return isFinite(a)?a:0}catch(e){return console.warn("Formula Evaluation Error:",e,"Formula:",t),0}}}class a{_value;_errors=null;_status="VALID";_parent=null;_validators=[];_asyncValidators=[];_subscribers=new Set;_touched=!1;_dirty=!1;constructor(t,e){t&&(this._validators=t),e&&(this._asyncValidators=e)}get value(){return this._value}get errors(){return this._errors}get status(){return this._status}get valid(){return"VALID"===this._status}get invalid(){return"INVALID"===this._status}get pending(){return"PENDING"===this._status}get disabled(){return"DISABLED"===this._status}get parent(){return this._parent}get touched(){return this._touched}get untouched(){return!this._touched}get dirty(){return this._dirty}get pristine(){return!this._dirty}runValidators(){let t=null;for(const e of this._validators){const s=e(this);s&&(t=t||{},Object.assign(t,s))}return t}async runAsyncValidators(){let t=null;for(const e of this._asyncValidators){const s=await e(this._value);s&&(t=t||{},Object.assign(t,s))}return t}async updateValueAndValidity(t={}){const{emitEvent:e=!0}=t;if("DISABLED"!==this._status){if(this._errors=this.runValidators(),this._status=this._errors?"INVALID":"VALID",this._asyncValidators.length>0&&!this._errors){this._status="PENDING",e&&this.notifySubscribers();const t=await this.runAsyncValidators();t?(this._errors={...this._errors??{},...t},this._status="INVALID"):this._status="VALID"}e&&(this.notifySubscribers(),this._parent&&this._parent.updateValueAndValidity({emitEvent:!0}))}}markAsTouched(){this._touched=!0}markAsUntouched(){this._touched=!1}markAsDirty(){this._dirty=!0}markAsPristine(){this._dirty=!1}disable(){this._status="DISABLED",this.notifySubscribers()}enable(){this._status="VALID",this.updateValueAndValidity()}setValidators(t){this._validators=t,this.updateValueAndValidity()}setAsyncValidators(t){this._asyncValidators=t,this.updateValueAndValidity()}clearValidators(){this._validators=[],this.updateValueAndValidity()}clearAsyncValidators(){this._asyncValidators=[],this.updateValueAndValidity()}registerValidator(t){this._validators.push(t),this.updateValueAndValidity()}registerValidatorAsync(t){this._asyncValidators.push(t),this.updateValueAndValidity()}setParent(t){this._parent=t}subscribe(t){return this._subscribers.add(t),()=>this._subscribers.delete(t)}notifySubscribers(){this._subscribers.forEach((t=>t(this._value)))}setValueInternal(t){this._value=t}hasError(t){return!!this._errors&&void 0!==this._errors[t]}getError(t){return this._errors?this._errors[t]:null}}class o extends a{constructor(t=null,e,s){let r=[],i=[];Array.isArray(e)?(r=e,i=s||[]):e&&(r=e.validators||[],i=e.asyncValidators||[]),super(r,i),this.setValueInternal(t),this.updateValueAndValidity({emitEvent:!1})}setValue(t,e={}){const{emitEvent:s=!0}=e;this.setValueInternal(t),this.markAsDirty(),this.updateValueAndValidity({emitEvent:s})}patchValue(t,e={}){this.setValue(t,e)}reset(t=null,e={}){this.setValueInternal(t),this.markAsPristine(),this.markAsUntouched(),this.updateValueAndValidity(e)}}class h extends a{_controls=[];constructor(t,e,s){let r=[],i=[];Array.isArray(e)?(r=e,i=s||[]):e&&(r=e.validators||[],i=e.asyncValidators||[]),super(r,i),this._controls=t,t.forEach((t=>{t.setParent(this)})),this.updateValueAndValidity({emitEvent:!1})}get controls(){return this._controls}get value(){return this._controls.filter((t=>!t.disabled)).map((t=>t.value))}get length(){return this._controls.length}at(t){return this._controls[t]||null}push(t){this._controls.push(t),t.setParent(this),this.updateValueAndValidity()}insert(t,e){this._controls.splice(t,0,e),e.setParent(this),this.updateValueAndValidity()}removeAt(t){this._controls[t]&&(this._controls.splice(t,1),this.updateValueAndValidity())}setControl(t,e){this._controls[t]&&(this._controls[t]=e,e.setParent(this),this.updateValueAndValidity())}clear(){this._controls=[],this.updateValueAndValidity()}setValue(t,e={}){if(t.length!==this._controls.length)throw new Error("setValue: value array length must match controls array length");t.forEach(((t,e)=>{this._controls[e].setValue(t,{emitEvent:!1})})),this.markAsDirty(),this.updateValueAndValidity(e)}patchValue(t,e={}){t.forEach(((t,e)=>{this._controls[e]&&this._controls[e].patchValue(t,{emitEvent:!1})})),this.updateValueAndValidity(e)}reset(t=[],e={}){this._controls.forEach(((e,s)=>{e.reset(t[s],{emitEvent:!1})})),this.markAsPristine(),this.markAsUntouched(),this.updateValueAndValidity(e)}getRawValue(){return this._controls.map((t=>t.value))}}class u extends a{_controls={};constructor(t,e,s){let r=[],i=[];Array.isArray(e)?(r=e,i=s||[]):e&&(r=e.validators||[],i=e.asyncValidators||[]),super(r,i),this._controls=t,Object.values(t).forEach((t=>{t.setParent(this)})),this.updateValueAndValidity({emitEvent:!1})}get controls(){return this._controls}get value(){const t={};return Object.keys(this._controls).forEach((e=>{const s=this._controls[e];s.disabled||(t[e]=s.value)})),t}setValue(t,e={}){Object.keys(t).forEach((e=>{if(!this._controls[e])throw new Error(`Cannot find form control with name: ${e}`);this._controls[e].setValue(t[e],{emitEvent:!1})})),this.markAsDirty(),this.updateValueAndValidity(e)}patchValue(t,e={}){Object.keys(t).forEach((e=>{this._controls[e]&&this._controls[e].patchValue(t[e],{emitEvent:!1})})),this.updateValueAndValidity(e)}reset(t={},e={}){Object.keys(this._controls).forEach((e=>{this._controls[e].reset(t[e],{emitEvent:!1})})),this.markAsPristine(),this.markAsUntouched(),this.updateValueAndValidity(e)}addControl(t,e){this._controls[t]=e,e.setParent(this),this.updateValueAndValidity()}removeControl(t){this._controls[t]&&(delete this._controls[t],this.updateValueAndValidity())}setControl(t,e){this._controls[t]&&this.removeControl(t),this.addControl(t,e)}contains(t){return void 0!==this._controls[t]}get(t){const e=Array.isArray(t)?t:t.split(".");if(0===e.length)return null;let s=this._controls[e[0]]||null;for(let t=1;t<e.length&&s;t++)if(s instanceof u)s=s.controls[e[t]]||null;else{if(!(s instanceof h))return null;{const r=parseInt(e[t],10);s=s.at(r)||null}}return s}async updateValueAndValidity(t={}){const{emitEvent:e=!0}=t;if("DISABLED"===this._status)return;this._errors=this.runValidators();let s=!1;const r={};for(const t of Object.keys(this._controls)){const e=this._controls[t];e.invalid&&(s=!0,e.errors&&(r[t]=e.errors))}s?(this._errors=this._errors||{},Object.assign(this._errors,r),this._status="INVALID"):this._status=this._errors?"INVALID":"VALID",e&&(this.notifySubscribers(),this._parent&&await this._parent.updateValueAndValidity({emitEvent:!0}))}getRawValue(){const t={};return Object.keys(this._controls).forEach((e=>{t[e]=this._controls[e].value})),t}}class c{static required(t){const e=t.value;return null==e||""===e||Array.isArray(e)&&0===e.length?{required:!0}:null}static email(t){return t.value?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.value)?null:{email:!0}:null}static min(t){return e=>!e.value||isNaN(e.value)?null:e.value<t?{min:{min:t,actual:e.value}}:null}static max(t){return e=>!e.value||isNaN(e.value)?null:e.value>t?{max:{max:t,actual:e.value}}:null}static minLength(t){return e=>{if(null==e.value||""===e.value)return null;const s=String(e.value);return s.length<t?{minLength:{minLength:t,actualLength:s.length}}:null}}static maxLength(t){return e=>{if(null==e.value||""===e.value)return null;const s=String(e.value);return s.length>t?{maxLength:{maxLength:t,actualLength:s.length}}:null}}static pattern(t){return e=>e.value?("string"==typeof t?new RegExp(`^(?:${t})$`):t).test(e.value)?null:{pattern:{requiredPattern:t,actualValue:e.value}}:null}static hasUppercase(t){return t.value?/[A-Z]/.test(t.value)?null:{hasUppercase:!0}:null}static hasNumber(t){return t.value?/[0-9]/.test(t.value)?null:{hasNumber:!0}:null}static hasSpecialChar(t){return t.value?/[!@#$%^&*(),.?":{}|<>]/.test(t.value)?null:{hasSpecialChar:!0}:null}static integer(t){if(null==t.value||""===t.value)return null;const e=Number(t.value);return!isNaN(e)&&Number.isInteger(e)?null:{integer:!0}}static number(t){if(null==t.value||""===t.value)return null;const e=Number(t.value);return isNaN(e)?{number:!0}:null}static sameAs(t){return e=>{if(!e.value)return null;const s=e.parent;if(!s||"function"!=typeof s.get)return null;const r=s.get(t);return r?e.value===r.value?null:{sameAs:{fieldName:t}}:null}}}class l{control(t,e,s){return new o(t,e,s)}group(t,e){const s={};return Object.keys(t).forEach((e=>{const r=t[e];s[e]=r instanceof a?r:Array.isArray(r)?new o(r[0],r[1],r[2]):new o(r)})),new u(s,e?.validators,e?.asyncValidators)}array(t,e){const s=t.map((t=>t instanceof a?t:Array.isArray(t)?new o(t[0],t[1],t[2]):new o(t)));return new h(s,e?.validators,e?.asyncValidators)}}const m=["text","password","email","number","phone","url","date","datetime","time","color","checkbox","radio","file","range","textarea","select","switch","slider","rate","tags","daterange","tree-select","transfer","cascader","auto-complete","editor","location","input","captcha","address","table"];class f{static isEmpty(t){return null==t||""===t}static isNotEmpty(t){return null!=t&&""!==t}static isFieldGroup(t){return"elements"in t&&Array.isArray(t.elements)}static isInputField(t){return m.includes(t)}static builderFromControl(t){try{const e=f.buildValidators(t),s=new o(t.defaultValue??t.targetKeys??t.defaultChecked??"",e);return t.control=s,{field:t,control:s}}catch(e){throw new Error(`Error building control for field ${t?.name}: ${e}`)}}static buildValidators(t){const e=[];if(t.required&&e.push(c.required),"minLength"in t&&!f.isEmpty(t.minLength)&&e.push(c.minLength(t.minLength)),"maxLength"in t&&!f.isEmpty(t.maxLength)&&e.push(c.maxLength(t.maxLength)),"pattern"in t&&!f.isEmpty(t.pattern)&&e.push(c.pattern(t.pattern)),"email"===t.type&&e.push(c.email),"min"in t&&!f.isEmpty(t.min)&&e.push(c.min(Number(t.min))),"max"in t&&!f.isEmpty(t.max)&&e.push(c.max(Number(t.max))),t.hasUppercase&&e.push(c.hasUppercase),t.hasNumber&&e.push(c.hasNumber),t.hasSpecialChar&&e.push(c.hasSpecialChar),"number"===t.type){const s=t;"integer"===s.numberType?e.push(c.integer):"decimal"===s.numberType&&e.push(c.number)}if(Array.isArray(t.validators)&&t.validators.length>0)for(const s of t.validators)switch(s.type){case"required":e.includes(c.required)||e.push(c.required);break;case"minLength":f.isEmpty(s.value)||e.push(c.minLength(Number(s.value)));break;case"maxLength":f.isEmpty(s.value)||e.push(c.maxLength(Number(s.value)));break;case"pattern":f.isEmpty(s.value)||e.push(c.pattern(s.value));break;case"min":f.isEmpty(s.value)||e.push(c.min(Number(s.value)));break;case"max":f.isEmpty(s.value)||e.push(c.max(Number(s.value)));break;case"hasUppercase":e.includes(c.hasUppercase)||e.push(c.hasUppercase);break;case"hasNumber":e.includes(c.hasNumber)||e.push(c.hasNumber);break;case"hasSpecialChar":e.includes(c.hasSpecialChar)||e.push(c.hasSpecialChar);break;case"integer":e.includes(c.integer)||e.push(c.integer);break;case"number":e.includes(c.number)||e.push(c.number);break;case"sameAs":f.isEmpty(s.value)||e.push(c.sameAs(s.value))}return e}static translate(t,e){return t?e?t.replace(/\{\{(\w+)\}\}/g,((t,s)=>void 0!==e[s]?e[s]:`{{${s}}}`)):t:""}static messageValidator(){const e=t("validation",{},{});return{required:e.required||"This field is required",email:e.email||"Invalid email",min:e.min||"Value is too small",max:e.max||"Value is too large",minLength:e.minLength||"Value is too short",maxLength:e.maxLength||"Value is too long",pattern:e.pattern||"Invalid pattern",hasUppercase:e.hasUppercase||"Uppercase letter required",hasNumber:e.hasNumber||"Number required",hasSpecialChar:e.hasSpecialChar||"Special character required",type:e.type||"Invalid type",integer:e.integer||"Value must be an integer",number:e.number||"Value must be a number",custom:e.custom||"Invalid value"}}}class d extends u{builder;mapping=new Map;mappingById=new Map;mappingObject={};fb=new l;get schema(){return this.builder.schema}is_custom_submit=!1;constructor(t){super({}),this.builder=t,this.mapping=this.toMapping(),this.mappingObject=this.toMappingObject(),this.toFormMapping(this.mappingObject,this)}toMapping(){const t=e=>{const s=new Map;if(!e||!Array.isArray(e))return s;for(const r of e)if(r&&("button"===r.type&&"submit"===r.htmlType&&(this.is_custom_submit=!0),r.name&&s.set(r.name,r),r.id&&(this.mappingById.set(r.id,r),r.name||s.set(r.id,r)),f.isFieldGroup(r)&&t(r.elements).forEach(((t,e)=>s.set(e,t))),"tabs"===r.type&&r.items&&Array.isArray(r.items)))for(const e of r.items)e&&Array.isArray(e.elements)&&t(e.elements).forEach(((t,e)=>s.set(e,t)));return s},e=this.schema?.elements||this.schema?.fields,s=this.schema?.actions||[],r=t(e);if(s&&Array.isArray(s))for(const t of s)t.id&&(this.mappingById.set(t.id,t),t.id.startsWith("action-")||r.set(t.id,t));return r}toMappingObject(){const t=(t,e)=>{const s=e.name;if(!s)return;const r=s.split(".");let i=t;for(let t=0;t<r.length;t++){let s=r[t];const n=s.endsWith("[]"),a=n?s.replace("[]",""):s,o=t===r.length-1;if(n){Array.isArray(i[a])||(i[a]=[{}]);const t=i[a];t[0]&&"object"==typeof t[0]&&!Array.isArray(t[0])||(t[0]={}),i=t[0]}else{if(o){i[a]||(i[a]=e.name);break}i[a]||(i[a]={}),i=i[a]}}},e={};for(const[s,r]of Array.from(this.mapping.entries()))t(e,r);return e}toFormMapping(t,e){for(const[s,r]of Object.entries(t))if(Array.isArray(r)){const t=this.fb.array([]);for(const e of r)if(e instanceof Object&&!(e instanceof Array)){const s=this.fb.group({});this.toFormMapping(e,s),t.push(s)}else{const s=this.mapping.get(e);if(!s){console.warn(`Field with name ${e} not found in mapping.`);continue}const{control:r}=f.builderFromControl(s);this.validateOnUseApi(s),r.subscribe((t=>{this.builder.callEvent("onFieldChange",s.name,t)})),t.push(r)}e instanceof u?e.addControl(s,t):e.push(t)}else if(r instanceof Object){const t=e,i=new u({});this.toFormMapping(r,i),t.addControl(s,i)}else{const t=this.mapping.get(r);if(!t){console.warn(`Field with name ${r} not found in mapping.`);continue}const i=e;this.validateOnUseApi(t);const{control:n}=f.builderFromControl(t);if(n.subscribe((e=>{this.builder.callEvent("onFieldChange",t.name,e)})),i.addControl(s,n),this.builder.showErrorCheckbox){const e=this.fb.control(!1);i.addControl(`isError_${t.name}`,e)}}}validateOnUseApi(t){}markAllAsTouched(){for(const[t,e]of Array.from(this.mapping.entries()))e.control&&e.control.markAsTouched()}onSubmit(){}onReset(){}get value(){const t=super.value;return this.cleanSubmitData(t),t}getRawValue(){const t=super.getRawValue();return this.cleanSubmitData(t),t}cleanSubmitData(t){if(t)for(const[e,s]of Array.from(this.mapping.entries()))s&&!1===s.submitData&&s.name&&this.deletePath(t,s.name)}deletePath(t,e){if(!t||!e)return;const s=e.split(".");let r=t;for(let t=0;t<s.length-1;t++){const e=s[t];if(e.endsWith("[]")){const i=r[e.replace("[]","")];if(Array.isArray(i)){const e=s.slice(t+1).join(".");i.forEach((t=>this.deletePath(t,e)))}return}if(r=r[e],!r)return}const i=s[s.length-1];i.endsWith("[]")?delete r[i.replace("[]","")]:delete r[i]}}class b{static validate(t){const e=[];if(!t)return e.push("Schema is undefined or null."),e;const s=t.elements||t.fields;return s&&Array.isArray(s)?(0===s.length&&e.push("Schema elements array is empty."),s.forEach(((t,s)=>{this.validateField(t,`elements[${s}]`,e)}))):e.push('Schema must contain an "elements" or "fields" array.'),e}static validateField(t,e,s){t?(t.type||s.push(`Field at ${e} is missing required property "type".`),["panel","grid","container"].includes(t.type)&&"elements"in t&&Array.isArray(t.elements)&&t.elements.forEach(((t,r)=>{this.validateField(t,`${e}.elements[${r}]`,s)}))):s.push(`Field at ${e} is undefined or null.`)}}class g{schema;showErrorCheckbox=!1;form;context={};get fields(){return this.schema?.elements||this.schema?.fields||[]}events={};plugins=[];_subscribers=new Set;on(t,e){return this.events[t]=e,this}conditions;formulas;constructor(t,e={}){this.schema=t,this.showErrorCheckbox=!!e.showErrorCheckbox,this.form=new d(this);const s=b.validate(this.schema);s.length>0&&console.error("SchemaBuilder Error: The provided schema is invalid.",s),this.conditions=new i(this),this.formulas=new n(this),this.callEvent("onInit")}callEvent(t,...e){const s=this.events[t];s&&s({builder:this,form:this.form,schema:this.schema},...e)}async use(t,e){return this.plugins.push(t),await t(this,e),this}subscribe(t){return this._subscribers.add(t),()=>this._subscribers.delete(t)}notifySubscribers(){this._subscribers.forEach((t=>t(this.form.value)))}}export{g as S,f as U}
@@ -1 +0,0 @@
1
- import{t as e,p as t,H as o,d as n,h as s}from"./p-BLqwG7xa.js";import{U as a,S as r}from"./p-xf66Fag-.js";import{t as i}from"./p-DFADJBLL.js";import{d as l}from"./p-9T3IQVUX.js";import{d as c}from"./p-k2uLDFNn.js";import{d}from"./p-DIZuWptV.js";import{d as p}from"./p-DZtvVtvb.js";import{d as m}from"./p-CmfyRJYt.js";import{d as h}from"./p-D4Joi-Km.js";import{d as u}from"./p-BzX-LA7W.js";import{d as x}from"./p-CzjK_fJj.js";import{d as g}from"./p-N4_1eZ9k.js";import{d as f}from"./p-CxMQkHjk.js";import{d as b}from"./p-DXMO8s1V.js";import{d as y}from"./p-C1PUbETy.js";import{d as v}from"./p-DwySgZYx.js";import{d as k}from"./p-DPo53FC8.js";import{d as C}from"./p-tMIvQ4L0.js";import{d as w}from"./p-DUjF0MeP.js";import{d as E}from"./p-jTIj1nFL.js";import{d as j}from"./p-Cuf33Rgj.js";import{d as S}from"./p-CIOnWzKr.js";import{d as P}from"./p-BogEYBiK.js";import{d as D}from"./p-C1_JmoB8.js";import{d as T}from"./p-4BROAJ-M.js";import{d as X}from"./p-Dn1c0e9W.js";import{d as $}from"./p-Da7AZprv.js";import{d as B}from"./p-Cp3SPBy3.js";import{d as A}from"./p-BSLE4EQn.js";import{d as z}from"./p-D_184xNl.js";import{d as L}from"./p-Cf_74fjT.js";import{d as F}from"./p-Brr9Q7gj.js";import{d as I}from"./p-B97Hj_bs.js";import{d as W}from"./p-CXhCHTJf.js";import{d as R}from"./p-CzErFq8K.js";import{d as M}from"./p-ez-wfqCC.js";import{d as K}from"./p-BoPZ9Se8.js";import{d as N}from"./p-BvOnPBRo.js";import{d as O}from"./p-yktKa2eA.js";import{d as _}from"./p-DTPUsC3Q.js";import{d as V}from"./p-CkyEMR2k.js";import{d as q}from"./p-CnPsn8zN.js";import{d as U}from"./p-BGNOiTqa.js";import{d as H}from"./p-EYMvnfpO.js";import{d as J}from"./p-PNU1f8B9.js";import{d as Q}from"./p-BnnNgLpE.js";import{d as Z}from"./p-CgaLhv3u.js";import{d as Y}from"./p-DtIk7IPf.js";import{d as G}from"./p-SFcKtdEL.js";import{d as ee}from"./p-DobuHW4v.js";import{d as te}from"./p-DINdyuGa.js";import{d as oe}from"./p-BQtB82ld.js";const ne={},se=t(class extends o{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.xChange=n(this,"xChange",7),this.formSubmit=n(this,"formSubmit",7),this.xTableAction=n(this,"xTableAction",7),this.formError=n(this,"formError",7),this.ready=n(this,"ready",7),this.xClick=n(this,"xClick",7),this.valueChange=n(this,"valueChange",7)}xChange;formSubmit;xTableAction;formError;ready;xClick;valueChange;get el(){return this}getMessageValidator(e,t={}){if(!t||0===Object.keys(t).length)return[];const o={...e,id:e.id,name:e.name,label:e.label,field:e.label||e.name||"Field"},n=e?.validationMessages||{},s=this.schema?.setting?.validateMessages||{},r=a.messageValidator();return Object.entries(t).map((([t,a])=>{let l=n[t]||s[t]||r[t];return l||"captcha"!==t||(l=e.message||e.error||"Captcha is incorrect"),i(l,{...a,...o})}))}get mapping(){const e=e=>{const{commonProps:t,onChange:o,onPressEnter:n}=this.getcommonProps(e);return s("x-input",{key:e.id||e.name,...t,type:e.type,value:e.control?e.control.value:e.defaultValue||"",onXChange:o,onXPressEnter:n,onXBlur:()=>e.control?e.control.markAsTouched():null})},t=e=>{let{commonProps:t}=this.getcommonProps(e);const o=e,n=o.min?new Date(o.min):void 0,a=o.max?new Date(o.max):void 0,r=e.control?e.control.value:e.defaultValue;let i={start:null,end:null};Array.isArray(r)?i={start:r[0]instanceof Date?r[0].toISOString().split("T")[0]:r[0],end:r[1]instanceof Date?r[1].toISOString().split("T")[0]:r[1]}:r&&"object"==typeof r&&("start"in r||"end"in r)&&(i={start:r.start??null,end:r.end??null});const l=e.placeholder,c=Array.isArray(l)?l[0]??"Start":l||"Start",d=Array.isArray(l)?l[1]??"End":l||"End";return s("x-range-picker",{...t,placeholder:[c,d],onXChange:t=>{const o=t?.detail;let n;n=o&&"object"==typeof o&&"value"in o?o.value:o,e.control?e.control.setValue(n):e.value=n,this._tick++},picker:e.picker||"date",format:e.format,placement:e.placement,minDate:n?n.toISOString().split("T")[0]:void 0,maxDate:a?a.toISOString().split("T")[0]:void 0,value:i,size:t.size,showTime:e.showTime})};return{text:e,input:e,email:e,password:e,url:e,number:e=>{const{commonProps:t,onChange:o,onPressEnter:n}=this.getcommonProps(e),a=e,r=a.maxLength??a.validators?.find((e=>"maxLength"===e.type))?.value,{minLength:i,maxLength:l,...c}=t;return s("x-input-number",{...c,value:e.control?e.control.value:e.defaultValue,status:t.status,min:a.min,max:a.max,step:a.step,precision:a.precision,controls:a.controls,stringMode:a.stringMode,currency:a.currency,addonAfter:a.addonAfter,addonBefore:a.addonBefore,onXChange:e=>{const t=e.detail&&"object"==typeof e.detail&&"value"in e.detail?e.detail.value:e.detail;void 0!==r&&null!=t&&String(t).length>r||o(e)},onXPressEnter:n})},textarea:e,select:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);const n=e,a="single"===n.mode?void 0:n.mode;return s("x-select",{...t,value:e.control?e.control.value:e.defaultValue,mode:a,allowClear:n.allowClear??t.allowClear??!1,showSearch:n.showSearch??!1,placeholder:n.placeholder||t.placeholder,onXChange:o,options:n.options||[]})},radio:e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-radio-group",{...t,value:e.control?e.control.value:e.defaultValue,options:e.options||[],direction:e.direction||e.orientation||"horizontal",placement:e.placement||"end",onXChange:o})},checkbox:e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e),n=e,a=n.options||[],r=e.control?e.control.value:t.defaultValue,i=Array.isArray(r);return s("div",{style:{margin:"4px 0"}},s("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap",flexDirection:"vertical"===(n.direction||n.orientation||"horizontal")?"column":"row"}},a.length>0?a.map(((a,l)=>s("x-checkbox",{key:`${e.name}-${l}`,...t,value:a.value,disabled:a.disabled||t.disabled,onXChange:o,checked:i?(r||[]).includes(a.value):r===a.value,placement:a.placement||n.placement||"end"},String(a.label)))):s("x-checkbox",{...t,onXChange:o,checked:!!r,placement:n.placement||"end"},String(e.label))))},date:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);const n=e.min?new Date(e.min):void 0,a=e.max?new Date(e.max):void 0,r=e.control?e.control.value:e.defaultValue,i=!!e.showTime;return s("x-date-picker",{...t,onXChange:o,picker:e.picker||"date",format:e.format,placement:e.placement,showTime:i,minDate:n?n.toISOString().split("T")[0]:void 0,maxDate:a?a.toISOString().split("T")[0]:void 0,value:"string"==typeof r?r:r instanceof Date?i?r.toISOString():r.toISOString().split("T")[0]:"",size:t.size})},datetime:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);const n=e.min?new Date(e.min):void 0,a=e.max?new Date(e.max):void 0,r=e.control?e.control.value:e.defaultValue;return s("x-date-picker",{...t,onXChange:o,picker:e.picker||"date",format:e.format,placement:e.placement,showTime:!0,minDate:n?n.toISOString().split("T")[0]:void 0,maxDate:a?a.toISOString().split("T")[0]:void 0,value:"string"==typeof r?r:r instanceof Date?r.toISOString():"",size:t.size})},time:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);const n=e.control?e.control.value:e.defaultValue,a=n instanceof Date?n.toTimeString().split(" ")[0]:"string"==typeof n?n:"",r={margin:"8px 0",...t.disabled?{pointerEvents:"none",opacity:"0.5"}:{}};return s("div",{style:r},s("x-time-picker",{...t,value:a,onXChange:e=>{o(e)}}))},file:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-upload",{...t,onXChange:o,listType:e.listType,multiple:e.multiple,maxCount:e.maxCount,accept:e.accept,action:e.action,drag:e.drag,showUploadList:e.showUploadList??!0,maxFileSize:e.maxSize?1024*e.maxSize*1024:void 0,fileList:e.control?e.control.value:e.defaultValue||[]},!("picture-card"===e.listType||"picture-circle"===e.listType)&&!e.drag&&s("x-button",null,s("x-icon",{slot:"icon",name:"upload"}),s("span",null,"Click to Upload")))},slider:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-slider",{...t,value:e.control?e.control.value:e.defaultValue,range:e.range,marks:e.marks,tooltip:void 0!==e.tooltip?e.tooltip:e.tooltipVisible,allowCross:e.allowCross,pushable:e.pushable,draggableTrack:e.draggableTrack,onXChange:o})},switch:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);const n=e;return s("x-switch",{...t,checked:e.control?e.control.value:e.defaultValue,size:"middle"===t.size?"default":t.size,checkedChildren:n.checkedChildren,unCheckedChildren:n.unCheckedChildren,defaultChecked:n.defaultChecked,onXChange:o,onXClick:e=>e.stopPropagation()})},rate:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-rate",{...t,value:e.control?e.control.value:e.defaultValue||0,count:e.count,allowHalf:e.allowHalf,allowClear:e.allowClear,character:e.character,onXChange:o})},color:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-color-picker",{...t,onXChange:o})},tags:e,range:e,phone:e,location:e,"tree-select":e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e),n=e;return s("x-tree-select",{...t,onXChange:o,treeData:n.treeData||n.options||[],multiple:n.multiple,treeCheckable:n.treeCheckable,showCheckedStrategy:n.showCheckedStrategy,showSearch:n.showSearch,allowClear:n.allowClear??t.allowClear,placeholder:n.placeholder||t.placeholder,value:e.control?e.control.value:t.defaultValue})},transfer:e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-transfer",{...t,onXChange:o,dataSource:e.dataSource||[],targetKeys:e.control?e.control.value:e.targetKeys||[],selectedKeys:e.selectedKeys,titles:e.titles,operations:e.operations,showSearch:e.showSearch,searchPlaceholder:e.searchPlaceholder,notFoundContent:e.notFoundContent,oneWay:e.oneWay,showSelectAll:e.showSelectAll,listWidth:e.listWidth,listHeight:e.listHeight,pagination:e.pagination,pageSize:e.pageSize})},cascader:e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e),n=e;return s("x-cascader",{...t,onXChange:o,options:n.options||[],value:e.control?e.control.value:n.defaultValue||null,placeholder:n.placeholder||t.placeholder,size:n.size||t.size,variant:n.variant,placement:n.placement,status:t.status||void 0,expandTrigger:n.expandTrigger,changeOnSelect:n.changeOnSelect,multiple:n.multiple,allowClear:n.allowClear??t.allowClear,showSearch:n.showSearch,fieldNames:n.fieldNames,displaySeparator:n.displaySeparator,maxTagCount:n.maxTagCount,notFoundContent:n.notFoundContent,loading:n.loading})},"auto-complete":e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e),n=e;return s("x-auto-complete",{...t,onXChange:o,options:n.options||[],value:e.control?e.control.value:n.defaultValue||"",placeholder:n.placeholder||t.placeholder,size:n.size||t.size,variant:n.variant,placement:n.placement,status:t.status||void 0,allowClear:n.allowClear??t.allowClear,backfill:n.backfill,defaultOpen:n.defaultOpen,openOnFocus:n.openOnFocus,filterOption:n.filterOption,notFoundContent:n.notFoundContent})},daterange:t,divider:e=>s("x-divider",{orientation:e.orientation||"center",dashed:!!e.dashed,plain:!!e.plain,style:{marginTop:void 0!==e.marginTop?`${e.marginTop}px`:"12px",marginBottom:void 0!==e.marginBottom?`${e.marginBottom}px`:"12px"}},e.text||e.content||e.description||""),heading:e=>{const t=e.level??3,o=e.align,n=String(e.content??""),a=e.styleType,r=e.ellipsis,i=e.ellipsisRows,l={margin:"8px 0",textAlign:o},c=`h${Math.min(Math.max(t,1),6)}`;return s(c,{style:l,"data-type":a,"data-ellipsis":r,"data-rows":i},n)},paragraph:e=>{const t=e.styleType,o=e.ellipsis,n=e.ellipsisRows,a={margin:"8px 0",color:"var(--x-text-secondary, #6b7280)",textAlign:e.align},r=String(e.content??e.placeholder??e.label??"");return s("p",{style:a,"data-type":t,"data-ellipsis":o,"data-rows":n},r)},image:e=>s("div",{style:{margin:"8px 0",textAlign:e.align}},s("img",{src:e.src||e.value||"",width:e.width||300,height:e.height||300,alt:e.alt||"",style:{borderRadius:"8px"}})),captcha:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-captcha",{...t,value:e.control?e.control.value:e.defaultValue||"",length:e.length,caseSensitive:e.caseSensitive,message:e.message,onXChange:o,hideError:!0,ref:t=>{e.control&&(e.control._captchaEl=t,t&&!e.control._captchaRegistered&&(e.control._captchaRegistered=!0,e.control.registerValidatorAsync((async()=>{const t=e.control._captchaEl;return t&&t.validate?await t.validate()?null:{captcha:!0}:null}))))}})},address:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-address",{...t,value:e.control?e.control.value:e.defaultValue||ne,onXChange:o,placeholderProvince:e.placeholderProvince,placeholderDistrict:e.placeholderDistrict,placeholderWard:e.placeholderWard,provincesData:e.provincesData,districtsData:e.districtsData,wardsData:e.wardsData,ref:t=>{t&&e.control&&e.control.registerValidatorAsync((async()=>await t.validate()?null:{address:"Please select full address"}))}})},avatar:e=>{const t=e.size||64;return s("div",{style:{margin:"8px 0",textAlign:e.align}},s("img",{src:e.src||e.value||"",alt:e.alt||"",style:{width:`${t}px`,height:`${t}px`,borderRadius:void 0===e.circle||e.circle?"50%":"0",objectFit:"cover"}}))},editor:e=>{let{commonProps:t,onChange:o}=this.getcommonProps(e);return s("x-editor",{...t,onValueChange:o})},button:e=>{const t=e.icon,o=e.content||e.label||"",n=e.htmlType?e.htmlType:"submit"===e.type||"reset"===e.type?e.type:"button";return s("div",{style:{textAlign:e.align,margin:"8px 0"}},s("x-button",{type:e.buttonType||e.type||"default",shape:e.shape||"default",size:e.size||"middle",block:!!e.block,danger:!!e.danger,ghost:!!e.ghost,loading:!!e.loading,disabled:!!e.disabled,htmlType:n,onXClick:async t=>{t&&t.stopPropagation&&t.stopPropagation(),"submit"===n?await this.submit(t,e):"reset"===n?(this.builder.form.reset(),this._tick++):this.xClick.emit({field:e,builder:this.builder,event:t})}},t&&s("x-icon",{slot:"icon",name:t}),o))},href:e=>{const t=e.align,o=e.styleType,n=e.ellipsis,a=e.underline,r=e.icon,i=e.href||e.value||"#",l=e.target||"_self",c=e.rel||"",d=String(e.content??e.label??e.text??e.value??"Link");return s("div",{style:{textAlign:t,textDecoration:!1===a?"none":"underline"}},s("a",{href:i,target:l,rel:c,"data-type":o,"data-ellipsis":n},r?s("i",{"data-icon":r,style:{marginRight:"8px"}}):null,s("span",null,d)))},grid:e=>s("div",{style:{display:"grid",gridTemplateColumns:`repeat(${e.columns||12}, minmax(0, 1fr))`,gap:`${e.gap||15}px`}},"elements"in e&&e.elements?this.bind(e.elements,e):null),table:e=>{const{commonProps:t,onChange:o}=this.getcommonProps(e),n=e,a=(n.columns||[]).map((e=>({...e,dataIndex:e.dataIndex||e.key,slot:e.actions?e.slot||e.key||"action":e.slot})));return s("x-table",{...t,columns:a,dataSource:(e.control?e.control.value:n.dataSource)||[],rowKey:n.rowKey||"id",tableTitle:n.tableTitle,pagination:n.pagination,tableScroll:n.tableScroll,rowSelection:n.rowSelection,size:n.size,bordered:n.bordered,loading:n.loading,showHeader:n.showHeader,emptyText:n.emptyText,resizableColumns:n.resizableColumns,draggableColumns:n.draggableColumns,draggableRows:n.draggableRows,sticky:n.sticky,onXSelectionChange:e=>{n.rowSelection&&o(e.detail.selectedRowKeys)},onXChange:e=>{console.log("x-form-builder: Table changed:",e.detail)}},a.filter((e=>e.actions)).map((e=>(n.dataSource||[]).map(((t,o)=>s("div",{slot:`${e.slot}-${o}`,style:{display:"flex",gap:"8px"}},(e.actions||[]).map((e=>{const o=s("x-button",{type:"button"===e.type?"primary":"link",size:"small",danger:e.danger,onClick:o=>{o.stopPropagation(),this.xTableAction.emit({action:e.onClick||e.label,record:t,field:n})}},e.icon&&s("x-icon",{slot:"icon",name:e.icon}),e.label);return e.tooltip?s("x-tooltip",{tooltipTitle:e.tooltip},o):o}))))))))},maps:e=>{const t=e.provider||"openstreetmap",o=e.center,n=e.zoom||10,a=!!e.searchEnabled;return s("div",{style:{width:"100%",margin:"8px 0"}},s("div",{style:{width:e.width||"100%",height:`${e.height||400}px`,border:"1px solid #d9d9d9",borderRadius:"6px",position:"relative",overflow:"hidden"}},s("div",{style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",background:"google"===t?"#e8f5e8":"mapbox"===t?"#f0f8ff":"bing"===t?"#fff7e6":"#f0f0f0"}},s("div",{style:{fontWeight:"500",marginBottom:"8px"}},String(e.label||"Interactive Map")),o?s("div",{style:{color:"#666",fontSize:"12px",textAlign:"center"}},s("div",null,"Lat: ",o.lat,", Lng: ",o.lng),s("div",null,"Zoom: ",n)):null,a?s("div",{style:{marginTop:"12px"}},s("input",{placeholder:"Search location...",style:{width:"200px",padding:"6px 8px",border:"1px solid #d9d9d9",borderRadius:"4px"}})):null)))},panel:e=>s("div",{style:{padding:"12px",border:"1px solid var(--x-border, #e5e7eb)",borderRadius:"8px",margin:"8px 0"}},"elements"in e&&e.elements?this.bind(e.elements,e):null),container:e=>s("div",{style:{margin:"8px 0"}},"elements"in e&&e.elements?this.bind(e.elements,e):null),iframe:e=>s("div",{style:{width:"100%",margin:"8px 0"}},s("iframe",{src:e.src,title:e.title||"Embedded Content",width:e.width||"100%",height:e.height||400,frameBorder:e.frameBorder||0,scrolling:e.scrolling||"auto",loading:e.loading||"lazy",sandbox:e.sandbox,allow:e.allow,referrerPolicy:e.referrerPolicy,style:{border:"none",borderRadius:"8px"}})),"qr-code":e=>{const t=e.label,o=e.value||"https://example.com",n=e.size||200,a=e.level||"M",r=e.bgColor||"#FFFFFF",i=e.fgColor||"#000000",l=!!e.includeMargin,c=e.description;return s("div",{style:{width:"100%",margin:"8px 0",textAlign:e.align||"center"}},s("div",{style:{display:"inline-block"}},t?s("div",{style:{marginBottom:"8px",fontWeight:"500"}},String(t)):null,s("div",{style:{width:`${n}px`,height:`${n}px`,background:r,color:i,border:"1px dashed #e5e7eb",padding:l?"16px":"0",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"8px"}},s("span",{style:{fontSize:"12px"}},String(o)," (",String(a),")")),c?s("div",{style:{marginTop:"8px",color:"#666",fontSize:"12px",textAlign:"center"}},String(c)):null))},tabs:e=>{const t=e.items||[],o=this.context&&"edit"===this.context.mode,n=void 0!==e.allowAdd?e.allowAdd:o,a=void 0!==e.allowRemove?e.allowRemove:o;let r=e.tabsType||"line";return(n||a)&&(r="editable-card"),s("x-tabs",{activeKey:e.activeKey||e.defaultActiveKey||(t.length>0?t[0].key:void 0),tabPlacement:e.tabPlacement||"top",type:r,editable:void 0!==e.allowRename?e.allowRename:o,hideAdd:!n,onXTabRename:e=>{const{key:o,label:n}=e.detail,s=t.find((e=>e.key===o));s&&(s.label=n,this._tick++)},onXEdit:e=>{const{action:o,targetKey:n}=e.detail;if("add"===o){const e=`tab-${Date.now()}`;t.push({key:e,label:`New Tab ${t.length+1}`,elements:[]}),this._tick++}else if("remove"===o){const e=t.findIndex((e=>e.key===n));-1!==e&&(t.splice(e,1),this._tick++)}}},t.map((t=>s("x-tab-pane",{key:t.key,paneKey:t.key,tab:t.label,disabled:t.disabled,icon:t.icon,closable:a&&!1!==t.closable},this.bind(t.elements,e)))))},"range-picker":t}}async submit(e,t){if(this.builder&&this.builder.form){for(const[e,t]of Array.from(this.builder.form.mapping.entries()))t.control&&await t.control.updateValueAndValidity({emitEvent:!1});await this.builder.form.updateValueAndValidity()}let o=!0;const n=this.el.shadowRoot;if(n){const e=n.querySelectorAll("x-captcha");for(let t=0;t<e.length;t++){const n=e[t];n.validate&&(await n.validate()||(o=!1))}}if(this.builder.form.valid&&o)this.formSubmit.emit({value:this.builder.form.value,builder:this.builder,event:e,field:t});else{if(this.builder.form.markAllAsTouched(),this._tick++,n){const e=n.querySelectorAll("x-captcha");for(let t=0;t<e.length;t++){const o=e[t];o.refresh&&o.refresh()}}this.formError.emit({builder:this.builder,event:e,errors:this.builder.form.errors})}}schema;showErrorCheckbox=!1;getcommonProps(e){const t={defaultValue:e.defaultValue??e.defaultChecked??e.targetKeys,prefixIcon:e.prefixIcon,suffixIcon:e.suffixIcon,focused:e.focused,status:e.status,allowClear:e.allowClear,hasUppercase:e.hasUppercase,hasNumber:e.hasNumber,hasSpecialChar:e.hasSpecialChar,name:e.name,required:e.required||Array.isArray(e.validators)&&e.validators.some((e=>"required"===e.type)),disabled:e.disabled,readonly:e.readonly,size:e.size||"middle",placeholder:e.placeholder,errorMessage:"",pattern:e.pattern};"min"in e&&(t.min=e.min),"max"in e&&(t.max=e.max),"step"in e&&(t.step=e.step),"minLength"in e&&(t.minLength=e.minLength),"maxLength"in e&&(t.maxLength=e.maxLength);const o=e.control;if(o&&this.builder&&o.touched&&(t.status=void 0,o.invalid)){t.status="error";const n=this.getMessageValidator(e,o.errors??{});t.errorMessage=n.length>0?n[0]:"Invalid value"}return{commonProps:t,onChange:t=>{let o=t.detail&&"object"==typeof t.detail&&"value"in t.detail?t.detail.value:t.detail;o&&"object"==typeof o&&"fileList"in o&&(o=o.fileList),e.control?e.control.setValue(o):e.value=o,this.xChange.emit({builder:this.builder,event:t,field:e,value:this.builder?this.builder.form.value:this.value}),this._tick++},onPressEnter:t=>{this.schema?.setting?.enterSubmit&&this.submit(t,e)}}}getStylesFromUI(e){if(!e||!e.style)return{};const{margin:t,padding:o,...n}=e.style,s={...n};return t&&(void 0!==t.top&&(s.marginTop="number"==typeof t.top?`${t.top}px`:t.top),void 0!==t.bottom&&(s.marginBottom="number"==typeof t.bottom?`${t.bottom}px`:t.bottom),void 0!==t.left&&(s.marginLeft="number"==typeof t.left?`${t.left}px`:t.left),void 0!==t.right&&(s.marginRight="number"==typeof t.right?`${t.right}px`:t.right)),o&&(void 0!==o.top&&(s.paddingTop="number"==typeof o.top?`${o.top}px`:o.top),void 0!==o.bottom&&(s.paddingBottom="number"==typeof o.bottom?`${o.bottom}px`:o.bottom),void 0!==o.left&&(s.paddingLeft="number"==typeof o.left?`${o.left}px`:o.left),void 0!==o.right&&(s.paddingRight="number"==typeof o.right?`${o.right}px`:o.right)),s}_tick=0;value;context={};builder;_isInternalChange=!1;componentWillLoad(){this.asyncBuilderForm(!0)}handleValueChange(){this._isInternalChange||this.asyncBuilderForm(!0)}handleSchemaChange(){this.asyncBuilderForm(!1)}isSyncing=!1;asyncBuilderForm(e=!1){if(!this.isSyncing){this.isSyncing=!0;try{const t=this.builder?this.builder.form.value:this.value;!this.schema||this.builder&&this.schema===this.builder.schema||(this.builder=new r(this.schema,{showErrorCheckbox:this.showErrorCheckbox}),this.builder.subscribe((e=>{this._isInternalChange=!0,this.value=e,this._isInternalChange=!1,this.valueChange.emit(e),this.xChange.emit({builder:this.builder,event:null,value:e}),this._tick++})));const o=e?this.value:t||this.value;this.builder&&o&&this.builder.form.patchValue(o,{emitEvent:!1}),this.builder&&this.context&&(this.builder.context=this.context,this.builder.conditions&&this.builder.conditions.checkAll&&this.builder.conditions.checkAll()),this.builder&&(this.builder.showErrorCheckbox=this.showErrorCheckbox),this._tick++}finally{this.isSyncing=!1}}}getLayoutStyles(){const e=this.schema.layout||this.schema.setting?.layout||"vertical",t="string"==typeof e?e:e?.type,o=this.schema?.gap??10;return"horizontal"===t?{container:{display:"flex",flexWrap:"wrap",gap:`${e?.gap??o}px`},item:{marginBottom:"0"}}:"inline"===t?{container:{display:"flex",alignItems:"center",gap:`${e?.gap??o}px`,overflowX:"auto",flexWrap:"nowrap",maxWidth:"100%",paddingBottom:"8px"},item:{marginBottom:"0",flexShrink:0}}:"grid"===t?{container:{display:"grid",gridTemplateColumns:`repeat(${e?.columns||2}, minmax(0, 1fr))`,gap:`${e?.gap??o}px`},item:{marginBottom:"0"}}:{container:{display:"flex",flexDirection:"column",gap:`${e?.gap??o}px`},item:{marginBottom:"0"}}}bind(e,t){return e&&Array.isArray(e)?e.map((e=>{if(e.hidden)return null;const o=!!t&&t.disabled,n=!!t&&t.readonly,a={...e,disabled:e.disabled||o,readonly:e.readonly||n},r=this.mapping[e.type],i=this.schema.layout||this.schema.setting?.layout||"vertical",l="string"==typeof i?i:i?.type,c={marginBottom:"15px",...this.getStylesFromUI(e.ui)};if("grid"===t?.type)c.gridColumn=`span ${e.span||1}`;else if("horizontal"===l||"inline"===l||e.span){const t=Number(e.span||("inline"===l?6:12))/12*100;c.flex=`0 0 ${t}%`,c.maxWidth=`${t}%`}if("elements"in e)return s("div",{key:e.id||e.name,style:c},s(r,{...a}));const{commonProps:d}=this.getcommonProps(a),p="object"==typeof i?i?.labelAlign||"left":this.schema.setting?.labelAlign||"left",m=this.schema.setting?.labelCol,h=this.schema.setting?.wrapperCol;if("button"===e.type){const t={...e};return t.buttonType&&(t.type=t.buttonType),e.align&&(c.textAlign=e.align),s("div",{key:e.id||e.name,style:c},s(r,{...t},e.content))}const u=!["divider","heading","paragraph","image","avatar","grid","panel","container","iframe","qr-code","tabs","button","href"].includes(e.type),x=!!this.builder?.form?.get(`isError_${e.name}`)?.value;return s("x-form-item",{key:e.id||e.name,label:this.showErrorCheckbox&&u&&e.name?null:e.label,colon:e.colon,required:e.required||Array.isArray(e.validators)&&e.validators.some((e=>"required"===e.type)),validateStatus:x?"error":d.status,help:d.errorMessage||e.note,layout:l,labelAlign:p,labelCol:m,wrapperCol:h,style:c},this.showErrorCheckbox&&u&&e.name&&s("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px"}},s("span",{style:{fontWeight:"600",color:x?"#ff4d4f":"rgba(0, 0, 0, 0.88)",fontSize:"14px"}},e.label,e.required&&s("span",{style:{color:"#ff4d4f",marginLeft:"4px"}},"*")),s("div",{style:{display:"flex",alignItems:"center",gap:"4px"}},s("x-checkbox",{checked:x,onXChange:t=>{const o=!!t.detail.checked,n=this.builder.form.get(`isError_${e.name}`);n&&(n.setValue(o),this.xChange.emit({builder:this.builder,event:t,field:e,value:this.builder.form.value})),this._tick++}}),s("span",{style:{fontSize:"12px",fontWeight:"700",color:x?"#ff4d4f":"rgba(0, 0, 0, 0.65)",textTransform:"uppercase"}},"Lỗi"))),s(r,{...a,status:x?"error":a.status}))})):null}render(){if(!this.schema)return null;const e=this.getLayoutStyles(),t=s("form",{noValidate:!0,onSubmit:e=>{e.preventDefault(),e.stopPropagation()}},s("div",{style:e.container},this.bind(this.schema?.elements)),(()=>{if(!this.schema||!this.builder)return null;if(this.builder.form.is_custom_submit)return null;const e=this.schema.setting||{};let t=Array.isArray(this.schema.actions)?this.schema.actions:[];t&&0!==t.length||(e.showSubmitButton&&t.push({id:"submit",type:"submit",label:e.submitButtonText||i("buttons.submit")}),e.showResetButton&&t.push({id:"reset",type:"reset",label:e.resetButtonText||i("buttons.reset")}));const o=this.mapping.button;return s("div",{style:{marginTop:"12px",textAlign:e.submitButtonPosition||"right"}},t.map(((e,t)=>{if(e.hidden)return null;const n=e.content||e.label||"",{type:a,...r}=e,i={...r};"submit"===a||"reset"===a?i.htmlType=a:a&&(i.type=a);const l=!!i.block;return s("div",{style:{display:l?"block":"inline-block",width:l?"100%":"auto",marginLeft:!l&&t?"8px":"0",marginTop:l&&t?"8px":"0"},key:e.id||`action-${t}`},s(o,{...i},n))})))})());return"card"===this.schema.type?s("x-card",null,s("slot",{name:"title"},this.schema.title&&s("x-typography-title",{level:3},this.schema.title),this.schema.description&&s("x-typography-text",null,this.schema.description)),t):t}static get watchers(){return{value:[{handleValueChange:0}],schema:[{handleSchemaChange:0}],context:[{handleSchemaChange:0}]}}static get style(){return":host{display:block}"}},[769,"x-form-builder",{schema:[16],showErrorCheckbox:[4,"show-error-checkbox"],value:[1040],context:[8],_tick:[32],submit:[64]},void 0,{value:[{handleValueChange:0}],schema:[{handleSchemaChange:0}],context:[{handleSchemaChange:0}]}]);function ae(){"undefined"!=typeof customElements&&["x-form-builder","x-address","x-auto-complete","x-auto-complete-dropdown-content","x-avatar","x-button","x-captcha","x-card","x-cascader","x-cascader-dropdown-content","x-checkbox","x-color-picker","x-color-picker-panel","x-date-picker","x-date-picker-dropdown-content","x-divider","x-dropdown","x-dropdown-content","x-editor","x-empty","x-form-item","x-icon","x-input","x-input-number","x-modal","x-modal-content","x-pagination","x-popover","x-popover-content","x-radio","x-radio-group","x-range-picker","x-range-picker-dropdown-content","x-rate","x-select","x-select-dropdown-content","x-slider","x-spin","x-switch","x-tab-pane","x-table","x-tabs","x-time-picker","x-time-picker-dropdown-content","x-tooltip","x-tooltip-content","x-transfer","x-tree-select","x-tree-select-dropdown-content","x-upload"].forEach((t=>{switch(t){case"x-form-builder":customElements.get(e(t))||customElements.define(e(t),se);break;case"x-address":customElements.get(e(t))||l();break;case"x-auto-complete":customElements.get(e(t))||c();break;case"x-auto-complete-dropdown-content":customElements.get(e(t))||d();break;case"x-avatar":customElements.get(e(t))||p();break;case"x-button":customElements.get(e(t))||m();break;case"x-captcha":customElements.get(e(t))||h();break;case"x-card":customElements.get(e(t))||u();break;case"x-cascader":customElements.get(e(t))||x();break;case"x-cascader-dropdown-content":customElements.get(e(t))||g();break;case"x-checkbox":customElements.get(e(t))||f();break;case"x-color-picker":customElements.get(e(t))||b();break;case"x-color-picker-panel":customElements.get(e(t))||y();break;case"x-date-picker":customElements.get(e(t))||v();break;case"x-date-picker-dropdown-content":customElements.get(e(t))||k();break;case"x-divider":customElements.get(e(t))||C();break;case"x-dropdown":customElements.get(e(t))||w();break;case"x-dropdown-content":customElements.get(e(t))||E();break;case"x-editor":customElements.get(e(t))||j();break;case"x-empty":customElements.get(e(t))||S();break;case"x-form-item":customElements.get(e(t))||P();break;case"x-icon":customElements.get(e(t))||D();break;case"x-input":customElements.get(e(t))||T();break;case"x-input-number":customElements.get(e(t))||X();break;case"x-modal":customElements.get(e(t))||$();break;case"x-modal-content":customElements.get(e(t))||B();break;case"x-pagination":customElements.get(e(t))||A();break;case"x-popover":customElements.get(e(t))||z();break;case"x-popover-content":customElements.get(e(t))||L();break;case"x-radio":customElements.get(e(t))||F();break;case"x-radio-group":customElements.get(e(t))||I();break;case"x-range-picker":customElements.get(e(t))||W();break;case"x-range-picker-dropdown-content":customElements.get(e(t))||R();break;case"x-rate":customElements.get(e(t))||M();break;case"x-select":customElements.get(e(t))||K();break;case"x-select-dropdown-content":customElements.get(e(t))||N();break;case"x-slider":customElements.get(e(t))||O();break;case"x-spin":customElements.get(e(t))||_();break;case"x-switch":customElements.get(e(t))||V();break;case"x-tab-pane":customElements.get(e(t))||q();break;case"x-table":customElements.get(e(t))||U();break;case"x-tabs":customElements.get(e(t))||H();break;case"x-time-picker":customElements.get(e(t))||J();break;case"x-time-picker-dropdown-content":customElements.get(e(t))||Q();break;case"x-tooltip":customElements.get(e(t))||Z();break;case"x-tooltip-content":customElements.get(e(t))||Y();break;case"x-transfer":customElements.get(e(t))||G();break;case"x-tree-select":customElements.get(e(t))||ee();break;case"x-tree-select-dropdown-content":customElements.get(e(t))||te();break;case"x-upload":customElements.get(e(t))||oe()}}))}ae();export{se as X,ae as d}