@qrvey/widget-configurability 0.0.0-beta.4539 → 0.0.0-beta.4657
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/README.md +53 -0
- package/dist/cjs/index.js +12 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/metadata/customization-metadata.js +241 -0
- package/dist/cjs/metadata/customization-metadata.js.map +1 -0
- package/dist/cjs/metadata/index.js +11 -0
- package/dist/cjs/metadata/index.js.map +1 -0
- package/dist/cjs/metadata/labels/chart-panel.labels.js +56 -0
- package/dist/cjs/metadata/labels/chart-panel.labels.js.map +1 -0
- package/dist/cjs/metadata/labels/dashboard.labels.js +207 -0
- package/dist/cjs/metadata/labels/dashboard.labels.js.map +1 -0
- package/dist/cjs/metadata/metadata.models.js +3 -0
- package/dist/cjs/metadata/metadata.models.js.map +1 -0
- package/dist/cjs/models/remote.models.js +3 -0
- package/dist/cjs/models/remote.models.js.map +1 -0
- package/dist/cjs/models/validation.models.js +3 -0
- package/dist/cjs/models/validation.models.js.map +1 -0
- package/dist/cjs/remote/remote-customization.loader.js +213 -0
- package/dist/cjs/remote/remote-customization.loader.js.map +1 -0
- package/dist/cjs/structural-manager.js +35 -2
- package/dist/cjs/structural-manager.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/utils/defaults.helpers.js +3 -0
- package/dist/cjs/utils/defaults.helpers.js.map +1 -1
- package/dist/cjs/utils/layers.helpers.js +178 -0
- package/dist/cjs/utils/layers.helpers.js.map +1 -0
- package/dist/cjs/utils/logger.helpers.js +10 -0
- package/dist/cjs/utils/logger.helpers.js.map +1 -0
- package/dist/cjs/utils/scope.helpers.js +4 -1
- package/dist/cjs/utils/scope.helpers.js.map +1 -1
- package/dist/cjs/validation/customization.validator.js +366 -0
- package/dist/cjs/validation/customization.validator.js.map +1 -0
- package/dist/esm/index.mjs +842 -48
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/metadata.mjs +2750 -0
- package/dist/esm/metadata.mjs.map +1 -0
- package/dist/types/customization.models-CCSWjfb2.d.ts +47 -0
- package/dist/types/index.d.ts +98 -68
- package/dist/types/metadata.d.ts +59 -0
- package/package.json +7 -1
- package/dist/cjs/utils/download-modal.helpers.js +0 -29
- package/dist/cjs/utils/download-modal.helpers.js.map +0 -1
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/structure.constants.ts","../../src/utils/defaults.helpers.ts","../../src/structures/download-modal.structure.v1.ts","../../src/structures/dashboard.structure.v1.ts","../../src/structures/download-manager.structure.v1.ts","../../src/structures/report.structure.v1.ts","../../src/structures/chart-panel.structure.v1.ts","../../src/structures/chart-gallery.structure.v1.ts","../../src/structures/chart-builder.structure.v1.ts","../../src/constants/configs.ts","../../src/models/conditions.models.ts","../../src/utils/conditions.helpers.ts","../../src/utils/merge.helpers.ts","../../src/utils/structural.helpers.ts","../../src/structural-manager.ts","../../src/utils/scope.helpers.ts","../../src/utils/download-modal.helpers.ts","../../src/doc/swagger.optional.ts"],"names":["STRUCTURE_SECTION_NAME_SEPARATOR","STRUCTURE_VIEW_NAME_SEPARATOR","STRUCTURE_RESERVED_WORDS","Widget","WIDGET_SUBMODULE_NAMES","WIDGET_STRUCTURE_SCOPE_KIND","WIDGET_STRUCTURE_SCOPE_FORMAT","WidgetVersion","FONT_SIZES","applyValidation","currentObj","validatorMap","parentKey","sanitize","validatedObj","Object","keys","forEach","key","fullKey","value","Array","isArray","validateDefaults","obj","isANumber","_value","Number","isNaN","undefined","numberMinMaxValue","maxValue","minValue","fontSizeMinMaxValue","minSize","maxSize","inputSize","parseInt","includes","validFontSizes","filter","size","length","closestSize","smallestDiff","Math","abs","diff","fontColorValue","normalizedColor","toLowerCase","validateBoolean","validateUnsavedChangesBehavior","validateType","validValues","receivedValue","toUpperCase","DX_VALIDATOR_MAP","unsavedChangesBehavior","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_KEEP_INHERITANCE","qSubscribeBanner","qOwnerLabel","qSubscribeOwner","qSubscribeOrganization","qSubscribeMyself","qSubscribeSpecificPeople","hostKeepInheritance","section","fromEntries","entries","map","alias","DOWNLOAD_MODAL_V1_DEFAULTS","downloadModalV1Config","version","keepInheritance","baseStructure","defaults","DOWNLOAD_MODAL_HOST_KEYS","dashboardV1Config","views","list","design","preview","endUser","navBar","endUserTopBar","assetList","assetListViewMode","asset","optionMenu","card","table","canvas","removeElement","dragElement","resizeElement","controlBarLeft","controlBarRight","header","qOptionsMenu","menuBar","file","qCreateDataset","qMnuDownloadDash","edit","grid","insert","qMnuInsertChart","qMnuInsertFilterCtrl","qMnuInsertShape","qMnuArrange","qMnuAlign","toolBar","qInsertChart","qInsertFilterCtrl","qInsertShape","qDownloadDash","qArrange","qResponsiveView","qAlign","qQvTokenExpiredMessage","qGoToDashBackButton","configPanel","filterPanel","qAddFilter","qEnabDisabAllFilters","qDeleteAllFilters","qFilterSettings","viewOnlyFilterScope","dashFilterScope","tabFilterScope","containerFilterScope","panelFilterScope","downloadModal","duplicateModal","options","qCharts","qFilters","qDashActions","subModules","chartPanel","chartGallery","chartBuilder","downloadManagerV1Config","main","detail","controlBar","filters","qFilterByFileType","qFilterByExecution","qFilterByWidget","qFilterByAsset","qFilterByOrganization","qFilterByOwner","qSearch","qRemoveFilters","qScheduleDetail","qFilesExported","qMoreInfo","bottomBar","moreInfoModal","reportV1Config","tabBar","qDownloadReport","dataPanel","tabDataset","tabParameters","repoFilterScope","optionMenuChildren","qDownloadChart","headerConfig","qFilter","optionDateGrouping","floatingMenuConfig","item","chartPanelV1Config","floatingMenu","menuLayout","body","chartGalleryV1Config","chartTypeFilter","showSummary","inputSearch","switch","title","chartBuilderV1Config","widgetConfigs","DASHBOARD","v1","latest","REPORT","DOWNLOAD_MANAGER","DOWNLOAD_MODAL","CHART_PANEL","CHART_GALLERY","CHART_BUILDER","widgetValidators","allowedOperators","isOperator","getValue","condition","state","field","_evalConditionOperator","operator","OPERATOR_MAP","a","b","startsWith","endsWith","contains","evaluateCondition","conditions","every","c","_evalCondition","evalFn","checkConditions","cond","effect","result","mergeDeep","obj1","obj2","settings","defaultSettings","mergeExistingValues","mergeMissingProperties","isValid","objectCopy","val1","val2","isObject","prototype","hasOwnProperty","call","toString","getWidgetStructure","config","customization","validationMap","calculateViewMap","permissionMap","keepAliases","view","assign","calculateSpecificViewMap","customDefaults","calculateCustomDefaults","prevDefaults","submodules","calculateSubmodules","conditionMaps","calculateConditions","calculatePermissionMap","calculateRootDefaults","calculateDefaults","viewDefinition","viewConditionals","viewKeys","viewPrefix","getViewPrefix","getStructureKey","viewValue","matchWildcard","pattern","regexPattern","RegExp","replace","test","keyIsIncludedInKeep","keep","keyIsIncludedInRemove","remove","canInsertInCustomization","validateKeepOption","includedInRemove","includedInKeep","canInsert","keepValue","keepResult","conditionAffect","evalInsertKey","hasKeepOption","customizationView","custCanInsert","custViewCanInsert","some","x","canInsertKey","checkCondition","addKeyToPermissions","childMap","keyAttr","addDefaultKey","addChildMapKey","getConditionsForKey","pathPrefix","previousKeepOption","currentKeepOption","nodeHasKeepOption","configValue","currentKey","newPrefix","canInsertResult","calculatePermissionMapArray","reduce","mapValue","push","rootConditionals","conditional","customConditionals","viewSubmodules","customRootSubmodules","customSubmodules","mergeObjects","viewDefaults","customRootDefaults","defaultObj","structureDefaults","itemDefaults","baseDefaults","prevObj","newObj","mapObjKeys","mapArrayKeys","nodeKeys","defaultsSimple","option","fullPath","getWidgetConfig","widget","versionSet","widgetConfigurability","Error","buildStructure","structureMap","rootDefaults","WidgetStructureInstance","constructor","viewMap","isVisible","getChildMap","getSubmodule","module","getDefaults","getRootDefaults","scope","prefixKey","present","sectionPath","split","pop","namespace","defaultsNamespace","sectionDefaults","childPrefix","structureVersion","slice","JSON","parse","stringify","kind","format","source","isPlainObject","isWidgetStructureScope","scopeToCustomization","extractCustomization","host","target","hostStructure","submoduleOf","input","root","fromView","structureFrom","String","submodule","error","console","warn","message","structureFromSubmodule","parent","find","resolveDownloadModalConfig","structure","organizationAvailable","subscribeOwnerAvailable","visible","elements","banner","owner","subscribeOwner","organization","myself","specificPeople","schedule","anyElement","subscribe","externalUsers","subscribeMyselfDefault","ApiProperty","nodeRequire","require","bind","metadata","ViewsDto","type","description","example","AssetListDto","MenuBarDto","FilterPanelDto","SubModulesDto","BaseDashboardV1StructureDto"],"mappings":"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","file":"index.mjs","sourcesContent":["export const STRUCTURE_SECTION_NAME_SEPARATOR = '.';\nexport const STRUCTURE_VIEW_NAME_SEPARATOR = '::';\nexport const STRUCTURE_RESERVED_WORDS = ['views', 'defaults', 'subModules'];\n\nexport enum Widget {\n DASHBOARD = 'dashboard',\n REPORT = 'report',\n DOWNLOAD_MANAGER = 'download-manager',\n DOWNLOAD_MODAL = 'download-modal',\n CHART_PANEL = 'chart-panel',\n CHART_GALLERY = 'chart-gallery',\n CHART_BUILDER = 'chart-builder',\n}\n\n// The subModules key a host uses for each widget it embeds.\nexport const WIDGET_SUBMODULE_NAMES: Partial<Record<Widget, string>> = {\n [Widget.DOWNLOAD_MODAL]: 'downloadModal',\n [Widget.CHART_PANEL]: 'chartPanel',\n [Widget.CHART_GALLERY]: 'chartGallery',\n [Widget.CHART_BUILDER]: 'chartBuilder',\n};\n\nexport const WIDGET_STRUCTURE_SCOPE_KIND = 'qrvey.widget-structure-scope';\nexport const WIDGET_STRUCTURE_SCOPE_FORMAT = 1;\n\nexport enum WidgetVersion {\n v1 = '1.0',\n latest = 'latest',\n}\n","import { SanitizeFn, ValidationMap } from '../models/structure.models';\n\nexport type { ValidationMap } from '../models/structure.models';\n\nconst FONT_SIZES: number[] = [\n 8, 9, 10, 11, 12, 14, 15, 16, 18, 24, 30, 36, 48, 60, 72, 96,\n];\n\nfunction applyValidation(\n currentObj: Record<string, unknown>,\n validatorMap: ValidationMap,\n parentKey = '',\n sanitize?: SanitizeFn,\n): Record<string, unknown> {\n const validatedObj: Record<string, unknown> = {};\n\n Object.keys(currentObj).forEach((key) => {\n const fullKey = parentKey ? `${parentKey}.${key}` : key;\n const value = currentObj[key];\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n validatedObj[key] = applyValidation(\n value as Record<string, unknown>,\n validatorMap,\n fullKey,\n sanitize,\n );\n } else if (validatorMap[fullKey]) {\n validatedObj[key] = validatorMap[fullKey](value);\n } else {\n validatedObj[key] =\n sanitize && typeof value === 'string' ? sanitize(value) : value;\n }\n });\n\n return validatedObj;\n}\n\nexport function validateDefaults(\n obj: Record<string, unknown>,\n validatorMap: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n return applyValidation(obj, validatorMap, '', sanitize);\n}\n\nconst isANumber = (value: string | number) => {\n const _value = Number(value);\n if (!_value || isNaN(_value)) return undefined;\n return _value;\n};\n\nconst numberMinMaxValue =\n (maxValue: number, minValue?: number) => (value: string) => {\n const _value = isANumber(value);\n if (!_value) return undefined;\n if (minValue && _value < minValue) return minValue;\n if (_value > maxValue) return maxValue;\n return _value;\n };\n\nexport const fontSizeMinMaxValue =\n (minSize: number, maxSize: number) =>\n (value: string): string | undefined => {\n const inputSize = parseInt(value, 10);\n // Check if the inputSize is valid and within range\n if (\n FONT_SIZES.includes(inputSize) &&\n inputSize >= minSize &&\n inputSize <= maxSize\n ) {\n return `${inputSize}px`;\n }\n\n // Filter FONT_SIZES by min and max\n const validFontSizes = FONT_SIZES.filter(\n (size) => size >= minSize && size <= maxSize,\n );\n\n if (validFontSizes.length === 0) {\n return undefined;\n }\n\n // Find the closest font size\n let closestSize = validFontSizes[0];\n let smallestDiff = Math.abs(inputSize - closestSize);\n\n for (const size of validFontSizes) {\n const diff = Math.abs(inputSize - size);\n if (diff < smallestDiff) {\n smallestDiff = diff;\n closestSize = size;\n }\n }\n\n // Return the closest font size as a string with 'px'\n return `${closestSize}px`;\n };\nexport const fontColorValue = (value: string) => {\n const normalizedColor = value.toLowerCase();\n return normalizedColor;\n};\n\nexport const validateBoolean = (value: unknown): boolean | undefined =>\n typeof value === 'boolean' ? value : undefined;\n\nconst validateUnsavedChangesBehavior = (value: unknown): string | undefined => {\n if (typeof value !== 'string') return undefined;\n return ['prompt', 'autoSave', 'discard'].includes(value)\n ? value\n : undefined;\n};\n\nconst validateType = (validValues: string[]) => (value: unknown) => {\n if (typeof value !== 'string') return undefined;\n const receivedValue = value.toUpperCase();\n return validValues.includes(receivedValue) ? receivedValue : undefined;\n};\n\nexport const DX_VALIDATOR_MAP: ValidationMap = {\n 'customStyles.header.height': numberMinMaxValue(300, 10),\n 'customStyles.text.fontSize': fontSizeMinMaxValue(8, 96),\n 'customStyles.text.fontColor': fontColorValue,\n 'customStyles.container.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.line.lineWidth': numberMinMaxValue(20, 1),\n 'customStyles.rectangle.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.ellipse.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.container.borderRadius': numberMinMaxValue(100, 0),\n\n // Filter Controls: MULTISELECT LIST\n 'customStyles.filterList.type': validateType(['LIST', 'DROPDOWN']),\n 'customStyles.filterList.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: INPUTBOX\n 'customStyles.filterInput.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: DATE\n 'customStyles.filterDate.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Unsaved Changes Behavior\n unsavedChangesBehavior: validateUnsavedChangesBehavior,\n\n // Download modal\n 'downloadModal.subscribeMyself': validateBoolean,\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n};\n","import { WidgetConfig } from '../models/structure.models';\n\n// Keys of the export modal (qui-schedule-exporting-modal) at its own root; hosts import them under their downloadModal section.\nexport const DOWNLOAD_MODAL_V1_KEYS = [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n 'qSubscribeBanner',\n 'qOwnerLabel',\n 'qSubscribeOwner',\n 'qSubscribeOrganization',\n 'qSubscribeMyself',\n 'qSubscribeSpecificPeople',\n 'qIncludeHyperlinks',\n 'qIncludeHeader',\n] as const;\n\nexport type DownloadModalKey = (typeof DOWNLOAD_MODAL_V1_KEYS)[number];\n\n// The Subscribe elements split what qSubscribeOption controlled, so a keep list naming it keeps them too.\nexport const DOWNLOAD_MODAL_V1_KEEP_INHERITANCE: Record<\n string,\n DownloadModalKey\n> = {\n qSubscribeBanner: 'qSubscribeOption',\n qOwnerLabel: 'qSubscribeOption',\n qSubscribeOwner: 'qSubscribeOption',\n qSubscribeOrganization: 'qSubscribeOption',\n qSubscribeMyself: 'qSubscribeOption',\n qSubscribeSpecificPeople: 'qSubscribeOption',\n};\n\n// The same aliases for a host that lists the modal keys under one of its sections.\nexport const hostKeepInheritance = (\n section = 'downloadModal',\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(DOWNLOAD_MODAL_V1_KEEP_INHERITANCE).map(\n ([key, alias]) => [`${section}.${key}`, `${section}.${alias}`],\n ),\n );\n\nexport const DOWNLOAD_MODAL_V1_DEFAULTS = {\n subscribeMyself: true,\n};\n\nconst downloadModalV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: DOWNLOAD_MODAL_V1_KEEP_INHERITANCE,\n baseStructure: {\n defaults: { ...DOWNLOAD_MODAL_V1_DEFAULTS },\n ...Object.fromEntries(DOWNLOAD_MODAL_V1_KEYS.map((key) => [key, true])),\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\n// The download modal's keys come from its own structure; qExportVersion and the two warnings are DashboardX's slot content.\nconst DOWNLOAD_MODAL_HOST_KEYS = [\n 'qExportVersion',\n 'qSavedVersionWarning',\n 'qUnsavedVersionWarning',\n];\n\nconst dashboardV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n list: [\n 'navBar',\n 'assetList',\n 'controlBarLeft',\n 'controlBarRight',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n design: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n preview: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'filterPanel',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n endUser: [\n 'navBar',\n 'toolBar',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n },\n\n navBar: ['qAppTitle', 'qBackButton'],\n\n endUserTopBar: ['indicator', 'options'],\n\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditDash',\n 'qUseDash',\n 'qRenameDash',\n 'qDeleteDash',\n 'qDuplDash',\n 'qDuplDashAndCharts',\n 'qManageSharing',\n 'qManageTags',\n ],\n card: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n table: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n },\n },\n\n canvas: {\n defaults: {\n removeElement: true,\n dragElement: true,\n resizeElement: true,\n },\n },\n\n controlBarLeft: ['qCreateDash'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qFilterByTags',\n 'qSortBy',\n 'qSearch',\n 'qSelectColumn',\n 'qStatus',\n 'qPreview',\n 'qDiscard',\n 'qPublish',\n 'qUnpublish',\n 'qSwitchMode',\n 'qDesign',\n 'qDownloadList',\n ],\n\n header: [\n 'qDashFavorite',\n 'qSharingIcon',\n 'qDashName',\n 'qDashDesc',\n 'qTags',\n {\n qOptionsMenu: [\n 'qDuplDash',\n 'qDeleteDash',\n 'qManageSharing',\n 'qManageTags',\n ],\n },\n ],\n\n menuBar: {\n file: [\n 'qMnuCreateDash',\n 'qMnuOpenDash',\n 'qMnuDuplicateDash',\n 'qMnuDuplicateDashAndCharts',\n 'qMnuCanvasSize',\n 'qMnuThemes',\n 'qManageSharing',\n 'qManageTags',\n 'qMnuDeleteDash',\n {\n qCreateDataset: [\n 'qCreateCustomDataset',\n 'qViewCustomDataset',\n ],\n qMnuDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n },\n ],\n edit: [\n 'qUndoRedo',\n 'qCopyElement',\n 'qPasteElement',\n 'qCutElement',\n 'qRemoveElement',\n 'qDuplElement',\n 'qSelectAllElem',\n 'qSelectAllContElem',\n ],\n grid: ['qMnuSnapToGrid', 'qMnuDisplayGrid', 'qMnuSwitchGrid'],\n insert: [\n {\n qMnuInsertChart: [\n 'qMnuExistingChart',\n 'qMnuNewChart',\n 'qMnuNewChartAI',\n ],\n qMnuInsertFilterCtrl: [\n 'qMnuDatePicker',\n 'qMnuInputBox',\n 'qMnuMultiSelectList',\n 'qMnuSingleSelectList',\n ],\n qMnuInsertShape: [\n 'qMnuLine',\n 'qMnuRectangle',\n 'qMnuEllipse',\n ],\n },\n 'qMnuInsertText',\n 'qMnuInsertImage',\n 'qMnuInsertButton',\n 'qMnuInsertContainer',\n 'qMnuInsertHeader',\n 'qMnuInsertTabs',\n ],\n qMnuArrange: [\n 'qMnuBringToFront',\n 'qMnuSendToBack',\n {\n qMnuAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n },\n ],\n },\n toolBar: [\n 'qCanvasSize',\n {\n qInsertChart: ['qExistingChart', 'qNewChart', 'qNewChartAI'],\n qInsertFilterCtrl: [\n 'qDatePicker',\n 'qInputBox',\n 'qMultiSelectList',\n 'qSingleSelectList',\n ],\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qSnapToGrid', 'qDisplayGrid', 'qSwitchGrid'],\n qDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qResponsiveView: [\n 'qDesktop',\n 'qTablet',\n 'qMobile',\n 'qBreakpoints',\n ],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qCreateDataset: ['qCreateCustomDataset', 'qViewCustomDataset'],\n },\n 'qInsertText',\n 'qInsertImage',\n 'qInsertButton',\n 'qInsertContainer',\n 'qRespGridMargins',\n 'qRespGridColumns',\n 'qThemes',\n 'qUndoRedo',\n\n // only for end user\n 'qDashVersion',\n 'qGetDashVersion',\n 'qSourceDashBanner',\n 'qHiddenItems',\n 'qDiscard',\n 'qSave',\n 'qSwitchMode',\n 'qHideToolBar',\n 'qDownloadList',\n 'qChangeLayout',\n ],\n qQvTokenExpiredMessage: true,\n qGoToDashBackButton: true,\n configPanel: true,\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n viewOnlyFilterScope: true,\n dashFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n containerFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS, ...DOWNLOAD_MODAL_HOST_KEYS],\n duplicateModal: [\n 'qCharts',\n 'qFilters',\n 'qDashActions',\n {\n options: {\n defaults: {\n qCharts: true,\n qFilters: true,\n qDashActions: true,\n },\n },\n },\n ],\n subModules: {\n chartPanel: {},\n chartGallery: {},\n chartBuilder: {},\n },\n },\n};\n\nexport default dashboardV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\nconst downloadManagerV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n main: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'downloadModal',\n ],\n detail: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'bottomBar',\n 'downloadModal',\n ],\n },\n header: ['qTitle'],\n controlBar: {\n defaults: {\n filters: {},\n },\n qFilterByFileType: [\n 'qTypePDF',\n 'qTypeJPG',\n 'qTypeCSV',\n 'qTypeExcel',\n 'qTypeZIP',\n ],\n qFilterByExecution: ['qExecScheduled', 'qExecOthers'],\n qFilterByWidget: [\n 'qWidgetAnalyze',\n 'qWidgetAutomation',\n 'qWidgetDash',\n 'qWidgetLegacyDash',\n 'qWidgetSubscriptions',\n 'qWidgetPPR',\n ],\n qFilterByAsset: true,\n qFilterByOrganization: true,\n qFilterByOwner: true,\n qSearch: true,\n qRemoveFilters: true,\n qScheduleDetail: true,\n qFilesExported: true,\n qMoreInfo: true,\n },\n\n assetList: {\n asset: [\n {\n optionMenu: [\n 'qDelete',\n 'qMoreInfo',\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n table: [\n 'qType',\n 'qSchedule',\n 'qSize',\n 'qCreationDate',\n 'qExpirationDate',\n 'qDownload',\n 'qOrganization',\n 'qOwner',\n ],\n },\n 'qDrillToDetail',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n },\n\n bottomBar: [\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qDelete',\n ],\n\n // The export modal's own keys, so a scope of this section carries all of them.\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS],\n\n moreInfoModal: [\n 'qFileType',\n 'qSource',\n 'qOwner',\n 'qApplication',\n 'qPath',\n 'qOrganization',\n 'qErrorMessage',\n ],\n },\n};\n\nexport default downloadManagerV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst reportV1Config: WidgetConfig = {\n version: '1.0',\n\n baseStructure: {\n views: {\n list: ['navBar', 'assetList', 'controlBarLeft', 'controlBarRight'],\n design: [\n 'navBar',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'dataPanel',\n ],\n preview: [\n 'navBar',\n 'tabBar',\n 'toolBar',\n 'pagePreview',\n 'controlBarRight',\n 'downloadModal',\n ],\n },\n navBar: ['qAppTitle', 'qBackButton'],\n tabBar: ['qTabSelector', 'qScrollButton'],\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditRep',\n 'qRenameRep',\n 'qDeleteRep',\n 'qDuplRep',\n ],\n },\n },\n\n controlBarLeft: ['qCreateRep'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qSortBy',\n 'qSearch',\n 'qPreview',\n 'qDesign',\n ],\n\n menuBar: {\n edit: ['qCopyElement', 'qPasteElement'],\n },\n toolBar: [\n 'qPageSetup',\n {\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qDisplayRuler', 'qDisplayGrid'],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qDownloadReport: [\n 'qReportPDF',\n 'qReportExcel',\n ],\n },\n 'qUndoRedo',\n 'qInsertDTable',\n 'qInsertSTable',\n 'qInsertImage',\n 'qInsertText',\n 'qInsertPageGroup',\n 'qInsertFormula',\n 'qInsertBucket',\n 'qInsertPageBreak',\n ],\n configPanel: true,\n dataPanel: {\n tabDataset: ['qChangeDataSet', 'qSearch'],\n tabParameters: ['qAddParameter', 'qSearch'],\n },\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n repoFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n ],\n },\n};\n\nexport default reportV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst optionMenuChildren = [\n 'qEditChart',\n 'qDuplicateChart',\n {\n qDownloadChart: [\n 'qChartJPG',\n 'qChartPDF',\n 'qChartCSV',\n 'qChartSummary',\n 'qChartExcel',\n ],\n },\n];\n\nconst headerConfig = [\n 'qChartName',\n 'qFitPanel',\n 'qChartSelection',\n 'qColumnSection',\n 'qSorting',\n 'qColumnReplacement',\n 'qColumnAggregation',\n 'qColumnGrouping',\n 'qDateGrouping',\n 'qColumnSelection',\n 'qResetColumnsWidth',\n 'qSmartAnalyzer',\n { optionMenu: optionMenuChildren },\n {\n qFilter: [\n 'qAddFilter',\n { dashFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { tabFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { panelFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n ],\n },\n {\n optionDateGrouping: [\n 'qDayOnly',\n 'qMonth',\n 'qMonthOnly',\n 'qQuarter',\n 'qQuarterOnly',\n 'qWeek',\n 'qYear',\n 'qDay',\n 'qHour',\n 'qHourOnly',\n 'qMinute',\n 'qMinuteOnly',\n 'qSecond',\n 'qSecondOnly',\n ],\n },\n];\n\nconst floatingMenuConfig = [\n ...headerConfig.filter(\n (item) => typeof item !== 'object' || !('optionMenu' in item),\n ),\n ...optionMenuChildren,\n];\n\nconst chartPanelV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n header: headerConfig,\n floatingMenu: floatingMenuConfig,\n menuLayout: { defaults: { menuLayout: undefined } },\n body: ['actions', 'qComparativeAnalysis'],\n },\n};\n\nexport default chartPanelV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartGalleryV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartGalleryV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartBuilderV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartBuilderV1Config;\n","import { Widget, WidgetVersion } from './structure.constants';\nimport { WidgetConfigsMap } from './widget.config';\nimport { ValidationMap } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_VALIDATOR_MAP,\n DX_VALIDATOR_MAP,\n} from '../utils/defaults.helpers';\nimport dashboardV1Config from '../structures/dashboard.structure.v1';\nimport downloadManagerV1Config from '../structures/download-manager.structure.v1';\nimport reportV1Config from '../structures/report.structure.v1';\nimport downloadModalV1Config from '../structures/download-modal.structure.v1';\nimport chartPanelV1Config from '../structures/chart-panel.structure.v1';\nimport chartGalleryV1Config from '../structures/chart-gallery.structure.v1';\nimport chartBuilderV1Config from '../structures/chart-builder.structure.v1';\n\nexport const widgetConfigs: WidgetConfigsMap = {\n [Widget.DASHBOARD]: {\n [WidgetVersion.v1]: dashboardV1Config,\n [WidgetVersion.latest]: dashboardV1Config,\n },\n [Widget.REPORT]: {\n [WidgetVersion.v1]: reportV1Config,\n [WidgetVersion.latest]: reportV1Config,\n },\n [Widget.DOWNLOAD_MANAGER]: {\n [WidgetVersion.v1]: downloadManagerV1Config,\n [WidgetVersion.latest]: downloadManagerV1Config,\n },\n [Widget.DOWNLOAD_MODAL]: {\n [WidgetVersion.v1]: downloadModalV1Config,\n [WidgetVersion.latest]: downloadModalV1Config,\n },\n [Widget.CHART_PANEL]: {\n [WidgetVersion.v1]: chartPanelV1Config,\n [WidgetVersion.latest]: chartPanelV1Config,\n },\n [Widget.CHART_GALLERY]: {\n [WidgetVersion.v1]: chartGalleryV1Config,\n [WidgetVersion.latest]: chartGalleryV1Config,\n },\n [Widget.CHART_BUILDER]: {\n [WidgetVersion.v1]: chartBuilderV1Config,\n [WidgetVersion.latest]: chartBuilderV1Config,\n },\n};\n\n// Validators applied to customization defaults when the caller passes none; the analytics widgets never validated theirs.\nexport const widgetValidators: Partial<Record<Widget, ValidationMap>> = {\n [Widget.DASHBOARD]: DX_VALIDATOR_MAP,\n [Widget.REPORT]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MANAGER]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MODAL]: DOWNLOAD_MODAL_VALIDATOR_MAP,\n};\n","export const allowedOperators = [\n '=',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'startsWith',\n 'endsWith',\n 'contains',\n] as const;\nexport type Operators = (typeof allowedOperators)[number];\n\nexport type ConditionValue = string | number;\n\nexport interface Condition {\n field: string;\n operator: Operators;\n value: ConditionValue;\n}\n\nexport type ConditionState = Record<string, ConditionValue>;\n\nexport type OperatorConditionFn = (\n value: Condition,\n state: Record<string, ConditionValue>,\n) => boolean;\n","import {\n Condition,\n ConditionState,\n ConditionValue,\n OperatorConditionFn,\n Operators,\n allowedOperators,\n} from '../models/conditions.models';\nimport { WidgetItemCondition } from '../models/structure.models';\n\nfunction isOperator(value: string): value is Operators {\n return allowedOperators.includes(value as Operators);\n}\n\nfunction getValue(condition: Condition, state: ConditionState): ConditionValue {\n return state[condition.field];\n}\n\nfunction _evalConditionOperator(\n condition: Condition,\n state: ConditionState,\n operator: (a: ConditionValue, b: ConditionValue) => boolean,\n): boolean {\n const value = getValue(condition, state);\n if (value == null) return false;\n return operator(value, condition.value);\n}\n\nconst OPERATOR_MAP: Record<Operators, OperatorConditionFn> = {\n '=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a == b),\n '!=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a != b),\n '<': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a < b),\n '<=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a <= b),\n '>': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a > b),\n '>=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a >= b),\n\n startsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' &&\n typeof b === 'string' &&\n a.startsWith(b),\n ),\n\n endsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.endsWith(b),\n ),\n\n contains: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.includes(b),\n ),\n};\n\nexport function evaluateCondition(\n state: ConditionState | undefined,\n ...conditions: Condition[]\n): boolean {\n if (!state) return false;\n if (conditions.length === 0) return true;\n return conditions.every((c) => _evalCondition(state, c));\n}\n\nfunction _evalCondition(state: ConditionState, condition: Condition): boolean {\n if (!isOperator(condition.operator)) return false;\n const evalFn = OPERATOR_MAP[condition.operator];\n return evalFn(condition, state);\n}\n\nexport function checkConditions(\n state: ConditionState | undefined,\n conditions: WidgetItemCondition[],\n): boolean {\n if (!state) return false;\n for (const cond of conditions) {\n if (cond.effect === 'keep') continue;\n const result = evaluateCondition(state, cond.condition);\n if (result) return false;\n }\n return true;\n}\n","export interface MergeDeepSettings {\n mergeMissingProperties?: boolean;\n mergeExistingValues?: boolean;\n}\n\nexport function mergeDeep(\n obj1: any,\n obj2: any,\n settings?: MergeDeepSettings,\n): any {\n const defaultSettings = {\n mergeExistingValues: settings?.mergeExistingValues ?? true,\n mergeMissingProperties: settings?.mergeMissingProperties ?? true,\n };\n\n if (!isValid(obj1, obj2)) return objectCopy(obj1);\n\n const result: any = Array.isArray(obj1) ? [] : {};\n\n for (const key in obj1) {\n const val1 = obj1[key];\n const val2 = obj2?.[key];\n\n if (isObject(val1) || Array.isArray(val1)) {\n result[key] = mergeDeep(val1, val2, defaultSettings);\n } else if (key in obj2 && defaultSettings.mergeExistingValues) {\n result[key] = val2;\n } else {\n result[key] = val1;\n }\n }\n\n if (defaultSettings.mergeMissingProperties) {\n for (const key in obj2) {\n if (!(key in result)) {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n}\n\nfunction isValid(obj1: any, obj2: any): boolean {\n return (\n (isObject(obj1) && isObject(obj2)) ||\n (Array.isArray(obj1) && Array.isArray(obj2))\n );\n}\n\nfunction objectCopy<T = any>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => objectCopy(item)) as any;\n }\n\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = objectCopy((obj as any)[key]);\n }\n }\n\n return result;\n}\n\nfunction isObject(value: any): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n","import { ValidationMap, validateDefaults } from './defaults.helpers';\nimport { mergeDeep } from './merge.helpers';\nimport {\n STRUCTURE_RESERVED_WORDS,\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n SanitizeFn,\n StructureEngineOptions,\n WidgetConditionMap,\n WidgetConfig,\n WidgetItemCondition,\n WidgetStructure,\n WidgetStructureRoot,\n WidgetViewMap,\n} from '../models/structure.models';\n\ntype hasKeepOptType = 'root' | 'view';\n\ninterface CalculateViewOptions {\n viewKeys?: string[];\n pathPrefix?: string;\n viewPrefix?: string;\n hasKeepOption?: hasKeepOptType;\n prevDefaults?: Record<string, unknown>;\n customDefaults?: Record<string, unknown>;\n conditionMaps?: WidgetConditionMap[];\n checkCondition?: boolean;\n keepAliases?: Record<string, string>;\n}\n\ninterface ViewMapOptions extends StructureEngineOptions {\n keepInheritance?: Record<string, string>;\n}\n\ntype ConditionAffectValue = false | 'keep' | 'remove';\n\ninterface InsertionResult {\n canInsert: boolean;\n conditionAffect: ConditionAffectValue;\n}\n\n/**\n * constructs the permission map structure for a widget\n * @param config configuration of a widget\n * @param customization customization options for a widget\n * @param validationMap\n * @returns object representing the view map for the widget\n */\nexport function getWidgetStructure(\n config: WidgetConfig,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: StructureEngineOptions,\n): WidgetViewMap {\n return calculateViewMap(\n config.baseStructure,\n customization,\n validationMap,\n {\n ...options,\n keepInheritance: config.keepInheritance,\n },\n );\n}\n\nexport function calculateViewMap(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const keepAliases = options?.keepInheritance;\n if (config.views) {\n for (const view in config.views) {\n Object.assign(\n permissionMap,\n calculateSpecificViewMap(\n view,\n config,\n customization,\n validationMap,\n options,\n ),\n );\n }\n } else {\n const customDefaults = calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const submodules = calculateSubmodules(config, customization);\n if (submodules) {\n permissionMap.subModules = submodules;\n }\n\n const conditionMaps = calculateConditions(\n config,\n customization,\n undefined,\n keepAliases,\n );\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n }\n return permissionMap;\n}\n\n/**\n * Defaults at the root of a structure without views (structure defaults merged with the customization's).\n */\nexport function calculateRootDefaults(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n): Record<string, unknown> | undefined {\n return calculateDefaults(\n config.defaults as Record<string, unknown> | undefined,\n undefined,\n calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n sanitize,\n ),\n );\n}\n\nfunction calculateSpecificViewMap(\n view: string,\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n) {\n const viewDefinition = config.views![view];\n const keepAliases = options?.keepInheritance;\n const customDefaults = calculateCustomDefaults(\n customization,\n view,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const permissionMap: WidgetViewMap = {};\n\n const submodules = calculateSubmodules(config, customization, view);\n if (submodules) {\n permissionMap[`${view}::subModules`] = submodules;\n }\n\n const conditionMaps =\n options?.viewConditionals === false\n ? undefined\n : calculateConditions(config, customization, view, keepAliases);\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n viewKeys: viewDefinition,\n viewPrefix: view,\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n\n return permissionMap;\n}\n\nfunction getViewPrefix(view?: string) {\n return view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n}\n\nfunction getStructureKey(key: string, viewPrefix?: string): string {\n const viewValue = getViewPrefix(viewPrefix);\n return `${viewValue}${key}`;\n}\n\nconst matchWildcard = (pattern: string, value: string): boolean => {\n const regexPattern = new RegExp(\n '^' + pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*') + '$',\n );\n return regexPattern.test(value);\n};\n\nfunction keyIsIncludedInKeep(\n key: string,\n customization: WidgetCustomization,\n keepAliases?: Record<string, string>,\n): boolean {\n const { keep = [] } = customization;\n const alias = keepAliases?.[key];\n for (const pattern of keep) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n if (alias && (pattern === alias || matchWildcard(pattern, alias))) {\n return true;\n }\n }\n return false;\n}\n\nfunction keyIsIncludedInRemove(\n key: string,\n customization: WidgetCustomization,\n): boolean {\n const { remove = [] } = customization;\n for (const pattern of remove) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n }\n return false;\n}\n\nfunction canInsertInCustomization(\n key: string,\n customization: WidgetCustomization,\n validateKeepOption?: boolean,\n keepAliases?: Record<string, string>,\n): InsertionResult {\n const includedInRemove = keyIsIncludedInRemove(key, customization);\n const includedInKeep = keyIsIncludedInKeep(key, customization, keepAliases);\n const canInsert =\n !includedInRemove && (!validateKeepOption || includedInKeep);\n\n const keepValue = includedInKeep ? 'keep' : 'remove';\n const keepResult = validateKeepOption ? keepValue : false;\n const conditionAffect = includedInRemove ? 'remove' : keepResult;\n return { canInsert, conditionAffect };\n}\n\nfunction evalInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const customizationView = customization?.views?.[viewPrefix];\n\n const custCanInsert: InsertionResult = customization\n ? canInsertInCustomization(\n key,\n customization,\n hasKeepOption === 'root',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n const custViewCanInsert: InsertionResult = customizationView\n ? canInsertInCustomization(\n key,\n customizationView,\n hasKeepOption === 'view',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n\n // validate remove and keep attributes for views.\n const canInsert =\n (!viewKeys || viewKeys.some((x) => key.startsWith(x))) &&\n custCanInsert.canInsert &&\n custViewCanInsert.canInsert;\n\n const conditionAffect =\n custCanInsert.conditionAffect || custViewCanInsert.conditionAffect;\n\n return { canInsert, conditionAffect };\n}\n\nfunction canInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n checkCondition = false,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const result = evalInsertKey(\n key,\n { viewKeys, viewPrefix, hasKeepOption, checkCondition, keepAliases },\n customization,\n );\n const canInsert = checkCondition || result.canInsert;\n return { canInsert, conditionAffect: result.conditionAffect };\n}\n\nfunction addKeyToPermissions(\n permissionMap: WidgetViewMap,\n key: string,\n { viewPrefix, checkCondition, conditionMaps }: CalculateViewOptions,\n defaults?: Record<string, unknown>,\n childMap?: WidgetViewMap,\n conditionAffect?: ConditionAffectValue,\n) {\n const keyAttr = getStructureKey(key, viewPrefix);\n\n if (checkCondition && conditionAffect != null) {\n permissionMap[keyAttr] = conditionAffect;\n return;\n }\n\n const addDefaultKey = defaults && Object.keys(defaults).length > 0;\n const addChildMapKey = childMap && Object.keys(childMap).length > 0;\n const conditions = getConditionsForKey(key, conditionMaps);\n\n permissionMap[keyAttr] =\n !addDefaultKey && !addChildMapKey && !conditions\n ? true\n : {\n ...(addDefaultKey && { defaults }),\n ...(addChildMapKey && { childMap }),\n ...(conditions && { conditions }),\n };\n}\n\nfunction calculatePermissionMap(\n config: WidgetStructure | Record<string, WidgetStructure>,\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n pathPrefix = '',\n viewPrefix = '',\n hasKeepOption: previousKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n) {\n const permissionMap: WidgetViewMap = {};\n const currentKeepOption = nodeHasKeepOption(config, customization, {\n viewPrefix,\n pathPrefix,\n });\n\n for (const key in config) {\n if (STRUCTURE_RESERVED_WORDS.includes(key)) {\n continue;\n }\n const hasKeepOption = previousKeepOption ?? currentKeepOption;\n const configValue = config[key];\n const currentKey = `${pathPrefix}${key}`;\n const newPrefix = `${currentKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n\n const canInsertResult = canInsertKey(\n currentKey,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n continue;\n }\n\n let defaults = prevDefaults;\n let childMap: WidgetViewMap | undefined = undefined;\n if (Array.isArray(configValue)) {\n // if it's an array, every element is a key\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n childMap = calculatePermissionMapArray(configValue, customization, {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n });\n\n Object.assign(permissionMap, childMap);\n } else if (\n typeof configValue === 'object' &&\n !Array.isArray(configValue)\n ) {\n defaults = calculateDefaults(\n prevDefaults,\n configValue.defaults as Record<string, unknown>,\n customDefaults,\n );\n // if it's an object, a recursive call is made\n childMap = calculatePermissionMap(\n configValue as WidgetStructure,\n customization,\n {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults: defaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n },\n );\n Object.assign(permissionMap, childMap);\n } else if (typeof configValue === 'boolean' && !configValue) {\n // if it's a boolean and its false, it should be ignored\n continue;\n } else if (typeof configValue === 'boolean' && configValue) {\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n }\n\n addKeyToPermissions(\n permissionMap,\n currentKey,\n {\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaults,\n childMap,\n canInsertResult.conditionAffect,\n );\n }\n\n return permissionMap;\n}\n\nfunction getConditionsForKey(\n key: string,\n conditionMaps: WidgetConditionMap[] | undefined,\n): WidgetItemCondition[] | undefined {\n if (!conditionMaps || conditionMaps.length === 0) return undefined;\n const result = conditionMaps.reduce((result, x) => {\n const mapValue = x.map[key];\n if (\n typeof mapValue === 'string' &&\n (mapValue === 'keep' || mapValue === 'remove')\n ) {\n result.push({\n effect: mapValue,\n condition: x.condition,\n });\n }\n return result;\n }, [] as WidgetItemCondition[]);\n\n if (result.length === 0) return undefined;\n return result;\n}\n\nfunction calculateConditions(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n keepAliases?: Record<string, string>,\n): WidgetConditionMap[] | undefined {\n const rootConditionals = customization?.conditional;\n const viewConditionals = view\n ? customization?.views?.[view]?.conditional\n : undefined;\n\n if (!rootConditionals && !viewConditionals) return undefined;\n\n const customConditionals = [\n ...(rootConditionals ?? []),\n ...(viewConditionals ?? []),\n ];\n return (\n customConditionals?.map((c) => ({\n condition: c.condition,\n map: calculatePermissionMap(config, c, {\n checkCondition: true,\n keepAliases,\n }),\n })) ?? undefined\n );\n}\n\nfunction calculateSubmodules(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n) {\n const viewSubmodules = view\n ? customization?.views?.[view]?.subModules\n : undefined;\n const customRootSubmodules = customization?.subModules;\n const customSubmodules = viewSubmodules\n ? mergeObjects(customRootSubmodules, viewSubmodules)\n : customRootSubmodules;\n return mergeObjects(config.subModules, customSubmodules);\n}\n\nfunction calculateCustomDefaults(\n customization?: WidgetCustomization,\n view?: string,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n const viewDefaults = view\n ? customization?.views?.[view]?.defaults\n : undefined;\n const customRootDefaults = customization?.defaults ?? {};\n const defaultObj = viewDefaults\n ? mergeObjects(customRootDefaults, viewDefaults)\n : customRootDefaults;\n if (!defaultObj || (!validationMap && !sanitize)) return defaultObj;\n return validateDefaults(defaultObj, validationMap ?? {}, sanitize);\n}\n\nfunction calculateDefaults(\n structureDefaults: Record<string, unknown> | undefined,\n itemDefaults: Record<string, unknown> | undefined,\n customDefaults: Record<string, unknown> | undefined,\n) {\n const baseDefaults = mergeObjects(structureDefaults, itemDefaults);\n return mergeObjects(baseDefaults, customDefaults);\n}\n\nfunction mergeObjects(\n prevObj: Record<string, unknown> | undefined,\n newObj: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n // if both of configurations are falsy return undefined;\n if (!newObj && !prevObj) return undefined;\n // if just the prev defaults has value, return it\n if (!newObj) return prevObj;\n // if the newDefaults value is different than an object\n if (typeof newObj !== 'object' || Array.isArray(newObj)) return prevObj;\n return !prevObj ? newObj : mergeDeep(prevObj, newObj);\n}\n\nfunction mapObjKeys(\n configValue: WidgetStructure,\n { pathPrefix }: CalculateViewOptions,\n) {\n return Object.keys(configValue).map((x) =>\n getStructureKey(`${pathPrefix}${x}`),\n );\n}\n\nfunction mapArrayKeys(\n configValue: (string | WidgetStructure)[],\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n) {\n return configValue.reduce((result, value) => {\n if (typeof value === 'string') {\n result.push(getStructureKey(`${pathPrefix}${value}`));\n } else {\n result.push(...mapObjKeys(value, { viewPrefix, pathPrefix }));\n }\n return result;\n }, [] as string[]);\n}\n\nfunction nodeHasKeepOption(\n configValue: WidgetStructure | (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n): hasKeepOptType | undefined {\n if (!customization) return;\n const nodeKeys = Array.isArray(configValue)\n ? mapArrayKeys(configValue, { viewPrefix, pathPrefix })\n : mapObjKeys(configValue, { viewPrefix, pathPrefix });\n const customizationView = viewPrefix\n ? customization?.views?.[viewPrefix]\n : undefined;\n for (const key of nodeKeys) {\n if (keyIsIncludedInKeep(key, customization)) {\n return 'root';\n } else if (\n customizationView &&\n keyIsIncludedInKeep(key, customizationView)\n ) {\n return 'view';\n }\n }\n return undefined;\n}\n\nfunction calculatePermissionMapArray(\n configValue: (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n viewPrefix,\n pathPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const hasKeepOption = nodeHasKeepOption(configValue, customization, {\n viewPrefix,\n pathPrefix,\n });\n const defaultsSimple = calculateDefaults(\n prevDefaults,\n undefined,\n customDefaults,\n );\n\n configValue.forEach((option) => {\n const fullPath = `${pathPrefix}${option}`;\n if (typeof option === 'string') {\n const canInsertResult = canInsertKey(\n fullPath,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n return;\n }\n addKeyToPermissions(\n permissionMap,\n fullPath,\n {\n viewKeys,\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaultsSimple,\n undefined,\n canInsertResult.conditionAffect,\n );\n } else {\n Object.assign(\n permissionMap,\n calculatePermissionMap(option, customization, {\n viewKeys,\n pathPrefix,\n viewPrefix,\n hasKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }),\n );\n }\n });\n return permissionMap;\n}\n","import { widgetConfigs, widgetValidators } from './constants/configs';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n Widget,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n WidgetVersion,\n} from './constants/structure.constants';\nimport { ConditionState } from './models/conditions.models';\nimport { WidgetCustomization } from './models/customization.models';\nimport { ScopeOptions, WidgetStructureScope } from './models/scope.models';\nimport {\n BuildStructureOptions,\n WidgetConfig,\n WidgetItemCondition,\n WidgetViewMap,\n} from './models/structure.models';\nimport { checkConditions } from './utils/conditions.helpers';\nimport {\n calculateRootDefaults,\n calculateViewMap,\n getWidgetStructure,\n} from './utils/structural.helpers';\n\nexport function getWidgetConfig(\n widget: Widget,\n version?: WidgetVersion,\n): WidgetConfig {\n const versionSet = version ?? WidgetVersion.latest;\n const widgetConfigurability = widgetConfigs[widget]?.[versionSet];\n if (!widgetConfigurability) {\n throw new Error(\n `No config found for widget ${widget} and version ${version}`,\n );\n }\n return widgetConfigurability;\n}\n\nexport function buildStructure(\n widget: Widget,\n customization?: WidgetCustomization,\n version?: WidgetVersion,\n options?: BuildStructureOptions,\n) {\n const config = getWidgetConfig(widget, version);\n const validationMap = options?.validationMap ?? widgetValidators[widget];\n const structureMap = getWidgetStructure(\n config,\n customization,\n validationMap,\n options,\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n customization,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(structureMap, rootDefaults);\n}\n\nexport class WidgetStructureInstance {\n constructor(\n private viewMap: WidgetViewMap,\n private rootDefaults?: Record<string, unknown>,\n ) {}\n\n private getValue(key: string) {\n return this.viewMap[key];\n }\n\n isVisible(key: string, state?: ConditionState): boolean {\n const value = this.getValue(key);\n if (!value) return false;\n if (typeof value === 'object' && value.conditions) {\n return checkConditions(\n state,\n value.conditions as WidgetItemCondition[],\n );\n }\n return true;\n }\n\n getChildMap(key: string): WidgetViewMap | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.childMap\n )\n return undefined;\n return value.childMap as WidgetViewMap;\n }\n\n getSubmodule(\n module: string,\n view?: string,\n ): WidgetCustomization | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n const value = this.getValue(key);\n return (value as Record<string, WidgetCustomization>)?.[module];\n }\n\n getDefaults(key: string): Record<string, unknown> | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.defaults\n )\n return undefined;\n return value.defaults as WidgetViewMap;\n }\n\n getRootDefaults(): Record<string, unknown> | undefined {\n return this.rootDefaults;\n }\n\n /**\n * Re-roots a resolved section (`design::downloadModal`) as plain JSON another bundle can rebuild a structure from.\n */\n scope(prefixKey: string, options: ScopeOptions = {}): WidgetStructureScope {\n const { widget, version, state } = options;\n const present = this.isVisible(prefixKey, state);\n const sectionPath =\n prefixKey.split(STRUCTURE_VIEW_NAME_SEPARATOR).pop() ?? prefixKey;\n const namespace =\n options.defaultsNamespace === undefined\n ? sectionPath.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop()\n : options.defaultsNamespace;\n const sectionDefaults = present\n ? this.getDefaults(prefixKey)\n : undefined;\n const defaults = namespace\n ? (sectionDefaults?.[namespace] as\n | Record<string, unknown>\n | undefined)\n : sectionDefaults;\n const childPrefix = `${prefixKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n const map: Record<string, boolean> = {};\n let structureVersion: string | undefined;\n\n if (widget) {\n const config = getWidgetConfig(widget, version);\n structureVersion = config.version;\n Object.keys(calculateViewMap(config.baseStructure))\n .filter((key) => key !== 'subModules')\n .forEach((key) => {\n map[key] =\n present &&\n this.isVisible(`${childPrefix}${key}`, state);\n });\n } else if (present) {\n Object.keys(this.viewMap)\n .filter((key) => key.startsWith(childPrefix))\n .forEach((key) => {\n if (this.isVisible(key, state)) {\n map[key.slice(childPrefix.length)] = true;\n }\n });\n }\n\n return JSON.parse(\n JSON.stringify({\n kind: WIDGET_STRUCTURE_SCOPE_KIND,\n format: WIDGET_STRUCTURE_SCOPE_FORMAT,\n widget,\n structureVersion,\n source: prefixKey,\n present,\n map,\n defaults,\n }),\n );\n }\n}\n","import {\n Widget,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n WIDGET_SUBMODULE_NAMES,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport { WidgetStructureScope } from '../models/scope.models';\nimport { BuildStructureOptions } from '../models/structure.models';\nimport { buildStructure, WidgetStructureInstance } from '../structural-manager';\nimport { mergeDeep } from './merge.helpers';\n\nexport type StructureInput =\n | WidgetStructureScope\n | WidgetCustomization\n | null\n | undefined;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function isWidgetStructureScope(\n value: unknown,\n): value is WidgetStructureScope {\n return isPlainObject(value) && value.kind === WIDGET_STRUCTURE_SCOPE_KIND;\n}\n\n/**\n * Turns a resolved scope back into a customization of the widget it lists: hidden keys become an explicit remove list.\n */\nexport function scopeToCustomization(\n scope: WidgetStructureScope,\n): WidgetCustomization {\n const remove = scope.present\n ? Object.keys(scope.map ?? {}).filter((key) => scope.map[key] === false)\n : ['*'];\n return {\n ...(remove.length ? { remove } : {}),\n ...(scope.defaults ? { defaults: scope.defaults } : {}),\n };\n}\n\n/**\n * Extracts a section of a host's customization as a customization of the embedded widget, by evaluating it with the host's engine.\n */\nexport function extractCustomization(\n host: Widget,\n customization: WidgetCustomization | undefined,\n prefixKey: string,\n target: Widget,\n options?: BuildStructureOptions,\n): WidgetCustomization {\n const hostStructure = buildStructure(\n host,\n customization,\n undefined,\n options,\n );\n return scopeToCustomization(\n hostStructure.scope(prefixKey, { widget: target }),\n );\n}\n\nfunction submoduleOf(\n input: WidgetCustomization,\n module: string,\n view?: string,\n): WidgetCustomization | undefined {\n const root = input.subModules?.[module];\n const fromView = view\n ? input.views?.[view]?.subModules?.[module]\n : undefined;\n if (!fromView) return root;\n return root ? mergeDeep(root, fromView) : fromView;\n}\n\n/**\n * Builds an embedded widget's structure from what its host passes: a resolved scope, a raw customization of the widget, or a host\n * customization carrying the widget under subModules. Returns undefined for no input or an invalid one, so the receiver keeps its\n * legacy behaviour.\n */\nexport function structureFrom(\n widget: Widget,\n input: unknown,\n view?: string,\n version?: WidgetVersion,\n): WidgetStructureInstance | undefined {\n if (input === undefined || input === null) return undefined;\n try {\n if (!isPlainObject(input)) {\n throw new Error('expected an object');\n }\n if ('kind' in input) {\n if (!isWidgetStructureScope(input)) {\n throw new Error(`unknown kind ${String(input.kind)}`);\n }\n if (input.format !== WIDGET_STRUCTURE_SCOPE_FORMAT) {\n throw new Error(`unknown scope format ${input.format}`);\n }\n if (input.widget && input.widget !== widget) {\n throw new Error(`scope of ${input.widget}, expected ${widget}`);\n }\n return buildStructure(widget, scopeToCustomization(input), version);\n }\n const customization = input as WidgetCustomization;\n const module = WIDGET_SUBMODULE_NAMES[widget];\n const submodule = module\n ? submoduleOf(customization, module, view)\n : undefined;\n return buildStructure(widget, submodule ?? customization, version);\n } catch (error) {\n console.warn(\n `[widget-configurability] ignoring the ${widget} customization: ${(error as Error).message}`,\n );\n return undefined;\n }\n}\n\n/**\n * Builds the structure of a widget a host embeds as a submodule (chartPanel, chartGallery, chartBuilder, downloadModal).\n */\nexport function structureFromSubmodule(\n parent: WidgetStructureInstance,\n module: string,\n view?: string,\n options?: BuildStructureOptions,\n): WidgetStructureInstance {\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === module,\n );\n if (!widget) {\n throw new Error(`No widget registered for the submodule ${module}`);\n }\n return buildStructure(\n widget,\n parent.getSubmodule(module, view),\n undefined,\n options,\n );\n}\n","import { WidgetStructureInstance } from '../structural-manager';\nimport { DownloadModalKey } from '../structures/download-modal.structure.v1';\n\nexport interface DownloadModalResolvedConfig {\n schedule: boolean;\n subscribe: boolean;\n banner: boolean;\n owner: boolean;\n subscribeOwner: boolean;\n organization: boolean;\n myself: boolean;\n specificPeople: boolean;\n externalUsers: boolean;\n subscribeMyselfDefault: boolean;\n}\n\nexport interface ResolveDownloadModalOptions {\n // False where the host never shows the organization checkbox (embedded), so it counts as hidden for the section rule.\n organizationAvailable?: boolean;\n // True only on a non-owner edit, the one place the \"Subscribe owner\" checkbox exists.\n subscribeOwnerAvailable?: boolean;\n}\n\n/**\n * The export modal's visibility rules: Schedule hides Subscribe, and Subscribe hides when it has nothing left to show.\n */\nexport function resolveDownloadModalConfig(\n structure: WidgetStructureInstance,\n {\n organizationAvailable = true,\n subscribeOwnerAvailable = false,\n }: ResolveDownloadModalOptions = {},\n): DownloadModalResolvedConfig {\n const visible = (key: DownloadModalKey) => structure.isVisible(key);\n const elements = {\n banner: visible('qSubscribeBanner'),\n owner: visible('qOwnerLabel'),\n subscribeOwner: visible('qSubscribeOwner'),\n organization: visible('qSubscribeOrganization'),\n myself: visible('qSubscribeMyself'),\n specificPeople: visible('qSubscribeSpecificPeople'),\n };\n const schedule = visible('qScheduleOption');\n const anyElement =\n elements.banner ||\n elements.owner ||\n (subscribeOwnerAvailable && elements.subscribeOwner) ||\n (organizationAvailable && elements.organization) ||\n elements.myself ||\n elements.specificPeople;\n return {\n ...elements,\n schedule,\n subscribe: schedule && visible('qSubscribeOption') && anyElement,\n externalUsers: visible('qSubscribeExternalUsers'),\n // A rejected value comes back undefined, which keeps the checkbox checked as it always started.\n subscribeMyselfDefault:\n structure.getRootDefaults()?.subscribeMyself !== false,\n };\n}\n","type DecoratorFactory = (metadata?: any) => PropertyDecorator;\n\nlet ApiProperty: DecoratorFactory;\n\n// module.require keeps bundlers from hoisting the optional swagger peer into a static browser import.\nconst nodeRequire = typeof module !== 'undefined' && typeof module.require === 'function' ? module.require.bind(module) : undefined;\n\ntry {\n ApiProperty = nodeRequire!('@nestjs/swagger').ApiProperty;\n} catch {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiProperty = (metadata?: unknown): PropertyDecorator => {\n return (): void => {};\n };\n}\n\nexport { ApiProperty };\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/constants/structure.constants.ts","../../src/utils/defaults.helpers.ts","../../src/structures/download-modal.structure.v1.ts","../../src/structures/dashboard.structure.v1.ts","../../src/structures/download-manager.structure.v1.ts","../../src/structures/report.structure.v1.ts","../../src/structures/chart-panel.structure.v1.ts","../../src/structures/chart-gallery.structure.v1.ts","../../src/structures/chart-builder.structure.v1.ts","../../src/constants/configs.ts","../../src/models/conditions.models.ts","../../src/utils/conditions.helpers.ts","../../src/utils/merge.helpers.ts","../../src/utils/layers.helpers.ts","../../src/utils/logger.helpers.ts","../../src/utils/structural.helpers.ts","../../src/structural-manager.ts","../../src/utils/scope.helpers.ts","../../src/validation/customization.validator.ts","../../src/remote/remote-customization.loader.ts","../../src/doc/swagger.optional.ts"],"names":["STRUCTURE_SECTION_NAME_SEPARATOR","STRUCTURE_VIEW_NAME_SEPARATOR","STRUCTURE_RESERVED_WORDS","Widget","WIDGET_SUBMODULE_NAMES","WIDGET_STRUCTURE_SCOPE_KIND","WIDGET_STRUCTURE_SCOPE_FORMAT","WidgetVersion","FONT_SIZES","applyValidation","currentObj","validatorMap","parentKey","sanitize","validatedObj","Object","keys","forEach","key","fullKey","value","Array","isArray","validateDefaults","obj","isANumber","_value","Number","isNaN","undefined","numberMinMaxValue","maxValue","minValue","fontSizeMinMaxValue","minSize","maxSize","inputSize","parseInt","includes","validFontSizes","filter","size","length","closestSize","smallestDiff","Math","abs","diff","fontColorValue","normalizedColor","toLowerCase","validateBoolean","validateUnsavedChangesBehavior","validateType","validValues","receivedValue","toUpperCase","DX_VALIDATOR_MAP","unsavedChangesBehavior","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_KEEP_INHERITANCE","qSubscribeBanner","qOwnerLabel","qSubscribeOwner","qSubscribeOrganization","qSubscribeMyself","qSubscribeSpecificPeople","hostKeepInheritance","section","fromEntries","entries","map","alias","DOWNLOAD_MODAL_V1_DEFAULTS","downloadModalV1Config","version","keepInheritance","baseStructure","defaults","DOWNLOAD_MODAL_HOST_KEYS","dashboardV1Config","views","list","design","preview","endUser","navBar","endUserTopBar","assetList","assetListViewMode","asset","optionMenu","card","table","canvas","removeElement","dragElement","resizeElement","controlBarLeft","controlBarRight","header","qOptionsMenu","menuBar","file","qCreateDataset","qMnuDownloadDash","edit","grid","insert","qMnuInsertChart","qMnuInsertFilterCtrl","qMnuInsertShape","qMnuArrange","qMnuAlign","toolBar","qInsertChart","qInsertFilterCtrl","qInsertShape","qDownloadDash","qArrange","qResponsiveView","qAlign","qQvTokenExpiredMessage","qGoToDashBackButton","configPanel","filterPanel","qAddFilter","qEnabDisabAllFilters","qDeleteAllFilters","qFilterSettings","viewOnlyFilterScope","dashFilterScope","tabFilterScope","containerFilterScope","panelFilterScope","downloadModal","duplicateModal","options","qCharts","qFilters","qDashActions","subModules","chartPanel","chartGallery","chartBuilder","downloadManagerV1Config","main","detail","controlBar","filters","qFilterByFileType","qFilterByExecution","qFilterByWidget","qFilterByAsset","qFilterByOrganization","qFilterByOwner","qSearch","qRemoveFilters","qScheduleDetail","qFilesExported","qMoreInfo","bottomBar","moreInfoModal","reportV1Config","tabBar","qDownloadReport","dataPanel","tabDataset","tabParameters","repoFilterScope","optionMenuChildren","qDownloadChart","headerConfig","qFilter","optionDateGrouping","floatingMenuConfig","item","chartPanelV1Config","floatingMenu","menuLayout","body","chartGalleryV1Config","chartTypeFilter","showSummary","inputSearch","switch","title","chartBuilderV1Config","widgetConfigs","DASHBOARD","v1","latest","REPORT","DOWNLOAD_MANAGER","DOWNLOAD_MODAL","CHART_PANEL","CHART_GALLERY","CHART_BUILDER","widgetValidators","allowedOperators","isOperator","getValue","condition","state","field","_evalConditionOperator","operator","OPERATOR_MAP","a","b","startsWith","endsWith","contains","evaluateCondition","conditions","every","c","_evalCondition","evalFn","checkConditions","cond","effect","result","mergeDeep","obj1","obj2","settings","_a","defaultSettings","mergeExistingValues","mergeMissingProperties","isValid","objectCopy","val1","val2","isObject","prototype","hasOwnProperty","call","toString","SUBMODULES_KEY","isPlainObject","stringList","normalizeCondition","conditionValue","normalizeSubmodules","name","submodule","normalizeLayer","allowViews","layer","remove","keep","conditional","flatMap","rest","view","viewLayer","mergeDefaults","previous","next","mergeLayerDefaults","layers","last","viewNames","Set","rootDefaults","reduce","merged","viewDefaults","effective","isSubmodulesKey","asItemObject","intersectItem","current","other","otherItem","childMap","intersectViewMaps","hasDefaults","hasChildMap","collectSubmoduleLayers","maps","collection","LOG_PREFIX","logWarning","message","console","warn","getWidgetStructure","config","customization","validationMap","calculateViewMap","permissionMap","keepAliases","assign","calculateSpecificViewMap","customDefaults","calculateCustomDefaults","prevDefaults","submodules","calculateSubmodules","conditionMaps","calculateConditions","calculatePermissionMap","calculateRootDefaults","calculateDefaults","viewDefinition","viewConditionals","viewKeys","viewPrefix","getViewPrefix","getStructureKey","viewValue","matchWildcard","pattern","regexPattern","RegExp","replace","test","keyIsIncludedInKeep","keyIsIncludedInRemove","canInsertInCustomization","validateKeepOption","includedInRemove","includedInKeep","canInsert","keepValue","keepResult","conditionAffect","evalInsertKey","hasKeepOption","customizationView","custCanInsert","custViewCanInsert","some","x","canInsertKey","checkCondition","addKeyToPermissions","keyAttr","addDefaultKey","addChildMapKey","getConditionsForKey","pathPrefix","previousKeepOption","currentKeepOption","nodeHasKeepOption","configValue","currentKey","newPrefix","canInsertResult","calculatePermissionMapArray","mapValue","push","rootConditionals","customConditionals","viewSubmodules","customRootSubmodules","customSubmodules","mergeObjects","customRootDefaults","defaultObj","structureDefaults","itemDefaults","baseDefaults","prevObj","newObj","mapObjKeys","mapArrayKeys","nodeKeys","defaultsSimple","option","fullPath","getWidgetConfig","widget","versionSet","widgetConfigurability","Error","buildStructure","buildLayeredStructure","error","structureMap","WidgetStructureInstance","inline","engineOptions","layerMaps","layerMap","constructor","viewMap","submoduleLayers","isVisible","getChildMap","getSubmodule","module","getSubmoduleLayers","getDefaults","getRootDefaults","scope","prefixKey","present","sectionPath","split","pop","namespace","defaultsNamespace","sectionDefaults","childPrefix","structureVersion","slice","JSON","parse","stringify","kind","format","source","isWidgetStructureScope","scopeToCustomization","extractCustomization","host","target","hostStructure","submoduleOf","input","root","fromView","structureFrom","String","structureFromSubmodule","parent","find","ROOT_PROPERTIES","VIEW_PROPERTIES","CONDITIONAL_PROPERTIES","CONDITION_PROPERTIES","KEY_CHARS","ROOT_SCOPE","oneOf","values","DX_WRITE_VALIDATOR_MAP","changeLayout","writeValidators","keyCache","Map","structureKeys","cached","get","byView","entry","separator","indexOf","has","set","add","resolveConfig","versions","match","createScope","levenshtein","from","_","i","diagonal","j","above","min","suggestKey","candidates","leaf","best","bestDistance","max","floor","candidate","distance","formatCustomizationPath","path","part","Collector","errors","code","suggestion","severity","describeScope","owner","patternError","trim","inner","validateKeyList","collector","index","itemPath","invalid","safeValidate","validator","validateDefaultsObject","validators","walk","node","parents","keyPath","join","validateProperties","allowed","validateCondition","validateBlock","property","validateSubmodules","validateViews","valid","subPath","isEmptyCustomization","hasItems","nested","validateCustomization","allowEmpty","CUSTOMIZATIONS_API_PATH","DEFAULT_CUSTOMIZATION_ID","DEFAULT_TIMEOUT_MS","WIDGET_PATTERN","CONTEXT_PATTERN","CUSTOMIZATION_ID_PATTERN","TIMEOUT","Symbol","requestCache","clearRemoteCustomizationCache","clear","isValidCustomizationId","baseUrl","apiDomain","domain","buildHeaders","apiKey","qvToken","headers","Accept","Authorization","isDefinition","request","url","fetchFn","globalThis","fetch","timeoutMs","controller","AbortController","timer","timeout","Promise","reject","setTimeout","abort","catch","response","race","method","signal","status","ok","json","definition","clearTimeout","cachedRequest","useCache","cache","pending","then","delete","definitionUrl","id","encodeURIComponent","contextUrl","context","loadDefault","foundStatus","explicit","loadRemoteCustomization","customizationId","remoteCustomizationLayers","ApiProperty","nodeRequire","require","bind","metadata","ViewsDto","type","description","example","AssetListDto","MenuBarDto","FilterPanelDto","SubModulesDto","BaseDashboardV1StructureDto"],"mappings":"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","file":"index.mjs","sourcesContent":["export const STRUCTURE_SECTION_NAME_SEPARATOR = '.';\nexport const STRUCTURE_VIEW_NAME_SEPARATOR = '::';\nexport const STRUCTURE_RESERVED_WORDS = ['views', 'defaults', 'subModules'];\n\nexport enum Widget {\n DASHBOARD = 'dashboard',\n REPORT = 'report',\n DOWNLOAD_MANAGER = 'download-manager',\n DOWNLOAD_MODAL = 'download-modal',\n CHART_PANEL = 'chart-panel',\n CHART_GALLERY = 'chart-gallery',\n CHART_BUILDER = 'chart-builder',\n}\n\n// The subModules key a host uses for each widget it embeds.\nexport const WIDGET_SUBMODULE_NAMES: Partial<Record<Widget, string>> = {\n [Widget.DOWNLOAD_MODAL]: 'downloadModal',\n [Widget.CHART_PANEL]: 'chartPanel',\n [Widget.CHART_GALLERY]: 'chartGallery',\n [Widget.CHART_BUILDER]: 'chartBuilder',\n};\n\nexport const WIDGET_STRUCTURE_SCOPE_KIND = 'qrvey.widget-structure-scope';\nexport const WIDGET_STRUCTURE_SCOPE_FORMAT = 1;\n\nexport enum WidgetVersion {\n v1 = '1.0',\n latest = 'latest',\n}\n","import { SanitizeFn, ValidationMap } from '../models/structure.models';\n\nexport type { ValidationMap } from '../models/structure.models';\n\nconst FONT_SIZES: number[] = [\n 8, 9, 10, 11, 12, 14, 15, 16, 18, 24, 30, 36, 48, 60, 72, 96,\n];\n\nfunction applyValidation(\n currentObj: Record<string, unknown>,\n validatorMap: ValidationMap,\n parentKey = '',\n sanitize?: SanitizeFn,\n): Record<string, unknown> {\n const validatedObj: Record<string, unknown> = {};\n\n Object.keys(currentObj).forEach((key) => {\n const fullKey = parentKey ? `${parentKey}.${key}` : key;\n const value = currentObj[key];\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n validatedObj[key] = applyValidation(\n value as Record<string, unknown>,\n validatorMap,\n fullKey,\n sanitize,\n );\n } else if (validatorMap[fullKey]) {\n validatedObj[key] = validatorMap[fullKey](value);\n } else {\n validatedObj[key] =\n sanitize && typeof value === 'string' ? sanitize(value) : value;\n }\n });\n\n return validatedObj;\n}\n\nexport function validateDefaults(\n obj: Record<string, unknown>,\n validatorMap: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n return applyValidation(obj, validatorMap, '', sanitize);\n}\n\nconst isANumber = (value: string | number) => {\n const _value = Number(value);\n if (!_value || isNaN(_value)) return undefined;\n return _value;\n};\n\nconst numberMinMaxValue =\n (maxValue: number, minValue?: number) => (value: string) => {\n const _value = isANumber(value);\n if (!_value) return undefined;\n if (minValue && _value < minValue) return minValue;\n if (_value > maxValue) return maxValue;\n return _value;\n };\n\nexport const fontSizeMinMaxValue =\n (minSize: number, maxSize: number) =>\n (value: string): string | undefined => {\n const inputSize = parseInt(value, 10);\n // Check if the inputSize is valid and within range\n if (\n FONT_SIZES.includes(inputSize) &&\n inputSize >= minSize &&\n inputSize <= maxSize\n ) {\n return `${inputSize}px`;\n }\n\n // Filter FONT_SIZES by min and max\n const validFontSizes = FONT_SIZES.filter(\n (size) => size >= minSize && size <= maxSize,\n );\n\n if (validFontSizes.length === 0) {\n return undefined;\n }\n\n // Find the closest font size\n let closestSize = validFontSizes[0];\n let smallestDiff = Math.abs(inputSize - closestSize);\n\n for (const size of validFontSizes) {\n const diff = Math.abs(inputSize - size);\n if (diff < smallestDiff) {\n smallestDiff = diff;\n closestSize = size;\n }\n }\n\n // Return the closest font size as a string with 'px'\n return `${closestSize}px`;\n };\nexport const fontColorValue = (value: unknown) => {\n // A color that is not text is dropped instead of throwing (QRV-749 review).\n if (typeof value !== 'string') return undefined;\n const normalizedColor = value.toLowerCase();\n return normalizedColor;\n};\n\nexport const validateBoolean = (value: unknown): boolean | undefined =>\n typeof value === 'boolean' ? value : undefined;\n\nconst validateUnsavedChangesBehavior = (value: unknown): string | undefined => {\n if (typeof value !== 'string') return undefined;\n return ['prompt', 'autoSave', 'discard'].includes(value)\n ? value\n : undefined;\n};\n\nconst validateType = (validValues: string[]) => (value: unknown) => {\n if (typeof value !== 'string') return undefined;\n const receivedValue = value.toUpperCase();\n return validValues.includes(receivedValue) ? receivedValue : undefined;\n};\n\nexport const DX_VALIDATOR_MAP: ValidationMap = {\n 'customStyles.header.height': numberMinMaxValue(300, 10),\n 'customStyles.text.fontSize': fontSizeMinMaxValue(8, 96),\n 'customStyles.text.fontColor': fontColorValue,\n 'customStyles.container.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.line.lineWidth': numberMinMaxValue(20, 1),\n 'customStyles.rectangle.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.ellipse.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.container.borderRadius': numberMinMaxValue(100, 0),\n\n // Filter Controls: MULTISELECT LIST\n 'customStyles.filterList.type': validateType(['LIST', 'DROPDOWN']),\n 'customStyles.filterList.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: INPUTBOX\n 'customStyles.filterInput.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: DATE\n 'customStyles.filterDate.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Unsaved Changes Behavior\n unsavedChangesBehavior: validateUnsavedChangesBehavior,\n\n // Download modal\n 'downloadModal.subscribeMyself': validateBoolean,\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n};\n","import { WidgetConfig } from '../models/structure.models';\n\n// Keys of the export modal (qui-schedule-exporting-modal) at its own root; hosts import them under their downloadModal section.\nexport const DOWNLOAD_MODAL_V1_KEYS = [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n 'qSubscribeBanner',\n 'qOwnerLabel',\n 'qSubscribeOwner',\n 'qSubscribeOrganization',\n 'qSubscribeMyself',\n 'qSubscribeSpecificPeople',\n 'qIncludeHyperlinks',\n 'qIncludeHeader',\n] as const;\n\nexport type DownloadModalKey = (typeof DOWNLOAD_MODAL_V1_KEYS)[number];\n\n// The Subscribe elements split what qSubscribeOption controlled, so a keep list naming it keeps them too.\nexport const DOWNLOAD_MODAL_V1_KEEP_INHERITANCE: Record<\n string,\n DownloadModalKey\n> = {\n qSubscribeBanner: 'qSubscribeOption',\n qOwnerLabel: 'qSubscribeOption',\n qSubscribeOwner: 'qSubscribeOption',\n qSubscribeOrganization: 'qSubscribeOption',\n qSubscribeMyself: 'qSubscribeOption',\n qSubscribeSpecificPeople: 'qSubscribeOption',\n};\n\n// The same aliases for a host that lists the modal keys under one of its sections.\nexport const hostKeepInheritance = (\n section = 'downloadModal',\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(DOWNLOAD_MODAL_V1_KEEP_INHERITANCE).map(\n ([key, alias]) => [`${section}.${key}`, `${section}.${alias}`],\n ),\n );\n\nexport const DOWNLOAD_MODAL_V1_DEFAULTS = {\n subscribeMyself: true,\n};\n\nconst downloadModalV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: DOWNLOAD_MODAL_V1_KEEP_INHERITANCE,\n baseStructure: {\n defaults: { ...DOWNLOAD_MODAL_V1_DEFAULTS },\n ...Object.fromEntries(DOWNLOAD_MODAL_V1_KEYS.map((key) => [key, true])),\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\n// The download modal's keys come from its own structure; qExportVersion and the two warnings are DashboardX's slot content.\nconst DOWNLOAD_MODAL_HOST_KEYS = [\n 'qExportVersion',\n 'qSavedVersionWarning',\n 'qUnsavedVersionWarning',\n];\n\nconst dashboardV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n list: [\n 'navBar',\n 'assetList',\n 'controlBarLeft',\n 'controlBarRight',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n design: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n preview: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'filterPanel',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n endUser: [\n 'navBar',\n 'toolBar',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n },\n\n navBar: ['qAppTitle', 'qBackButton'],\n\n endUserTopBar: ['indicator', 'options'],\n\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditDash',\n 'qUseDash',\n 'qRenameDash',\n 'qDeleteDash',\n 'qDuplDash',\n 'qDuplDashAndCharts',\n 'qManageSharing',\n 'qManageTags',\n ],\n card: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n table: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n },\n },\n\n canvas: {\n defaults: {\n removeElement: true,\n dragElement: true,\n resizeElement: true,\n },\n },\n\n controlBarLeft: ['qCreateDash'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qFilterByTags',\n 'qSortBy',\n 'qSearch',\n 'qSelectColumn',\n 'qStatus',\n 'qPreview',\n 'qDiscard',\n 'qPublish',\n 'qUnpublish',\n 'qSwitchMode',\n 'qDesign',\n 'qDownloadList',\n ],\n\n header: [\n 'qDashFavorite',\n 'qSharingIcon',\n 'qDashName',\n 'qDashDesc',\n 'qTags',\n {\n qOptionsMenu: [\n 'qDuplDash',\n 'qDeleteDash',\n 'qManageSharing',\n 'qManageTags',\n ],\n },\n ],\n\n menuBar: {\n file: [\n 'qMnuCreateDash',\n 'qMnuOpenDash',\n 'qMnuDuplicateDash',\n 'qMnuDuplicateDashAndCharts',\n 'qMnuCanvasSize',\n 'qMnuThemes',\n 'qManageSharing',\n 'qManageTags',\n 'qMnuDeleteDash',\n {\n qCreateDataset: [\n 'qCreateCustomDataset',\n 'qViewCustomDataset',\n ],\n qMnuDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n },\n ],\n edit: [\n 'qUndoRedo',\n 'qCopyElement',\n 'qPasteElement',\n 'qCutElement',\n 'qRemoveElement',\n 'qDuplElement',\n 'qSelectAllElem',\n 'qSelectAllContElem',\n ],\n grid: ['qMnuSnapToGrid', 'qMnuDisplayGrid', 'qMnuSwitchGrid'],\n insert: [\n {\n qMnuInsertChart: [\n 'qMnuExistingChart',\n 'qMnuNewChart',\n 'qMnuNewChartAI',\n ],\n qMnuInsertFilterCtrl: [\n 'qMnuDatePicker',\n 'qMnuInputBox',\n 'qMnuMultiSelectList',\n 'qMnuSingleSelectList',\n ],\n qMnuInsertShape: [\n 'qMnuLine',\n 'qMnuRectangle',\n 'qMnuEllipse',\n ],\n },\n 'qMnuInsertText',\n 'qMnuInsertImage',\n 'qMnuInsertButton',\n 'qMnuInsertContainer',\n 'qMnuInsertHeader',\n 'qMnuInsertTabs',\n ],\n qMnuArrange: [\n 'qMnuBringToFront',\n 'qMnuSendToBack',\n {\n qMnuAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n },\n ],\n },\n toolBar: [\n 'qCanvasSize',\n {\n qInsertChart: ['qExistingChart', 'qNewChart', 'qNewChartAI'],\n qInsertFilterCtrl: [\n 'qDatePicker',\n 'qInputBox',\n 'qMultiSelectList',\n 'qSingleSelectList',\n ],\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qSnapToGrid', 'qDisplayGrid', 'qSwitchGrid'],\n qDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qResponsiveView: [\n 'qDesktop',\n 'qTablet',\n 'qMobile',\n 'qBreakpoints',\n ],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qCreateDataset: ['qCreateCustomDataset', 'qViewCustomDataset'],\n },\n 'qInsertText',\n 'qInsertImage',\n 'qInsertButton',\n 'qInsertContainer',\n 'qRespGridMargins',\n 'qRespGridColumns',\n 'qThemes',\n 'qUndoRedo',\n\n // only for end user\n 'qDashVersion',\n 'qGetDashVersion',\n 'qSourceDashBanner',\n 'qHiddenItems',\n 'qDiscard',\n 'qSave',\n 'qSwitchMode',\n 'qHideToolBar',\n 'qDownloadList',\n 'qChangeLayout',\n ],\n qQvTokenExpiredMessage: true,\n qGoToDashBackButton: true,\n configPanel: true,\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n viewOnlyFilterScope: true,\n dashFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n containerFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS, ...DOWNLOAD_MODAL_HOST_KEYS],\n duplicateModal: [\n 'qCharts',\n 'qFilters',\n 'qDashActions',\n {\n options: {\n defaults: {\n qCharts: true,\n qFilters: true,\n qDashActions: true,\n },\n },\n },\n ],\n subModules: {\n chartPanel: {},\n chartGallery: {},\n chartBuilder: {},\n },\n },\n};\n\nexport default dashboardV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\nconst downloadManagerV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n main: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'downloadModal',\n ],\n detail: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'bottomBar',\n 'downloadModal',\n ],\n },\n header: ['qTitle'],\n controlBar: {\n defaults: {\n filters: {},\n },\n qFilterByFileType: [\n 'qTypePDF',\n 'qTypeJPG',\n 'qTypeCSV',\n 'qTypeExcel',\n 'qTypeZIP',\n ],\n qFilterByExecution: ['qExecScheduled', 'qExecOthers'],\n qFilterByWidget: [\n 'qWidgetAnalyze',\n 'qWidgetAutomation',\n 'qWidgetDash',\n 'qWidgetLegacyDash',\n 'qWidgetSubscriptions',\n 'qWidgetPPR',\n ],\n qFilterByAsset: true,\n qFilterByOrganization: true,\n qFilterByOwner: true,\n qSearch: true,\n qRemoveFilters: true,\n qScheduleDetail: true,\n qFilesExported: true,\n qMoreInfo: true,\n },\n\n assetList: {\n asset: [\n {\n optionMenu: [\n 'qDelete',\n 'qMoreInfo',\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n table: [\n 'qType',\n 'qSchedule',\n 'qSize',\n 'qCreationDate',\n 'qExpirationDate',\n 'qDownload',\n 'qOrganization',\n 'qOwner',\n ],\n },\n 'qDrillToDetail',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n },\n\n bottomBar: [\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qDelete',\n ],\n\n // The export modal's own keys, so a scope of this section carries all of them.\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS],\n\n moreInfoModal: [\n 'qFileType',\n 'qSource',\n 'qOwner',\n 'qApplication',\n 'qPath',\n 'qOrganization',\n 'qErrorMessage',\n ],\n },\n};\n\nexport default downloadManagerV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst reportV1Config: WidgetConfig = {\n version: '1.0',\n\n baseStructure: {\n views: {\n list: ['navBar', 'assetList', 'controlBarLeft', 'controlBarRight'],\n design: [\n 'navBar',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'dataPanel',\n ],\n preview: [\n 'navBar',\n 'tabBar',\n 'toolBar',\n 'pagePreview',\n 'controlBarRight',\n 'downloadModal',\n ],\n },\n navBar: ['qAppTitle', 'qBackButton'],\n tabBar: ['qTabSelector', 'qScrollButton'],\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditRep',\n 'qRenameRep',\n 'qDeleteRep',\n 'qDuplRep',\n ],\n },\n },\n\n controlBarLeft: ['qCreateRep'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qSortBy',\n 'qSearch',\n 'qPreview',\n 'qDesign',\n ],\n\n menuBar: {\n edit: ['qCopyElement', 'qPasteElement'],\n },\n toolBar: [\n 'qPageSetup',\n {\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qDisplayRuler', 'qDisplayGrid'],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qDownloadReport: [\n 'qReportPDF',\n 'qReportExcel',\n ],\n },\n 'qUndoRedo',\n 'qInsertDTable',\n 'qInsertSTable',\n 'qInsertImage',\n 'qInsertText',\n 'qInsertPageGroup',\n 'qInsertFormula',\n 'qInsertBucket',\n 'qInsertPageBreak',\n ],\n configPanel: true,\n dataPanel: {\n tabDataset: ['qChangeDataSet', 'qSearch'],\n tabParameters: ['qAddParameter', 'qSearch'],\n },\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n repoFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n ],\n },\n};\n\nexport default reportV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst optionMenuChildren = [\n 'qEditChart',\n 'qDuplicateChart',\n {\n qDownloadChart: [\n 'qChartJPG',\n 'qChartPDF',\n 'qChartCSV',\n 'qChartSummary',\n 'qChartExcel',\n ],\n },\n];\n\nconst headerConfig = [\n 'qChartName',\n 'qFitPanel',\n 'qChartSelection',\n 'qColumnSection',\n 'qSorting',\n 'qColumnReplacement',\n 'qColumnAggregation',\n 'qColumnGrouping',\n 'qDateGrouping',\n 'qColumnSelection',\n 'qResetColumnsWidth',\n 'qSmartAnalyzer',\n { optionMenu: optionMenuChildren },\n {\n qFilter: [\n 'qAddFilter',\n { dashFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { tabFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { panelFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n ],\n },\n {\n optionDateGrouping: [\n 'qDayOnly',\n 'qMonth',\n 'qMonthOnly',\n 'qQuarter',\n 'qQuarterOnly',\n 'qWeek',\n 'qYear',\n 'qDay',\n 'qHour',\n 'qHourOnly',\n 'qMinute',\n 'qMinuteOnly',\n 'qSecond',\n 'qSecondOnly',\n ],\n },\n];\n\nconst floatingMenuConfig = [\n ...headerConfig.filter(\n (item) => typeof item !== 'object' || !('optionMenu' in item),\n ),\n ...optionMenuChildren,\n];\n\nconst chartPanelV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n header: headerConfig,\n floatingMenu: floatingMenuConfig,\n menuLayout: { defaults: { menuLayout: undefined } },\n body: ['actions', 'qComparativeAnalysis'],\n },\n};\n\nexport default chartPanelV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartGalleryV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartGalleryV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartBuilderV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartBuilderV1Config;\n","import { Widget, WidgetVersion } from './structure.constants';\nimport { WidgetConfigsMap } from './widget.config';\nimport { ValidationMap } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_VALIDATOR_MAP,\n DX_VALIDATOR_MAP,\n} from '../utils/defaults.helpers';\nimport dashboardV1Config from '../structures/dashboard.structure.v1';\nimport downloadManagerV1Config from '../structures/download-manager.structure.v1';\nimport reportV1Config from '../structures/report.structure.v1';\nimport downloadModalV1Config from '../structures/download-modal.structure.v1';\nimport chartPanelV1Config from '../structures/chart-panel.structure.v1';\nimport chartGalleryV1Config from '../structures/chart-gallery.structure.v1';\nimport chartBuilderV1Config from '../structures/chart-builder.structure.v1';\n\nexport const widgetConfigs: WidgetConfigsMap = {\n [Widget.DASHBOARD]: {\n [WidgetVersion.v1]: dashboardV1Config,\n [WidgetVersion.latest]: dashboardV1Config,\n },\n [Widget.REPORT]: {\n [WidgetVersion.v1]: reportV1Config,\n [WidgetVersion.latest]: reportV1Config,\n },\n [Widget.DOWNLOAD_MANAGER]: {\n [WidgetVersion.v1]: downloadManagerV1Config,\n [WidgetVersion.latest]: downloadManagerV1Config,\n },\n [Widget.DOWNLOAD_MODAL]: {\n [WidgetVersion.v1]: downloadModalV1Config,\n [WidgetVersion.latest]: downloadModalV1Config,\n },\n [Widget.CHART_PANEL]: {\n [WidgetVersion.v1]: chartPanelV1Config,\n [WidgetVersion.latest]: chartPanelV1Config,\n },\n [Widget.CHART_GALLERY]: {\n [WidgetVersion.v1]: chartGalleryV1Config,\n [WidgetVersion.latest]: chartGalleryV1Config,\n },\n [Widget.CHART_BUILDER]: {\n [WidgetVersion.v1]: chartBuilderV1Config,\n [WidgetVersion.latest]: chartBuilderV1Config,\n },\n};\n\n// Validators applied to customization defaults when the caller passes none; the analytics widgets never validated theirs.\nexport const widgetValidators: Partial<Record<Widget, ValidationMap>> = {\n [Widget.DASHBOARD]: DX_VALIDATOR_MAP,\n [Widget.REPORT]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MANAGER]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MODAL]: DOWNLOAD_MODAL_VALIDATOR_MAP,\n};\n","export const allowedOperators = [\n '=',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'startsWith',\n 'endsWith',\n 'contains',\n] as const;\nexport type Operators = (typeof allowedOperators)[number];\n\nexport type ConditionValue = string | number;\n\nexport interface Condition {\n field: string;\n operator: Operators;\n value: ConditionValue;\n}\n\nexport type ConditionState = Record<string, ConditionValue>;\n\nexport type OperatorConditionFn = (\n value: Condition,\n state: Record<string, ConditionValue>,\n) => boolean;\n","import {\n Condition,\n ConditionState,\n ConditionValue,\n OperatorConditionFn,\n Operators,\n allowedOperators,\n} from '../models/conditions.models';\nimport { WidgetItemCondition } from '../models/structure.models';\n\nfunction isOperator(value: string): value is Operators {\n return allowedOperators.includes(value as Operators);\n}\n\nfunction getValue(condition: Condition, state: ConditionState): ConditionValue {\n return state[condition.field];\n}\n\nfunction _evalConditionOperator(\n condition: Condition,\n state: ConditionState,\n operator: (a: ConditionValue, b: ConditionValue) => boolean,\n): boolean {\n const value = getValue(condition, state);\n if (value == null) return false;\n return operator(value, condition.value);\n}\n\nconst OPERATOR_MAP: Record<Operators, OperatorConditionFn> = {\n '=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a == b),\n '!=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a != b),\n '<': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a < b),\n '<=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a <= b),\n '>': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a > b),\n '>=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a >= b),\n\n startsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' &&\n typeof b === 'string' &&\n a.startsWith(b),\n ),\n\n endsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.endsWith(b),\n ),\n\n contains: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.includes(b),\n ),\n};\n\nexport function evaluateCondition(\n state: ConditionState | undefined,\n ...conditions: Condition[]\n): boolean {\n if (!state) return false;\n if (conditions.length === 0) return true;\n return conditions.every((c) => _evalCondition(state, c));\n}\n\nfunction _evalCondition(state: ConditionState, condition: Condition): boolean {\n if (!isOperator(condition.operator)) return false;\n const evalFn = OPERATOR_MAP[condition.operator];\n return evalFn(condition, state);\n}\n\nexport function checkConditions(\n state: ConditionState | undefined,\n conditions: WidgetItemCondition[],\n): boolean {\n if (!state) return false;\n for (const cond of conditions) {\n if (cond.effect === 'keep') continue;\n const result = evaluateCondition(state, cond.condition);\n if (result) return false;\n }\n return true;\n}\n","export interface MergeDeepSettings {\n mergeMissingProperties?: boolean;\n mergeExistingValues?: boolean;\n}\n\nexport function mergeDeep(\n obj1: any,\n obj2: any,\n settings?: MergeDeepSettings,\n): any {\n const defaultSettings = {\n mergeExistingValues: settings?.mergeExistingValues ?? true,\n mergeMissingProperties: settings?.mergeMissingProperties ?? true,\n };\n\n if (!isValid(obj1, obj2)) return objectCopy(obj1);\n\n const result: any = Array.isArray(obj1) ? [] : {};\n\n for (const key in obj1) {\n const val1 = obj1[key];\n const val2 = obj2?.[key];\n\n if (isObject(val1) || Array.isArray(val1)) {\n result[key] = mergeDeep(val1, val2, defaultSettings);\n } else if (key in obj2 && defaultSettings.mergeExistingValues) {\n result[key] = val2;\n } else {\n result[key] = val1;\n }\n }\n\n if (defaultSettings.mergeMissingProperties) {\n for (const key in obj2) {\n if (!(key in result)) {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n}\n\nfunction isValid(obj1: any, obj2: any): boolean {\n return (\n (isObject(obj1) && isObject(obj2)) ||\n (Array.isArray(obj1) && Array.isArray(obj2))\n );\n}\n\nfunction objectCopy<T = any>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => objectCopy(item)) as any;\n }\n\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = objectCopy((obj as any)[key]);\n }\n }\n\n return result;\n}\n\nfunction isObject(value: any): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n","import { mergeDeep } from './merge.helpers';\nimport { Operators, allowedOperators } from '../models/conditions.models';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n WidgetItemCondition,\n WidgetViewMap,\n WidgetViewMapItem,\n} from '../models/structure.models';\n\nconst SUBMODULES_KEY = 'subModules';\n\n// Earlier layers' customizations of each embedded widget, by map key (`design::subModules`) and submodule name.\nexport type SubmoduleLayers = Record<\n string,\n Record<string, WidgetCustomization[]>\n>;\n\nexport const isPlainObject = (\n value: unknown,\n): value is Record<string, unknown> =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]';\n\nconst stringList = (value: unknown): string[] | undefined =>\n Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : undefined;\n\nfunction normalizeCondition(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const { field, operator, value: conditionValue } = value;\n if (typeof field !== 'string') return undefined;\n if (!allowedOperators.includes(operator as Operators)) return undefined;\n if (\n typeof conditionValue !== 'string' &&\n typeof conditionValue !== 'number'\n )\n return undefined;\n return { field, operator: operator as Operators, value: conditionValue };\n}\n\nfunction normalizeSubmodules(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const result: Record<string, WidgetCustomization> = {};\n Object.keys(value).forEach((name) => {\n const submodule = normalizeLayer(value[name]);\n if (submodule) result[name] = submodule;\n });\n return result;\n}\n\n/**\n * Keeps only what the engine reads from a stored layer, so a malformed definition is ignored instead of throwing (D25).\n */\nexport function normalizeLayer(\n value: unknown,\n allowViews = true,\n): WidgetCustomization | undefined {\n if (!isPlainObject(value)) return undefined;\n const layer: WidgetCustomization = {};\n const remove = stringList(value.remove);\n const keep = stringList(value.keep);\n if (remove) layer.remove = remove;\n if (keep) layer.keep = keep;\n if (isPlainObject(value.defaults)) layer.defaults = value.defaults;\n const subModules = normalizeSubmodules(value.subModules);\n if (subModules) layer.subModules = subModules;\n if (Array.isArray(value.conditional)) {\n layer.conditional = value.conditional.flatMap((item) => {\n const condition = isPlainObject(item)\n ? normalizeCondition(item.condition)\n : undefined;\n const rest = condition ? normalizeLayer(item, false) : undefined;\n return condition && rest ? [{ ...rest, condition }] : [];\n });\n }\n if (allowViews && isPlainObject(value.views)) {\n const views = value.views;\n layer.views = {};\n Object.keys(views).forEach((view) => {\n const viewLayer = normalizeLayer(views[view], false);\n if (viewLayer) layer.views![view] = viewLayer;\n });\n }\n return layer;\n}\n\nfunction mergeDefaults(\n previous: Record<string, unknown> | undefined,\n next: unknown,\n): Record<string, unknown> | undefined {\n if (!isPlainObject(next)) return previous;\n return previous ? mergeDeep(previous, next) : next;\n}\n\n/**\n * Returns the last layer with the defaults of every layer merged by leaf key, the last one winning (rule 4 of 3.3.2).\n */\nexport function mergeLayerDefaults(\n layers: WidgetCustomization[],\n): WidgetCustomization {\n const last = layers[layers.length - 1] ?? {};\n const viewNames = new Set(\n layers.flatMap((layer) => Object.keys(layer.views ?? {})),\n );\n const rootDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) => mergeDefaults(merged, layer.defaults),\n undefined,\n );\n const views: Record<string, WidgetCustomization> = { ...last.views };\n viewNames.forEach((view) => {\n // Root and view defaults of each layer, in layer order, so a later root default beats an earlier view default.\n const viewDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) =>\n mergeDefaults(\n mergeDefaults(merged, layer.defaults),\n layer.views?.[view]?.defaults,\n ),\n undefined,\n );\n if (viewDefaults) {\n views[view] = { ...last.views?.[view], defaults: viewDefaults };\n }\n });\n const effective: WidgetCustomization = { ...last };\n if (rootDefaults) effective.defaults = rootDefaults;\n if (viewNames.size) effective.views = views;\n return effective;\n}\n\nexport const isSubmodulesKey = (key: string) =>\n key === SUBMODULES_KEY || key.endsWith(`::${SUBMODULES_KEY}`);\n\ntype MapItemObject = {\n childMap?: WidgetViewMap;\n defaults?: Record<string, unknown>;\n conditions?: WidgetItemCondition[];\n};\n\nconst asItemObject = (value: WidgetViewMapItem): MapItemObject =>\n isPlainObject(value) ? (value as MapItemObject) : {};\n\nfunction intersectItem(\n current: WidgetViewMapItem,\n other: WidgetViewMapItem,\n): WidgetViewMapItem {\n const item = asItemObject(current);\n const otherItem = asItemObject(other);\n const childMap = item.childMap\n ? intersectViewMaps(item.childMap, otherItem.childMap ?? {})\n : undefined;\n const conditions = [\n ...(otherItem.conditions ?? []),\n ...(item.conditions ?? []),\n ];\n const hasDefaults =\n !!item.defaults && Object.keys(item.defaults).length > 0;\n const hasChildMap = !!childMap && Object.keys(childMap).length > 0;\n if (!hasDefaults && !hasChildMap && !conditions.length) {\n return isPlainObject(current) ? true : current;\n }\n return {\n ...(hasDefaults && { defaults: item.defaults }),\n ...(hasChildMap && { childMap }),\n ...(conditions.length && { conditions }),\n };\n}\n\n/**\n * Keeps the keys visible in both maps: a later layer can only remove what an earlier one left (rule 2 of 3.3.2).\n */\nexport function intersectViewMaps(\n current: WidgetViewMap,\n other: WidgetViewMap,\n): WidgetViewMap {\n const result: WidgetViewMap = {};\n Object.keys(current).forEach((key) => {\n if (isSubmodulesKey(key)) {\n result[key] = current[key];\n } else if (key in other) {\n result[key] = intersectItem(current[key], other[key]);\n }\n });\n return result;\n}\n\n/**\n * Collects the non-empty submodule customizations of earlier layers, so an embedded widget can apply them as its own layers.\n */\nexport function collectSubmoduleLayers(\n maps: WidgetViewMap[],\n): SubmoduleLayers | undefined {\n const result: SubmoduleLayers = {};\n maps.forEach((map) => {\n Object.keys(map)\n .filter(isSubmodulesKey)\n .forEach((key) => {\n const collection = map[key];\n if (!isPlainObject(collection)) return;\n Object.keys(collection).forEach((name) => {\n const submodule = collection[name];\n if (!isPlainObject(submodule)) return;\n if (!Object.keys(submodule).length) return;\n result[key] = result[key] ?? {};\n result[key][name] = [\n ...(result[key][name] ?? []),\n submodule as WidgetCustomization,\n ];\n });\n });\n });\n return Object.keys(result).length ? result : undefined;\n}\n","const LOG_PREFIX = '[widget-configurability]';\n\n// The package's single console sink; never pass credentials or tokens in a message.\nexport function logWarning(message: string): void {\n // eslint-disable-next-line no-console\n console.warn(`${LOG_PREFIX} ${message}`);\n}\n","import { ValidationMap, validateDefaults } from './defaults.helpers';\nimport { mergeDeep } from './merge.helpers';\nimport {\n STRUCTURE_RESERVED_WORDS,\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n SanitizeFn,\n StructureEngineOptions,\n WidgetConditionMap,\n WidgetConfig,\n WidgetItemCondition,\n WidgetStructure,\n WidgetStructureRoot,\n WidgetViewMap,\n} from '../models/structure.models';\n\ntype hasKeepOptType = 'root' | 'view';\n\ninterface CalculateViewOptions {\n viewKeys?: string[];\n pathPrefix?: string;\n viewPrefix?: string;\n hasKeepOption?: hasKeepOptType;\n prevDefaults?: Record<string, unknown>;\n customDefaults?: Record<string, unknown>;\n conditionMaps?: WidgetConditionMap[];\n checkCondition?: boolean;\n keepAliases?: Record<string, string>;\n}\n\ninterface ViewMapOptions extends StructureEngineOptions {\n keepInheritance?: Record<string, string>;\n}\n\ntype ConditionAffectValue = false | 'keep' | 'remove';\n\ninterface InsertionResult {\n canInsert: boolean;\n conditionAffect: ConditionAffectValue;\n}\n\n/**\n * constructs the permission map structure for a widget\n * @param config configuration of a widget\n * @param customization customization options for a widget\n * @param validationMap\n * @returns object representing the view map for the widget\n */\nexport function getWidgetStructure(\n config: WidgetConfig,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: StructureEngineOptions,\n): WidgetViewMap {\n return calculateViewMap(\n config.baseStructure,\n customization,\n validationMap,\n {\n ...options,\n keepInheritance: config.keepInheritance,\n },\n );\n}\n\nexport function calculateViewMap(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const keepAliases = options?.keepInheritance;\n if (config.views) {\n for (const view in config.views) {\n Object.assign(\n permissionMap,\n calculateSpecificViewMap(\n view,\n config,\n customization,\n validationMap,\n options,\n ),\n );\n }\n } else {\n const customDefaults = calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const submodules = calculateSubmodules(config, customization);\n if (submodules) {\n permissionMap.subModules = submodules;\n }\n\n const conditionMaps = calculateConditions(\n config,\n customization,\n undefined,\n keepAliases,\n );\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n }\n return permissionMap;\n}\n\n/**\n * Defaults at the root of a structure without views (structure defaults merged with the customization's).\n */\nexport function calculateRootDefaults(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n): Record<string, unknown> | undefined {\n return calculateDefaults(\n config.defaults as Record<string, unknown> | undefined,\n undefined,\n calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n sanitize,\n ),\n );\n}\n\nfunction calculateSpecificViewMap(\n view: string,\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n) {\n const viewDefinition = config.views![view];\n const keepAliases = options?.keepInheritance;\n const customDefaults = calculateCustomDefaults(\n customization,\n view,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const permissionMap: WidgetViewMap = {};\n\n const submodules = calculateSubmodules(config, customization, view);\n if (submodules) {\n permissionMap[`${view}::subModules`] = submodules;\n }\n\n const conditionMaps =\n options?.viewConditionals === false\n ? undefined\n : calculateConditions(config, customization, view, keepAliases);\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n viewKeys: viewDefinition,\n viewPrefix: view,\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n\n return permissionMap;\n}\n\nfunction getViewPrefix(view?: string) {\n return view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n}\n\nfunction getStructureKey(key: string, viewPrefix?: string): string {\n const viewValue = getViewPrefix(viewPrefix);\n return `${viewValue}${key}`;\n}\n\nconst matchWildcard = (pattern: string, value: string): boolean => {\n const regexPattern = new RegExp(\n '^' + pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*') + '$',\n );\n return regexPattern.test(value);\n};\n\nfunction keyIsIncludedInKeep(\n key: string,\n customization: WidgetCustomization,\n keepAliases?: Record<string, string>,\n): boolean {\n const { keep = [] } = customization;\n const alias = keepAliases?.[key];\n for (const pattern of keep) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n if (alias && (pattern === alias || matchWildcard(pattern, alias))) {\n return true;\n }\n }\n return false;\n}\n\nfunction keyIsIncludedInRemove(\n key: string,\n customization: WidgetCustomization,\n): boolean {\n const { remove = [] } = customization;\n for (const pattern of remove) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n }\n return false;\n}\n\nfunction canInsertInCustomization(\n key: string,\n customization: WidgetCustomization,\n validateKeepOption?: boolean,\n keepAliases?: Record<string, string>,\n): InsertionResult {\n const includedInRemove = keyIsIncludedInRemove(key, customization);\n const includedInKeep = keyIsIncludedInKeep(key, customization, keepAliases);\n const canInsert =\n !includedInRemove && (!validateKeepOption || includedInKeep);\n\n const keepValue = includedInKeep ? 'keep' : 'remove';\n const keepResult = validateKeepOption ? keepValue : false;\n const conditionAffect = includedInRemove ? 'remove' : keepResult;\n return { canInsert, conditionAffect };\n}\n\nfunction evalInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const customizationView = customization?.views?.[viewPrefix];\n\n const custCanInsert: InsertionResult = customization\n ? canInsertInCustomization(\n key,\n customization,\n hasKeepOption === 'root',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n const custViewCanInsert: InsertionResult = customizationView\n ? canInsertInCustomization(\n key,\n customizationView,\n hasKeepOption === 'view',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n\n // validate remove and keep attributes for views.\n const canInsert =\n (!viewKeys || viewKeys.some((x) => key.startsWith(x))) &&\n custCanInsert.canInsert &&\n custViewCanInsert.canInsert;\n\n const conditionAffect =\n custCanInsert.conditionAffect || custViewCanInsert.conditionAffect;\n\n return { canInsert, conditionAffect };\n}\n\nfunction canInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n checkCondition = false,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const result = evalInsertKey(\n key,\n { viewKeys, viewPrefix, hasKeepOption, checkCondition, keepAliases },\n customization,\n );\n const canInsert = checkCondition || result.canInsert;\n return { canInsert, conditionAffect: result.conditionAffect };\n}\n\nfunction addKeyToPermissions(\n permissionMap: WidgetViewMap,\n key: string,\n { viewPrefix, checkCondition, conditionMaps }: CalculateViewOptions,\n defaults?: Record<string, unknown>,\n childMap?: WidgetViewMap,\n conditionAffect?: ConditionAffectValue,\n) {\n const keyAttr = getStructureKey(key, viewPrefix);\n\n if (checkCondition && conditionAffect != null) {\n permissionMap[keyAttr] = conditionAffect;\n return;\n }\n\n const addDefaultKey = defaults && Object.keys(defaults).length > 0;\n const addChildMapKey = childMap && Object.keys(childMap).length > 0;\n const conditions = getConditionsForKey(key, conditionMaps);\n\n permissionMap[keyAttr] =\n !addDefaultKey && !addChildMapKey && !conditions\n ? true\n : {\n ...(addDefaultKey && { defaults }),\n ...(addChildMapKey && { childMap }),\n ...(conditions && { conditions }),\n };\n}\n\nfunction calculatePermissionMap(\n config: WidgetStructure | Record<string, WidgetStructure>,\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n pathPrefix = '',\n viewPrefix = '',\n hasKeepOption: previousKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n) {\n const permissionMap: WidgetViewMap = {};\n const currentKeepOption = nodeHasKeepOption(config, customization, {\n viewPrefix,\n pathPrefix,\n });\n\n for (const key in config) {\n if (STRUCTURE_RESERVED_WORDS.includes(key)) {\n continue;\n }\n const hasKeepOption = previousKeepOption ?? currentKeepOption;\n const configValue = config[key];\n const currentKey = `${pathPrefix}${key}`;\n const newPrefix = `${currentKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n\n const canInsertResult = canInsertKey(\n currentKey,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n continue;\n }\n\n let defaults = prevDefaults;\n let childMap: WidgetViewMap | undefined = undefined;\n if (Array.isArray(configValue)) {\n // if it's an array, every element is a key\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n childMap = calculatePermissionMapArray(configValue, customization, {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n });\n\n Object.assign(permissionMap, childMap);\n } else if (\n typeof configValue === 'object' &&\n !Array.isArray(configValue)\n ) {\n defaults = calculateDefaults(\n prevDefaults,\n configValue.defaults as Record<string, unknown>,\n customDefaults,\n );\n // if it's an object, a recursive call is made\n childMap = calculatePermissionMap(\n configValue as WidgetStructure,\n customization,\n {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults: defaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n },\n );\n Object.assign(permissionMap, childMap);\n } else if (typeof configValue === 'boolean' && !configValue) {\n // if it's a boolean and its false, it should be ignored\n continue;\n } else if (typeof configValue === 'boolean' && configValue) {\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n }\n\n addKeyToPermissions(\n permissionMap,\n currentKey,\n {\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaults,\n childMap,\n canInsertResult.conditionAffect,\n );\n }\n\n return permissionMap;\n}\n\nfunction getConditionsForKey(\n key: string,\n conditionMaps: WidgetConditionMap[] | undefined,\n): WidgetItemCondition[] | undefined {\n if (!conditionMaps || conditionMaps.length === 0) return undefined;\n const result = conditionMaps.reduce((result, x) => {\n const mapValue = x.map[key];\n if (\n typeof mapValue === 'string' &&\n (mapValue === 'keep' || mapValue === 'remove')\n ) {\n result.push({\n effect: mapValue,\n condition: x.condition,\n });\n }\n return result;\n }, [] as WidgetItemCondition[]);\n\n if (result.length === 0) return undefined;\n return result;\n}\n\nfunction calculateConditions(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n keepAliases?: Record<string, string>,\n): WidgetConditionMap[] | undefined {\n const rootConditionals = customization?.conditional;\n const viewConditionals = view\n ? customization?.views?.[view]?.conditional\n : undefined;\n\n if (!rootConditionals && !viewConditionals) return undefined;\n\n const customConditionals = [\n ...(rootConditionals ?? []),\n ...(viewConditionals ?? []),\n ];\n return (\n customConditionals?.map((c) => ({\n condition: c.condition,\n map: calculatePermissionMap(config, c, {\n checkCondition: true,\n keepAliases,\n }),\n })) ?? undefined\n );\n}\n\nfunction calculateSubmodules(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n) {\n const viewSubmodules = view\n ? customization?.views?.[view]?.subModules\n : undefined;\n const customRootSubmodules = customization?.subModules;\n const customSubmodules = viewSubmodules\n ? mergeObjects(customRootSubmodules, viewSubmodules)\n : customRootSubmodules;\n return mergeObjects(config.subModules, customSubmodules);\n}\n\nfunction calculateCustomDefaults(\n customization?: WidgetCustomization,\n view?: string,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n const viewDefaults = view\n ? customization?.views?.[view]?.defaults\n : undefined;\n const customRootDefaults = customization?.defaults ?? {};\n const defaultObj = viewDefaults\n ? mergeObjects(customRootDefaults, viewDefaults)\n : customRootDefaults;\n if (!defaultObj || (!validationMap && !sanitize)) return defaultObj;\n return validateDefaults(defaultObj, validationMap ?? {}, sanitize);\n}\n\nfunction calculateDefaults(\n structureDefaults: Record<string, unknown> | undefined,\n itemDefaults: Record<string, unknown> | undefined,\n customDefaults: Record<string, unknown> | undefined,\n) {\n const baseDefaults = mergeObjects(structureDefaults, itemDefaults);\n return mergeObjects(baseDefaults, customDefaults);\n}\n\nfunction mergeObjects(\n prevObj: Record<string, unknown> | undefined,\n newObj: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n // if both of configurations are falsy return undefined;\n if (!newObj && !prevObj) return undefined;\n // if just the prev defaults has value, return it\n if (!newObj) return prevObj;\n // if the newDefaults value is different than an object\n if (typeof newObj !== 'object' || Array.isArray(newObj)) return prevObj;\n return !prevObj ? newObj : mergeDeep(prevObj, newObj);\n}\n\nfunction mapObjKeys(\n configValue: WidgetStructure,\n { pathPrefix }: CalculateViewOptions,\n) {\n return Object.keys(configValue).map((x) =>\n getStructureKey(`${pathPrefix}${x}`),\n );\n}\n\nfunction mapArrayKeys(\n configValue: (string | WidgetStructure)[],\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n) {\n return configValue.reduce((result, value) => {\n if (typeof value === 'string') {\n result.push(getStructureKey(`${pathPrefix}${value}`));\n } else {\n result.push(...mapObjKeys(value, { viewPrefix, pathPrefix }));\n }\n return result;\n }, [] as string[]);\n}\n\nfunction nodeHasKeepOption(\n configValue: WidgetStructure | (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n): hasKeepOptType | undefined {\n if (!customization) return;\n const nodeKeys = Array.isArray(configValue)\n ? mapArrayKeys(configValue, { viewPrefix, pathPrefix })\n : mapObjKeys(configValue, { viewPrefix, pathPrefix });\n const customizationView = viewPrefix\n ? customization?.views?.[viewPrefix]\n : undefined;\n for (const key of nodeKeys) {\n if (keyIsIncludedInKeep(key, customization)) {\n return 'root';\n } else if (\n customizationView &&\n keyIsIncludedInKeep(key, customizationView)\n ) {\n return 'view';\n }\n }\n return undefined;\n}\n\nfunction calculatePermissionMapArray(\n configValue: (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n viewPrefix,\n pathPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const hasKeepOption = nodeHasKeepOption(configValue, customization, {\n viewPrefix,\n pathPrefix,\n });\n const defaultsSimple = calculateDefaults(\n prevDefaults,\n undefined,\n customDefaults,\n );\n\n configValue.forEach((option) => {\n const fullPath = `${pathPrefix}${option}`;\n if (typeof option === 'string') {\n const canInsertResult = canInsertKey(\n fullPath,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n return;\n }\n addKeyToPermissions(\n permissionMap,\n fullPath,\n {\n viewKeys,\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaultsSimple,\n undefined,\n canInsertResult.conditionAffect,\n );\n } else {\n Object.assign(\n permissionMap,\n calculatePermissionMap(option, customization, {\n viewKeys,\n pathPrefix,\n viewPrefix,\n hasKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }),\n );\n }\n });\n return permissionMap;\n}\n","import { widgetConfigs, widgetValidators } from './constants/configs';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n Widget,\n WidgetVersion,\n} from './constants/structure.constants';\nimport { ConditionState } from './models/conditions.models';\nimport { WidgetCustomization } from './models/customization.models';\nimport { ScopeOptions, WidgetStructureScope } from './models/scope.models';\nimport {\n BuildStructureOptions,\n WidgetConfig,\n WidgetItemCondition,\n WidgetViewMap,\n} from './models/structure.models';\nimport { checkConditions } from './utils/conditions.helpers';\nimport {\n SubmoduleLayers,\n collectSubmoduleLayers,\n intersectViewMaps,\n isPlainObject,\n mergeLayerDefaults,\n normalizeLayer,\n} from './utils/layers.helpers';\nimport { logWarning } from './utils/logger.helpers';\nimport {\n calculateRootDefaults,\n calculateViewMap,\n getWidgetStructure,\n} from './utils/structural.helpers';\n\nexport function getWidgetConfig(\n widget: Widget,\n version?: WidgetVersion,\n): WidgetConfig {\n const versionSet = version ?? WidgetVersion.latest;\n const widgetConfigurability = widgetConfigs[widget]?.[versionSet];\n if (!widgetConfigurability) {\n throw new Error(\n `No config found for widget ${widget} and version ${version}`,\n );\n }\n return widgetConfigurability;\n}\n\nexport function buildStructure(\n widget: Widget,\n customization?: WidgetCustomization,\n version?: WidgetVersion,\n options?: BuildStructureOptions,\n) {\n const config = getWidgetConfig(widget, version);\n const validationMap = options?.validationMap ?? widgetValidators[widget];\n const layers = (options?.layers ?? [])\n .map((layer) => normalizeLayer(layer))\n .filter((layer): layer is WidgetCustomization => !!layer);\n if (layers.length) {\n try {\n return buildLayeredStructure(\n config,\n layers,\n customization,\n validationMap,\n options,\n );\n } catch (error) {\n logWarning(\n `ignoring the ${widget} customization layers: ${\n (error as Error).message\n }`,\n );\n }\n }\n const structureMap = getWidgetStructure(\n config,\n customization,\n validationMap,\n options,\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n customization,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(structureMap, rootDefaults);\n}\n\nfunction buildLayeredStructure(\n config: WidgetConfig,\n layers: WidgetCustomization[],\n customization: WidgetCustomization | undefined,\n validationMap: BuildStructureOptions['validationMap'],\n options: BuildStructureOptions | undefined,\n) {\n const inline = isPlainObject(customization) ? customization : {};\n const effective = mergeLayerDefaults([...layers, inline]);\n const engineOptions = { viewConditionals: options?.viewConditionals };\n const layerMaps = layers.map((layer) =>\n getWidgetStructure(config, layer, undefined, engineOptions),\n );\n const structureMap = layerMaps.reduce(\n (result, layerMap) => intersectViewMaps(result, layerMap),\n getWidgetStructure(config, effective, validationMap, options),\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n effective,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(\n structureMap,\n rootDefaults,\n collectSubmoduleLayers(layerMaps),\n );\n}\n\nexport class WidgetStructureInstance {\n constructor(\n private viewMap: WidgetViewMap,\n private rootDefaults?: Record<string, unknown>,\n private submoduleLayers?: SubmoduleLayers,\n ) {}\n\n private getValue(key: string) {\n return this.viewMap[key];\n }\n\n isVisible(key: string, state?: ConditionState): boolean {\n const value = this.getValue(key);\n if (!value) return false;\n if (typeof value === 'object' && value.conditions) {\n return checkConditions(\n state,\n value.conditions as WidgetItemCondition[],\n );\n }\n return true;\n }\n\n getChildMap(key: string): WidgetViewMap | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.childMap\n )\n return undefined;\n return value.childMap as WidgetViewMap;\n }\n\n getSubmodule(\n module: string,\n view?: string,\n ): WidgetCustomization | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n const value = this.getValue(key);\n return (value as Record<string, WidgetCustomization>)?.[module];\n }\n\n /**\n * Submodule customizations of the stored layers, to pass as layers when building the embedded widget (structureFromSubmodule).\n */\n getSubmoduleLayers(\n module: string,\n view?: string,\n ): WidgetCustomization[] | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n return this.submoduleLayers?.[key]?.[module];\n }\n\n getDefaults(key: string): Record<string, unknown> | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.defaults\n )\n return undefined;\n return value.defaults as WidgetViewMap;\n }\n\n getRootDefaults(): Record<string, unknown> | undefined {\n return this.rootDefaults;\n }\n\n /**\n * Re-roots a resolved section (`design::downloadModal`) as plain JSON another bundle can rebuild a structure from.\n */\n scope(prefixKey: string, options: ScopeOptions = {}): WidgetStructureScope {\n const { widget, version, state } = options;\n const present = this.isVisible(prefixKey, state);\n const sectionPath =\n prefixKey.split(STRUCTURE_VIEW_NAME_SEPARATOR).pop() ?? prefixKey;\n const namespace =\n options.defaultsNamespace === undefined\n ? sectionPath.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop()\n : options.defaultsNamespace;\n const sectionDefaults = present\n ? this.getDefaults(prefixKey)\n : undefined;\n const defaults = namespace\n ? (sectionDefaults?.[namespace] as\n | Record<string, unknown>\n | undefined)\n : sectionDefaults;\n const childPrefix = `${prefixKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n const map: Record<string, boolean> = {};\n let structureVersion: string | undefined;\n\n if (widget) {\n const config = getWidgetConfig(widget, version);\n structureVersion = config.version;\n Object.keys(calculateViewMap(config.baseStructure))\n .filter((key) => key !== 'subModules')\n .forEach((key) => {\n map[key] =\n present &&\n this.isVisible(`${childPrefix}${key}`, state);\n });\n } else if (present) {\n Object.keys(this.viewMap)\n .filter((key) => key.startsWith(childPrefix))\n .forEach((key) => {\n if (this.isVisible(key, state)) {\n map[key.slice(childPrefix.length)] = true;\n }\n });\n }\n\n return JSON.parse(\n JSON.stringify({\n kind: WIDGET_STRUCTURE_SCOPE_KIND,\n format: WIDGET_STRUCTURE_SCOPE_FORMAT,\n widget,\n structureVersion,\n source: prefixKey,\n present,\n map,\n defaults,\n }),\n );\n }\n}\n","import {\n Widget,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n WIDGET_SUBMODULE_NAMES,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport { WidgetStructureScope } from '../models/scope.models';\nimport { BuildStructureOptions } from '../models/structure.models';\nimport { buildStructure, WidgetStructureInstance } from '../structural-manager';\nimport { mergeDeep } from './merge.helpers';\n\nexport type StructureInput =\n | WidgetStructureScope\n | WidgetCustomization\n | null\n | undefined;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function isWidgetStructureScope(\n value: unknown,\n): value is WidgetStructureScope {\n return isPlainObject(value) && value.kind === WIDGET_STRUCTURE_SCOPE_KIND;\n}\n\n/**\n * Turns a resolved scope back into a customization of the widget it lists: hidden keys become an explicit remove list.\n */\nexport function scopeToCustomization(\n scope: WidgetStructureScope,\n): WidgetCustomization {\n const remove = scope.present\n ? Object.keys(scope.map ?? {}).filter((key) => scope.map[key] === false)\n : ['*'];\n return {\n ...(remove.length ? { remove } : {}),\n ...(scope.defaults ? { defaults: scope.defaults } : {}),\n };\n}\n\n/**\n * Extracts a section of a host's customization as a customization of the embedded widget, by evaluating it with the host's engine.\n */\nexport function extractCustomization(\n host: Widget,\n customization: WidgetCustomization | undefined,\n prefixKey: string,\n target: Widget,\n options?: BuildStructureOptions,\n): WidgetCustomization {\n const hostStructure = buildStructure(\n host,\n customization,\n undefined,\n options,\n );\n return scopeToCustomization(\n hostStructure.scope(prefixKey, { widget: target }),\n );\n}\n\nfunction submoduleOf(\n input: WidgetCustomization,\n module: string,\n view?: string,\n): WidgetCustomization | undefined {\n const root = input.subModules?.[module];\n const fromView = view\n ? input.views?.[view]?.subModules?.[module]\n : undefined;\n if (!fromView) return root;\n return root ? mergeDeep(root, fromView) : fromView;\n}\n\n/**\n * Builds an embedded widget's structure from what its host passes: a resolved scope, a raw customization of the widget, or a host\n * customization carrying the widget under subModules. Returns undefined for no input or an invalid one, so the receiver keeps its\n * legacy behaviour.\n */\nexport function structureFrom(\n widget: Widget,\n input: unknown,\n view?: string,\n version?: WidgetVersion,\n): WidgetStructureInstance | undefined {\n if (input === undefined || input === null) return undefined;\n try {\n if (!isPlainObject(input)) {\n throw new Error('expected an object');\n }\n if ('kind' in input) {\n if (!isWidgetStructureScope(input)) {\n throw new Error(`unknown kind ${String(input.kind)}`);\n }\n if (input.format !== WIDGET_STRUCTURE_SCOPE_FORMAT) {\n throw new Error(`unknown scope format ${input.format}`);\n }\n if (input.widget && input.widget !== widget) {\n throw new Error(`scope of ${input.widget}, expected ${widget}`);\n }\n return buildStructure(widget, scopeToCustomization(input), version);\n }\n const customization = input as WidgetCustomization;\n const module = WIDGET_SUBMODULE_NAMES[widget];\n const submodule = module\n ? submoduleOf(customization, module, view)\n : undefined;\n return buildStructure(widget, submodule ?? customization, version);\n } catch (error) {\n console.warn(\n `[widget-configurability] ignoring the ${widget} customization: ${(error as Error).message}`,\n );\n return undefined;\n }\n}\n\n/**\n * Builds the structure of a widget a host embeds as a submodule (chartPanel, chartGallery, chartBuilder, downloadModal).\n */\nexport function structureFromSubmodule(\n parent: WidgetStructureInstance,\n module: string,\n view?: string,\n options?: BuildStructureOptions,\n): WidgetStructureInstance {\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === module,\n );\n if (!widget) {\n throw new Error(`No widget registered for the submodule ${module}`);\n }\n const layers = parent.getSubmoduleLayers(module, view);\n return buildStructure(\n widget,\n parent.getSubmodule(module, view),\n undefined,\n layers\n ? { ...options, layers: [...(options?.layers ?? []), ...layers] }\n : options,\n );\n}\n","import { widgetConfigs, widgetValidators } from '../constants/configs';\nimport {\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_SUBMODULE_NAMES,\n Widget,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { Operators, allowedOperators } from '../models/conditions.models';\nimport {\n ValidationFN,\n ValidationMap,\n WidgetConfig,\n} from '../models/structure.models';\nimport {\n CustomizationErrorCode,\n CustomizationPath,\n CustomizationValidationError,\n CustomizationValidationResult,\n ValidateCustomizationOptions,\n} from '../models/validation.models';\nimport { validateBoolean } from '../utils/defaults.helpers';\nimport { isPlainObject } from '../utils/layers.helpers';\nimport { calculateViewMap } from '../utils/structural.helpers';\n\nconst ROOT_PROPERTIES = [\n 'remove',\n 'keep',\n 'defaults',\n 'subModules',\n 'conditional',\n 'views',\n];\nconst VIEW_PROPERTIES = [\n 'remove',\n 'keep',\n 'defaults',\n 'subModules',\n 'conditional',\n];\nconst CONDITIONAL_PROPERTIES = [\n 'condition',\n 'remove',\n 'keep',\n 'defaults',\n 'subModules',\n];\nconst CONDITION_PROPERTIES = ['field', 'operator', 'value'];\nconst KEY_CHARS = /^[A-Za-z0-9_.-]+$/;\nconst ROOT_SCOPE = '';\n\nconst oneOf = (values: string[]) => (value: unknown) =>\n typeof value === 'string' && values.includes(value) ? value : undefined;\n\n// Write-time checks for defaults the runtime map leaves unvalidated, so the API rejects `changeLayout: \"no\"` (3.9.3).\nconst DX_WRITE_VALIDATOR_MAP: ValidationMap = {\n changeLayout: validateBoolean,\n removeElement: validateBoolean,\n dragElement: validateBoolean,\n resizeElement: validateBoolean,\n assetListViewMode: oneOf(['card', 'table']),\n 'downloadModal.exportVersion': oneOf(['saved', 'unsaved']),\n};\n\nconst writeValidators: Partial<Record<Widget, ValidationMap>> = {\n [Widget.DASHBOARD]: {\n ...widgetValidators[Widget.DASHBOARD],\n ...DX_WRITE_VALIDATOR_MAP,\n },\n};\n\ninterface Scope {\n widget: Widget;\n config: WidgetConfig;\n keys: Map<string, Set<string>>;\n views: string[];\n subModules: string[];\n}\n\nconst keyCache = new Map<WidgetConfig, Map<string, Set<string>>>();\n\n// Keys of the structure by view (ROOT_SCOPE holds every key of every view, for root-level verbs).\nfunction structureKeys(config: WidgetConfig): Map<string, Set<string>> {\n const cached = keyCache.get(config);\n if (cached) return cached;\n const byView = new Map<string, Set<string>>([[ROOT_SCOPE, new Set()]]);\n Object.keys(calculateViewMap(config.baseStructure)).forEach((entry) => {\n const separator = entry.indexOf(STRUCTURE_VIEW_NAME_SEPARATOR);\n const view = separator >= 0 ? entry.slice(0, separator) : ROOT_SCOPE;\n const key =\n separator >= 0\n ? entry.slice(separator + STRUCTURE_VIEW_NAME_SEPARATOR.length)\n : entry;\n if (key === 'subModules') return;\n if (!byView.has(view)) byView.set(view, new Set());\n byView.get(view)!.add(key);\n byView.get(ROOT_SCOPE)!.add(key);\n });\n keyCache.set(config, byView);\n return byView;\n}\n\nfunction resolveConfig(\n widget: string,\n version?: string,\n): WidgetConfig | undefined {\n const versions = widgetConfigs[widget as Widget];\n if (!versions) return undefined;\n if (!version) return versions[WidgetVersion.latest];\n const match = (Object.keys(versions) as WidgetVersion[]).find(\n (key) => key === version || versions[key]?.version === version,\n );\n return match ? versions[match] : undefined;\n}\n\nfunction createScope(widget: Widget, config: WidgetConfig): Scope {\n return {\n widget,\n config,\n keys: structureKeys(config),\n views: Object.keys(config.baseStructure.views ?? {}),\n subModules: Object.keys(config.baseStructure.subModules ?? {}),\n };\n}\n\nfunction levenshtein(a: string, b: string): number {\n const previous = Array.from({ length: b.length + 1 }, (_, i) => i);\n for (let i = 1; i <= a.length; i++) {\n let diagonal = previous[0];\n previous[0] = i;\n for (let j = 1; j <= b.length; j++) {\n const above = previous[j];\n previous[j] = Math.min(\n previous[j] + 1,\n previous[j - 1] + 1,\n diagonal + (a[i - 1] === b[j - 1] ? 0 : 1),\n );\n diagonal = above;\n }\n }\n return previous[b.length];\n}\n\n/**\n * Closest existing key: same leaf id first (a missing parent path), then the smallest edit distance within a limit.\n */\nexport function suggestKey(\n key: string,\n candidates: Iterable<string>,\n): string | undefined {\n const leaf = key.split('.').pop();\n let best: string | undefined;\n let bestDistance = Math.max(2, Math.floor(key.length * 0.3)) + 1;\n for (const candidate of candidates) {\n if (candidate.split('.').pop() === leaf && candidate !== key)\n return candidate;\n const distance = levenshtein(\n key.toLowerCase(),\n candidate.toLowerCase(),\n );\n if (distance < bestDistance) {\n best = candidate;\n bestDistance = distance;\n }\n }\n return best;\n}\n\n/**\n * Formats a validation path as the API error messages show it, e.g. views.design.remove[2]\n * (admin_api_manager prefixes it with `customization.`).\n */\nexport function formatCustomizationPath(path: CustomizationPath): string {\n return path.reduce<string>(\n (result, part) =>\n typeof part === 'number'\n ? `${result}[${part}]`\n : result\n ? `${result}.${part}`\n : part,\n '',\n );\n}\n\nclass Collector {\n readonly errors: CustomizationValidationError[] = [];\n\n add(\n path: CustomizationPath,\n code: CustomizationErrorCode,\n message: string,\n suggestion?: string,\n ) {\n this.errors.push({\n path,\n code,\n severity: 'error',\n message,\n ...(suggestion && { suggestion }),\n });\n }\n}\n\nconst describeScope = (scope: Scope, view: string) => {\n const owner =\n scope.widget === Widget.DASHBOARD ? '' : ` of the ${scope.widget}`;\n if (view !== ROOT_SCOPE) return `in the ${view} view${owner}`;\n return scope.views.length\n ? `in any view${owner}`\n : `in the ${scope.widget} structure`;\n};\n\nfunction patternError(pattern: string): string | undefined {\n if (!pattern.trim()) return 'Empty key';\n if (!pattern.includes('*')) {\n return KEY_CHARS.test(pattern) && !pattern.includes('..')\n ? undefined\n : `Key '${pattern}' contains characters that are not allowed`;\n }\n if (pattern === '*') return undefined;\n const inner = pattern.replace(/^\\*/, '').replace(/\\*$/, '');\n if (\n !inner ||\n inner.includes('*') ||\n !KEY_CHARS.test(inner) ||\n inner.includes('..')\n ) {\n return `Pattern '${pattern}' is not a valid wildcard; use *text, text* or *text*`;\n }\n return undefined;\n}\n\nfunction validateKeyList(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n scope: Scope,\n view: string,\n) {\n if (!Array.isArray(value)) {\n collector.add(\n path,\n 'INVALID_TYPE',\n `'${path[path.length - 1]}' must be an array of keys`,\n );\n return;\n }\n const keys = scope.keys.get(view) ?? new Set<string>();\n value.forEach((item, index) => {\n const itemPath = [...path, index];\n if (typeof item !== 'string') {\n collector.add(\n itemPath,\n 'INVALID_TYPE',\n 'Each key must be a string',\n );\n return;\n }\n const invalid = patternError(item);\n if (invalid) {\n collector.add(itemPath, 'INVALID_PATTERN', invalid);\n } else if (!item.includes('*') && !keys.has(item)) {\n collector.add(\n itemPath,\n 'UNKNOWN_KEY',\n `Key '${item}' does not exist ${describeScope(scope, view)}`,\n suggestKey(item, keys),\n );\n }\n });\n}\n\n// A validator that throws on an unexpected type rejects the value instead of failing the whole validation.\nfunction safeValidate(validator: ValidationFN, value: unknown): unknown {\n try {\n return validator(value);\n } catch {\n return undefined;\n }\n}\n\nfunction validateDefaultsObject(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n validators: ValidationMap | undefined,\n) {\n if (!isPlainObject(value)) {\n collector.add(path, 'INVALID_TYPE', \"'defaults' must be an object\");\n return;\n }\n const walk = (node: Record<string, unknown>, parents: string[]) => {\n Object.keys(node).forEach((key) => {\n const keyPath = [...parents, key];\n const current = node[key];\n const validator = validators?.[keyPath.join('.')];\n if (isPlainObject(current)) {\n walk(current, keyPath);\n } else if (\n validator &&\n current !== undefined &&\n safeValidate(validator, current) === undefined\n ) {\n collector.add(\n [...path, ...keyPath],\n 'INVALID_DEFAULT',\n `Default '${keyPath.join(\n '.',\n )}' does not accept the value ${JSON.stringify(current)}`,\n );\n }\n });\n };\n walk(value, []);\n}\n\nfunction validateProperties(\n collector: Collector,\n value: Record<string, unknown>,\n path: CustomizationPath,\n allowed: string[],\n) {\n Object.keys(value)\n .filter((key) => !allowed.includes(key))\n .forEach((key) =>\n collector.add(\n [...path, key],\n 'UNKNOWN_PROPERTY',\n `Property '${key}' is not part of the customization grammar; valid properties: ${allowed.join(\n ', ',\n )}`,\n ),\n );\n}\n\nfunction validateCondition(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n) {\n if (!isPlainObject(value)) {\n collector.add(\n path,\n 'INVALID_CONDITION',\n \"A conditional needs a 'condition' object with field, operator and value\",\n );\n return;\n }\n validateProperties(collector, value, path, CONDITION_PROPERTIES);\n if (typeof value.field !== 'string' || !value.field) {\n collector.add(\n [...path, 'field'],\n 'INVALID_CONDITION',\n \"The condition 'field' must be a non-empty string\",\n );\n }\n if (!allowedOperators.includes(value.operator as Operators)) {\n collector.add(\n [...path, 'operator'],\n 'INVALID_CONDITION',\n `Unknown operator ${JSON.stringify(\n value.operator,\n )}; valid operators: ${allowedOperators.join(', ')}`,\n );\n }\n if (typeof value.value !== 'string' && typeof value.value !== 'number') {\n collector.add(\n [...path, 'value'],\n 'INVALID_CONDITION',\n \"The condition 'value' must be a string or a number\",\n );\n }\n}\n\nfunction validateBlock(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n scope: Scope,\n view: string,\n allowed: string[],\n) {\n if (!isPlainObject(value)) {\n collector.add(\n path,\n 'INVALID_TYPE',\n 'A customization must be an object',\n );\n return;\n }\n validateProperties(collector, value, path, allowed);\n const has = (property: string) =>\n property in value && allowed.includes(property);\n if ('remove' in value)\n validateKeyList(\n collector,\n value.remove,\n [...path, 'remove'],\n scope,\n view,\n );\n if ('keep' in value)\n validateKeyList(collector, value.keep, [...path, 'keep'], scope, view);\n if ('defaults' in value) {\n validateDefaultsObject(\n collector,\n value.defaults,\n [...path, 'defaults'],\n writeValidators[scope.widget],\n );\n }\n if ('subModules' in value)\n validateSubmodules(\n collector,\n value.subModules,\n [...path, 'subModules'],\n scope,\n );\n if (has('conditional')) {\n if (!Array.isArray(value.conditional)) {\n collector.add(\n [...path, 'conditional'],\n 'INVALID_TYPE',\n \"'conditional' must be an array\",\n );\n } else {\n value.conditional.forEach((item, index) => {\n const itemPath = [...path, 'conditional', index];\n if (!isPlainObject(item)) {\n collector.add(\n itemPath,\n 'INVALID_CONDITION',\n 'Each conditional must be an object',\n );\n return;\n }\n validateCondition(collector, item.condition, [\n ...itemPath,\n 'condition',\n ]);\n validateBlock(\n collector,\n item,\n itemPath,\n scope,\n view,\n CONDITIONAL_PROPERTIES,\n );\n });\n }\n }\n if (has('views'))\n validateViews(collector, value.views, [...path, 'views'], scope);\n}\n\nfunction validateViews(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n scope: Scope,\n) {\n if (!isPlainObject(value)) {\n collector.add(path, 'INVALID_TYPE', \"'views' must be an object\");\n return;\n }\n Object.keys(value).forEach((view) => {\n if (!scope.views.includes(view)) {\n const valid = scope.views.length\n ? `valid views: ${scope.views.join(', ')}`\n : `the ${scope.widget} widget has no views`;\n collector.add(\n [...path, view],\n 'UNKNOWN_VIEW',\n `View '${view}' does not exist; ${valid}`,\n );\n return;\n }\n validateBlock(\n collector,\n value[view],\n [...path, view],\n scope,\n view,\n VIEW_PROPERTIES,\n );\n });\n}\n\nfunction validateSubmodules(\n collector: Collector,\n value: unknown,\n path: CustomizationPath,\n scope: Scope,\n) {\n if (!isPlainObject(value)) {\n collector.add(path, 'INVALID_TYPE', \"'subModules' must be an object\");\n return;\n }\n Object.keys(value).forEach((name) => {\n const subPath = [...path, name];\n if (!scope.subModules.includes(name)) {\n const valid = scope.subModules.length\n ? `valid submodules: ${scope.subModules.join(', ')}`\n : `the ${scope.widget} widget has no submodules`;\n collector.add(\n subPath,\n 'UNKNOWN_SUBMODULE',\n `Submodule '${name}' does not exist; ${valid}`,\n );\n return;\n }\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === name,\n );\n const config = widget ? resolveConfig(widget) : undefined;\n if (!widget || !config) {\n if (!isPlainObject(value[name])) {\n collector.add(\n subPath,\n 'INVALID_TYPE',\n 'A customization must be an object',\n );\n }\n return;\n }\n validateBlock(\n collector,\n value[name],\n subPath,\n createScope(widget, config),\n ROOT_SCOPE,\n ROOT_PROPERTIES,\n );\n });\n}\n\n/**\n * True when the customization has no effective rule: no verb with items and no defaults anywhere.\n */\nexport function isEmptyCustomization(value: unknown): boolean {\n if (!isPlainObject(value)) return true;\n const hasItems = (list: unknown) => Array.isArray(list) && list.length > 0;\n if (hasItems(value.remove) || hasItems(value.keep)) return false;\n if (isPlainObject(value.defaults) && Object.keys(value.defaults).length)\n return false;\n const nested = [\n ...(Array.isArray(value.conditional) ? value.conditional : []),\n ...(isPlainObject(value.views) ? Object.values(value.views) : []),\n ...(isPlainObject(value.subModules)\n ? Object.values(value.subModules)\n : []),\n ];\n return nested.every(isEmptyCustomization);\n}\n\n/**\n * Strict validation of a customization for writes (API and Admin Center): collects every error in one pass, each with its path.\n */\nexport function validateCustomization(\n widget: Widget | string,\n customization: unknown,\n options: ValidateCustomizationOptions = {},\n): CustomizationValidationResult {\n const collector = new Collector();\n if (!widgetConfigs[widget as Widget]) {\n collector.add(\n [],\n 'UNKNOWN_WIDGET',\n `Widget '${widget}' has no customization structure`,\n );\n return { valid: false, errors: collector.errors };\n }\n const config = resolveConfig(widget, options.version);\n if (!config) {\n collector.add(\n [],\n 'UNKNOWN_VERSION',\n `Structure version '${options.version}' does not exist for widget '${widget}'`,\n );\n return { valid: false, errors: collector.errors };\n }\n validateBlock(\n collector,\n customization,\n [],\n createScope(widget as Widget, config),\n ROOT_SCOPE,\n ROOT_PROPERTIES,\n );\n if (\n !collector.errors.length &&\n !options.allowEmpty &&\n isEmptyCustomization(customization)\n ) {\n collector.add(\n [],\n 'EMPTY_CUSTOMIZATION',\n 'The customization has no rules: add a remove, keep or defaults entry',\n );\n }\n return { valid: collector.errors.length === 0, errors: collector.errors };\n}\n","import { WidgetCustomization } from '../models/customization.models';\nimport {\n LoadRemoteCustomizationOptions,\n RemoteCustomizationDefinition,\n RemoteCustomizationError,\n RemoteCustomizationResult,\n} from '../models/remote.models';\nimport { isPlainObject } from '../utils/layers.helpers';\nimport { logWarning } from '../utils/logger.helpers';\n\n// Served by admin_api_manager.\nexport const CUSTOMIZATIONS_API_PATH = '/api/admin/v5/customizations/widgets';\nexport const DEFAULT_CUSTOMIZATION_ID = 'default';\nconst DEFAULT_TIMEOUT_MS = 10000;\n// Same 100-character limits as the API and the database columns.\nconst WIDGET_PATTERN = /^[a-z][a-z0-9-]{0,99}$/;\nconst CONTEXT_PATTERN = /^[a-z][a-z0-9-]{0,99}$/;\nconst CUSTOMIZATION_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]{0,99}$/;\nconst TIMEOUT = Symbol('timeout');\n\ntype FetchResult =\n | { kind: 'found'; definition: RemoteCustomizationDefinition }\n | { kind: 'not-found' }\n | { kind: 'error'; error: RemoteCustomizationError };\n\n// One request per URL for the life of the page, shared by every widget instance and view switch.\nconst requestCache = new Map<string, Promise<FetchResult>>();\n\n/**\n * Forgets every cached request (tests, or a host that needs to re-read definitions without reloading).\n */\nexport function clearRemoteCustomizationCache(): void {\n requestCache.clear();\n}\n\nexport const isValidCustomizationId = (value: unknown): value is string =>\n typeof value === 'string' && CUSTOMIZATION_ID_PATTERN.test(value);\n\nfunction baseUrl({ apiDomain, domain }: LoadRemoteCustomizationOptions) {\n return `${(apiDomain || domain || '').replace(\n /\\/+$/,\n '',\n )}${CUSTOMIZATIONS_API_PATH}`;\n}\n\nfunction buildHeaders({ apiKey, qvToken }: LoadRemoteCustomizationOptions) {\n const headers: Record<string, string> = { Accept: 'application/json' };\n if (qvToken) headers.Authorization = `Bearer ${qvToken}`;\n if (apiKey) headers['x-api-key'] = apiKey;\n return headers;\n}\n\nconst isDefinition = (body: unknown): body is RemoteCustomizationDefinition =>\n isPlainObject(body) && isPlainObject(body.customization);\n\nasync function request(\n url: string,\n options: LoadRemoteCustomizationOptions,\n): Promise<FetchResult> {\n const fetchFn = options.fetchFn ?? globalThis.fetch;\n if (typeof fetchFn !== 'function') {\n return {\n kind: 'error',\n error: { code: 'NETWORK', message: 'fetch is not available' },\n };\n }\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const controller =\n typeof AbortController === 'function'\n ? new AbortController()\n : undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => {\n controller?.abort();\n reject(TIMEOUT);\n }, timeoutMs);\n });\n // The race below handles the rejection; this keeps a late timeout from surfacing as unhandled.\n timeout.catch(() => undefined);\n try {\n const response = await Promise.race([\n fetchFn(url, {\n method: 'GET',\n headers: buildHeaders(options),\n signal: controller?.signal,\n }),\n timeout,\n ]);\n // 404 is not-found whatever the body says (WIDGET_CUSTOMIZATION_NOT_EXISTS, CONTEXT_NOT_ASSIGNED).\n // Other error bodies ({status:'error', errors:[{code, message}]}) are not read: the status is enough.\n if (response.status === 404) return { kind: 'not-found' };\n if (!response.ok) {\n return {\n kind: 'error',\n error: {\n code: 'HTTP',\n status: response.status,\n message: `Request failed with status ${response.status}`,\n },\n };\n }\n const body = await Promise.race([response.json(), timeout]).catch(\n (error) => {\n if (error === TIMEOUT) throw error;\n return undefined;\n },\n );\n if (!isDefinition(body)) {\n return {\n kind: 'error',\n error: {\n code: 'INVALID_RESPONSE',\n message: 'The response is not a customization definition',\n },\n };\n }\n return { kind: 'found', definition: body };\n } catch (error) {\n return error === TIMEOUT\n ? {\n kind: 'error',\n error: {\n code: 'TIMEOUT',\n message: `No response after ${timeoutMs} ms`,\n },\n }\n : {\n kind: 'error',\n error: {\n code: 'NETWORK',\n message: 'The customization could not be requested',\n },\n };\n } finally {\n clearTimeout(timer);\n }\n}\n\nfunction cachedRequest(url: string, options: LoadRemoteCustomizationOptions) {\n const useCache = options.cache !== false;\n const cached = useCache ? requestCache.get(url) : undefined;\n if (cached) return cached;\n const pending = request(url, options).then((result) => {\n // Failures are not kept, so the next widget load can retry.\n if (result.kind === 'error') requestCache.delete(url);\n return result;\n });\n if (useCache) requestCache.set(url, pending);\n return pending;\n}\n\nconst definitionUrl = (options: LoadRemoteCustomizationOptions, id: string) =>\n `${baseUrl(options)}/${encodeURIComponent(\n options.widget,\n )}/${encodeURIComponent(id)}`;\n\nconst contextUrl = (options: LoadRemoteCustomizationOptions, context: string) =>\n `${baseUrl(options)}/${encodeURIComponent(\n options.widget,\n )}?context=${encodeURIComponent(context)}`;\n\nasync function loadDefault(\n options: LoadRemoteCustomizationOptions,\n foundStatus: 'found' | 'fallback',\n explicit: boolean,\n): Promise<RemoteCustomizationResult> {\n const result = await cachedRequest(\n definitionUrl(options, DEFAULT_CUSTOMIZATION_ID),\n options,\n );\n if (result.kind === 'found')\n return { status: foundStatus, definition: result.definition };\n if (result.kind === 'not-found') {\n logWarning(\n `the ${DEFAULT_CUSTOMIZATION_ID} ${options.widget} customization was not found; no remote layer`,\n );\n return { status: 'none' };\n }\n // An implicit default that cannot be read does not block the widget (Q2): it loads without a remote layer.\n if (!explicit) {\n logWarning(\n `the ${DEFAULT_CUSTOMIZATION_ID} ${options.widget} customization could not be read (${result.error.code}); no remote layer`,\n );\n return { status: 'none', error: result.error };\n }\n return { status: 'error', error: result.error };\n}\n\n/**\n * Resolves the stored customization a widget uses as its base layer (resolution table 3.3.1 of QRV-749).\n * found: the requested definition (or the context's); fallback: default, because the requested one does not exist;\n * none: no remote layer; error: the widget shows its configuration error.\n */\nexport async function loadRemoteCustomization(\n options: LoadRemoteCustomizationOptions,\n): Promise<RemoteCustomizationResult> {\n if (\n typeof options?.widget !== 'string' ||\n !WIDGET_PATTERN.test(options.widget)\n ) {\n return {\n status: 'error',\n error: { code: 'INVALID_INPUT', message: 'Invalid widget' },\n };\n }\n if (!options.domain && !options.apiDomain) {\n return {\n status: 'error',\n error: { code: 'INVALID_INPUT', message: 'A domain is required' },\n };\n }\n const { customizationId, context } = options;\n if (\n customizationId !== undefined &&\n customizationId !== null &&\n customizationId !== ''\n ) {\n if (!isValidCustomizationId(customizationId)) {\n logWarning(\n `invalid customizationId; using ${DEFAULT_CUSTOMIZATION_ID}`,\n );\n return loadDefault(options, 'fallback', true);\n }\n const result = await cachedRequest(\n definitionUrl(options, customizationId),\n options,\n );\n if (result.kind === 'found')\n return { status: 'found', definition: result.definition };\n if (result.kind === 'error')\n return { status: 'error', error: result.error };\n logWarning(\n `customization '${customizationId}' not found; using ${DEFAULT_CUSTOMIZATION_ID}`,\n );\n return customizationId === DEFAULT_CUSTOMIZATION_ID\n ? { status: 'none' }\n : loadDefault(options, 'fallback', true);\n }\n if (context) {\n if (!CONTEXT_PATTERN.test(context)) {\n return {\n status: 'error',\n error: { code: 'INVALID_INPUT', message: 'Invalid context' },\n };\n }\n const result = await cachedRequest(\n contextUrl(options, context),\n options,\n );\n if (result.kind === 'found')\n return { status: 'found', definition: result.definition };\n if (result.kind === 'error')\n return { status: 'error', error: result.error };\n return loadDefault(options, 'fallback', true);\n }\n return loadDefault(options, 'found', false);\n}\n\n/**\n * The layers a widget passes to buildStructure for a resolved result: the definition's customization, or none.\n */\nexport function remoteCustomizationLayers(\n result: RemoteCustomizationResult | undefined,\n): WidgetCustomization[] {\n return result?.definition ? [result.definition.customization] : [];\n}\n","type DecoratorFactory = (metadata?: any) => PropertyDecorator;\n\nlet ApiProperty: DecoratorFactory;\n\n// module.require keeps bundlers from hoisting the optional swagger peer into a static browser import.\nconst nodeRequire = typeof module !== 'undefined' && typeof module.require === 'function' ? module.require.bind(module) : undefined;\n\ntry {\n ApiProperty = nodeRequire!('@nestjs/swagger').ApiProperty;\n} catch {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiProperty = (metadata?: unknown): PropertyDecorator => {\n return (): void => {};\n };\n}\n\nexport { ApiProperty };\n"]}
|