jupiter-dynamic-forms 1.0.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/LICENSE +21 -0
- package/README.md +384 -0
- package/dist/core/concept-tree.d.ts +19 -0
- package/dist/core/concept-tree.d.ts.map +1 -0
- package/dist/core/dynamic-form.d.ts +42 -0
- package/dist/core/dynamic-form.d.ts.map +1 -0
- package/dist/core/form-field.d.ts +23 -0
- package/dist/core/form-field.d.ts.map +1 -0
- package/dist/core/form-section.d.ts +20 -0
- package/dist/core/form-section.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +784 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2082 -0
- package/dist/index.mjs.map +1 -0
- package/dist/schema/types.d.ts +151 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/xbrl-types.d.ts +142 -0
- package/dist/schema/xbrl-types.d.ts.map +1 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/xbrl-form-builder.d.ts +52 -0
- package/dist/utils/xbrl-form-builder.d.ts.map +1 -0
- package/package.json +91 -0
- package/wrappers/angular/jupiter-dynamic-forms.module.ts +30 -0
- package/wrappers/angular/public-api.ts +13 -0
- package/wrappers/angular/types.ts +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","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","s","r","n","c","i","h","_a","l","__decorateClass","property","state","customElement"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XBRL Dynamic Form Schema Types
|
|
3
|
+
* Defines the structure for JSON-driven form generation
|
|
4
|
+
*/
|
|
5
|
+
export interface XBRLFormSchema {
|
|
6
|
+
version: string;
|
|
7
|
+
formId: string;
|
|
8
|
+
title: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
sections: FormSection[];
|
|
11
|
+
globalValidation?: ValidationRule[];
|
|
12
|
+
metadata?: Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
export interface FormSection {
|
|
15
|
+
id: string;
|
|
16
|
+
title: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
expanded?: boolean;
|
|
19
|
+
concepts: ConceptTree[];
|
|
20
|
+
validation?: ValidationRule[];
|
|
21
|
+
}
|
|
22
|
+
export interface ConceptTree {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
label: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
level: number;
|
|
28
|
+
parentId?: string;
|
|
29
|
+
children?: ConceptTree[];
|
|
30
|
+
fields: FormField[];
|
|
31
|
+
collapsed?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface FormField {
|
|
34
|
+
id: string;
|
|
35
|
+
conceptId: string;
|
|
36
|
+
columnId: string;
|
|
37
|
+
type: FieldType;
|
|
38
|
+
label: string;
|
|
39
|
+
placeholder?: string;
|
|
40
|
+
required?: boolean;
|
|
41
|
+
disabled?: boolean;
|
|
42
|
+
validation?: ValidationRule[];
|
|
43
|
+
defaultValue?: any;
|
|
44
|
+
options?: FieldOption[];
|
|
45
|
+
attributes?: Record<string, any>;
|
|
46
|
+
}
|
|
47
|
+
export interface FormColumn {
|
|
48
|
+
id: string;
|
|
49
|
+
title: string;
|
|
50
|
+
description?: string;
|
|
51
|
+
type: 'base' | 'dimension';
|
|
52
|
+
dimensionData?: DimensionData;
|
|
53
|
+
order: number;
|
|
54
|
+
removable?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface DimensionData {
|
|
57
|
+
dimensionId: string;
|
|
58
|
+
memberValue: string;
|
|
59
|
+
memberLabel: string;
|
|
60
|
+
axis?: string;
|
|
61
|
+
}
|
|
62
|
+
export type FieldType = 'text' | 'number' | 'decimal' | 'date' | 'datetime' | 'boolean' | 'select' | 'multiselect' | 'textarea' | 'currency' | 'percentage' | 'email' | 'url' | 'tel';
|
|
63
|
+
export interface FieldOption {
|
|
64
|
+
value: string | number | boolean;
|
|
65
|
+
label: string;
|
|
66
|
+
disabled?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface ValidationRule {
|
|
69
|
+
type: ValidationType;
|
|
70
|
+
value?: any;
|
|
71
|
+
message: string;
|
|
72
|
+
severity?: 'error' | 'warning' | 'info';
|
|
73
|
+
}
|
|
74
|
+
export type ValidationType = 'required' | 'min' | 'max' | 'minLength' | 'maxLength' | 'pattern' | 'email' | 'url' | 'custom';
|
|
75
|
+
export interface FormData {
|
|
76
|
+
[conceptId: string]: {
|
|
77
|
+
[columnId: string]: any;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export interface ValidationError {
|
|
81
|
+
fieldId: string;
|
|
82
|
+
conceptId: string;
|
|
83
|
+
columnId: string;
|
|
84
|
+
message: string;
|
|
85
|
+
severity: 'error' | 'warning' | 'info';
|
|
86
|
+
rule: ValidationRule;
|
|
87
|
+
}
|
|
88
|
+
export interface FormState {
|
|
89
|
+
data: FormData;
|
|
90
|
+
errors: ValidationError[];
|
|
91
|
+
touched: Set<string>;
|
|
92
|
+
dirty: boolean;
|
|
93
|
+
valid: boolean;
|
|
94
|
+
submitted: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface FormEvents {
|
|
97
|
+
'field-change': CustomEvent<{
|
|
98
|
+
fieldId: string;
|
|
99
|
+
conceptId: string;
|
|
100
|
+
columnId: string;
|
|
101
|
+
value: any;
|
|
102
|
+
oldValue: any;
|
|
103
|
+
}>;
|
|
104
|
+
'field-focus': CustomEvent<{
|
|
105
|
+
fieldId: string;
|
|
106
|
+
conceptId: string;
|
|
107
|
+
columnId: string;
|
|
108
|
+
}>;
|
|
109
|
+
'field-blur': CustomEvent<{
|
|
110
|
+
fieldId: string;
|
|
111
|
+
conceptId: string;
|
|
112
|
+
columnId: string;
|
|
113
|
+
}>;
|
|
114
|
+
'section-expand': CustomEvent<{
|
|
115
|
+
sectionId: string;
|
|
116
|
+
expanded: boolean;
|
|
117
|
+
}>;
|
|
118
|
+
'concept-expand': CustomEvent<{
|
|
119
|
+
conceptId: string;
|
|
120
|
+
expanded: boolean;
|
|
121
|
+
}>;
|
|
122
|
+
'column-add': CustomEvent<{
|
|
123
|
+
column: FormColumn;
|
|
124
|
+
}>;
|
|
125
|
+
'column-remove': CustomEvent<{
|
|
126
|
+
columnId: string;
|
|
127
|
+
}>;
|
|
128
|
+
'form-submit': CustomEvent<{
|
|
129
|
+
data: FormData;
|
|
130
|
+
valid: boolean;
|
|
131
|
+
}>;
|
|
132
|
+
'form-reset': CustomEvent<{}>;
|
|
133
|
+
'validation-error': CustomEvent<{
|
|
134
|
+
errors: ValidationError[];
|
|
135
|
+
}>;
|
|
136
|
+
}
|
|
137
|
+
export interface ComponentConfig {
|
|
138
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
139
|
+
locale?: string;
|
|
140
|
+
dateFormat?: string;
|
|
141
|
+
numberFormat?: Intl.NumberFormatOptions;
|
|
142
|
+
currencyCode?: string;
|
|
143
|
+
showValidationSummary?: boolean;
|
|
144
|
+
collapsibleSections?: boolean;
|
|
145
|
+
collapsibleConcepts?: boolean;
|
|
146
|
+
enableColumnManagement?: boolean;
|
|
147
|
+
maxColumns?: number;
|
|
148
|
+
autoSave?: boolean;
|
|
149
|
+
autoSaveInterval?: number;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XBRL Taxonomy Data Types
|
|
3
|
+
* Interfaces for consuming XBRL taxonomy data from JSON files
|
|
4
|
+
* Updated to match actual data structure from presentation.json
|
|
5
|
+
*/
|
|
6
|
+
export interface XBRLFormInput {
|
|
7
|
+
presentation: XBRLPresentationData[];
|
|
8
|
+
calculation?: XBRLCalculationData;
|
|
9
|
+
hypercubes?: XBRLHypercubeData[];
|
|
10
|
+
datatypes?: XBRLDataTypeData;
|
|
11
|
+
schemas?: XBRLSchemaData;
|
|
12
|
+
initialData?: Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
export interface XBRLPresentationData {
|
|
15
|
+
entrypoint: string;
|
|
16
|
+
roles: XBRLPresentationRole[];
|
|
17
|
+
}
|
|
18
|
+
export interface XBRLPresentationRole {
|
|
19
|
+
role: string;
|
|
20
|
+
id: string;
|
|
21
|
+
roleURI: string;
|
|
22
|
+
presentationLinkbase: {
|
|
23
|
+
concepts: XBRLPresentationConcept[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface XBRLPresentationConcept {
|
|
27
|
+
children: XBRLPresentationConcept[];
|
|
28
|
+
id: string;
|
|
29
|
+
conceptName: string;
|
|
30
|
+
type: string;
|
|
31
|
+
periodType: string;
|
|
32
|
+
elementAbstract: boolean;
|
|
33
|
+
order: number;
|
|
34
|
+
preferredLabel: string;
|
|
35
|
+
labels: XBRLLabel[];
|
|
36
|
+
enumeration?: {
|
|
37
|
+
children: XBRLEnumerationMember[];
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface XBRLEnumerationMember {
|
|
41
|
+
id: string;
|
|
42
|
+
conceptName: string;
|
|
43
|
+
type: string;
|
|
44
|
+
periodType: string;
|
|
45
|
+
elementAbstract: boolean;
|
|
46
|
+
usable: boolean;
|
|
47
|
+
order: number;
|
|
48
|
+
labels: XBRLLabel[];
|
|
49
|
+
}
|
|
50
|
+
export interface XBRLLabel {
|
|
51
|
+
lang: string;
|
|
52
|
+
label: string;
|
|
53
|
+
role: string;
|
|
54
|
+
preferredLabel: boolean;
|
|
55
|
+
customLabel: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface XBRLCalculationData {
|
|
58
|
+
entrypoint: string;
|
|
59
|
+
roles: XBRLCalculationRole[];
|
|
60
|
+
}
|
|
61
|
+
export interface XBRLCalculationRole {
|
|
62
|
+
role: string;
|
|
63
|
+
id: string;
|
|
64
|
+
roleURI: string;
|
|
65
|
+
calculationLinkbase: XBRLCalculationLinkbase;
|
|
66
|
+
}
|
|
67
|
+
export interface XBRLCalculationLinkbase {
|
|
68
|
+
calculations: XBRLCalculation[];
|
|
69
|
+
}
|
|
70
|
+
export interface XBRLCalculation {
|
|
71
|
+
summationItem: string;
|
|
72
|
+
calculationChildren: XBRLCalculationChild[];
|
|
73
|
+
}
|
|
74
|
+
export interface XBRLCalculationChild {
|
|
75
|
+
name: string;
|
|
76
|
+
weight: number;
|
|
77
|
+
order?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface XBRLHypercubeData {
|
|
80
|
+
entrypoint: string;
|
|
81
|
+
roles: XBRLHypercubeRole[];
|
|
82
|
+
}
|
|
83
|
+
export interface XBRLHypercubeRole {
|
|
84
|
+
role: string;
|
|
85
|
+
id: string;
|
|
86
|
+
roleURI: string;
|
|
87
|
+
definitionLinkbase: XBRLDefinitionLinkbase;
|
|
88
|
+
}
|
|
89
|
+
export interface XBRLDefinitionLinkbase {
|
|
90
|
+
hypercubes: XBRLHypercube[];
|
|
91
|
+
}
|
|
92
|
+
export interface XBRLHypercube {
|
|
93
|
+
name: string;
|
|
94
|
+
dimensions: XBRLDimension[];
|
|
95
|
+
primaryItems?: string[];
|
|
96
|
+
}
|
|
97
|
+
export interface XBRLDimension {
|
|
98
|
+
name: string;
|
|
99
|
+
typed?: boolean;
|
|
100
|
+
domainMember?: string;
|
|
101
|
+
members?: XBRLDimensionMember[];
|
|
102
|
+
}
|
|
103
|
+
export interface XBRLDimensionMember {
|
|
104
|
+
name: string;
|
|
105
|
+
label?: string;
|
|
106
|
+
usable?: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface XBRLDataTypeData {
|
|
109
|
+
entrypoint: string;
|
|
110
|
+
concepts: XBRLConceptDataType[];
|
|
111
|
+
}
|
|
112
|
+
export interface XBRLConceptDataType {
|
|
113
|
+
name: string;
|
|
114
|
+
type: string;
|
|
115
|
+
periodType: 'instant' | 'duration';
|
|
116
|
+
balance?: 'debit' | 'credit';
|
|
117
|
+
abstract?: boolean;
|
|
118
|
+
nillable?: boolean;
|
|
119
|
+
substitutionGroup?: string;
|
|
120
|
+
typedDomainRef?: string;
|
|
121
|
+
}
|
|
122
|
+
export interface XBRLSchemaData {
|
|
123
|
+
prefix: string;
|
|
124
|
+
uri: string;
|
|
125
|
+
schemaLocation: string;
|
|
126
|
+
custom: boolean;
|
|
127
|
+
}
|
|
128
|
+
export interface XBRLTaxonomyInput {
|
|
129
|
+
presentation: XBRLPresentationData[];
|
|
130
|
+
calculation: XBRLCalculationData[];
|
|
131
|
+
hypercubes: XBRLHypercubeData[];
|
|
132
|
+
datatypes: XBRLDataTypeData[];
|
|
133
|
+
schemas: XBRLSchemaData[];
|
|
134
|
+
}
|
|
135
|
+
export interface XBRLFieldTypeMapping {
|
|
136
|
+
[xbrlType: string]: {
|
|
137
|
+
fieldType: string;
|
|
138
|
+
validation?: string[];
|
|
139
|
+
format?: string;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=xbrl-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xbrl-types.d.ts","sourceRoot":"","sources":["../../src/schema/xbrl-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ValidationRule, ValidationError, FieldType } from '../schema/types';
|
|
2
|
+
|
|
3
|
+
export declare class FormValidator {
|
|
4
|
+
/**
|
|
5
|
+
* Validates a field value against its validation rules
|
|
6
|
+
*/
|
|
7
|
+
static validateField(fieldId: string, conceptId: string, columnId: string, value: any, fieldType: FieldType, rules?: ValidationRule[]): ValidationError[];
|
|
8
|
+
/**
|
|
9
|
+
* Validates a single rule against a value
|
|
10
|
+
*/
|
|
11
|
+
private static validateRule;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a validation error object
|
|
14
|
+
*/
|
|
15
|
+
private static createError;
|
|
16
|
+
/**
|
|
17
|
+
* Validates data type conversion
|
|
18
|
+
*/
|
|
19
|
+
static validateDataType(value: any, fieldType: FieldType): {
|
|
20
|
+
valid: boolean;
|
|
21
|
+
convertedValue?: any;
|
|
22
|
+
error?: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Formats value for display based on field type
|
|
26
|
+
*/
|
|
27
|
+
static formatValue(value: any, fieldType: FieldType, locale?: string): string;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7E,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,aAAa,CAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,cAAc,EAAO,GAC3B,eAAe,EAAE;IAapB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAgF3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAgEnH;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAU,GAAG,MAAM;CAmC/E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { XBRLFormInput } from '../schema/xbrl-types';
|
|
2
|
+
import { XBRLFormSchema } from '../schema/types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* XBRL Form Builder Service
|
|
6
|
+
* Transforms XBRL taxonomy data into Jupiter Dynamic Form schemas
|
|
7
|
+
* Updated to handle actual presentation.json structure with roles
|
|
8
|
+
*/
|
|
9
|
+
export declare class XBRLFormBuilder {
|
|
10
|
+
/**
|
|
11
|
+
* Build form schema from XBRL input data
|
|
12
|
+
* Creates accordion sections for each presentation role
|
|
13
|
+
*/
|
|
14
|
+
static buildFormSchema(xbrlInput: XBRLFormInput): XBRLFormSchema;
|
|
15
|
+
/**
|
|
16
|
+
* Build a form section from a presentation role
|
|
17
|
+
*/
|
|
18
|
+
private static buildSectionFromRole;
|
|
19
|
+
/**
|
|
20
|
+
* Build concept tree from XBRL presentation concept
|
|
21
|
+
*/
|
|
22
|
+
private static buildConceptTree;
|
|
23
|
+
/**
|
|
24
|
+
* Create form field from XBRL concept
|
|
25
|
+
*/
|
|
26
|
+
private static createFieldFromConcept;
|
|
27
|
+
/**
|
|
28
|
+
* Map XBRL data type to form field type
|
|
29
|
+
*/
|
|
30
|
+
private static mapXBRLTypeToFieldType;
|
|
31
|
+
/**
|
|
32
|
+
* Get preferred label from labels array
|
|
33
|
+
*/
|
|
34
|
+
private static getPreferredLabel;
|
|
35
|
+
/**
|
|
36
|
+
* Extract entity name from entrypoint URL
|
|
37
|
+
*/
|
|
38
|
+
private static extractEntityName;
|
|
39
|
+
/**
|
|
40
|
+
* Extract role title from role string
|
|
41
|
+
*/
|
|
42
|
+
private static extractRoleTitle;
|
|
43
|
+
/**
|
|
44
|
+
* Extract role order from role string
|
|
45
|
+
*/
|
|
46
|
+
private static extractRoleOrder;
|
|
47
|
+
/**
|
|
48
|
+
* Build columns from XBRL hypercube data (placeholder for now)
|
|
49
|
+
*/
|
|
50
|
+
static buildColumnsFromHypercubes(): any[];
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=xbrl-form-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xbrl-form-builder.d.ts","sourceRoot":"","sources":["../../src/utils/xbrl-form-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EAKf,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,eAAe;IAE1B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc;IAyBhE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAmC/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgBrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAmBhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAWhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAM/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAK/B;;OAEG;IACH,MAAM,CAAC,0BAA0B,IAA4B,GAAG,EAAE;CASnE"}
|