jupiter-dynamic-forms 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../src/utils/validation.ts","../src/utils/xbrl-form-builder.ts","../src/core/form-field.ts","../src/core/concept-tree.ts","../src/core/form-section.ts","../src/core/dynamic-form.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.1\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { ValidationRule, ValidationError, FieldType } from '../schema/types';\n\nexport class FormValidator {\n /**\n * Validates a field value against its validation rules\n */\n static validateField(\n fieldId: string,\n conceptId: string,\n columnId: string,\n value: any,\n fieldType: FieldType,\n rules: ValidationRule[] = []\n ): ValidationError[] {\n const errors: ValidationError[] = [];\n\n for (const rule of rules) {\n const error = this.validateRule(fieldId, conceptId, columnId, value, fieldType, rule);\n if (error) {\n errors.push(error);\n }\n }\n\n return errors;\n }\n\n /**\n * Validates a single rule against a value\n */\n private static validateRule(\n fieldId: string,\n conceptId: string,\n columnId: string,\n value: any,\n _fieldType: FieldType,\n rule: ValidationRule\n ): ValidationError | null {\n const isEmpty = value === null || value === undefined || value === '';\n\n switch (rule.type) {\n case 'required':\n if (isEmpty) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'min':\n if (!isEmpty && typeof value === 'number' && value < rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'max':\n if (!isEmpty && typeof value === 'number' && value > rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'minLength':\n if (!isEmpty && typeof value === 'string' && value.length < rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'maxLength':\n if (!isEmpty && typeof value === 'string' && value.length > rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'pattern':\n if (!isEmpty && typeof value === 'string') {\n const regex = new RegExp(rule.value);\n if (!regex.test(value)) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'email':\n if (!isEmpty && typeof value === 'string') {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'url':\n if (!isEmpty && typeof value === 'string') {\n try {\n new URL(value);\n } catch {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'custom':\n // Custom validation would be handled by consuming application\n break;\n\n default:\n console.warn(`Unknown validation rule type: ${rule.type}`);\n }\n\n return null;\n }\n\n /**\n * Creates a validation error object\n */\n private static createError(\n fieldId: string,\n conceptId: string,\n columnId: string,\n rule: ValidationRule\n ): ValidationError {\n return {\n fieldId,\n conceptId,\n columnId,\n message: rule.message,\n severity: rule.severity || 'error',\n rule\n };\n }\n\n /**\n * Validates data type conversion\n */\n static validateDataType(value: any, fieldType: FieldType): { valid: boolean; convertedValue?: any; error?: string } {\n if (value === null || value === undefined || value === '') {\n return { valid: true, convertedValue: value };\n }\n\n switch (fieldType) {\n case 'number':\n case 'decimal':\n case 'currency':\n case 'percentage': {\n const numValue = Number(value);\n if (isNaN(numValue)) {\n return { valid: false, error: 'Invalid number format' };\n }\n return { valid: true, convertedValue: numValue };\n }\n\n case 'date': {\n const dateValue = new Date(value);\n if (isNaN(dateValue.getTime())) {\n return { valid: false, error: 'Invalid date format' };\n }\n return { valid: true, convertedValue: dateValue.toISOString().split('T')[0] };\n }\n\n case 'datetime': {\n const datetimeValue = new Date(value);\n if (isNaN(datetimeValue.getTime())) {\n return { valid: false, error: 'Invalid datetime format' };\n }\n return { valid: true, convertedValue: datetimeValue.toISOString() };\n }\n\n case 'boolean':\n if (typeof value === 'boolean') {\n return { valid: true, convertedValue: value };\n }\n if (typeof value === 'string') {\n const boolValue = value.toLowerCase();\n if (boolValue === 'true' || boolValue === '1') {\n return { valid: true, convertedValue: true };\n }\n if (boolValue === 'false' || boolValue === '0') {\n return { valid: true, convertedValue: false };\n }\n }\n return { valid: false, error: 'Invalid boolean format' };\n\n case 'text':\n case 'textarea':\n case 'email':\n case 'url':\n case 'tel':\n return { valid: true, convertedValue: String(value) };\n\n case 'select':\n case 'multiselect':\n return { valid: true, convertedValue: value };\n\n default:\n return { valid: true, convertedValue: value };\n }\n }\n\n /**\n * Formats value for display based on field type\n */\n static formatValue(value: any, fieldType: FieldType, locale = 'en-US'): string {\n if (value === null || value === undefined) return '';\n\n switch (fieldType) {\n case 'number':\n return new Intl.NumberFormat(locale).format(Number(value));\n\n case 'decimal':\n return new Intl.NumberFormat(locale, { \n minimumFractionDigits: 2,\n maximumFractionDigits: 2 \n }).format(Number(value));\n\n case 'currency':\n return new Intl.NumberFormat(locale, { \n style: 'currency',\n currency: 'USD' // Should be configurable\n }).format(Number(value));\n\n case 'percentage':\n return new Intl.NumberFormat(locale, { \n style: 'percent',\n minimumFractionDigits: 2\n }).format(Number(value) / 100);\n\n case 'date':\n return new Date(value).toLocaleDateString(locale);\n\n case 'datetime':\n return new Date(value).toLocaleString(locale);\n\n default:\n return String(value);\n }\n }\n}\n","import { \n XBRLFormInput, \n XBRLPresentationRole,\n XBRLPresentationConcept,\n XBRLLabel\n} from '../schema/xbrl-types';\nimport { \n XBRLFormSchema, \n FormSection, \n FormField, \n ConceptTree,\n FieldType \n} from '../schema/types';\n\n/**\n * XBRL Form Builder Service\n * Transforms XBRL taxonomy data into Jupiter Dynamic Form schemas\n * Updated to handle actual presentation.json structure with roles\n */\nexport class XBRLFormBuilder {\n \n /**\n * Build form schema from XBRL input data\n * Creates accordion sections for each presentation role\n */\n static buildFormSchema(xbrlInput: XBRLFormInput): XBRLFormSchema {\n if (!xbrlInput.presentation || xbrlInput.presentation.length === 0) {\n throw new Error('XBRL presentation data is required');\n }\n\n // Use the first entrypoint (typically there's only one)\n const presentationData = xbrlInput.presentation[0];\n \n const sections: FormSection[] = [];\n\n // Create a form section for each presentation role\n presentationData.roles.forEach(role => {\n const section = this.buildSectionFromRole(role);\n sections.push(section);\n });\n\n return {\n formId: `xbrl-form-${Date.now()}`,\n title: `XBRL Form - ${this.extractEntityName(presentationData.entrypoint)}`,\n description: `Dynamic form generated from XBRL taxonomy data`,\n version: '1.0.0',\n sections: sections\n };\n }\n\n /**\n * Build a form section from a presentation role\n */\n private static buildSectionFromRole(role: XBRLPresentationRole): FormSection {\n // Extract section title from role name (remove role number prefix)\n const title = this.extractRoleTitle(role.role);\n \n const conceptTrees: ConceptTree[] = [];\n\n // Process root concepts and build tree structure (if any exist)\n if (role.presentationLinkbase?.concepts) {\n role.presentationLinkbase.concepts.forEach(concept => {\n const conceptTree = this.buildConceptTree(concept, 0);\n if (conceptTree) {\n conceptTrees.push(conceptTree);\n }\n });\n }\n\n return {\n id: role.id,\n title: title,\n description: `Section for ${title}`,\n concepts: conceptTrees,\n expanded: false\n };\n }\n\n /**\n * Build concept tree from XBRL presentation concept\n */\n private static buildConceptTree(concept: XBRLPresentationConcept, level: number): ConceptTree | null {\n const label = this.getPreferredLabel(concept.labels);\n \n // Build fields for this concept (if not abstract)\n const fields: FormField[] = [];\n if (!concept.elementAbstract) {\n const field = this.createFieldFromConcept(concept);\n if (field) {\n fields.push(field);\n }\n }\n\n // Process children recursively\n const children: ConceptTree[] = [];\n if (concept.children && concept.children.length > 0) {\n concept.children.forEach(child => {\n const childTree = this.buildConceptTree(child, level + 1);\n if (childTree) {\n children.push(childTree);\n }\n });\n }\n\n return {\n id: concept.id,\n name: concept.conceptName,\n label: label,\n description: `${concept.conceptName} (${concept.type})`,\n level: level,\n children: children,\n fields: fields,\n collapsed: level > 0 // Collapse nested levels by default\n };\n }\n\n /**\n * Create form field from XBRL concept\n */\n private static createFieldFromConcept(concept: XBRLPresentationConcept): FormField | null {\n const fieldType = this.mapXBRLTypeToFieldType(concept.type);\n const label = this.getPreferredLabel(concept.labels);\n\n return {\n id: `${concept.id}_field`,\n conceptId: concept.id,\n columnId: 'default', // Default column, will be expanded later\n type: fieldType,\n label: label,\n placeholder: `Enter ${label.toLowerCase()}`,\n required: false, // Will be determined by validation rules\n disabled: concept.elementAbstract,\n defaultValue: null\n };\n }\n\n /**\n * Map XBRL data type to form field type\n */\n private static mapXBRLTypeToFieldType(xbrlType: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n 'xbrli:stringItemType': 'text',\n 'xbrli:monetaryItemType': 'currency',\n 'xbrli:integerItemType': 'number',\n 'xbrli:decimalItemType': 'decimal',\n 'xbrli:percentItemType': 'percentage',\n 'xbrli:dateItemType': 'date',\n 'xbrli:booleanItemType': 'boolean',\n 'dtr-types:domainItemType': 'select',\n 'bw2-titel9:chamberOfCommerceRegistrationNumberItemType': 'text'\n };\n\n return typeMap[xbrlType] || 'text';\n }\n\n /**\n * Get preferred label from labels array\n */\n private static getPreferredLabel(labels: XBRLLabel[]): string {\n if (!labels || labels.length === 0) return 'Unnamed Concept';\n\n // Try to find preferred label\n const preferred = labels.find(l => l.preferredLabel);\n if (preferred) return preferred.label;\n\n // Try to find standard label\n const standard = labels.find(l => l.role === 'http://www.xbrl.org/2003/role/label');\n if (standard) return standard.label;\n\n // Try to find terse label\n const terse = labels.find(l => l.role === 'http://www.xbrl.org/2003/role/terseLabel');\n if (terse) return terse.label;\n\n // Return first available label\n return labels[0].label;\n }\n\n /**\n * Extract entity name from entrypoint URL\n */\n private static extractEntityName(entrypoint: string): string {\n try {\n const url = new URL(entrypoint);\n const pathParts = url.pathname.split('/');\n const filename = pathParts[pathParts.length - 1];\n return filename.replace('.xsd', '').replace(/[^a-zA-Z0-9]/g, ' ').trim() || 'Entity';\n } catch {\n return 'Entity';\n }\n }\n\n /**\n * Extract role title from role string\n */\n private static extractRoleTitle(role: string): string {\n // Remove role number prefix like \"[000001] \" and return the title\n const match = role.match(/^\\[[\\d]+\\]\\s*(.+)$/);\n return match ? match[1].trim() : role;\n }\n\n /**\n * Extract role order from role string\n */\n private static extractRoleOrder(role: string): number {\n const match = role.match(/^\\[([\\d]+)\\]/);\n return match ? parseInt(match[1], 10) : 0;\n }\n\n /**\n * Build columns from XBRL hypercube data (placeholder for now)\n */\n static buildColumnsFromHypercubes(/* _hypercubes: any[] */): any[] {\n // For now, return default column structure\n // This will be expanded when we implement hypercube support\n return [{\n id: 'default',\n label: 'Values',\n type: 'data'\n }];\n }\n}\n","import { LitElement, html, css, PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormField, ValidationError } from '../schema/types';\nimport { FormValidator } from '../utils/validation';\n\n@customElement('jupiter-form-field')\nexport class JupiterFormField extends LitElement {\n @property({ type: Object }) field!: FormField;\n @property({ type: String }) conceptId!: string;\n @property({ type: String }) columnId!: string;\n @property() value: any = null;\n @property({ type: Boolean }) disabled = false;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _errors: ValidationError[] = [];\n @state() private _touched = false;\n\n static styles = css`\n :host {\n display: block;\n margin-bottom: 8px;\n }\n\n .field-container {\n position: relative;\n }\n\n .field-label {\n display: block;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--jupiter-text-primary, #333);\n font-size: 14px;\n }\n\n .field-label.required::after {\n content: ' *';\n color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--jupiter-input-background, #fff);\n color: var(--jupiter-text-primary, #333);\n box-sizing: border-box;\n }\n\n .field-input:focus {\n outline: none;\n border-color: var(--jupiter-primary-color, #1976d2);\n box-shadow: 0 0 0 2px var(--jupiter-primary-color-light, rgba(25, 118, 210, 0.2));\n }\n\n .field-input:disabled {\n background: var(--jupiter-disabled-background, #f5f5f5);\n color: var(--jupiter-disabled-text, #999);\n cursor: not-allowed;\n }\n\n .field-input.error {\n border-color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-input.warning {\n border-color: var(--jupiter-warning-color, #ff9800);\n }\n\n .field-errors {\n margin-top: 4px;\n }\n\n .field-error {\n display: block;\n font-size: 12px;\n margin-bottom: 2px;\n }\n\n .field-error.error {\n color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-error.warning {\n color: var(--jupiter-warning-color, #ff9800);\n }\n\n .field-error.info {\n color: var(--jupiter-info-color, #2196f3);\n }\n\n select.field-input {\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 8px center;\n background-repeat: no-repeat;\n background-size: 16px;\n padding-right: 32px;\n }\n\n textarea.field-input {\n resize: vertical;\n min-height: 60px;\n }\n\n .checkbox-container {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .checkbox-container input[type=\"checkbox\"] {\n margin: 0;\n width: auto;\n }\n `;\n\n protected willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('value') || changedProperties.has('field')) {\n this._validateField();\n }\n }\n\n private _validateField() {\n if (this.field?.validation) {\n this._errors = FormValidator.validateField(\n this.field.id,\n this.conceptId,\n this.columnId,\n this.value,\n this.field.type,\n this.field.validation\n );\n }\n }\n\n private _handleInput(event: Event) {\n const target = event.target as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n let value: any = target.value;\n\n // Convert value based on field type\n if (this.field.type === 'number' || this.field.type === 'decimal') {\n value = value === '' ? null : Number(value);\n } else if (this.field.type === 'boolean') {\n value = (target as HTMLInputElement).checked;\n }\n\n this.value = value;\n this._touched = true;\n \n this.dispatchEvent(new CustomEvent('field-change', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId,\n value,\n oldValue: this.value\n },\n bubbles: true\n }));\n }\n\n private _handleFocus() {\n this.dispatchEvent(new CustomEvent('field-focus', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId\n },\n bubbles: true\n }));\n }\n\n private _handleBlur() {\n this._touched = true;\n this.dispatchEvent(new CustomEvent('field-blur', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId\n },\n bubbles: true\n }));\n }\n\n private _renderInput() {\n const hasErrors = this._errors.some(e => e.severity === 'error');\n const hasWarnings = this._errors.some(e => e.severity === 'warning');\n const cssClass = `field-input ${hasErrors ? 'error' : hasWarnings ? 'warning' : ''}`;\n\n switch (this.field.type) {\n case 'textarea':\n return html`\n <textarea\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n placeholder=\"${this.field.placeholder || ''}\"\n @input=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n ></textarea>\n `;\n\n case 'select':\n return html`\n <select\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n @change=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n >\n <option value=\"\">Select...</option>\n ${this.field.options?.map(option => html`\n <option \n value=\"${option.value}\"\n ?disabled=\"${option.disabled}\"\n ?selected=\"${this.value === option.value}\"\n >\n ${option.label}\n </option>\n `)}\n </select>\n `;\n\n case 'boolean':\n return html`\n <div class=\"checkbox-container\">\n <input\n type=\"checkbox\"\n class=\"field-input\"\n .checked=\"${Boolean(this.value)}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n @change=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n />\n <span>${this.field.label}</span>\n </div>\n `;\n\n default:\n return html`\n <input\n type=\"${this._getInputType()}\"\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n placeholder=\"${this.field.placeholder || ''}\"\n @input=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n />\n `;\n }\n }\n\n private _getInputType(): string {\n switch (this.field.type) {\n case 'number':\n case 'decimal':\n case 'currency':\n case 'percentage':\n return 'number';\n case 'date':\n return 'date';\n case 'datetime':\n return 'datetime-local';\n case 'email':\n return 'email';\n case 'url':\n return 'url';\n case 'tel':\n return 'tel';\n default:\n return 'text';\n }\n }\n\n render() {\n const showLabel = this.field.type !== 'boolean';\n\n return html`\n <div class=\"field-container\">\n ${showLabel ? html`\n <label class=\"field-label ${this.field.required ? 'required' : ''}\">\n ${this.field.label}\n </label>\n ` : ''}\n \n ${this._renderInput()}\n \n ${this._errors.length > 0 && this._touched ? html`\n <div class=\"field-errors\">\n ${this._errors.map(error => html`\n <span class=\"field-error ${error.severity}\">\n ${error.message}\n </span>\n `)}\n </div>\n ` : ''}\n </div>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ConceptTree, FormColumn, FormField } from '../schema/types';\nimport './form-field';\n\n@customElement('jupiter-concept-tree')\nexport class JupiterConceptTree extends LitElement {\n @property({ type: Object }) concept!: ConceptTree;\n @property({ type: Array }) columns: FormColumn[] = [];\n @property({ type: Object }) formData: Record<string, any> = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _expanded = true;\n\n static styles = css`\n :host {\n display: block;\n }\n\n .concept-row {\n display: contents;\n }\n\n .concept-header {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n background: var(--jupiter-concept-background, #f8f9fa);\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-bottom: none;\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n\n .concept-header:hover {\n background: var(--jupiter-concept-hover-background, #e9ecef);\n }\n\n .concept-indent {\n width: calc(var(--level, 0) * 20px);\n flex-shrink: 0;\n }\n\n .concept-toggle {\n width: 16px;\n height: 16px;\n margin-right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: transform 0.2s ease;\n }\n\n .concept-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .concept-toggle.no-children {\n visibility: hidden;\n }\n\n .concept-label {\n flex: 1;\n color: var(--jupiter-text-primary, #333);\n }\n\n .concept-description {\n font-size: 12px;\n color: var(--jupiter-text-secondary, #666);\n font-weight: normal;\n margin-left: 8px;\n }\n\n .concept-fields {\n display: contents;\n }\n\n .field-cell {\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-bottom: none;\n padding: 8px;\n background: var(--jupiter-cell-background, #fff);\n min-height: 40px;\n display: flex;\n align-items: center;\n }\n\n .field-cell:last-child {\n border-right: 1px solid var(--jupiter-border-color, #ddd);\n }\n\n .field-cell.empty {\n background: var(--jupiter-empty-cell-background, #f8f9fa);\n }\n\n .children {\n display: contents;\n }\n\n .children.collapsed {\n display: none;\n }\n\n .concept-row:last-of-type .concept-header,\n .concept-row:last-of-type .field-cell {\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._expanded = !this.concept.collapsed;\n }\n\n private _toggleExpanded() {\n this._expanded = !this._expanded;\n \n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: {\n conceptId: this.concept.id,\n expanded: this._expanded\n },\n bubbles: true\n }));\n }\n\n private _getFieldForColumn(columnId: string): FormField | undefined {\n return this.concept.fields.find(field => field.columnId === columnId);\n }\n\n private _getFieldValue(field: FormField): any {\n return this.formData[this.concept.id]?.[field.columnId];\n }\n\n private _handleFieldChange(event: CustomEvent) {\n event.stopPropagation();\n // Re-dispatch with updated detail\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n render() {\n const hasChildren = this.concept.children && this.concept.children.length > 0;\n const level = this.concept.level || 0;\n\n return html`\n <div class=\"concept-row\" style=\"--level: ${level}\">\n <!-- Concept Label Column -->\n <div class=\"concept-header\" @click=\"${this._toggleExpanded}\">\n <div class=\"concept-indent\"></div>\n <div class=\"concept-toggle ${hasChildren ? (this._expanded ? 'expanded' : '') : 'no-children'}\">\n ${hasChildren ? '▶' : ''}\n </div>\n <div class=\"concept-label\">\n ${this.concept.label}\n ${this.concept.description ? html`\n <span class=\"concept-description\">${this.concept.description}</span>\n ` : ''}\n </div>\n </div>\n\n <!-- Field Columns -->\n ${this.columns.map(column => {\n const field = this._getFieldForColumn(column.id);\n \n return html`\n <div class=\"field-cell ${!field ? 'empty' : ''}\">\n ${field ? html`\n <jupiter-form-field\n .field=\"${field}\"\n .conceptId=\"${this.concept.id}\"\n .columnId=\"${column.id}\"\n .value=\"${this._getFieldValue(field)}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n ></jupiter-form-field>\n ` : ''}\n </div>\n `;\n })}\n </div>\n\n <!-- Children Concepts -->\n ${hasChildren ? html`\n <div class=\"children ${!this._expanded ? 'collapsed' : ''}\">\n ${this.concept.children!.map(child => html`\n <jupiter-concept-tree\n .concept=\"${child}\"\n .columns=\"${this.columns}\"\n .formData=\"${this.formData}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n @concept-expand=\"${(e: CustomEvent) => { \n e.stopPropagation(); \n this.dispatchEvent(new CustomEvent('concept-expand', { detail: e.detail, bubbles: true })); \n }}\"\n ></jupiter-concept-tree>\n `)}\n </div>\n ` : ''}\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSection, FormColumn } from '../schema/types';\nimport './concept-tree';\n\n@customElement('jupiter-form-section')\nexport class JupiterFormSection extends LitElement {\n @property({ type: Object }) section!: FormSection;\n @property({ type: Array }) columns: FormColumn[] = [];\n @property({ type: Object }) formData: Record<string, any> = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) collapsible = true;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _expanded = true;\n\n static styles = css`\n :host {\n display: block;\n margin-bottom: 16px;\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .section-header {\n background: var(--jupiter-section-header-background, #f0f2f5);\n padding: 16px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .section-header:hover {\n background: var(--jupiter-section-header-hover-background, #e4e7ea);\n }\n\n .section-header.not-collapsible {\n cursor: default;\n }\n\n .section-header.not-collapsible:hover {\n background: var(--jupiter-section-header-background, #f0f2f5);\n }\n\n .section-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--jupiter-text-primary, #333);\n margin: 0;\n }\n\n .section-description {\n font-size: 14px;\n color: var(--jupiter-text-secondary, #666);\n margin: 4px 0 0 0;\n }\n\n .section-toggle {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: transform 0.2s ease;\n color: var(--jupiter-text-secondary, #666);\n }\n\n .section-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .section-toggle.hidden {\n visibility: hidden;\n }\n\n .section-content {\n display: block;\n transition: max-height 0.3s ease;\n overflow: hidden;\n }\n\n .section-content.collapsed {\n display: none;\n }\n\n .table-container {\n overflow-x: auto;\n }\n\n .form-table {\n width: 100%;\n border-collapse: collapse;\n background: var(--jupiter-table-background, #fff);\n }\n\n .table-header {\n background: var(--jupiter-header-background, #f8f9fa);\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n .header-cell {\n padding: 12px;\n text-align: left;\n font-weight: 600;\n color: var(--jupiter-text-primary, #333);\n border: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-header-background, #f8f9fa);\n min-width: 150px;\n }\n\n .header-cell.concept-column {\n min-width: 300px;\n position: sticky;\n left: 0;\n z-index: 2;\n }\n\n .header-cell.removable {\n position: relative;\n }\n\n .remove-column-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border: none;\n background: var(--jupiter-error-color, #d32f2f);\n color: white;\n border-radius: 50%;\n font-size: 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .remove-column-btn:hover {\n background: var(--jupiter-error-color-dark, #b71c1c);\n }\n\n .table-body {\n display: table-row-group;\n }\n\n .empty-section {\n padding: 24px;\n text-align: center;\n color: var(--jupiter-text-secondary, #666);\n font-style: italic;\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._expanded = this.section.expanded !== false;\n }\n\n private _toggleExpanded() {\n if (!this.collapsible) return;\n \n this._expanded = !this._expanded;\n \n this.dispatchEvent(new CustomEvent('section-expand', {\n detail: {\n sectionId: this.section.id,\n expanded: this._expanded\n },\n bubbles: true\n }));\n }\n\n private _handleRemoveColumn(columnId: string) {\n this.dispatchEvent(new CustomEvent('column-remove', {\n detail: { columnId },\n bubbles: true\n }));\n }\n\n private _handleFieldChange(event: CustomEvent) {\n event.stopPropagation();\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleConceptExpand(event: CustomEvent) {\n event.stopPropagation();\n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n render() {\n if (!this.section.concepts || this.section.concepts.length === 0) {\n return html`\n <div class=\"section-header ${!this.collapsible ? 'not-collapsible' : ''}\" \n @click=\"${this._toggleExpanded}\">\n <div>\n <h3 class=\"section-title\">${this.section.title}</h3>\n ${this.section.description ? html`\n <p class=\"section-description\">${this.section.description}</p>\n ` : ''}\n </div>\n <div class=\"section-toggle ${this.collapsible ? (this._expanded ? 'expanded' : '') : 'hidden'}\">\n ${this.collapsible ? '▶' : ''}\n </div>\n </div>\n \n <div class=\"section-content ${!this._expanded ? 'collapsed' : ''}\">\n <div class=\"empty-section\">\n No concepts defined for this section.\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"section-header ${!this.collapsible ? 'not-collapsible' : ''}\" \n @click=\"${this._toggleExpanded}\">\n <div>\n <h3 class=\"section-title\">${this.section.title}</h3>\n ${this.section.description ? html`\n <p class=\"section-description\">${this.section.description}</p>\n ` : ''}\n </div>\n <div class=\"section-toggle ${this.collapsible ? (this._expanded ? 'expanded' : '') : 'hidden'}\">\n ${this.collapsible ? '▶' : ''}\n </div>\n </div>\n\n <div class=\"section-content ${!this._expanded ? 'collapsed' : ''}\">\n <div class=\"table-container\">\n <table class=\"form-table\">\n <thead class=\"table-header\">\n <tr>\n <th class=\"header-cell concept-column\">Concept</th>\n ${this.columns.map(column => html`\n <th class=\"header-cell ${column.removable ? 'removable' : ''}\">\n ${column.title}\n ${column.description ? html`<div style=\"font-weight: normal; font-size: 12px; color: var(--jupiter-text-secondary, #666);\">${column.description}</div>` : ''}\n ${column.removable ? html`\n <button \n class=\"remove-column-btn\"\n @click=\"${(e: Event) => {\n e.stopPropagation();\n this._handleRemoveColumn(column.id);\n }}\"\n title=\"Remove column\"\n >×</button>\n ` : ''}\n </th>\n `)}\n </tr>\n </thead>\n <tbody class=\"table-body\">\n ${this.section.concepts.map(concept => html`\n <jupiter-concept-tree\n .concept=\"${concept}\"\n .columns=\"${this.columns}\"\n .formData=\"${this.formData}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n @concept-expand=\"${this._handleConceptExpand}\"\n ></jupiter-concept-tree>\n `)}\n </tbody>\n </table>\n </div>\n </div>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { \n XBRLFormSchema, \n FormData, \n FormColumn, \n ValidationError, \n FormState,\n ComponentConfig\n} from '../schema/types';\nimport { XBRLFormInput } from '../schema/xbrl-types';\nimport { FormValidator } from '../utils/validation';\nimport { XBRLFormBuilder } from '../utils/xbrl-form-builder';\nimport './form-section';\n\n@customElement('jupiter-dynamic-form')\nexport class JupiterDynamicForm extends LitElement {\n @property({ type: Object }) schema?: XBRLFormSchema;\n @property({ type: Object }) xbrlInput?: XBRLFormInput;\n @property({ type: Object }) config: ComponentConfig = {};\n @property({ type: Object }) initialData: FormData = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) readonly = false;\n\n @state() private _formData: FormData = {};\n @state() private _columns: FormColumn[] = [];\n @state() private _errors: ValidationError[] = [];\n @state() private _touched = new Set<string>();\n @state() private _dirty = false;\n @state() private _valid = true;\n @state() private _submitted = false;\n @state() private _currentSchema?: XBRLFormSchema;\n\n static styles = css`\n :host {\n display: block;\n font-family: var(--jupiter-font-family, system-ui, -apple-system, sans-serif);\n color: var(--jupiter-text-primary, #333);\n background: var(--jupiter-background, #fff);\n }\n\n .form-container {\n width: 100%;\n max-width: var(--jupiter-max-width, none);\n margin: 0 auto;\n }\n\n .form-header {\n padding: 24px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-header-background, #fff);\n }\n\n .form-title {\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 8px 0;\n color: var(--jupiter-text-primary, #333);\n }\n\n .form-description {\n font-size: 16px;\n color: var(--jupiter-text-secondary, #666);\n margin: 0;\n line-height: 1.5;\n }\n\n .form-actions {\n padding: 16px 24px;\n border-top: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-actions-background, #f8f9fa);\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .add-column-container {\n padding: 16px 24px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-actions-background, #f8f9fa);\n }\n\n .add-column-btn {\n padding: 8px 16px;\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n }\n\n .add-column-btn:hover {\n background: var(--jupiter-primary-color-dark, #1565c0);\n }\n\n .add-column-btn:disabled {\n background: var(--jupiter-disabled-background, #ccc);\n cursor: not-allowed;\n }\n\n .form-sections {\n padding: 24px;\n }\n\n .validation-summary {\n margin-bottom: 16px;\n padding: 16px;\n border-radius: 4px;\n background: var(--jupiter-error-background, #ffebee);\n border: 1px solid var(--jupiter-error-color, #d32f2f);\n }\n\n .validation-summary-title {\n font-weight: 600;\n color: var(--jupiter-error-color, #d32f2f);\n margin: 0 0 8px 0;\n }\n\n .validation-summary-list {\n margin: 0;\n padding-left: 20px;\n }\n\n .validation-summary-item {\n color: var(--jupiter-error-color, #d32f2f);\n margin-bottom: 4px;\n }\n\n .form-actions button {\n padding: 10px 20px;\n border: none;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s ease;\n }\n\n .btn-primary {\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: var(--jupiter-primary-color-dark, #1565c0);\n }\n\n .btn-secondary {\n background: var(--jupiter-secondary-color, #757575);\n color: white;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: var(--jupiter-secondary-color-dark, #616161);\n }\n\n .btn-outline {\n background: transparent;\n color: var(--jupiter-primary-color, #1976d2);\n border: 1px solid var(--jupiter-primary-color, #1976d2);\n }\n\n .btn-outline:hover:not(:disabled) {\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n }\n\n button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .form-meta {\n display: flex;\n gap: 16px;\n align-items: center;\n font-size: 12px;\n color: var(--jupiter-text-secondary, #666);\n margin-left: auto;\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._initializeForm();\n }\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('xbrlInput') || changedProperties.has('schema')) {\n this._initializeForm();\n }\n }\n\n private _initializeForm() {\n // Generate schema from XBRL input if provided, otherwise use provided schema\n if (this.xbrlInput) {\n try {\n console.log('🔄 Initializing form from XBRL input:', this.xbrlInput);\n this._currentSchema = XBRLFormBuilder.buildFormSchema(this.xbrlInput);\n console.log('✅ Generated schema with sections:', this._currentSchema.sections.length);\n \n // Use simple column structure for now\n this._columns = [\n {\n id: 'base',\n title: 'Value',\n description: 'Base values for concepts',\n type: 'base',\n order: 0,\n removable: false\n }\n ];\n } catch (error) {\n console.error('❌ Error building form from XBRL input:', error);\n this._currentSchema = this._getDefaultSchema();\n this._columns = this._getDefaultColumns();\n }\n } else if (this.schema) {\n this._currentSchema = this.schema;\n this._columns = this._getDefaultColumns();\n } else {\n this._currentSchema = this._getDefaultSchema();\n this._columns = this._getDefaultColumns();\n }\n\n // Initialize form data\n this._formData = { ...this.initialData };\n if (this.xbrlInput?.initialData) {\n this._formData = { ...this._formData, ...this.xbrlInput.initialData };\n }\n \n // Validate initial data\n this._validateForm();\n }\n\n private _getDefaultSchema(): XBRLFormSchema {\n return {\n version: '1.0',\n formId: 'default-form',\n title: 'Dynamic Form',\n description: 'Please provide form schema or XBRL input data',\n sections: []\n };\n }\n\n private _getDefaultColumns(): FormColumn[] {\n return [\n {\n id: 'base',\n title: 'Value',\n description: 'Base values for concepts',\n type: 'base',\n order: 0,\n removable: false\n }\n ];\n }\n\n private _validateForm() {\n const errors: ValidationError[] = [];\n \n // Use current schema for validation\n const schema = this._currentSchema;\n if (!schema) return;\n \n // Validate each section and its concepts\n for (const section of schema.sections) {\n for (const concept of section.concepts) {\n for (const field of concept.fields) {\n const value = this._formData[concept.id]?.[field.columnId];\n const fieldErrors = FormValidator.validateField(\n field.id,\n concept.id,\n field.columnId,\n value,\n field.type,\n field.validation || []\n );\n errors.push(...fieldErrors);\n }\n }\n }\n\n this._errors = errors;\n this._valid = errors.filter(e => e.severity === 'error').length === 0;\n }\n\n private _handleFieldChange(event: CustomEvent) {\n const { fieldId, conceptId, columnId, value } = event.detail;\n \n // Update form data\n if (!this._formData[conceptId]) {\n this._formData[conceptId] = {};\n }\n const oldValue = this._formData[conceptId][columnId];\n this._formData[conceptId][columnId] = value;\n \n // Mark as touched and dirty\n this._touched.add(`${conceptId}-${columnId}`);\n this._dirty = true;\n \n // Re-validate\n this._validateForm();\n \n // Trigger update\n this.requestUpdate();\n \n // Dispatch change event\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: { fieldId, conceptId, columnId, value, oldValue },\n bubbles: true\n }));\n }\n\n private _handleSectionExpand(event: CustomEvent) {\n this.dispatchEvent(new CustomEvent('section-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleConceptExpand(event: CustomEvent) {\n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleColumnRemove(event: CustomEvent) {\n const { columnId } = event.detail;\n \n // Remove column\n this._columns = this._columns.filter(col => col.id !== columnId);\n \n // Remove data for this column\n for (const conceptId in this._formData) {\n if (this._formData[conceptId][columnId] !== undefined) {\n delete this._formData[conceptId][columnId];\n }\n }\n \n this._dirty = true;\n this._validateForm();\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('column-remove', {\n detail: { columnId },\n bubbles: true\n }));\n }\n\n private _addColumn() {\n // This would typically open a dialog to configure the new dimension column\n // For now, we'll add a generic dimension column\n const newColumnId = `dim-${Date.now()}`;\n const newColumn: FormColumn = {\n id: newColumnId,\n title: `Dimension ${this._columns.length}`,\n description: 'Additional dimension column',\n type: 'dimension',\n order: this._columns.length,\n removable: true,\n dimensionData: {\n dimensionId: 'custom',\n memberValue: 'default',\n memberLabel: 'Default Member',\n }\n };\n \n this._columns = [...this._columns, newColumn];\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('column-add', {\n detail: { column: newColumn },\n bubbles: true\n }));\n }\n\n private _handleSubmit() {\n this._submitted = true;\n this._validateForm();\n \n this.dispatchEvent(new CustomEvent('form-submit', {\n detail: {\n data: this._formData,\n valid: this._valid,\n errors: this._errors\n },\n bubbles: true\n }));\n }\n\n private _handleReset() {\n this._formData = { ...this.initialData };\n this._touched.clear();\n this._dirty = false;\n this._submitted = false;\n this._validateForm();\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('form-reset', {\n detail: {},\n bubbles: true\n }));\n }\n\n private _getFormState(): FormState {\n return {\n data: this._formData,\n errors: this._errors,\n touched: this._touched,\n dirty: this._dirty,\n valid: this._valid,\n submitted: this._submitted\n };\n }\n\n // Public API methods\n public getData(): FormData {\n return { ...this._formData };\n }\n\n public setData(data: FormData) {\n this._formData = { ...data };\n this._dirty = true;\n this._validateForm();\n this.requestUpdate();\n }\n\n public validate(): boolean {\n this._validateForm();\n return this._valid;\n }\n\n public reset() {\n this._handleReset();\n }\n\n public getState(): FormState {\n return this._getFormState();\n }\n\n render() {\n const errorCount = this._errors.filter(e => e.severity === 'error').length;\n const showValidationSummary = this.config.showValidationSummary !== false && \n errorCount > 0 && \n this._submitted;\n\n const schema = this._currentSchema;\n if (!schema) {\n return html`<div>Loading form...</div>`;\n }\n\n return html`\n <div class=\"form-container\">\n <!-- Form Header -->\n <div class=\"form-header\">\n <h1 class=\"form-title\">${schema.title}</h1>\n ${schema.description ? html`\n <p class=\"form-description\">${schema.description}</p>\n ` : ''}\n </div>\n\n <!-- Add Column Section -->\n ${this.config.enableColumnManagement !== false ? html`\n <div class=\"add-column-container\">\n <button \n class=\"add-column-btn\"\n @click=\"${this._addColumn}\"\n ?disabled=\"${this.disabled || this.readonly || (this.config.maxColumns && this._columns.length >= this.config.maxColumns)}\"\n >\n Add Dimension Column\n </button>\n </div>\n ` : ''}\n\n <!-- Form Content -->\n <div class=\"form-sections\">\n <!-- Validation Summary -->\n ${showValidationSummary ? html`\n <div class=\"validation-summary\">\n <h4 class=\"validation-summary-title\">Please fix the following errors:</h4>\n <ul class=\"validation-summary-list\">\n ${this._errors\n .filter(e => e.severity === 'error')\n .map(error => html`\n <li class=\"validation-summary-item\">${error.message}</li>\n `)}\n </ul>\n </div>\n ` : ''}\n\n <!-- Form Sections -->\n ${schema.sections.map(section => html`\n <jupiter-form-section\n .section=\"${section}\"\n .columns=\"${this._columns}\"\n .formData=\"${this._formData}\"\n .disabled=\"${this.disabled || this.readonly}\"\n .collapsible=\"${this.config.collapsibleSections !== false}\"\n .locale=\"${this.config.locale || 'en-US'}\"\n @field-change=\"${this._handleFieldChange}\"\n @section-expand=\"${this._handleSectionExpand}\"\n @concept-expand=\"${this._handleConceptExpand}\"\n @column-remove=\"${this._handleColumnRemove}\"\n ></jupiter-form-section>\n `)}\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <button \n class=\"btn-primary\"\n @click=\"${this._handleSubmit}\"\n ?disabled=\"${this.disabled || this.readonly}\"\n >\n Submit\n </button>\n \n <button \n class=\"btn-outline\"\n @click=\"${this._handleReset}\"\n ?disabled=\"${this.disabled || !this._dirty}\"\n >\n Reset\n </button>\n\n <div class=\"form-meta\">\n <span>Errors: ${errorCount}</span>\n <span>Modified: ${this._dirty ? 'Yes' : 'No'}</span>\n <span>Valid: ${this._valid ? 'Yes' : 'No'}</span>\n </div>\n </div>\n </div>\n `;\n }\n}\n","// Main entry point for Jupiter Dynamic Forms\nexport * from './core/dynamic-form';\nexport * from './core/form-section';\nexport * from './core/concept-tree';\nexport * from './core/form-field';\nexport * from './schema/types';\nexport * from './utils/validation';\n\n// Register all custom elements\nimport './core/dynamic-form';\nimport './core/form-section';\nimport './core/concept-tree';\nimport './core/form-field';\n\n// Version export\nexport const version = '1.0.0';\n"],"names":["t","e","o","addInitializer","customElements","define","globalThis","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","WeakMap","n$2","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","c","cssRules","n","r","is","i","defineProperty","getOwnPropertyDescriptor","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","metadata","litPropertyMetadata","y","HTMLElement","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","_a","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_b","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","kind","name","init","FormValidator","validateField","fieldId","conceptId","columnId","value","fieldType","rules","errors","rule","error","validateRule","_fieldType","isEmpty","createError","RegExp","test","URL","console","warn","message","severity","validateDataType","valid","convertedValue","numValue","isNaN","dateValue","Date","getTime","toISOString","split","datetimeValue","boolValue","formatValue","locale","Intl","NumberFormat","format","minimumFractionDigits","maximumFractionDigits","style","currency","toLocaleDateString","toLocaleString","XBRLFormBuilder","buildFormSchema","xbrlInput","presentation","presentationData","sections","roles","role","section","buildSectionFromRole","formId","now","title","extractEntityName","entrypoint","description","version","extractRoleTitle","conceptTrees","presentationLinkbase","concepts","concept","conceptTree","buildConceptTree","id","expanded","level","label","getPreferredLabel","labels","fields","elementAbstract","field","createFieldFromConcept","children","child","childTree","conceptName","collapsed","mapXBRLTypeToFieldType","placeholder","required","disabled","defaultValue","xbrlType","preferred","find","preferredLabel","standard","terse","pathParts","pathname","replace","trim","match","extractRoleOrder","parseInt","buildColumnsFromHypercubes","JupiterFormField","LitElement","arguments","_errors","_touched","changedProperties","_validateField","validation","_handleInput","event","target","checked","dispatchEvent","CustomEvent","detail","oldValue","bubbles","_handleFocus","_handleBlur","_renderInput","hasErrors","some","hasWarnings","cssClass","html","options","option","_getInputType","render","showLabel","css","__decorateClass","property","customElement","JupiterConceptTree","columns","formData","_expanded","_toggleExpanded","_getFieldForColumn","_getFieldValue","_handleFieldChange","stopPropagation","hasChildren","column","JupiterFormSection","collapsible","sectionId","_handleRemoveColumn","_handleConceptExpand","removable","JupiterDynamicForm","config","initialData","readonly","_formData","_columns","_dirty","_valid","_submitted","_initializeForm","log","_currentSchema","order","_getDefaultSchema","_getDefaultColumns","schema","_validateForm","fieldErrors","filter","_handleSectionExpand","_handleColumnRemove","col","_addColumn","newColumn","dimensionData","dimensionId","memberValue","memberLabel","_handleSubmit","data","_handleReset","clear","_getFormState","touched","dirty","submitted","getData","setData","validate","reset","getState","errorCount","showValidationSummary","enableColumnManagement","maxColumns","collapsibleSections"],"mappings":"uGAKMA,EAAEA,GAAG,CAACC,EAAEC,UAAcA,IAAAA,EAAEA,EAAEC,eAAgB,KAAoBC,eAAAC,OAAOL,EAAEC,KAAMG,eAAeC,OAAOL,EAAEC,ICArGD,EAAEM,WAAWL,EAAED,EAAEO,kBAAa,IAASP,EAAEQ,UAAUR,EAAEQ,SAASC,eAAe,uBAAuBC,SAASC,WAAW,YAAYC,cAAcD,UAAUE,EAAEC,SAASZ,EAAM,IAAAa;;;;;GAAO,IAAAC,EAAC,MAAQ,WAAAC,CAAYjB,EAAEC,EAAEC,GAAM,GAAAgB,KAAKC,cAAa,EAAGjB,IAAIW,EAAE,MAAMO,MAAM,qEAA0EF,KAAAG,QAAQrB,EAAEkB,KAAKlB,EAAEC,CAAC,CAAC,cAAIqB,GAAa,IAAItB,EAAEkB,KAAKhB,EAAE,MAAMW,EAAEK,KAAKlB,EAAKC,GAAAA,QAAG,IAASD,EAAE,CAAC,MAAMC,OAAE,IAASY,GAAG,IAAIA,EAAEU,OAAOtB,IAAID,EAAEE,EAAEsB,IAAIX,SAAI,IAASb,KAAKkB,KAAKhB,EAAEF,EAAE,IAAIY,eAAea,YAAYP,KAAKG,SAASpB,GAAGC,EAAEwB,IAAIb,EAAEb,GAAG,CAAQA,OAAAA,CAAC,CAAC,QAAA2B,GAAW,OAAOT,KAAKG,OAAO,GAAO,MAAgoBO,EAAE3B,EAAED,GAAGA,EAAEA,GAAGA,aAAaY,cAAe,CAAAZ,IAAI,IAAIC,EAAE,GAAG,IAAA,MAAUY,KAAKb,EAAE6B,SAAS5B,GAAGY,EAAEQ,QAAQ,MAAztB,CAAArB,GAAG,IAAI8B,EAAE,iBAAiB9B,EAAEA,EAAEA,EAAE,QAAG,EAAOa,GAAsrBkB,CAAE9B,EAAE,EAA/D,CAAkED,GAAGA,GCAlzCgC,GAAGC,EAAEC,eAAejC,EAAEkC,yBAAyBC,EAAEC,oBAAoBN,EAAEO,sBAAsBpC,EAAEqC,eAAeT,GAAGU,OAAOC,EAAEnC,WAAWsB,EAAEa,EAAEC,aAAaC,EAAEf,EAAEA,EAAEgB,YAAY,GAAGC,EAAEJ,EAAEK,+BAA+BC,EAAE,CAAC/C,EAAEa,IAAIb,EAAEgD,EAAE,CAAC,WAAAC,CAAYjD,EAAEa,GAAG,OAAOA,GAAG,KAAKqC,QAAQlD,EAAEA,EAAE2C,EAAE,KAAK,MAAM,KAAKH,OAAO,KAAKW,MAAMnD,EAAE,MAAMA,EAAEA,EAAEoD,KAAKC,UAAUrD,GAAUA,OAAAA,CAAC,EAAE,aAAAsD,CAActD,EAAEa,GAAG,IAAIoB,EAAEjC,EAAE,OAAOa,GAAG,KAAKqC,QAAQjB,EAAE,OAAOjC,EAAE,MAAM,KAAKuD,OAAOtB,EAAE,OAAOjC,EAAE,KAAKuD,OAAOvD,GAAG,MAAM,KAAKwC,OAAO,KAAKW,MAAS,IAAClB,EAAEmB,KAAKI,MAAMxD,EAAE,OAAOA,GAAGiC,EAAE,IAAI,EAASA,OAAAA,CAAC,GAAGwB,EAAE,CAACzD,EAAEa,KAAKoB,EAAEjC,EAAEa,GAAG6C,EAAE,CAACC,WAAU,EAAGC,KAAKC,OAAOC,UAAUd,EAAEe,SAAQ,EAAGC,YAAW,EAAGC,WAAWR;;;;;GAAG3C,OAAOoD,WAAPpD,OAAOoD,SAAWpD,OAAO,aAAY2B,EAAE0B,sBAAF1B,EAAE0B,oBAA0B,IAAApD,SAAQ,MAAMqD,UAAUC,YAAY,qBAAOlE,CAAeH,GAAQkB,KAAAoD,QAAQpD,KAAKyB,IAALzB,KAAKyB,EAAI,KAAI4B,KAAKvE,EAAE,CAAC,6BAAWwE,GAA4B,OAAAtD,KAAKuD,WAAWvD,KAAKwD,MAAM,IAAIxD,KAAKwD,KAAKC,OAAO,CAAC,qBAAOC,CAAe5E,EAAEa,EAAE6C,GAAG,GAAG7C,EAAEgE,QAAQhE,EAAE8C,WAAU,GAAIzC,KAAKoD,OAAOpD,KAAKP,UAAUmE,eAAe9E,MAAMa,EAAE2B,OAAOuC,OAAOlE,IAAImE,SAAQ,GAAI9D,KAAK+D,kBAAkBvD,IAAI1B,EAAEa,IAAIA,EAAEqE,WAAW,CAAOjD,MAAAA,EAAEnB,SAASsB,EAAElB,KAAKiE,sBAAsBnF,EAAEiC,EAAEpB,QAAG,IAASuB,GAAGnC,EAAEiB,KAAKP,UAAUX,EAAEoC,EAAE,CAAC,CAAC,4BAAO+C,CAAsBnF,EAAEa,EAAEoB,GAAG,MAAMT,IAAIvB,EAAEyB,IAAIK,GAAGK,EAAElB,KAAKP,UAAUX,IAAI,CAAC,GAAAwB,GAAM,OAAON,KAAKL,EAAE,EAAE,GAAAa,CAAI1B,GAAGkB,KAAKL,GAAGb,CAAC,GAAG,MAAM,CAACwB,IAAIvB,EAAE,GAAAyB,CAAIb,GAAG,MAAMuB,EAAE,MAAAnC,OAAAA,EAAAA,EAAGmF,KAAKlE,MAAM,MAAAa,GAAAA,EAAGqD,KAAKlE,KAAKL,GAAGK,KAAKmE,cAAcrF,EAAEoC,EAAEH,EAAE,EAAEqD,cAAa,EAAGC,YAAW,EAAG,CAAC,yBAAOC,CAAmBxF,GAAG,OAAOkB,KAAK+D,kBAAkBzD,IAAIxB,IAAI0D,CAAC,CAAC,WAAOY,GAAO,GAAGpD,KAAK4D,eAAe/B,EAAE,sBAAsB,OAAa/C,MAAAA,EAAE8B,EAAEZ,MAAMlB,EAAEyE,gBAAW,IAASzE,EAAE2C,IAAIzB,KAAKyB,EAAE,IAAI3C,EAAE2C,IAAIzB,KAAK+D,kBAAkB,IAAIQ,IAAIzF,EAAEiF,kBAAkB,CAAC,eAAOR,GAAW,GAAGvD,KAAK4D,eAAe/B,EAAE,cAAc,OAAU,GAAA7B,KAAKwE,WAAU,EAAGxE,KAAKoD,OAAOpD,KAAK4D,eAAe/B,EAAE,eAAe,CAAC,MAAM/C,EAAEkB,KAAKyE,WAAW9E,EAAE,IAAIkB,EAAE/B,MAAME,EAAEF,IAAI,IAAA,MAAUiC,KAAKpB,EAAEK,KAAK0D,eAAe3C,EAAEjC,EAAEiC,GAAG,CAAOjC,MAAAA,EAAEkB,KAAKJ,OAAOoD,UAAU,GAAG,OAAOlE,EAAE,CAAOa,MAAAA,EAAEsD,oBAAoB3C,IAAIxB,GAAG,QAAG,IAASa,EAAW,IAAA,MAACb,EAAEiC,KAAKpB,EAAOK,KAAA+D,kBAAkBvD,IAAI1B,EAAEiC,EAAE,CAACf,KAAKwD,KAAS,IAAAe,IAAI,IAAA,MAAUzF,EAAEa,KAAKK,KAAK+D,kBAAkB,CAAC,MAAMhD,EAAEf,KAAK0E,KAAK5F,EAAEa,QAAG,IAASoB,GAAGf,KAAKwD,KAAKhD,IAAIO,EAAEjC,EAAE,CAACkB,KAAK2E,cAAc3E,KAAK4E,eAAe5E,KAAK6E,OAAO,CAAC,qBAAOD,CAAejF,GAAG,MAAMoB,EAAE,GAAM,GAAAkB,MAAM6C,QAAQnF,GAAG,CAAOZ,MAAAA,EAAE,IAAIgG,IAAIpF,EAAEqF,KAAK,KAAKC,WAAW,IAAA,MAAUtF,KAAKZ,EAAEgC,EAAEmE,QAAQpG,EAAEa,GAAG,WAAM,IAASA,GAAGoB,EAAEsC,KAAKvE,EAAEa,IAAWoB,OAAAA,CAAC,CAAC,WAAO2D,CAAK5F,EAAEa,GAAG,MAAMoB,EAAEpB,EAAE8C,UAAU,OAAM,IAAK1B,OAAE,EAAO,iBAAiBA,EAAEA,EAAE,iBAAiBjC,EAAEA,EAAEqG,mBAAc,CAAM,CAAC,WAAApF,GAAcqF,QAAQpF,KAAKqF,UAAK,EAAOrF,KAAKsF,iBAAgB,EAAGtF,KAAKuF,YAAW,EAAGvF,KAAKwF,KAAK,KAAKxF,KAAKyF,MAAM,CAAC,IAAAA,SAAYzF,KAAA0F,KAAK,IAAIC,QAAS7G,GAAGkB,KAAK4F,eAAe9G,GAAIkB,KAAK6F,KAAS,IAAAtB,IAAIvE,KAAK8F,OAAO9F,KAAKmE,gBAAgB,OAAA4B,EAAK/F,KAAAD,YAAY0B,IAAjBsE,EAAoBC,QAASlH,GAAGA,EAAEkB,MAAO,CAAC,aAAAiG,CAAcnH,UAAIkB,KAAKkG,OAALlG,KAAKkG,KAAO,IAAInB,MAAKoB,IAAIrH,QAAG,IAASkB,KAAKoG,YAAYpG,KAAKqG,cAAa,OAAAN,EAAAjH,EAAEwH,gBAAFxH,EAAAA,KAAAA,GAAmB,CAAC,gBAAAyH,CAAiBzH,SAAG,OAAKiH,EAAA/F,KAAAkG,SAAMM,OAAO1H,EAAE,CAAC,IAAAgH,GAAO,MAAMhH,EAAE,IAAIyF,IAAI5E,EAAEK,KAAKD,YAAYgE,kBAA4BhD,IAAAA,MAAAA,KAAKpB,EAAE8D,OAAOzD,KAAK4D,eAAe7C,KAAKjC,EAAE0B,IAAIO,EAAEf,KAAKe,WAAWf,KAAKe,IAAIjC,EAAE2H,KAAK,IAAIzG,KAAKqF,KAAKvG,EAAE,CAAC,gBAAA4H,GAAmB,MAAM5H,EAAEkB,KAAK2G,YAAY3G,KAAK4G,aAAa5G,KAAKD,YAAY8G,mBAAmB,MDA7lE,EAAClH,EAAEX,KAAQD,GAAAA,EAAEY,EAAEmH,mBAAmB9H,EAAE+H,IAAKjI,GAAGA,aAAaY,cAAcZ,EAAEA,EAAEsB,iBAAkB,IAAA,MAAUrB,KAAKC,EAAE,CAAC,MAAMA,EAAEgI,SAASC,cAAc,SAASrG,EAAE9B,EAAEoI,cAAS,IAAStG,GAAG5B,EAAEmI,aAAa,QAAQvG,GAAG5B,EAAEoI,YAAYrI,EAAEoB,QAAQR,EAAE0H,YAAYrI,EAAE,GCAk3DW,CAAEb,EAAEkB,KAAKD,YAAY4E,eAAe7F,CAAC,CAAC,iBAAAwI,SAAoBtH,KAAKoG,aAALpG,KAAKoG,WAAapG,KAAK0G,oBAAmB1G,KAAK4F,gBAAe,GAAI,OAAAG,EAAK/F,KAAAkG,OAAMH,EAAAC,QAASlH,UAAG,OAAA,OAAAiH,EAAAjH,EAAEwH,oBAAF,EAAAP,EAAA7B,KAAApF,IAAqB,CAAC,cAAA8G,CAAe9G,GAAI,CAAA,oBAAAyI,SAAuB,OAAAxB,EAAA/F,KAAKkG,OAALH,EAAWC,QAASlH,UAAG,OAAA,OAAAiH,EAAAjH,EAAE0I,uBAAF,EAAAzB,EAAA7B,KAAApF,IAAwB,CAAC,wBAAA2I,CAAyB3I,EAAEa,EAAEoB,GAAQf,KAAA0H,KAAK5I,EAAEiC,EAAE,CAAC,IAAA4G,CAAK7I,EAAEa,SAAG,MAAMoB,EAAEf,KAAKD,YAAYgE,kBAAkBzD,IAAIxB,GAAGC,EAAEiB,KAAKD,YAAY2E,KAAK5F,EAAEiC,GAAG,QAAG,IAAShC,IAAG,IAAKgC,EAAE8B,QAAQ,CAAC,MAAM3B,QAAG,KAAS,OAAA6E,EAAAhF,EAAE6B,gBAAF,EAAAmD,EAAahE,aAAYhB,EAAE6B,UAAUd,GAAGC,YAAYpC,EAAEoB,EAAE2B,MAAM1C,KAAKwF,KAAK1G,EAAE,MAAMoC,EAAElB,KAAK4H,gBAAgB7I,GAAGiB,KAAKmH,aAAapI,EAAEmC,GAAGlB,KAAKwF,KAAK,IAAI,CAAC,CAAC,IAAAkC,CAAK5I,EAAEa,WAAG,MAAMoB,EAAEf,KAAKD,YAAYhB,EAAEgC,EAAEyC,KAAKlD,IAAIxB,GAAG,QAAG,IAASC,GAAGiB,KAAKwF,OAAOzG,EAAE,CAAOD,MAAAA,EAAEiC,EAAEuD,mBAAmBvF,GAAGmC,EAAE,mBAAmBpC,EAAE8D,UAAU,CAACR,cAActD,EAAE8D,gBAAW,KAAS,OAAAmD,EAAAjH,EAAE8D,gBAAF,EAAAmD,EAAa3D,eAActD,EAAE8D,UAAUd,EAAE9B,KAAKwF,KAAKzG,EAAE,MAAM8B,EAAEK,EAAEkB,cAAczC,EAAEb,EAAE4D,MAAW3D,KAAAA,GAAG8B,IAAG,OAAAgH,EAAK7H,KAAA8H,eAAMxH,IAAIvB,KAAI8B,EAAEb,KAAKwF,KAAK,IAAI,CAAC,CAAC,aAAArB,CAAcrF,EAAEa,EAAEoB,SAAG,QAAG,IAASjC,EAAE,CAAC,MAAMC,EAAEiB,KAAKD,YAAYmB,EAAElB,KAAKlB,GAAG,GAAGiC,IAAIhC,EAAAA,EAAEuF,mBAAmBxF,OAAMiC,EAAEgC,YAAYR,GAAGrB,EAAEvB,IAAIoB,EAAE+B,YAAY/B,EAAE8B,SAAS3B,KAAI,OAAA6E,EAAA/F,KAAK8H,WAAL,EAAA/B,EAAWzF,IAAIxB,MAAKkB,KAAK+H,aAAahJ,EAAE2F,KAAK5F,EAAEiC,KAAK,OAAYf,KAAAgI,EAAElJ,EAAEa,EAAEoB,EAAE,EAAC,IAAKf,KAAKsF,kBAAkBtF,KAAK0F,KAAK1F,KAAKiI,OAAO,CAAC,CAAAD,CAAElJ,EAAEa,GAAGmD,WAAW/B,EAAE8B,QAAQ9D,EAAE+E,QAAQ5C,GAAGL,GAAGE,KAAKf,KAAK8H,OAAL9H,KAAK8H,KAAW,IAAAvD,MAAK2D,IAAIpJ,KAAKkB,KAAK8H,KAAKtH,IAAI1B,EAAE+B,GAAGlB,GAAGK,KAAKlB,KAAI,IAAKoC,QAAG,IAASL,KAAKb,KAAK6F,KAAKqC,IAAIpJ,KAAKkB,KAAKuF,YAAYxE,IAAIpB,OAAE,GAAQK,KAAK6F,KAAKrF,IAAI1B,EAAEa,KAAI,IAAKZ,GAAGiB,KAAKwF,OAAO1G,IAAIkB,KAAKmI,OAALnI,KAAKmI,KAAO,IAAIpD,MAAKoB,IAAIrH,GAAG,CAAC,UAAMmJ,GAAOjI,KAAKsF,iBAAgB,EAAM,UAAOtF,KAAK0F,IAAI,OAAO5G,GAAG6G,QAAQyC,OAAOtJ,EAAE,CAAOA,MAAAA,EAAEkB,KAAKqI,iBAAiB,OAAO,MAAMvJ,SAASA,GAAGkB,KAAKsF,eAAe,CAAC,cAAA+C,GAAiB,OAAOrI,KAAKsI,eAAe,CAAC,aAAAA,SAAgB,IAAItI,KAAKsF,gBAAgB,OAAU,IAACtF,KAAKuF,WAAW,CAAI,GAAAvF,KAAKoG,aAALpG,KAAKoG,WAAapG,KAAK0G,oBAAmB1G,KAAKqF,KAAK,CAAC,IAAA,MAAUvG,EAAEa,KAAKK,KAAKqF,KAAKrF,KAAKlB,GAAGa,EAAEK,KAAKqF,UAAK,CAAM,CAAOvG,MAAAA,EAAEkB,KAAKD,YAAYgE,kBAAkB,GAAGjF,EAAE2H,KAAK,EAAE,IAAA,MAAU9G,EAAEoB,KAAKjC,EAAE,CAAC,MAAMgF,QAAQhF,GAAGiC,EAAEhC,EAAEiB,KAAKL,IAAG,IAAKb,GAAGkB,KAAK6F,KAAKqC,IAAIvI,SAAI,IAASZ,GAAGiB,KAAKgI,EAAErI,OAAE,EAAOoB,EAAEhC,EAAE,CAAC,CAAC,IAAID,GAAE,EAAG,MAAMa,EAAEK,KAAK6F,KAAQ,IAAC/G,EAAEkB,KAAKuI,aAAa5I,GAAGb,GAAGkB,KAAKwI,WAAW7I,GAAG,OAAAoG,EAAK/F,KAAAkG,OAAMH,EAAAC,QAASlH,UAAG,OAAA,OAAAiH,EAAAjH,EAAE2J,iBAAF,EAAA1C,EAAA7B,KAAApF,KAAmBkB,KAAK0I,OAAO/I,IAAIK,KAAK2I,MAAM,OAAOhJ,GAAG,MAAMb,GAAE,EAAGkB,KAAK2I,OAAOhJ,CAAC,CAACb,GAAGkB,KAAK4I,KAAKjJ,EAAE,CAAC,UAAA6I,CAAW1J,GAAE,CAAE,IAAA8J,CAAK9J,SAAG,OAAAiH,EAAA/F,KAAKkG,OAALH,EAAWC,QAASlH,UAAG,OAAA,OAAAiH,EAAAjH,EAAE+J,kBAAF,EAAA9C,EAAA7B,KAAApF,KAAoBkB,KAAKuF,aAAavF,KAAKuF,YAAW,EAAGvF,KAAK8I,aAAahK,IAAIkB,KAAK+I,QAAQjK,EAAE,CAAC,IAAA6J,GAAO3I,KAAK6F,KAAK,IAAItB,IAAIvE,KAAKsF,iBAAgB,CAAE,CAAC,kBAAI0D,GAAiB,OAAOhJ,KAAKiJ,mBAAmB,CAAC,iBAAAA,GAAoB,OAAOjJ,KAAK0F,IAAI,CAAC,YAAA6C,CAAazJ,GAAS,OAAA,CAAE,CAAC,MAAA4J,CAAO5J,GAAGkB,KAAKmI,OAALnI,KAAKmI,KAAOnI,KAAKmI,KAAKnC,QAASlH,GAAGkB,KAAK2H,KAAK7I,EAAEkB,KAAKlB,MAAMkB,KAAK2I,MAAM,CAAC,OAAAI,CAAQjK,GAAI,CAAA,YAAAgK,CAAahK,GAAE,EAAGoE,EAAEyB,cAAc,GAAGzB,EAAE2D,kBAAkB,CAACqC,KAAK,QAAQhG,EAAErB,EAAE,0BAA0B0C,IAAIrB,EAAErB,EAAE,cAAc,IAAI0C,IAAI,MAAA5C,GAAAA,EAAI,CAACwH,gBAAgBjG,KAAK3B,EAAE6H,0BAAF7H,EAAE6H,wBAA0B,KAAI/F,KAAK;;;;;;ACAnxL,MAAMrE,EAAE,CAACyD,WAAU,EAAGC,KAAKC,OAAOC,UAAU9D,EAAE+D,SAAQ,EAAGE,WAAWhE,GAAG8B,EAAE,CAAC/B,EAAEE,EAAED,EAAE8B,KAAK,MAAMwI,KAAKzI,EAAEoC,SAASjC,GAAGF,EAAE,IAAIlB,EAAEP,WAAW6D,oBAAoB3C,IAAIS,GAAM,QAAA,IAASpB,GAAGP,WAAW6D,oBAAoBzC,IAAIO,EAAEpB,EAAM,IAAA4E,KAAK,WAAW3D,KAAK9B,EAAEwC,OAAOuC,OAAO/E,IAAIgF,SAAQ,GAAInE,EAAEa,IAAIK,EAAEyI,KAAKxK,GAAG,aAAa8B,EAAE,CAAM,MAAC0I,KAAKtK,GAAG6B,EAAQ,MAAA,CAAC,GAAAL,CAAIK,GAAG,MAAMD,EAAE7B,EAAEuB,IAAI4D,KAAKlE,MAAMjB,EAAEyB,IAAI0D,KAAKlE,KAAKa,GAAGb,KAAKmE,cAAcnF,EAAE4B,EAAE9B,EAAE,EAAE,IAAAyK,CAAKxK,GAAU,YAAA,IAASA,GAAGiB,KAAKgI,EAAEhJ,OAAE,EAAOF,EAAEC,GAAGA,CAAC,EAAE,CAAC,GAAG,WAAW6B,EAAE,CAAM,MAAC0I,KAAKtK,GAAG6B,EAAE,OAAO,SAASA,GAASD,MAAAA,EAAEZ,KAAKhB,GAAGD,EAAEmF,KAAKlE,KAAKa,GAAGb,KAAKmE,cAAcnF,EAAE4B,EAAE9B,EAAE,CAAC,CAAO,MAAAoB,MAAM,mCAAmCU,IAAI,SAASA,EAAE9B,GAAG,MAAM,CAACC,EAAEC,IAAI,iBAAiBA,EAAE6B,EAAE/B,EAAEC,EAAEC,GAAC,EAAIF,EAAEC,EAAEC,KAAW6B,MAAAA,EAAE9B,EAAE6E,eAAe5E,GAAUD,OAAAA,EAAEgB,YAAY2D,eAAe1E,EAAEF,GAAG+B,EAAES,OAAOL,yBAAyBlC,EAAEC,QAAG,CAAM,EAA/H,CAAkIF,EAAEC,EAAEC,EAAE;;;;;GCAlyB,SAAS6B,EAAEA,GAAU/B,OAAAA,EAAE,IAAI+B,EAAE8C,OAAM,EAAGlB,WAAU,GAAI,CCHhD,MAAM+G,EAIX,oBAAOC,CACLC,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0B,IAE1B,MAAMC,EAA4B,GAElC,IAAA,MAAWC,KAAQF,EAAO,CAClB,MAAAG,EAAQlK,KAAKmK,aAAaT,EAASC,EAAWC,EAAUC,EAAOC,EAAWG,GAC5EC,GACFF,EAAO3G,KAAK6G,EAEhB,CAEO,OAAAF,CACT,CAKA,mBAAeG,CACbT,EACAC,EACAC,EACAC,EACAO,EACAH,GAEA,MAAMI,EAAUR,SAAmD,KAAVA,EAEzD,OAAQI,EAAKvH,MACX,IAAK,WACH,GAAI2H,EACF,OAAOrK,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,GAExD,MAEF,IAAK,MACH,IAAKI,GAA4B,iBAAVR,GAAsBA,EAAQI,EAAKJ,MACxD,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,GAExD,MAEF,IAAK,MACH,IAAKI,GAA4B,iBAAVR,GAAsBA,EAAQI,EAAKJ,MACxD,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,GAExD,MAEF,IAAK,YACC,IAACI,GAA4B,iBAAVR,GAAsBA,EAAMxJ,OAAS4J,EAAKJ,MAC/D,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,GAExD,MAEF,IAAK,YACC,IAACI,GAA4B,iBAAVR,GAAsBA,EAAMxJ,OAAS4J,EAAKJ,MAC/D,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,GAExD,MAEF,IAAK,UACH,IAAKI,GAA4B,iBAAVR,EAAoB,CAEzC,IADc,IAAIU,OAAON,EAAKJ,OACnBW,KAAKX,GACd,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,EAE1D,CACA,MAEF,IAAK,QACH,IAAKI,GAA4B,iBAAVR,EAAoB,CAEzC,IADmB,6BACHW,KAAKX,GACnB,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,EAE1D,CACA,MAEF,IAAK,MACH,IAAKI,GAA4B,iBAAVR,EACjB,IACF,IAAIY,IAAIZ,EAAK,CACP,MACN,OAAO7J,KAAKsK,YAAYZ,EAASC,EAAWC,EAAUK,EACxD,CAEF,MAEF,IAAK,SAEH,MAEF,QACES,QAAQC,KAAK,iCAAiCV,EAAKvH,QAGhD,OAAA,IACT,CAKA,kBAAe4H,CACbZ,EACAC,EACAC,EACAK,GAEO,MAAA,CACLP,UACAC,YACAC,WACAgB,QAASX,EAAKW,QACdC,SAAUZ,EAAKY,UAAY,QAC3BZ,OAEJ,CAKA,uBAAOa,CAAiBjB,EAAYC,GAClC,GAAID,SAAmD,KAAVA,EAC3C,MAAO,CAAEkB,OAAO,EAAMC,eAAgBnB,GAGxC,OAAQC,GACN,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,aAAc,CACX,MAAAmB,EAAW5I,OAAOwH,GACpB,OAAAqB,MAAMD,GACD,CAAEF,OAAO,EAAOb,MAAO,yBAEzB,CAAEa,OAAO,EAAMC,eAAgBC,EACxC,CAEA,IAAK,OAAQ,CACL,MAAAE,EAAY,IAAIC,KAAKvB,GAC3B,OAAIqB,MAAMC,EAAUE,WACX,CAAEN,OAAO,EAAOb,MAAO,uBAEzB,CAAEa,OAAO,EAAMC,eAAgBG,EAAUG,cAAcC,MAAM,KAAK,GAC3E,CAEA,IAAK,WAAY,CACT,MAAAC,EAAgB,IAAIJ,KAAKvB,GAC/B,OAAIqB,MAAMM,EAAcH,WACf,CAAEN,OAAO,EAAOb,MAAO,2BAEzB,CAAEa,OAAO,EAAMC,eAAgBQ,EAAcF,cACtD,CAEA,IAAK,UACC,GAAiB,kBAAVzB,EACT,MAAO,CAAEkB,OAAO,EAAMC,eAAgBnB,GAEpC,GAAiB,iBAAVA,EAAoB,CACvB,MAAA4B,EAAY5B,EAAM1E,cACpB,GAAc,SAAdsG,GAAsC,MAAdA,EAC1B,MAAO,CAAEV,OAAO,EAAMC,gBAAgB,GAEpC,GAAc,UAAdS,GAAuC,MAAdA,EAC3B,MAAO,CAAEV,OAAO,EAAMC,gBAAgB,EAE1C,CACA,MAAO,CAAED,OAAO,EAAOb,MAAO,0BAEhC,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,MACL,IAAK,MACH,MAAO,CAAEa,OAAO,EAAMC,eAAgBrI,OAAOkH,IAM/C,QACE,MAAO,CAAEkB,OAAO,EAAMC,eAAgBnB,GAE5C,CAKA,kBAAO6B,CAAY7B,EAAYC,EAAsB6B,EAAS,SACxD,GAAA9B,QAA8C,MAAA,GAElD,OAAQC,GACN,IAAK,SACI,OAAA,IAAI8B,KAAKC,aAAaF,GAAQG,OAAOzJ,OAAOwH,IAErD,IAAK,UACI,OAAA,IAAI+B,KAAKC,aAAaF,EAAQ,CACnCI,sBAAuB,EACvBC,sBAAuB,IACtBF,OAAOzJ,OAAOwH,IAEnB,IAAK,WACI,OAAA,IAAI+B,KAAKC,aAAaF,EAAQ,CACnCM,MAAO,WACPC,SAAU,QACTJ,OAAOzJ,OAAOwH,IAEnB,IAAK,aACI,OAAA,IAAI+B,KAAKC,aAAaF,EAAQ,CACnCM,MAAO,UACPF,sBAAuB,IACtBD,OAAOzJ,OAAOwH,GAAS,KAE5B,IAAK,OACH,OAAO,IAAIuB,KAAKvB,GAAOsC,mBAAmBR,GAE5C,IAAK,WACH,OAAO,IAAIP,KAAKvB,GAAOuC,eAAeT,GAExC,QACE,OAAOhJ,OAAOkH,GAEpB,ECrNK,MAAMwC,EAMX,sBAAOC,CAAgBC,GACrB,IAAKA,EAAUC,cAAkD,IAAlCD,EAAUC,aAAanM,OAC9C,MAAA,IAAIH,MAAM,sCAIZ,MAAAuM,EAAmBF,EAAUC,aAAa,GAE1CE,EAA0B,GAQzB,OALUD,EAAAE,MAAM3G,QAAgB4G,IAC/B,MAAAC,EAAU7M,KAAK8M,qBAAqBF,GAC1CF,EAASrJ,KAAKwJ,KAGT,CACLE,OAAQ,aAAa3B,KAAK4B,QAC1BC,MAAO,eAAejN,KAAKkN,kBAAkBT,EAAiBU,cAC9DC,YAAa,iDACbC,QAAS,QACTX,WAEJ,CAKA,2BAAeI,CAAqBF,SAElC,MAAMK,EAAQjN,KAAKsN,iBAAiBV,EAAKA,MAEnCW,EAA8B,GAY7B,OATH,OAAAxH,EAAA6G,EAAKY,2BAAL,EAAAzH,EAA2B0H,WACxBb,EAAAY,qBAAqBC,SAASzH,QAAmB0H,IACpD,MAAMC,EAAc3N,KAAK4N,iBAAiBF,EAAS,GAC/CC,GACFJ,EAAalK,KAAKsK,KAKjB,CACLE,GAAIjB,EAAKiB,GACTZ,QACAG,YAAa,eAAeH,IAC5BQ,SAAUF,EACVO,UAAU,EAEd,CAKA,uBAAeF,CAAiBF,EAAkCK,GAChE,MAAMC,EAAQhO,KAAKiO,kBAAkBP,EAAQQ,QAGvCC,EAAsB,GACxB,IAACT,EAAQU,gBAAiB,CACtB,MAAAC,EAAQrO,KAAKsO,uBAAuBZ,GACtCW,GACFF,EAAO9K,KAAKgL,EAEhB,CAGA,MAAME,EAA0B,GAUzB,OATHb,EAAQa,UAAYb,EAAQa,SAASlO,OAAS,GACxCqN,EAAAa,SAASvI,QAAiBwI,IAChC,MAAMC,EAAYzO,KAAK4N,iBAAiBY,EAAOT,EAAQ,GACnDU,GACFF,EAASlL,KAAKoL,KAKb,CACLZ,GAAIH,EAAQG,GACZvE,KAAMoE,EAAQgB,YACdV,QACAZ,YAAa,GAAGM,EAAQgB,gBAAgBhB,EAAQhL,QAChDqL,QACAQ,WACAJ,SACAQ,UAAWZ,EAAQ,EAEvB,CAKA,6BAAeO,CAAuBZ,GACpC,MAAM5D,EAAY9J,KAAK4O,uBAAuBlB,EAAQhL,MAChDsL,EAAQhO,KAAKiO,kBAAkBP,EAAQQ,QAEtC,MAAA,CACLL,GAAI,GAAGH,EAAQG,WACflE,UAAW+D,EAAQG,GACnBjE,SAAU,UACVlH,KAAMoH,EACNkE,QACAa,YAAa,SAASb,EAAM7I,gBAC5B2J,UAAU,EACVC,SAAUrB,EAAQU,gBAClBY,aAAc,KAElB,CAKA,6BAAeJ,CAAuBK,GAa7B,MAZoC,CACzC,uBAAwB,OACxB,yBAA0B,WAC1B,wBAAyB,SACzB,wBAAyB,UACzB,wBAAyB,aACzB,qBAAsB,OACtB,wBAAyB,UACzB,2BAA4B,SAC5B,yDAA0D,QAG7CA,IAAa,MAC9B,CAKA,wBAAehB,CAAkBC,GAC3B,IAACA,GAA4B,IAAlBA,EAAO7N,OAAqB,MAAA,kBAG3C,MAAM6O,EAAYhB,EAAOiB,KAAK1N,GAAKA,EAAE2N,gBACjC,GAAAF,EAAW,OAAOA,EAAUlB,MAGhC,MAAMqB,EAAWnB,EAAOiB,KAAU1N,GAAW,wCAAXA,EAAEmL,MAChC,GAAAyC,EAAU,OAAOA,EAASrB,MAG9B,MAAMsB,EAAQpB,EAAOiB,KAAU1N,GAAW,6CAAXA,EAAEmL,MAC7B,OAAA0C,EAAcA,EAAMtB,MAGjBE,EAAO,GAAGF,KACnB,CAKA,wBAAed,CAAkBC,GAC3B,IACI,MACAoC,EADM,IAAI9E,IAAI0C,GACEqC,SAASjE,MAAM,KAE9B,OADUgE,EAAUA,EAAUlP,OAAS,GAC9BoP,QAAQ,OAAQ,IAAIA,QAAQ,gBAAiB,KAAKC,QAAU,QAAA,CACtE,MACC,MAAA,QACT,CACF,CAKA,uBAAepC,CAAiBV,GAExB,MAAA+C,EAAQ/C,EAAK+C,MAAM,sBACzB,OAAOA,EAAQA,EAAM,GAAGD,OAAS9C,CACnC,CAKA,uBAAegD,CAAiBhD,GACxB,MAAA+C,EAAQ/C,EAAK+C,MAAM,gBACzB,OAAOA,EAAQE,SAASF,EAAM,GAAI,IAAM,CAC1C,CAKA,iCAAOG,GAGL,MAAO,CAAC,CACNjC,GAAI,UACJG,MAAO,SACPtL,KAAM,QAEV,kMCrNWqN,QAAAA,iBAAN,cAA+BC,EAAAA,WAA/B,WAAAjQ,GAAAqF,SAAA6K,WAIoBjQ,KAAA6J,MAAA,KACe7J,KAAA+O,UAAA,EACH/O,KAAA2L,OAAA,QAE5B3L,KAAQkQ,QAA6B,GACrClQ,KAAQmQ,UAAW,CAAA,CAyGlB,UAAA3H,CAAW4H,IACfA,EAAkBlI,IAAI,UAAYkI,EAAkBlI,IAAI,WAC1DlI,KAAKqQ,gBAET,CAEQ,cAAAA,UACF,OAAAtK,EAAA/F,KAAKqO,YAAL,EAAAtI,EAAYuK,cACdtQ,KAAKkQ,QAAU1G,EAAcC,cAC3BzJ,KAAKqO,MAAMR,GACX7N,KAAK2J,UACL3J,KAAK4J,SACL5J,KAAK6J,MACL7J,KAAKqO,MAAM3L,KACX1C,KAAKqO,MAAMiC,YAGjB,CAEQ,YAAAC,CAAaC,GACnB,MAAMC,EAASD,EAAMC,OACrB,IAAI5G,EAAa4G,EAAO5G,MAGA,WAApB7J,KAAKqO,MAAM3L,MAAyC,YAApB1C,KAAKqO,MAAM3L,KAC7CmH,EAAkB,KAAVA,EAAe,KAAOxH,OAAOwH,GACR,YAApB7J,KAAKqO,MAAM3L,OACpBmH,EAAS4G,EAA4BC,SAGvC1Q,KAAK6J,MAAQA,EACb7J,KAAKmQ,UAAW,EAEXnQ,KAAA2Q,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQ,CACNnH,QAAS1J,KAAKqO,MAAMR,GACpBlE,UAAW3J,KAAK2J,UAChBC,SAAU5J,KAAK4J,SACfC,QACAiH,SAAU9Q,KAAK6J,OAEjBkH,SAAS,IAEb,CAEQ,YAAAC,GACDhR,KAAA2Q,cAAc,IAAIC,YAAY,cAAe,CAChDC,OAAQ,CACNnH,QAAS1J,KAAKqO,MAAMR,GACpBlE,UAAW3J,KAAK2J,UAChBC,SAAU5J,KAAK4J,UAEjBmH,SAAS,IAEb,CAEQ,WAAAE,GACNjR,KAAKmQ,UAAW,EACXnQ,KAAA2Q,cAAc,IAAIC,YAAY,aAAc,CAC/CC,OAAQ,CACNnH,QAAS1J,KAAKqO,MAAMR,GACpBlE,UAAW3J,KAAK2J,UAChBC,SAAU5J,KAAK4J,UAEjBmH,SAAS,IAEb,CAEQ,YAAAG,SACA,MAAAC,EAAYnR,KAAKkQ,QAAQkB,KAAUrS,GAAe,UAAfA,EAAE8L,UACrCwG,EAAcrR,KAAKkQ,QAAQkB,KAAUrS,GAAe,YAAfA,EAAE8L,UACvCyG,EAAW,gBAAeH,EAAY,QAAUE,EAAc,UAAY,IAExE,OAAArR,KAAKqO,MAAM3L,MACjB,IAAK,WACI,OAAA6O;;qBAEMD;sBACCtR,KAAK6J,OAAS;yBACX7J,KAAK+O,UAAY/O,KAAKqO,MAAMU;2BAC1B/O,KAAKqO,MAAMQ,aAAe;sBAC/B7O,KAAKuQ;sBACLvQ,KAAKgR;qBACNhR,KAAKiR;;UAIpB,IAAK,SACI,OAAAM;;qBAEMD;sBACCtR,KAAK6J,OAAS;yBACX7J,KAAK+O,UAAY/O,KAAKqO,MAAMU;uBAC9B/O,KAAKuQ;sBACNvQ,KAAKgR;qBACNhR,KAAKiR;;;cAGZ,OAAAlL,OAAKsI,MAAMmD,kBAASzK,IAAc0K,GAAAF;;yBAEvBE,EAAO5H;6BACH4H,EAAO1C;6BACP/O,KAAK6J,QAAU4H,EAAO5H;;kBAEjC4H,EAAOzD;;;;UAMnB,IAAK,UACI,OAAAuD;;;;;0BAKWvP,QAAQhC,KAAK6J;2BACZ7J,KAAK+O,UAAY/O,KAAKqO,MAAMU;yBAC9B/O,KAAKuQ;wBACNvQ,KAAKgR;uBACNhR,KAAKiR;;oBAERjR,KAAKqO,MAAML;;UAIzB,QACS,OAAAuD;;oBAEKvR,KAAK0R;qBACJJ;sBACCtR,KAAK6J,OAAS;yBACX7J,KAAK+O,UAAY/O,KAAKqO,MAAMU;2BAC1B/O,KAAKqO,MAAMQ,aAAe;sBAC/B7O,KAAKuQ;sBACLvQ,KAAKgR;qBACNhR,KAAKiR;;UAIxB,CAEQ,aAAAS,GACE,OAAA1R,KAAKqO,MAAM3L,MACjB,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,aACI,MAAA,SACT,IAAK,OACI,MAAA,OACT,IAAK,WACI,MAAA,iBACT,IAAK,QACI,MAAA,QACT,IAAK,MACI,MAAA,MACT,IAAK,MACI,MAAA,MACT,QACS,MAAA,OAEb,CAEA,MAAAiP,GACQ,MAAAC,EAAgC,YAApB5R,KAAKqO,MAAM3L,KAEtB,OAAA6O;;UAEDK,EAAYL,EAAAA,IAAAA;sCACgBvR,KAAKqO,MAAMS,SAAW,WAAa;cAC3D9O,KAAKqO,MAAML;;UAEb;;UAEFhO,KAAKkR;;UAELlR,KAAKkQ,QAAQ7P,OAAS,GAAKL,KAAKmQ,SAAWoB;;cAEvCvR,KAAKkQ,QAAQnJ,IAAamD,GAAAqH,EAAAA,IAAAA;yCACCrH,EAAMW;kBAC7BX,EAAMU;;;;UAIZ;;KAGV,GA9SWmF,QAAAA,iBAWJlL,OAASgN,EAAAA,GAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAVYC,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UADPyO,yBACiBtQ,UAAA,QAAA,GACAqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMC,UAFPoN,yBAEiBtQ,UAAA,YAAA,GACAqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMC,UAHPoN,yBAGiBtQ,UAAA,WAAA,GAChBqS,EAAA,CAAXC,KAJUhC,yBAICtQ,UAAA,QAAA,GACiBqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WALP+N,yBAKkBtQ,UAAA,WAAA,GACDqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMC,UANPoN,yBAMiBtQ,UAAA,SAAA,GAEXqS,EAAA,CAAhBnO,KARUoM,yBAQMtQ,UAAA,UAAA,GACAqS,EAAA,CAAhBnO,KATUoM,yBASMtQ,UAAA,WAAA,GATNsQ,QAANA,iBAAA+B,EAAA,CADNE,EAAc,uBACFjC,0NCAAkC,QAAAA,mBAAN,cAAiCjC,EAAAA,WAAjC,WAAAjQ,GAAAqF,SAAA6K,WAEsBjQ,KAAAkS,QAAwB,GACvBlS,KAAAmS,SAAgC,GACpBnS,KAAA+O,UAAA,EACH/O,KAAA2L,OAAA,QAE5B3L,KAAQoS,WAAY,CAAA,CAmG7B,iBAAA9K,GACElC,MAAMkC,oBACDtH,KAAAoS,WAAapS,KAAK0N,QAAQiB,SACjC,CAEQ,eAAA0D,GACDrS,KAAAoS,WAAapS,KAAKoS,UAElBpS,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CACnDC,OAAQ,CACNlH,UAAW3J,KAAK0N,QAAQG,GACxBC,SAAU9N,KAAKoS,WAEjBrB,SAAS,IAEb,CAEQ,kBAAAuB,CAAmB1I,GAClB,OAAA5J,KAAK0N,QAAQS,OAAOgB,KAAcd,GAAAA,EAAMzE,WAAaA,EAC9D,CAEQ,cAAA2I,CAAelE,SACrB,OAAO,OAAAtI,OAAKoM,SAASnS,KAAK0N,QAAQG,cAAMQ,EAAMzE,SAChD,CAEQ,kBAAA4I,CAAmBhC,GACzBA,EAAMiC,kBAEDzS,KAAA2Q,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQL,EAAMK,OACdE,SAAS,IAEb,CAEA,MAAAY,GACE,MAAMe,EAAc1S,KAAK0N,QAAQa,UAAYvO,KAAK0N,QAAQa,SAASlO,OAAS,EACtE0N,EAAQ/N,KAAK0N,QAAQK,OAAS,EAE7B,OAAAwD;iDACsCxD;;8CAEH/N,KAAKqS;;uCAEZK,EAAe1S,KAAKoS,UAAY,WAAa,GAAM;cAC5EM,EAAc,IAAM;;;cAGpB1S,KAAK0N,QAAQM;cACbhO,KAAK0N,QAAQN,YAAcmE;kDACSvR,KAAK0N,QAAQN;cAC/C;;;;;UAKNpN,KAAKkS,QAAQnL,IAAc4L,IAC3B,MAAMtE,EAAQrO,KAAKsS,mBAAmBK,EAAO9E,IAEtC,OAAA0D;qCACqBlD,EAAkB,GAAV;gBAC9BA,EAAQkD,EAAAA,IAAAA;;4BAEIlD;gCACIrO,KAAK0N,QAAQG;+BACd8E,EAAO9E;4BACV7N,KAAKuS,eAAelE;+BACjBrO,KAAK+O;6BACP/O,KAAK2L;mCACC3L,KAAKwS;;gBAEtB;;;;;;QAOVE,EAAcnB,EAAAA,IAAAA;+BACUvR,KAAKoS,UAA0B,GAAd;YACrCpS,KAAK0N,QAAQa,SAAUxH,IAAayH,GAAA+C;;0BAEtB/C;0BACAxO,KAAKkS;2BACJlS,KAAKmS;2BACLnS,KAAK+O;yBACP/O,KAAK2L;+BACC3L,KAAKwS;iCACFzT,IAClBA,EAAE0T,kBACGzS,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CAAEC,OAAQ9R,EAAE8R,OAAQE,SAAS;;;;QAKxF;KAER,GA1MWkB,QAAAA,mBASJpN,OAASgN,EAAAA,GAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IARYC,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UADP2Q,2BACiBxS,UAAA,UAAA,GACDqS,EAAA,CAA1BC,EAAS,CAAErP,KAAMT,SAFPgQ,2BAEgBxS,UAAA,UAAA,GACCqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UAHP2Q,2BAGiBxS,UAAA,WAAA,GACCqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WAJPiQ,2BAIkBxS,UAAA,WAAA,GACDqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMC,UALPsP,2BAKiBxS,UAAA,SAAA,GAEXqS,EAAA,CAAhBnO,KAPUsO,2BAOMxS,UAAA,YAAA,GAPNwS,QAANA,mBAAAH,EAAA,CADNE,EAAc,yBACFC,4NCAAW,QAAAA,mBAAN,cAAiC5C,EAAAA,WAAjC,WAAAjQ,GAAAqF,SAAA6K,WAEsBjQ,KAAAkS,QAAwB,GACvBlS,KAAAmS,SAAgC,GACpBnS,KAAA+O,UAAA,EACG/O,KAAA6S,aAAA,EACN7S,KAAA2L,OAAA,QAE5B3L,KAAQoS,WAAY,CAAA,CAmJ7B,iBAAA9K,GACElC,MAAMkC,oBACDtH,KAAAoS,WAAsC,IAA1BpS,KAAK6M,QAAQiB,QAChC,CAEQ,eAAAuE,GACDrS,KAAK6S,cAEL7S,KAAAoS,WAAapS,KAAKoS,UAElBpS,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CACnDC,OAAQ,CACNiC,UAAW9S,KAAK6M,QAAQgB,GACxBC,SAAU9N,KAAKoS,WAEjBrB,SAAS,KAEb,CAEQ,mBAAAgC,CAAoBnJ,GACrB5J,KAAA2Q,cAAc,IAAIC,YAAY,gBAAiB,CAClDC,OAAQ,CAAEjH,YACVmH,SAAS,IAEb,CAEQ,kBAAAyB,CAAmBhC,GACzBA,EAAMiC,kBACDzS,KAAA2Q,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQL,EAAMK,OACdE,SAAS,IAEb,CAEQ,oBAAAiC,CAAqBxC,GAC3BA,EAAMiC,kBACDzS,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CACnDC,OAAQL,EAAMK,OACdE,SAAS,IAEb,CAEA,MAAAY,GACM,OAAC3R,KAAK6M,QAAQY,UAA6C,IAAjCzN,KAAK6M,QAAQY,SAASpN,OAuB7CkR;mCACyBvR,KAAK6S,YAAkC,GAApB;qBAClC7S,KAAKqS;;sCAEYrS,KAAK6M,QAAQI;YACvCjN,KAAK6M,QAAQO,YAAcmE;6CACMvR,KAAK6M,QAAQO;YAC5C;;qCAEuBpN,KAAK6S,YAAe7S,KAAKoS,UAAY,WAAa,GAAM;YACjFpS,KAAK6S,YAAc,IAAM;;;;oCAIA7S,KAAKoS,UAA0B,GAAd;;;;;;kBAMpCpS,KAAKkS,QAAQnL,IAAc4L,GAAApB,EAAAA,IAAAA;2CACFoB,EAAOM,UAAY,YAAc;sBACtDN,EAAO1F;sBACP0F,EAAOvF,YAAcmE,wGAAsGoB,EAAOvF,oBAAsB;sBACxJuF,EAAOM,UAAY1B;;;kCAGNxS,IACTA,EAAE0T,kBACGzS,KAAA+S,oBAAoBJ,EAAO9E;;;sBAIlC;;;;;;gBAMR7N,KAAK6M,QAAQY,SAAS1G,IAAe2G,GAAA6D;;8BAEvB7D;8BACA1N,KAAKkS;+BACJlS,KAAKmS;+BACLnS,KAAK+O;6BACP/O,KAAK2L;mCACC3L,KAAKwS;qCACHxS,KAAKgT;;;;;;;MArE7BzB;qCACyBvR,KAAK6S,YAAkC,GAApB;uBAClC7S,KAAKqS;;wCAEYrS,KAAK6M,QAAQI;cACvCjN,KAAK6M,QAAQO,YAAcmE;+CACMvR,KAAK6M,QAAQO;cAC5C;;uCAEuBpN,KAAK6S,YAAe7S,KAAKoS,UAAY,WAAa,GAAM;cACjFpS,KAAK6S,YAAc,IAAM;;;;sCAIA7S,KAAKoS,UAA0B,GAAd;;;;;OA+DtD,GApRWQ,QAAAA,mBAUJ/N,OAASgN,EAAAA,GAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IATYC,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UADPsR,2BACiBnT,UAAA,UAAA,GACDqS,EAAA,CAA1BC,EAAS,CAAErP,KAAMT,SAFP2Q,2BAEgBnT,UAAA,UAAA,GACCqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UAHPsR,2BAGiBnT,UAAA,WAAA,GACCqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WAJP4Q,2BAIkBnT,UAAA,WAAA,GACAqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WALP4Q,2BAKkBnT,UAAA,cAAA,GACDqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMC,UANPiQ,2BAMiBnT,UAAA,SAAA,GAEXqS,EAAA,CAAhBnO,KARUiP,2BAQMnT,UAAA,YAAA,GARNmT,QAANA,mBAAAd,EAAA,CADNE,EAAc,yBACFY,4NCUAM,QAAAA,mBAAN,cAAiClD,EAAAA,WAAjC,WAAAjQ,GAAAqF,SAAA6K,WAGuBjQ,KAAAmT,OAA0B,GAC1BnT,KAAAoT,YAAwB,GACZpT,KAAA+O,UAAA,EACA/O,KAAAqT,UAAA,EAE/BrT,KAAQsT,UAAsB,GAC9BtT,KAAQuT,SAAyB,GACjCvT,KAAQkQ,QAA6B,GAC7BlQ,KAAAmQ,aAAepL,IACvB/E,KAAQwT,QAAS,EACjBxT,KAAQyT,QAAS,EACjBzT,KAAQ0T,YAAa,CAAA,CA0J9B,iBAAApM,GACElC,MAAMkC,oBACNtH,KAAK2T,iBACP,CAEA,OAAA5K,CAAQqH,IACFA,EAAkBlI,IAAI,cAAgBkI,EAAkBlI,IAAI,YAC9DlI,KAAK2T,iBAET,CAEQ,eAAAA,SAEN,GAAI3T,KAAKuM,UACH,IACM7B,QAAAkJ,IAAI,wCAAyC5T,KAAKuM,WAC1DvM,KAAK6T,eAAiBxH,EAAgBC,gBAAgBtM,KAAKuM,WAC3D7B,QAAQkJ,IAAI,oCAAqC5T,KAAK6T,eAAenH,SAASrM,QAG9EL,KAAKuT,SAAW,CACd,CACE1F,GAAI,OACJZ,MAAO,QACPG,YAAa,2BACb1K,KAAM,OACNoR,MAAO,EACPb,WAAW,UAGR/I,GACCQ,QAAAR,MAAM,yCAA0CA,GACnDlK,KAAA6T,eAAiB7T,KAAK+T,oBACtB/T,KAAAuT,SAAWvT,KAAKgU,oBACvB,MACShU,KAAKiU,QACdjU,KAAK6T,eAAiB7T,KAAKiU,OACtBjU,KAAAuT,SAAWvT,KAAKgU,uBAEhBhU,KAAA6T,eAAiB7T,KAAK+T,oBACtB/T,KAAAuT,SAAWvT,KAAKgU,sBAIvBhU,KAAKsT,UAAY,IAAKtT,KAAKoT,cACvB,OAAArN,EAAA/F,KAAKuM,gBAAL,EAAAxG,EAAgBqN,eACbpT,KAAAsT,UAAY,IAAKtT,KAAKsT,aAActT,KAAKuM,UAAU6G,cAI1DpT,KAAKkU,eACP,CAEQ,iBAAAH,GACC,MAAA,CACL1G,QAAS,MACTN,OAAQ,eACRE,MAAO,eACPG,YAAa,gDACbV,SAAU,GAEd,CAEQ,kBAAAsH,GACC,MAAA,CACL,CACEnG,GAAI,OACJZ,MAAO,QACPG,YAAa,2BACb1K,KAAM,OACNoR,MAAO,EACPb,WAAW,GAGjB,CAEQ,aAAAiB,SACN,MAAMlK,EAA4B,GAG5BiK,EAASjU,KAAK6T,eACpB,GAAKI,EAAL,CAGW,IAAA,MAAApH,KAAWoH,EAAOvH,SAChB,IAAA,MAAAgB,KAAWb,EAAQY,SACjB,IAAA,MAAAY,KAASX,EAAQS,OAAQ,CAClC,MAAMtE,EAAQ,OAAA9D,EAAK/F,KAAAsT,UAAU5F,EAAQG,cAAMQ,EAAMzE,UAC3CuK,EAAc3K,EAAcC,cAChC4E,EAAMR,GACNH,EAAQG,GACRQ,EAAMzE,SACNC,EACAwE,EAAM3L,KACN2L,EAAMiC,YAAc,IAEftG,EAAA3G,QAAQ8Q,EACjB,CAIJnU,KAAKkQ,QAAUlG,EACVhK,KAAAyT,OAA+D,IAAtDzJ,EAAOoK,OAAOrV,GAAoB,UAAfA,EAAE8L,UAAsBxK,MArB5C,CAsBf,CAEQ,kBAAAmS,CAAmBhC,GACzB,MAAM9G,QAAEA,EAASC,UAAAA,EAAAC,SAAWA,EAAUC,MAAAA,GAAU2G,EAAMK,OAGjD7Q,KAAKsT,UAAU3J,KACb3J,KAAAsT,UAAU3J,GAAa,IAE9B,MAAMmH,EAAW9Q,KAAKsT,UAAU3J,GAAWC,GAC3C5J,KAAKsT,UAAU3J,GAAWC,GAAYC,EAGtC7J,KAAKmQ,SAAShK,IAAI,GAAGwD,KAAaC,KAClC5J,KAAKwT,QAAS,EAGdxT,KAAKkU,gBAGLlU,KAAKmE,gBAGAnE,KAAA2Q,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQ,CAAEnH,UAASC,YAAWC,WAAUC,QAAOiH,YAC/CC,SAAS,IAEb,CAEQ,oBAAAsD,CAAqB7D,GACtBxQ,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CACnDC,OAAQL,EAAMK,OACdE,SAAS,IAEb,CAEQ,oBAAAiC,CAAqBxC,GACtBxQ,KAAA2Q,cAAc,IAAIC,YAAY,iBAAkB,CACnDC,OAAQL,EAAMK,OACdE,SAAS,IAEb,CAEQ,mBAAAuD,CAAoB9D,GACpB,MAAA5G,SAAEA,GAAa4G,EAAMK,OAGtB7Q,KAAAuT,SAAWvT,KAAKuT,SAASa,OAAcG,GAAAA,EAAI1G,KAAOjE,GAG5C,IAAA,MAAAD,KAAa3J,KAAKsT,eACiB,IAAxCtT,KAAKsT,UAAU3J,GAAWC,WACrB5J,KAAKsT,UAAU3J,GAAWC,GAIrC5J,KAAKwT,QAAS,EACdxT,KAAKkU,gBACLlU,KAAKmE,gBAEAnE,KAAA2Q,cAAc,IAAIC,YAAY,gBAAiB,CAClDC,OAAQ,CAAEjH,YACVmH,SAAS,IAEb,CAEQ,UAAAyD,GAGN,MACMC,EAAwB,CAC5B5G,GAFkB,OAAOzC,KAAK4B,QAG9BC,MAAO,aAAajN,KAAKuT,SAASlT,SAClC+M,YAAa,8BACb1K,KAAM,YACNoR,MAAO9T,KAAKuT,SAASlT,OACrB4S,WAAW,EACXyB,cAAe,CACbC,YAAa,SACbC,YAAa,UACbC,YAAa,mBAIjB7U,KAAKuT,SAAW,IAAIvT,KAAKuT,SAAUkB,GACnCzU,KAAKmE,gBAEAnE,KAAA2Q,cAAc,IAAIC,YAAY,aAAc,CAC/CC,OAAQ,CAAE8B,OAAQ8B,GAClB1D,SAAS,IAEb,CAEQ,aAAA+D,GACN9U,KAAK0T,YAAa,EAClB1T,KAAKkU,gBAEAlU,KAAA2Q,cAAc,IAAIC,YAAY,cAAe,CAChDC,OAAQ,CACNkE,KAAM/U,KAAKsT,UACXvI,MAAO/K,KAAKyT,OACZzJ,OAAQhK,KAAKkQ,SAEfa,SAAS,IAEb,CAEQ,YAAAiE,GACNhV,KAAKsT,UAAY,IAAKtT,KAAKoT,aAC3BpT,KAAKmQ,SAAS8E,QACdjV,KAAKwT,QAAS,EACdxT,KAAK0T,YAAa,EAClB1T,KAAKkU,gBACLlU,KAAKmE,gBAEAnE,KAAA2Q,cAAc,IAAIC,YAAY,aAAc,CAC/CC,OAAQ,CAAC,EACTE,SAAS,IAEb,CAEQ,aAAAmE,GACC,MAAA,CACLH,KAAM/U,KAAKsT,UACXtJ,OAAQhK,KAAKkQ,QACbiF,QAASnV,KAAKmQ,SACdiF,MAAOpV,KAAKwT,OACZzI,MAAO/K,KAAKyT,OACZ4B,UAAWrV,KAAK0T,WAEpB,CAGO,OAAA4B,GACE,MAAA,IAAKtV,KAAKsT,UACnB,CAEO,OAAAiC,CAAQR,GACR/U,KAAAsT,UAAY,IAAKyB,GACtB/U,KAAKwT,QAAS,EACdxT,KAAKkU,gBACLlU,KAAKmE,eACP,CAEO,QAAAqR,GAEL,OADAxV,KAAKkU,gBACElU,KAAKyT,MACd,CAEO,KAAAgC,GACLzV,KAAKgV,cACP,CAEO,QAAAU,GACL,OAAO1V,KAAKkV,eACd,CAEA,MAAAvD,GACQ,MAAAgE,EAAa3V,KAAKkQ,QAAQkE,UAA2B,UAAfrV,EAAE8L,UAAsBxK,OAC9DuV,GAA8D,IAAtC5V,KAAKmT,OAAOyC,uBACbD,EAAa,GACb3V,KAAK0T,WAE5BO,EAASjU,KAAK6T,eACpB,OAAKI,EAIE1C;;;;mCAIwB0C,EAAOhH;YAC9BgH,EAAO7G,YAAcmE;0CACS0C,EAAO7G;YACnC;;;;WAImC,IAAvCpN,KAAKmT,OAAO0C,uBAAmCtE,EAAAA,IAAAA;;;;wBAIjCvR,KAAKwU;2BACFxU,KAAK+O,UAAY/O,KAAKqT,UAAarT,KAAKmT,OAAO2C,YAAc9V,KAAKuT,SAASlT,QAAUL,KAAKmT,OAAO2C;;;;;UAKhH;;;;;YAKAF,EAAwBrE,EAAAA,IAAAA;;;;kBAIlBvR,KAAKkQ,QACJkE,OAAOrV,GAAoB,UAAfA,EAAE8L,UACd9D,IAAamD,GAAAqH,EAAAA,IAAAA;0DAC0BrH,EAAMU;;;;YAIlD;;;YAGFqJ,EAAOvH,SAAS3F,IAAe8F,GAAA0E,EAAAA,IAAAA;;0BAEjB1E;0BACA7M,KAAKuT;2BACJvT,KAAKsT;2BACLtT,KAAK+O,UAAY/O,KAAKqT;+BACiB,IAApCrT,KAAKmT,OAAO4C;yBACjB/V,KAAKmT,OAAOxH,QAAU;+BAChB3L,KAAKwS;iCACHxS,KAAKqU;iCACLrU,KAAKgT;gCACNhT,KAAKsU;;;;;;;;;sBASftU,KAAK8U;yBACF9U,KAAK+O,UAAY/O,KAAKqT;;;;;;;sBAOzBrT,KAAKgV;yBACFhV,KAAK+O,WAAa/O,KAAKwT;;;;;;4BAMpBmC;8BACE3V,KAAKwT,OAAS,MAAQ;2BACzBxT,KAAKyT,OAAS,MAAQ;;;;MAhFpClC,EAAAA,IAAAA,4BAqFX,GAzgBW2B,QAAAA,mBAiBJrO,OAASgN,EAAAA,GAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAhBYC,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UADP4R,2BACiBzT,UAAA,SAAA,GACAqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UAFP4R,2BAEiBzT,UAAA,YAAA,GACAqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UAHP4R,2BAGiBzT,UAAA,SAAA,GACAqS,EAAA,CAA3BC,EAAS,CAAErP,KAAMpB,UAJP4R,2BAIiBzT,UAAA,cAAA,GACCqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WALPkR,2BAKkBzT,UAAA,WAAA,GACAqS,EAAA,CAA5BC,EAAS,CAAErP,KAAMV,WANPkR,2BAMkBzT,UAAA,WAAA,GAEZqS,EAAA,CAAhBnO,KARUuP,2BAQMzT,UAAA,YAAA,GACAqS,EAAA,CAAhBnO,KATUuP,2BASMzT,UAAA,WAAA,GACAqS,EAAA,CAAhBnO,KAVUuP,2BAUMzT,UAAA,UAAA,GACAqS,EAAA,CAAhBnO,KAXUuP,2BAWMzT,UAAA,WAAA,GACAqS,EAAA,CAAhBnO,KAZUuP,2BAYMzT,UAAA,SAAA,GACAqS,EAAA,CAAhBnO,KAbUuP,2BAaMzT,UAAA,SAAA,GACAqS,EAAA,CAAhBnO,KAdUuP,2BAcMzT,UAAA,aAAA,GACAqS,EAAA,CAAhBnO,KAfUuP,2BAeMzT,UAAA,iBAAA,GAfNyT,QAANA,mBAAApB,EAAA,CADNE,EAAc,yBACFkB,oECDU","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../src/utils/validation.ts","../src/utils/xbrl-form-builder.ts","../src/core/form-field.ts","../src/core/concept-tree.ts","../src/core/form-section.ts","../src/core/dynamic-form.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.1\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { ValidationRule, ValidationError, FieldType } from '../schema/types';\n\nexport class FormValidator {\n /**\n * Validates a field value against its validation rules\n */\n static validateField(\n fieldId: string,\n conceptId: string,\n columnId: string,\n value: any,\n fieldType: FieldType,\n rules: ValidationRule[] = []\n ): ValidationError[] {\n const errors: ValidationError[] = [];\n\n for (const rule of rules) {\n const error = this.validateRule(fieldId, conceptId, columnId, value, fieldType, rule);\n if (error) {\n errors.push(error);\n }\n }\n\n return errors;\n }\n\n /**\n * Validates a single rule against a value\n */\n private static validateRule(\n fieldId: string,\n conceptId: string,\n columnId: string,\n value: any,\n _fieldType: FieldType,\n rule: ValidationRule\n ): ValidationError | null {\n const isEmpty = value === null || value === undefined || value === '';\n\n switch (rule.type) {\n case 'required':\n if (isEmpty) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'min':\n if (!isEmpty && typeof value === 'number' && value < rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'max':\n if (!isEmpty && typeof value === 'number' && value > rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'minLength':\n if (!isEmpty && typeof value === 'string' && value.length < rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'maxLength':\n if (!isEmpty && typeof value === 'string' && value.length > rule.value) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n break;\n\n case 'pattern':\n if (!isEmpty && typeof value === 'string') {\n const regex = new RegExp(rule.value);\n if (!regex.test(value)) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'email':\n if (!isEmpty && typeof value === 'string') {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'url':\n if (!isEmpty && typeof value === 'string') {\n try {\n new URL(value);\n } catch {\n return this.createError(fieldId, conceptId, columnId, rule);\n }\n }\n break;\n\n case 'custom':\n // Custom validation would be handled by consuming application\n break;\n\n default:\n console.warn(`Unknown validation rule type: ${rule.type}`);\n }\n\n return null;\n }\n\n /**\n * Creates a validation error object\n */\n private static createError(\n fieldId: string,\n conceptId: string,\n columnId: string,\n rule: ValidationRule\n ): ValidationError {\n return {\n fieldId,\n conceptId,\n columnId,\n message: rule.message,\n severity: rule.severity || 'error',\n rule\n };\n }\n\n /**\n * Validates data type conversion\n */\n static validateDataType(value: any, fieldType: FieldType): { valid: boolean; convertedValue?: any; error?: string } {\n if (value === null || value === undefined || value === '') {\n return { valid: true, convertedValue: value };\n }\n\n switch (fieldType) {\n case 'number':\n case 'decimal':\n case 'currency':\n case 'percentage': {\n const numValue = Number(value);\n if (isNaN(numValue)) {\n return { valid: false, error: 'Invalid number format' };\n }\n return { valid: true, convertedValue: numValue };\n }\n\n case 'date': {\n const dateValue = new Date(value);\n if (isNaN(dateValue.getTime())) {\n return { valid: false, error: 'Invalid date format' };\n }\n return { valid: true, convertedValue: dateValue.toISOString().split('T')[0] };\n }\n\n case 'datetime': {\n const datetimeValue = new Date(value);\n if (isNaN(datetimeValue.getTime())) {\n return { valid: false, error: 'Invalid datetime format' };\n }\n return { valid: true, convertedValue: datetimeValue.toISOString() };\n }\n\n case 'boolean':\n if (typeof value === 'boolean') {\n return { valid: true, convertedValue: value };\n }\n if (typeof value === 'string') {\n const boolValue = value.toLowerCase();\n if (boolValue === 'true' || boolValue === '1') {\n return { valid: true, convertedValue: true };\n }\n if (boolValue === 'false' || boolValue === '0') {\n return { valid: true, convertedValue: false };\n }\n }\n return { valid: false, error: 'Invalid boolean format' };\n\n case 'text':\n case 'textarea':\n case 'email':\n case 'url':\n case 'tel':\n return { valid: true, convertedValue: String(value) };\n\n case 'select':\n case 'multiselect':\n return { valid: true, convertedValue: value };\n\n default:\n return { valid: true, convertedValue: value };\n }\n }\n\n /**\n * Formats value for display based on field type\n */\n static formatValue(value: any, fieldType: FieldType, locale = 'en-US'): string {\n if (value === null || value === undefined) return '';\n\n switch (fieldType) {\n case 'number':\n return new Intl.NumberFormat(locale).format(Number(value));\n\n case 'decimal':\n return new Intl.NumberFormat(locale, { \n minimumFractionDigits: 2,\n maximumFractionDigits: 2 \n }).format(Number(value));\n\n case 'currency':\n return new Intl.NumberFormat(locale, { \n style: 'currency',\n currency: 'USD' // Should be configurable\n }).format(Number(value));\n\n case 'percentage':\n return new Intl.NumberFormat(locale, { \n style: 'percent',\n minimumFractionDigits: 2\n }).format(Number(value) / 100);\n\n case 'date':\n return new Date(value).toLocaleDateString(locale);\n\n case 'datetime':\n return new Date(value).toLocaleString(locale);\n\n default:\n return String(value);\n }\n }\n}\n","import { \n XBRLFormInput, \n XBRLPresentationRole,\n XBRLPresentationConcept,\n XBRLLabel\n} from '../schema/xbrl-types';\nimport { \n XBRLFormSchema, \n FormSection, \n FormField, \n ConceptTree,\n FieldType \n} from '../schema/types';\n\n/**\n * XBRL Form Builder Service\n * Transforms XBRL taxonomy data into Jupiter Dynamic Form schemas\n * Updated to handle actual presentation.json structure with roles\n */\nexport class XBRLFormBuilder {\n \n /**\n * Build form schema from XBRL input data\n * Creates accordion sections for each presentation role\n */\n static buildFormSchema(\n xbrlInput: XBRLFormInput, \n periodStartDate?: string, \n periodEndDate?: string\n ): XBRLFormSchema {\n if (!xbrlInput.presentation || xbrlInput.presentation.length === 0) {\n throw new Error('XBRL presentation data is required');\n }\n\n // Use the first entrypoint (typically there's only one)\n const presentationData = xbrlInput.presentation[0];\n \n const sections: FormSection[] = [];\n\n // Create a form section for each presentation role\n presentationData.roles.forEach(role => {\n const section = this.buildSectionFromRole(role, periodStartDate, periodEndDate);\n sections.push(section);\n });\n\n return {\n formId: `xbrl-form-${Date.now()}`,\n title: `XBRL Form - ${this.extractEntityName(presentationData.entrypoint)}`,\n description: `Dynamic form generated from XBRL taxonomy data`,\n version: '1.0.0',\n sections: sections\n };\n }\n\n /**\n * Build a form section from a presentation role\n */\n private static buildSectionFromRole(\n role: XBRLPresentationRole, \n periodStartDate?: string, \n periodEndDate?: string\n ): FormSection {\n // Extract section title from role name (remove role number prefix)\n const title = this.extractRoleTitle(role.role);\n \n const conceptTrees: ConceptTree[] = [];\n\n // Process root concepts and build tree structure (if any exist)\n if (role.presentationLinkbase?.concepts) {\n role.presentationLinkbase.concepts.forEach(concept => {\n const conceptTree = this.buildConceptTree(concept, 0, periodStartDate, periodEndDate);\n if (conceptTree) {\n conceptTrees.push(conceptTree);\n }\n });\n }\n\n return {\n id: role.id,\n title: title,\n description: `Section for ${title}`,\n concepts: conceptTrees,\n expanded: false\n };\n }\n\n /**\n * Build concept tree from XBRL presentation concept\n */\n private static buildConceptTree(\n concept: XBRLPresentationConcept, \n level: number, \n periodStartDate?: string, \n periodEndDate?: string\n ): ConceptTree | null {\n const label = this.getPreferredLabel(concept.labels);\n \n // Build fields for this concept (if not abstract)\n const fields: FormField[] = [];\n if (!concept.elementAbstract) {\n const field = this.createFieldFromConcept(concept, periodStartDate, periodEndDate);\n if (field) {\n fields.push(field);\n }\n }\n\n // Process children recursively\n const children: ConceptTree[] = [];\n if (concept.children && concept.children.length > 0) {\n concept.children.forEach(child => {\n const childTree = this.buildConceptTree(child, level + 1, periodStartDate, periodEndDate);\n if (childTree) {\n children.push(childTree);\n }\n });\n }\n\n return {\n id: concept.id,\n name: concept.conceptName,\n label: label,\n description: `${concept.conceptName} (${concept.type})`,\n level: level,\n children: children,\n fields: fields,\n collapsed: level > 0 // Collapse nested levels by default\n };\n }\n\n /**\n * Create form field from XBRL concept\n */\n private static createFieldFromConcept(\n concept: XBRLPresentationConcept, \n periodStartDate?: string, \n periodEndDate?: string\n ): FormField | null {\n const fieldType = this.mapXBRLTypeToFieldType(concept.type);\n const label = this.getPreferredLabel(concept.labels);\n\n const field: FormField = {\n id: `${concept.id}_field`,\n conceptId: concept.id,\n columnId: 'default', // Default column, will be expanded later\n type: fieldType,\n label: label,\n placeholder: `Enter ${label.toLowerCase()}`,\n required: false, // Will be determined by validation rules\n disabled: concept.elementAbstract,\n defaultValue: null\n };\n\n // Add period information if the concept is period-specific\n if (concept.periodType === 'duration' || concept.periodType === 'instant') {\n field.periodStartDate = periodStartDate || '2025-01-01';\n field.periodEndDate = periodEndDate || '2025-12-31';\n }\n\n return field;\n }\n\n /**\n * Map XBRL data type to form field type\n */\n private static mapXBRLTypeToFieldType(xbrlType: string): FieldType {\n const typeMap: Record<string, FieldType> = {\n 'xbrli:stringItemType': 'text',\n 'xbrli:monetaryItemType': 'currency',\n 'xbrli:integerItemType': 'number',\n 'xbrli:decimalItemType': 'decimal',\n 'xbrli:percentItemType': 'percentage',\n 'xbrli:dateItemType': 'date',\n 'xbrli:booleanItemType': 'boolean',\n 'dtr-types:domainItemType': 'select',\n 'bw2-titel9:chamberOfCommerceRegistrationNumberItemType': 'text'\n };\n\n return typeMap[xbrlType] || 'text';\n }\n\n /**\n * Get preferred label from labels array\n */\n private static getPreferredLabel(labels: XBRLLabel[]): string {\n if (!labels || labels.length === 0) return 'Unnamed Concept';\n\n // Try to find preferred label\n const preferred = labels.find(l => l.preferredLabel);\n if (preferred) return preferred.label;\n\n // Try to find standard label\n const standard = labels.find(l => l.role === 'http://www.xbrl.org/2003/role/label');\n if (standard) return standard.label;\n\n // Try to find terse label\n const terse = labels.find(l => l.role === 'http://www.xbrl.org/2003/role/terseLabel');\n if (terse) return terse.label;\n\n // Return first available label\n return labels[0].label;\n }\n\n /**\n * Extract entity name from entrypoint URL\n */\n private static extractEntityName(entrypoint: string): string {\n try {\n const url = new URL(entrypoint);\n const pathParts = url.pathname.split('/');\n const filename = pathParts[pathParts.length - 1];\n return filename.replace('.xsd', '').replace(/[^a-zA-Z0-9]/g, ' ').trim() || 'Entity';\n } catch {\n return 'Entity';\n }\n }\n\n /**\n * Extract role title from role string\n */\n private static extractRoleTitle(role: string): string {\n // Remove role number prefix like \"[000001] \" and return the title\n const match = role.match(/^\\[[\\d]+\\]\\s*(.+)$/);\n return match ? match[1].trim() : role;\n }\n\n /**\n * Extract role order from role string\n */\n private static extractRoleOrder(role: string): number {\n const match = role.match(/^\\[([\\d]+)\\]/);\n return match ? parseInt(match[1], 10) : 0;\n }\n\n /**\n * Build columns from XBRL hypercube data (placeholder for now)\n */\n static buildColumnsFromHypercubes(/* _hypercubes: any[] */): any[] {\n // For now, return default column structure\n // This will be expanded when we implement hypercube support\n return [{\n id: 'default',\n label: 'Values',\n type: 'data'\n }];\n }\n}\n","import { LitElement, html, css, PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormField, ValidationError } from '../schema/types';\nimport { FormValidator } from '../utils/validation';\n\n@customElement('jupiter-form-field')\nexport class JupiterFormField extends LitElement {\n @property({ type: Object }) field!: FormField;\n @property({ type: String }) conceptId!: string;\n @property({ type: String }) columnId!: string;\n @property() value: any = null;\n @property({ type: Boolean }) disabled = false;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _errors: ValidationError[] = [];\n @state() private _touched = false;\n\n static styles = css`\n :host {\n display: block;\n margin-bottom: 8px;\n }\n\n .field-container {\n position: relative;\n }\n\n .field-label {\n display: block;\n font-weight: 500;\n margin-bottom: 4px;\n color: var(--jupiter-text-primary, #333);\n font-size: 14px;\n }\n\n .field-label.required::after {\n content: ' *';\n color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-radius: 4px;\n font-size: 14px;\n font-family: inherit;\n background: var(--jupiter-input-background, #fff);\n color: var(--jupiter-text-primary, #333);\n box-sizing: border-box;\n }\n\n .field-input:focus {\n outline: none;\n border-color: var(--jupiter-primary-color, #1976d2);\n box-shadow: 0 0 0 2px var(--jupiter-primary-color-light, rgba(25, 118, 210, 0.2));\n }\n\n .field-input:disabled {\n background: var(--jupiter-disabled-background, #f5f5f5);\n color: var(--jupiter-disabled-text, #999);\n cursor: not-allowed;\n }\n\n .field-input.error {\n border-color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-input.warning {\n border-color: var(--jupiter-warning-color, #ff9800);\n }\n\n .field-errors {\n margin-top: 4px;\n }\n\n .field-error {\n display: block;\n font-size: 12px;\n margin-bottom: 2px;\n }\n\n .field-error.error {\n color: var(--jupiter-error-color, #d32f2f);\n }\n\n .field-error.warning {\n color: var(--jupiter-warning-color, #ff9800);\n }\n\n .field-error.info {\n color: var(--jupiter-info-color, #2196f3);\n }\n\n select.field-input {\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 8px center;\n background-repeat: no-repeat;\n background-size: 16px;\n padding-right: 32px;\n }\n\n textarea.field-input {\n resize: vertical;\n min-height: 60px;\n }\n\n .checkbox-container {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .checkbox-container input[type=\"checkbox\"] {\n margin: 0;\n width: auto;\n }\n `;\n\n protected willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('value') || changedProperties.has('field')) {\n this._validateField();\n }\n }\n\n private _validateField() {\n if (this.field?.validation) {\n this._errors = FormValidator.validateField(\n this.field.id,\n this.conceptId,\n this.columnId,\n this.value,\n this.field.type,\n this.field.validation\n );\n }\n }\n\n private _handleInput(event: Event) {\n const target = event.target as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\n let value: any = target.value;\n\n // Convert value based on field type\n if (this.field.type === 'number' || this.field.type === 'decimal') {\n value = value === '' ? null : Number(value);\n } else if (this.field.type === 'boolean') {\n value = (target as HTMLInputElement).checked;\n }\n\n this.value = value;\n this._touched = true;\n \n this.dispatchEvent(new CustomEvent('field-change', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId,\n value,\n oldValue: this.value\n },\n bubbles: true\n }));\n }\n\n private _handleFocus() {\n this.dispatchEvent(new CustomEvent('field-focus', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId\n },\n bubbles: true\n }));\n }\n\n private _handleBlur() {\n this._touched = true;\n this.dispatchEvent(new CustomEvent('field-blur', {\n detail: {\n fieldId: this.field.id,\n conceptId: this.conceptId,\n columnId: this.columnId\n },\n bubbles: true\n }));\n }\n\n private _renderInput() {\n const hasErrors = this._errors.some(e => e.severity === 'error');\n const hasWarnings = this._errors.some(e => e.severity === 'warning');\n const cssClass = `field-input ${hasErrors ? 'error' : hasWarnings ? 'warning' : ''}`;\n\n switch (this.field.type) {\n case 'textarea':\n return html`\n <textarea\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n placeholder=\"${this.field.placeholder || ''}\"\n @input=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n ></textarea>\n `;\n\n case 'select':\n return html`\n <select\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n @change=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n >\n <option value=\"\">Select...</option>\n ${this.field.options?.map(option => html`\n <option \n value=\"${option.value}\"\n ?disabled=\"${option.disabled}\"\n ?selected=\"${this.value === option.value}\"\n >\n ${option.label}\n </option>\n `)}\n </select>\n `;\n\n case 'boolean':\n return html`\n <div class=\"checkbox-container\">\n <input\n type=\"checkbox\"\n class=\"field-input\"\n .checked=\"${Boolean(this.value)}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n @change=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n />\n <span>${this.field.label}</span>\n </div>\n `;\n\n default:\n return html`\n <input\n type=\"${this._getInputType()}\"\n class=\"${cssClass}\"\n .value=\"${this.value || ''}\"\n ?disabled=\"${this.disabled || this.field.disabled}\"\n placeholder=\"${this.field.placeholder || ''}\"\n @input=\"${this._handleInput}\"\n @focus=\"${this._handleFocus}\"\n @blur=\"${this._handleBlur}\"\n />\n `;\n }\n }\n\n private _getInputType(): string {\n switch (this.field.type) {\n case 'number':\n case 'decimal':\n case 'currency':\n case 'percentage':\n return 'number';\n case 'date':\n return 'date';\n case 'datetime':\n return 'datetime-local';\n case 'email':\n return 'email';\n case 'url':\n return 'url';\n case 'tel':\n return 'tel';\n default:\n return 'text';\n }\n }\n\n render() {\n const showLabel = this.field.type !== 'boolean';\n\n return html`\n <div class=\"field-container\">\n ${showLabel ? html`\n <label class=\"field-label ${this.field.required ? 'required' : ''}\">\n ${this.field.label}\n </label>\n ` : ''}\n \n ${this._renderInput()}\n \n ${this._errors.length > 0 && this._touched ? html`\n <div class=\"field-errors\">\n ${this._errors.map(error => html`\n <span class=\"field-error ${error.severity}\">\n ${error.message}\n </span>\n `)}\n </div>\n ` : ''}\n </div>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ConceptTree, FormColumn, FormField } from '../schema/types';\nimport './form-field';\n\n@customElement('jupiter-concept-tree')\nexport class JupiterConceptTree extends LitElement {\n @property({ type: Object }) concept!: ConceptTree;\n @property({ type: Array }) columns: FormColumn[] = [];\n @property({ type: Object }) formData: Record<string, any> = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _expanded = true;\n\n static styles = css`\n :host {\n display: block;\n }\n\n .concept-row {\n display: contents;\n }\n\n .concept-header {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n background: var(--jupiter-concept-background, #f8f9fa);\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-bottom: none;\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n }\n\n .concept-header:hover {\n background: var(--jupiter-concept-hover-background, #e9ecef);\n }\n\n .concept-indent {\n width: calc(var(--level, 0) * 20px);\n flex-shrink: 0;\n }\n\n .concept-toggle {\n width: 16px;\n height: 16px;\n margin-right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: transform 0.2s ease;\n }\n\n .concept-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .concept-toggle.no-children {\n visibility: hidden;\n }\n\n .concept-label {\n flex: 1;\n color: var(--jupiter-text-primary, #333);\n }\n\n .concept-description {\n font-size: 12px;\n color: var(--jupiter-text-secondary, #666);\n font-weight: normal;\n margin-left: 8px;\n }\n\n .concept-fields {\n display: contents;\n }\n\n .field-cell {\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-bottom: none;\n padding: 8px;\n background: var(--jupiter-cell-background, #fff);\n min-height: 40px;\n display: flex;\n align-items: center;\n }\n\n .field-cell:last-child {\n border-right: 1px solid var(--jupiter-border-color, #ddd);\n }\n\n .field-cell.empty {\n background: var(--jupiter-empty-cell-background, #f8f9fa);\n }\n\n .children {\n display: contents;\n }\n\n .children.collapsed {\n display: none;\n }\n\n .concept-row:last-of-type .concept-header,\n .concept-row:last-of-type .field-cell {\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._expanded = !this.concept.collapsed;\n }\n\n private _toggleExpanded() {\n this._expanded = !this._expanded;\n \n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: {\n conceptId: this.concept.id,\n expanded: this._expanded\n },\n bubbles: true\n }));\n }\n\n private _getFieldForColumn(columnId: string): FormField | undefined {\n return this.concept.fields.find(field => field.columnId === columnId);\n }\n\n private _getFieldValue(field: FormField): any {\n return this.formData[this.concept.id]?.[field.columnId];\n }\n\n private _handleFieldChange(event: CustomEvent) {\n event.stopPropagation();\n // Re-dispatch with updated detail\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n render() {\n const hasChildren = this.concept.children && this.concept.children.length > 0;\n const level = this.concept.level || 0;\n\n return html`\n <div class=\"concept-row\" style=\"--level: ${level}\">\n <!-- Concept Label Column -->\n <div class=\"concept-header\" @click=\"${this._toggleExpanded}\">\n <div class=\"concept-indent\"></div>\n <div class=\"concept-toggle ${hasChildren ? (this._expanded ? 'expanded' : '') : 'no-children'}\">\n ${hasChildren ? '▶' : ''}\n </div>\n <div class=\"concept-label\">\n ${this.concept.label}\n ${this.concept.description ? html`\n <span class=\"concept-description\">${this.concept.description}</span>\n ` : ''}\n </div>\n </div>\n\n <!-- Field Columns -->\n ${this.columns.map(column => {\n const field = this._getFieldForColumn(column.id);\n \n return html`\n <div class=\"field-cell ${!field ? 'empty' : ''}\">\n ${field ? html`\n <jupiter-form-field\n .field=\"${field}\"\n .conceptId=\"${this.concept.id}\"\n .columnId=\"${column.id}\"\n .value=\"${this._getFieldValue(field)}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n ></jupiter-form-field>\n ` : ''}\n </div>\n `;\n })}\n </div>\n\n <!-- Children Concepts -->\n ${hasChildren ? html`\n <div class=\"children ${!this._expanded ? 'collapsed' : ''}\">\n ${this.concept.children!.map(child => html`\n <jupiter-concept-tree\n .concept=\"${child}\"\n .columns=\"${this.columns}\"\n .formData=\"${this.formData}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n @concept-expand=\"${(e: CustomEvent) => { \n e.stopPropagation(); \n this.dispatchEvent(new CustomEvent('concept-expand', { detail: e.detail, bubbles: true })); \n }}\"\n ></jupiter-concept-tree>\n `)}\n </div>\n ` : ''}\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSection, FormColumn } from '../schema/types';\nimport './concept-tree';\n\n@customElement('jupiter-form-section')\nexport class JupiterFormSection extends LitElement {\n @property({ type: Object }) section!: FormSection;\n @property({ type: Array }) columns: FormColumn[] = [];\n @property({ type: Object }) formData: Record<string, any> = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) collapsible = true;\n @property({ type: String }) locale = 'en-US';\n\n @state() private _expanded = true;\n\n static styles = css`\n :host {\n display: block;\n margin-bottom: 16px;\n border: 1px solid var(--jupiter-border-color, #ddd);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .section-header {\n background: var(--jupiter-section-header-background, #f0f2f5);\n padding: 16px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .section-header:hover {\n background: var(--jupiter-section-header-hover-background, #e4e7ea);\n }\n\n .section-header.not-collapsible {\n cursor: default;\n }\n\n .section-header.not-collapsible:hover {\n background: var(--jupiter-section-header-background, #f0f2f5);\n }\n\n .section-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--jupiter-text-primary, #333);\n margin: 0;\n }\n\n .section-description {\n font-size: 14px;\n color: var(--jupiter-text-secondary, #666);\n margin: 4px 0 0 0;\n }\n\n .section-toggle {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: transform 0.2s ease;\n color: var(--jupiter-text-secondary, #666);\n }\n\n .section-toggle.expanded {\n transform: rotate(90deg);\n }\n\n .section-toggle.hidden {\n visibility: hidden;\n }\n\n .section-content {\n display: block;\n transition: max-height 0.3s ease;\n overflow: hidden;\n }\n\n .section-content.collapsed {\n display: none;\n }\n\n .table-container {\n overflow-x: auto;\n }\n\n .form-table {\n width: 100%;\n border-collapse: collapse;\n background: var(--jupiter-table-background, #fff);\n }\n\n .table-header {\n background: var(--jupiter-header-background, #f8f9fa);\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n .header-cell {\n padding: 12px;\n text-align: left;\n font-weight: 600;\n color: var(--jupiter-text-primary, #333);\n border: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-header-background, #f8f9fa);\n min-width: 150px;\n }\n\n .header-cell.concept-column {\n min-width: 300px;\n position: sticky;\n left: 0;\n z-index: 2;\n }\n\n .header-cell.removable {\n position: relative;\n }\n\n .remove-column-btn {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border: none;\n background: var(--jupiter-error-color, #d32f2f);\n color: white;\n border-radius: 50%;\n font-size: 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .remove-column-btn:hover {\n background: var(--jupiter-error-color-dark, #b71c1c);\n }\n\n .table-body {\n display: table-row-group;\n }\n\n .empty-section {\n padding: 24px;\n text-align: center;\n color: var(--jupiter-text-secondary, #666);\n font-style: italic;\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._expanded = this.section.expanded !== false;\n }\n\n private _toggleExpanded() {\n if (!this.collapsible) return;\n \n this._expanded = !this._expanded;\n \n this.dispatchEvent(new CustomEvent('section-expand', {\n detail: {\n sectionId: this.section.id,\n expanded: this._expanded\n },\n bubbles: true\n }));\n }\n\n private _handleRemoveColumn(columnId: string) {\n this.dispatchEvent(new CustomEvent('column-remove', {\n detail: { columnId },\n bubbles: true\n }));\n }\n\n private _handleFieldChange(event: CustomEvent) {\n event.stopPropagation();\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleConceptExpand(event: CustomEvent) {\n event.stopPropagation();\n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n render() {\n if (!this.section.concepts || this.section.concepts.length === 0) {\n return html`\n <div class=\"section-header ${!this.collapsible ? 'not-collapsible' : ''}\" \n @click=\"${this._toggleExpanded}\">\n <div>\n <h3 class=\"section-title\">${this.section.title}</h3>\n ${this.section.description ? html`\n <p class=\"section-description\">${this.section.description}</p>\n ` : ''}\n </div>\n <div class=\"section-toggle ${this.collapsible ? (this._expanded ? 'expanded' : '') : 'hidden'}\">\n ${this.collapsible ? '▶' : ''}\n </div>\n </div>\n \n <div class=\"section-content ${!this._expanded ? 'collapsed' : ''}\">\n <div class=\"empty-section\">\n No concepts defined for this section.\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"section-header ${!this.collapsible ? 'not-collapsible' : ''}\" \n @click=\"${this._toggleExpanded}\">\n <div>\n <h3 class=\"section-title\">${this.section.title}</h3>\n ${this.section.description ? html`\n <p class=\"section-description\">${this.section.description}</p>\n ` : ''}\n </div>\n <div class=\"section-toggle ${this.collapsible ? (this._expanded ? 'expanded' : '') : 'hidden'}\">\n ${this.collapsible ? '▶' : ''}\n </div>\n </div>\n\n <div class=\"section-content ${!this._expanded ? 'collapsed' : ''}\">\n <div class=\"table-container\">\n <table class=\"form-table\">\n <thead class=\"table-header\">\n <tr>\n <th class=\"header-cell concept-column\">Concept</th>\n ${this.columns.map(column => html`\n <th class=\"header-cell ${column.removable ? 'removable' : ''}\">\n ${column.title}\n ${column.description ? html`<div style=\"font-weight: normal; font-size: 12px; color: var(--jupiter-text-secondary, #666);\">${column.description}</div>` : ''}\n ${column.removable ? html`\n <button \n class=\"remove-column-btn\"\n @click=\"${(e: Event) => {\n e.stopPropagation();\n this._handleRemoveColumn(column.id);\n }}\"\n title=\"Remove column\"\n >×</button>\n ` : ''}\n </th>\n `)}\n </tr>\n </thead>\n <tbody class=\"table-body\">\n ${this.section.concepts.map(concept => html`\n <jupiter-concept-tree\n .concept=\"${concept}\"\n .columns=\"${this.columns}\"\n .formData=\"${this.formData}\"\n .disabled=\"${this.disabled}\"\n .locale=\"${this.locale}\"\n @field-change=\"${this._handleFieldChange}\"\n @concept-expand=\"${this._handleConceptExpand}\"\n ></jupiter-concept-tree>\n `)}\n </tbody>\n </table>\n </div>\n </div>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { \n XBRLFormSchema, \n FormData, \n FormColumn, \n ValidationError, \n FormState,\n ComponentConfig\n} from '../schema/types';\nimport { XBRLFormInput } from '../schema/xbrl-types';\nimport { FormValidator } from '../utils/validation';\nimport { XBRLFormBuilder } from '../utils/xbrl-form-builder';\nimport './form-section';\n\n@customElement('jupiter-dynamic-form')\nexport class JupiterDynamicForm extends LitElement {\n @property({ type: Object }) schema?: XBRLFormSchema;\n @property({ type: Object }) xbrlInput?: XBRLFormInput;\n @property({ type: Object }) config: ComponentConfig = {};\n @property({ type: Object }) initialData: FormData = {};\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) readonly = false;\n @property({ type: String }) periodStartDate = '2025-01-01';\n @property({ type: String }) periodEndDate = '2025-12-31';\n\n @state() private _formData: FormData = {};\n @state() private _columns: FormColumn[] = [];\n @state() private _errors: ValidationError[] = [];\n @state() private _touched = new Set<string>();\n @state() private _dirty = false;\n @state() private _valid = true;\n @state() private _submitted = false;\n @state() private _currentSchema?: XBRLFormSchema;\n\n static styles = css`\n :host {\n display: block;\n font-family: var(--jupiter-font-family, system-ui, -apple-system, sans-serif);\n color: var(--jupiter-text-primary, #333);\n background: var(--jupiter-background, #fff);\n }\n\n .form-container {\n width: 100%;\n max-width: var(--jupiter-max-width, none);\n margin: 0 auto;\n }\n\n .form-header {\n padding: 24px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-header-background, #fff);\n }\n\n .form-title {\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 8px 0;\n color: var(--jupiter-text-primary, #333);\n }\n\n .form-description {\n font-size: 16px;\n color: var(--jupiter-text-secondary, #666);\n margin: 0;\n line-height: 1.5;\n }\n\n .form-actions {\n padding: 16px 24px;\n border-top: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-actions-background, #f8f9fa);\n display: flex;\n gap: 12px;\n align-items: center;\n }\n\n .add-column-container {\n padding: 16px 24px;\n border-bottom: 1px solid var(--jupiter-border-color, #ddd);\n background: var(--jupiter-form-actions-background, #f8f9fa);\n }\n\n .add-column-btn {\n padding: 8px 16px;\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n }\n\n .add-column-btn:hover {\n background: var(--jupiter-primary-color-dark, #1565c0);\n }\n\n .add-column-btn:disabled {\n background: var(--jupiter-disabled-background, #ccc);\n cursor: not-allowed;\n }\n\n .form-sections {\n padding: 24px;\n }\n\n .validation-summary {\n margin-bottom: 16px;\n padding: 16px;\n border-radius: 4px;\n background: var(--jupiter-error-background, #ffebee);\n border: 1px solid var(--jupiter-error-color, #d32f2f);\n }\n\n .validation-summary-title {\n font-weight: 600;\n color: var(--jupiter-error-color, #d32f2f);\n margin: 0 0 8px 0;\n }\n\n .validation-summary-list {\n margin: 0;\n padding-left: 20px;\n }\n\n .validation-summary-item {\n color: var(--jupiter-error-color, #d32f2f);\n margin-bottom: 4px;\n }\n\n .form-actions button {\n padding: 10px 20px;\n border: none;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s ease;\n }\n\n .btn-primary {\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: var(--jupiter-primary-color-dark, #1565c0);\n }\n\n .btn-secondary {\n background: var(--jupiter-secondary-color, #757575);\n color: white;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: var(--jupiter-secondary-color-dark, #616161);\n }\n\n .btn-outline {\n background: transparent;\n color: var(--jupiter-primary-color, #1976d2);\n border: 1px solid var(--jupiter-primary-color, #1976d2);\n }\n\n .btn-outline:hover:not(:disabled) {\n background: var(--jupiter-primary-color, #1976d2);\n color: white;\n }\n\n button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .form-meta {\n display: flex;\n gap: 16px;\n align-items: center;\n font-size: 12px;\n color: var(--jupiter-text-secondary, #666);\n margin-left: auto;\n }\n `;\n\n connectedCallback() {\n super.connectedCallback();\n this._initializeForm();\n }\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('xbrlInput') || changedProperties.has('schema')) {\n this._initializeForm();\n }\n }\n\n private _initializeForm() {\n // Generate schema from XBRL input if provided, otherwise use provided schema\n if (this.xbrlInput) {\n try {\n console.log('🔄 Initializing form from XBRL input:', this.xbrlInput);\n console.log('📅 Using period dates:', this.periodStartDate, 'to', this.periodEndDate);\n this._currentSchema = XBRLFormBuilder.buildFormSchema(\n this.xbrlInput, \n this.periodStartDate, \n this.periodEndDate\n );\n console.log('✅ Generated schema with sections:', this._currentSchema.sections.length);\n \n // Use simple column structure for now\n this._columns = [\n {\n id: 'base',\n title: 'Value',\n description: 'Base values for concepts',\n type: 'base',\n order: 0,\n removable: false\n }\n ];\n } catch (error) {\n console.error('❌ Error building form from XBRL input:', error);\n this._currentSchema = this._getDefaultSchema();\n this._columns = this._getDefaultColumns();\n }\n } else if (this.schema) {\n this._currentSchema = this.schema;\n this._columns = this._getDefaultColumns();\n } else {\n this._currentSchema = this._getDefaultSchema();\n this._columns = this._getDefaultColumns();\n }\n\n // Initialize form data\n this._formData = { ...this.initialData };\n if (this.xbrlInput?.initialData) {\n this._formData = { ...this._formData, ...this.xbrlInput.initialData };\n }\n \n // Validate initial data\n this._validateForm();\n }\n\n private _getDefaultSchema(): XBRLFormSchema {\n return {\n version: '1.0',\n formId: 'default-form',\n title: 'Dynamic Form',\n description: 'Please provide form schema or XBRL input data',\n sections: []\n };\n }\n\n private _getDefaultColumns(): FormColumn[] {\n return [\n {\n id: 'base',\n title: 'Value',\n description: 'Base values for concepts',\n type: 'base',\n order: 0,\n removable: false\n }\n ];\n }\n\n private _validateForm() {\n const errors: ValidationError[] = [];\n \n // Use current schema for validation\n const schema = this._currentSchema;\n if (!schema) return;\n \n // Validate each section and its concepts\n for (const section of schema.sections) {\n for (const concept of section.concepts) {\n for (const field of concept.fields) {\n const value = this._formData[concept.id]?.[field.columnId];\n const fieldErrors = FormValidator.validateField(\n field.id,\n concept.id,\n field.columnId,\n value,\n field.type,\n field.validation || []\n );\n errors.push(...fieldErrors);\n }\n }\n }\n\n this._errors = errors;\n this._valid = errors.filter(e => e.severity === 'error').length === 0;\n }\n\n private _handleFieldChange(event: CustomEvent) {\n const { fieldId, conceptId, columnId, value } = event.detail;\n \n // Update form data\n if (!this._formData[conceptId]) {\n this._formData[conceptId] = {};\n }\n const oldValue = this._formData[conceptId][columnId];\n this._formData[conceptId][columnId] = value;\n \n // Mark as touched and dirty\n this._touched.add(`${conceptId}-${columnId}`);\n this._dirty = true;\n \n // Re-validate\n this._validateForm();\n \n // Trigger update\n this.requestUpdate();\n \n // Dispatch change event\n this.dispatchEvent(new CustomEvent('field-change', {\n detail: { fieldId, conceptId, columnId, value, oldValue },\n bubbles: true\n }));\n }\n\n private _handleSectionExpand(event: CustomEvent) {\n this.dispatchEvent(new CustomEvent('section-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleConceptExpand(event: CustomEvent) {\n this.dispatchEvent(new CustomEvent('concept-expand', {\n detail: event.detail,\n bubbles: true\n }));\n }\n\n private _handleColumnRemove(event: CustomEvent) {\n const { columnId } = event.detail;\n \n // Remove column\n this._columns = this._columns.filter(col => col.id !== columnId);\n \n // Remove data for this column\n for (const conceptId in this._formData) {\n if (this._formData[conceptId][columnId] !== undefined) {\n delete this._formData[conceptId][columnId];\n }\n }\n \n this._dirty = true;\n this._validateForm();\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('column-remove', {\n detail: { columnId },\n bubbles: true\n }));\n }\n\n private _addColumn() {\n // This would typically open a dialog to configure the new dimension column\n // For now, we'll add a generic dimension column\n const newColumnId = `dim-${Date.now()}`;\n const newColumn: FormColumn = {\n id: newColumnId,\n title: `Dimension ${this._columns.length}`,\n description: 'Additional dimension column',\n type: 'dimension',\n order: this._columns.length,\n removable: true,\n dimensionData: {\n dimensionId: 'custom',\n memberValue: 'default',\n memberLabel: 'Default Member',\n }\n };\n \n this._columns = [...this._columns, newColumn];\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('column-add', {\n detail: { column: newColumn },\n bubbles: true\n }));\n }\n\n private _handleSubmit() {\n this._submitted = true;\n this._validateForm();\n \n this.dispatchEvent(new CustomEvent('form-submit', {\n detail: {\n data: this._formData,\n valid: this._valid,\n errors: this._errors\n },\n bubbles: true\n }));\n }\n\n private _handleReset() {\n this._formData = { ...this.initialData };\n this._touched.clear();\n this._dirty = false;\n this._submitted = false;\n this._validateForm();\n this.requestUpdate();\n \n this.dispatchEvent(new CustomEvent('form-reset', {\n detail: {},\n bubbles: true\n }));\n }\n\n private _getFormState(): FormState {\n return {\n data: this._formData,\n errors: this._errors,\n touched: this._touched,\n dirty: this._dirty,\n valid: this._valid,\n submitted: this._submitted\n };\n }\n\n // Public API methods\n public getData(): FormData {\n return { ...this._formData };\n }\n\n public setData(data: FormData) {\n this._formData = { ...data };\n this._dirty = true;\n this._validateForm();\n this.requestUpdate();\n }\n\n public validate(): boolean {\n this._validateForm();\n return this._valid;\n }\n\n public reset() {\n this._handleReset();\n }\n\n public getState(): FormState {\n return this._getFormState();\n }\n\n render() {\n const errorCount = this._errors.filter(e => e.severity === 'error').length;\n const config = this.config || {};\n const showValidationSummary = config.showValidationSummary !== false && \n errorCount > 0 && \n this._submitted;\n\n const schema = this._currentSchema;\n if (!schema) {\n return html`<div>Loading form...</div>`;\n }\n\n return html`\n <div class=\"form-container\">\n <!-- Form Header -->\n <div class=\"form-header\">\n <h1 class=\"form-title\">${schema.title}</h1>\n ${schema.description ? html`\n <p class=\"form-description\">${schema.description}</p>\n ` : ''}\n </div>\n\n <!-- Add Column Section -->\n ${config.enableColumnManagement !== false ? html`\n <div class=\"add-column-container\">\n <button \n class=\"add-column-btn\"\n @click=\"${this._addColumn}\"\n ?disabled=\"${this.disabled || this.readonly || (config.maxColumns && this._columns.length >= config.maxColumns)}\"\n >\n Add Dimension Column\n </button>\n </div>\n ` : ''}\n\n <!-- Form Content -->\n <div class=\"form-sections\">\n <!-- Validation Summary -->\n ${showValidationSummary ? html`\n <div class=\"validation-summary\">\n <h4 class=\"validation-summary-title\">Please fix the following errors:</h4>\n <ul class=\"validation-summary-list\">\n ${this._errors\n .filter(e => e.severity === 'error')\n .map(error => html`\n <li class=\"validation-summary-item\">${error.message}</li>\n `)}\n </ul>\n </div>\n ` : ''}\n\n <!-- Form Sections -->\n ${schema.sections.map(section => html`\n <jupiter-form-section\n .section=\"${section}\"\n .columns=\"${this._columns}\"\n .formData=\"${this._formData}\"\n .disabled=\"${this.disabled || this.readonly}\"\n .collapsible=\"${config.collapsibleSections !== false}\"\n .locale=\"${config.locale || 'en-US'}\"\n @field-change=\"${this._handleFieldChange}\"\n @section-expand=\"${this._handleSectionExpand}\"\n @concept-expand=\"${this._handleConceptExpand}\"\n @column-remove=\"${this._handleColumnRemove}\"\n ></jupiter-form-section>\n `)}\n </div>\n\n <!-- Form Actions -->\n <div class=\"form-actions\">\n <button \n class=\"btn-primary\"\n @click=\"${this._handleSubmit}\"\n ?disabled=\"${this.disabled || this.readonly}\"\n >\n Submit\n </button>\n \n <button \n class=\"btn-outline\"\n @click=\"${this._handleReset}\"\n ?disabled=\"${this.disabled || !this._dirty}\"\n >\n Reset\n </button>\n\n <div class=\"form-meta\">\n <span>Errors: ${errorCount}</span>\n <span>Modified: ${this._dirty ? 'Yes' : 'No'}</span>\n <span>Valid: ${this._valid ? 'Yes' : 'No'}</span>\n </div>\n </div>\n </div>\n `;\n }\n}\n","// Main entry point for Jupiter Dynamic Forms\nexport * from './core/dynamic-form';\nexport * from './core/form-section';\nexport * from './core/concept-tree';\nexport * from './core/form-field';\nexport * from './schema/types';\nexport * from './utils/validation';\n\n// Register all custom elements\nimport './core/dynamic-form';\nimport './core/form-section';\nimport './core/concept-tree';\nimport './core/form-field';\n\n// Version export\nexport const version = '1.0.0';\n"],"names":["t","e","o","addInitializer","customElements","define","globalThis","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","WeakMap","n$2","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","c","cssRules","n","r","is","i","defineProperty","getOwnPropertyDescriptor","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","metadata","litPropertyMetadata","y","HTMLElement","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","_a","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_b","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","kind","name","init","FormValidator","validateField","fieldId","conceptId","columnId","value","fieldType","rules","errors","rule","error","validateRule","_fieldType","isEmpty","createError","RegExp","test","URL","console","warn","message","severity","validateDataType","valid","convertedValue","numValue","isNaN","dateValue","Date","getTime","toISOString","split","datetimeValue","boolValue","formatValue","locale","Intl","NumberFormat","format","minimumFractionDigits","maximumFractionDigits","style","currency","toLocaleDateString","toLocaleString","XBRLFormBuilder","buildFormSchema","xbrlInput","periodStartDate","periodEndDate","presentation","presentationData","sections","roles","role","section","buildSectionFromRole","formId","now","title","extractEntityName","entrypoint","description","version","extractRoleTitle","conceptTrees","presentationLinkbase","concepts","concept","conceptTree","buildConceptTree","id","expanded","level","label","getPreferredLabel","labels","fields","elementAbstract","field","createFieldFromConcept","children","child","childTree","conceptName","collapsed","mapXBRLTypeToFieldType","placeholder","required","disabled","defaultValue","periodType","xbrlType","preferred","find","preferredLabel","standard","terse","pathParts","pathname","replace","trim","match","extractRoleOrder","parseInt","buildColumnsFromHypercubes","JupiterFormField","LitElement","arguments","_errors","_touched","changedProperties","_validateField","validation","_handleInput","event","target","checked","dispatchEvent","CustomEvent","detail","oldValue","bubbles","_handleFocus","_handleBlur","_renderInput","hasErrors","some","hasWarnings","cssClass","html","options","option","_getInputType","render","showLabel","css","__decorateClass","property","customElement","JupiterConceptTree","columns","formData","_expanded","_toggleExpanded","_getFieldForColumn","_getFieldValue","_handleFieldChange","stopPropagation","hasChildren","column","JupiterFormSection","collapsible","sectionId","_handleRemoveColumn","_handleConceptExpand","removable","JupiterDynamicForm","config","initialData","readonly","_formData","_columns","_dirty","_valid","_submitted","_initializeForm","log","_currentSchema","order","_getDefaultSchema","_getDefaultColumns","schema","_validateForm","fieldErrors","filter","_handleSectionExpand","_handleColumnRemove","col","_addColumn","newColumn","dimensionData","dimensionId","memberValue","memberLabel","_handleSubmit","data","_handleReset","clear","_getFormState","touched","dirty","submitted","getData","setData","validate","reset","getState","errorCount","showValidationSummary","enableColumnManagement","maxColumns","collapsibleSections"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}