@nebula.js/sn-action-button 1.14.1 → 1.15.3

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"sn-action-button.js","sources":["../src/object-properties.js","../src/data.js","../src/utils/actions.js","../src/utils/util.js","../src/utils/navigation-actions.js","../src/utils/property-resolver.js","../src/utils/conversion.js","../src/utils/lui-icons.js","../src/ext.js","../src/utils/css-colors.js","../src/utils/color-utils.js","../src/utils/url-utils.js","../src/utils/style-formatter.js","../src/components/action-button.js","../src/index.js"],"sourcesContent":["const properties = {\n /**\n * @type {boolean}\n */\n showTitles: false,\n /**\n * @type {string}\n */\n title: '',\n /**\n * @type {string}\n */\n subtitle: '',\n /**\n * @type {string}\n */\n footnote: '',\n /**\n * @type {boolean}\n */\n useEnabledCondition: false,\n /**\n * @type {number}\n */\n enabledCondition: 1,\n /**\n * @type {object}\n */\n navigation: {\n action: 'none',\n },\n /**\n * @type {object}\n */\n style: {\n /**\n * @type {string}\n */\n label: 'Button',\n /**\n * @type {object}\n */\n font: {\n /**\n * @type {number}\n */\n size: 0.5,\n /**\n * @type {boolean}\n */\n useColorExpression: false,\n /**\n * @type {object}\n */\n color: {\n index: -1,\n color: null,\n },\n /**\n * @type {string}\n */\n colorExpression: '',\n /**\n * @type {object}\n */\n style: {\n bold: true,\n italic: false,\n underline: false,\n },\n /**\n * @type {string}\n */\n align: 'center',\n },\n /**\n * @type {object}\n */\n background: {\n /**\n * @type {boolean}\n */\n useColorExpression: false,\n /**\n * @type {object}\n */\n color: {\n index: -1,\n color: null,\n },\n /**\n * @type {string}\n */\n colorExpression: '',\n /**\n * @type {boolean}\n */\n useImage: false,\n /**\n * @type {object}\n */\n url: {\n /**\n * @type {object}\n */\n qStaticContentUrlDef: {\n /**\n * @type {string}\n */\n qUrl: '',\n },\n },\n /**\n * @type {string}\n */\n size: 'auto',\n /**\n * @type {string}\n */\n position: 'centerCenter',\n },\n /**\n * @type {object}\n */\n border: {\n /**\n * @type {boolean}\n */\n useBorder: false,\n /**\n * @type {number}\n */\n radius: 0,\n /**\n * @type {number}\n */\n width: 0,\n /**\n * @type {boolean}\n */\n useColorExpression: false,\n /**\n * @type {object}\n */\n color: {\n index: -1,\n color: null,\n },\n /**\n * @type {string}\n */\n colorExpression: '',\n },\n /**\n * @type {object}\n */\n icon: {\n /**\n * @type {boolean}\n */\n useIcon: false,\n /**\n * @type {string}\n */\n iconType: '',\n /**\n * @type {string}\n */\n position: 'left',\n },\n },\n /**\n * @type {array}\n */\n actions: [],\n};\n\nexport default properties;\n","export default {\n targets: [],\n};\n","export const getValueList = async (app, values, isDate) => {\n let valuesArray = values.split(';');\n if (isDate) {\n let dateExpression = '';\n valuesArray.forEach((date) => {\n dateExpression += `Num('${date}')&';'&`;\n });\n const convertedDates = await app.evaluate(dateExpression.slice(0, -5));\n valuesArray = convertedDates.split(';');\n }\n return valuesArray.map((value) =>\n (Number.isNaN(+value) ? { qText: value } : { qIsNumeric: true, qNumber: Number(value) }));\n};\n\nconst actions = [\n {\n value: 'applyBookmark',\n translation: 'Object.ActionButton.ApplyBookmark',\n group: 'bookmark',\n getActionCall:\n ({ app, bookmark }) =>\n async () => {\n const bookMarks = await app.getBookmarkList();\n const findBm = bookMarks.find((bm) => bm.qData.title === bookmark);\n bookmark && (await app.applyBookmark((findBm && findBm.qInfo && findBm.qInfo.qId) || bookmark));\n },\n requiredInput: ['bookmark'],\n },\n {\n value: 'back',\n translation: 'Object.ActionButton.MoveBackward',\n group: 'selection',\n getActionCall:\n ({ app }) =>\n async () => {\n await app.back();\n },\n requiredInput: [],\n },\n {\n value: 'forward',\n translation: 'Object.ActionButton.MoveForward',\n group: 'selection',\n getActionCall:\n ({ app }) =>\n async () => {\n await app.forward();\n },\n requiredInput: [],\n },\n {\n value: 'clearAll',\n translation: 'Object.ActionButton.ClearAll',\n group: 'selection',\n getActionCall:\n ({ app, softLock }) =>\n async () => {\n await app.clearAll(softLock);\n },\n requiredInput: ['softLock'],\n },\n {\n value: 'clearAllButThis',\n translation: 'Object.ActionButton.ClearAllButThis',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, softLock }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.clearAllButThis(softLock);\n }\n },\n requiredInput: ['field', 'softLock'],\n },\n {\n value: 'clearField',\n translation: 'Object.ActionButton.ClearSelectionInField',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.clear();\n }\n },\n requiredInput: ['field'],\n },\n {\n value: 'selectAll',\n translation: 'Object.ActionButton.SelectAllInField',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, softLock }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.selectAll(softLock);\n }\n },\n requiredInput: ['field', 'softLock'],\n },\n {\n value: 'selectValues',\n translation: 'Object.ActionButton.SelectValuesInField',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, value, softLock }) =>\n async () => {\n if (field && value) {\n const fieldObj = await app.getField(field, qStateName);\n const fieldInfo = await app.getFieldDescription(field);\n const valueList = await getValueList(app, value, fieldInfo.qTags.includes('$date'));\n await fieldObj.selectValues(valueList, false, softLock);\n }\n },\n requiredInput: ['field', 'value', 'softLock'],\n },\n {\n value: 'selectMatchingValues',\n translation: 'Object.ActionButton.SelectMatchingValues',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, value, softLock }) =>\n async () => {\n if (field && value) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.select(value, false, softLock);\n }\n },\n requiredInput: ['field', 'value', 'softLock'],\n },\n {\n value: 'selectAlternative',\n translation: 'Object.ActionButton.SelectAlternatives',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, softLock }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.selectAlternative(softLock);\n }\n },\n requiredInput: ['field', 'softLock'],\n },\n {\n value: 'selectExcluded',\n translation: 'Object.ActionButton.SelectExcluded',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, softLock }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.selectExcluded(softLock);\n }\n },\n requiredInput: ['field', 'softLock'],\n },\n {\n value: 'selectPossible',\n translation: 'Object.ActionButton.SelectPossibleValues',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, softLock }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.selectPossible(softLock);\n }\n },\n requiredInput: ['field', 'softLock'],\n },\n {\n value: 'toggleSelect',\n translation: 'Object.ActionButton.ToggleFieldSelection',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field, value, softLock }) =>\n async () => {\n if (field && value) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.toggleSelect(value, softLock);\n }\n },\n requiredInput: ['field', 'value', 'softLock'],\n },\n {\n value: 'lockAll',\n translation: 'Object.ActionButton.LockAllSelections',\n group: 'selection',\n getActionCall:\n ({ app }) =>\n async () => {\n await app.lockAll();\n },\n requiredInput: [],\n },\n {\n value: 'lockField',\n translation: 'Object.ActionButton.LockField',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.lock();\n }\n },\n requiredInput: ['field'],\n },\n {\n value: 'unlockAll',\n translation: 'Object.ActionButton.UnlockAllSelections',\n group: 'selection',\n getActionCall:\n ({ app }) =>\n async () => {\n await app.unlockAll();\n },\n requiredInput: [],\n },\n {\n value: 'unlockField',\n translation: 'Object.ActionButton.UnlockAField',\n group: 'selection',\n getActionCall:\n ({ app, qStateName, field }) =>\n async () => {\n if (field) {\n const fieldObj = await app.getField(field, qStateName);\n await fieldObj.unlock();\n }\n },\n requiredInput: ['field'],\n },\n {\n value: 'setVariable',\n translation: 'Object.ActionButton.SetVariable',\n group: 'variables',\n getActionCall:\n ({ app, variable, value }) =>\n async () => {\n if (variable && value) {\n try {\n const variableObj = await app.getVariableByName(variable);\n await variableObj.setStringValue(value);\n } catch (e) {\n // no-op\n }\n }\n },\n requiredInput: ['variable', 'value'],\n },\n {\n value: 'doReload',\n translation: 'Object.ActionButton.DoReload',\n group: 'reload',\n getActionCall:\n ({ app, partial }) =>\n async () => {\n const e = await app.doReload(0, !!partial, false);\n if (e) {\n await app.doSave();\n }\n },\n requiredInput: ['partial'],\n },\n {\n /** *************************************\n * Execute Automation contacts internal urls to obtain automation\n * information and execute the automation selected in the property panel in\n * edit mode.\n *\n * ARGS\n * app - Reference to current app inherited from index.js\n * automation - the item id of the automation to contact the items api\n * automationPostData - boolean value. If true, creates a bookmark of the\n * current selections and sends the resulting bookmark id as an input\n * parameter to the selected automation.\n */\n\n translation: 'Object.ActionButton.ExecuteAutomation',\n value: 'executeAutomation',\n getActionCall:\n ({ app, automation, automationPostData }) =>\n async () => {\n if (automation !== undefined) {\n try {\n automation = encodeURIComponent(automation);\n const itemInfo = await fetch(`../api/v1/items/${automation}`).then((response) => response.json());\n const autoInfo = await fetch(`../api/v1/automations/${itemInfo.resourceId}`).then((response) =>\n response.json());\n let executePath = `../api/v1/automations/${autoInfo.guid}/actions/execute?X-Execution-Token=${autoInfo.execution_token}`;\n if (automationPostData && autoInfo.hasinputs) {\n const inputBlock = await fetch(`../api/v1/automations/${itemInfo.resourceId}/blocks`)\n .then((response) => response.json())\n .then((blocks) => {\n let item;\n for (let i = 0; i < blocks.blocks.length; i++) {\n if (blocks.blocks[i].displayName === 'Inputs') {\n item = blocks.blocks[i];\n break;\n }\n }\n return item.form[0].label.toLowerCase();\n });\n const newDate = new Date();\n const bmkProp = {\n qProp: {\n qInfo: {\n qId: `automation_${app.id}_${automation}_${newDate.getTime()}`,\n qType: 'bookmark',\n },\n qMetaDef: {\n title: `Generated automation bookmark on ${newDate.toISOString()}`,\n description: 'Generated to provide target automation with bookmark to get current selection state',\n _createdBy: 'sn-action-button',\n _createdFor: 'automation',\n _createdOn: `${newDate.toISOString()}`,\n _id: `automation_${encodeURIComponent(app.id)}_${automation}_${newDate.getTime()}`,\n },\n },\n };\n const bmk = await app\n .createBookmark(bmkProp)\n .then((bookmark) => bookmark.getLayout())\n .then((layout) => layout.qInfo.qId);\n executePath = `${executePath}&${inputBlock}=${bmk}`;\n }\n // execute the automation\n await fetch(executePath).then((response) => response.json());\n } catch (e) {\n // no-op\n }\n }\n },\n requiredInput: ['automation'],\n },\n];\n\nexport function checkShowAction(data, field) {\n const act = actions.find((action) => data.actionType === action.value);\n return act && act.requiredInput && act.requiredInput.indexOf(field) !== -1;\n}\n\nexport default actions;\n","function evaluateCondition(condition) {\n // case condition is commented\n if (condition && condition.length >= 2 && condition[0] === '/' && condition[1] === '/') {\n return true;\n }\n // convert to numeric with -1 (true) as the default\n const condVal = condition ? +condition : -1;\n // handle the string 'true' as true and all other strings as false\n if (Number.isNaN(+condVal)) {\n return condition.toLowerCase() === 'true';\n }\n return condVal !== 0;\n}\n\nexport default { evaluateCondition };\n","import Util from './util';\n\nconst inIframe = () => {\n try {\n return window.self !== window.top;\n } catch (error) {\n return true;\n }\n};\n\nexport const getOrderedSheets = async (app) => {\n const sheets = await app.getSheetList();\n return sheets.sort((current, next) => current.qData.rank - next.qData.rank);\n};\n\nexport const getOrderedVisibleSheet = async (app) => {\n const sheets = await app.getSheetList();\n const visibleSheets = sheets.filter((sheet) => Util.evaluateCondition(sheet.qData.showCondition));\n return visibleSheets.sort((current, next) => current.qData.rank - next.qData.rank);\n};\n\nconst navigationActions = [\n {\n translation: 'Object.ActionButton.NoNavigation',\n value: 'none',\n },\n {\n translation: 'Object.ActionButton.GoToNextSheet',\n value: 'nextSheet',\n navigationCall: async ({ senseNavigation }) => {\n await senseNavigation.nextSheet();\n },\n requiredInput: [],\n },\n {\n translation: 'Object.ActionButton.GoToPreviousSheet',\n value: 'prevSheet',\n navigationCall: async ({ senseNavigation }) => {\n await senseNavigation.prevSheet();\n },\n requiredInput: [],\n },\n {\n translation: 'Object.ActionButton.GoToLastSheet',\n value: 'lastSheet',\n navigationCall: async ({ app, senseNavigation }) => {\n const sheets = await getOrderedVisibleSheet(app);\n await senseNavigation.goToSheet(sheets[sheets.length - 1].qInfo.qId);\n },\n requiredInput: [],\n },\n {\n translation: 'Object.ActionButton.GoToFirstSheet',\n value: 'firstSheet',\n navigationCall: async ({ app, senseNavigation }) => {\n const sheets = await getOrderedVisibleSheet(app);\n await senseNavigation.goToSheet(sheets[0].qInfo.qId);\n },\n requiredInput: [],\n },\n\n {\n translation: 'Object.ActionButton.GoToASheet',\n value: 'goToSheet',\n navigationCall: async ({ senseNavigation, sheet }) => {\n sheet && (await senseNavigation.goToSheet(sheet));\n },\n // TODO replace by searchable dropdown\n requiredInput: ['sheet'],\n },\n {\n translation: 'Object.ActionButton.GoToSheetById',\n value: 'goToSheetById',\n navigationCall: async ({ senseNavigation, sheet }) => {\n sheet && (await senseNavigation.goToSheet(sheet));\n },\n // TODO replace by searchable dropdown\n requiredInput: ['sheetId'],\n },\n {\n translation: 'Object.ActionButton.GoToStory',\n value: 'goToStory',\n navigationCall: async ({ senseNavigation, story }) => {\n story && (await senseNavigation.goToStory(story));\n },\n requiredInput: ['story'],\n },\n {\n translation: 'Object.ActionButton.OpenWebsiteEmail',\n value: 'openWebsite',\n navigationCall: async ({ websiteUrl, sameWindow }) => {\n try {\n if (websiteUrl) {\n const url = websiteUrl.match(/^(https?:\\/\\/|mailto:)/) ? websiteUrl : `http://${websiteUrl}`;\n let target = '';\n if (sameWindow) {\n target = inIframe() ? '_parent' : '_self';\n }\n window.open(url, target);\n }\n } catch (error) {\n // no-op\n }\n },\n requiredInput: ['websiteUrl'],\n },\n];\n\nexport const checkShowNavigation = (data, field) => {\n const nav = navigationActions.find((navigation) => data.navigation.action === navigation.value);\n return nav && nav.requiredInput && nav.requiredInput.indexOf(field) !== -1;\n};\n\nexport default navigationActions;\n","function getValue(dataContainer, reference, defaultValue) {\n const steps = reference.split('.');\n let i;\n if (dataContainer === undefined) {\n return defaultValue;\n }\n for (i = 0; i < steps.length; ++i) {\n if (typeof dataContainer[steps[i]] === 'undefined') {\n return defaultValue;\n }\n dataContainer = dataContainer[steps[i]];\n }\n\n return dataContainer;\n}\n\nexport default {\n getValue,\n};\n","export function convertAction(action, newProperties) {\n const newAction = {\n actionType: action.actionType,\n bookmark: action.selectedBookmark,\n // Will need to convert field selected by expression\n field: action.selectedField,\n // Need to convert expression for variable\n variable: action.variable,\n value: action.value,\n softLock: action.softLock,\n cId: action.cId,\n };\n switch (action.actionType) {\n case 'clearOther':\n newAction.actionType = 'clearAllButThis';\n break;\n case 'unlockAllAndClearAll':\n newAction.actionType = 'clearAll';\n newAction.softLock = true;\n break;\n case 'selectField':\n newAction.actionType = 'selectMatchingValues';\n break;\n case 'selectAndLockField':\n newProperties.actions.push({ ...newAction, cId: null, actionType: 'selectMatchingValues' });\n newAction.actionType = 'lockField';\n break;\n default:\n break;\n }\n return newProperties.actions.push(newAction);\n}\n\nexport function convertNavigation(oldType) {\n switch (oldType) {\n case 'gotoSheet':\n return 'goToSheet';\n case 'gotoSheetById':\n return 'goToSheetById';\n case 'gotoStory':\n return 'goToStory';\n case 'switchToEdit':\n return 'none';\n default:\n return oldType;\n }\n}\n\nconst importProperties = (exportedFmt, initialProperties) => {\n const newPropertyTree = { qChildren: [] };\n const newProperties = {\n actions: [],\n // Adding props to avoid errors from old navigation button. Converting to any other chart will still give these errors\n props: { useEnabledCondition: null, fullWidth: 'auto' },\n qLayoutExclude: { disabled: {} },\n ...initialProperties,\n };\n\n if (exportedFmt && exportedFmt.properties.visualization === 'qlik-button-for-navigation') {\n Object.keys(exportedFmt.properties).forEach((key) => {\n let props;\n switch (key) {\n case 'props':\n props = exportedFmt.properties[key];\n newProperties.style.label = props.buttonLabel;\n newProperties.style.icon.useIcon = props.buttonShowIcon;\n newProperties.style.icon.iconType = props.buttonIconLui;\n newProperties.style.font.align = props.buttonTextAlign;\n newProperties.useEnabledCondition = props.useEnabledCondition;\n newProperties.enabledCondition = props.enabledCondition;\n props.actionItems &&\n props.actionItems.forEach((actionItem) => {\n convertAction(actionItem, newProperties);\n });\n newProperties.navigation = {\n action: convertNavigation(props.navigationAction),\n // Need to convert sheet from expression\n sheet: props.navigationAction === 'gotoSheetById' ? props.sheetId : props.selectedSheet,\n story: props.selectedStory,\n websiteUrl: props.websiteUrl,\n sameWindow: props.sameWindow,\n };\n break;\n case 'qStateName':\n case 'showTitles':\n case 'title':\n case 'subtitle':\n case 'footnote':\n newProperties[key] = exportedFmt.properties[key];\n break;\n default:\n break;\n }\n });\n }\n newPropertyTree.qProperty = newProperties;\n return newPropertyTree;\n};\n\nexport default importProperties;\n","export default [\n {\n value: 'image',\n icon: 'image',\n label: 'Image',\n },\n {\n value: 'back',\n icon: 'back',\n label: 'Back',\n },\n {\n value: 'forward',\n icon: 'forward',\n label: 'Forward',\n },\n {\n value: 'history',\n icon: 'history',\n label: 'History',\n },\n {\n value: 'help',\n icon: 'help',\n label: 'Help',\n },\n {\n value: 'info',\n icon: 'info',\n label: 'Info',\n },\n {\n value: 'text',\n icon: 'text',\n label: 'Text',\n },\n {\n value: 'group',\n icon: 'group',\n label: 'Group',\n },\n {\n value: 'search',\n icon: 'search',\n label: 'Search',\n },\n {\n value: 'zoom-in',\n icon: 'zoom-in',\n label: 'Zoom in',\n },\n {\n value: 'zoom-out',\n icon: 'zoom-out',\n label: 'Zoom out',\n },\n {\n value: 'export',\n icon: 'export',\n label: 'Export',\n },\n {\n value: 'import',\n icon: 'import',\n label: 'Import',\n },\n {\n value: 'field',\n icon: 'field',\n label: 'Field',\n },\n {\n value: 'lock',\n icon: 'lock',\n label: 'Lock',\n },\n {\n value: 'unlock',\n icon: 'unlock',\n label: 'Unlock',\n },\n {\n value: 'database',\n icon: 'database',\n label: 'Database',\n },\n {\n value: 'calendar',\n icon: 'calendar',\n label: 'Calendar',\n },\n {\n value: 'bookmark',\n icon: 'bookmark',\n label: 'Bookmark',\n },\n {\n value: 'library',\n icon: 'library',\n label: 'Library',\n },\n {\n value: 'star',\n icon: 'star',\n label: 'Star',\n },\n {\n value: 'print',\n icon: 'print',\n label: 'Print',\n },\n {\n value: 'remove',\n icon: 'remove',\n label: 'Remove',\n },\n {\n value: 'handle',\n icon: 'handle',\n label: 'Handle',\n },\n {\n value: 'handle-horizontal',\n icon: 'handle-horizontal',\n label: 'Handle horizontal',\n },\n {\n value: 'menu',\n icon: 'menu',\n label: 'Menu',\n },\n {\n value: 'list',\n icon: 'list',\n label: 'List',\n },\n {\n value: 'unordered-list',\n icon: 'unordered-list',\n label: 'Unordered list',\n },\n {\n value: 'clock',\n icon: 'clock',\n label: 'Clock',\n },\n {\n value: 'puzzle',\n icon: 'puzzle',\n label: 'Puzzle',\n },\n {\n value: 'filterpane',\n icon: 'filterpane',\n label: 'Filterpane',\n },\n {\n value: 'plus',\n icon: 'plus',\n label: 'Plus',\n },\n {\n value: 'minus',\n icon: 'minus',\n label: 'Minus',\n },\n {\n value: 'triangle-top',\n icon: 'triangle-top',\n label: 'Triangle top',\n },\n {\n value: 'triangle-bottom',\n icon: 'triangle-bottom',\n label: 'Triangle bottom',\n },\n {\n value: 'triangle-left',\n icon: 'triangle-left',\n label: 'Triangle left',\n },\n {\n value: 'triangle-right',\n icon: 'triangle-right',\n label: 'Triangle right',\n },\n {\n value: 'tick',\n icon: 'tick',\n label: 'Tick',\n },\n {\n value: 'cogwheel',\n icon: 'cogwheel',\n label: 'Cogwheel',\n },\n {\n value: 'settings',\n icon: 'settings',\n label: 'Settings',\n },\n {\n value: 'cut',\n icon: 'cut',\n label: 'Cut',\n },\n {\n value: 'copy',\n icon: 'copy',\n label: 'Copy',\n },\n {\n value: 'paste',\n icon: 'paste',\n label: 'Paste',\n },\n {\n value: 'camera',\n icon: 'camera',\n label: 'Camera',\n },\n {\n value: 'slide-show',\n icon: 'slide-show',\n label: 'Slide show',\n },\n {\n value: 'palette',\n icon: 'palette',\n label: 'Palette',\n },\n {\n value: 'shapes',\n icon: 'shapes',\n label: 'Shapes',\n },\n {\n value: 'effects',\n icon: 'effects',\n label: 'Effects',\n },\n {\n value: 'file',\n icon: 'file',\n label: 'File',\n },\n {\n value: 'expand',\n icon: 'expand',\n label: 'Expand',\n },\n {\n value: 'collapse',\n icon: 'collapse',\n label: 'Collapse',\n },\n {\n value: 'bin',\n icon: 'bin',\n label: 'Bin',\n },\n {\n value: 'link',\n icon: 'link',\n label: 'Link',\n },\n {\n value: 'pivot',\n icon: 'pivot',\n label: 'Pivot',\n },\n {\n value: 'reload',\n icon: 'reload',\n label: 'Reload',\n },\n {\n value: 'add',\n icon: 'add',\n label: 'Add',\n },\n {\n value: 'edit',\n icon: 'edit',\n label: 'Edit',\n },\n {\n value: 'key',\n icon: 'key',\n label: 'Key',\n },\n {\n value: 'box',\n icon: 'box',\n label: 'Box',\n },\n {\n value: 'home',\n icon: 'home',\n label: 'Home',\n },\n {\n value: 'person',\n icon: 'person',\n label: 'Person',\n },\n {\n value: 'grid',\n icon: 'grid',\n label: 'Grid',\n },\n {\n value: 'cloud',\n icon: 'cloud',\n label: 'Cloud',\n },\n {\n value: 'more',\n icon: 'more',\n label: 'More',\n },\n {\n value: 'folder',\n icon: 'folder',\n label: 'Folder',\n },\n {\n value: 'drop',\n icon: 'drop',\n label: 'Drop',\n },\n {\n value: 'play',\n icon: 'play',\n label: 'Play',\n },\n {\n value: 'tag',\n icon: 'tag',\n label: 'Tag',\n },\n {\n value: 'close',\n icon: 'close',\n label: 'Close',\n },\n {\n value: 'warning',\n icon: 'warning',\n label: 'Warning',\n },\n {\n value: 'warning-triangle',\n icon: 'warning-triangle',\n label: 'Warning triangle',\n },\n {\n value: 'share',\n icon: 'share',\n label: 'Share',\n },\n {\n value: 'top',\n icon: 'top',\n label: 'Top',\n },\n {\n value: 'low-resolution',\n icon: 'low-resolution',\n label: 'Low resolution',\n },\n {\n value: 'high-resolution',\n icon: 'high-resolution',\n label: 'High resolution',\n },\n {\n value: 'view',\n icon: 'view',\n label: 'View',\n },\n {\n value: 'control',\n icon: 'control',\n label: 'Control',\n },\n {\n value: 'code',\n icon: 'code',\n label: 'Code',\n },\n {\n value: 'upload',\n icon: 'upload',\n label: 'Upload',\n },\n {\n value: 'repair',\n icon: 'repair',\n label: 'Repair',\n },\n {\n value: 'split',\n icon: 'split',\n label: 'Split',\n },\n {\n value: 'up-down',\n icon: 'up-down',\n label: 'Up down',\n },\n {\n value: 'disconnect',\n icon: 'disconnect',\n label: 'Disconnect',\n },\n {\n value: 'photo-library',\n icon: 'photo-library',\n label: 'Photo library',\n },\n {\n value: 'application',\n icon: 'application',\n label: 'Application',\n },\n {\n value: 'new-tab',\n icon: 'new-tab',\n label: 'New tab',\n },\n {\n value: 'ascending',\n icon: 'ascending',\n label: 'Ascending',\n },\n {\n value: 'descending',\n icon: 'descending',\n label: 'Descending',\n },\n {\n value: 'arrow-up',\n icon: 'arrow-up',\n label: 'Arrow up',\n },\n {\n value: 'arrow-down',\n icon: 'arrow-down',\n label: 'Arrow down',\n },\n {\n value: 'arrow-right',\n icon: 'arrow-right',\n label: 'Arrow right',\n },\n {\n value: 'arrow-left',\n icon: 'arrow-left',\n label: 'Arrow left',\n },\n {\n value: 'sync',\n icon: 'sync',\n label: 'Sync',\n },\n {\n value: 'draggable',\n icon: 'draggable',\n label: 'Draggable',\n },\n {\n value: 'book',\n icon: 'book',\n label: 'Book',\n },\n {\n value: 'measure',\n icon: 'measure',\n label: 'Measure',\n },\n {\n value: 'download',\n icon: 'download',\n label: 'Download',\n },\n {\n value: 'more-rounded',\n icon: 'more-rounded',\n label: 'More rounded',\n },\n {\n value: 'align-object-left',\n icon: 'align-object-left',\n label: 'Align object-left',\n },\n {\n value: 'align-object-center',\n icon: 'align-object-center',\n label: 'Align object-center',\n },\n {\n value: 'align-object-right',\n icon: 'align-object-right',\n label: 'Align object-right',\n },\n {\n value: 'submit',\n icon: 'submit',\n label: 'Submit',\n },\n {\n value: 'operators',\n icon: 'operators',\n label: 'Operators',\n },\n {\n value: 'general-data-class',\n icon: 'general-data-class',\n label: 'General data-class',\n },\n {\n value: 'building',\n icon: 'building',\n label: 'Building',\n },\n {\n value: 'bell',\n icon: 'bell',\n label: 'Bell',\n },\n {\n value: 'unlink',\n icon: 'unlink',\n label: 'Unlink',\n },\n {\n value: 'lightbulb',\n icon: 'lightbulb',\n label: 'Lightbulb',\n },\n {\n value: 'log-in',\n icon: 'log-in',\n label: 'Log in',\n },\n {\n value: 'log-out',\n icon: 'log-out',\n label: 'Log out',\n },\n {\n value: 'previous',\n icon: 'previous',\n label: 'Previous',\n },\n {\n value: 'goto',\n icon: 'goto',\n label: 'Goto',\n },\n {\n value: 'save',\n icon: 'save',\n label: 'Save',\n },\n {\n value: 'pause',\n icon: 'pause',\n label: 'Pause',\n },\n {\n value: 'stop',\n icon: 'stop',\n label: 'Stop',\n },\n {\n value: 'step-in',\n icon: 'step-in',\n label: 'Step in',\n },\n {\n value: 'comment',\n icon: 'comment',\n label: 'Comment',\n },\n {\n value: 'indent',\n icon: 'indent',\n label: 'Indent',\n },\n {\n value: 'undent',\n icon: 'undent',\n label: 'Undent',\n },\n {\n value: 'filter',\n icon: 'filter',\n label: 'Filter',\n },\n {\n value: 'clear-filter',\n icon: 'clear-filter',\n label: 'Clear filter',\n },\n {\n value: 'insert',\n icon: 'insert',\n label: 'Insert',\n },\n {\n value: 'direction-left',\n icon: 'direction-left',\n label: 'Direction left',\n },\n {\n value: 'swap',\n icon: 'swap',\n label: 'Swap',\n },\n {\n value: 'bubbles',\n icon: 'bubbles',\n label: 'Bubbles',\n },\n {\n value: 'sheet',\n icon: 'sheet',\n label: 'Sheet',\n },\n {\n value: 'object',\n icon: 'object',\n label: 'Object',\n },\n {\n value: 'clear-selections',\n icon: 'clear-selections',\n label: 'Clear selections',\n },\n {\n value: 'selections-tool',\n icon: 'selections-tool',\n label: 'Selections tool',\n },\n {\n value: 'selections-reload',\n icon: 'selections-reload',\n label: 'Selections reload',\n },\n {\n value: 'selections-back',\n icon: 'selections-back',\n label: 'Selections back',\n },\n {\n value: 'selections-forward',\n icon: 'selections-forward',\n label: 'Selections forward',\n },\n {\n value: 'expression',\n icon: 'expression',\n label: 'Expression',\n },\n {\n value: 'select-alternative',\n icon: 'select-alternative',\n label: 'Select alternative',\n },\n {\n value: 'select-possible',\n icon: 'select-possible',\n label: 'Select possible',\n },\n {\n value: 'select-excluded',\n icon: 'select-excluded',\n label: 'Select excluded',\n },\n {\n value: 'select-all',\n icon: 'select-all',\n label: 'Select all',\n },\n {\n value: 'bar-chart',\n icon: 'bar-chart',\n label: 'Bar chart',\n },\n {\n value: 'bar-chart-horizontal',\n icon: 'bar-chart-horizontal',\n label: 'Bar chart-horizontal',\n },\n {\n value: 'line-chart',\n icon: 'line-chart',\n label: 'Line chart',\n },\n {\n value: 'pie-chart',\n icon: 'pie-chart',\n label: 'Pie chart',\n },\n {\n value: 'gauge-chart',\n icon: 'gauge-chart',\n label: 'Gauge chart',\n },\n {\n value: 'kpi',\n icon: 'kpi',\n label: 'Kpi',\n },\n {\n value: 'scatter-chart',\n icon: 'scatter-chart',\n label: 'Scatter chart',\n },\n {\n value: 'map',\n icon: 'map',\n label: 'Map',\n },\n {\n value: 'table',\n icon: 'table',\n label: 'Table',\n },\n {\n value: 'pivot-table',\n icon: 'pivot-table',\n label: 'Pivot table',\n },\n {\n value: 'treemap',\n icon: 'treemap',\n label: 'Treemap',\n },\n {\n value: 'combo-chart',\n icon: 'combo-chart',\n label: 'Combo chart',\n },\n {\n value: 'boxplot',\n icon: 'boxplot',\n label: 'Boxplot',\n },\n {\n value: 'distributionplot',\n icon: 'distributionplot',\n label: 'Distributionplot',\n },\n {\n value: 'histogram',\n icon: 'histogram',\n label: 'Histogram',\n },\n {\n value: 'direct-discovery',\n icon: 'direct-discovery',\n label: 'Direct discovery',\n },\n {\n value: 'data-model',\n icon: 'data-model',\n label: 'Data model',\n },\n {\n value: 'script',\n icon: 'script',\n label: 'Script',\n },\n {\n value: 'script-ok',\n icon: 'script-ok',\n label: 'Script ok',\n },\n {\n value: 'debug',\n icon: 'debug',\n label: 'Debug',\n },\n {\n value: 'auto-layout',\n icon: 'auto-layout',\n label: 'Auto layout',\n },\n];\n","import actions, { checkShowAction } from './utils/actions';\nimport navigationActions, { checkShowNavigation } from './utils/navigation-actions';\nimport propertyResolver from './utils/property-resolver';\nimport importProperties from './utils/conversion';\nimport luiIcons from './utils/lui-icons';\n\nconst colorOptions = [\n {\n value: false,\n translation: 'properties.colorMode.primary',\n },\n {\n value: true,\n translation: 'properties.colorMode.byExpression',\n },\n];\n\nconst toggleOptions = [\n {\n value: true,\n translation: 'properties.on',\n },\n {\n value: false,\n translation: 'properties.off',\n },\n];\n\nexport default function ext({ translator, automationsEnabled }) {\n return {\n definition: {\n type: 'items',\n component: 'accordion',\n items: {\n actions: {\n type: 'items',\n translation: 'Object.ActionButton.ActionsAndNavigation',\n grouped: true,\n items: {\n actions: {\n type: 'array',\n translation: 'Object.ActionButton.Actions',\n ref: 'actions',\n itemTitleRef: (data) => {\n if (data.actionLabel) {\n return data.actionLabel;\n }\n // If actionType exists but it's not found in the actions list,\n // the action is invalid for the current version of the button\n const fallbackTitle = data.actionType\n ? 'Object.ActionButton.InvalidAction'\n : 'Object.ActionButton.NewAction';\n const action = actions.find((act) => data.actionType === act.value);\n return translator.get((action && action.translation) || fallbackTitle);\n },\n allowAdd: true,\n allowRemove: true,\n allowMove: true,\n addTranslation: 'Object.ActionButton.AddAction',\n items: {\n label: {\n component: 'string',\n ref: 'actionLabel',\n translation: 'Common.Label',\n expression: 'optional',\n defaultValue: '',\n },\n actionType: {\n type: 'string',\n ref: 'actionType',\n component: 'expression-with-dropdown',\n translation: 'Object.ActionButton.Action',\n defaultValue: '',\n options: actions.filter((action) => action.value !== 'executeAutomation' || automationsEnabled),\n dropdownOnly: true,\n },\n bookmark: {\n type: 'string',\n ref: 'bookmark',\n component: 'expression-with-dropdown',\n translation: 'ExpressionEditor.SetExpresions.Bookmark',\n defaultValue: '',\n dropdownOnly: true,\n options: async (action, hyperCubeHandler) => {\n const bms = await hyperCubeHandler.app.getBookmarkList();\n return bms.map((bookmark) => ({\n label: bookmark.qData.title,\n value: bookmark.qInfo.qId,\n }));\n },\n show: (data) => checkShowAction(data, 'bookmark'),\n },\n field: {\n type: 'string',\n ref: 'field',\n component: 'expression-with-dropdown',\n translation: 'Common.Field',\n defaultValue: '',\n dropdownOnly: true,\n options: async (action, hyperCubeHandler) => {\n const fields = await hyperCubeHandler.app.getFieldList();\n return fields.map((field) => ({\n label: field.qName,\n value: field.qName,\n }));\n },\n show: (data) => checkShowAction(data, 'field'),\n },\n variable: {\n type: 'string',\n ref: 'variable',\n component: 'expression-with-dropdown',\n translation: 'Common.Variable',\n defaultValue: '',\n expressionType: 'StringExpression',\n options: async (action, hyperCubeHandler) => {\n const variables = await hyperCubeHandler.app.getVariableList();\n return variables\n .filter((v) => !v.qIsReserved || (v.qIsReserved && action.showSystemVariables))\n .map((v) => ({\n label: v.qName,\n value: v.qName,\n }));\n },\n show: (data) => checkShowAction(data, 'variable'),\n },\n showSystemVariables: {\n type: 'boolean',\n ref: 'showSystemVariables',\n translation: 'ExpressionEditor.SystemVariables',\n defaultValue: false,\n show: (data) => checkShowAction(data, 'variable'),\n },\n softLock: {\n type: 'boolean',\n ref: 'softLock',\n translation: 'Object.ActionButton.Softlock',\n defaultValue: false,\n show: (data) => checkShowAction(data, 'softLock'),\n },\n value: {\n type: 'string',\n ref: 'value',\n component: 'string',\n translation: 'properties.value',\n expression: 'optional',\n show: (data) => checkShowAction(data, 'value'),\n },\n partial: {\n type: 'boolean',\n ref: 'partial',\n translation: 'Object.ActionButton.Partial',\n defaultValue: false,\n show: (data) => checkShowAction(data, 'partial'),\n },\n // adds automation to actions and adds a dropdown property panel\n // item to select the automation for the button to trigger\n automation: {\n type: 'string',\n component: 'dropdown',\n translation: 'Object.ActionButton.Automation',\n ref: 'automation',\n options: async () => {\n const automations = await fetch('../api/v1/items?resourceType=automation').then((response) =>\n response.json());\n return automations.data.map((blend) => ({\n value: blend.id,\n label: blend.name,\n }));\n },\n show: (data) => checkShowAction(data, 'automation'),\n },\n // Boolean property to instruct the automation action to create a\n // bookmark and send it to the selected automation in the\n // property panel.\n automationPostData: {\n type: 'boolean',\n ref: 'automationPostData',\n translation: 'Object.ActionButton.Automation.SendSelections',\n show: (data) => checkShowAction(data, 'automation'),\n defaultValue: false,\n },\n },\n },\n navigation: {\n translation: 'Object.ActionButton.Navigation',\n type: 'items',\n items: {\n action: {\n ref: 'navigation.action',\n translation: 'Object.ActionButton.Navigation',\n component: 'expression-with-dropdown',\n defaultValue: null,\n options: navigationActions,\n dropdownOnly: true,\n },\n sheetId: {\n type: 'string',\n ref: 'navigation.sheet',\n translation: 'properties.sheet',\n expression: 'optional',\n show: (data) => checkShowNavigation(data, 'sheetId'),\n },\n sheet: {\n type: 'string',\n ref: 'navigation.sheet',\n translation: 'properties.sheet',\n component: 'expression-with-dropdown',\n expressionType: 'StringExpression',\n show: (data) => checkShowNavigation(data, 'sheet'),\n options: async (action, hyperCubeHandler) => {\n const sheets = await hyperCubeHandler.app.getSheetList();\n return sheets.map((sheet) => ({\n value: sheet.qInfo.qId,\n label: sheet.qMeta.title,\n showCondition: sheet.qData.showCondition,\n }));\n },\n },\n story: {\n type: 'string',\n ref: 'navigation.story',\n translation: 'properties.story',\n component: 'expression-with-dropdown',\n expressionType: 'StringExpression',\n show: (data) => checkShowNavigation(data, 'story'),\n options: async (action, hyperCubeHandler) => {\n const stories = await hyperCubeHandler.app.getStoryList();\n return stories.map((story) => ({\n value: story.qInfo.qId,\n label: story.qMeta.title,\n }));\n },\n },\n websiteUrl: {\n type: 'string',\n expression: 'optional',\n ref: 'navigation.websiteUrl',\n translation: 'properties.website',\n show: (data) => checkShowNavigation(data, 'websiteUrl'),\n },\n sameWindow: {\n type: 'boolean',\n ref: 'navigation.sameWindow',\n translation: 'properties.sameWindow',\n show: (data) => checkShowNavigation(data, 'websiteUrl'),\n defaultValue: false,\n },\n },\n },\n },\n },\n enableCondition: {\n type: 'items',\n translation: 'properties.enableConditionSection',\n items: {\n useCondition: {\n type: 'boolean',\n component: 'switch',\n translation: 'properties.enableToggle',\n ref: 'useEnabledCondition',\n options: [\n {\n value: true,\n translation: 'properties.on',\n },\n {\n value: false,\n translation: 'properties.off',\n },\n ],\n },\n condition: {\n ref: 'enabledCondition',\n translation: 'properties.enableCondition',\n type: 'integer',\n expression: 'optional',\n show: (data) => data.useEnabledCondition,\n },\n },\n },\n settings: {\n component: 'expandable-items',\n translation: 'Common.Appearance',\n uses: 'settings',\n items: {\n general: {\n type: 'items',\n translation: 'properties.general',\n items: {\n showTitles: {},\n details: {\n show: false,\n },\n label: {\n component: 'string',\n ref: 'style.label',\n translation: 'Common.Label',\n expression: 'optional',\n },\n },\n },\n font: {\n grouped: true,\n type: 'items',\n translation: 'properties.font',\n items: {\n sizeAndColor: {\n type: 'items',\n items: {\n fontSize: {\n component: 'slider',\n type: 'number',\n ref: 'style.font.size',\n translation: 'properties.fontSize',\n min: 0.2,\n max: 1,\n step: 0.01,\n },\n useFontColorExpression: {\n ref: 'style.font.useColorExpression',\n type: 'boolean',\n translation: 'properties.fontColor',\n component: 'dropdown',\n options: colorOptions,\n },\n colorPicker: {\n component: 'color-picker',\n type: 'object',\n ref: 'style.font.color',\n translation: 'properties.color',\n dualOutput: true,\n show: (data) => !propertyResolver.getValue(data, 'style.font.useColorExpression'),\n },\n colorExpression: {\n component: 'string',\n type: 'string',\n ref: 'style.font.colorExpression',\n translation: 'Common.Expression',\n expression: 'optional',\n show: (data) => propertyResolver.getValue(data, 'style.font.useColorExpression'),\n },\n },\n },\n stylingAndAlign: {\n type: 'items',\n items: {\n fontStyling: {\n component: 'item-selection-list',\n type: 'string',\n ref: 'style.font.style',\n translation: 'properties.textStyle',\n horizontal: true,\n multipleSelect: true,\n items: [\n {\n component: 'icon-item',\n icon: 'bold',\n value: 'bold',\n translation: 'Common.bold',\n labelPlacement: 'bottom',\n },\n {\n component: 'icon-item',\n icon: 'italic',\n value: 'italic',\n translation: 'Common.italic',\n labelPlacement: 'bottom',\n },\n {\n component: 'icon-item',\n icon: 'underline',\n value: 'underline',\n translation: 'Common.underline',\n labelPlacement: 'bottom',\n },\n ],\n },\n textAlign: {\n component: 'item-selection-list',\n type: 'string',\n ref: 'style.font.align',\n translation: 'properties.Alignment',\n horizontal: true,\n items: [\n {\n component: 'icon-item',\n icon: 'align_left',\n value: 'left',\n translation: 'properties.dock.left',\n labelPlacement: 'bottom',\n },\n {\n component: 'icon-item',\n icon: 'align_center',\n value: 'center',\n translation: 'Common.Center',\n labelPlacement: 'bottom',\n },\n {\n component: 'icon-item',\n icon: 'align_right',\n value: 'right',\n translation: 'properties.dock.right',\n labelPlacement: 'bottom',\n },\n ],\n },\n },\n },\n },\n },\n background: {\n grouped: true,\n type: 'items',\n translation: 'properties.background',\n items: {\n backgroundColor: {\n type: 'items',\n items: {\n useColorExpression: {\n ref: 'style.background.useColorExpression',\n type: 'boolean',\n translation: 'AppDetails.SheetBackgroundColor',\n component: 'dropdown',\n options: colorOptions,\n },\n colorPicker: {\n component: 'color-picker',\n type: 'object',\n ref: 'style.background.color',\n translation: 'properties.color',\n dualOutput: true,\n show: (data) => !propertyResolver.getValue(data, 'style.background.useColorExpression'),\n },\n colorExpression: {\n component: 'string',\n type: 'string',\n ref: 'style.background.colorExpression',\n translation: 'Common.Expression',\n expression: 'optional',\n show: (data) => propertyResolver.getValue(data, 'style.background.useColorExpression'),\n },\n },\n },\n backgroundImage: {\n type: 'items',\n items: {\n useBackgroundImage: {\n ref: 'style.background.useImage',\n type: 'boolean',\n translation: 'properties.backgroundImage.use',\n component: 'switch',\n options: toggleOptions,\n },\n backgroundUrl: {\n ref: 'style.background.url.qStaticContentUrlDef.qUrl',\n layoutRef: 'style.background.url.qStaticContentUrl.qUrl',\n schemaIgnore: true,\n translation: 'Common.Image',\n tooltip: { select: 'properties.media.select', remove: 'properties.media.removeBackground' },\n type: 'string',\n component: 'media',\n show(data) {\n return propertyResolver.getValue(data, 'style.background.useImage');\n },\n },\n backgroundSize: {\n ref: 'style.background.size',\n translation: 'properties.backgroundImage.size',\n type: 'string',\n component: 'dropdown',\n options: [\n {\n value: 'auto',\n translation: 'properties.backgroundImage.originalSize',\n },\n {\n value: 'alwaysFit',\n translation: 'properties.backgroundImage.sizeAlwaysFit',\n },\n {\n value: 'fitWidth',\n translation: 'properties.backgroundImage.sizeFitWidth',\n },\n {\n value: 'fitHeight',\n translation: 'properties.backgroundImage.sizeFitHeight',\n },\n {\n value: 'fill',\n translation: 'properties.backgroundImage.sizeStretch',\n },\n {\n value: 'alwaysFill',\n translation: 'properties.backgroundImage.sizeAlwaysFill',\n },\n ],\n show(data) {\n return (\n propertyResolver.getValue(data, 'style.background.useImage') &&\n !!propertyResolver.getValue(data, 'style.background.url.qStaticContentUrlDef.qUrl')\n );\n },\n },\n backgroundPosition: {\n ref: 'style.background.position',\n translation: 'Common.Position',\n type: 'string',\n component: 'align-matrix',\n show(data) {\n return (\n propertyResolver.getValue(data, 'style.background.useImage') &&\n propertyResolver.getValue(data, 'style.background.url.qStaticContentUrlDef.qUrl') &&\n propertyResolver.getValue(data, 'style.background.size') !== 'fill'\n );\n },\n currentSize(data) {\n return propertyResolver.getValue(data, 'style.background.size');\n },\n },\n },\n },\n },\n },\n border: {\n type: 'items',\n grouped: true,\n translation: 'properties.border',\n items: {\n borderSettings: {\n type: 'items',\n items: {\n useBorder: {\n ref: 'style.border.useBorder',\n type: 'boolean',\n translation: 'properties.border.use',\n component: 'switch',\n options: toggleOptions,\n },\n borderRadius: {\n component: 'slider',\n show: (data) => propertyResolver.getValue(data, 'style.border.useBorder'),\n translation: 'properties.border.radius',\n type: 'number',\n ref: 'style.border.radius',\n min: 0,\n max: 1,\n step: 0.01,\n },\n borderWidth: {\n component: 'slider',\n show: (data) => propertyResolver.getValue(data, 'style.border.useBorder'),\n type: 'number',\n ref: 'style.border.width',\n translation: 'properties.border.width',\n min: 0,\n max: 0.5,\n step: 0.005,\n },\n colorDropdown: {\n type: 'string',\n show: (data) => propertyResolver.getValue(data, 'style.border.useBorder'),\n component: 'dropdown',\n translation: 'properties.border.color',\n ref: 'style.border.useColorExpression',\n options: colorOptions,\n },\n colorPicker: {\n component: 'color-picker',\n type: 'object',\n ref: 'style.border.color',\n translation: 'properties.color',\n dualOutput: true,\n show: (data) =>\n propertyResolver.getValue(data, 'style.border.useBorder') &&\n !propertyResolver.getValue(data, 'style.border.useColorExpression'),\n },\n colorExpression: {\n component: 'string',\n type: 'string',\n ref: 'style.border.colorExpression',\n translation: 'Common.Expression',\n show: (data) =>\n propertyResolver.getValue(data, 'style.border.useBorder') &&\n propertyResolver.getValue(data, 'style.border.useColorExpression'),\n expression: 'optional',\n },\n },\n },\n },\n },\n icon: {\n type: 'items',\n grouped: true,\n translation: 'properties.icon',\n items: {\n iconSettings: {\n type: 'items',\n items: {\n useIcon: {\n ref: 'style.icon.useIcon',\n type: 'boolean',\n translation: 'properties.icon.use',\n component: 'switch',\n options: toggleOptions,\n },\n iconType: {\n ref: 'style.icon.iconType',\n component: 'expression-with-dropdown',\n translation: 'properties.icon',\n defaultValue: '',\n options: luiIcons,\n expressionType: 'StringExpression',\n show: (data) => propertyResolver.getValue(data, 'style.icon.useIcon'),\n },\n iconPosition: {\n ref: 'style.icon.position',\n component: 'dropdown',\n translation: 'Common.Position',\n options: [\n {\n translation: 'properties.dock.left',\n value: 'left',\n },\n {\n translation: 'properties.dock.right',\n value: 'right',\n },\n ],\n show: (data) => propertyResolver.getValue(data, 'style.icon.useIcon'),\n },\n },\n },\n },\n },\n },\n },\n },\n },\n importProperties,\n exportProperties: null,\n support: {\n export: !1,\n exportData: !1,\n snapshot: !1,\n viewData: !1,\n quickMobile: !0,\n },\n };\n}\n","const colorStruct = {\n aliceblue: { r: 240, g: 248, b: 255 },\n antiquewhite: { r: 250, g: 235, b: 215 },\n aqua: { r: 0, g: 255, b: 255 },\n aquamarine: { r: 127, g: 255, b: 212 },\n azure: { r: 240, g: 255, b: 255 },\n beige: { r: 245, g: 245, b: 220 },\n bisque: { r: 255, g: 228, b: 196 },\n black: { r: 0, g: 0, b: 0 },\n blanchedalmond: { r: 255, g: 235, b: 205 },\n blue: { r: 0, g: 0, b: 255 },\n blueviolet: { r: 138, g: 43, b: 226 },\n brown: { r: 165, g: 42, b: 42 },\n burlywood: { r: 222, g: 184, b: 135 },\n cadetblue: { r: 95, g: 158, b: 160 },\n chartreuse: { r: 127, g: 255, b: 0 },\n chocolate: { r: 210, g: 105, b: 30 },\n coral: { r: 255, g: 127, b: 80 },\n cornflowerblue: { r: 100, g: 149, b: 237 },\n cornsilk: { r: 255, g: 248, b: 220 },\n crimson: { r: 220, g: 20, b: 60 },\n cyan: { r: 0, g: 255, b: 255 },\n darkblue: { r: 0, g: 0, b: 139 },\n darkcyan: { r: 0, g: 139, b: 139 },\n darkgoldenrod: { r: 184, g: 134, b: 11 },\n darkgray: { r: 169, g: 169, b: 169 },\n darkgreen: { r: 0, g: 100, b: 0 },\n darkgrey: { r: 169, g: 169, b: 169 },\n darkkhaki: { r: 189, g: 183, b: 107 },\n darkmagenta: { r: 139, g: 0, b: 139 },\n darkolivegreen: { r: 85, g: 107, b: 47 },\n darkorange: { r: 255, g: 140, b: 0 },\n darkorchid: { r: 153, g: 50, b: 204 },\n darkred: { r: 139, g: 0, b: 0 },\n darksalmon: { r: 233, g: 150, b: 122 },\n darkseagreen: { r: 143, g: 188, b: 143 },\n darkslateblue: { r: 72, g: 61, b: 139 },\n darkslategray: { r: 47, g: 79, b: 79 },\n darkslategrey: { r: 47, g: 79, b: 79 },\n darkturquoise: { r: 0, g: 206, b: 209 },\n darkviolet: { r: 148, g: 0, b: 211 },\n deeppink: { r: 255, g: 20, b: 147 },\n deepskyblue: { r: 0, g: 191, b: 255 },\n dimgray: { r: 105, g: 105, b: 105 },\n dimgrey: { r: 105, g: 105, b: 105 },\n dodgerblue: { r: 30, g: 144, b: 255 },\n firebrick: { r: 178, g: 34, b: 34 },\n floralwhite: { r: 255, g: 250, b: 240 },\n forestgreen: { r: 34, g: 139, b: 34 },\n fuchsia: { r: 255, g: 0, b: 255 },\n gainsboro: { r: 220, g: 220, b: 220 },\n ghostwhite: { r: 248, g: 248, b: 255 },\n gold: { r: 255, g: 215, b: 0 },\n goldenrod: { r: 218, g: 165, b: 32 },\n gray: { r: 128, g: 128, b: 128 },\n green: { r: 0, g: 128, b: 0 },\n greenyellow: { r: 173, g: 255, b: 47 },\n grey: { r: 128, g: 128, b: 128 },\n honeydew: { r: 240, g: 255, b: 240 },\n hotpink: { r: 255, g: 105, b: 180 },\n indianred: { r: 205, g: 92, b: 92 },\n indigo: { r: 75, g: 0, b: 130 },\n ivory: { r: 255, g: 255, b: 240 },\n khaki: { r: 240, g: 230, b: 140 },\n lavender: { r: 230, g: 230, b: 250 },\n lavenderblush: { r: 255, g: 240, b: 245 },\n lawngreen: { r: 124, g: 252, b: 0 },\n lemonchiffon: { r: 255, g: 250, b: 205 },\n lightblue: { r: 173, g: 216, b: 230 },\n lightcoral: { r: 240, g: 128, b: 128 },\n lightcyan: { r: 224, g: 255, b: 255 },\n lightgoldenrodyellow: { r: 250, g: 250, b: 210 },\n lightgray: { r: 211, g: 211, b: 211 },\n lightgreen: { r: 144, g: 238, b: 144 },\n lightgrey: { r: 211, g: 211, b: 211 },\n lightpink: { r: 255, g: 182, b: 193 },\n lightsalmon: { r: 255, g: 160, b: 122 },\n lightseagreen: { r: 32, g: 178, b: 170 },\n lightskyblue: { r: 135, g: 206, b: 250 },\n lightslategray: { r: 119, g: 136, b: 153 },\n lightslategrey: { r: 119, g: 136, b: 153 },\n lightsteelblue: { r: 176, g: 196, b: 222 },\n lightyellow: { r: 255, g: 255, b: 224 },\n lime: { r: 0, g: 255, b: 0 },\n limegreen: { r: 50, g: 205, b: 50 },\n linen: { r: 250, g: 240, b: 230 },\n magenta: { r: 255, g: 0, b: 255 },\n maroon: { r: 128, g: 0, b: 0 },\n mediumaquamarine: { r: 102, g: 205, b: 170 },\n mediumblue: { r: 0, g: 0, b: 205 },\n mediumorchid: { r: 186, g: 85, b: 211 },\n mediumpurple: { r: 147, g: 112, b: 219 },\n mediumseagreen: { r: 60, g: 179, b: 113 },\n mediumslateblue: { r: 123, g: 104, b: 238 },\n mediumspringgreen: { r: 0, g: 250, b: 154 },\n mediumturquoise: { r: 72, g: 209, b: 204 },\n mediumvioletred: { r: 199, g: 21, b: 133 },\n midnightblue: { r: 25, g: 25, b: 112 },\n mintcream: { r: 245, g: 255, b: 250 },\n mistyrose: { r: 255, g: 228, b: 225 },\n moccasin: { r: 255, g: 228, b: 181 },\n navajowhite: { r: 255, g: 222, b: 173 },\n navy: { r: 0, g: 0, b: 128 },\n oldlace: { r: 253, g: 245, b: 230 },\n olive: { r: 128, g: 128, b: 0 },\n olivedrab: { r: 107, g: 142, b: 35 },\n orange: { r: 255, g: 165, b: 0 },\n orangered: { r: 255, g: 69, b: 0 },\n orchid: { r: 218, g: 112, b: 214 },\n palegoldenrod: { r: 238, g: 232, b: 170 },\n palegreen: { r: 152, g: 251, b: 152 },\n paleturquoise: { r: 175, g: 238, b: 238 },\n palevioletred: { r: 219, g: 112, b: 147 },\n papayawhip: { r: 255, g: 239, b: 213 },\n peachpuff: { r: 255, g: 218, b: 185 },\n peru: { r: 205, g: 133, b: 63 },\n pink: { r: 255, g: 192, b: 203 },\n plum: { r: 221, g: 160, b: 221 },\n powderblue: { r: 176, g: 224, b: 230 },\n purple: { r: 128, g: 0, b: 128 },\n rebeccapurple: { r: 102, g: 51, b: 153 },\n red: { r: 255, g: 0, b: 0 },\n rosybrown: { r: 188, g: 143, b: 143 },\n royalblue: { r: 65, g: 105, b: 225 },\n saddlebrown: { r: 139, g: 69, b: 19 },\n salmon: { r: 250, g: 128, b: 114 },\n sandybrown: { r: 244, g: 164, b: 96 },\n seagreen: { r: 46, g: 139, b: 87 },\n seashell: { r: 255, g: 245, b: 238 },\n sienna: { r: 160, g: 82, b: 45 },\n silver: { r: 192, g: 192, b: 192 },\n skyblue: { r: 135, g: 206, b: 235 },\n slateblue: { r: 106, g: 90, b: 205 },\n slategray: { r: 112, g: 128, b: 144 },\n slategrey: { r: 112, g: 128, b: 144 },\n snow: { r: 255, g: 250, b: 250 },\n springgreen: { r: 0, g: 255, b: 127 },\n steelblue: { r: 70, g: 130, b: 180 },\n tan: { r: 210, g: 180, b: 140 },\n teal: { r: 0, g: 128, b: 128 },\n thistle: { r: 216, g: 191, b: 216 },\n tomato: { r: 255, g: 99, b: 71 },\n transparent: { r: 255, g: 255, b: 255, a: 0 },\n turquoise: { r: 64, g: 224, b: 208 },\n violet: { r: 238, g: 130, b: 238 },\n wheat: { r: 245, g: 222, b: 179 },\n white: { r: 255, g: 255, b: 255 },\n whitesmoke: { r: 245, g: 245, b: 245 },\n yellow: { r: 255, g: 255, b: 0 },\n yellowgreen: { r: 154, g: 205, b: 50 },\n};\n\nexport default colorStruct;\n","/* eslint-disable no-cond-assign */\nimport CSSColors from './css-colors';\n\nconst colorUtils = {\n resolveExpression: input => {\n // rgb\n let matches = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i.exec(input);\n if (matches) {\n return `rgb(${matches[1]},${matches[2]},${matches[3]})`;\n }\n // argb\n matches = /^argb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i.exec(input);\n if (matches) {\n const a = Math.round((matches[1] / 255) * 100) / 100;\n return `rgba(${matches[2]},${matches[3]},${matches[4]},${a})`;\n }\n // hex\n matches = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i.exec(input);\n if (matches) {\n return input;\n }\n // css color\n const color = input && CSSColors[input.toLowerCase()];\n if (color) {\n const a = color.a !== undefined ? color.a : 1;\n return `rgba(${color.r},${color.g},${color.b},${a})`;\n }\n // invalid\n return 'none';\n },\n getFadedColor(color) {\n const percent = 0.15;\n let f; let R; let B; let G;\n if (color.length > 7) {\n f = color.split(',');\n const rgba = f[0].indexOf('a') !== -1;\n R = rgba ? parseInt(f[0].slice(5), 10) : parseInt(f[0].slice(4), 10);\n G = parseInt(f[1], 10);\n B = parseInt(f[2], 10);\n return `${(rgba ? 'rgba(' : 'rgb(') + (Math.round((0 - R) * percent) + R)},${Math.round((0 - G) * percent) + G},${Math.round((0 - B) * percent) + B}${rgba ? `,${f[3]}` : ')'}`;\n }\n f = parseInt(color.slice(1), 16);\n R = f >> 16;\n G = (f >> 8) & 0x00FF;\n B = f & 0x0000FF;\n return `#${(0x1000000 + (Math.round((0 - R) * percent) + R) * 0x10000 + (Math.round((0 - G) * percent) + G) * 0x100 + (Math.round((0 - B) * percent) + B)).toString(16).slice(1)}`;\n }\n};\n\nexport default colorUtils;\n","const getImageUrl = (imgUrl) => {\n imgUrl.replace(/^\\.\\.\\//i, '/');\n imgUrl = imgUrl.replace(/\"/g, '\\\\\"');\n imgUrl = imgUrl.replace(/'/g, \"\\\\'\");\n const a = document.createElement('a');\n a.href = '../';\n const rootPath = a.href;\n imgUrl = rootPath + (imgUrl[0] === '/' ? imgUrl.substr(1) : imgUrl);\n return imgUrl;\n};\n\nexport default {\n getImageUrl,\n};\n","import colorUtils from './color-utils';\nimport luiIcons from './lui-icons';\nimport urlUtils from './url-utils';\n\nconst backgroundSize = {\n auto: 'auto auto',\n alwaysFit: 'contain',\n fitWidth: '100% auto',\n fitHeight: 'auto 100%',\n fill: '100% 100%',\n alwaysFill: 'cover',\n};\n\nconst backgroundPosition = {\n topLeft: '0% 0%', // top left\n centerLeft: '50% 0%', // center left\n bottomLeft: '100% 0%', // bottom left\n topCenter: '0% 50%', // top center\n centerCenter: '50% 50%', // center center\n bottomCenter: '100% 50%', // bottom center\n topRight: '0% 100%', // top right\n centerRight: '50% 100%', // center right\n bottomRight: '100% 100%', // bottom right\n};\n\nconst formatProperty = (path, setting) => `${path}: ${setting};`;\n\nconst getColor = ({ useColorExpression, colorExpression, color }, defaultColor, theme) => {\n let resolvedColor;\n if (useColorExpression) {\n resolvedColor = colorUtils.resolveExpression(colorExpression);\n } else if (typeof color === 'string') {\n resolvedColor = color;\n } else if (color) {\n resolvedColor = theme.getColorPickerColor(color);\n }\n return !resolvedColor || resolvedColor === 'none' ? defaultColor : resolvedColor;\n};\n\nexport default {\n getStyles({ style, disabled, theme, element }) {\n let styles = 'width: 100%;height: 100%;transition: transform .1s ease-in-out;position: absolute;';\n const { font, background, border } = style;\n const primaryColor = theme.getDataColorSpecials().primary;\n // enable\n styles += disabled ? formatProperty('opacity', 0.4) : formatProperty('cursor', 'pointer');\n // font\n styles += formatProperty('color', getColor(font, '#ffffff', theme));\n font.style.bold && (styles += formatProperty('font-weight', 'bold'));\n font.style.italic && (styles += formatProperty('font-style', 'italic'));\n // background\n const backgroundColor = getColor(background, primaryColor, theme);\n styles += formatProperty('background-color', backgroundColor);\n if (background.useImage && background.url.qStaticContentUrl) {\n let bgUrl = background.url.qStaticContentUrl.qUrl;\n if (bgUrl) {\n bgUrl = urlUtils.getImageUrl(bgUrl);\n styles += formatProperty('background-image', `url('${bgUrl}')`);\n styles += formatProperty('background-size', backgroundSize[background.size]);\n styles += formatProperty('background-position', backgroundPosition[background.position]);\n styles += formatProperty('background-repeat', 'no-repeat');\n }\n }\n // border\n if (border.useBorder) {\n const lengthShortSide = Math.min(element.offsetWidth, element.offsetHeight);\n const borderColor = getColor(border, colorUtils.getFadedColor(backgroundColor), theme);\n const borderSize = (border.width * lengthShortSide) / 2;\n styles += formatProperty('border', `${borderSize}px solid ${borderColor}`);\n styles += formatProperty('border-radius', `${(border.radius * lengthShortSide) / 2}px`);\n } else {\n styles += 'border: none;';\n }\n\n return styles;\n },\n createLabelAndIcon({ button, theme, style, isSense }) {\n const { icon, font, label } = style;\n // text element wrapping label and icon\n const text = document.createElement('text');\n text.style.whiteSpace = 'nowrap';\n text.style.fontFamily = theme.getStyle('', '', 'fontFamily');\n // label\n const textSpan = document.createElement('span');\n textSpan.textContent = label;\n textSpan.style.whiteSpace = 'nowrap';\n textSpan.style.textOverflow = 'ellipsis';\n textSpan.style.overflow = 'visible';\n font.style.underline && (textSpan.style.textDecoration = 'underline');\n text.appendChild(textSpan);\n // icon\n const hasIcon = isSense && icon.useIcon && icon.iconType !== '';\n if (hasIcon) {\n const iconSpan = document.createElement('span');\n const iconType = luiIcons.find((iconObj) => iconObj.label === icon.iconType || iconObj.value === icon.iconType);\n iconSpan.style.textDecoration = 'none';\n iconSpan.style.fontSize = 'inherit';\n iconSpan.setAttribute('class', `lui-icon lui-icon--${iconType ? iconType.value : ''}`);\n icon.position === 'left' ? text.insertBefore(iconSpan, textSpan) : text.appendChild(iconSpan);\n }\n button.innerHTML = '';\n button.appendChild(text);\n\n // Calculations on font size.\n // 1. Setting font size to height of button container\n text.style.fontSize = `${button.clientHeight}px`;\n // 2. Adjust the font size to the height ratio between button container and text box\n let newFontsize = (button.clientHeight / text.offsetHeight) * button.clientHeight;\n text.style.fontSize = `${newFontsize}px`;\n // 3. Adjust the font size to the width ratio between button container and text box\n if (text.offsetWidth > button.clientWidth) {\n newFontsize *= button.clientWidth / text.offsetWidth;\n }\n // 4. Setting final font size by scaling with the font size from the layout + other font styling\n if (font.style.italic) {\n if (hasIcon) {\n text.style.fontSize = `${Math.max(newFontsize * font.size * 0.84, 8)}px`;\n text.children[0].style.marginRight = `${text.offsetWidth * 0.04}px`;\n text.children[1].style.marginRight = `${text.offsetWidth * 0.04}px`;\n } else {\n text.style.fontSize = `${Math.max(newFontsize * font.size * 0.9, 8)}px`;\n text.children[0].style.marginRight = `${text.offsetWidth * 0.02}px`;\n }\n } else if (hasIcon) {\n text.style.fontSize = `${Math.max(newFontsize * font.size * 0.88, 8)}px`;\n text.children[0].style.marginRight = `${text.offsetWidth * 0.04}px`;\n } else {\n text.style.fontSize = `${Math.max(newFontsize * font.size * 0.92, 8)}px`;\n }\n // hide overflow when there can be overflow\n if (text.style.fontSize === '8px') {\n text.children.forEach((child) => {\n child.style.overflow = 'hidden';\n });\n }\n text.style.margin = '0 3%';\n text.style.display = 'flex';\n text.style.alignItems = 'center';\n text.style.justifyContent = font.align === 'left' ? 'flex-start' : font.align === 'right' ? 'flex-end' : 'center';\n },\n};\n","import allActions from '../utils/actions';\nimport navigationActions from '../utils/navigation-actions';\nimport styleFormatter from '../utils/style-formatter';\n\nexport const runActions = async (actionList) => {\n for (let i = 0; i < actionList.length; i++) {\n // eslint-disable-next-line no-await-in-loop\n await actionList[i]();\n }\n};\n\nexport default function renderButton({ layout, theme, app, constraints, senseNavigation, element }) {\n const isSense = !!senseNavigation;\n const button = element.firstElementChild;\n const { style, qStateName } = layout;\n const disabled = layout.useEnabledCondition && layout.enabledCondition === 0;\n const isClickable = !disabled && !constraints.active;\n const formattedStyles = styleFormatter.getStyles({ style, disabled, theme, element });\n button.setAttribute('style', formattedStyles);\n button.setAttribute('tabindex', '-1');\n styleFormatter.createLabelAndIcon({ button, theme, style, isSense });\n\n button.onclick = async () => {\n if (isClickable) {\n const actionCallList = [];\n const { actions } = layout;\n actions.forEach((action) => {\n const actionObj = allActions.find((act) => act.value === action.actionType);\n actionObj && actionCallList.push(actionObj.getActionCall({ app, qStateName, ...action }));\n });\n button.setAttribute('disabled', true);\n await runActions(actionCallList);\n if (senseNavigation && !senseNavigation.getCurrentStoryId()) {\n const { navigation } = layout;\n const navigationObject = navigation && navigationActions.find((nav) => nav.value === navigation.action);\n if (senseNavigation && navigationObject && typeof navigationObject.navigationCall === 'function') {\n await navigationObject.navigationCall({ app, senseNavigation, ...navigation });\n }\n }\n button.removeAttribute('disabled');\n }\n };\n\n const scale = () => {\n if (isClickable) {\n const { offsetWidth, offsetHeight } = button;\n button.style.transform =\n offsetHeight > offsetWidth\n ? `scale(${0.98}, ${1 - (offsetWidth / offsetHeight) * 0.02})`\n : `scale(${1 - (offsetHeight / offsetWidth) * 0.02}, ${0.98})`;\n }\n };\n\n const resetScale = () => {\n const { transform } = button.style;\n if (isClickable && transform !== '' && transform !== 'scale(1)') {\n button.style.transform = 'scale(1)';\n }\n };\n\n button.onmousedown = (event) => {\n if (event.button === 0) {\n scale();\n }\n };\n button.onmouseup = resetScale;\n button.onmouseleave = resetScale;\n button.ontouchstart = scale;\n button.ontouchend = resetScale;\n button.ontouchcancel = resetScale;\n\n return () => {\n button.onclick = undefined;\n button.onmousedown = undefined;\n button.onmouseup = undefined;\n button.onmouseleave = undefined;\n button.ontouchstart = undefined;\n button.ontouchend = undefined;\n button.ontouchcancel = undefined;\n };\n}\n","import {\n useElement,\n useStaleLayout,\n useEffect,\n useMemo,\n useApp,\n useConstraints,\n useTheme,\n useImperativeHandle,\n} from '@nebula.js/stardust';\n\nimport properties from './object-properties';\nimport data from './data';\nimport ext from './ext';\n\nimport renderButton from './components/action-button';\n\nexport default function supernova(env) {\n const {\n sense,\n translator,\n flags: { isEnabled },\n } = env;\n const senseNavigation = sense && sense.navigation;\n const automationsEnabled = isEnabled('ACTION_BUTTON_AUTOMATIONS');\n properties.style.label = sense ? translator.get('Object.ActionButton') : 'Button';\n return {\n qae: {\n properties,\n data,\n },\n component() {\n const element = useElement();\n const theme = useTheme();\n\n useMemo(() => {\n const button = document.createElement('button');\n button.appendChild(document.createElement('text'));\n element.appendChild(button);\n }, []);\n\n const layout = useStaleLayout();\n const app = useApp();\n const constraints = useConstraints();\n\n const cleanup = renderButton({ element, layout, constraints, theme, app, senseNavigation, automationsEnabled });\n\n useEffect(\n () => () => {\n cleanup();\n },\n [element]\n );\n\n useImperativeHandle(\n () => ({\n focus() {\n element.firstElementChild.onclick();\n },\n }),\n [element]\n );\n },\n ext: ext({ translator, automationsEnabled }),\n };\n}\n"],"names":["properties","showTitles","title","subtitle","footnote","useEnabledCondition","enabledCondition","navigation","action","style","label","font","size","useColorExpression","color","index","colorExpression","bold","italic","underline","align","background","useImage","url","qStaticContentUrlDef","qUrl","position","border","useBorder","radius","width","icon","useIcon","iconType","actions","targets","getValueList","app","values","isDate","valuesArray","split","dateExpression","forEach","date","evaluate","slice","convertedDates","map","value","Number","isNaN","qText","qIsNumeric","qNumber","translation","group","getActionCall","bookmark","getBookmarkList","bookMarks","findBm","find","bm","qData","applyBookmark","qInfo","qId","requiredInput","back","forward","softLock","clearAll","qStateName","field","getField","fieldObj","clearAllButThis","clear","selectAll","getFieldDescription","fieldInfo","qTags","includes","valueList","selectValues","select","selectAlternative","selectExcluded","selectPossible","toggleSelect","lockAll","lock","unlockAll","unlock","variable","getVariableByName","variableObj","setStringValue","partial","doReload","doSave","automation","automationPostData","undefined","encodeURIComponent","fetch","then","response","json","itemInfo","resourceId","autoInfo","executePath","guid","execution_token","hasinputs","blocks","item","i","length","displayName","form","toLowerCase","inputBlock","newDate","Date","bmkProp","qProp","id","getTime","qType","qMetaDef","toISOString","description","_createdBy","_createdFor","_createdOn","_id","createBookmark","getLayout","layout","bmk","checkShowAction","data","act","actionType","indexOf","evaluateCondition","condition","condVal","inIframe","window","self","top","error","getOrderedVisibleSheet","getSheetList","sheets","visibleSheets","filter","sheet","Util","showCondition","sort","current","next","rank","navigationActions","navigationCall","senseNavigation","nextSheet","prevSheet","goToSheet","story","goToStory","websiteUrl","sameWindow","match","target","open","checkShowNavigation","nav","getValue","dataContainer","reference","defaultValue","steps","convertNavigation","oldType","importProperties","exportedFmt","initialProperties","newPropertyTree","qChildren","newProperties","props","fullWidth","qLayoutExclude","disabled","visualization","Object","keys","key","buttonLabel","buttonShowIcon","buttonIconLui","buttonTextAlign","actionItems","actionItem","newAction","selectedBookmark","selectedField","cId","push","convertAction","navigationAction","sheetId","selectedSheet","selectedStory","qProperty","colorOptions","toggleOptions","ext","translator","automationsEnabled","definition","type","component","items","grouped","ref","itemTitleRef","actionLabel","fallbackTitle","get","allowAdd","allowRemove","allowMove","addTranslation","expression","options","dropdownOnly","hyperCubeHandler","bms","show","getFieldList","fields","qName","expressionType","getVariableList","variables","v","qIsReserved","showSystemVariables","automations","blend","name","qMeta","getStoryList","stories","enableCondition","useCondition","settings","uses","general","details","sizeAndColor","fontSize","min","max","step","useFontColorExpression","colorPicker","dualOutput","propertyResolver","stylingAndAlign","fontStyling","horizontal","multipleSelect","labelPlacement","textAlign","backgroundColor","backgroundImage","useBackgroundImage","backgroundUrl","layoutRef","schemaIgnore","tooltip","remove","backgroundSize","backgroundPosition","currentSize","borderSettings","borderRadius","borderWidth","colorDropdown","iconSettings","luiIcons","iconPosition","exportProperties","support","export","exportData","snapshot","viewData","quickMobile","colorStruct","aliceblue","r","g","b","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","transparent","a","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","colorUtils","input","matches","exec","Math","round","CSSColors","f","R","B","G","percent","rgba","parseInt","toString","imgUrl","replace","document","createElement","href","substr","auto","alwaysFit","fitWidth","fitHeight","fill","alwaysFill","topLeft","centerLeft","bottomLeft","topCenter","centerCenter","bottomCenter","topRight","centerRight","bottomRight","formatProperty","path","setting","getColor","defaultColor","theme","resolvedColor","getColorPickerColor","element","styles","primaryColor","getDataColorSpecials","primary","qStaticContentUrl","bgUrl","urlUtils","lengthShortSide","offsetWidth","offsetHeight","borderColor","borderSize","button","isSense","text","whiteSpace","fontFamily","getStyle","textSpan","textContent","textOverflow","overflow","textDecoration","appendChild","hasIcon","iconSpan","iconObj","setAttribute","insertBefore","innerHTML","clientHeight","newFontsize","clientWidth","children","marginRight","child","margin","display","alignItems","justifyContent","runActions","actionList","env","sense","isEnabled","flags","qae","useElement","useTheme","useMemo","useStaleLayout","useApp","constraints","useConstraints","cleanup","firstElementChild","isClickable","active","formattedStyles","styleFormatter","onclick","actionCallList","actionObj","allActions","getCurrentStoryId","navigationObject","removeAttribute","scale","transform","resetScale","onmousedown","event","onmouseup","onmouseleave","ontouchstart","ontouchend","ontouchcancel","renderButton","useEffect","useImperativeHandle","focus"],"mappings":"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BC,WAAYmB,EAAMnB,sBAGjB,iBACA,iBACA,YACA,eACA,WACHkB,EAAcQ,GAAOZ,EAAY/L,WAAW2M,OAOpDV,EAAgB2B,UAAYzB,EACrBF,KChGM,CACb,CACEhJ,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,oBACPlB,KAAM,oBACNrB,MAAO,qBAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,iBACPlB,KAAM,iBACNrB,MAAO,kBAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,eACPlB,KAAM,eACNrB,MAAO,gBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,gBACPlB,KAAM,gBACNrB,MAAO,iBAET,CACEuC,MAAO,iBACPlB,KAAM,iBACNrB,MAAO,kBAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,mBACPlB,KAAM,mBACNrB,MAAO,oBAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,MACPlB,KAAM,MACNrB,MAAO,OAET,CACEuC,MAAO,iBACPlB,KAAM,iBACNrB,MAAO,kBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,gBACPlB,KAAM,gBACNrB,MAAO,iBAET,CACEuC,MAAO,cACPlB,KAAM,cACNrB,MAAO,eAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,cACPlB,KAAM,cACNrB,MAAO,eAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,eACPlB,KAAM,eACNrB,MAAO,gBAET,CACEuC,MAAO,oBACPlB,KAAM,oBACNrB,MAAO,qBAET,CACEuC,MAAO,sBACPlB,KAAM,sBACNrB,MAAO,uBAET,CACEuC,MAAO,qBACPlB,KAAM,qBACNrB,MAAO,sBAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,qBACPlB,KAAM,qBACNrB,MAAO,sBAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,WACPlB,KAAM,WACNrB,MAAO,YAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,eACPlB,KAAM,eACNrB,MAAO,gBAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,iBACPlB,KAAM,iBACNrB,MAAO,kBAET,CACEuC,MAAO,OACPlB,KAAM,OACNrB,MAAO,QAET,CACEuC,MAAO,UACPlB,KAAM,UACNrB,MAAO,WAET,CACEuC,MAAO,QACPlB,KAAM,QACNrB,MAAO,SAET,CACEuC,MAAO,SACPlB,KAAM,SACNrB,MAAO,UAET,CACEuC,MAAO,mBACPlB,KAAM,mBACNrB,MAAO,oBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,oBACPlB,KAAM,oBACNrB,MAAO,qBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,qBACPlB,KAAM,qBACNrB,MAAO,sBAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,qBACPlB,KAAM,qBACNrB,MAAO,sBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,kBACPlB,KAAM,kBACNrB,MAAO,mBAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,uBACPlB,KAAM,uBACNrB,MAAO,wBAET,CACEuC,MAAO,aACPlB,KAAM,aACNrB,MAAO,cAET,CACEuC,MAAO,YACPlB,KAAM,YACNrB,MAAO,aAET,CACEuC,MAAO,cACPlB,KAAM,cACN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"}