@qrvey/widget-configurability 0.0.0-beta.4772 → 0.0.0-beta.4789
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/structures/download-manager.structure.v1.js +1 -0
- package/dist/cjs/structures/download-manager.structure.v1.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/metadata.mjs +1 -0
- package/dist/esm/metadata.mjs.map +1 -1
- package/package.json +1 -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/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","PAGE_SIZES","PAGE_ORIENTATIONS","COLUMN_SIZINGS","validateOneOf","validateMinColumnWidth","isInteger","DX_VALIDATOR_MAP","unsavedChangesBehavior","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","pageSize","orientation","includeTables","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS","DOWNLOAD_MODAL_V1_TABLE_COLUMNS","DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS","DOWNLOAD_MODAL_V1_SECTIONS","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","qAdvancedSettings","qColumns"],"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\n// Page setup values are the export API strings, matched case-sensitively.\nconst PAGE_SIZES = ['LEGACY', 'LETTER', 'A4', 'A3', 'LEGAL', 'TABLOID'];\nconst PAGE_ORIENTATIONS = ['PORTRAIT', 'LANDSCAPE'];\nconst COLUMN_SIZINGS = ['FIT_TO_CONTENT', 'FIT_TO_PAGE_WIDTH'];\n\nconst validateOneOf = (validValues: string[]) => (value: unknown) =>\n typeof value === 'string' && validValues.includes(value)\n ? value\n : undefined;\n\n// Its range is configured per environment by the export service, which checks it.\nconst validateMinColumnWidth = (value: unknown) =>\n Number.isInteger(value) && (value as number) > 0 ? value : undefined;\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 'downloadModal.pageSize': validateOneOf(PAGE_SIZES),\n 'downloadModal.orientation': validateOneOf(PAGE_ORIENTATIONS),\n 'downloadModal.columns.columnSizing': validateOneOf(COLUMN_SIZINGS),\n 'downloadModal.columns.minColumnWidth': validateMinColumnWidth,\n 'downloadModal.columns.repeatTableContext': validateBoolean,\n 'downloadModal.includeTables': validateBoolean,\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n pageSize: validateOneOf(PAGE_SIZES),\n orientation: validateOneOf(PAGE_ORIENTATIONS),\n 'columns.columnSizing': validateOneOf(COLUMN_SIZINGS),\n 'columns.minColumnWidth': validateMinColumnWidth,\n 'columns.repeatTableContext': validateBoolean,\n includeTables: 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// Advanced Settings is a section: a child is visible only when the section and the child are.\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS = 'qAdvancedSettings';\n\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS = [\n 'qPageSize',\n 'qOrientation',\n 'qIncludeTables',\n] as const;\n\n// Table Columns is a section of Advanced Settings; hiding it removes the Columns picker (qSelectedColumns) too.\nexport const DOWNLOAD_MODAL_V1_TABLE_COLUMNS = 'qColumns';\n\nexport const DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS = [\n 'qColumnSizing',\n 'qMinColumnWidth',\n 'qRepeatTableContext',\n 'qSelectedColumns',\n] as const;\n\nexport const DOWNLOAD_MODAL_V1_SECTIONS = {\n [DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS]: [\n ...DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS,\n {\n [DOWNLOAD_MODAL_V1_TABLE_COLUMNS]: [\n ...DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS,\n ],\n },\n ],\n};\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 ...DOWNLOAD_MODAL_V1_SECTIONS,\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\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: [\n ...DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\n ...DOWNLOAD_MODAL_HOST_KEYS,\n ],\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 DOWNLOAD_MODAL_V1_SECTIONS,\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, DOWNLOAD_MODAL_V1_SECTIONS],\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 // A widget without write validators of its own is checked with its runtime ones, so a value the runtime would\n // drop (report, download manager, download modal) is refused when it is written instead of saved and ignored.\n validateDefaultsObject(\n collector,\n value.defaults,\n [...path, 'defaults'],\n writeValidators[scope.widget] ?? widgetValidators[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 // A missing default has nothing to fall back to, so the log says so instead of announcing default.\n if (customizationId === DEFAULT_CUSTOMIZATION_ID) {\n logWarning(\n `the ${DEFAULT_CUSTOMIZATION_ID} ${options.widget} customization was not found; no remote layer`,\n );\n return { status: 'none' };\n }\n logWarning(\n `customization '${customizationId}' not found; using ${DEFAULT_CUSTOMIZATION_ID}`,\n );\n return 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"]}
|
|
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","PAGE_SIZES","PAGE_ORIENTATIONS","COLUMN_SIZINGS","validateOneOf","validateMinColumnWidth","isInteger","DX_VALIDATOR_MAP","unsavedChangesBehavior","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","pageSize","orientation","includeTables","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS","DOWNLOAD_MODAL_V1_TABLE_COLUMNS","DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS","DOWNLOAD_MODAL_V1_SECTIONS","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","qFilterByApplication","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","qAdvancedSettings","qColumns"],"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\n// Page setup values are the export API strings, matched case-sensitively.\nconst PAGE_SIZES = ['LEGACY', 'LETTER', 'A4', 'A3', 'LEGAL', 'TABLOID'];\nconst PAGE_ORIENTATIONS = ['PORTRAIT', 'LANDSCAPE'];\nconst COLUMN_SIZINGS = ['FIT_TO_CONTENT', 'FIT_TO_PAGE_WIDTH'];\n\nconst validateOneOf = (validValues: string[]) => (value: unknown) =>\n typeof value === 'string' && validValues.includes(value)\n ? value\n : undefined;\n\n// Its range is configured per environment by the export service, which checks it.\nconst validateMinColumnWidth = (value: unknown) =>\n Number.isInteger(value) && (value as number) > 0 ? value : undefined;\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 'downloadModal.pageSize': validateOneOf(PAGE_SIZES),\n 'downloadModal.orientation': validateOneOf(PAGE_ORIENTATIONS),\n 'downloadModal.columns.columnSizing': validateOneOf(COLUMN_SIZINGS),\n 'downloadModal.columns.minColumnWidth': validateMinColumnWidth,\n 'downloadModal.columns.repeatTableContext': validateBoolean,\n 'downloadModal.includeTables': validateBoolean,\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n pageSize: validateOneOf(PAGE_SIZES),\n orientation: validateOneOf(PAGE_ORIENTATIONS),\n 'columns.columnSizing': validateOneOf(COLUMN_SIZINGS),\n 'columns.minColumnWidth': validateMinColumnWidth,\n 'columns.repeatTableContext': validateBoolean,\n includeTables: 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// Advanced Settings is a section: a child is visible only when the section and the child are.\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS = 'qAdvancedSettings';\n\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS = [\n 'qPageSize',\n 'qOrientation',\n 'qIncludeTables',\n] as const;\n\n// Table Columns is a section of Advanced Settings; hiding it removes the Columns picker (qSelectedColumns) too.\nexport const DOWNLOAD_MODAL_V1_TABLE_COLUMNS = 'qColumns';\n\nexport const DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS = [\n 'qColumnSizing',\n 'qMinColumnWidth',\n 'qRepeatTableContext',\n 'qSelectedColumns',\n] as const;\n\nexport const DOWNLOAD_MODAL_V1_SECTIONS = {\n [DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS]: [\n ...DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS,\n {\n [DOWNLOAD_MODAL_V1_TABLE_COLUMNS]: [\n ...DOWNLOAD_MODAL_V1_TABLE_COLUMNS_KEYS,\n ],\n },\n ],\n};\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 ...DOWNLOAD_MODAL_V1_SECTIONS,\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\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: [\n ...DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\n ...DOWNLOAD_MODAL_HOST_KEYS,\n ],\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 DOWNLOAD_MODAL_V1_SECTIONS,\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 qFilterByApplication: 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, DOWNLOAD_MODAL_V1_SECTIONS],\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 // A widget without write validators of its own is checked with its runtime ones, so a value the runtime would\n // drop (report, download manager, download modal) is refused when it is written instead of saved and ignored.\n validateDefaultsObject(\n collector,\n value.defaults,\n [...path, 'defaults'],\n writeValidators[scope.widget] ?? widgetValidators[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 // A missing default has nothing to fall back to, so the log says so instead of announcing default.\n if (customizationId === DEFAULT_CUSTOMIZATION_ID) {\n logWarning(\n `the ${DEFAULT_CUSTOMIZATION_ID} ${options.widget} customization was not found; no remote layer`,\n );\n return { status: 'none' };\n }\n logWarning(\n `customization '${customizationId}' not found; using ${DEFAULT_CUSTOMIZATION_ID}`,\n );\n return 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"]}
|