jupiter-dynamic-forms 1.9.5 → 1.9.7
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/core/concept-tree.d.ts.map +1 -1
- package/dist/core/dynamic-form.d.ts +25 -0
- package/dist/core/dynamic-form.d.ts.map +1 -1
- package/dist/core/filter-roles-dialog.d.ts +12 -0
- package/dist/core/filter-roles-dialog.d.ts.map +1 -1
- package/dist/core/form-field.d.ts +1 -0
- package/dist/core/form-field.d.ts.map +1 -1
- package/dist/core/form-section.d.ts +1 -2
- package/dist/core/form-section.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +466 -188
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1180 -277
- package/dist/index.mjs.map +1 -1
- package/dist/schema/types.d.ts +7 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/utils/type-input-mapping.d.ts +59 -0
- package/dist/utils/type-input-mapping.d.ts.map +1 -0
- package/dist/utils/xbrl-form-builder.d.ts +23 -2
- package/dist/utils/xbrl-form-builder.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,87 +1,90 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("lit"),t=e=>(t,i)=>{void 0!==i?i.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)},i=globalThis,
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("lit"),t=e=>(t,i)=>{void 0!==i?i.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)},i=globalThis,r=i.ShadowRoot&&(void 0===i.ShadyCSS||i.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,o=Symbol(),n=new WeakMap;
|
|
2
2
|
/**
|
|
3
3
|
* @license
|
|
4
4
|
* Copyright 2017 Google LLC
|
|
5
5
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
6
|
-
*/let
|
|
6
|
+
*/let s=class{constructor(e,t,i){if(this._$cssResult$=!0,i!==o)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(r&&void 0===e){const i=void 0!==t&&1===t.length;i&&(e=n.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),i&&n.set(t,e))}return e}toString(){return this.cssText}};const a=r?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const i of e.cssRules)t+=i.cssText;return(e=>new s("string"==typeof e?e:e+"",void 0,o))(t)})(e):e,{is:l,defineProperty:d,getOwnPropertyDescriptor:c,getOwnPropertyNames:p,getOwnPropertySymbols:h,getPrototypeOf:m}=Object,u=globalThis,b=u.trustedTypes,f=b?b.emptyScript:"",y=u.reactiveElementPolyfillSupport,g=(e,t)=>e,v={toAttribute(e,t){switch(t){case Boolean:e=e?f:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=null!==e;break;case Number:i=null===e?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch(r){i=null}}return i}},x=(e,t)=>!l(e,t),_={attribute:!0,type:String,converter:v,reflect:!1,useDefault:!1,hasChanged:x};
|
|
7
7
|
/**
|
|
8
8
|
* @license
|
|
9
9
|
* Copyright 2017 Google LLC
|
|
10
10
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
11
|
-
*/Symbol.metadata??(Symbol.metadata=Symbol("metadata")),u.litPropertyMetadata??(u.litPropertyMetadata=new WeakMap);class $ extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=_){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const i=Symbol(),
|
|
11
|
+
*/Symbol.metadata??(Symbol.metadata=Symbol("metadata")),u.litPropertyMetadata??(u.litPropertyMetadata=new WeakMap);class $ extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=_){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(e,i,t);void 0!==r&&d(this.prototype,e,r)}}static getPropertyDescriptor(e,t,i){const{get:r,set:o}=c(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){const n=null==r?void 0:r.call(this);null==o||o.call(this,t),this.requestUpdate(e,n,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??_}static _$Ei(){if(this.hasOwnProperty(g("elementProperties")))return;const e=m(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(g("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(g("properties"))){const e=this.properties,t=[...p(e),...h(e)];for(const i of t)this.createProperty(i,e[i])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,i]of t)this.elementProperties.set(e,i)}this._$Eh=new Map;for(const[t,i]of this.elementProperties){const e=this._$Eu(t,i);void 0!==e&&this._$Eh.set(e,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const i=new Set(e.flat(1/0).reverse());for(const e of i)t.unshift(a(e))}else void 0!==e&&t.push(a(e));return t}static _$Eu(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var e;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),null==(e=this.constructor.l)||e.forEach(e=>e(this))}addController(e){var t;(this._$EO??(this._$EO=new Set)).add(e),void 0!==this.renderRoot&&this.isConnected&&(null==(t=e.hostConnected)||t.call(e))}removeController(e){var t;null==(t=this._$EO)||t.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const i of t.keys())this.hasOwnProperty(i)&&(e.set(i,this[i]),delete this[i]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((e,t)=>{if(r)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const r of t){const t=document.createElement("style"),o=i.litNonce;void 0!==o&&t.setAttribute("nonce",o),t.textContent=r.cssText,e.appendChild(t)}})(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null==(e=this._$EO)||e.forEach(e=>{var t;return null==(t=e.hostConnected)?void 0:t.call(e)})}enableUpdating(e){}disconnectedCallback(){var e;null==(e=this._$EO)||e.forEach(e=>{var t;return null==(t=e.hostDisconnected)?void 0:t.call(e)})}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$ET(e,t){var i;const r=this.constructor.elementProperties.get(e),o=this.constructor._$Eu(e,r);if(void 0!==o&&!0===r.reflect){const n=(void 0!==(null==(i=r.converter)?void 0:i.toAttribute)?r.converter:v).toAttribute(t,r.type);this._$Em=e,null==n?this.removeAttribute(o):this.setAttribute(o,n),this._$Em=null}}_$AK(e,t){var i,r;const o=this.constructor,n=o._$Eh.get(e);if(void 0!==n&&this._$Em!==n){const e=o.getPropertyOptions(n),s="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==(null==(i=e.converter)?void 0:i.fromAttribute)?e.converter:v;this._$Em=n;const a=s.fromAttribute(t,e.type);this[n]=a??(null==(r=this._$Ej)?void 0:r.get(n))??a,this._$Em=null}}requestUpdate(e,t,i){var r;if(void 0!==e){const o=this.constructor,n=this[e];if(i??(i=o.getPropertyOptions(e)),!((i.hasChanged??x)(n,t)||i.useDefault&&i.reflect&&n===(null==(r=this._$Ej)?void 0:r.get(e))&&!this.hasAttribute(o._$Eu(e,i))))return;this.C(e,t,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:i,reflect:r,wrapped:o},n){i&&!(this._$Ej??(this._$Ej=new Map)).has(e)&&(this._$Ej.set(e,n??t??this[e]),!0!==o||void 0!==n)||(this._$AL.has(e)||(this.hasUpdated||i||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??(this._$Eq=new Set)).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,i]of e){const{wrapped:e}=i,r=this[t];!0!==e||this._$AL.has(t)||void 0===r||this.C(t,void 0,i,r)}}let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),null==(e=this._$EO)||e.forEach(e=>{var t;return null==(t=e.hostUpdate)?void 0:t.call(e)}),this.update(i)):this._$EM()}catch(r){throw t=!1,this._$EM(),r}t&&this._$AE(i)}willUpdate(e){}_$AE(e){var t;null==(t=this._$EO)||t.forEach(e=>{var t;return null==(t=e.hostUpdated)?void 0:t.call(e)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(e){}firstUpdated(e){}}$.elementStyles=[],$.shadowRootOptions={mode:"open"},$[g("elementProperties")]=new Map,$[g("finalized")]=new Map,null==y||y({ReactiveElement:$}),(u.reactiveElementVersions??(u.reactiveElementVersions=[])).push("2.1.1");
|
|
12
12
|
/**
|
|
13
13
|
* @license
|
|
14
14
|
* Copyright 2017 Google LLC
|
|
15
15
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
16
16
|
*/
|
|
17
|
-
const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,i)=>{const{kind:
|
|
17
|
+
const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,i)=>{const{kind:r,metadata:o}=i;let n=globalThis.litPropertyMetadata.get(o);if(void 0===n&&globalThis.litPropertyMetadata.set(o,n=new Map),"setter"===r&&((e=Object.create(e)).wrapped=!0),n.set(i.name,e),"accessor"===r){const{name:r}=i;return{set(i){const o=t.get.call(this);t.set.call(this,i),this.requestUpdate(r,o,e)},init(t){return void 0!==t&&this.C(r,void 0,e,t),t}}}if("setter"===r){const{name:r}=i;return function(i){const o=this[r];t.call(this,i),this.requestUpdate(r,o,e)}}throw Error("Unsupported decorator location: "+r)};function w(e){return(t,i)=>"object"==typeof i?I(e,t,i):((e,t,i)=>{const r=t.hasOwnProperty(i);return t.constructor.createProperty(i,e),r?Object.getOwnPropertyDescriptor(t,i):void 0})(e,t,i)}
|
|
18
18
|
/**
|
|
19
19
|
* @license
|
|
20
20
|
* Copyright 2017 Google LLC
|
|
21
21
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
22
|
-
*/function S(e){return w({...e,state:!0,attribute:!1})}class C{static validateField(e,t,i,o,r,s=[]){const n=[];for(const a of s){const s=this.validateRule(e,t,i,o,r,a);s&&n.push(s)}return n}static validateRule(e,t,i,o,r,s){const n=null==o||""===o;switch(s.type){case"required":if(n)return this.createError(e,t,i,s);break;case"min":if(!n&&"number"==typeof o&&o<s.value)return this.createError(e,t,i,s);break;case"max":if(!n&&"number"==typeof o&&o>s.value)return this.createError(e,t,i,s);break;case"minLength":if(!n&&"string"==typeof o&&o.length<s.value)return this.createError(e,t,i,s);break;case"maxLength":if(!n&&"string"==typeof o&&o.length>s.value)return this.createError(e,t,i,s);break;case"pattern":if(!n&&"string"==typeof o){if(!new RegExp(s.value).test(o))return this.createError(e,t,i,s)}break;case"email":if(!n&&"string"==typeof o){if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o))return this.createError(e,t,i,s)}break;case"url":if(!n&&"string"==typeof o)try{new URL(o)}catch{return this.createError(e,t,i,s)}break;case"custom":break;default:console.warn(`Unknown validation rule type: ${s.type}`)}return null}static createError(e,t,i,o){return{fieldId:e,conceptId:t,columnId:i,message:o.message,severity:o.severity||"error",rule:o}}static validateDataType(e,t){if(null==e||""===e)return{valid:!0,convertedValue:e};switch(t){case"number":case"decimal":case"currency":case"percentage":{const t=Number(e);return isNaN(t)?{valid:!1,error:"Invalid number format"}:{valid:!0,convertedValue:t}}case"date":{const t=new Date(e);return isNaN(t.getTime())?{valid:!1,error:"Invalid date format"}:{valid:!0,convertedValue:t.toISOString().split("T")[0]}}case"datetime":{const t=new Date(e);return isNaN(t.getTime())?{valid:!1,error:"Invalid datetime format"}:{valid:!0,convertedValue:t.toISOString()}}case"boolean":if("boolean"==typeof e)return{valid:!0,convertedValue:e};if("string"==typeof e){const t=e.toLowerCase();if("true"===t||"1"===t)return{valid:!0,convertedValue:!0};if("false"===t||"0"===t)return{valid:!0,convertedValue:!1}}return{valid:!1,error:"Invalid boolean format"};case"text":case"textarea":case"email":case"url":case"tel":return{valid:!0,convertedValue:String(e)};default:return{valid:!0,convertedValue:e}}}static formatValue(e,t,i="en-US"){if(null==e)return"";switch(t){case"number":return new Intl.NumberFormat(i).format(Number(e));case"decimal":return new Intl.NumberFormat(i,{minimumFractionDigits:2,maximumFractionDigits:2}).format(Number(e));case"currency":return new Intl.NumberFormat(i,{style:"currency",currency:"USD"}).format(Number(e));case"percentage":return new Intl.NumberFormat(i,{style:"percent",minimumFractionDigits:2}).format(Number(e)/100);case"date":return new Date(e).toLocaleDateString(i);case"datetime":return new Date(e).toLocaleString(i);default:return String(e)}}}class F{static createUniqueConceptId(e,t){let i=e.id;if(e.preferredLabel&&""!==e.preferredLabel.trim()){const t=e.preferredLabel.match(/\/([^\/]+)$/),o=t?t[1]:e.preferredLabel.replace(/[^a-zA-Z0-9]/g,"_");i=`${e.id}_${o}`}if(t){return`${i}__${this.createSectionHash(t)}`}return i}static createSectionHash(e){let t=0;for(let i=0;i<e.length;i++){t=(t<<5)-t+e.charCodeAt(i),t&=t}return Math.abs(t).toString(36).substr(0,6)}static buildFormSchema(e,t,i,o="en"){var r;if(!e.presentation||0===e.presentation.length)throw new Error("XBRL presentation data is required");const s=e.presentation[0],n=null==(r=e.hypercubes)?void 0:r[0],a=[];return[...s.roles].sort((e,t)=>e.role.localeCompare(t.role)).forEach(e=>{const r=this.buildSectionFromRole(e,t,i,n,o);this.assignFieldColumnIds(r),a.push(r)}),{formId:`xbrl-form-${Date.now()}`,title:`XBRL Form - ${this.extractEntityName(s.entrypoint)}`,description:"Dynamic form generated from XBRL taxonomy data",version:"1.0.0",sections:a}}static buildSectionFromRole(e,t,i,o,r="en"){var s;const n=this.extractRoleTitle(e.role),a=this.getAllNonAbstractConcepts(e),l=new Set(a.filter(e=>e.periodType).map(e=>e.periodType)),d=null==o?void 0:o.roles.find(t=>t.roleId===e.id),c=this.generateDefaultColumnsForRole(e,t||"2025-01-01",i||"2025-12-31",d,a,l),p={periodTypes:l,availableColumnIds:c.map(e=>e.id)},h=[];return(null==(s=e.presentationLinkbase)?void 0:s.concepts)&&e.presentationLinkbase.concepts.forEach(o=>{const s=this.buildConceptTree(o,0,t,i,p,e.id,r);s&&h.push(s)}),{id:e.id,title:n,description:e.description||`Section for ${n}`,concepts:h,columns:c,expanded:!1,metadata:{roleURI:e.roleURI,originalRole:e.role}}}static buildConceptTree(e,t,i,o,r,s,n="en"){const a=this.getPreferredLabel(e.labels,n),l=[];if(!e.elementAbstract){let t=[];(null==r?void 0:r.availableColumnIds)&&r.availableColumnIds.length>0?(t=r.availableColumnIds.filter(t=>"instant"===e.periodType?t.includes("instant")||"instant"===t:"duration"!==e.periodType||(t.includes("duration")||"duration"===t)),0===t.length&&(t=r.availableColumnIds)):t=(null==r?void 0:r.periodTypes)&&0!==r.periodTypes.size?1===r.periodTypes.size&&r.periodTypes.has("instant")?["instant"]:1===r.periodTypes.size&&r.periodTypes.has("duration")?["duration"]:"instant"===e.periodType?["instant"]:"duration"===e.periodType?["duration"]:["duration","instant"]:["default"],t.forEach(t=>{const r=this.createFieldFromConcept(e,i,o,t);r&&l.push(r)})}const d=[];e.children&&e.children.length>0&&e.children.forEach(e=>{const a=this.buildConceptTree(e,t+1,i,o,r,s,n);a&&d.push(a)});return l.length>0||d.length>0?{id:this.createUniqueConceptId(e,s),originalConceptId:e.id,name:e.conceptName,label:a,description:`${e.conceptName} (${e.type})`,level:t,children:d,fields:l,collapsed:t>0,abstract:e.elementAbstract,periodType:e.periodType}:null}static createFieldFromConcept(e,t,i,o){const r=this.mapXBRLTypeToFieldType(e.type),s=this.getPreferredLabel(e.labels);let n;n=o||("instant"===e.periodType?"instant":"duration"===e.periodType?"duration":"default");const a={id:`${e.id}_${n}_field`,conceptId:e.id,columnId:n,type:r,label:s,placeholder:`Enter ${s.toLowerCase()}`,required:!1,disabled:e.elementAbstract,defaultValue:null};return"duration"!==e.periodType&&"instant"!==e.periodType||(a.periodStartDate=t||"2025-01-01",a.periodEndDate=i||"2025-12-31"),a}static mapXBRLTypeToFieldType(e){return{"xbrli:stringItemType":"text","xbrli:monetaryItemType":"currency","xbrli:integerItemType":"number","xbrli:decimalItemType":"decimal","xbrli:percentItemType":"percentage","xbrli:dateItemType":"date","xbrli:booleanItemType":"boolean","dtr-types:domainItemType":"select","bw2-titel9:chamberOfCommerceRegistrationNumberItemType":"text"}[e]||"text"}static getPreferredLabel(e,t="en"){if(!e||0===e.length)return"Unnamed Concept";const i=e.filter(e=>e.lang===t),o=i.length>0?i:e,r=o.find(e=>e.preferredLabel);if(r)return r.label;const s=o.find(e=>"http://www.xbrl.org/2003/role/label"===e.role);if(s)return s.label;const n=o.find(e=>"http://www.xbrl.org/2003/role/terseLabel"===e.role);return n?n.label:o.length>0?o[0].label:e[0].label}static assignFieldColumnIds(e){if(!e.columns||0===e.columns.length)return;const t=e.columns.map(e=>e.id);e.concepts.forEach(e=>{this.assignColumnIdsToConceptFields(e,t)})}static assignColumnIdsToConceptFields(e,t){e.fields=e.fields.filter(e=>t.includes(e.columnId)),e.children&&e.children.forEach(e=>{this.assignColumnIdsToConceptFields(e,t)})}static countFieldsInTree(e){let t=e.fields.length;return e.children&&e.children.forEach(e=>{t+=this.countFieldsInTree(e)}),t}static getAllNonAbstractConcepts(e){var t;const i=[];return(null==(t=e.presentationLinkbase)?void 0:t.concepts)&&e.presentationLinkbase.concepts.forEach(e=>{this.collectNonAbstractConcepts(e,i)}),i}static collectNonAbstractConcepts(e,t){e.elementAbstract||t.push(e),e.children&&e.children.length>0&&e.children.forEach(e=>{this.collectNonAbstractConcepts(e,t)})}static generateDefaultColumnsForRole(e,t,i,o,r,s){var n,a;const l=r||this.getAllNonAbstractConcepts(e),d=s||new Set(l.filter(e=>e.periodType).map(e=>e.periodType));if(0===l.length)return[{id:"default",title:"Value",description:"Default value column",type:"base",order:0,removable:!1}];let c=[];if(1===(null==(n=null==o?void 0:o.items)?void 0:n.length)){const e=o.items[0];1===e.dimensions.length?c=this.generateSingleDimensionColumns(e.dimensions[0],t,i,d):e.dimensions.length>1&&(c=this.generateMultiDimensionColumns(e.dimensions,t,i,d))}else(null==(a=null==o?void 0:o.items)?void 0:a.length)&&o.items.length;const p=[];return c.length>0?p.push(...c):0===d.size?p.push({id:"default",title:"Value",description:"Default value column",type:"base",order:0,removable:!1}):1===d.size&&d.has("instant")?p.push({id:"instant",title:"Current",description:`Values as of ${t}`,type:"base",order:0,removable:!1}):1===d.size&&d.has("duration")?p.push({id:"duration",title:"Current Period",description:`Period: ${t} to ${i}`,type:"base",order:0,removable:!1}):(p.push({id:"duration",title:"Current Period",description:`Period: ${t} to ${i}`,type:"base",order:0,removable:!1}),p.push({id:"instant",title:"Current",description:`Values as of ${t}`,type:"base",order:1,removable:!1})),p}static generateSingleDimensionColumns(e,t,i,o){var r,s,n;if(e.typedMember&&(!e.members||0===e.members.length)){const s=(null==(r=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:r.label)||e.conceptName,n={axisId:e.id,axisLabel:s,typedMemberId:e.typedMember.id,dimensionKey:`${s} | [Typed Input]`,dimensionIdKey:`${e.id}|[typed]`},a=[];return 0===o.size?a.push({id:"typed-default",title:s,description:"Typed dimension input column",type:"dimension",dimensionData:{dimensionId:"typed-default",axisId:n.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:n.axisLabel,axisLabel:n.axisLabel,memberKey:n.dimensionKey,dimensionIdKey:n.dimensionIdKey,hasTypedMembers:!0,typedMemberId:n.typedMemberId,typedMembers:[{axisId:n.axisId,axisLabel:n.axisLabel,typedMemberId:n.typedMemberId,memberLabel:n.axisLabel}]},order:0,removable:!1}):1===o.size&&o.has("instant")?a.push({id:"typed-instant",title:`${s} [Typed Input Available]`,description:`Typed values as of ${t}`,type:"dimension",dimensionData:{dimensionId:"typed-instant",axisId:n.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:n.axisLabel,axisLabel:n.axisLabel,memberKey:n.dimensionKey,dimensionIdKey:n.dimensionIdKey,hasTypedMembers:!0,typedMemberId:n.typedMemberId,typedMembers:[{axisId:n.axisId,axisLabel:n.axisLabel,typedMemberId:n.typedMemberId,memberLabel:n.axisLabel}]},order:0,removable:!1}):1===o.size&&o.has("duration")?a.push({id:"typed-duration",title:`${s} [Typed Input Available]`,description:`Typed values for period ${t} to ${i}`,type:"dimension",dimensionData:{dimensionId:"typed-duration",axisId:n.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:n.axisLabel,axisLabel:n.axisLabel,memberKey:n.dimensionKey,dimensionIdKey:n.dimensionIdKey,hasTypedMembers:!0,typedMemberId:n.typedMemberId,typedMembers:[{axisId:n.axisId,axisLabel:n.axisLabel,typedMemberId:n.typedMemberId,memberLabel:n.axisLabel}]},order:0,removable:!1}):(a.push({id:"typed-duration",title:`${s} [Typed Input Available]`,description:`Typed values for period ${t} to ${i}`,type:"dimension",dimensionData:{dimensionId:"typed-duration",axisId:n.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:n.axisLabel,axisLabel:n.axisLabel,memberKey:n.dimensionKey,dimensionIdKey:n.dimensionIdKey,hasTypedMembers:!0,typedMemberId:n.typedMemberId,typedMembers:[{axisId:n.axisId,axisLabel:n.axisLabel,typedMemberId:n.typedMemberId,memberLabel:n.axisLabel}]},order:0,removable:!1}),a.push({id:"typed-instant",title:`${s} [Typed Input Available]`,description:`Typed values as of ${t}`,type:"dimension",dimensionData:{dimensionId:"typed-instant",axisId:n.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:n.axisLabel,axisLabel:n.axisLabel,memberKey:n.dimensionKey,dimensionIdKey:n.dimensionIdKey,hasTypedMembers:!0,typedMemberId:n.typedMemberId,typedMembers:[{axisId:n.axisId,axisLabel:n.axisLabel,typedMemberId:n.typedMemberId,memberLabel:n.axisLabel}]},order:1,removable:!1})),a}if(!e.members||!Array.isArray(e.members))return[];if(0===e.members.length)return[];const a=(null==(s=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:s.label)||e.conceptName,l=e.members[0],d=(null==(n=l.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:n.label)||l.conceptName,c={axisId:e.id,axisLabel:a,memberId:l.id,memberLabel:d,dimensionKey:`${a} | ${d}`,dimensionIdKey:`${e.id} | ${l.id}`},p=[];return 0===o.size?p.push({id:"default",title:c.memberLabel,description:"Default value column",type:"dimension",dimensionData:{dimensionId:"default",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):1===o.size&&o.has("instant")?p.push({id:"instant",title:`${c.memberLabel}`,description:`Values as of ${t}`,type:"dimension",dimensionData:{dimensionId:"instant",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):1===o.size&&o.has("duration")?p.push({id:"duration",title:`${c.memberLabel}`,description:`Period: ${t} to ${i}`,type:"dimension",dimensionData:{dimensionId:"duration",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):(p.push({id:"duration",title:`${c.memberLabel}`,description:`Period: ${t} to ${i}`,type:"dimension",dimensionData:{dimensionId:"duration",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}),p.push({id:"instant",title:`${c.memberLabel}`,description:`Values as of ${t}`,type:"dimension",dimensionData:{dimensionId:"instant",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:1,removable:!1})),p}static generateMultiDimensionColumns(e,t,i,o){e.some(e=>e.typedMember);const r=e.filter(e=>!!e.typedMember||!!(e.members&&Array.isArray(e.members)&&e.members.length>0));if(0===r.length)return[];const s=r.map(e=>{var t;const i=(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName;if(e.typedMember)return{id:e.id,axisLabel:i,isTyped:!0,typedMemberId:e.typedMember.id,members:[{id:"[typed]",label:`${i} [Typed Input Available]`}]};const o=this.getAllDimensionMembers(e.members);return{id:e.id,axisLabel:i,isTyped:!1,members:o.map(e=>{var t;return{id:e.id,label:(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName}})}}),n=this.generateDimensionCombinations(s),a=[];return n.forEach((e,r)=>{const s=e.map(e=>e.memberLabel).join(" | "),n=e.filter(e=>e.isTyped),l=e.filter(e=>!e.isTyped),d={dimensionId:`multi_${r}`,memberValue:s,memberLabel:s,combinations:l.map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,memberId:e.memberId,memberLabel:e.memberLabel})),typedMembers:n.map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,typedMemberId:e.typedMemberId,memberLabel:e.memberLabel})),hasTypedMembers:n.length>0,memberKey:s,dimensionIdKey:[...l.map(e=>`${e.axisId}|${e.memberId}`),...n.map(e=>`${e.axisId}|[typed]`)].join("::")};0===o.size||1===o.size&&o.has("duration")?a.push({id:`duration_${r}`,title:`${s}`,description:`Period: ${t} to ${i}`,type:"dimension",dimensionData:{...d,dimensionId:`duration_${r}`},order:2*r,removable:!1}):1===o.size&&o.has("instant")?a.push({id:`instant_${r}`,title:`${s}`,description:`Values as of ${t}`,type:"dimension",dimensionData:{...d,dimensionId:`instant_${r}`},order:2*r,removable:!1}):(a.push({id:`duration_${r}`,title:`${s}`,description:`Period: ${t} to ${i}`,type:"dimension",dimensionData:{...d,dimensionId:`duration_${r}`},order:2*r,removable:!1}),a.push({id:`instant_${r}`,title:`${s}`,description:`Values as of ${t}`,type:"dimension",dimensionData:{...d,dimensionId:`instant_${r}`},order:2*r+1,removable:!1}))}),a}static getAllDimensionMembers(e){if(!e||!Array.isArray(e))return[];const t=[];return e.forEach(e=>{t.push(e),e.children&&e.children.length>0&&t.push(...this.getAllDimensionMembers(e.children))}),t}static generateDimensionCombinations(e){if(0===e.length)return[];if(1===e.length)return e[0].members.map(t=>[{axisId:e[0].id,axisLabel:e[0].axisLabel,memberId:t.id,memberLabel:t.label,isTyped:e[0].isTyped||!1,typedMemberId:e[0].typedMemberId}]);const[t,...i]=e,o=this.generateDimensionCombinations(i),r=[];return t.members.forEach(e=>{0===o.length?r.push([{axisId:t.id,axisLabel:t.axisLabel,memberId:e.id,memberLabel:e.label,isTyped:t.isTyped||!1,typedMemberId:t.typedMemberId}]):o.forEach(i=>{r.push([{axisId:t.id,axisLabel:t.axisLabel,memberId:e.id,memberLabel:e.label,isTyped:t.isTyped||!1,typedMemberId:t.typedMemberId},...i])})}),r}static formatDateForDisplay(e){try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return e}}static extractEntityName(e){try{const t=new URL(e).pathname.split("/");return t[t.length-1].replace(".xsd","").replace(/[^a-zA-Z0-9]/g," ").trim()||"Entity"}catch{return"Entity"}}static extractRoleTitle(e){const t=e.match(/^\[[\d]+\]\s*(.+)$/);return t?t[1].trim():e}static extractRoleOrder(e){const t=e.match(/^\[([\d]+)\]/);return t?parseInt(t[1],10):0}static buildColumnsFromHypercubes(){return[{id:"default",label:"Values",type:"data"}]}}var T=Object.defineProperty,E=Object.getOwnPropertyDescriptor,k=(e,t,i,o)=>{for(var r,s=o>1?void 0:o?E(t,i):t,n=e.length-1;n>=0;n--)(r=e[n])&&(s=(o?r(t,i,s):r(s))||s);return o&&s&&T(t,i,s),s};exports.JupiterFormField=class extends e.LitElement{constructor(){super(...arguments),this.value=null,this.disabled=!1,this.locale="en-US",this.hideLabel=!1,this._errors=[],this._touched=!1}willUpdate(e){(e.has("value")||e.has("field"))&&this._validateField()}_validateField(){var e;(null==(e=this.field)?void 0:e.validation)&&(this._errors=C.validateField(this.field.id,this.conceptId,this.columnId,this.value,this.field.type,this.field.validation))}_handleInput(e){const t=e.target;let i=t.value;"number"===this.field.type||"decimal"===this.field.type?i=""===i?null:Number(i):"boolean"===this.field.type&&(i=t.checked),this.value=i,this._touched=!0,this.dispatchEvent(new CustomEvent("field-change",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId,value:i,oldValue:this.value},bubbles:!0}))}_handleFocus(){this.dispatchEvent(new CustomEvent("field-focus",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId},bubbles:!0}))}_handleBlur(){this._touched=!0,this.dispatchEvent(new CustomEvent("field-blur",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId},bubbles:!0}))}_renderInput(){var t;const i=this._errors.some(e=>"error"===e.severity),o=this._errors.some(e=>"warning"===e.severity),r="field-input "+(i?"error":o?"warning":""),s=`${this.conceptId}__${this.columnId}`,n=`data[${this.conceptId}][${this.columnId}]`;switch(this.field.type){case"textarea":return e.html`
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<input
|
|
59
|
-
id="${s}"
|
|
60
|
-
name="${n}"
|
|
61
|
-
type="checkbox"
|
|
62
|
-
class="field-input"
|
|
63
|
-
.checked="${Boolean(this.value)}"
|
|
64
|
-
?disabled="${this.disabled||this.field.disabled}"
|
|
65
|
-
@change="${this._handleInput}"
|
|
66
|
-
@focus="${this._handleFocus}"
|
|
67
|
-
@blur="${this._handleBlur}"
|
|
68
|
-
/>
|
|
69
|
-
<span>${this.field.label}</span>
|
|
70
|
-
</div>
|
|
71
|
-
`;default:return e.html`
|
|
22
|
+
*/function S(e){return w({...e,state:!0,attribute:!1})}class C{static validateField(e,t,i,r,o,n=[]){const s=[];for(const a of n){const n=this.validateRule(e,t,i,r,o,a);n&&s.push(n)}return s}static validateRule(e,t,i,r,o,n){const s=null==r||""===r;switch(n.type){case"required":if(s)return this.createError(e,t,i,n);break;case"min":if(!s&&"number"==typeof r&&r<n.value)return this.createError(e,t,i,n);break;case"max":if(!s&&"number"==typeof r&&r>n.value)return this.createError(e,t,i,n);break;case"minLength":if(!s&&"string"==typeof r&&r.length<n.value)return this.createError(e,t,i,n);break;case"maxLength":if(!s&&"string"==typeof r&&r.length>n.value)return this.createError(e,t,i,n);break;case"pattern":if(!s&&"string"==typeof r){if(!new RegExp(n.value).test(r))return this.createError(e,t,i,n)}break;case"email":if(!s&&"string"==typeof r){if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r))return this.createError(e,t,i,n)}break;case"url":if(!s&&"string"==typeof r)try{new URL(r)}catch{return this.createError(e,t,i,n)}break;case"custom":break;default:console.warn(`Unknown validation rule type: ${n.type}`)}return null}static createError(e,t,i,r){return{fieldId:e,conceptId:t,columnId:i,message:r.message,severity:r.severity||"error",rule:r}}static validateDataType(e,t){if(null==e||""===e)return{valid:!0,convertedValue:e};switch(t){case"number":case"decimal":case"currency":case"percentage":{const t=Number(e);return isNaN(t)?{valid:!1,error:"Invalid number format"}:{valid:!0,convertedValue:t}}case"date":{const t=new Date(e);return isNaN(t.getTime())?{valid:!1,error:"Invalid date format"}:{valid:!0,convertedValue:t.toISOString().split("T")[0]}}case"datetime":{const t=new Date(e);return isNaN(t.getTime())?{valid:!1,error:"Invalid datetime format"}:{valid:!0,convertedValue:t.toISOString()}}case"boolean":if("boolean"==typeof e)return{valid:!0,convertedValue:e};if("string"==typeof e){const t=e.toLowerCase();if("true"===t||"1"===t)return{valid:!0,convertedValue:!0};if("false"===t||"0"===t)return{valid:!0,convertedValue:!1}}return{valid:!1,error:"Invalid boolean format"};case"text":case"textarea":case"email":case"url":case"tel":return{valid:!0,convertedValue:String(e)};default:return{valid:!0,convertedValue:e}}}static formatValue(e,t,i="en-US"){if(null==e)return"";switch(t){case"number":return new Intl.NumberFormat(i).format(Number(e));case"decimal":return new Intl.NumberFormat(i,{minimumFractionDigits:2,maximumFractionDigits:2}).format(Number(e));case"currency":return new Intl.NumberFormat(i,{style:"currency",currency:"USD"}).format(Number(e));case"percentage":return new Intl.NumberFormat(i,{style:"percent",minimumFractionDigits:2}).format(Number(e)/100);case"date":return new Date(e).toLocaleDateString(i);case"datetime":return new Date(e).toLocaleString(i);default:return String(e)}}}class T{static createUniqueConceptId(e,t){let i=e.id;if(e.preferredLabel&&""!==e.preferredLabel.trim()){const t=e.preferredLabel.match(/\/([^\/]+)$/),r=t?t[1]:e.preferredLabel.replace(/[^a-zA-Z0-9]/g,"_");i=`${e.id}_${r}`}if(t){return`${i}__${this.createSectionHash(t)}`}return i}static createSectionHash(e){let t=0;for(let i=0;i<e.length;i++){t=(t<<5)-t+e.charCodeAt(i),t&=t}return Math.abs(t).toString(36).substr(0,6)}static buildFormSchema(e,t,i,r="en",o){var n;if(!e.presentation||0===e.presentation.length)throw new Error("XBRL presentation data is required");const s=e.presentation[0],a=null==(n=e.hypercubes)?void 0:n[0],l=[];return[...s.roles].sort((e,t)=>e.role.localeCompare(t.role)).forEach(e=>{const n=this.buildSectionFromRole(e,t,i,a,r,o);this.assignFieldColumnIds(n),l.push(n)}),{formId:`xbrl-form-${Date.now()}`,title:`XBRL Form - ${this.extractEntityName(s.entrypoint)}`,description:"Dynamic form generated from XBRL taxonomy data",version:"1.0.0",sections:l}}static buildSectionFromRole(e,t,i,r,o="en",n){var s;const a=this.extractRoleTitle(e.role),l=this.getAllNonAbstractConcepts(e),d=new Set(l.filter(e=>e.periodType).map(e=>e.periodType)),c=null==r?void 0:r.roles.find(t=>t.roleId===e.id),p=null==n?void 0:n[e.id],h=this.generateDefaultColumnsForRole(e,t||"2025-01-01",i||"2025-12-31",c,l,d,p),m={periodTypes:d,availableColumnIds:h.map(e=>e.id)},u=[];return(null==(s=e.presentationLinkbase)?void 0:s.concepts)&&e.presentationLinkbase.concepts.forEach(r=>{const n=this.buildConceptTree(r,0,t,i,m,e.id,o);n&&u.push(n)}),{id:e.id,title:a,description:e.description||`Section for ${a}`,concepts:u,columns:h,expanded:!1,metadata:{roleURI:e.roleURI,originalRole:e.role},showPeriodControl:d.size>1,showPreviousYear:!0===e.showPreviousYear,instant:!0===e.instant,duration:!0===e.duration}}static buildConceptTree(e,t,i,r,o,n,s="en"){const a=this.getPreferredLabel(e.labels,s),l=[];if(!e.elementAbstract){let t=[];if((null==o?void 0:o.availableColumnIds)&&o.availableColumnIds.length>0){if(t=o.availableColumnIds.filter(t=>{const i=t.includes("instant")||"instant"===t,r=t.includes("duration")||"duration"===t;return"instant"===e.periodType?i:"duration"===e.periodType?r:!i&&!r}),0===t.length&&o.availableColumnIds.length>0){o.availableColumnIds.some(e=>e.includes("instant")||e.includes("duration"))||(t=o.availableColumnIds)}}else t=(null==o?void 0:o.periodTypes)&&0!==o.periodTypes.size?1===o.periodTypes.size&&o.periodTypes.has("instant")?["instant"]:1===o.periodTypes.size&&o.periodTypes.has("duration")?["duration"]:"instant"===e.periodType?["instant"]:"duration"===e.periodType?["duration"]:["duration","instant"]:["default"];t.forEach(t=>{const o=this.createFieldFromConcept(e,i,r,t);o&&l.push(o)})}const d=[];e.children&&e.children.length>0&&e.children.forEach(e=>{const a=this.buildConceptTree(e,t+1,i,r,o,n,s);a&&d.push(a)});return l.length>0||d.length>0?{id:this.createUniqueConceptId(e,n),originalConceptId:e.id,name:e.conceptName,label:a,description:`${e.conceptName} (${e.type})`,type:e.type,level:t,children:d,fields:l,collapsed:t>0,abstract:e.elementAbstract,periodType:e.periodType}:null}static createFieldFromConcept(e,t,i,r){const o=this.mapXBRLTypeToFieldType(e.type),n=this.getPreferredLabel(e.labels);let s;s=r||("instant"===e.periodType?"instant":"duration"===e.periodType?"duration":"default");const a={id:`${e.id}_${s}_field`,conceptId:e.id,columnId:s,type:o,label:n,placeholder:`Enter ${n.toLowerCase()}`,required:!1,disabled:e.elementAbstract,defaultValue:null};return"duration"!==e.periodType&&"instant"!==e.periodType||(a.periodStartDate=t||"2025-01-01",a.periodEndDate=i||"2025-12-31"),a}static mapXBRLTypeToFieldType(e){return{"xbrli:stringItemType":"text","xbrli:monetaryItemType":"currency","xbrli:integerItemType":"number","xbrli:decimalItemType":"decimal","xbrli:percentItemType":"percentage","xbrli:dateItemType":"date","xbrli:booleanItemType":"boolean","dtr-types:domainItemType":"select","bw2-titel9:chamberOfCommerceRegistrationNumberItemType":"text"}[e]||"text"}static getPreferredLabel(e,t="en"){if(!e||0===e.length)return"Unnamed Concept";const i=e.filter(e=>e.lang===t),r=i.length>0?i:e,o=r.find(e=>e.preferredLabel);if(o)return o.label;const n=r.find(e=>"http://www.xbrl.org/2003/role/label"===e.role);if(n)return n.label;const s=r.find(e=>"http://www.xbrl.org/2003/role/terseLabel"===e.role);return s?s.label:r.length>0?r[0].label:e[0].label}static assignFieldColumnIds(e){if(!e.columns||0===e.columns.length)return;const t=e.columns.map(e=>e.id);e.concepts.forEach(e=>{this.assignColumnIdsToConceptFields(e,t)})}static assignColumnIdsToConceptFields(e,t){e.fields=e.fields.filter(e=>t.includes(e.columnId)),e.children&&e.children.forEach(e=>{this.assignColumnIdsToConceptFields(e,t)})}static countFieldsInTree(e){let t=e.fields.length;return e.children&&e.children.forEach(e=>{t+=this.countFieldsInTree(e)}),t}static getAllNonAbstractConcepts(e){var t;const i=[];return(null==(t=e.presentationLinkbase)?void 0:t.concepts)&&e.presentationLinkbase.concepts.forEach(e=>{this.collectNonAbstractConcepts(e,i)}),i}static collectNonAbstractConcepts(e,t){e.elementAbstract||t.push(e),e.children&&e.children.length>0&&e.children.forEach(e=>{this.collectNonAbstractConcepts(e,t)})}static generateDefaultColumnsForRole(e,t,i,r,o,n,s){var a,l;const d=o||this.getAllNonAbstractConcepts(e),c=n||new Set(d.filter(e=>e.periodType).map(e=>e.periodType));if(0===d.length)return[{id:"default",title:"Value",description:"Default value column",type:"base",order:0,removable:!1}];let p=[];if(1===(null==(a=null==r?void 0:r.items)?void 0:a.length)){const e=r.items[0];1===e.dimensions.length?p=this.generateSingleDimensionColumns(e.dimensions[0],t,i,c):e.dimensions.length>1&&(p=this.generateMultiDimensionColumns(e.dimensions,t,i,c)),s&&(p=this.filterColumnsByPeriodPreferences(p,s))}else(null==(l=null==r?void 0:r.items)?void 0:l.length)&&r.items.length;const h=[];p.length>0?h.push(...p):0===c.size?h.push({id:"default",title:"Value",description:"Default value column",type:"base",order:0,removable:!1}):1===c.size&&c.has("instant")?h.push({id:"instant",title:i,description:"",type:"base",order:0,removable:!1}):1===c.size&&c.has("duration")?h.push({id:"duration",title:`${t} / ${i}`,description:"",type:"base",order:0,removable:!1}):(h.push({id:"duration",title:`${t} / ${i}`,description:"",type:"base",order:0,removable:!1}),h.push({id:"instant",title:i,description:"",type:"base",order:1,removable:!1}));let m=h;if(s&&(m=this.filterColumnsByPeriodPreferences(h,s)),null==s?void 0:s.showPreviousYear){const e=this.generatePreviousYearColumns(m,t,i);m=[...m,...e]}return m}static getPreviousYearDate(e){try{const t=new Date(e);return t.setFullYear(t.getFullYear()-1),t.toISOString().split("T")[0]}catch(t){return console.error(`Error calculating previous year for date ${e}:`,t),e}}static generatePreviousYearColumns(e,t,i){const r=[],o=this.getPreviousYearDate(t),n=this.getPreviousYearDate(i);return e.forEach((e,t)=>{let i=e.title,s="",a="";e.dimensionData?(i=e.title,s=e.description&&e.description.includes("/")?`${o} / ${n}`:n,a=`${e.id}_prev`):"instant"===e.id||e.id.includes("instant")?(i=n,s="",a=`instant_prev_${t}`):"duration"===e.id||e.id.includes("duration")?(i=`${o} / ${n}`,s="",a=`duration_prev_${t}`):e.title.includes("/")?(i=`${o} / ${n}`,s="",a=`${e.id}_prev`):(i=n,s="",a=`${e.id}_prev`),r.push({...e,id:a,title:i,description:s,order:e.order+100,removable:!0,periodStartDate:o,periodEndDate:n,dimensionData:e.dimensionData?{...e.dimensionData,dimensionId:`${e.dimensionData.dimensionId}_prev`}:void 0})}),r}static filterColumnsByPeriodPreferences(e,t){return e.filter(e=>{var i,r,o,n;const s=e.id.includes("duration")||(null==(r=null==(i=e.dimensionData)?void 0:i.dimensionId)?void 0:r.includes("duration")),a=e.id.includes("instant")||(null==(n=null==(o=e.dimensionData)?void 0:o.dimensionId)?void 0:n.includes("instant"));return!s&&!a||!(s&&!t.showDuration)&&!(a&&!t.showInstant)})}static generateSingleDimensionColumns(e,t,i,r){var o,n,s;if(e.typedMember&&(!e.members||0===e.members.length)){const n=(null==(o=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:o.label)||e.conceptName,s={axisId:e.id,axisLabel:n,typedMemberId:e.typedMember.id,dimensionKey:`${n} | [Typed Input]`,dimensionIdKey:`${e.id}|[typed]`},a=[];return 0===r.size?a.push({id:"typed-default",title:n,description:"Typed dimension input column",type:"dimension",dimensionData:{dimensionId:"typed-default",axisId:s.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:s.axisLabel,axisLabel:s.axisLabel,memberKey:s.dimensionKey,dimensionIdKey:s.dimensionIdKey,hasTypedMembers:!0,typedMemberId:s.typedMemberId,typedMembers:[{axisId:s.axisId,axisLabel:s.axisLabel,typedMemberId:s.typedMemberId,memberLabel:s.axisLabel}]},order:0,removable:!1}):1===r.size&&r.has("instant")?a.push({id:"typed-instant",title:`${n} [Typed Input Available]`,description:i,type:"dimension",dimensionData:{dimensionId:"typed-instant",axisId:s.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:s.axisLabel,axisLabel:s.axisLabel,memberKey:s.dimensionKey,dimensionIdKey:s.dimensionIdKey,hasTypedMembers:!0,typedMemberId:s.typedMemberId,typedMembers:[{axisId:s.axisId,axisLabel:s.axisLabel,typedMemberId:s.typedMemberId,memberLabel:s.axisLabel}]},order:0,removable:!1}):1===r.size&&r.has("duration")?a.push({id:"typed-duration",title:`${n} [Typed Input Available]`,description:`${t} / ${i}`,type:"dimension",dimensionData:{dimensionId:"typed-duration",axisId:s.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:s.axisLabel,axisLabel:s.axisLabel,memberKey:s.dimensionKey,dimensionIdKey:s.dimensionIdKey,hasTypedMembers:!0,typedMemberId:s.typedMemberId,typedMembers:[{axisId:s.axisId,axisLabel:s.axisLabel,typedMemberId:s.typedMemberId,memberLabel:s.axisLabel}]},order:0,removable:!1}):(a.push({id:"typed-duration",title:`${n} [Typed Input Available]`,description:`${t} / ${i}`,type:"dimension",dimensionData:{dimensionId:"typed-duration",axisId:s.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:s.axisLabel,axisLabel:s.axisLabel,memberKey:s.dimensionKey,dimensionIdKey:s.dimensionIdKey,hasTypedMembers:!0,typedMemberId:s.typedMemberId,typedMembers:[{axisId:s.axisId,axisLabel:s.axisLabel,typedMemberId:s.typedMemberId,memberLabel:s.axisLabel}]},order:0,removable:!1}),a.push({id:"typed-instant",title:`${n} [Typed Input Available]`,description:i,type:"dimension",dimensionData:{dimensionId:"typed-instant",axisId:s.axisId,memberId:"[typed]",memberValue:"Typed Input",memberLabel:"Typed Input",axis:s.axisLabel,axisLabel:s.axisLabel,memberKey:s.dimensionKey,dimensionIdKey:s.dimensionIdKey,hasTypedMembers:!0,typedMemberId:s.typedMemberId,typedMembers:[{axisId:s.axisId,axisLabel:s.axisLabel,typedMemberId:s.typedMemberId,memberLabel:s.axisLabel}]},order:1,removable:!1})),a}if(!e.members||!Array.isArray(e.members))return[];if(0===e.members.length)return[];const a=(null==(n=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:n.label)||e.conceptName,l=e.members[0],d=(null==(s=l.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:s.label)||l.conceptName,c={axisId:e.id,axisLabel:a,memberId:l.id,memberLabel:d,dimensionKey:`${a} | ${d}`,dimensionIdKey:`${e.id} | ${l.id}`},p=[];return 0===r.size?p.push({id:"default",title:c.memberLabel,description:"Default value column",type:"dimension",dimensionData:{dimensionId:"default",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):1===r.size&&r.has("instant")?p.push({id:"instant",title:`${c.memberLabel}`,description:i,type:"dimension",dimensionData:{dimensionId:"instant",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):1===r.size&&r.has("duration")?p.push({id:"duration",title:`${c.memberLabel}`,description:`${t} / ${i}`,type:"dimension",dimensionData:{dimensionId:"duration",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}):(p.push({id:"duration",title:`${c.memberLabel}`,description:`${t} / ${i}`,type:"dimension",dimensionData:{dimensionId:"duration",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:0,removable:!1}),p.push({id:"instant",title:`${c.memberLabel}`,description:i,type:"dimension",dimensionData:{dimensionId:"instant",axisId:c.axisId,memberId:c.memberId,memberValue:c.memberLabel,memberLabel:c.memberLabel,axis:c.axisLabel,axisLabel:c.axisLabel,memberKey:c.dimensionKey,dimensionIdKey:c.dimensionIdKey},order:1,removable:!1})),p}static generateMultiDimensionColumns(e,t,i,r){e.some(e=>e.typedMember);const o=e.filter(e=>!!e.typedMember||!!(e.members&&Array.isArray(e.members)&&e.members.length>0));if(0===o.length)return[];const n=o.map(e=>{var t;const i=(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName;if(e.typedMember)return{id:e.id,axisLabel:i,isTyped:!0,typedMemberId:e.typedMember.id,members:[{id:"[typed]",label:`${i} [Typed Input Available]`}]};const r=this.getAllDimensionMembers(e.members);return{id:e.id,axisLabel:i,isTyped:!1,members:r.map(e=>{var t;return{id:e.id,label:(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName}})}}),s=this.generateDimensionCombinations(n),a=[];return s.forEach((e,o)=>{const n=e.map(e=>e.memberLabel).join(" | "),s=e.filter(e=>e.isTyped),l=e.filter(e=>!e.isTyped),d={dimensionId:`multi_${o}`,memberValue:n,memberLabel:n,combinations:l.map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,memberId:e.memberId,memberLabel:e.memberLabel})),typedMembers:s.map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,typedMemberId:e.typedMemberId,memberLabel:e.memberLabel})),hasTypedMembers:s.length>0,memberKey:n,dimensionIdKey:[...l.map(e=>`${e.axisId}|${e.memberId}`),...s.map(e=>`${e.axisId}|[typed]`)].join("::")};0===r.size||1===r.size&&r.has("duration")?a.push({id:`duration_${o}`,title:`${n}`,description:`${t} / ${i}`,type:"dimension",dimensionData:{...d,dimensionId:`duration_${o}`},order:2*o,removable:!1}):1===r.size&&r.has("instant")?a.push({id:`instant_${o}`,title:`${n}`,description:i,type:"dimension",dimensionData:{...d,dimensionId:`instant_${o}`},order:2*o,removable:!1}):(a.push({id:`duration_${o}`,title:`${n}`,description:`${t} / ${i}`,type:"dimension",dimensionData:{...d,dimensionId:`duration_${o}`},order:2*o,removable:!1}),a.push({id:`instant_${o}`,title:`${n}`,description:i,type:"dimension",dimensionData:{...d,dimensionId:`instant_${o}`},order:2*o+1,removable:!1}))}),a}static getAllDimensionMembers(e){if(!e||!Array.isArray(e))return[];const t=[];return e.forEach(e=>{t.push(e),e.children&&e.children.length>0&&t.push(...this.getAllDimensionMembers(e.children))}),t}static generateDimensionCombinations(e){if(0===e.length)return[];if(1===e.length)return e[0].members.map(t=>[{axisId:e[0].id,axisLabel:e[0].axisLabel,memberId:t.id,memberLabel:t.label,isTyped:e[0].isTyped||!1,typedMemberId:e[0].typedMemberId}]);const[t,...i]=e,r=this.generateDimensionCombinations(i),o=[];return t.members.forEach(e=>{0===r.length?o.push([{axisId:t.id,axisLabel:t.axisLabel,memberId:e.id,memberLabel:e.label,isTyped:t.isTyped||!1,typedMemberId:t.typedMemberId}]):r.forEach(i=>{o.push([{axisId:t.id,axisLabel:t.axisLabel,memberId:e.id,memberLabel:e.label,isTyped:t.isTyped||!1,typedMemberId:t.typedMemberId},...i])})}),o}static formatDateForDisplay(e){try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return e}}static extractEntityName(e){try{const t=new URL(e).pathname.split("/");return t[t.length-1].replace(".xsd","").replace(/[^a-zA-Z0-9]/g," ").trim()||"Entity"}catch{return"Entity"}}static extractRoleTitle(e){const t=e.match(/^\[[\d]+\]\s*(.+)$/);return t?t[1].trim():e}static extractRoleOrder(e){const t=e.match(/^\[([\d]+)\]/);return t?parseInt(t[1],10):0}static buildColumnsFromHypercubes(){return[{id:"default",label:"Values",type:"data"}]}}const k={"nl-types:formattedExplanationItemType":{fieldType:"textarea",placeholder:"Enter detailed explanation..."},"nl-types:monetaryNoDecimals20ItemType":{fieldType:"number",htmlInputType:"number",allowDecimals:!1,step:1,placeholder:"Enter amount (no decimals)"},"xbrli:monetaryItemType":{fieldType:"currency",htmlInputType:"number",allowDecimals:!0,step:.01,placeholder:"0.00"},"xbrli:stringItemType":{fieldType:"text",htmlInputType:"text",placeholder:"Enter text"},"xbrli:dateItemType":{fieldType:"date",htmlInputType:"date"},"xbrli:dateTimeItemType":{fieldType:"datetime",htmlInputType:"datetime-local"},"xbrli:integerItemType":{fieldType:"integer",htmlInputType:"number",allowDecimals:!1,step:1,placeholder:"Enter whole number"},"xbrli:nonNegativeIntegerItemType":{fieldType:"integer",htmlInputType:"number",allowDecimals:!1,min:0,step:1,placeholder:"Enter positive number"},"xbrli:positiveIntegerItemType":{fieldType:"integer",htmlInputType:"number",allowDecimals:!1,min:1,step:1,placeholder:"Enter positive number"},"xbrli:decimalItemType":{fieldType:"decimal",htmlInputType:"number",allowDecimals:!0,step:"any",placeholder:"Enter decimal value"},"xbrli:sharesItemType":{fieldType:"number",htmlInputType:"number",allowDecimals:!0,min:0,step:.01,placeholder:"Enter number of shares"},"xbrli:shares":{fieldType:"number",htmlInputType:"number",allowDecimals:!0,min:0,step:.01,placeholder:"Enter number of shares"},"xbrli:gYearItemType":{fieldType:"number",htmlInputType:"number",allowDecimals:!1,min:1900,max:2100,step:1,placeholder:"YYYY"},"xbrli:booleanItemType":{fieldType:"boolean"},"xbrli:pureItemType":{fieldType:"percentage",htmlInputType:"number",allowDecimals:!0,step:.01,placeholder:"Enter percentage"},"xbrli:percentItemType":{fieldType:"percentage",htmlInputType:"number",allowDecimals:!0,step:.01,placeholder:"Enter percentage"},"xbrli:emailItemType":{fieldType:"email",htmlInputType:"email",placeholder:"email@example.com"},"xbrli:urlItemType":{fieldType:"url",htmlInputType:"url",placeholder:"https://example.com"},"xbrli:telephoneItemType":{fieldType:"tel",htmlInputType:"tel",placeholder:"+1 (555) 000-0000"}};function F(e){if(!e)return{fieldType:"text",htmlInputType:"text",placeholder:"Enter value"};if(k[e])return k[e];const t=e.toLowerCase();if(t.includes("monetary"))return t.includes("nodecimals")||t.includes("no-decimals")?{fieldType:"number",htmlInputType:"number",allowDecimals:!1,step:1,placeholder:"Enter amount (no decimals)"}:{fieldType:"currency",htmlInputType:"number",allowDecimals:!0,step:.01,placeholder:"0.00"};if(t.includes("explanation")||t.includes("description")||t.includes("notes")||t.includes("formatted"))return{fieldType:"textarea",placeholder:"Enter detailed information..."};if(t.includes("date"))return t.includes("time")?{fieldType:"datetime",htmlInputType:"datetime-local"}:{fieldType:"date",htmlInputType:"date"};if(t.includes("boolean")||t.includes("bool"))return{fieldType:"boolean"};if(t.includes("integer")||t.includes("int")){const e=t.includes("nonnegative")||t.includes("non-negative");return{fieldType:"integer",htmlInputType:"number",allowDecimals:!1,min:t.includes("positive")?1:e?0:void 0,step:1,placeholder:"Enter whole number"}}return t.includes("decimal")||t.includes("numeric")||t.includes("number")?{fieldType:"decimal",htmlInputType:"number",allowDecimals:!0,step:"any",placeholder:"Enter decimal value"}:t.includes("percent")||t.includes("pure")?{fieldType:"percentage",htmlInputType:"number",allowDecimals:!0,step:.01,placeholder:"Enter percentage"}:{fieldType:"text",htmlInputType:"text",placeholder:"Enter value"}}function E(e){return"textarea"===e}function j(e){return"boolean"===e}function P(e){return["number","decimal","integer","currency","percentage"].includes(e)}var A=Object.defineProperty,L=Object.getOwnPropertyDescriptor,R=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?L(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&A(t,i,n),n};exports.JupiterFormField=class extends e.LitElement{constructor(){super(...arguments),this.value=null,this.disabled=!1,this.locale="en-US",this.hideLabel=!1,this._errors=[],this._touched=!1}willUpdate(e){(e.has("value")||e.has("field"))&&this._validateField()}_validateField(){var e;(null==(e=this.field)?void 0:e.validation)&&(this._errors=C.validateField(this.field.id,this.conceptId,this.columnId,this.value,this.field.type,this.field.validation))}_handleInput(e){const t=e.target;let i=t.value;"number"===this.field.type||"decimal"===this.field.type?i=""===i?null:Number(i):"boolean"===this.field.type&&(i=t.checked),this.value=i,this._touched=!0,this.dispatchEvent(new CustomEvent("field-change",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId,value:i,oldValue:this.value},bubbles:!0}))}_handleFocus(){this.dispatchEvent(new CustomEvent("field-focus",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId},bubbles:!0}))}_handleBlur(){this._touched=!0,this.dispatchEvent(new CustomEvent("field-blur",{detail:{fieldId:this.field.id,conceptId:this.conceptId,columnId:this.columnId},bubbles:!0}))}_renderInput(){var t;const i=this._errors.some(e=>"error"===e.severity),r=this._errors.some(e=>"warning"===e.severity),o="field-input "+(i?"error":r?"warning":""),n=`${this.conceptId}__${this.columnId}`,s=`data[${this.conceptId}][${this.columnId}]`,a=F(this.conceptType);this.conceptType;const l=a.fieldType||this.field.type||"text";if("textarea"===l||E(l))return e.html`
|
|
23
|
+
<textarea
|
|
24
|
+
id="${n}"
|
|
25
|
+
name="${s}"
|
|
26
|
+
class="${o}"
|
|
27
|
+
.value="${this.value||""}"
|
|
28
|
+
?disabled="${this.disabled||this.field.disabled}"
|
|
29
|
+
placeholder="${a.placeholder||this.field.placeholder||""}"
|
|
30
|
+
@input="${this._handleInput}"
|
|
31
|
+
@focus="${this._handleFocus}"
|
|
32
|
+
@blur="${this._handleBlur}"
|
|
33
|
+
></textarea>
|
|
34
|
+
`;if("select"===l||"select"===this.field.type)return e.html`
|
|
35
|
+
<select
|
|
36
|
+
id="${n}"
|
|
37
|
+
name="${s}"
|
|
38
|
+
class="${o}"
|
|
39
|
+
.value="${this.value||""}"
|
|
40
|
+
?disabled="${this.disabled||this.field.disabled}"
|
|
41
|
+
@change="${this._handleInput}"
|
|
42
|
+
@focus="${this._handleFocus}"
|
|
43
|
+
@blur="${this._handleBlur}"
|
|
44
|
+
>
|
|
45
|
+
<option value="">Select...</option>
|
|
46
|
+
${null==(t=this.field.options)?void 0:t.map(t=>e.html`
|
|
47
|
+
<option
|
|
48
|
+
value="${t.value}"
|
|
49
|
+
?disabled="${t.disabled}"
|
|
50
|
+
?selected="${this.value===t.value}"
|
|
51
|
+
>
|
|
52
|
+
${t.label}
|
|
53
|
+
</option>
|
|
54
|
+
`)}
|
|
55
|
+
</select>
|
|
56
|
+
`;if("boolean"===l||j(l))return e.html`
|
|
57
|
+
<div class="checkbox-container">
|
|
72
58
|
<input
|
|
73
|
-
id="${
|
|
74
|
-
name="${
|
|
75
|
-
type="
|
|
76
|
-
class="
|
|
77
|
-
.
|
|
59
|
+
id="${n}"
|
|
60
|
+
name="${s}"
|
|
61
|
+
type="checkbox"
|
|
62
|
+
class="field-input"
|
|
63
|
+
.checked="${Boolean(this.value)}"
|
|
78
64
|
?disabled="${this.disabled||this.field.disabled}"
|
|
79
|
-
|
|
80
|
-
@input="${this._handleInput}"
|
|
65
|
+
@change="${this._handleInput}"
|
|
81
66
|
@focus="${this._handleFocus}"
|
|
82
67
|
@blur="${this._handleBlur}"
|
|
83
68
|
/>
|
|
84
|
-
|
|
69
|
+
<span>${this.field.label}</span>
|
|
70
|
+
</div>
|
|
71
|
+
`;const d=a.htmlInputType||this._getInputType(),c=void 0!==a.step?a.step:P(l)?"any":void 0,p=a.min,h=a.max;return e.html`
|
|
72
|
+
<input
|
|
73
|
+
id="${n}"
|
|
74
|
+
name="${s}"
|
|
75
|
+
type="${d}"
|
|
76
|
+
class="${o}"
|
|
77
|
+
.value="${this.value||""}"
|
|
78
|
+
?disabled="${this.disabled||this.field.disabled}"
|
|
79
|
+
placeholder="${a.placeholder||this.field.placeholder||""}"
|
|
80
|
+
step="${void 0!==c?c:""}"
|
|
81
|
+
min="${void 0!==p?p:""}"
|
|
82
|
+
max="${void 0!==h?h:""}"
|
|
83
|
+
@input="${this._handleInput}"
|
|
84
|
+
@focus="${this._handleFocus}"
|
|
85
|
+
@blur="${this._handleBlur}"
|
|
86
|
+
/>
|
|
87
|
+
`}_getInputType(){switch(this.field.type){case"number":case"decimal":case"currency":case"percentage":return"number";case"date":return"date";case"datetime":return"datetime-local";case"email":return"email";case"url":return"url";case"tel":return"tel";default:return"text"}}render(){const t=!this.hideLabel&&"boolean"!==this.field.type;return e.html`
|
|
85
88
|
<div class="field-container">
|
|
86
89
|
${t?e.html`
|
|
87
90
|
<label class="field-label ${this.field.required?"required":""}">
|
|
@@ -206,9 +209,9 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
206
209
|
margin: 0;
|
|
207
210
|
width: auto;
|
|
208
211
|
}
|
|
209
|
-
`,
|
|
212
|
+
`,R([w({type:Object})],exports.JupiterFormField.prototype,"field",2),R([w({type:String})],exports.JupiterFormField.prototype,"conceptId",2),R([w({type:String})],exports.JupiterFormField.prototype,"conceptType",2),R([w({type:String})],exports.JupiterFormField.prototype,"columnId",2),R([w()],exports.JupiterFormField.prototype,"value",2),R([w({type:Boolean})],exports.JupiterFormField.prototype,"disabled",2),R([w({type:String})],exports.JupiterFormField.prototype,"locale",2),R([w({type:Boolean})],exports.JupiterFormField.prototype,"hideLabel",2),R([S()],exports.JupiterFormField.prototype,"_errors",2),R([S()],exports.JupiterFormField.prototype,"_touched",2),exports.JupiterFormField=R([t("jupiter-form-field")],exports.JupiterFormField);var M=Object.defineProperty,z=Object.getOwnPropertyDescriptor,J=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?z(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&M(t,i,n),n};exports.JupiterConceptTree=class extends e.LitElement{constructor(){super(...arguments),this.columns=[],this.formData={},this.disabled=!1,this.locale="en-US",this.expandedConcepts=new Set,this._expanded=!0}connectedCallback(){super.connectedCallback(),this._expanded=this.expandedConcepts.has(this.concept.id)}willUpdate(e){super.willUpdate(e),e.has("expandedConcepts")&&(this._expanded=this.expandedConcepts.has(this.concept.id))}_toggleExpanded(){this._expanded=!this._expanded,this.dispatchEvent(new CustomEvent("concept-expand",{detail:{conceptId:this.concept.id,expanded:this._expanded},bubbles:!0}))}_getFieldForColumn(e){var t;return null==(t=this.concept.fields)?void 0:t.find(t=>t.columnId===e)}_getFieldValue(e){var t;return null==(t=this.formData[this.concept.id])?void 0:t[e.columnId]}_handleFieldChange(e){e.stopPropagation(),this.dispatchEvent(new CustomEvent("field-change",{detail:e.detail,bubbles:!0}))}render(){const t=this.concept.children&&this.concept.children.length>0,i=this.concept.level||0,r=this.concept.abstract||!1;return e.html`
|
|
210
213
|
<!-- Concept Name Cell (Left Column) -->
|
|
211
|
-
<td class="concept-name-cell ${
|
|
214
|
+
<td class="concept-name-cell ${r?"abstract":t?"":"leaf"}">
|
|
212
215
|
<div class="concept-content" style="--level: ${i}">
|
|
213
216
|
<div class="concept-indent"></div>
|
|
214
217
|
<div class="concept-toggle ${t?this._expanded?"expanded":"":"no-children"}"
|
|
@@ -224,12 +227,13 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
224
227
|
</td>
|
|
225
228
|
|
|
226
229
|
<!-- Input Field Cells (Period Columns) - Only for non-abstract concepts -->
|
|
227
|
-
${this.columns.map(t=>{const i=this._getFieldForColumn(t.id),r
|
|
228
|
-
<td class="field-cell ${
|
|
229
|
-
${
|
|
230
|
+
${this.columns.map(t=>{const i=this._getFieldForColumn(t.id),o=!r&&i;return e.html`
|
|
231
|
+
<td class="field-cell ${o?"":"empty"} ${r?"abstract-row":""}">
|
|
232
|
+
${o?e.html`
|
|
230
233
|
<jupiter-form-field
|
|
231
234
|
.field="${i}"
|
|
232
235
|
.conceptId="${this.concept.id}"
|
|
236
|
+
.conceptType="${this.concept.type}"
|
|
233
237
|
.columnId="${t.id}"
|
|
234
238
|
.value="${this._getFieldValue(i)}"
|
|
235
239
|
.disabled="${this.disabled}"
|
|
@@ -342,7 +346,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
342
346
|
}
|
|
343
347
|
|
|
344
348
|
|
|
345
|
-
`,
|
|
349
|
+
`,J([w({type:Object})],exports.JupiterConceptTree.prototype,"concept",2),J([w({type:Array})],exports.JupiterConceptTree.prototype,"columns",2),J([w({type:Object})],exports.JupiterConceptTree.prototype,"formData",2),J([w({type:Boolean})],exports.JupiterConceptTree.prototype,"disabled",2),J([w({type:String})],exports.JupiterConceptTree.prototype,"locale",2),J([w({type:Set})],exports.JupiterConceptTree.prototype,"expandedConcepts",2),J([S()],exports.JupiterConceptTree.prototype,"_expanded",2),exports.JupiterConceptTree=J([t("jupiter-concept-tree")],exports.JupiterConceptTree);var U=Object.defineProperty,N=Object.getOwnPropertyDescriptor,O=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?N(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&U(t,i,n),n};exports.JupiterAddColumnDialog=class extends e.LitElement{constructor(){super(...arguments),this.periodType="duration",this.open=!1,this.availableDimensions=[],this._startDate="",this._endDate="",this._instantDate="",this._selectedType="duration",this._selectedDimensions=new Map}updated(e){e.has("open")&&this.open&&this._resetForm(),e.has("availableDimensions")}connectedCallback(){super.connectedCallback(),this._resetForm()}willUpdate(e){super.willUpdate(e),e.has("open")&&this.open&&this._resetForm()}_handleCancel(){this.open=!1,this.dispatchEvent(new CustomEvent("dialog-cancel",{bubbles:!0}))}_handleConfirm(){if(!this._isFormValid())return;const e={periodType:"mixed"===this.periodType?this._selectedType:this.periodType};"instant"===this.periodType||"mixed"===this.periodType&&"instant"===this._selectedType?e.instantDate=this._instantDate:(e.startDate=this._startDate,e.endDate=this._endDate),this._selectedDimensions.size>0&&(e.selectedDimensions=Array.from(this._selectedDimensions.values())),this.dispatchEvent(new CustomEvent("column-add",{detail:e,bubbles:!0}))}_isFormValid(){return"mixed"===this.periodType?"instant"===this._selectedType?!!this._instantDate:!!this._startDate&&!!this._endDate&&this._startDate<=this._endDate:"duration"===this.periodType?!!this._startDate&&!!this._endDate&&this._startDate<=this._endDate:"instant"===this.periodType&&!!this._instantDate}_handleStartDateChange(e){this._startDate=e.target.value}_handleEndDateChange(e){this._endDate=e.target.value}_handleSelectedTypeChange(e){this._selectedType=e.target.value}_handleInstantDateChange(e){this._instantDate=e.target.value}_handleDimensionToggle(e,t){if(t.target.checked){const t=this.availableDimensions.find(t=>t.id===e);if(t){const i={axisId:t.id,axisLabel:t.axisLabel,isTyped:!(!t.typedMember||t.members&&0!==t.members.length)};this._selectedDimensions.set(e,i)}}else this._selectedDimensions.delete(e);this.requestUpdate()}_handleMemberSelection(e,t,i){const r=this._selectedDimensions.get(e);r&&(r.memberId=t,r.memberLabel=i,this._selectedDimensions.set(e,r),this.requestUpdate())}_handleTypedValueChange(e,t){const i=t.target,r=this._selectedDimensions.get(e);r&&(r.typedValue=i.value,this._selectedDimensions.set(e,r))}_resetForm(){const e=(new Date).toISOString().split("T")[0];this._startDate=e,this._endDate=e,this._instantDate=e,this._selectedType="instant"===this.periodType?"instant":"duration",this._selectedDimensions.clear(),this._autoSelectSingleMemberDimensions(),this.requestUpdate()}_autoSelectSingleMemberDimensions(){this.availableDimensions.forEach(e=>{if(e.members&&1===e.members.length){const t=e.members[0],i={axisId:e.id,axisLabel:e.axisLabel,memberId:t.id,memberLabel:t.label,isTyped:!1};this._selectedDimensions.set(e.id,i)}else if(e.typedMember&&(!e.members||0===e.members.length)){const t={axisId:e.id,axisLabel:e.axisLabel,isTyped:!0};this._selectedDimensions.set(e.id,t)}})}render(){if(!this.open)return e.html``;const t=this._isFormValid();return e.html`
|
|
346
350
|
<div class="dialog" @click="${e=>e.stopPropagation()}">
|
|
347
351
|
<div class="dialog-header">
|
|
348
352
|
<h2 class="dialog-title">Add Column</h2>
|
|
@@ -407,7 +411,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
407
411
|
<h3>Available Dimensions</h3>
|
|
408
412
|
<p class="form-description">Select dimensions to include in the column. Domain members can be selected here, while typed dimension values will be entered directly in the column header.</p>
|
|
409
413
|
|
|
410
|
-
${this.availableDimensions.map(t=>{const i=this._selectedDimensions.has(t.id),
|
|
414
|
+
${this.availableDimensions.map(t=>{const i=this._selectedDimensions.has(t.id),r=this._selectedDimensions.get(t.id),o=!(!t.typedMember||t.members&&0!==t.members.length);return e.html`
|
|
411
415
|
<div class="dimension-item">
|
|
412
416
|
<div class="dimension-header">
|
|
413
417
|
<input
|
|
@@ -424,14 +428,14 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
424
428
|
|
|
425
429
|
${i?e.html`
|
|
426
430
|
<div class="dimension-details">
|
|
427
|
-
${
|
|
431
|
+
${o?e.html`
|
|
428
432
|
<!-- Typed Dimension Input -->
|
|
429
433
|
<div class="member-selection">
|
|
430
434
|
<label>Enter value for ${t.conceptName}:</label>
|
|
431
435
|
<input
|
|
432
436
|
type="text"
|
|
433
437
|
class="typed-input"
|
|
434
|
-
.value="${(null==
|
|
438
|
+
.value="${(null==r?void 0:r.typedValue)||""}"
|
|
435
439
|
@input="${e=>this._handleTypedValueChange(t.id,e)}"
|
|
436
440
|
placeholder="Enter value..."
|
|
437
441
|
/>
|
|
@@ -447,7 +451,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
447
451
|
<input
|
|
448
452
|
type="radio"
|
|
449
453
|
name="member-${t.id}"
|
|
450
|
-
.checked="${(null==
|
|
454
|
+
.checked="${(null==r?void 0:r.memberId)===i.id}"
|
|
451
455
|
@change="${()=>this._handleMemberSelection(t.id,i.id,i.label)}"
|
|
452
456
|
id="member-${t.id}-${i.id}"
|
|
453
457
|
/>
|
|
@@ -740,38 +744,31 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
740
744
|
margin: 0 0 12px 0;
|
|
741
745
|
line-height: 1.4;
|
|
742
746
|
}
|
|
743
|
-
`,
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
<
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
<div class="section-header-controls">
|
|
753
|
-
<div class="tree-control">
|
|
754
|
-
<input
|
|
755
|
-
type="checkbox"
|
|
756
|
-
class="tree-control-checkbox"
|
|
757
|
-
.checked="${this._allTreeExpanded}"
|
|
758
|
-
@change="${this._handleTreeCheckboxChange}"
|
|
759
|
-
/>
|
|
760
|
-
<span class="tree-control-label" @click="${this._toggleAllTrees}">${this._allTreeExpanded?"Collapse Tree":"Expand Tree"}</span>
|
|
747
|
+
`,O([w({type:String})],exports.JupiterAddColumnDialog.prototype,"periodType",2),O([w({type:Boolean})],exports.JupiterAddColumnDialog.prototype,"open",2),O([w({type:Array})],exports.JupiterAddColumnDialog.prototype,"availableDimensions",2),O([S()],exports.JupiterAddColumnDialog.prototype,"_startDate",2),O([S()],exports.JupiterAddColumnDialog.prototype,"_endDate",2),O([S()],exports.JupiterAddColumnDialog.prototype,"_instantDate",2),O([S()],exports.JupiterAddColumnDialog.prototype,"_selectedType",2),O([S()],exports.JupiterAddColumnDialog.prototype,"_selectedDimensions",2),exports.JupiterAddColumnDialog=O([t("jupiter-add-column-dialog")],exports.JupiterAddColumnDialog);var q=Object.defineProperty,V=Object.getOwnPropertyDescriptor,K=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?V(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&q(t,i,n),n};exports.JupiterFormSection=class extends e.LitElement{constructor(){super(...arguments),this.columns=[],this.formData={},this.typedMemberData={},this.disabled=!1,this.collapsible=!0,this.locale="en-US",this.isFirstSection=!1,this.availableDimensions=[],this.hideHeader=!1,this._expanded=!0,this._showAddColumnDialog=!1,this._sectionPeriodType="duration",this._expandedConcepts=new Set,this._allTreeExpanded=!1}connectedCallback(){super.connectedCallback(),this._expanded=!1!==this.section.expanded,this._determinePeriodType(),this._checkAndExpandFirstSection()}updated(e){super.updated(e),(e.has("isFirstSection")||e.has("section"))&&this._checkAndExpandFirstSection()}_checkAndExpandFirstSection(){this.isFirstSection&&this.section&&this.section.concepts&&(this._expanded=!0,setTimeout(()=>{this._expandAllTrees(),console.log("🎯 First section detected - expanded section and tree by default")},0))}_determinePeriodType(){const e=this._getAllNonAbstractConcepts(this.section.concepts);if(0===e.length)return this._sectionPeriodType="duration",void console.log(`📊 Section ${this.section.id}: No concepts, defaulting to duration`);const t=new Set(e.map(e=>e.periodType).filter(Boolean));if(0===t.size)this._sectionPeriodType="duration";else if(1===t.size){const e=Array.from(t)[0];this._sectionPeriodType="instant"===e?"instant":"duration"}else this._sectionPeriodType="mixed"}_getAllNonAbstractConcepts(e){const t=[];for(const i of e)i.abstract||t.push(i),i.children&&t.push(...this._getAllNonAbstractConcepts(i.children));return t}_toggleExpanded(){this.collapsible&&(this._expanded=!this._expanded,this._expanded&&this._expandAllTrees(),this.dispatchEvent(new CustomEvent("section-expand",{detail:{sectionId:this.section.id,expanded:this._expanded},bubbles:!0})))}_handleRemoveColumn(e){this.dispatchEvent(new CustomEvent("column-remove",{detail:{columnId:e,sectionId:this.section.id},bubbles:!0}))}_handleAddColumn(){const e=this._determineButtonPeriodType();this._sectionPeriodType=e,this._showAddColumnDialog=!0}_determineButtonPeriodType(){const e=this._getAllNonAbstractConcepts(this.section.concepts);if(0===e.length)return"duration";const t=new Set(e.map(e=>e.periodType).filter(e=>null!=e));if(0===t.size)return"duration";if(1===t.size){return"instant"===Array.from(t)[0]?"instant":"duration"}return"mixed"}_getConceptsWithFields(e){const t=[];for(const i of e)!i.abstract&&i.fields&&i.fields.length>0&&t.push(i),i.children&&t.push(...this._getConceptsWithFields(i.children));return t}_handleDialogCancel(){this._showAddColumnDialog=!1}_handleColumnAdd(e){e.stopPropagation(),this._showAddColumnDialog=!1,this.dispatchEvent(new CustomEvent("column-add-request",{detail:{sectionId:this.section.id,columnRequest:e.detail},bubbles:!0}))}_handleFieldChange(e){e.stopPropagation(),this.dispatchEvent(new CustomEvent("field-change",{detail:e.detail,bubbles:!0}))}_flattenConcepts(e,t=new Set){const i=[];for(const r of e)if(i.push(r),r.children&&r.children.length>0&&t.has(r.id)){const e=this._flattenConcepts(r.children,t);i.push(...e)}return i}_getAllConceptIds(e){const t=[];for(const i of e)i.children&&i.children.length>0&&(t.push(i.id),t.push(...this._getAllConceptIds(i.children)));return t}_expandAllTrees(){this._getAllConceptIds(this.section.concepts||[]).forEach(e=>this._expandedConcepts.add(e)),this._allTreeExpanded=!0,this.requestUpdate()}_collapseAllTrees(){this._expandedConcepts.clear(),this._allTreeExpanded=!1,this.requestUpdate()}_handleConceptExpand(e){e.stopPropagation();const{conceptId:t,expanded:i}=e.detail;i?this._expandedConcepts.add(t):this._expandedConcepts.delete(t);const r=this._getAllConceptIds(this.section.concepts||[]);this._allTreeExpanded=r.length>0&&r.every(e=>this._expandedConcepts.has(e)),this.requestUpdate(),this.dispatchEvent(new CustomEvent("concept-expand",{detail:e.detail,bubbles:!0}))}_getTypedMemberHeaderValue(e,t){var i;return(null==(i=this.typedMemberData[e])?void 0:i[t])||""}_handleTypedMemberHeaderChange(e,t,i){const r=e.target.value;console.log(`🔍 [FormSection] Typed member header change: columnId=${t}, axisId=${i}, value=${r}`),this.dispatchEvent(new CustomEvent("typed-member-change",{detail:{columnId:t,axisId:i,value:r},bubbles:!0}))}render(){return this.section.concepts&&0!==this.section.concepts.length?e.html`
|
|
748
|
+
${this.hideHeader?"":e.html`
|
|
749
|
+
<div class="section-header ${this.collapsible?"":"not-collapsible"}"
|
|
750
|
+
@click="${this._toggleExpanded}">
|
|
751
|
+
<div>
|
|
752
|
+
<h3 class="section-title">${this.section.title}</h3>
|
|
753
|
+
${this.section.description?e.html`
|
|
754
|
+
<p class="section-description">${this.section.description}</p>
|
|
755
|
+
`:""}
|
|
761
756
|
</div>
|
|
762
|
-
<div class="section-
|
|
763
|
-
${this.collapsible?"
|
|
757
|
+
<div class="section-header-controls">
|
|
758
|
+
<div class="section-toggle ${this.collapsible?this._expanded?"expanded":"":"hidden"}">
|
|
759
|
+
${this.collapsible?"▶":""}
|
|
760
|
+
</div>
|
|
764
761
|
</div>
|
|
765
762
|
</div>
|
|
766
|
-
|
|
763
|
+
`}
|
|
767
764
|
|
|
768
765
|
<div class="section-content ${this._expanded?"":"collapsed"}">
|
|
769
766
|
<div class="table-container">
|
|
770
767
|
<table class="form-table">
|
|
771
768
|
<thead class="table-header">
|
|
772
769
|
<tr class="header-row">
|
|
773
|
-
<th class="header-cell concept-column"
|
|
774
|
-
${this.columns.map(t=>{var i,o
|
|
770
|
+
<th class="header-cell concept-column"></th>
|
|
771
|
+
${this.columns.map(t=>{var i,r,o;return e.html`
|
|
775
772
|
<th class="header-cell ${t.removable?"removable":""}">
|
|
776
773
|
<div class="column-header-content">
|
|
777
774
|
<div class="column-title">
|
|
@@ -782,7 +779,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
782
779
|
<!-- Typed member input fields in column header -->
|
|
783
780
|
${(null==(i=t.dimensionData)?void 0:i.hasTypedMembers)?e.html`
|
|
784
781
|
<div class="typed-members-header">
|
|
785
|
-
${null==(
|
|
782
|
+
${null==(o=null==(r=t.dimensionData)?void 0:r.typedMembers)?void 0:o.map(i=>e.html`
|
|
786
783
|
<div class="typed-member-header-input">
|
|
787
784
|
<input
|
|
788
785
|
type="text"
|
|
@@ -806,7 +803,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
806
803
|
</div>
|
|
807
804
|
</th>
|
|
808
805
|
`})}
|
|
809
|
-
<th class="header-cell">
|
|
806
|
+
<th class="header-cell add-column-only">
|
|
810
807
|
<button class="add-column-btn" @click="${e=>{e.stopPropagation(),this._handleAddColumn()}}" title="Add Column">
|
|
811
808
|
+ Add Column
|
|
812
809
|
</button>
|
|
@@ -932,37 +929,6 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
932
929
|
gap: 12px;
|
|
933
930
|
}
|
|
934
931
|
|
|
935
|
-
.tree-control {
|
|
936
|
-
display: flex;
|
|
937
|
-
align-items: center;
|
|
938
|
-
gap: 6px;
|
|
939
|
-
font-size: 12px;
|
|
940
|
-
color: var(--jupiter-text-secondary, #666);
|
|
941
|
-
background: var(--jupiter-button-background, #fff);
|
|
942
|
-
border: 1px solid var(--jupiter-border-color, #ddd);
|
|
943
|
-
border-radius: 4px;
|
|
944
|
-
padding: 4px 8px;
|
|
945
|
-
cursor: pointer;
|
|
946
|
-
transition: all 0.2s ease;
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
.tree-control:hover {
|
|
950
|
-
background: var(--jupiter-button-hover-background, #f5f5f5);
|
|
951
|
-
border-color: var(--jupiter-primary-color, #007bff);
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
.tree-control-checkbox {
|
|
955
|
-
width: 14px;
|
|
956
|
-
height: 14px;
|
|
957
|
-
cursor: pointer;
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
.tree-control-label {
|
|
961
|
-
cursor: pointer;
|
|
962
|
-
font-weight: 500;
|
|
963
|
-
white-space: nowrap;
|
|
964
|
-
}
|
|
965
|
-
|
|
966
932
|
.section-content {
|
|
967
933
|
display: block;
|
|
968
934
|
transition: max-height 0.3s ease;
|
|
@@ -1021,6 +987,13 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1021
987
|
position: relative;
|
|
1022
988
|
}
|
|
1023
989
|
|
|
990
|
+
/* Special styling for the Add Column button-only column */
|
|
991
|
+
.header-cell.add-column-only {
|
|
992
|
+
width: 15%;
|
|
993
|
+
min-width: 100px;
|
|
994
|
+
max-width: 150px;
|
|
995
|
+
}
|
|
996
|
+
|
|
1024
997
|
.remove-column-btn {
|
|
1025
998
|
position: absolute;
|
|
1026
999
|
top: 4px;
|
|
@@ -1120,7 +1093,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1120
1093
|
color: var(--jupiter-text-secondary, #666);
|
|
1121
1094
|
font-style: italic;
|
|
1122
1095
|
}
|
|
1123
|
-
`,
|
|
1096
|
+
`,K([w({type:Object})],exports.JupiterFormSection.prototype,"section",2),K([w({type:Array})],exports.JupiterFormSection.prototype,"columns",2),K([w({type:Object})],exports.JupiterFormSection.prototype,"formData",2),K([w({type:Object})],exports.JupiterFormSection.prototype,"typedMemberData",2),K([w({type:Boolean})],exports.JupiterFormSection.prototype,"disabled",2),K([w({type:Boolean})],exports.JupiterFormSection.prototype,"collapsible",2),K([w({type:String})],exports.JupiterFormSection.prototype,"locale",2),K([w({type:Boolean})],exports.JupiterFormSection.prototype,"isFirstSection",2),K([w({type:Array})],exports.JupiterFormSection.prototype,"availableDimensions",2),K([w({type:Boolean})],exports.JupiterFormSection.prototype,"hideHeader",2),K([S()],exports.JupiterFormSection.prototype,"_expanded",2),K([S()],exports.JupiterFormSection.prototype,"_showAddColumnDialog",2),K([S()],exports.JupiterFormSection.prototype,"_sectionPeriodType",2),K([S()],exports.JupiterFormSection.prototype,"_expandedConcepts",2),K([S()],exports.JupiterFormSection.prototype,"_allTreeExpanded",2),exports.JupiterFormSection=K([t("jupiter-form-section")],exports.JupiterFormSection);var B=Object.defineProperty,Y=Object.getOwnPropertyDescriptor,H=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?Y(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&B(t,i,n),n};exports.JupiterFilterRolesDialog=class extends e.LitElement{constructor(){super(...arguments),this.open=!1,this.availableRoles=[],this.selectedRoleIds=[],this.periodPreferences={},this._tempSelectedRoles=new Set,this._searchQuery="",this._filteredRoles=[],this._tempPeriodPreferences={}}connectedCallback(){super.connectedCallback(),this._initializeTempSelection(),this._initializePeriodPreferences()}updated(e){(e.has("selectedRoleIds")||e.has("open"))&&this._initializeTempSelection(),(e.has("availableRoles")||e.has("_searchQuery"))&&this._updateFilteredRoles(),(e.has("availableRoles")||e.has("periodPreferences")||e.has("open"))&&this._initializePeriodPreferences()}_updateFilteredRoles(){if(!this._searchQuery.trim())return void(this._filteredRoles=[...this.availableRoles].sort((e,t)=>e.title.localeCompare(t.title)));const e=this._searchQuery.toLowerCase().trim(),t=this.availableRoles.filter(t=>{var i;const r=t.title.toLowerCase().includes(e),o=t.id.toLowerCase().includes(e),n=(null==(i=t.description)?void 0:i.toLowerCase().includes(e))||!1,s=this._searchInRoleURI(t,e);return r||o||n||s});this._filteredRoles=t.sort((e,t)=>e.title.localeCompare(t.title))}_searchInRoleURI(e,t){var i;if(null==(i=e.metadata)?void 0:i.roleURI)return e.metadata.roleURI.toLowerCase().includes(t);const r=/https?:\/\/[^\s]+/i,o=r.test(e.title),n=r.test(e.id);return o||n?e.title.toLowerCase().includes(t)||e.id.toLowerCase().includes(t):!!(e.id.includes(".")||e.id.includes("/")||e.id.includes(":"))&&e.id.toLowerCase().includes(t)}_handleSearchInput(e){const t=e.target;this._searchQuery=t.value}_clearSearch(){var e;this._searchQuery="";const t=null==(e=this.shadowRoot)?void 0:e.querySelector(".search-input");t&&(t.value="",t.focus())}_highlightSearchTerm(e){if(!this._searchQuery.trim())return e;const t=this._searchQuery.trim(),i=new RegExp(`(${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return e.replace(i,"<mark>$1</mark>")}_renderHighlightedText(e){return e}_getSelectedFilteredCount(){return this._filteredRoles.filter(e=>this._tempSelectedRoles.has(e.id)).length}_initializeTempSelection(){this._tempSelectedRoles=new Set(this.selectedRoleIds)}_initializePeriodPreferences(){const e={};this.availableRoles.forEach(t=>{const i=this.periodPreferences[t.id];if(i)e[t.id]={...i};else{const i=!0===t.showPeriodControl;let r,o;void 0!==t.duration||void 0!==t.instant?(r=!0===t.duration,o=!0===t.instant):(r=i||this._hasConceptsWithPeriodType(t,"duration"),o=i||this._hasConceptsWithPeriodType(t,"instant")),e[t.id]={showDuration:r,showInstant:o,showPreviousYear:!0===t.showPreviousYear}}}),this._tempPeriodPreferences=e}_hasConceptsWithPeriodType(e,t){const i=e=>e.some(e=>!e.abstract&&e.periodType===t||!!e.children&&i(e.children));return i(e.concepts)}_handlePeriodCheckboxChange(e,t,i){e.stopPropagation();const r=e.target,o={...this._tempPeriodPreferences};o[t]||(o[t]={showDuration:!0,showInstant:!0,showPreviousYear:!1}),"duration"===i?o[t].showDuration=r.checked:"instant"===i?o[t].showInstant=r.checked:"previousYear"===i&&(o[t].showPreviousYear=r.checked),this._tempPeriodPreferences=o,this.requestUpdate()}_handleCheckboxChange(e,t){const i=e.target,r=new Set(this._tempSelectedRoles);i.checked?r.add(t):r.delete(t),this._tempSelectedRoles=r,this.requestUpdate()}_selectAll(){const e=new Set(this._tempSelectedRoles);this._filteredRoles.forEach(t=>e.add(t.id)),this._tempSelectedRoles=e,this.requestUpdate()}_selectNone(){const e=new Set(this._tempSelectedRoles);this._filteredRoles.forEach(t=>e.delete(t.id)),this._tempSelectedRoles=e,this.requestUpdate()}_selectAllGlobal(){this._tempSelectedRoles=new Set(this.availableRoles.map(e=>e.id)),this.requestUpdate()}_selectNoneGlobal(){this._tempSelectedRoles=new Set,this.requestUpdate()}_resetToOriginal(){this._tempSelectedRoles=new Set(this.selectedRoleIds),this.requestUpdate()}_handleCancel(){this._initializeTempSelection(),this.dispatchEvent(new CustomEvent("dialog-cancel",{bubbles:!0}))}_handleApply(){const e=Array.from(this._tempSelectedRoles);this.dispatchEvent(new CustomEvent("roles-filter-apply",{detail:{selectedRoleIds:e,periodPreferences:this._tempPeriodPreferences},bubbles:!0}))}_handleBackdropClick(e){e.target===this&&this._handleCancel()}render(){const t=this._tempSelectedRoles.size,i=this.availableRoles.length,r=this._filteredRoles.length,o=this._searchQuery.trim().length>0;return e.html`
|
|
1124
1097
|
<div class="dialog" @click="${e=>e.stopPropagation()}">
|
|
1125
1098
|
<!-- Dialog Header -->
|
|
1126
1099
|
<div class="dialog-header">
|
|
@@ -1159,18 +1132,18 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1159
1132
|
</div>
|
|
1160
1133
|
|
|
1161
1134
|
<!-- Search Results Info -->
|
|
1162
|
-
${
|
|
1135
|
+
${o?e.html`
|
|
1163
1136
|
<div class="search-results-info">
|
|
1164
|
-
Showing ${
|
|
1165
|
-
${
|
|
1137
|
+
Showing ${r} of ${i} roles
|
|
1138
|
+
${r!==i?e.html`matching "${this._searchQuery}"`:""}
|
|
1166
1139
|
</div>
|
|
1167
1140
|
`:""}
|
|
1168
1141
|
|
|
1169
1142
|
<!-- Selection Controls -->
|
|
1170
1143
|
<div class="selection-controls">
|
|
1171
|
-
${
|
|
1144
|
+
${o?e.html`
|
|
1172
1145
|
<button class="selection-control" @click="${this._selectAll}">
|
|
1173
|
-
Select Filtered (${
|
|
1146
|
+
Select Filtered (${r})
|
|
1174
1147
|
</button>
|
|
1175
1148
|
<button class="selection-control" @click="${this._selectNone}">
|
|
1176
1149
|
Deselect Filtered
|
|
@@ -1198,7 +1171,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1198
1171
|
<div class="roles-list">
|
|
1199
1172
|
${0===this._filteredRoles.length?e.html`
|
|
1200
1173
|
<div class="no-results">
|
|
1201
|
-
${
|
|
1174
|
+
${o?e.html`
|
|
1202
1175
|
No roles found matching "${this._searchQuery}".<br>
|
|
1203
1176
|
Try a different search term or clear the search.
|
|
1204
1177
|
`:e.html`
|
|
@@ -1206,12 +1179,12 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1206
1179
|
`}
|
|
1207
1180
|
</div>
|
|
1208
1181
|
`:e.html`
|
|
1209
|
-
${this._filteredRoles.map(t=>{var i;const
|
|
1182
|
+
${this._filteredRoles.map(t=>{var i;const r=this._tempSelectedRoles.has(t.id),o=!0===t.showPeriodControl,n=this._tempPeriodPreferences[t.id]||{showDuration:!0,showInstant:!0};return e.html`
|
|
1210
1183
|
<div class="role-item">
|
|
1211
1184
|
<input
|
|
1212
1185
|
type="checkbox"
|
|
1213
1186
|
class="role-checkbox"
|
|
1214
|
-
.checked="${
|
|
1187
|
+
.checked="${r}"
|
|
1215
1188
|
@change="${e=>this._handleCheckboxChange(e,t.id)}"
|
|
1216
1189
|
/>
|
|
1217
1190
|
<div class="role-info">
|
|
@@ -1219,18 +1192,54 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1219
1192
|
${(null==(i=t.metadata)?void 0:i.roleURI)?e.html`
|
|
1220
1193
|
<p class="role-description">URI: ${t.metadata.roleURI}</p>
|
|
1221
1194
|
`:""}
|
|
1195
|
+
|
|
1196
|
+
${o?e.html`
|
|
1197
|
+
<div class="period-controls">
|
|
1198
|
+
<p class="period-controls-label">Show Period Column:</p>
|
|
1199
|
+
<div class="period-checkboxes">
|
|
1200
|
+
<label class="period-checkbox-item">
|
|
1201
|
+
<input
|
|
1202
|
+
type="checkbox"
|
|
1203
|
+
class="period-checkbox"
|
|
1204
|
+
.checked="${n.showDuration}"
|
|
1205
|
+
@change="${e=>this._handlePeriodCheckboxChange(e,t.id,"duration")}"
|
|
1206
|
+
/>
|
|
1207
|
+
<span class="period-checkbox-label">Duration</span>
|
|
1208
|
+
</label>
|
|
1209
|
+
<label class="period-checkbox-item">
|
|
1210
|
+
<input
|
|
1211
|
+
type="checkbox"
|
|
1212
|
+
class="period-checkbox"
|
|
1213
|
+
.checked="${n.showInstant}"
|
|
1214
|
+
@change="${e=>this._handlePeriodCheckboxChange(e,t.id,"instant")}"
|
|
1215
|
+
/>
|
|
1216
|
+
<span class="period-checkbox-label">Instant</span>
|
|
1217
|
+
</label>
|
|
1218
|
+
</div>
|
|
1219
|
+
</div>
|
|
1220
|
+
`:""}
|
|
1221
|
+
|
|
1222
|
+
<div class="period-controls">
|
|
1223
|
+
<p class="period-controls-label">Additional Options:</p>
|
|
1224
|
+
<div class="period-checkboxes">
|
|
1225
|
+
<label class="period-checkbox-item">
|
|
1226
|
+
<input
|
|
1227
|
+
type="checkbox"
|
|
1228
|
+
class="period-checkbox"
|
|
1229
|
+
.checked="${n.showPreviousYear}"
|
|
1230
|
+
@change="${e=>this._handlePeriodCheckboxChange(e,t.id,"previousYear")}"
|
|
1231
|
+
/>
|
|
1232
|
+
<span class="period-checkbox-label">Show previous year</span>
|
|
1233
|
+
</label>
|
|
1234
|
+
</div>
|
|
1235
|
+
</div>
|
|
1222
1236
|
</div>
|
|
1223
1237
|
</div>
|
|
1224
1238
|
`})}
|
|
1225
1239
|
`}
|
|
1226
1240
|
</div>
|
|
1227
1241
|
|
|
1228
|
-
|
|
1229
|
-
${t} of ${i} roles selected
|
|
1230
|
-
${r&&o!==i?e.html`
|
|
1231
|
-
<br><small>(${this._getSelectedFilteredCount()} of ${o} filtered roles selected)</small>
|
|
1232
|
-
`:""}
|
|
1233
|
-
</div>
|
|
1242
|
+
|
|
1234
1243
|
</div>
|
|
1235
1244
|
|
|
1236
1245
|
<!-- Dialog Actions -->
|
|
@@ -1485,6 +1494,44 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1485
1494
|
margin-bottom: 4px;
|
|
1486
1495
|
}
|
|
1487
1496
|
|
|
1497
|
+
.period-controls {
|
|
1498
|
+
margin-top: 8px;
|
|
1499
|
+
padding: 8px;
|
|
1500
|
+
background: var(--jupiter-background-light, #f8f9fa);
|
|
1501
|
+
border-radius: 4px;
|
|
1502
|
+
border: 1px solid var(--jupiter-border-color, #e0e0e0);
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
.period-controls-label {
|
|
1506
|
+
font-size: 12px;
|
|
1507
|
+
font-weight: 600;
|
|
1508
|
+
color: var(--jupiter-text-primary, #333);
|
|
1509
|
+
margin: 0 0 6px 0;
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
.period-checkboxes {
|
|
1513
|
+
display: flex;
|
|
1514
|
+
gap: 16px;
|
|
1515
|
+
flex-wrap: wrap;
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
.period-checkbox-item {
|
|
1519
|
+
display: flex;
|
|
1520
|
+
align-items: center;
|
|
1521
|
+
gap: 6px;
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
.period-checkbox {
|
|
1525
|
+
cursor: pointer;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
.period-checkbox-label {
|
|
1529
|
+
font-size: 13px;
|
|
1530
|
+
color: var(--jupiter-text-primary, #333);
|
|
1531
|
+
cursor: pointer;
|
|
1532
|
+
user-select: none;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1488
1535
|
.selected-count {
|
|
1489
1536
|
font-size: 13px;
|
|
1490
1537
|
color: var(--jupiter-text-secondary, #666);
|
|
@@ -1534,58 +1581,175 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1534
1581
|
opacity: 0.6;
|
|
1535
1582
|
cursor: not-allowed;
|
|
1536
1583
|
}
|
|
1537
|
-
`,V([w({type:Boolean,reflect:!0})],exports.JupiterFilterRolesDialog.prototype,"open",2),V([w({type:Array})],exports.JupiterFilterRolesDialog.prototype,"availableRoles",2),V([w({type:Array})],exports.JupiterFilterRolesDialog.prototype,"selectedRoleIds",2),V([S()],exports.JupiterFilterRolesDialog.prototype,"_tempSelectedRoles",2),V([S()],exports.JupiterFilterRolesDialog.prototype,"_searchQuery",2),V([S()],exports.JupiterFilterRolesDialog.prototype,"_filteredRoles",2),exports.JupiterFilterRolesDialog=V([t("jupiter-filter-roles-dialog")],exports.JupiterFilterRolesDialog);var q=Object.defineProperty,K=Object.getOwnPropertyDescriptor,B=(e,t,i,o)=>{for(var r,s=o>1?void 0:o?K(t,i):t,n=e.length-1;n>=0;n--)(r=e[n])&&(s=(o?r(t,i,s):r(s))||s);return o&&s&&q(t,i,s),s};exports.JupiterDynamicForm=class extends e.LitElement{constructor(){super(...arguments),this.config={},this.initialData={},this.disabled=!1,this.readonly=!1,this.periodStartDate="2025-01-01",this.periodEndDate="2025-12-31",this.language="en",this._formData={},this._preservedFormData={},this._typedMemberData={},this._preservedTypedMemberData={},this._columns=[],this._errors=[],this._touched=new Set,this._dirty=!1,this._valid=!0,this._submitted=!1,this._allSections=[],this._selectedRoleIds=[],this._showFilterDialog=!1}connectedCallback(){super.connectedCallback(),this._initializeForm()}updated(e){(e.has("xbrlInput")||e.has("schema"))&&this._initializeForm()}_initializeForm(){var e;if(this.xbrlInput)try{console.log("🔄 Initializing form from XBRL input:",this.xbrlInput),console.log("📅 Using period dates:",this.periodStartDate,"to",this.periodEndDate),console.log("🌐 Using language:",this.language),this._currentSchema=F.buildFormSchema(this.xbrlInput,this.periodStartDate,this.periodEndDate,this.language),console.log("✅ Generated schema with sections:",this._currentSchema.sections.length),this._allSections=[...this._currentSchema.sections],0===this._selectedRoleIds.length&&(this._selectedRoleIds=[],this._showFilterDialog=!0,this._currentSchema={...this._currentSchema,sections:[]}),this._applyRoleFilter(),this._columns=[{id:"base",title:"Value",description:"Base values for concepts",type:"base",order:0,removable:!1}]}catch(t){console.error("❌ Error building form from XBRL input:",t),this._currentSchema=this._getDefaultSchema(),this._allSections=[],this._selectedRoleIds=[],this._columns=this._getDefaultColumns()}else this.schema?(this._currentSchema=this.schema,this._allSections=[...this.schema.sections],this._selectedRoleIds=this._allSections.map(e=>e.id),this._columns=this._getDefaultColumns()):(this._currentSchema=this._getDefaultSchema(),this._allSections=[],this._selectedRoleIds=[],this._columns=this._getDefaultColumns());this._formData={...this.initialData},(null==(e=this.xbrlInput)?void 0:e.initialData)&&(this._formData={...this._formData,...this.xbrlInput.initialData}),this._validateForm()}_getDefaultSchema(){return{version:"1.0",formId:"default-form",title:"Dynamic Form",description:"Please provide form schema or XBRL input data",sections:[]}}_getDefaultColumns(){return[{id:"base",title:"Value",description:"Base values for concepts",type:"base",order:0,removable:!1}]}_applyRoleFilter(){if(!this._currentSchema||!this._allSections.length)return;if(console.log(`🔍 Applying role filter: ${this._selectedRoleIds.length} selected out of ${this._allSections.length} total`),0===this._selectedRoleIds.length)return console.log("📝 No roles selected - showing empty form"),void(this._currentSchema={...this._currentSchema,sections:[]});this._preserveDataForHiddenSections();const e=this._allSections.filter(e=>this._selectedRoleIds.includes(e.id));this._restoreDataForVisibleSections(e),this._currentSchema={...this._currentSchema,sections:e}}_preserveDataForHiddenSections(){var e;const t=((null==(e=this._currentSchema)?void 0:e.sections.map(e=>e.id))||[]).filter(e=>!this._selectedRoleIds.includes(e));t.forEach(e=>{const t=this._allSections.find(t=>t.id===e);t&&this._preserveSectionData(t)}),console.log(`📦 Preserved data for ${t.length} hidden sections:`,t)}_restoreDataForVisibleSections(e){e.forEach(e=>{this._restoreSectionData(e)}),console.log(`🔄 Restored data for ${e.length} visible sections`)}_preserveSectionData(e){e.concepts.forEach(e=>{this._preserveConceptData(e)})}_preserveConceptData(e){this._formData[e.id]&&(this._preservedFormData[e.id]={...this._formData[e.id]},console.log(`💾 Preserved form data for concept: ${e.id}`)),e.fields.forEach(e=>{this._typedMemberData[e.columnId]&&(this._preservedTypedMemberData[e.columnId]={...this._typedMemberData[e.columnId]},console.log(`💾 Preserved typed data for column: ${e.columnId}`))}),e.children&&e.children.forEach(e=>{this._preserveConceptData(e)})}_restoreSectionData(e){e.concepts.forEach(e=>{this._restoreConceptData(e)})}_restoreConceptData(e){this._preservedFormData[e.id]&&(this._formData[e.id]={...this._preservedFormData[e.id]},console.log(`🔄 Restored form data for concept: ${e.id}`)),e.fields.forEach(e=>{this._preservedTypedMemberData[e.columnId]&&(this._typedMemberData[e.columnId]={...this._preservedTypedMemberData[e.columnId]},console.log(`🔄 Restored typed data for column: ${e.columnId}`))}),e.children&&e.children.forEach(e=>{this._restoreConceptData(e)})}_shouldShowFilterButton(){return!0}_handleFilterRolesClick(){this._showFilterDialog=!0}_handleFilterDialogCancel(){this._showFilterDialog=!1,console.log(`🚫 Filter dialog cancelled. Current selection: ${this._selectedRoleIds.length}/${this._allSections.length}`)}_handleRoleFilterApply(e){const{selectedRoleIds:t}=e.detail;this._selectedRoleIds=t,this._applyRoleFilter(),this._showFilterDialog=!1,console.log(`🎯 Applied role filter: ${t.length}/${this._allSections.length} roles selected`),this.dispatchEvent(new CustomEvent("roles-filter-changed",{detail:{selectedRoleIds:t,totalRoles:this._allSections.length,visibleRoles:t.length},bubbles:!0}))}_validateForm(){var e;const t=[],i=this._currentSchema;if(i){for(const o of i.sections)for(const i of o.concepts)for(const o of i.fields){const r=null==(e=this._formData[i.id])?void 0:e[o.columnId],s=C.validateField(o.id,i.id,o.columnId,r,o.type,o.validation||[]);t.push(...s)}this._errors=t,this._valid=0===t.filter(e=>"error"===e.severity).length}}_handleFieldChange(e){const{fieldId:t,conceptId:i,columnId:o,value:r}=e.detail,s={...this._formData};s[i]||(s[i]={});const n=s[i][o];s[i]={...s[i],[o]:r},this._formData=s,this._touched.add(`${i}-${o}`),this._dirty=!0,this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("field-change",{detail:{fieldId:t,conceptId:i,columnId:o,value:r,oldValue:n},bubbles:!0}))}_generateUniqueConceptKey(e,t){return`${e}::${t}`}_extractOriginalConceptId(e){const t=e.split("::");return t.length>1?t[1]:e}_handleTypedMemberChange(e){const{columnId:t,axisId:i,value:o}=e.detail;console.log(`🔍 [DynamicForm] Typed member change: columnId=${t}, axisId=${i}, value=${o}`);const r={...this._typedMemberData};r[t]||(r[t]={}),r[t]={...r[t],[i]:o},this._typedMemberData=r,this._dirty=!0,this.requestUpdate(),this.dispatchEvent(new CustomEvent("typed-member-change",{detail:{columnId:t,axisId:i,value:o},bubbles:!0}))}_handleSectionExpand(e){this.dispatchEvent(new CustomEvent("section-expand",{detail:e.detail,bubbles:!0}))}_handleConceptExpand(e){this.dispatchEvent(new CustomEvent("concept-expand",{detail:e.detail,bubbles:!0}))}_handleColumnRemove(e){const{columnId:t,sectionId:i}=e.detail;if(this._currentSchema&&i){const e=this._currentSchema.sections.find(e=>e.id===i);e&&e.columns&&(e.columns=e.columns.filter(e=>e.id!==t))}else this._columns=this._columns.filter(e=>e.id!==t),this._currentSchema&&this._currentSchema.sections.forEach(e=>{e.columns&&(e.columns=e.columns.filter(e=>e.id!==t))});this._removeColumnData(t,i),this._dirty=!0,this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-remove",{detail:{columnId:t,sectionId:i},bubbles:!0}))}_handleColumnAddRequest(e){const{sectionId:t,columnRequest:i}=e.detail;this._addColumnFromRequest(i,t)}_getAvailableDimensionsForSection(e){var t,i,o;if(console.log(`🔍 Getting dimensions for section: ${e}`),!(null==(i=null==(t=this.xbrlInput)?void 0:t.hypercubes)?void 0:i[0]))return console.log("❌ No hypercubes data available"),[];const r=this.xbrlInput.hypercubes[0].roles.find(t=>t.roleId===e);if(!(null==(o=null==r?void 0:r.items)?void 0:o.length))return console.log(`❌ No hypercube items found for role: ${e}`),[];console.log(`✅ Found hypercube role with ${r.items.length} items`);const s=[];return r.items.forEach(e=>{e.dimensions&&e.dimensions.length>0&&e.dimensions.forEach(e=>{var t;if(!s.find(t=>t.id===e.id)){const i=(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName,o={id:e.id,conceptName:e.conceptName,axisLabel:i};e.members&&e.members.length>0&&(o.members=e.members.map(e=>{var t,i;return{id:e.id,label:(null==(i=null==(t=e.labels)?void 0:t.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:i.label)||e.conceptName||e.id}})),e.typedMember&&(o.typedMember={id:e.typedMember.id,dataType:"string"}),s.push(o)}})}),console.log(`📈 Found ${s.length} dimensions for section ${e}:`,s.map(e=>e.axisLabel)),s}_addColumnFromRequest(e,t){var i,o,r,s,n;const a=`col-${Date.now()}`;let l="",d="";"instant"===e.periodType?(l="Current",d=`Values as of ${e.instantDate}`):"duration"!==e.periodType&&"mixed"!==e.periodType||(l="Current Period",d=`Period: ${e.startDate} to ${e.endDate}`);let c={dimensionId:"period",memberValue:"instant"===e.periodType?`instant-${e.instantDate}`:`duration-${e.startDate}-${e.endDate}`,memberLabel:l};if(e.selectedDimensions&&e.selectedDimensions.length>0){const t=[],i=[];for(const r of e.selectedDimensions)r.isTyped&&r.typedValue?(t.push(`${r.axisLabel}: ${r.typedValue}`),i.push(`${r.axisId}|${r.typedValue}`)):r.memberId&&r.memberLabel&&(t.push(r.memberLabel),i.push(`${r.axisId}|${r.memberId}`));const o="instant"===e.periodType?`(${e.instantDate})`:`(${e.startDate} / ${e.endDate})`;t.length>0&&(l=`${t.join(" | ")} ${o}`,c={dimensionId:a,memberValue:t.join(" | "),memberLabel:t.join(" | "),memberKey:t.join(" | "),dimensionIdKey:i.join("::"),selectedDimensions:e.selectedDimensions},console.log(`📊 Applied selected dimensions to new column: ${c.memberKey}`))}else if(null==(o=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:o[0]){const i=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===t);if(1===(null==(r=null==i?void 0:i.items)?void 0:r.length)){const t=i.items[0];if(1===t.dimensions.length){const i=t.dimensions[0];if(i.members&&i.members.length>0){const t=(null==(s=i.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:s.label)||i.conceptName,o=i.members[0],r=(null==(n=o.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:n.label)||o.conceptName;l=`${r} ${"instant"===e.periodType?`(${e.instantDate})`:`(${e.startDate} / ${e.endDate})`}`,c={dimensionId:a,axisId:i.id,memberId:o.id,memberValue:r,memberLabel:r,axis:t,axisLabel:t,memberKey:`${t} | ${r}`,dimensionIdKey:`${i.id} | ${o.id}`},console.log(`📊 Applied hypercube dimension to new column: ${c.memberKey}`)}}}}const p={id:a,title:l,description:d,type:(c.memberKey,"dimension"),order:this._columns.length,removable:!0,dimensionData:c};if(e.selectedDimensions&&e.selectedDimensions.length>0){const t={};let i=!1;for(const o of e.selectedDimensions)o.isTyped&&(t[o.axisId]=o.typedValue||"",i=!0,console.log(`💾 Initializing typed member data: ${o.axisLabel} = "${o.typedValue||"(empty - will be entered in column header)"}"`));i&&(this._typedMemberData[a]=t,p.dimensionData&&(p.dimensionData.hasTypedMembers=!0,p.dimensionData.typedMembers=e.selectedDimensions.filter(e=>e.isTyped).map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,typedMemberId:e.axisId,memberLabel:e.axisLabel})),console.log("� Added typed members to column dimension data:",p.dimensionData.typedMembers)),console.log(`� Initialized typed member data for column ${a}:`,t))}if(this._currentSchema){const e=this._currentSchema.sections.find(e=>e.id===t);e&&(e.columns||(e.columns=[...this._columns]),e.columns=[...e.columns,p])}this._replicateFieldsForNewColumn(a,e,t),this._dirty=!0,this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-add",{detail:{column:p},bubbles:!0}))}_removeColumnData(e,t){if(this._currentSchema)if(t){const i=this._currentSchema.sections.find(e=>e.id===t);i&&this._removeColumnDataFromConcepts(i.concepts,e)}else for(const i in this._formData)void 0!==this._formData[i][e]&&delete this._formData[i][e]}_removeColumnDataFromConcepts(e,t){e.forEach(e=>{this._formData[e.id]&&void 0!==this._formData[e.id][t]&&delete this._formData[e.id][t],e.fields&&(e.fields=e.fields.filter(e=>e.columnId!==t)),e.children&&this._removeColumnDataFromConcepts(e.children,t)})}_shouldCreateFieldForConcept(e,t){if(e.abstract)return!1;if(e.periodType){if("instant"===t.periodType&&"instant"!==e.periodType)return!1;if("duration"===t.periodType&&"duration"!==e.periodType)return!1}return!0}_replicateFieldsForNewColumn(e,t,i){if(!this._currentSchema)return;const o=new F,r=this._currentSchema.sections.find(e=>e.id===i);r&&this._replicateFieldsForSection(r.concepts,e,t,o)}_replicateFieldsForSection(e,t,i,o){e.forEach(e=>{var r;if(this._shouldCreateFieldForConcept(e,i)){const o=null==(r=e.fields)?void 0:r[0];let s;s=o?{id:`${e.id}_${t}`,conceptId:e.id,columnId:t,type:o.type,label:o.label,placeholder:o.placeholder,required:o.required,disabled:o.disabled,validation:o.validation,defaultValue:o.defaultValue,periodStartDate:"instant"===i.periodType?i.instantDate:i.startDate,periodEndDate:"instant"===i.periodType?i.instantDate:i.endDate}:{id:`${e.id}_${t}`,conceptId:e.id,columnId:t,type:"text",label:e.label||e.name,placeholder:`Enter ${e.name}`,required:!1,disabled:!1,validation:[],defaultValue:"",periodStartDate:"instant"===i.periodType?i.instantDate:i.startDate,periodEndDate:"instant"===i.periodType?i.instantDate:i.endDate},e.fields||(e.fields=[]),e.fields.push(s)}e.children&&this._replicateFieldsForSection(e.children,t,i,o)})}_addColumn(){const e={id:`dim-${Date.now()}`,title:`Dimension ${this._columns.length}`,description:"Additional dimension column",type:"dimension",order:this._columns.length,removable:!0,dimensionData:{dimensionId:"custom",memberValue:"default",memberLabel:"Default Member"}};this._columns=[...this._columns,e],this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-add",{detail:{column:e},bubbles:!0}))}_handleSubmit(){console.log("📝 Form submission started..."),this._submitted=!0,this._validateForm();const e=this._generateSubmissionData();console.log("📊 Form Submission Data:",JSON.stringify(e,null,2)),this.dispatchEvent(new CustomEvent("form-submit",{detail:{data:this._formData,submissionData:e,valid:this._valid,errors:this._errors},bubbles:!0})),console.log("✅ Form submit event dispatched")}_handleSaveDraft(){const e=this._generateSubmissionData();this.dispatchEvent(new CustomEvent("form-save-draft",{detail:{data:this._formData,draftData:e,valid:this._valid,errors:this._errors},bubbles:!0}))}_generateSubmissionData(){const e=[];if(!this._currentSchema)return e;this._currentSchema.sections.forEach(t=>{this._processConceptsForSubmission(t.concepts,e,t)}),this._includePreservedDataInSubmission(e);return this._removeDuplicateSubmissions(e)}_includePreservedDataInSubmission(e){Object.keys(this._preservedFormData).forEach(t=>{const i=this._preservedFormData[t];i&&Object.keys(i).forEach(o=>{const r=i[o];if(null!=r&&""!==r){const i=this._findConceptInAllSections(t);if(i){const s=this._findSectionForConcept(t);this._addConceptDataToSubmission(i,o,r,e,s||void 0)}}})}),console.log(`📤 Included preserved data in submission. Total entries: ${e.length}`)}_findConceptInAllSections(e){for(const t of this._allSections){const i=this._findConceptInSection(t.concepts,e);if(i)return i}return null}_findConceptInSection(e,t){for(const i of e){if(i.id===t)return i;if(i.children){const e=this._findConceptInSection(i.children,t);if(e)return e}}return null}_findSectionForConcept(e){for(const t of this._allSections){if(this._findConceptInSection(t.concepts,e))return t}return null}_addConceptDataToSubmission(e,t,i,o,r){var s;const n=e.fields.find(e=>e.columnId===t);if(!n)return;const a="instant"===e.periodType,l={conceptId:e.originalConceptId||e.id,value:i,period:{type:e.periodType||"duration",...a?{date:n.periodStartDate||this.periodStartDate}:{startDate:n.periodStartDate||this.periodStartDate,endDate:n.periodEndDate||this.periodEndDate}}},d=this._findColumnByIdInAllSections(t);(null==(s=null==d?void 0:d.dimensionData)?void 0:s.memberLabel)&&(l.dimension=d.dimensionData.memberLabel),o.push(l)}_findColumnByIdInAllSections(e){for(const t of this._allSections)if(t.columns){const i=t.columns.find(t=>t.id===e);if(i)return i}}_removeDuplicateSubmissions(e){const t=new Map;return e.forEach(e=>{const i=`${e.conceptId}_${e.value}_${e.dimension||"no-dimension"}`;t.has(i)||t.set(i,e)}),Array.from(t.values())}_findColumnById(e){if(this._currentSchema)for(const t of this._currentSchema.sections)if(t.columns){const i=t.columns.find(t=>t.id===e);if(i)return i}}_findColumnByIdInSection(e,t){if(null==t?void 0:t.columns)return t.columns.find(t=>t.id===e)}_getTypedMemberNameForAxis(e,t){var i,o,r,s;if(!(null==(o=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:o[0]))return null;const n=null==t?void 0:t.id;if(!n)return null;const a=null==(r=this.xbrlInput.hypercubes[0].roles)?void 0:r.find(e=>e.roleId===n);if(!(null==a?void 0:a.items))return null;for(const l of a.items)if(l.dimensions){const t=l.dimensions.find(t=>t.id===e);if(null==(s=null==t?void 0:t.typedMember)?void 0:s.id)return t.typedMember.id}return null}_doesConceptApplyToTypedDimension(e,t,i){var o,r,s;if(!(null==(r=null==(o=this.xbrlInput)?void 0:o.hypercubes)?void 0:r[0]))return!1;const n=null==t?void 0:t.id;if(!n)return!1;const a=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===n);if(!(null==(s=null==a?void 0:a.items)?void 0:s.length))return!1;for(const l of a.items){const t=e.originalConceptId||e.id;if(l.conceptIds&&l.conceptIds.includes(t)){const e=l.dimensions.some(e=>e.typedMember);return console.log(`🔍 [DynamicForm] Concept ${t} found in hypercube item. Has typed dimensions:`,e),e}}return console.log(`🔍 [DynamicForm] Concept ${e.originalConceptId||e.id} not found in any hypercube items for role ${n}`),!1}_getApplicableTypedDimensions(e,t){var i,o,r;if(!(null==(o=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:o[0])||!(null==t?void 0:t.id))return[];const s=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===t.id);if(!(null==(r=null==s?void 0:s.items)?void 0:r.length))return[];const n=e.originalConceptId||e.id;for(const a of s.items)if(a.conceptIds&&a.conceptIds.includes(n)){const e=a.dimensions.filter(e=>e.typedMember).map(e=>e.id);return console.log(`🔍 [DynamicForm] Found applicable typed dimensions for concept ${n}:`,e),e}return[]}_processConceptsForSubmission(e,t,i){const o="Toelichting op de geconsolideerde jaarrekening - Financiële vaste activa: Deelnemingen: Volledig geconsolideerd: Specificatie",r=(null==i?void 0:i.title)||"Unknown";e.forEach(e=>{r===o&&(console.warn(`[DUPLICATE DEBUG] Processing concept ${e.originalConceptId||e.id} in target role`),e.fields&&(console.warn(`[DUPLICATE DEBUG] Concept has ${e.fields.length} fields`),e.fields.forEach((t,i)=>{var o;console.warn(`[DUPLICATE DEBUG] Field ${i}: columnId=${t.columnId}, current value=${null==(o=this._formData[e.id])?void 0:o[t.columnId]}`)}))),e.fields&&e.fields.length>1&&(console.log(`🔍 [DEBUG] Processing concept ${e.originalConceptId}, fields count: ${e.fields.length}`),e.fields.forEach((t,i)=>{var o;console.log(` Field ${i}: columnId=${t.columnId}, value=${null==(o=this._formData[e.id])?void 0:o[t.columnId]}`)})),e.fields&&e.fields.length>0&&e.fields.forEach(s=>{var n,a;const l=this._formData[e.id],d=null==l?void 0:l[s.columnId];if(null!=d&&""!==d){r===o&&console.warn(`[DUPLICATE DEBUG] Creating submission entry for concept ${e.originalConceptId||e.id}, field columnId=${s.columnId}, value=${d}`);const l=this._findColumnByIdInSection(s.columnId,i);console.log(`🔍 [DynamicForm] Processing field for concept ${e.originalConceptId||e.id}, field columnId: ${s.columnId}, found column in section ${null==i?void 0:i.id}: ${!!l}, column title: ${null==l?void 0:l.title}`);const c={conceptId:e.id,value:d,period:{type:e.periodType||"duration"}};if("instant"===e.periodType?c.period.date=s.periodStartDate||this.periodStartDate:(c.period.startDate=s.periodStartDate||this.periodStartDate,c.period.endDate=s.periodEndDate||this.periodEndDate),"dimension"===(null==l?void 0:l.type)&&(null==(n=l.dimensionData)?void 0:n.dimensionIdKey)?(c.dimension=l.dimensionData.dimensionIdKey,console.log(`🔍 [DynamicForm] Using dimension key from field's column (${s.columnId}):`,l.dimensionData.dimensionIdKey)):console.log(`🔍 [DynamicForm] No dimension data found for field column ${s.columnId}. Column type: ${null==l?void 0:l.type}, has dimensionData: ${!!(null==l?void 0:l.dimensionData)}`),this._typedMemberData[s.columnId]){const t=this._getApplicableTypedDimensions(e,i);if(console.log(`🔍 [DynamicForm] Concept ${e.id} applicable typed dimensions:`,t),t.length>0){const e={},o=this._typedMemberData[s.columnId];t.forEach(t=>{if(o[t]){const r=this._getTypedMemberNameForAxis(t,i);e[t]={value:o[t],memberName:r||"Unknown"}}}),Object.keys(e).length>0?(c.typedMembers=e,console.log("🔍 [DynamicForm] Adding filtered typed members to submission:",e)):console.log("🔍 [DynamicForm] No typed member values found for applicable dimensions:",t)}else console.log(`🔍 [DynamicForm] Skipping typed members for concept ${e.id} - not applicable to this hypercube`)}else console.log(`🔍 [DynamicForm] No typed member data found for column ${s.columnId}. Available columns:`,Object.keys(this._typedMemberData)),l&&console.log("🔍 [DynamicForm] Column details:",{id:l.id,type:l.type,hasTypedMembers:null==(a=l.dimensionData)?void 0:a.hasTypedMembers,dimensionData:l.dimensionData});r===o&&console.warn("[DUPLICATE DEBUG] Final submission entry:",c),t.push(c)}}),e.children&&this._processConceptsForSubmission(e.children,t,i)})}_handleReset(){this._formData={...this.initialData},this._touched.clear(),this._dirty=!1,this._submitted=!1,this._preservedFormData={},this._preservedTypedMemberData={},console.log("🔄 Form reset - all data and preserved data cleared"),this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("form-reset",{detail:{},bubbles:!0}))}_getFormState(){return{data:this._formData,errors:this._errors,touched:this._touched,dirty:this._dirty,valid:this._valid,submitted:this._submitted}}getData(){return{...this._formData}}setData(e){this._formData={...e},this._dirty=!0,this._validateForm(),this.requestUpdate()}validate(){return this._validateForm(),this._valid}reset(){this._handleReset()}getState(){return this._getFormState()}render(){const t=this._errors.filter(e=>"error"===e.severity).length,i=this.config||{},o=!1!==i.showValidationSummary&&t>0&&this._submitted,r=this._currentSchema;return r?e.html`
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
<div class="form-header">
|
|
1541
|
-
<h1 class="form-title">${r.title}</h1>
|
|
1542
|
-
${r.description?e.html`
|
|
1543
|
-
<p class="form-description">${r.description}</p>
|
|
1544
|
-
`:""}
|
|
1584
|
+
`,H([w({type:Boolean,reflect:!0})],exports.JupiterFilterRolesDialog.prototype,"open",2),H([w({type:Array})],exports.JupiterFilterRolesDialog.prototype,"availableRoles",2),H([w({type:Array})],exports.JupiterFilterRolesDialog.prototype,"selectedRoleIds",2),H([w({type:Object})],exports.JupiterFilterRolesDialog.prototype,"periodPreferences",2),H([S()],exports.JupiterFilterRolesDialog.prototype,"_tempSelectedRoles",2),H([S()],exports.JupiterFilterRolesDialog.prototype,"_searchQuery",2),H([S()],exports.JupiterFilterRolesDialog.prototype,"_filteredRoles",2),H([S()],exports.JupiterFilterRolesDialog.prototype,"_tempPeriodPreferences",2),exports.JupiterFilterRolesDialog=H([t("jupiter-filter-roles-dialog")],exports.JupiterFilterRolesDialog);var Q=Object.defineProperty,G=Object.getOwnPropertyDescriptor,X=(e,t,i,r)=>{for(var o,n=r>1?void 0:r?G(t,i):t,s=e.length-1;s>=0;s--)(o=e[s])&&(n=(r?o(t,i,n):o(n))||n);return r&&n&&Q(t,i,n),n};exports.JupiterDynamicForm=class extends e.LitElement{constructor(){super(...arguments),this.config={},this.initialData={},this.disabled=!1,this.readonly=!1,this.periodStartDate="2025-01-01",this.periodEndDate="2025-12-31",this.language="en",this.display="accordion",this.mode="inputForm",this.financialStatementsTypeAxis=[],this._formData={},this._preservedFormData={},this._typedMemberData={},this._preservedTypedMemberData={},this._columns=[],this._errors=[],this._touched=new Set,this._dirty=!1,this._valid=!0,this._submitted=!1,this._allSections=[],this._selectedRoleIds=[],this._showFilterDialog=!1,this._periodPreferences={},this._activeSidePanelRoleId=null,this._adminRoleConfigs={}}connectedCallback(){super.connectedCallback(),this._initializeForm()}updated(e){e.has("financialStatementsTypeAxis")&&console.log("🔄 financialStatementsTypeAxis changed:",this.financialStatementsTypeAxis),(e.has("xbrlInput")||e.has("schema")||e.has("language")||e.has("periodStartDate")||e.has("periodEndDate")||e.has("financialStatementsTypeAxis"))&&this._initializeForm()}_initializeForm(){var e;if(this.xbrlInput)try{console.log("🔄 Initializing form from XBRL input:",this.xbrlInput),console.log("📅 Using period dates:",this.periodStartDate,"to",this.periodEndDate),console.log("🌐 Using language:",this.language),this._initializePeriodPreferencesFromData(),console.log("⚙️ Using period preferences:",this._periodPreferences),this._currentSchema=T.buildFormSchema(this.xbrlInput,this.periodStartDate,this.periodEndDate,this.language,this._periodPreferences),console.log("✅ Generated schema with sections:",this._currentSchema.sections.length),this._allSections=[...this._currentSchema.sections],this.financialStatementsTypeAxis&&this.financialStatementsTypeAxis.length>0&&(console.log("🔍 Applying financialStatementsTypeAxis filter:",this.financialStatementsTypeAxis),console.log("📊 Sections before filter:",this._allSections.length),this._allSections=this._filterRolesByFinancialStatementsType(this._allSections),console.log("📊 Sections after filter:",this._allSections.length)),0===this._selectedRoleIds.length&&(this._selectedRoleIds=this._allSections.map(e=>e.id),console.log("✅ Auto-selected all roles:",this._selectedRoleIds.length)),this._applyRoleFilter(),this._columns=[{id:"base",title:"Value",description:"Base values for concepts",type:"base",order:0,removable:!1}]}catch(t){console.error("❌ Error building form from XBRL input:",t),this._currentSchema=this._getDefaultSchema(),this._allSections=[],this._selectedRoleIds=[],this._columns=this._getDefaultColumns()}else this.schema?(this._currentSchema=this.schema,this._allSections=[...this.schema.sections],this._selectedRoleIds=this._allSections.map(e=>e.id),this._columns=this._getDefaultColumns()):(this._currentSchema=this._getDefaultSchema(),this._allSections=[],this._selectedRoleIds=[],this._columns=this._getDefaultColumns());this._formData={...this.initialData},(null==(e=this.xbrlInput)?void 0:e.initialData)&&(this._formData={...this._formData,...this.xbrlInput.initialData}),this._validateForm()}_getDefaultSchema(){return{version:"1.0",formId:"default-form",title:"Dynamic Form",description:"Please provide form schema or XBRL input data",sections:[]}}_getDefaultColumns(){return[{id:"base",title:"Value",description:"Base values for concepts",type:"base",order:0,removable:!1}]}_initializePeriodPreferencesFromData(){var e,t,i;if(!(null==(i=null==(t=null==(e=this.xbrlInput)?void 0:e.presentation)?void 0:t[0])?void 0:i.roles))return;const r={};this.xbrlInput.presentation[0].roles.forEach(e=>{const t=!0===e.showPreviousYear,i=void 0===e.instant||!0===e.instant,o=void 0===e.duration||!0===e.duration;r[e.id]={showDuration:o,showInstant:i,showPreviousYear:t}}),this._periodPreferences=r}_applyRoleFilter(){if(!this._currentSchema||!this._allSections.length)return;if(console.log(`🔍 Applying role filter: ${this._selectedRoleIds.length} selected out of ${this._allSections.length} total`),0===this._selectedRoleIds.length)return console.log("📝 No roles selected - showing empty form"),this._currentSchema={...this._currentSchema,sections:[]},void this.requestUpdate();this._preserveDataForHiddenSections();const e=this._allSections.filter(e=>this._selectedRoleIds.includes(e.id));console.log(`📊 Filtered sections: ${e.length} (IDs: ${e.map(e=>e.id).join(", ")})`),this._restoreDataForVisibleSections(e),this._currentSchema={...this._currentSchema,sections:e},console.log(`✅ Schema updated. Current sections count: ${this._currentSchema.sections.length}`),this.requestUpdate()}_filterRolesByFinancialStatementsType(e){var t;if(!this.financialStatementsTypeAxis||0===this.financialStatementsTypeAxis.length)return e;if(!(null==(t=this.xbrlInput)?void 0:t.hypercubes)||0===this.xbrlInput.hypercubes.length)return e;const i=this.xbrlInput.hypercubes[0];return console.log("🔍 Filter values:",this.financialStatementsTypeAxis),e.filter(e=>{var t;const r=null==(t=i.roles)?void 0:t.find(t=>t.roleId===e.id);if(!r||!r.items||0===r.items.length)return console.log(`✅ ${e.title}: No hypercube entry - INCLUDED`),!0;let o=!1,n=!1;for(const i of r.items){if(!i.dimensions||0===i.dimensions.length)continue;const e=i.dimensions.find(e=>{var t;return"bw2-titel9_FinancialStatementsTypeAxis"===e.id||(null==(t=e.conceptName)?void 0:t.includes("FinancialStatementsTypeAxis"))});if(e&&(o=!0,e.members&&e.members.length>0)){if(e.members.some(e=>{if(e.conceptName){const t=e.conceptName.split(":"),i=t.length>1?t[1]:e.conceptName;return this.financialStatementsTypeAxis.some(e=>{const t=e.split(":"),r=t.length>1?t[1]:e;return i===r})}return this.financialStatementsTypeAxis.includes(e.id)})){n=!0;break}}}return!o||n})}_preserveDataForHiddenSections(){var e;((null==(e=this._currentSchema)?void 0:e.sections.map(e=>e.id))||[]).filter(e=>!this._selectedRoleIds.includes(e)).forEach(e=>{const t=this._allSections.find(t=>t.id===e);t&&this._preserveSectionData(t)})}_restoreDataForVisibleSections(e){e.forEach(e=>{this._restoreSectionData(e)}),console.log(`🔄 Restored data for ${e.length} visible sections`)}_preserveSectionData(e){e.concepts.forEach(e=>{this._preserveConceptData(e)})}_preserveConceptData(e){this._formData[e.id]&&(this._preservedFormData[e.id]={...this._formData[e.id]}),e.fields.forEach(e=>{this._typedMemberData[e.columnId]&&(this._preservedTypedMemberData[e.columnId]={...this._typedMemberData[e.columnId]})}),e.children&&e.children.forEach(e=>{this._preserveConceptData(e)})}_restoreSectionData(e){e.concepts.forEach(e=>{this._restoreConceptData(e)})}_restoreConceptData(e){this._preservedFormData[e.id]&&(this._formData[e.id]={...this._preservedFormData[e.id]}),e.fields.forEach(e=>{this._preservedTypedMemberData[e.columnId]&&(this._typedMemberData[e.columnId]={...this._preservedTypedMemberData[e.columnId]})}),e.children&&e.children.forEach(e=>{this._restoreConceptData(e)})}_shouldShowFilterButton(){return!0}_handleFilterRolesClick(){this._showFilterDialog=!0}_handleFilterDialogCancel(){this._showFilterDialog=!1,console.log(`🚫 Filter dialog cancelled. Current selection: ${this._selectedRoleIds.length}/${this._allSections.length}`)}_handleRoleFilterApply(e){const{selectedRoleIds:t,periodPreferences:i}=e.detail;this._selectedRoleIds=t;JSON.stringify(this._periodPreferences)!==JSON.stringify(i)?(this._periodPreferences=i,console.log("📊 Period preferences updated:",this._periodPreferences),this._initializeForm()):this._applyRoleFilter(),this._showFilterDialog=!1,console.log(`🎯 Applied role filter: ${t.length}/${this._allSections.length} roles selected`),this.dispatchEvent(new CustomEvent("roles-filter-changed",{detail:{selectedRoleIds:t,totalRoles:this._allSections.length,visibleRoles:t.length,periodPreferences:i},bubbles:!0}))}_validateForm(){var e;const t=[],i=this._currentSchema;if(i){for(const r of i.sections)for(const i of r.concepts)for(const r of i.fields){const o=null==(e=this._formData[i.id])?void 0:e[r.columnId],n=C.validateField(r.id,i.id,r.columnId,o,r.type,r.validation||[]);t.push(...n)}this._errors=t,this._valid=0===t.filter(e=>"error"===e.severity).length}}_handleFieldChange(e){const{fieldId:t,conceptId:i,columnId:r,value:o}=e.detail,n={...this._formData};n[i]||(n[i]={});const s=n[i][r];n[i]={...n[i],[r]:o},this._formData=n,this._touched.add(`${i}-${r}`),this._dirty=!0,this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("field-change",{detail:{fieldId:t,conceptId:i,columnId:r,value:o,oldValue:s},bubbles:!0}))}_generateUniqueConceptKey(e,t){return`${e}::${t}`}_extractOriginalConceptId(e){const t=e.split("::");return t.length>1?t[1]:e}_handleTypedMemberChange(e){const{columnId:t,axisId:i,value:r}=e.detail;console.log(`🔍 [DynamicForm] Typed member change: columnId=${t}, axisId=${i}, value=${r}`);const o={...this._typedMemberData};o[t]||(o[t]={}),o[t]={...o[t],[i]:r},this._typedMemberData=o,this._dirty=!0,this.requestUpdate(),this.dispatchEvent(new CustomEvent("typed-member-change",{detail:{columnId:t,axisId:i,value:r},bubbles:!0}))}_handleSectionExpand(e){this.dispatchEvent(new CustomEvent("section-expand",{detail:e.detail,bubbles:!0}))}_handleConceptExpand(e){this.dispatchEvent(new CustomEvent("concept-expand",{detail:e.detail,bubbles:!0}))}_handleColumnRemove(e){const{columnId:t,sectionId:i}=e.detail;if(this._currentSchema&&i){const e=this._currentSchema.sections.find(e=>e.id===i);e&&e.columns&&(e.columns=e.columns.filter(e=>e.id!==t))}else this._columns=this._columns.filter(e=>e.id!==t),this._currentSchema&&this._currentSchema.sections.forEach(e=>{e.columns&&(e.columns=e.columns.filter(e=>e.id!==t))});this._removeColumnData(t,i),this._dirty=!0,this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-remove",{detail:{columnId:t,sectionId:i},bubbles:!0}))}_handleColumnAddRequest(e){const{sectionId:t,columnRequest:i}=e.detail;this._addColumnFromRequest(i,t)}_getAvailableDimensionsForSection(e){var t,i,r;if(!(null==(i=null==(t=this.xbrlInput)?void 0:t.hypercubes)?void 0:i[0]))return[];const o=this.xbrlInput.hypercubes[0].roles.find(t=>t.roleId===e);if(!(null==(r=null==o?void 0:o.items)?void 0:r.length))return console.log(`❌ No hypercube items found for role: ${e}`),[];const n=[];return o.items.forEach(e=>{e.dimensions&&e.dimensions.length>0&&e.dimensions.forEach(e=>{var t;if(!n.find(t=>t.id===e.id)){const i=(null==(t=e.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:t.label)||e.conceptName,r={id:e.id,conceptName:e.conceptName,axisLabel:i};e.members&&e.members.length>0&&(r.members=e.members.map(e=>{var t,i;return{id:e.id,label:(null==(i=null==(t=e.labels)?void 0:t.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:i.label)||e.conceptName||e.id}})),e.typedMember&&(r.typedMember={id:e.typedMember.id,dataType:"string"}),n.push(r)}})}),n}_addColumnFromRequest(e,t){var i,r,o,n,s;const a=`col-${Date.now()}`;let l="",d="";"instant"===e.periodType?(l=e.instantDate||"",d=""):"duration"!==e.periodType&&"mixed"!==e.periodType||(l=`${e.startDate} / ${e.endDate}`,d="");let c={dimensionId:"period",memberValue:"instant"===e.periodType?`instant-${e.instantDate}`:`duration-${e.startDate}-${e.endDate}`,memberLabel:l};if(e.selectedDimensions&&e.selectedDimensions.length>0){const t=[],i=[];for(const o of e.selectedDimensions)o.isTyped&&o.typedValue?(t.push(`${o.axisLabel}: ${o.typedValue}`),i.push(`${o.axisId}|${o.typedValue}`)):o.memberId&&o.memberLabel&&(t.push(o.memberLabel),i.push(`${o.axisId}|${o.memberId}`));const r="instant"===e.periodType?`(${e.instantDate})`:`(${e.startDate} / ${e.endDate})`;t.length>0&&(l=`${t.join(" | ")} ${r}`,c={dimensionId:a,memberValue:t.join(" | "),memberLabel:t.join(" | "),memberKey:t.join(" | "),dimensionIdKey:i.join("::"),selectedDimensions:e.selectedDimensions},console.log(`📊 Applied selected dimensions to new column: ${c.memberKey}`))}else if(null==(r=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:r[0]){const i=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===t);if(1===(null==(o=null==i?void 0:i.items)?void 0:o.length)){const t=i.items[0];if(1===t.dimensions.length){const i=t.dimensions[0];if(i.members&&i.members.length>0){const t=(null==(n=i.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:n.label)||i.conceptName,r=i.members[0],o=(null==(s=r.labels.find(e=>"http://www.xbrl.org/2003/role/label"===e.role))?void 0:s.label)||r.conceptName;l=`${o} ${"instant"===e.periodType?`(${e.instantDate})`:`(${e.startDate} / ${e.endDate})`}`,c={dimensionId:a,axisId:i.id,memberId:r.id,memberValue:o,memberLabel:o,axis:t,axisLabel:t,memberKey:`${t} | ${o}`,dimensionIdKey:`${i.id} | ${r.id}`},console.log(`📊 Applied hypercube dimension to new column: ${c.memberKey}`)}}}}const p={id:a,title:l,description:d,type:(c.memberKey,"dimension"),order:this._columns.length,removable:!0,dimensionData:c};if(e.selectedDimensions&&e.selectedDimensions.length>0){const t={};let i=!1;for(const r of e.selectedDimensions)r.isTyped&&(t[r.axisId]=r.typedValue||"",i=!0);i&&(this._typedMemberData[a]=t,p.dimensionData&&(p.dimensionData.hasTypedMembers=!0,p.dimensionData.typedMembers=e.selectedDimensions.filter(e=>e.isTyped).map(e=>({axisId:e.axisId,axisLabel:e.axisLabel,typedMemberId:e.axisId,memberLabel:e.axisLabel}))))}if(this._currentSchema){const e=this._currentSchema.sections.find(e=>e.id===t);e&&(e.columns||(e.columns=[...this._columns]),e.columns=[...e.columns,p])}this._replicateFieldsForNewColumn(a,e,t),this._dirty=!0,this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-add",{detail:{column:p},bubbles:!0}))}_removeColumnData(e,t){if(this._currentSchema)if(t){const i=this._currentSchema.sections.find(e=>e.id===t);i&&this._removeColumnDataFromConcepts(i.concepts,e)}else for(const i in this._formData)void 0!==this._formData[i][e]&&delete this._formData[i][e]}_removeColumnDataFromConcepts(e,t){e.forEach(e=>{this._formData[e.id]&&void 0!==this._formData[e.id][t]&&delete this._formData[e.id][t],e.fields&&(e.fields=e.fields.filter(e=>e.columnId!==t)),e.children&&this._removeColumnDataFromConcepts(e.children,t)})}_shouldCreateFieldForConcept(e,t){if(e.abstract)return!1;if(e.periodType){if("instant"===t.periodType&&"instant"!==e.periodType)return!1;if("duration"===t.periodType&&"duration"!==e.periodType)return!1}return!0}_replicateFieldsForNewColumn(e,t,i){if(!this._currentSchema)return;const r=new T,o=this._currentSchema.sections.find(e=>e.id===i);o&&this._replicateFieldsForSection(o.concepts,e,t,r)}_replicateFieldsForSection(e,t,i,r){e.forEach(e=>{var o;if(this._shouldCreateFieldForConcept(e,i)){const r=null==(o=e.fields)?void 0:o[0];let n;n=r?{id:`${e.id}_${t}`,conceptId:e.id,columnId:t,type:r.type,label:r.label,placeholder:r.placeholder,required:r.required,disabled:r.disabled,validation:r.validation,defaultValue:r.defaultValue,periodStartDate:"instant"===i.periodType?i.instantDate:i.startDate,periodEndDate:"instant"===i.periodType?i.instantDate:i.endDate}:{id:`${e.id}_${t}`,conceptId:e.id,columnId:t,type:"text",label:e.label||e.name,placeholder:`Enter ${e.name}`,required:!1,disabled:!1,validation:[],defaultValue:"",periodStartDate:"instant"===i.periodType?i.instantDate:i.startDate,periodEndDate:"instant"===i.periodType?i.instantDate:i.endDate},e.fields||(e.fields=[]),e.fields.push(n)}e.children&&this._replicateFieldsForSection(e.children,t,i,r)})}_addColumn(){const e={id:`dim-${Date.now()}`,title:`Dimension ${this._columns.length}`,description:"Additional dimension column",type:"dimension",order:this._columns.length,removable:!0,dimensionData:{dimensionId:"custom",memberValue:"default",memberLabel:"Default Member"}};this._columns=[...this._columns,e],this.requestUpdate(),this.dispatchEvent(new CustomEvent("column-add",{detail:{column:e},bubbles:!0}))}_handleSubmit(){if(console.log("📝 Form submission started..."),this._submitted=!0,"admin"===this.mode)return void this._handleAdminModeSubmit();this._validateForm();const e=this._generateSubmissionData();console.log("📊 Form Submission Data:",JSON.stringify(e,null,2)),this.dispatchEvent(new CustomEvent("form-submit",{detail:{data:this._formData,submissionData:e,valid:this._valid,errors:this._errors},bubbles:!0})),console.log("✅ Form submit event dispatched")}_handleSaveDraft(){const e=this._generateSubmissionData();this.dispatchEvent(new CustomEvent("form-save-draft",{detail:{data:this._formData,draftData:e,valid:this._valid,errors:this._errors},bubbles:!0}))}_generateSubmissionData(){const e=[];if(!this._currentSchema)return e;this._currentSchema.sections.forEach(t=>{this._processConceptsForSubmission(t.concepts,e,t)}),this._includePreservedDataInSubmission(e);return this._removeDuplicateSubmissions(e)}_includePreservedDataInSubmission(e){Object.keys(this._preservedFormData).forEach(t=>{const i=this._preservedFormData[t];i&&Object.keys(i).forEach(r=>{const o=i[r];if(null!=o&&""!==o){const i=this._findConceptInAllSections(t);if(i){const n=this._findSectionForConcept(t);this._addConceptDataToSubmission(i,r,o,e,n||void 0)}}})}),console.log(`📤 Included preserved data in submission. Total entries: ${e.length}`)}_findConceptInAllSections(e){for(const t of this._allSections){const i=this._findConceptInSection(t.concepts,e);if(i)return i}return null}_findConceptInSection(e,t){for(const i of e){if(i.id===t)return i;if(i.children){const e=this._findConceptInSection(i.children,t);if(e)return e}}return null}_findSectionForConcept(e){for(const t of this._allSections){if(this._findConceptInSection(t.concepts,e))return t}return null}_addConceptDataToSubmission(e,t,i,r,o){var n;const s=e.fields.find(e=>e.columnId===t);if(!s)return;const a="instant"===e.periodType,l=this._findColumnByIdInAllSections(t);alert("hi"),console.log(`🔍 [Submission] Concept: ${e.id}, Column: ${t}, Column Period: ${(null==l?void 0:l.periodStartDate)||"none"} - ${(null==l?void 0:l.periodEndDate)||"none"}`);const d={conceptId:e.originalConceptId||e.id,value:i,period:{type:e.periodType||"duration",...a?{date:(null==l?void 0:l.periodEndDate)||s.periodStartDate||this.periodStartDate}:{startDate:(null==l?void 0:l.periodStartDate)||s.periodStartDate||this.periodStartDate,endDate:(null==l?void 0:l.periodEndDate)||s.periodEndDate||this.periodEndDate}}};(null==(n=null==l?void 0:l.dimensionData)?void 0:n.memberLabel)&&(d.dimension=l.dimensionData.memberLabel),r.push(d)}_findColumnByIdInAllSections(e){for(const t of this._allSections)if(t.columns){const i=t.columns.find(t=>t.id===e);if(i)return i}}_removeDuplicateSubmissions(e){const t=new Map;return e.forEach(e=>{const i="instant"===e.period.type?e.period.date:`${e.period.startDate}_${e.period.endDate}`,r=`${e.conceptId}_${e.value}_${e.dimension||"no-dimension"}_${i}`;t.has(r)||t.set(r,e)}),Array.from(t.values())}_findColumnById(e){if(this._currentSchema)for(const t of this._currentSchema.sections)if(t.columns){const i=t.columns.find(t=>t.id===e);if(i)return i}}_findColumnByIdInSection(e,t){if(null==t?void 0:t.columns)return t.columns.find(t=>t.id===e)}_getTypedMemberNameForAxis(e,t){var i,r,o,n;if(!(null==(r=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:r[0]))return null;const s=null==t?void 0:t.id;if(!s)return null;const a=null==(o=this.xbrlInput.hypercubes[0].roles)?void 0:o.find(e=>e.roleId===s);if(!(null==a?void 0:a.items))return null;for(const l of a.items)if(l.dimensions){const t=l.dimensions.find(t=>t.id===e);if(null==(n=null==t?void 0:t.typedMember)?void 0:n.id)return t.typedMember.id}return null}_doesConceptApplyToTypedDimension(e,t,i){var r,o,n;if(!(null==(o=null==(r=this.xbrlInput)?void 0:r.hypercubes)?void 0:o[0]))return!1;const s=null==t?void 0:t.id;if(!s)return!1;const a=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===s);if(!(null==(n=null==a?void 0:a.items)?void 0:n.length))return!1;for(const l of a.items){const t=e.originalConceptId||e.id;if(l.conceptIds&&l.conceptIds.includes(t)){const e=l.dimensions.some(e=>e.typedMember);return console.log(`🔍 [DynamicForm] Concept ${t} found in hypercube item. Has typed dimensions:`,e),e}}return console.log(`🔍 [DynamicForm] Concept ${e.originalConceptId||e.id} not found in any hypercube items for role ${s}`),!1}_getApplicableTypedDimensions(e,t){var i,r,o;if(!(null==(r=null==(i=this.xbrlInput)?void 0:i.hypercubes)?void 0:r[0])||!(null==t?void 0:t.id))return[];const n=this.xbrlInput.hypercubes[0].roles.find(e=>e.roleId===t.id);if(!(null==(o=null==n?void 0:n.items)?void 0:o.length))return[];const s=e.originalConceptId||e.id;for(const a of n.items)if(a.conceptIds&&a.conceptIds.includes(s)){const e=a.dimensions.filter(e=>e.typedMember).map(e=>e.id);return console.log(`🔍 [DynamicForm] Found applicable typed dimensions for concept ${s}:`,e),e}return[]}_processConceptsForSubmission(e,t,i){const r="Toelichting op de geconsolideerde jaarrekening - Financiële vaste activa: Deelnemingen: Volledig geconsolideerd: Specificatie",o=(null==i?void 0:i.title)||"Unknown";e.forEach(e=>{o===r&&(console.warn(`[DUPLICATE DEBUG] Processing concept ${e.originalConceptId||e.id} in target role`),e.fields&&(console.warn(`[DUPLICATE DEBUG] Concept has ${e.fields.length} fields`),e.fields.forEach((t,i)=>{var r;console.warn(`[DUPLICATE DEBUG] Field ${i}: columnId=${t.columnId}, current value=${null==(r=this._formData[e.id])?void 0:r[t.columnId]}`)}))),e.fields&&e.fields.length>1&&e.fields.forEach((e,t)=>{}),e.fields&&e.fields.length>0&&e.fields.forEach(n=>{var s,a;const l=this._formData[e.id],d=null==l?void 0:l[n.columnId];if(null!=d&&""!==d){const l=this._findColumnByIdInSection(n.columnId,i),c={conceptId:e.id,value:d,period:{type:e.periodType||"duration"}};if("instant"===e.periodType?c.period.date=(null==l?void 0:l.periodEndDate)||n.periodStartDate||this.periodStartDate:(c.period.startDate=(null==l?void 0:l.periodStartDate)||n.periodStartDate||this.periodStartDate,c.period.endDate=(null==l?void 0:l.periodEndDate)||n.periodEndDate||this.periodEndDate),console.log(`🔍 [Submission] Concept: ${e.id}, Column: ${n.columnId}, Column Period: ${(null==l?void 0:l.periodStartDate)||"none"} - ${(null==l?void 0:l.periodEndDate)||"none"}, Used Period: ${"instant"===c.period.type?c.period.date:`${c.period.startDate} - ${c.period.endDate}`}`),"dimension"===(null==l?void 0:l.type)&&(null==(s=l.dimensionData)?void 0:s.dimensionIdKey)?(c.dimension=l.dimensionData.dimensionIdKey,console.log(`🔍 [DynamicForm] Using dimension key from field's column (${n.columnId}):`,l.dimensionData.dimensionIdKey)):console.log(`🔍 [DynamicForm] No dimension data found for field column ${n.columnId}. Column type: ${null==l?void 0:l.type}, has dimensionData: ${!!(null==l?void 0:l.dimensionData)}`),this._typedMemberData[n.columnId]){const t=this._getApplicableTypedDimensions(e,i);if(console.log(`🔍 [DynamicForm] Concept ${e.id} applicable typed dimensions:`,t),t.length>0){const e={},r=this._typedMemberData[n.columnId];t.forEach(t=>{if(r[t]){const o=this._getTypedMemberNameForAxis(t,i);e[t]={value:r[t],memberName:o||"Unknown"}}}),Object.keys(e).length>0?(c.typedMembers=e,console.log("🔍 [DynamicForm] Adding filtered typed members to submission:",e)):console.log("🔍 [DynamicForm] No typed member values found for applicable dimensions:",t)}else console.log(`🔍 [DynamicForm] Skipping typed members for concept ${e.id} - not applicable to this hypercube`)}else console.log(`🔍 [DynamicForm] No typed member data found for column ${n.columnId}. Available columns:`,Object.keys(this._typedMemberData)),l&&console.log("🔍 [DynamicForm] Column details:",{id:l.id,type:l.type,hasTypedMembers:null==(a=l.dimensionData)?void 0:a.hasTypedMembers,dimensionData:l.dimensionData});o===r&&console.warn("[DUPLICATE DEBUG] Final submission entry:",c),t.push(c)}}),e.children&&this._processConceptsForSubmission(e.children,t,i)})}_handleReset(){this._formData={...this.initialData},this._touched.clear(),this._dirty=!1,this._submitted=!1,this._preservedFormData={},this._preservedTypedMemberData={},console.log("🔄 Form reset - all data and preserved data cleared"),this._validateForm(),this.requestUpdate(),this.dispatchEvent(new CustomEvent("form-reset",{detail:{},bubbles:!0}))}_getFormState(){return{data:this._formData,errors:this._errors,touched:this._touched,dirty:this._dirty,valid:this._valid,submitted:this._submitted}}_handleSidePanelRoleClick(e){this._activeSidePanelRoleId=e}_renderAdminModeContent(t){var i,r,o;if(!t)return e.html`
|
|
1585
|
+
<div class="admin-mode-container">
|
|
1586
|
+
<p>No role selected</p>
|
|
1545
1587
|
</div>
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
<
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
<div class="
|
|
1552
|
-
<
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1588
|
+
`;const n=(null==(i=this._adminRoleConfigs[t.id])?void 0:i.showPreviousYear)??t.showPreviousYear??!1,s=(null==(r=this._adminRoleConfigs[t.id])?void 0:r.instant)??t.instant??!1,a=(null==(o=this._adminRoleConfigs[t.id])?void 0:o.duration)??t.duration??!1,l=!0===t.showPeriodControl;return e.html`
|
|
1589
|
+
<div class="admin-mode-container">
|
|
1590
|
+
<h2 class="admin-mode-title">Role Configuration: ${t.title}</h2>
|
|
1591
|
+
<div class="admin-roles-list">
|
|
1592
|
+
<div class="admin-role-item">
|
|
1593
|
+
<div class="admin-role-checkbox">
|
|
1594
|
+
<input
|
|
1595
|
+
type="checkbox"
|
|
1596
|
+
id="admin-prev-year-${t.id}"
|
|
1597
|
+
.checked="${n}"
|
|
1598
|
+
@change="${e=>this._handleAdminCheckboxChange(t.id,"showPreviousYear",e.target.checked)}"
|
|
1599
|
+
/>
|
|
1600
|
+
<label for="admin-prev-year-${t.id}">Show Previous Year Column</label>
|
|
1601
|
+
</div>
|
|
1602
|
+
</div>
|
|
1603
|
+
|
|
1604
|
+
${l?e.html`
|
|
1605
|
+
<div class="admin-role-item">
|
|
1606
|
+
<div class="admin-role-checkbox">
|
|
1607
|
+
<input
|
|
1608
|
+
type="checkbox"
|
|
1609
|
+
id="admin-instant-${t.id}"
|
|
1610
|
+
.checked="${s}"
|
|
1611
|
+
@change="${e=>this._handleAdminCheckboxChange(t.id,"instant",e.target.checked)}"
|
|
1612
|
+
/>
|
|
1613
|
+
<label for="admin-instant-${t.id}">Show Instant Column</label>
|
|
1614
|
+
</div>
|
|
1615
|
+
</div>
|
|
1616
|
+
|
|
1617
|
+
<div class="admin-role-item">
|
|
1618
|
+
<div class="admin-role-checkbox">
|
|
1619
|
+
<input
|
|
1620
|
+
type="checkbox"
|
|
1621
|
+
id="admin-duration-${t.id}"
|
|
1622
|
+
.checked="${a}"
|
|
1623
|
+
@change="${e=>this._handleAdminCheckboxChange(t.id,"duration",e.target.checked)}"
|
|
1624
|
+
/>
|
|
1625
|
+
<label for="admin-duration-${t.id}">Show Duration Column</label>
|
|
1626
|
+
</div>
|
|
1558
1627
|
</div>
|
|
1559
1628
|
`:""}
|
|
1629
|
+
</div>
|
|
1630
|
+
</div>
|
|
1631
|
+
`}_handleAdminCheckboxChange(e,t,i){const r=this._adminRoleConfigs[e]||{showPreviousYear:!1};this._adminRoleConfigs={...this._adminRoleConfigs,[e]:{...r,[t]:i}}}_handleAdminModeSubmit(){var e,t,i,r;if(!(null==(i=null==(t=null==(e=this.xbrlInput)?void 0:e.presentation)?void 0:t[0])?void 0:i.roles))return void console.error("No presentation data available");const o=JSON.parse(JSON.stringify(this.xbrlInput.presentation[0])),n=new Set((null==(r=this._currentSchema)?void 0:r.sections.map(e=>e.id))||[]);o.roles=o.roles.map(e=>{const t=n.has(e.id),i=this._adminRoleConfigs[e.id],r={...e,display:t?"yes":"no"};return void 0!==i&&t&&(r.showPreviousYear=i.showPreviousYear,void 0!==i.instant&&(r.instant=i.instant),void 0!==i.duration&&(r.duration=i.duration)),r}),this.dispatchEvent(new CustomEvent("admin-config-updated",{detail:{presentationData:o,roleConfigs:this._adminRoleConfigs},bubbles:!0,composed:!0})),console.log("✅ Admin configuration saved successfully")}_renderAccordionLayout(t,i,r,o){return e.html`
|
|
1632
|
+
<div class="form-sections">
|
|
1633
|
+
<!-- Validation Summary -->
|
|
1634
|
+
${r?e.html`
|
|
1635
|
+
<div class="validation-summary">
|
|
1636
|
+
<h4 class="validation-summary-title">Please fix the following errors:</h4>
|
|
1637
|
+
<ul class="validation-summary-list">
|
|
1638
|
+
${this._errors.filter(e=>"error"===e.severity).map(t=>e.html`
|
|
1639
|
+
<li class="validation-summary-item">${t.message}</li>
|
|
1640
|
+
`)}
|
|
1641
|
+
</ul>
|
|
1642
|
+
</div>
|
|
1643
|
+
`:""}
|
|
1560
1644
|
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1645
|
+
<!-- Form Sections or No Selection Message (hidden in admin mode) -->
|
|
1646
|
+
${"admin"===this.mode?t.sections.map((t,i)=>e.html`
|
|
1647
|
+
<div class="admin-mode-placeholder">
|
|
1648
|
+
${this._renderAdminModeContent(t)}
|
|
1649
|
+
</div>
|
|
1650
|
+
`):0===t.sections.length?e.html`
|
|
1651
|
+
<div class="no-roles-message">
|
|
1652
|
+
<h3>No Roles Selected</h3>
|
|
1653
|
+
<p>Please use the "Filter Roles" button below to select which sections you want to work with.</p>
|
|
1654
|
+
<p>Available roles: ${this._allSections.length}</p>
|
|
1655
|
+
</div>
|
|
1656
|
+
`:t.sections.map((t,r)=>e.html`
|
|
1657
|
+
<jupiter-form-section
|
|
1658
|
+
.section="${t}"
|
|
1659
|
+
.columns="${t.columns||this._columns}"
|
|
1660
|
+
.formData="${this._formData}"
|
|
1661
|
+
.typedMemberData="${this._typedMemberData}"
|
|
1662
|
+
.disabled="${this.disabled||this.readonly}"
|
|
1663
|
+
.collapsible="${!1!==i.collapsibleSections}"
|
|
1664
|
+
.locale="${i.locale||"en-US"}"
|
|
1665
|
+
.isFirstSection="${0===r}"
|
|
1666
|
+
.availableDimensions="${this._getAvailableDimensionsForSection(t.id)}"
|
|
1667
|
+
@field-change="${this._handleFieldChange}"
|
|
1668
|
+
@typed-member-change="${this._handleTypedMemberChange}"
|
|
1669
|
+
@section-expand="${this._handleSectionExpand}"
|
|
1670
|
+
@concept-expand="${this._handleConceptExpand}"
|
|
1671
|
+
@column-remove="${this._handleColumnRemove}"
|
|
1672
|
+
@column-add-request="${this._handleColumnAddRequest}"
|
|
1673
|
+
></jupiter-form-section>
|
|
1674
|
+
`)}
|
|
1675
|
+
</div>
|
|
1676
|
+
`}_renderSidePanelLayout(t,i,r,o){const n=t.sections;this._activeSidePanelRoleId&&n.find(e=>e.id===this._activeSidePanelRoleId)||(this._activeSidePanelRoleId=n.length>0?n[0].id:null);const s=n.find(e=>e.id===this._activeSidePanelRoleId);return e.html`
|
|
1677
|
+
<div class="side-panel-layout">
|
|
1678
|
+
<!-- Left: Roles List (filtered) -->
|
|
1679
|
+
<div class="side-panel-roles-list">
|
|
1680
|
+
${n.map(t=>e.html`
|
|
1681
|
+
<div
|
|
1682
|
+
class="side-panel-role-item ${t.id===this._activeSidePanelRoleId?"active":""}"
|
|
1683
|
+
@click="${()=>this._handleSidePanelRoleClick(t.id)}"
|
|
1684
|
+
>
|
|
1685
|
+
${t.title}
|
|
1567
1686
|
</div>
|
|
1568
|
-
`:r.sections.map((t,o)=>e.html`
|
|
1569
|
-
<jupiter-form-section
|
|
1570
|
-
.section="${t}"
|
|
1571
|
-
.columns="${t.columns||this._columns}"
|
|
1572
|
-
.formData="${this._formData}"
|
|
1573
|
-
.typedMemberData="${this._typedMemberData}"
|
|
1574
|
-
.disabled="${this.disabled||this.readonly}"
|
|
1575
|
-
.collapsible="${!1!==i.collapsibleSections}"
|
|
1576
|
-
.locale="${i.locale||"en-US"}"
|
|
1577
|
-
.isFirstSection="${0===o}"
|
|
1578
|
-
.availableDimensions="${this._getAvailableDimensionsForSection(t.id)}"
|
|
1579
|
-
@field-change="${this._handleFieldChange}"
|
|
1580
|
-
@typed-member-change="${this._handleTypedMemberChange}"
|
|
1581
|
-
@section-expand="${this._handleSectionExpand}"
|
|
1582
|
-
@concept-expand="${this._handleConceptExpand}"
|
|
1583
|
-
@column-remove="${this._handleColumnRemove}"
|
|
1584
|
-
@column-add-request="${this._handleColumnAddRequest}"
|
|
1585
|
-
></jupiter-form-section>
|
|
1586
1687
|
`)}
|
|
1587
1688
|
</div>
|
|
1588
1689
|
|
|
1690
|
+
<!-- Right: Active Section Content -->
|
|
1691
|
+
<div class="side-panel-content">
|
|
1692
|
+
<div class="form-sections">
|
|
1693
|
+
<!-- Validation Summary -->
|
|
1694
|
+
${r?e.html`
|
|
1695
|
+
<div class="validation-summary">
|
|
1696
|
+
<h4 class="validation-summary-title">Please fix the following errors:</h4>
|
|
1697
|
+
<ul class="validation-summary-list">
|
|
1698
|
+
${this._errors.filter(e=>"error"===e.severity).map(t=>e.html`
|
|
1699
|
+
<li class="validation-summary-item">${t.message}</li>
|
|
1700
|
+
`)}
|
|
1701
|
+
</ul>
|
|
1702
|
+
</div>
|
|
1703
|
+
`:""}
|
|
1704
|
+
|
|
1705
|
+
<!-- Active Section (hidden in admin mode) -->
|
|
1706
|
+
${"admin"===this.mode?e.html`
|
|
1707
|
+
<div class="admin-mode-placeholder">
|
|
1708
|
+
${this._renderAdminModeContent(s)}
|
|
1709
|
+
</div>
|
|
1710
|
+
`:s?e.html`
|
|
1711
|
+
<jupiter-form-section
|
|
1712
|
+
.section="${s}"
|
|
1713
|
+
.columns="${s.columns||this._columns}"
|
|
1714
|
+
.formData="${this._formData}"
|
|
1715
|
+
.typedMemberData="${this._typedMemberData}"
|
|
1716
|
+
.disabled="${this.disabled||this.readonly}"
|
|
1717
|
+
.collapsible="${!1}"
|
|
1718
|
+
.hideHeader="${!0}"
|
|
1719
|
+
.locale="${i.locale||"en-US"}"
|
|
1720
|
+
.isFirstSection="${!0}"
|
|
1721
|
+
.availableDimensions="${this._getAvailableDimensionsForSection(s.id)}"
|
|
1722
|
+
@field-change="${this._handleFieldChange}"
|
|
1723
|
+
@typed-member-change="${this._handleTypedMemberChange}"
|
|
1724
|
+
@section-expand="${this._handleSectionExpand}"
|
|
1725
|
+
@concept-expand="${this._handleConceptExpand}"
|
|
1726
|
+
@column-remove="${this._handleColumnRemove}"
|
|
1727
|
+
@column-add-request="${this._handleColumnAddRequest}"
|
|
1728
|
+
></jupiter-form-section>
|
|
1729
|
+
`:e.html`
|
|
1730
|
+
<div class="no-roles-message">
|
|
1731
|
+
<h3>No Role Selected</h3>
|
|
1732
|
+
<p>Please select a role from the list on the left.</p>
|
|
1733
|
+
</div>
|
|
1734
|
+
`}
|
|
1735
|
+
</div>
|
|
1736
|
+
</div>
|
|
1737
|
+
</div>
|
|
1738
|
+
`}getData(){return{...this._formData}}setData(e){this._formData={...e},this._dirty=!0,this._validateForm(),this.requestUpdate()}validate(){return this._validateForm(),this._valid}reset(){this._handleReset()}getState(){return this._getFormState()}render(){const t=this._errors.filter(e=>"error"===e.severity).length,i=this.config||{},r=!1!==i.showValidationSummary&&t>0&&this._submitted,o=this._currentSchema;return o?e.html`
|
|
1739
|
+
<div class="form-container">
|
|
1740
|
+
<!-- Form Header - Hidden in side panel mode -->
|
|
1741
|
+
${"sidePanel"!==this.display?e.html`
|
|
1742
|
+
<div class="form-header">
|
|
1743
|
+
<h1 class="form-title">${o.title}</h1>
|
|
1744
|
+
${o.description?e.html`
|
|
1745
|
+
<p class="form-description">${o.description}</p>
|
|
1746
|
+
`:""}
|
|
1747
|
+
</div>
|
|
1748
|
+
`:""}
|
|
1749
|
+
|
|
1750
|
+
<!-- Form Content -->
|
|
1751
|
+
${"sidePanel"===this.display?this._renderSidePanelLayout(o,i,r,t):this._renderAccordionLayout(o,i,r,t)}
|
|
1752
|
+
|
|
1589
1753
|
<!-- Form Actions - Fixed Footer -->
|
|
1590
1754
|
<div class="form-actions">
|
|
1591
1755
|
<!-- Filter Roles Button (shown when more than 10 roles) -->
|
|
@@ -1632,6 +1796,7 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1632
1796
|
?open="${this._showFilterDialog}"
|
|
1633
1797
|
.availableRoles="${this._allSections}"
|
|
1634
1798
|
.selectedRoleIds="${this._selectedRoleIds}"
|
|
1799
|
+
.periodPreferences="${this._periodPreferences}"
|
|
1635
1800
|
@dialog-cancel="${this._handleFilterDialogCancel}"
|
|
1636
1801
|
@roles-filter-apply="${this._handleRoleFilterApply}"
|
|
1637
1802
|
@click="${this._handleFilterDialogCancel}"
|
|
@@ -1828,5 +1993,118 @@ const D={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:x},I=(e=D,t,
|
|
|
1828
1993
|
margin: 8px 0;
|
|
1829
1994
|
line-height: 1.5;
|
|
1830
1995
|
}
|
|
1831
|
-
|
|
1996
|
+
|
|
1997
|
+
/* Side Panel Layout Styles */
|
|
1998
|
+
.side-panel-layout {
|
|
1999
|
+
display: flex;
|
|
2000
|
+
height: calc(100vh - 80px); /* Account for footer only */
|
|
2001
|
+
gap: 0;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
.side-panel-roles-list {
|
|
2005
|
+
width: 280px;
|
|
2006
|
+
min-width: 280px;
|
|
2007
|
+
border-right: 1px solid var(--jupiter-border-color, #ddd);
|
|
2008
|
+
overflow-y: auto;
|
|
2009
|
+
background: var(--jupiter-background-light, #f8f9fa);
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
.side-panel-role-item {
|
|
2013
|
+
padding: 12px 16px;
|
|
2014
|
+
cursor: pointer;
|
|
2015
|
+
border-bottom: 1px solid var(--jupiter-border-color, #e0e0e0);
|
|
2016
|
+
transition: background-color 0.2s ease;
|
|
2017
|
+
font-size: 14px;
|
|
2018
|
+
color: var(--jupiter-text-primary, #333);
|
|
2019
|
+
line-height: 1.4;
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
.side-panel-role-item:hover {
|
|
2023
|
+
background: var(--jupiter-hover-background, #e8e8e8);
|
|
2024
|
+
}
|
|
2025
|
+
|
|
2026
|
+
.side-panel-role-item.active {
|
|
2027
|
+
background: var(--jupiter-primary-color, #1976d2);
|
|
2028
|
+
color: white;
|
|
2029
|
+
font-weight: 500;
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
.side-panel-content {
|
|
2033
|
+
flex: 1;
|
|
2034
|
+
overflow-y: auto;
|
|
2035
|
+
padding: 0;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
.side-panel-content .form-sections {
|
|
2039
|
+
padding: 24px;
|
|
2040
|
+
padding-bottom: 24px;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
/* Admin Mode Styles */
|
|
2044
|
+
.admin-mode-placeholder {
|
|
2045
|
+
padding: 0;
|
|
2046
|
+
background: white;
|
|
2047
|
+
min-height: 300px;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
.admin-mode-container {
|
|
2051
|
+
max-width: 1200px;
|
|
2052
|
+
margin: 0 auto;
|
|
2053
|
+
padding: 24px;
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
.admin-mode-title {
|
|
2057
|
+
font-size: 20px;
|
|
2058
|
+
font-weight: 600;
|
|
2059
|
+
margin: 0 0 24px 0;
|
|
2060
|
+
color: var(--jupiter-text-primary, #333);
|
|
2061
|
+
}
|
|
2062
|
+
|
|
2063
|
+
.admin-roles-list {
|
|
2064
|
+
display: flex;
|
|
2065
|
+
flex-direction: column;
|
|
2066
|
+
gap: 12px;
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
.admin-role-item {
|
|
2070
|
+
display: flex;
|
|
2071
|
+
align-items: center;
|
|
2072
|
+
padding: 16px;
|
|
2073
|
+
background: var(--jupiter-background-light, #f8f9fa);
|
|
2074
|
+
border: 1px solid var(--jupiter-border-color, #ddd);
|
|
2075
|
+
border-radius: 6px;
|
|
2076
|
+
transition: background-color 0.2s ease;
|
|
2077
|
+
}
|
|
2078
|
+
|
|
2079
|
+
.admin-role-item:hover {
|
|
2080
|
+
background: var(--jupiter-hover-background, #e8e8e8);
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
.admin-role-title {
|
|
2084
|
+
flex: 1;
|
|
2085
|
+
font-size: 14px;
|
|
2086
|
+
font-weight: 500;
|
|
2087
|
+
color: var(--jupiter-text-primary, #333);
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
.admin-role-checkbox {
|
|
2091
|
+
display: flex;
|
|
2092
|
+
align-items: center;
|
|
2093
|
+
gap: 8px;
|
|
2094
|
+
margin-left: 16px;
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
.admin-role-checkbox input[type="checkbox"] {
|
|
2098
|
+
width: 18px;
|
|
2099
|
+
height: 18px;
|
|
2100
|
+
cursor: pointer;
|
|
2101
|
+
}
|
|
2102
|
+
|
|
2103
|
+
.admin-role-checkbox label {
|
|
2104
|
+
font-size: 13px;
|
|
2105
|
+
color: var(--jupiter-text-secondary, #666);
|
|
2106
|
+
cursor: pointer;
|
|
2107
|
+
user-select: none;
|
|
2108
|
+
}
|
|
2109
|
+
`,X([w({type:Object})],exports.JupiterDynamicForm.prototype,"schema",2),X([w({type:Object})],exports.JupiterDynamicForm.prototype,"xbrlInput",2),X([w({type:Object})],exports.JupiterDynamicForm.prototype,"config",2),X([w({type:Object})],exports.JupiterDynamicForm.prototype,"initialData",2),X([w({type:Boolean})],exports.JupiterDynamicForm.prototype,"disabled",2),X([w({type:Boolean})],exports.JupiterDynamicForm.prototype,"readonly",2),X([w({type:String})],exports.JupiterDynamicForm.prototype,"periodStartDate",2),X([w({type:String})],exports.JupiterDynamicForm.prototype,"periodEndDate",2),X([w({type:String})],exports.JupiterDynamicForm.prototype,"language",2),X([w({type:String})],exports.JupiterDynamicForm.prototype,"display",2),X([w({type:String})],exports.JupiterDynamicForm.prototype,"mode",2),X([w({type:Array})],exports.JupiterDynamicForm.prototype,"financialStatementsTypeAxis",2),X([S()],exports.JupiterDynamicForm.prototype,"_formData",2),X([S()],exports.JupiterDynamicForm.prototype,"_preservedFormData",2),X([S()],exports.JupiterDynamicForm.prototype,"_typedMemberData",2),X([S()],exports.JupiterDynamicForm.prototype,"_preservedTypedMemberData",2),X([S()],exports.JupiterDynamicForm.prototype,"_columns",2),X([S()],exports.JupiterDynamicForm.prototype,"_errors",2),X([S()],exports.JupiterDynamicForm.prototype,"_touched",2),X([S()],exports.JupiterDynamicForm.prototype,"_dirty",2),X([S()],exports.JupiterDynamicForm.prototype,"_valid",2),X([S()],exports.JupiterDynamicForm.prototype,"_submitted",2),X([S()],exports.JupiterDynamicForm.prototype,"_currentSchema",2),X([S()],exports.JupiterDynamicForm.prototype,"_allSections",2),X([S()],exports.JupiterDynamicForm.prototype,"_selectedRoleIds",2),X([S()],exports.JupiterDynamicForm.prototype,"_showFilterDialog",2),X([S()],exports.JupiterDynamicForm.prototype,"_periodPreferences",2),X([S()],exports.JupiterDynamicForm.prototype,"_activeSidePanelRoleId",2),X([S()],exports.JupiterDynamicForm.prototype,"_adminRoleConfigs",2),exports.JupiterDynamicForm=X([t("jupiter-dynamic-form")],exports.JupiterDynamicForm);exports.FormValidator=C,exports.TYPE_INPUT_MAP=k,exports.getInputTypeForConceptType=F,exports.isCheckboxType=j,exports.isNumericType=P,exports.isSelectType=function(e){return"select"===e},exports.isTextareaType=E,exports.version="1.5.0";
|
|
1832
2110
|
//# sourceMappingURL=index.js.map
|