{"version":3,"file":"startup.es.js","sources":["../Modules/NavigationPanel/NavigationPanelTabs.tsx","../Modules/NavigationPanel/sidebarDataConverter.ts","../Modules/NavigationPanel/quickSearch.ts","../Modules/NavigationPanel/secondaryMenu.ts","../Modules/NavigationPanel/NavigationPanel.ts","../Modules/aras/startup/headerTabs.tsx","../Modules/aras/startup/getResourceManager.ts","../Modules/aras/startup/notCertifiedBrowser.ts","../Modules/aras/startup/validateBrowserCertified.ts","../Modules/aras/startup/disabledCookies.ts","../Modules/aras/startup/selectTimeZone.ts","../Modules/aras/startup/getTimeZoneName.ts","../Modules/aras/startup/login.ts","../Modules/aras/startup/mainPageEventHandlers.ts","../Modules/mainWindowCuiLayout/HeaderTabsContainer.ts","../Modules/mainWindowCuiLayout/MainWindowCuiActions.ts","../Modules/mainWindowCuiLayout/MainWindowCuiLayout.ts","../Modules/components/nav/navEditor.tsx","../Modules/mainWindowCuiLayout/TocEditor/navDataConverter.ts","../Modules/mainWindowCuiLayout/TocEditor/tocEditorCuiLayoutActions.ts","../Modules/mainWindowCuiLayout/TocEditor/formMetadata.ts","../Modules/mainWindowCuiLayout/TocEditor/formValues.ts","../Modules/mainWindowCuiLayout/TocEditor/formDataConverter.ts","../Modules/mainWindowCuiLayout/TocEditor/viewAs.ts","../Modules/mainWindowCuiLayout/TocEditor/saveTOC.ts","../Modules/mainWindowCuiLayout/TocEditor/TocEditorCuiLayout.ts","../Modules/aras/startup/userNotifications.tsx","../Modules/aras/startup/index.ts"],"sourcesContent":["// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport Tabs from '../components/tabs';\r\nimport { favorites } from 'store';\r\n\r\nconst maxItemHeight = 32;\r\n\r\nconst showUnpinDialog = async (item, tabs) => {\r\n\tconst confirmResult = await ArasModules.Dialog.confirm(\r\n\t\taras.getResource('', 'common.itemtype_not_available'),\r\n\t\t{\r\n\t\t\ttitle: aras.getResource('', 'common.access_denied'),\r\n\t\t\tokButtonText: aras.getResource('', 'common.unpin'),\r\n\t\t\tokButtonModifier: 'aras-button_secondary'\r\n\t\t}\r\n\t);\r\n\r\n\tif (confirmResult === 'ok') {\r\n\t\ttabs.removeTab(item.id);\r\n\t\ttry {\r\n\t\t\tawait favorites.delete(item.id);\r\n\t\t} catch (e) {\r\n\t\t\ttabs.addTab(item.id, item);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport default class NavigationPanelTabs extends Tabs {\r\n\ttooltipSettings = {\r\n\t\ttooltipPosition: 'right'\r\n\t};\r\n\r\n\tstate = {\r\n\t\tfavorites: new Map()\r\n\t};\r\n\r\n\t#resizeHandler = (): Promise => {\r\n\t\treturn this.render();\r\n\t};\r\n\r\n\tcreated() {\r\n\t\tthis.useTooltip = true;\r\n\t\tthis.vertical = true;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.classList.add('aras-navigation-panel-tabs', 'aras-tabs_b');\r\n\t\tthis.setAttribute('aria-orientation', 'vertical');\r\n\t\twindow.addEventListener('resize', this.#resizeHandler);\r\n\t}\r\n\r\n\tdisconnectedCallback() {\r\n\t\twindow.removeEventListener('resize', this.#resizeHandler);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst visibleItems = [];\r\n\t\tconst maxVisibleItems = Math.max(\r\n\t\t\tMath.floor(this.clientHeight / maxItemHeight),\r\n\t\t\t1\r\n\t\t);\r\n\r\n\t\tthis.state.favorites.forEach((item, id) => {\r\n\t\t\tif (visibleItems.length < maxVisibleItems) {\r\n\t\t\t\tvisibleItems.push(id);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.tabs = visibleItems;\r\n\t\tthis.data = this.state.favorites;\r\n\r\n\t\treturn super.render();\r\n\t}\r\n\r\n\tselectTab(id) {\r\n\t\tconst item = this.state.favorites.get(id);\r\n\t\tif (item.locked) {\r\n\t\t\treturn showUnpinDialog(item, this);\r\n\t\t}\r\n\r\n\t\treturn super.selectTab(id);\r\n\t}\r\n\r\n\tformatter(id, data) {\r\n\t\tconst item = data.get(id);\r\n\t\tif (!item.locked) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst lockIconNode = ;\r\n\t\tconst imageNode = this._getImage(item.image);\r\n\t\tconst content = [lockIconNode, imageNode];\r\n\r\n\t\treturn this._getTooltipTemplate(item, content);\r\n\t}\r\n}\r\n\r\nNavigationPanelTabs.define('aras-navigation-panel-tabs');\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport SvgManager from '../core/SvgManager';\r\nimport getResource from '../core/resources';\r\nimport { favorites as favoriteMethods } from 'store';\r\n\r\nconst icons = {\r\n\tnavContents: '../images/NavContentsOn.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nexport const contentTabId = 'content-tab';\r\n\r\nconst contentTab = {\r\n\tid: contentTabId,\r\n\timage: icons.navContents,\r\n\tcssClass: 'aras-navigation-panel-tabs__content-tab'\r\n};\r\n\r\nfunction getItemTypeIds(dataMap) {\r\n\tconst itemTypeIds = new Set();\r\n\tdataMap.forEach(({ formId, itemTypeId, startPage }) => {\r\n\t\tif (!itemTypeId || formId || startPage) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\titemTypeIds.add(itemTypeId);\r\n\t});\r\n\treturn itemTypeIds;\r\n}\r\n\r\nexport function updateLockedStatus(favorites, dataMap) {\r\n\tconst itemTypeIds = getItemTypeIds(dataMap);\r\n\tfavorites.forEach((item, id) => {\r\n\t\tif (!item.itemTypeId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst locked = !itemTypeIds.has(item.itemTypeId);\r\n\t\tif (locked !== item.locked) {\r\n\t\t\tfavorites.set(id, { ...item, locked });\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport function getSidebarData(favorites, dataMap) {\r\n\tconst sidebarData = new Map();\r\n\tsidebarData.set(contentTab.id, {\r\n\t\t...contentTab,\r\n\t\ttooltip_template: getResource('common.contents')\r\n\t});\r\n\r\n\tconst itemTypeIds = getItemTypeIds(dataMap);\r\n\tfavorites.forEach((item) => {\r\n\t\tconst additionalData = { ...item.additional_data };\r\n\t\tconst itemTypeId = additionalData.id;\r\n\t\tdelete additionalData.id;\r\n\t\tconst favoriteItem = {\r\n\t\t\t...item,\r\n\t\t\t...additionalData,\r\n\t\t\titemTypeId,\r\n\t\t\tlocked: !itemTypeIds.has(itemTypeId),\r\n\t\t\tparentTab: contentTabId,\r\n\t\t\ttooltip_template: additionalData.label\r\n\t\t};\r\n\t\tdelete favoriteItem.label;\r\n\t\tsidebarData.set(favoriteItem.id, favoriteItem);\r\n\t});\r\n\r\n\treturn sidebarData;\r\n}\r\n\r\nexport function getFavoriteItemTypes(favorites) {\r\n\tconst filtered = favoriteMethods.filterFavorites(favorites, 'ItemType');\r\n\treturn filtered.reduce(\r\n\t\t(acc, favorite) => acc.set(favorite.id, favorite),\r\n\t\tnew Map()\r\n\t);\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport ItemProperty from '../components/itemProperty';\r\nimport SvgManager from '../core/SvgManager';\r\nimport getResource from '../core/resources';\r\n\r\nconst icons = {\r\n\tquickSearch: '../images/QuickSearch.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nclass QuickSearch extends ItemProperty {\r\n\t#pressEnterTimeout = null;\r\n\t#selectedItemIndex = -1;\r\n\r\n\tinitialize() {\r\n\t\tsuper.initialize();\r\n\t\tthis.state.placeholder = getResource(\r\n\t\t\t'navigation_panel.secondary_menu.quick_search_placeholder'\r\n\t\t);\r\n\t\tthis.state.icon = icons.quickSearch;\r\n\t}\r\n\tfocus() {\r\n\t\tthis.state.refs.input?.focus();\r\n\t}\r\n\r\n\tclear() {\r\n\t\tthis.setState({\r\n\t\t\tvalue: '',\r\n\t\t\tlist: []\r\n\t\t});\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.classList.add('aras-quick-search');\r\n\t}\r\n\r\n\t_onInputFocusoutHandler(e) {\r\n\t\tconst value = this.state.value;\r\n\t\tconst predictedValue = this.state.predictedValue;\r\n\r\n\t\tthis.setState({\r\n\t\t\toldLabel: this.state.label,\r\n\t\t\tvalue: predictedValue || value\r\n\t\t});\r\n\r\n\t\tsuper._onInputFocusoutHandler(e);\r\n\t}\r\n\r\n\tgetSelectedItem() {\r\n\t\tif (!this.state.label) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst list = this.state.list;\r\n\t\tconst label = this.state.label.toUpperCase();\r\n\r\n\t\treturn (\r\n\t\t\tlist[this.#selectedItemIndex] ??\r\n\t\t\tlist.find((item) => item.label.toUpperCase() === label)\r\n\t\t);\r\n\t}\r\n\r\n\t_onItemClickHandler(e) {\r\n\t\tconst li = e.target.closest('li');\r\n\t\tthis.#selectedItemIndex = [].indexOf.call(li.parentElement.children, li);\r\n\r\n\t\tsuper._onItemClickHandler(e);\r\n\t}\r\n\r\n\t_onKeyDownHandler(e) {\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\tif (this.#pressEnterTimeout) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.#selectedItemIndex = this.state.focusedIndex;\r\n\t\t\tif (this.state.requestTimeoutID) {\r\n\t\t\t\tthis.#pressEnterTimeout = setTimeout(async () => {\r\n\t\t\t\t\tawait this.state.requestPromise;\r\n\r\n\t\t\t\t\tthis.#pressEnterTimeout = null;\r\n\t\t\t\t\tif (!this.state.list.length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsuper._onKeyDownHandler(e);\r\n\t\t\t\t}, this.state.typingDelay);\r\n\t\t\t} else {\r\n\t\t\t\tthis.state.refs.input.dispatchEvent(\r\n\t\t\t\t\tnew CustomEvent('change', { bubbles: true })\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsuper._onKeyDownHandler(e);\r\n\t}\r\n\r\n\t_getButtonTemplate() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t_getInputTemplate() {\r\n\t\tconst input = super._getInputTemplate();\r\n\t\tinput.className = 'aras-input aras-quick-search__input';\r\n\t\treturn input;\r\n\t}\r\n\r\n\t_getIconContainerTemplate() {\r\n\t\tconst icons = super._getIconContainerTemplate();\r\n\r\n\t\ticons.children = icons.children.map((icon) => {\r\n\t\t\tif (icon.className.includes('aras-spinner')) {\r\n\t\t\t\ticon.className += ' aras-quick-search__spinner';\r\n\t\t\t}\r\n\t\t\treturn icon;\r\n\t\t});\r\n\r\n\t\treturn icons;\r\n\t}\r\n}\r\n\r\nconst name = 'aras-quick-search';\r\nif (!customElements.get(name)) {\r\n\tcustomElements.define(name, QuickSearch);\r\n}\r\n\r\nexport default QuickSearch;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { wire } from 'hyperhtml';\r\nimport getResource from '../core/resources';\r\nimport SvgManager from '../core/SvgManager';\r\nimport './quickSearch';\r\n\r\nconst icons = {\r\n\tsearch: '../images/ExecuteSearch.svg',\r\n\tcreateItem: '../images/CreateItem.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nconst secondaryMenuClass =\r\n\t'aras-navigation-panel__secondary-menu aras-secondary-menu';\r\nconst secondaryMenuHiddenClass = 'aras-secondary-menu_hidden';\r\n\r\nconst getQuickSearch = (context, secondaryMenuData) => {\r\n\tconst { itemTypeName, isQuickSearchDisabled, singularLabel } =\r\n\t\tsecondaryMenuData;\r\n\tconst emptyMessage = getResource('common.does_not_exist', singularLabel);\r\n\r\n\tconst id = `:quicksearch:${itemTypeName}`;\r\n\treturn wire(context.state, id)`\r\n\t\t context._openItem(event)}\"\r\n\t\t\temptyMessage=\"${emptyMessage}\"\r\n\t\t\tonconnected=\"${(e) => e.target.clear()}\"\r\n\t\t/>\r\n\t`;\r\n};\r\n\r\nfunction getButtonsSection(context) {\r\n\tconst secondaryMenuData = context.state.secondaryMenuData;\r\n\tif (!secondaryMenuData) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst quickSearchNode = getQuickSearch(context, secondaryMenuData);\r\n\treturn wire(context.state, ':buttons')`\r\n\t\t
\r\n\t\t\t context._createNewItem()}\"\r\n\t\t\t>\r\n\t\t\t\t${SvgManager.createHyperHTMLNode(icons.createItem, {\r\n\t\t\t\t\tcssClass: 'aras-button__icon'\r\n\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t\t\t${aras.getResource(\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t'navigation_panel.secondary_menu.create_new',\r\n\t\t\t\t\t\tsecondaryMenuData.singularLabel\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t context._searchItemType(secondaryMenuData.itemTypeId)}\"\r\n\t\t\t>\r\n\t\t\t\t${SvgManager.createHyperHTMLNode(icons.search, {\r\n\t\t\t\t\tcssClass: 'aras-button__icon'\r\n\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t\t\t${aras.getResource(\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t'navigation_panel.secondary_menu.search',\r\n\t\t\t\t\t\tsecondaryMenuData.pluralLabel\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t${/*quickSearchNode*/\"\"}\r\n\t\t
\r\n\t`;\r\n}\r\n\r\nfunction keyboardHandler(e) {\r\n\tconst key = e.code;\r\n\tconst list = e.currentTarget;\r\n\r\n\tif (['ArrowUp', 'ArrowDown'].includes(key)) {\r\n\t\tconst currentNode =\r\n\t\t\tlist.querySelector('[tabindex=\"0\"]') || list.childNodes[0];\r\n\t\tconst nextElement =\r\n\t\t\tkey === 'ArrowUp' ? 'previousElementSibling' : 'nextElementSibling';\r\n\t\tconst nextNode = currentNode[nextElement]\r\n\t\t\t? currentNode[nextElement]\r\n\t\t\t: currentNode;\r\n\r\n\t\tif (currentNode !== nextNode) {\r\n\t\t\tcurrentNode.tabIndex = '-1';\r\n\t\t\tnextNode.tabIndex = '0';\r\n\t\t\tnextNode.focus();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getFavoriteCategory(context, categoryData, secondaryMenuData) {\r\n\treturn wire(context, categoryData.label)`\r\n\t\t${\r\n\t\t\tcategoryData.label\r\n\t\t}\r\n\t\t
    keyboardHandler(e)}\">\r\n\t\t\t${categoryData.items.map((favoriteItem, idx) => {\r\n\t\t\t\tconst label =\r\n\t\t\t\t\tfavoriteItem.label || aras.getResource('', 'common.no_label');\r\n\t\t\t\treturn wire(favoriteItem, ':favorite')`\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t${SvgManager.createHyperHTMLNode(categoryData.icon, {\r\n\t\t\t\t\t\t\t\tcssClass: 'aras-nav__row__icon',\r\n\t\t\t\t\t\t\t\toverlayIcons: categoryData.overlayIcons\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t${label}\r\n\t\t\t\t\t\t\t${getUnpinFavoriteButton(favoriteItem, categoryData, secondaryMenuData)}\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t`;\r\n\t\t\t})}\r\n\t\t
\r\n\t`;\r\n}\r\n\r\nfunction getUnpinFavoriteButton(favoriteItem, categoryData, secondaryMenuData) {\r\n\tif (\r\n\t\t!categoryData.unpinIcon ||\r\n\t\tfavoriteItem.ownedBy !== secondaryMenuData.loggedUserIdentity\r\n\t) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst tooltipString = aras.getResource(\r\n\t\t'',\r\n\t\t'navigation_panel.secondary_menu.unpin_favorite'\r\n\t);\r\n\treturn wire(favoriteItem, ':unpinIcon')`\r\n\t\t\r\n\t\t\t${SvgManager.createHyperHTMLNode(categoryData.unpinIcon)}\r\n\t\t
`;\r\n}\r\n\r\nfunction getFavoritesSection(context) {\r\n\tconst secondaryMenuData = context.state.secondaryMenuData;\r\n\tif (!secondaryMenuData || !secondaryMenuData.favoriteCategories.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn wire(context, ':favorites')`\r\n\t\t context._favoritesClick(e)}\"\r\n\t\t\tonkeypress=\"${(e) => {\r\n\t\t\t\tconst key = e.code;\r\n\t\t\t\tif (['Space', 'Enter', 'NumpadEnter'].includes(key)) {\r\n\t\t\t\t\tcontext._favoritesClick(e);\r\n\t\t\t\t}\r\n\t\t\t}}\"\r\n\t\t\toncontextmenu=\"${(e) => context._favoritesContextMenuHandler(e)}\"\r\n\t\t>\r\n\t\t\t${secondaryMenuData.favoriteCategories.map((categoryData) =>\r\n\t\t\t\tgetFavoriteCategory(context, categoryData, secondaryMenuData)\r\n\t\t\t)}\r\n\t\t\r\n\t`;\r\n}\r\n\r\nexport default function (context) {\r\n\tconst secondaryMenuData = context.state.secondaryMenuData;\r\n\tconst className = `${secondaryMenuClass} ${\r\n\t\tsecondaryMenuData ? '' : secondaryMenuHiddenClass\r\n\t}`;\r\n\treturn wire(context)`\r\n\t\t
\r\n\t\t\t${getButtonsSection(context)}\r\n\t\t\t${getFavoritesSection(context)}\r\n\t\t
\r\n\t`;\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport '../components/nav/nav';\r\nimport Sidebar from '../components/sidebar';\r\nimport ContextMenu from '../components/contextMenu';\r\nimport alertModule from '../components/alert';\r\nimport './NavigationPanelTabs';\r\nimport utils from '../core/utils';\r\nimport { contentTabId } from './sidebarDataConverter';\r\nimport secondaryMenu from './secondaryMenu';\r\nimport SvgManager from '../core/SvgManager';\r\nimport getResource from '../core/resources';\r\nimport { itemType as itemTypeMetadata } from 'metadata';\r\nimport { commands } from 'cui';\r\nimport { favorites as favoriteMethods } from 'store';\r\n\r\nconst icons = {\r\n\tback: '../images/BackFull.svg',\r\n\tclose: '../images/Close.svg',\r\n\tdefaultItemType: '../images/DefaultItemType.svg',\r\n\tsearch: '../images/ExecuteSearch.svg',\r\n\topen: '../images/OpenInTab.svg',\r\n\tpinned: '../images/PinnedOn.svg',\r\n\tsavedSearch: '../images/SavedSearchOverlay.svg',\r\n\tunpinned: '../images/PinnedOff.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nconst disabledRowHighlightingClass =\r\n\t'aras-navigation-panel_row-highlighting-disabled';\r\n\r\nfunction navFormatter(nav, item) {\r\n\tconst itemValue = item.value;\r\n\tif (itemValue.children) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst isDashboardItem = itemValue.dashboard;\r\n\tif (itemValue.itemTypeId || isDashboardItem) {\r\n\t\tconst leafTemplate = nav.templates.getDefaultTemplate(item);\r\n\t\tconst nodeClassList = isDashboardItem\r\n\t\t\t? 'aras-nav-leaf-ico'\r\n\t\t\t: 'aras-button aras-button_c aras-nav-leaf-ico';\r\n\t\tconst nodeIconUrl = isDashboardItem ? icons.open : icons.search;\r\n\r\n\t\tleafTemplate.push(\r\n\t\t\tInferno.createVNode(\r\n\t\t\t\tInferno.getFlagsForElementVnode('span'),\r\n\t\t\t\t'span',\r\n\t\t\t\tnodeClassList,\r\n\t\t\t\tSvgManager.createInfernoVNode(nodeIconUrl),\r\n\t\t\t\tutils.infernoFlags.unknownChildren\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\treturn leafTemplate;\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction getFavoriteCategories(itemTypeName, options) {\r\n\tconst favorites = options.favorites;\r\n\tconst favoritesFilterCriteria = (favoriteItem) => {\r\n\t\treturn (\r\n\t\t\tfavoriteItem.quickAccessFlag === '1' &&\r\n\t\t\tfavoriteItem.contextType === itemTypeName\r\n\t\t);\r\n\t};\r\n\tconst [favoriteSearches, favoriteItems] = ['Search', 'Item'].map((type) =>\r\n\t\tfavoriteMethods.filterFavorites(favorites, type, favoritesFilterCriteria)\r\n\t);\r\n\r\n\tconst favoriteCategories = [];\r\n\tif (favoriteSearches.length) {\r\n\t\tconst label = getResource(\r\n\t\t\t'navigation_panel.secondary_menu.favorite_searches'\r\n\t\t);\r\n\t\tfavoriteCategories.push({\r\n\t\t\ticon: options.icon,\r\n\t\t\toverlayIcons: [icons.savedSearch],\r\n\t\t\tunpinIcon: icons.close,\r\n\t\t\tlabel,\r\n\t\t\titems: favoriteSearches\r\n\t\t});\r\n\t}\r\n\tif (favoriteItems.length) {\r\n\t\tfavoriteCategories.push({\r\n\t\t\ticon: options.icon,\r\n\t\t\tlabel: options.pluralLabel,\r\n\t\t\titems: favoriteItems\r\n\t\t});\r\n\t}\r\n\treturn favoriteCategories;\r\n}\r\n\r\nasync function getItemTypeData(itemTypeId) {\r\n\tconst itemType = await itemTypeMetadata.getItemType(itemTypeId, 'id');\r\n\tconst itemTypeName = itemType.name;\r\n\tconst singularLabel = itemType.label || itemTypeName;\r\n\tconst propertiesWithKeyedName =\r\n\t\titemTypeMetadata.getKeyedNameConfiguration(itemType);\r\n\tconst newCommand = createCommand('OpenNewItem', itemType);\r\n\tconst canAdd = newCommand.canExecute();\r\n\tconst openForbidden = window.isFunctionDisabled(itemTypeName, 'Open');\r\n\tconst isQuickSearchDisabled =\r\n\t\topenForbidden || !propertiesWithKeyedName.length;\r\n\r\n\treturn {\r\n\t\tcanAdd,\r\n\t\tisQuickSearchDisabled,\r\n\t\titemType,\r\n\t\titemTypeName,\r\n\t\tsingularLabel\r\n\t};\r\n}\r\n\r\nfunction createCommand(commandName, itemType, options = {}) {\r\n\tconst itemTypeName = itemType?.name;\r\n\r\n\treturn commands.commandFactory(commandName, {\r\n\t\titemType,\r\n\t\titemTypeName,\r\n\t\tlocation: 'MainWindowView',\r\n\t\t...options\r\n\t});\r\n}\r\n\r\nexport default class NavigationPanel extends Sidebar {\r\n\tnav = document.createElement('aras-nav');\r\n\ttabs = document.createElement('aras-navigation-panel-tabs');\r\n\tstate = {\r\n\t\tsecondaryMenuItemTypeId: null,\r\n\t\tsecondaryMenuData: null,\r\n\t\tfavorites: {}\r\n\t};\r\n\r\n\ttogglePin(pinned) {\r\n\t\tsuper.togglePin(pinned);\r\n\t\tthis.render();\r\n\t}\r\n\r\n\ttoggleVisibility(visible) {\r\n\t\tsuper.toggleVisibility(visible);\r\n\t\tconst splitter = this.nextElementSibling;\r\n\t\tconst isVisible = this.isVisible;\r\n\t\tsplitter.classList.toggle('aras-hide', !isVisible);\r\n\t\tif (isVisible && this.isPinned) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.focus();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfocus() {\r\n\t\tif (!this.state.secondaryMenuItemTypeId) {\r\n\t\t\treturn super.focus();\r\n\t\t}\r\n\r\n\t\tconst quickSearch = this.querySelector(\r\n\t\t\t'.aras-secondary-menu__quick-search:not([disabled])'\r\n\t\t);\r\n\r\n\t\tif (quickSearch) {\r\n\t\t\tquickSearch.focus();\r\n\t\t} else {\r\n\t\t\tconst navHeader = this.querySelector('.aras-navigation-panel__header');\r\n\t\t\tnavHeader.focus();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.state.secondaryMenuData = this._getSecondaryMenuData();\r\n\t\tconst secondaryMenuData = this.state.secondaryMenuData;\r\n\t\tconst contentsTitle = secondaryMenuData\r\n\t\t\t? secondaryMenuData.pluralLabel\r\n\t\t\t: getResource('common.contents');\r\n\r\n\t\tconst pinIcon = this.isPinned ? icons.pinned : icons.unpinned;\r\n\t\tconst pinIconNode = SvgManager.createHyperHTMLNode(pinIcon, {\r\n\t\t\tcssClass: 'aras-button__icon'\r\n\t\t});\r\n\t\tconst backTitle = getResource(\r\n\t\t\t'navigation_panel.secondary_menu.back_to_contents'\r\n\t\t);\r\n\t\tthis.html`\r\n\t\t
\r\n\t\t\t this._hideSecondaryMenu()}\"\r\n\t\t\t\ttitle=\"${backTitle}\"\r\n\t\t\t>\r\n\t\t\t\t${SvgManager.createHyperHTMLNode(icons.back, {\r\n\t\t\t\t\tcssClass: 'aras-button__icon'\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t\t${SvgManager.createHyperHTMLNode(secondaryMenuData?.icon, {\r\n\t\t\t\tcssClass: 'aras-navigation-panel__header-icon'\r\n\t\t\t})}\r\n\t\t\t\r\n\t\t\t\t${contentsTitle}\r\n\t\t\t\r\n\t\t\t this.togglePin()}\"\r\n\t\t\t>\r\n\t\t\t\t${pinIconNode}\r\n\t\t\t\r\n\t\t
\r\n\t\t${this.nav}\r\n\t\t${secondaryMenu(this)}\r\n\t\t${this.tabs}`;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.classList.add('aras-navigation-panel', disabledRowHighlightingClass);\r\n\t\tthis.setAttribute('role', 'navigation');\r\n\t\tthis.popupMenu = new ContextMenu();\r\n\t\tthis._initContextMenuHandlers();\r\n\t\tthis._initContextMenuListeners();\r\n\t\tconst observer = new MutationObserver((mutations) => {\r\n\t\t\tconst navPanel = mutations[0].target;\r\n\t\t\tconst panelWidth = navPanel.style.width;\r\n\t\t\tnavPanel.nextElementSibling.style.left = panelWidth;\r\n\t\t});\r\n\r\n\t\tobserver.observe(this, {\r\n\t\t\tattributes: true,\r\n\t\t\tattributeFilter: ['style']\r\n\t\t});\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis._initTOC();\r\n\t\tthis._initTabs();\r\n\t}\r\n\r\n\tresetState() {\r\n\t\tthis.state.secondaryMenuData = null;\r\n\t\tthis.render();\r\n\t}\r\n\r\n\t_initContextMenuHandlers() {\r\n\t\tconst sidebarTabs = this.tabs;\r\n\t\tconst contextMenuMethods = {\r\n\t\t\tpinItemType: (id, tabData) => sidebarTabs.addTab(id, tabData),\r\n\t\t\tunpinItemType: (id) => {\r\n\t\t\t\tconst tabsData = sidebarTabs.data;\r\n\t\t\t\tconst removedTab = tabsData.get(id);\r\n\t\t\t\tsidebarTabs.removeTab(id);\r\n\t\t\t\treturn removedTab;\r\n\t\t\t},\r\n\t\t\tgetItemTypeByItemTypeId: (itemTypeId) => {\r\n\t\t\t\tlet tabId;\r\n\t\t\t\tconst tabsData = sidebarTabs.data;\r\n\t\t\t\ttabsData.forEach((data, id) => {\r\n\t\t\t\t\tif (data.itemTypeId === itemTypeId) {\r\n\t\t\t\t\t\ttabId = id;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn tabsData.get(tabId);\r\n\t\t\t},\r\n\t\t\topenSearch: (...args) => window.arasTabs.openSearch(...args)\r\n\t\t};\r\n\t\tconst dispatchContextMenuEvent = (location, event, options) => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst detail = {\r\n\t\t\t\tlocation,\r\n\t\t\t\tx: event.clientX,\r\n\t\t\t\ty: event.clientY,\r\n\t\t\t\t...options\r\n\t\t\t};\r\n\t\t\tconst cuiEvent = new CustomEvent('navigationPanelContextMenu', {\r\n\t\t\t\tdetail\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent(cuiEvent);\r\n\t\t};\r\n\t\tsidebarTabs.on('contextmenu', (itemKey, event) => {\r\n\t\t\tconst currentTarget = sidebarTabs.data.get(itemKey);\r\n\t\t\tconst itemTypeName = currentTarget.contextType;\r\n\t\t\tconst options = {\r\n\t\t\t\tcurrentTarget,\r\n\t\t\t\titemTypeName,\r\n\t\t\t\t...contextMenuMethods\r\n\t\t\t};\r\n\t\t\tdispatchContextMenuEvent('PopupMenuMainWindowTOC', event, options);\r\n\t\t});\r\n\t\tconst nav = this.nav;\r\n\t\tnav.on('contextmenu', (itemKey, event) => {\r\n\t\t\tnav.select(itemKey);\r\n\t\t\tconst currentTarget = nav.data.get(itemKey);\r\n\t\t\tconst itemTypeId = currentTarget.itemTypeId;\r\n\t\t\tconst options = {\r\n\t\t\t\tcurrentTarget,\r\n\t\t\t\titemTypeId,\r\n\t\t\t\t...contextMenuMethods\r\n\t\t\t};\r\n\t\t\tdispatchContextMenuEvent('PopupMenuMainWindowTOC', event, options);\r\n\t\t});\r\n\t\tthis._favoritesContextMenuHandler = (event) => {\r\n\t\t\tconst favoriteItemRow = event.target.closest('.aras-nav__child');\r\n\t\t\tif (!favoriteItemRow) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfavoriteItemRow.classList.add('aras-nav__child_selected');\r\n\t\t\tconst unselectHighlightedItem = () => {\r\n\t\t\t\tfavoriteItemRow.classList.remove('aras-nav__child_selected');\r\n\t\t\t\tthis.popupMenu.dom.removeEventListener(\r\n\t\t\t\t\t'contextMenuClose',\r\n\t\t\t\t\tunselectHighlightedItem\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t\tthis.popupMenu.dom.addEventListener(\r\n\t\t\t\t'contextMenuClose',\r\n\t\t\t\tunselectHighlightedItem\r\n\t\t\t);\r\n\r\n\t\t\tconst favoriteId = favoriteItemRow.dataset.id;\r\n\t\t\tconst currentTarget = this.state.favorites[favoriteId];\r\n\t\t\tconst itemTypeName = currentTarget.contextType;\r\n\t\t\tconst options = {\r\n\t\t\t\tcurrentTarget,\r\n\t\t\t\titemTypeName\r\n\t\t\t};\r\n\t\t\tdispatchContextMenuEvent('PopupMenuSecondaryMenu', event, options);\r\n\t\t};\r\n\t}\r\n\r\n\t_initContextMenuListeners() {\r\n\t\tconst contextMenuDom = this.popupMenu.dom;\r\n\t\tcontextMenuDom.addEventListener('contextMenuShow', () => {\r\n\t\t\tthis.classList.remove(disabledRowHighlightingClass);\r\n\t\t});\r\n\t\tcontextMenuDom.addEventListener('contextMenuClose', (e) => {\r\n\t\t\tthis.classList.add(disabledRowHighlightingClass);\r\n\t\t\tif (e.detail.type === 'keydown') {\r\n\t\t\t\tthis.focus();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.isPinned) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.closeIfNotAcitive(document.activeElement);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\tcontextMenuDom.addEventListener('click', () => {\r\n\t\t\tthis._hideIfNotPinned();\r\n\t\t});\r\n\t}\r\n\r\n\tcloseIfNotAcitive(element) {\r\n\t\tconst isElement = Boolean(element && this.contains(element));\r\n\t\tconst isContextMenu = Boolean(\r\n\t\t\telement && this.popupMenu.dom.contains(element)\r\n\t\t);\r\n\t\tif (!(isElement || isContextMenu)) {\r\n\t\t\tthis.toggleVisibility(false);\r\n\t\t}\r\n\t}\r\n\r\n\t_initTOC() {\r\n\t\tconst selectTab = (dataItem) => {\r\n\t\t\tconst tabs = this.tabs;\r\n\t\t\ttabs.data.forEach((tabItem, id) => {\r\n\t\t\t\tif (tabItem.itemTypeId === dataItem.itemTypeId) {\r\n\t\t\t\t\ttabs.selectTab(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\t\tthis.nav.classList.add('aras-nav-toc');\r\n\t\tthis.nav.formatter = navFormatter.bind(null, this.nav);\r\n\t\tconst handler = async (itemKey, event) => {\r\n\t\t\tif (\r\n\t\t\t\tevent.type === 'keydown' &&\r\n\t\t\t\t!['Enter', 'Space', 'NumpadEnter'].includes(event.code)\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst dataItem = this.nav.data.get(itemKey);\r\n\t\t\tconst isNewTabOpened =\r\n\t\t\t\tdataItem.dashboard ||\r\n\t\t\t\tevent.target.closest('.aras-button.aras-nav-leaf-ico');\r\n\t\t\tif (isNewTabOpened) {\r\n\t\t\t\tthis._hideIfNotPinned();\r\n\t\t\t} else if (dataItem.itemTypeId) {\r\n\t\t\t\tthis._showSecondaryMenu(dataItem.itemTypeId);\r\n\t\t\t\tselectTab(dataItem);\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.nav.on('click', handler);\r\n\t\tthis.nav.on('keydown', handler);\r\n\t}\r\n\r\n\t_initTabs() {\r\n\t\tthis.tabs.on('select', (id) => {\r\n\t\t\tif (id === contentTabId) {\r\n\t\t\t\tthis._hideSecondaryMenu();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst item = this.tabs.data.get(id);\r\n\t\t\tthis._showSecondaryMenu(item.itemTypeId);\r\n\t\t});\r\n\t\tthis.tabs.on('click', (id) => {\r\n\t\t\tif (id === contentTabId) {\r\n\t\t\t\tthis._hideSecondaryMenu();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_hideIfNotPinned() {\r\n\t\tif (!this.isPinned) {\r\n\t\t\tthis.toggleVisibility(false);\r\n\t\t\tdocument.documentElement.focus(); // for correct work of sidebar in IE and FF\r\n\t\t}\r\n\t}\r\n\r\n\t_getSecondaryMenuData() {\r\n\t\tconst itemTypeId = this.state.secondaryMenuItemTypeId;\r\n\t\tif (!itemTypeId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst items = [...this.nav.data.values()];\r\n\t\tconst item = items.find(\r\n\t\t\t(item) => item.itemTypeId === itemTypeId && !item.dashboard\r\n\t\t);\r\n\t\tif (!item) {\r\n\t\t\tthis._hideSecondaryMenu();\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst { icon = icons.defaultItemType, label: pluralLabel } = item;\r\n\t\tconst itemTypeName = itemTypeMetadata.getItemTypeName(itemTypeId);\r\n\t\tconst favoriteCategories = getFavoriteCategories(itemTypeName, {\r\n\t\t\ticon,\r\n\t\t\tpluralLabel,\r\n\t\t\tfavorites: this.state.favorites\r\n\t\t});\r\n\r\n\t\tif (this.state.secondaryMenuData?.itemTypeId === itemTypeId) {\r\n\t\t\treturn {\r\n\t\t\t\t...this.state.secondaryMenuData,\r\n\t\t\t\tfavoriteCategories\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst loggedUserIdentity = aras.getIsAliasIdentityIDForLoggedUser();\r\n\t\tconst secondaryMenuData = {\r\n\t\t\tcanAdd: false,\r\n\t\t\tfavoriteCategories,\r\n\t\t\ticon,\r\n\t\t\titemTypeId,\r\n\t\t\titemTypeName,\r\n\t\t\tisQuickSearchDisabled: true,\r\n\t\t\tloggedUserIdentity,\r\n\t\t\tpluralLabel,\r\n\t\t\tsingularLabel: itemTypeName\r\n\t\t};\r\n\r\n\t\tthis._updateSecondaryMenuData(itemTypeId);\r\n\r\n\t\treturn secondaryMenuData;\r\n\t}\r\n\r\n\t_showSecondaryMenu(itemTypeId) {\r\n\t\tthis.state.secondaryMenuItemTypeId = itemTypeId;\r\n\t\tthis.render();\r\n\t\tthis.nav.style.visibility = 'hidden';\r\n\t\tthis.focus();\r\n\t}\r\n\r\n\t_hideSecondaryMenu() {\r\n\t\tthis.state.secondaryMenuItemTypeId = null;\r\n\t\tthis.tabs.selectTab(contentTabId);\r\n\t\tthis.render();\r\n\t\tthis.nav.style.visibility = 'visible';\r\n\t\tthis.nav.focus();\r\n\t}\r\n\r\n\tasync _updateSecondaryMenuData(itemTypeId) {\r\n\t\tconst itemTypeData = await getItemTypeData(itemTypeId);\r\n\t\tif (this.state.secondaryMenuItemTypeId !== itemTypeId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.state.secondaryMenuData = {\r\n\t\t\t...this.state.secondaryMenuData,\r\n\t\t\t...itemTypeData\r\n\t\t};\r\n\t\tthis.render();\r\n\t\tthis.focus();\r\n\t}\r\n\r\n\tasync _favoritesClick(event) {\r\n\t\tconst favoriteItemRow = event.target.closest('.aras-nav__child');\r\n\t\tif (!favoriteItemRow) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst favoriteId = favoriteItemRow.dataset.id;\r\n\t\tconst favoriteItem = this.state.favorites[favoriteId];\r\n\t\tconst unpinIconNode = event.target.closest(\r\n\t\t\t'.aras-button.aras-nav-leaf-ico'\r\n\t\t);\r\n\t\tif (unpinIconNode) {\r\n\t\t\tfavoriteMethods.removeFromQuickAccess(favoriteId);\r\n\t\t} else if (favoriteItem.category === 'Item') {\r\n\t\t\tconst favoriteItemType = favoriteItem.contextType;\r\n\t\t\tconst itemType = await itemTypeMetadata.getItemType(favoriteItemType);\r\n\t\t\tconst isVersionable = itemType['is_versionable'] === '1';\r\n\t\t\tconst getItemMethod = isVersionable\r\n\t\t\t\t? 'getItemLastVersion'\r\n\t\t\t\t: 'getItemById';\r\n\t\t\tconst itemNode = aras[getItemMethod](\r\n\t\t\t\tfavoriteItemType,\r\n\t\t\t\tfavoriteItem.additional_data.id\r\n\t\t\t);\r\n\t\t\tconst openCommand = createCommand('OpenItem', itemType, { itemNode });\r\n\t\t\tif (openCommand.canExecute()) {\r\n\t\t\t\tawait openCommand.execute();\r\n\r\n\t\t\t\treturn this._hideIfNotPinned();\r\n\t\t\t}\r\n\r\n\t\t\tconst errorMessage = getResource(\r\n\t\t\t\t'ui_methods.access_restricted_or_not_exist',\r\n\t\t\t\tfavoriteItemType\r\n\t\t\t);\r\n\t\t\talertModule(errorMessage, {\r\n\t\t\t\ttype: 'error'\r\n\t\t\t});\r\n\t\t} else if (favoriteItem.category === 'Search') {\r\n\t\t\tthis._searchItemType(this.state.secondaryMenuItemTypeId, favoriteId);\r\n\t\t}\r\n\t}\r\n\r\n\tasync _createNewItem() {\r\n\t\tconst { itemType } = this.state.secondaryMenuData;\r\n\t\tconst openNewItemCommand = createCommand('OpenNewItem', itemType);\r\n\r\n\t\tawait openNewItemCommand.execute();\r\n\r\n\t\tthis._hideIfNotPinned();\r\n\t}\r\n\r\n\t_searchItemType(itemTypeId, favoriteSearchId) {\r\n\t\treturn Promise.resolve(\r\n\t\t\twindow.arasTabs.openSearch(itemTypeId, favoriteSearchId)\r\n\t\t).then(() => {\r\n\t\t\tthis._hideIfNotPinned();\r\n\t\t});\r\n\t}\r\n\r\n\tasync _openItem(event) {\r\n\t\tconst quickSearch = event.currentTarget;\r\n\t\tconst selectedItem = quickSearch.getSelectedItem();\r\n\t\tif (!selectedItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tquickSearch.clear();\r\n\r\n\t\tconst { itemType } = this.state.secondaryMenuData;\r\n\t\tconst itemNode = aras.getItemById(itemType.name, selectedItem.itemId);\r\n\t\tconst openCommand = createCommand('OpenItem', itemType, { itemNode });\r\n\t\tif (openCommand.canExecute()) {\r\n\t\t\topenCommand.execute();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nNavigationPanel.define('aras-navigation-panel');\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport SvgManager from '../../core/SvgManager';\r\nimport Tabs from '../../components/tabs';\r\nimport { itemType as itemTypeMetadata } from 'metadata';\r\nimport { wire } from 'hyperhtml';\r\n\r\nconst icons = {\r\n\tdefaultItemType: '../images/DefaultItemType.svg',\r\n\tgridSearch: '../images/GridSearch.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nconst IFRAME_CSS_CLASS = 'content-block__iframe';\r\nconst PAGE_IFRAME_CSS_CLASS = 'content-block__iframe_page';\r\nexport default class HeaderTabs extends Tabs {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.data = new Map();\r\n\t\tthis.tabs = [];\r\n\t\tthis.draggableTabs = false;\r\n\t\tthis.initialized = false;\r\n\t\tthis.options = {};\r\n\t}\r\n\tconnectedCallback() {\r\n\t\tif (!this.initialized) {\r\n\t\t\tthis.html`\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t`;\r\n\r\n\t\t\tconst dropdownContainer = this.querySelector('.aras-dropdown-container');\r\n\t\t\tdropdownContainer.addEventListener(\r\n\t\t\t\t'dropdownbeforeopen',\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tthis.dropdownTabRender();\r\n\t\t\t\t}.bind(this)\r\n\t\t\t);\r\n\r\n\t\t\tthis._dropdownBox = dropdownContainer.querySelector('div.aras-dropdown');\r\n\t\t\tthis._frameCssClass = IFRAME_CSS_CLASS;\r\n\t\t\tthis._elem = this.firstElementChild;\r\n\t\t\tthis._movable = this._elem.querySelector('div');\r\n\r\n\t\t\tthis.makeScroll();\r\n\t\t\tthis.makeSelectable();\r\n\t\t\tthis.makeDraggable();\r\n\t\t\tthis.connectKeyboard();\r\n\r\n\t\t\tthis.setAttribute('role', 'tablist');\r\n\t\t\tthis.setAttribute('aria-orientation', 'horizontal');\r\n\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t\tthis.render();\r\n\t}\r\n\topenForm(formId, icon, label) {\r\n\t\tif (!formId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst formName = aras.MetadataCache.GetFormName(formId);\r\n\t\tconst tab = this.tabs.find(function (tab) {\r\n\t\t\treturn tab.indexOf('form_' + formId + formName + '_') !== -1;\r\n\t\t});\r\n\t\tif (tab) {\r\n\t\t\tthis.selectTab(tab);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst url = aras.getScriptsURL(\r\n\t\t\t'ShowFormInFrame.html?formId=' + formId + '&formType=edit&item=undefined'\r\n\t\t);\r\n\t\tconst winName = 'form_' + formId + formName + '_' + Date.now();\r\n\t\tconst win = this.open(url, winName, false, PAGE_IFRAME_CSS_CLASS);\r\n\t\tthis.updateTitleTab(winName, { label: label, image: icon });\r\n\r\n\t\treturn win;\r\n\t}\r\n\topenPage(url, icon, label) {\r\n\t\tif (!url) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst tab = this.tabs.find(function (tab) {\r\n\t\t\treturn tab.indexOf('page_' + url) !== -1;\r\n\t\t});\r\n\t\tif (tab) {\r\n\t\t\tthis.selectTab(tab);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst winName = 'page_' + url + '_' + Date.now();\r\n\t\turl = aras.getScriptsURL(url);\r\n\t\tconst win = this.open(url, winName, false, PAGE_IFRAME_CSS_CLASS);\r\n\t\tthis.updateTitleTab(winName, { label: label, image: icon });\r\n\r\n\t\treturn win;\r\n\t}\r\n\tasync openCuiLayout(\r\n\t\tLayoutConstructor,\r\n\t\tlocation,\r\n\t\tlayoutId,\r\n\t\t{ label, image, closable = true }\r\n\t) {\r\n\t\tconst tabId = 'layout_' + layoutId;\r\n\t\tconst hasTab = this.tabs.includes(tabId);\r\n\t\tif (hasTab) {\r\n\t\t\tawait this.selectTab(tabId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst containerNode = wire()`\r\n\t\t\t\r\n\t\t`;\r\n\t\tconst tabsContainer = document.getElementById('center');\r\n\t\ttabsContainer.appendChild(containerNode);\r\n\r\n\t\tconst layout = new LayoutConstructor(containerNode, location);\r\n\r\n\t\tthis.addTab(tabId, { closable, label, image, layout });\r\n\r\n\t\tawait layout.init();\r\n\t\tawait this.selectTab(tabId);\r\n\t}\r\n\topenSearch(itemtypeID, favoriteSearchId) {\r\n\t\tconst itemTypeName = itemTypeMetadata.getItemTypeName(itemtypeID);\r\n\t\tif (!itemTypeName) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst url = aras.getScriptsURL(\r\n\t\t\t'itemsGrid.html?itemtypeID=' +\r\n\t\t\t\titemtypeID +\r\n\t\t\t\t'&itemtypeName=' +\r\n\t\t\t\titemTypeName +\r\n\t\t\t\t(favoriteSearchId ? '&favoriteSearchId=' + favoriteSearchId : '')\r\n\t\t);\r\n\r\n\t\tconst winName = 'search_' + itemtypeID + itemTypeName + '_' + Date.now();\r\n\r\n\t\tconst win = this.open(url, winName, false);\r\n\t\twin.addEventListener('resize', async () => {\r\n\t\t\twindow.dispatchEvent(new CustomEvent('resize'));\r\n\t\t\tawait this.render();\r\n\t\t\tthis.scrollIntoView(this.selectedTab);\r\n\t\t});\r\n\t\tthis.updateTitleTab(winName, {\r\n\t\t\tlabel: itemTypeName,\r\n\t\t\timage: icons.gridSearch\r\n\t\t});\r\n\r\n\t\tconst itemTypePromise = itemTypeMetadata.getItemType(itemtypeID, 'id');\r\n\t\titemTypePromise.then((itemType) => {\r\n\t\t\tconst label = itemType['label_plural'];\r\n\t\t\tif (!label) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst props = { label };\r\n\t\t\treturn this.updateTitleTab(winName, props);\r\n\t\t});\r\n\r\n\t\treturn win;\r\n\t}\r\n\t_hideAll() {\r\n\t\tthis.tabs.forEach((id) => {\r\n\t\t\tconst frame = document.getElementById(id);\r\n\t\t\tframe.style.opacity = 0;\r\n\t\t\tframe.style['z-index'] = '-1';\r\n\t\t});\r\n\t}\r\n\tejectTab(id) {\r\n\t\tconst data = this.data.get(id);\r\n\t\tsuper.removeTab(id);\r\n\t\tthis.options.updateTabState && this.options.updateTabState(this.tabs);\r\n\t\treturn data;\r\n\t}\r\n\tasync selectTab(id, preventFocus) {\r\n\t\tif (!id) {\r\n\t\t\tthis.selectedTab = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._hideAll();\r\n\t\tconst frame = document.getElementById(id);\r\n\t\tframe.style.opacity = 1;\r\n\t\tframe.style['z-index'] = 'auto';\r\n\t\tif (!preventFocus) {\r\n\t\t\tthis.focusTab(id);\r\n\t\t}\r\n\r\n\t\treturn await super.selectTab(id);\r\n\t}\r\n\tfocusTab(id) {\r\n\t\tconst tabContainer = document.getElementById(id);\r\n\t\tconst contentWindow = tabContainer.contentWindow;\r\n\t\tif (contentWindow?.nativeFocus) {\r\n\t\t\tcontentWindow.nativeFocus();\r\n\t\t} else if (contentWindow?.focus) {\r\n\t\t\tcontentWindow.focus();\r\n\t\t}\r\n\t}\r\n\t_getNextTabId() {\r\n\t\tconst lastTabId = this.tabs[this.tabs.length - 1];\r\n\t\tif (lastTabId === this.selectedTab) {\r\n\t\t\treturn this.tabs[this.tabs.length - 2] || null;\r\n\t\t}\r\n\r\n\t\treturn lastTabId || null;\r\n\t}\r\n\tasync removeTab(id, ignorePageCloseHooks = false) {\r\n\t\tconst tabContainer = document.getElementById(id);\r\n\t\tif (!tabContainer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst remove = async () => {\r\n\t\t\tconst tab = this.data.get(id);\r\n\t\t\tif (tab?.layout) {\r\n\t\t\t\tconst layoutDestroyed = await tab.layout.tryDestroyLayout();\r\n\t\t\t\tif (!layoutDestroyed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsuper.removeTab(tabContainer.id);\r\n\t\t\tthis.options.updateTabState && this.options.updateTabState(this.tabs);\r\n\t\t\tconst itemId = tabContainer.id.replace(aras.mainWindowName + '_', '');\r\n\t\t\taras.uiUnregWindowEx(itemId);\r\n\t\t\ttabContainer.src = 'about:blank';\r\n\t\t\ttabContainer.parentNode.removeChild(tabContainer);\r\n\t\t};\r\n\t\tif (\r\n\t\t\t!tabContainer.contentWindow ||\r\n\t\t\ttabContainer.contentWindow.close.toString().indexOf('[native code]') > -1\r\n\t\t) {\r\n\t\t\tawait remove();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\ttabContainer.contentWindow.close(async (isClosed) => {\r\n\t\t\t\tif (isClosed) {\r\n\t\t\t\t\tawait remove();\r\n\t\t\t\t}\r\n\t\t\t\tresolve(isClosed);\r\n\t\t\t}, ignorePageCloseHooks);\r\n\t\t});\r\n\t}\r\n\tasync clickOpenInTearOff(id) {\r\n\t\tif (!id) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst win = document.getElementById(id).contentWindow;\r\n\t\tif (win.windowType) {\r\n\t\t\treturn await this.openNonItemWindow(win, id);\r\n\t\t}\r\n\r\n\t\tconst selectItem = win.item;\r\n\t\tconst itemId = selectItem.getAttribute('id');\r\n\t\tconst itemType = selectItem.getAttribute('type');\r\n\t\tconst ignorePageCloseHooks = true;\r\n\r\n\t\tconst isClosed = await this.removeTab(id, ignorePageCloseHooks);\r\n\t\tif (!isClosed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst gettedItem = aras.getItemById(itemType, itemId);\r\n\t\tconst openInTearOff = true;\r\n\t\treturn await aras.uiShowItemEx(gettedItem, 'tab view', openInTearOff);\r\n\t}\r\n\topenNonItemWindow(win, id) {\r\n\t\tconst itemId = win.itemId;\r\n\t\tconst itemTypeName = win.itemTypeName;\r\n\t\tconst windowType = win.windowType;\r\n\t\treturn this.removeTab(id).then(function (isClosed) {\r\n\t\t\tif (isClosed) {\r\n\t\t\t\tif (windowType === 'whereUsed' || windowType === 'structureBrowser') {\r\n\t\t\t\t\twindow.Dependencies.view(\r\n\t\t\t\t\t\titemTypeName,\r\n\t\t\t\t\t\titemId,\r\n\t\t\t\t\t\twindowType === 'whereUsed',\r\n\t\t\t\t\t\taras,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tasync setTitleTabWithFrame(frameWindow) {\r\n\t\tlet itemTypeName;\r\n\t\tlet item;\r\n\r\n\t\tif (!frameWindow.frameElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (frameWindow.item && frameWindow.itemTypeName) {\r\n\t\t\titem = frameWindow.item;\r\n\t\t\titemTypeName = frameWindow.itemTypeName;\r\n\t\t} else {\r\n\t\t\tconst win = window[frameWindow.paramObjectName];\r\n\t\t\titemTypeName = window[frameWindow.paramObjectName].itemTypeName;\r\n\t\t\titem = win.item;\r\n\t\t}\r\n\r\n\t\tconst winName = frameWindow.frameElement.getAttribute('id');\r\n\t\tconst itemType = await itemTypeMetadata.getItemType(itemTypeName);\r\n\t\tconst image = itemType['open_icon'] ?? icons.defaultItemType;\r\n\t\tconst label = aras.getKeyedNameEx(item);\r\n\t\tconst props = { image, label };\r\n\t\treturn this.updateTitleTab(winName, props);\r\n\t}\r\n\tasync updateTitleTab(id, props) {\r\n\t\tawait this.setTabContent(id, props);\r\n\t\tthis.scrollIntoView(id);\r\n\t}\r\n\taddTab(id, options, position) {\r\n\t\tsuper.addTab(id, options, position);\r\n\t\tthis.options.updateTabState && this.options.updateTabState(this.tabs);\r\n\t}\r\n\topen(src, winName, isUnfocused, className) {\r\n\t\tconst iframe = document.createElement('IFRAME');\r\n\t\tconst isFirstTab = this.tabs.length === 0;\r\n\t\tdocument.getElementById('center').appendChild(iframe);\r\n\t\tthis.addTab(winName, { closable: true });\r\n\t\tif (!winName.startsWith('innovator_')) {\r\n\t\t\tconst addedTab = this.data.get(winName);\r\n\t\t\taddedTab.parentTab = null;\r\n\t\t}\r\n\t\tiframe.id = winName;\r\n\t\tiframe.className = `${this._frameCssClass} ${className || ''}`.trim();\r\n\t\tiframe.src = src;\r\n\t\tiframe.setAttribute('role', 'tabpanel');\r\n\t\tif (isUnfocused && !isFirstTab) {\r\n\t\t\tiframe.style.opacity = 0;\r\n\t\t\tiframe.style['z-index'] = '-1';\r\n\t\t} else {\r\n\t\t\tthis.selectTab(winName, isUnfocused);\r\n\t\t}\r\n\t\tconst win = iframe.contentWindow;\r\n\t\twin.opener = window;\r\n\t\twin.name = iframe.name = winName;\r\n\t\treturn win;\r\n\t}\r\n\tdropdownTabRender() {\r\n\t\tconst select = function (event) {\r\n\t\t\tconst target = event.target;\r\n\t\t\tconst listTab = target.closest('li');\r\n\r\n\t\t\tif (listTab) {\r\n\t\t\t\tconst currentSelectedTabId = this.selectedTab;\r\n\t\t\t\tthis.selectTab(listTab.getAttribute('list-data-id'));\r\n\r\n\t\t\t\tthis.dispatchEvent(\r\n\t\t\t\t\tnew CustomEvent('select', {\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\tid: this.selectedTab,\r\n\t\t\t\t\t\t\tpreviousId: currentSelectedTabId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}.bind(this);\r\n\r\n\t\tconst items = this.tabs.map(\r\n\t\t\tfunction (tab) {\r\n\t\t\t\tconst data = this.data.get(tab);\r\n\t\t\t\tconst icon = this._getImage(data.image);\r\n\t\t\t\tif (icon) {\r\n\t\t\t\t\ticon.className = 'aras-list-item__icon';\r\n\t\t\t\t}\r\n\t\t\t\tconst className =\r\n\t\t\t\t\t'aras-list-item aras-list-item_iconed' +\r\n\t\t\t\t\t(this.selectedTab === tab ? ' selected' : '');\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{icon}\r\n\t\t\t\t\t\t{data.label}\r\n\t\t\t\t\t
  • \r\n\t\t\t\t);\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t\tconst list = (\r\n\t\t\t
      \r\n\t\t\t\t{items}\r\n\t\t\t
    \r\n\t\t);\r\n\t\tInferno.render(list, this._dropdownBox);\r\n\t}\r\n\tupdateTabInformation(currentID, newID) {\r\n\t\tconst index = this.tabs.indexOf(currentID);\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.tabs[index] = newID;\r\n\t\t}\r\n\r\n\t\tconst dataObj = this.data.get(currentID);\r\n\t\tthis.data.delete(currentID);\r\n\t\tthis.data.set(newID, Object.assign({}, dataObj));\r\n\r\n\t\tif (currentID === this.selectedTab) {\r\n\t\t\tthis.selectedTab = newID;\r\n\t\t}\r\n\r\n\t\tconst frame = document.getElementById(currentID);\r\n\t\tframe.id = frame.name = newID;\r\n\t\tthis.render();\r\n\t}\r\n\tgetSearchGridTabs(id) {\r\n\t\treturn this.tabs\r\n\t\t\t.filter(function (item) {\r\n\t\t\t\treturn item.indexOf('search_' + id) > -1;\r\n\t\t\t})\r\n\t\t\t.map(function (item) {\r\n\t\t\t\treturn window.document.getElementById(item).contentWindow;\r\n\t\t\t});\r\n\t}\r\n\trender() {\r\n\t\tconst isTabOpen = this.tabs.length > 0;\r\n\t\tthis.classList.toggle('content-block__main-tabs_hidden', !isTabOpen);\r\n\t\treturn super.render();\r\n\t}\r\n\tforceCloseAllTabs() {\r\n\t\tthis.tabs.forEach((id) => {\r\n\t\t\tconst tab = this.data.get(id);\r\n\t\t\tif (tab.layout) {\r\n\t\t\t\ttab.layout.destroy();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.data.delete(id);\r\n\t\t\tconst frame = window.document.getElementById(id);\r\n\t\t\tconst itemId = frame.id.replace(aras.mainWindowName + '_', '');\r\n\t\t\taras.uiUnregWindowEx(itemId);\r\n\t\t\tframe.src = 'about:blank';\r\n\t\t});\r\n\t\tthis.tabs = [];\r\n\t}\r\n\tasync closeTabs(tabs = [...this.tabs]) {\r\n\t\tconst editedTabs = [];\r\n\t\tconst promisesArray = tabs.map((tabId) => {\r\n\t\t\tlet isEdited = false;\r\n\t\t\tif (tabId.startsWith('innovator_')) {\r\n\t\t\t\tconst tabWindow = window.document.getElementById(tabId).contentWindow;\r\n\t\t\t\tisEdited =\r\n\t\t\t\t\ttabWindow.aras &&\r\n\t\t\t\t\t(tabWindow.aras.isDirtyEx(tabWindow.item) ||\r\n\t\t\t\t\t\ttabWindow.aras.isTempEx(tabWindow.item));\r\n\t\t\t}\r\n\r\n\t\t\tif (isEdited) {\r\n\t\t\t\teditedTabs.push(tabId);\r\n\t\t\t\treturn Promise.resolve();\r\n\t\t\t}\r\n\r\n\t\t\treturn this.removeTab(tabId);\r\n\t\t});\r\n\t\tawait Promise.all(promisesArray);\r\n\r\n\t\tfor (let i = 0; i < editedTabs.length; i++) {\r\n\t\t\tconst tabId = editedTabs[i];\r\n\t\t\tawait this.selectTab(tabId);\r\n\t\t\tawait this.removeTab(tabId);\r\n\t\t}\r\n\r\n\t\treturn await this.render();\r\n\t}\r\n\tcloseOtherTabs(excludedTabId) {\r\n\t\tconst excludedTabIndex = this.tabs.indexOf(excludedTabId);\r\n\t\tconst removableTabs = this.tabs.slice();\r\n\t\tremovableTabs.splice(excludedTabIndex, 1);\r\n\r\n\t\treturn this.closeTabs(removableTabs);\r\n\t}\r\n}\r\n\r\nHeaderTabs.define('aras-header-tabs');\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\n/* global ResourceManager, Solution */\r\nexport default function (\r\n\tsolution,\r\n\tresourceName = 'ui_resources.xml',\r\n\tlanguage = navigator.language\r\n) {\r\n\treturn new ResourceManager(new Solution(solution), resourceName, language);\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { bind } from 'hyperhtml';\r\nimport Dialog from '../../core/Dialog';\r\nimport getResourceManager from './getResourceManager';\r\nimport SvgManager from '../../core/SvgManager';\r\n\r\nconst images = {\r\n\twarning: '../images/Warning.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(images));\r\n\r\nconst notCertifiedBrowser = () => {\r\n\tconst resourceManager = getResourceManager('core');\r\n\tconst title = resourceManager.getString('common.warning');\r\n\tconst dialog = new Dialog('html', { title });\r\n\r\n\tdialog.dialogNode.classList.add(\r\n\t\t'aras-dialog-alert',\r\n\t\t'aras-dialog_not-certified-browser'\r\n\t);\r\n\r\n\tconst onContinueClick = () => {\r\n\t\tconst rememberChoice = dialog.contentNode.querySelector(\r\n\t\t\t'input[type=\"checkbox\"]'\r\n\t\t).checked;\r\n\t\tdialog.close(rememberChoice);\r\n\t};\r\n\tconst imageNode = SvgManager.createHyperHTMLNode(images.warning, {\r\n\t\tcssClass: 'aras-dialog-alert__img'\r\n\t});\r\n\tbind(dialog.contentNode)`\r\n\t\t
    \r\n\t\t\t${imageNode}\r\n\t\t\t${resourceManager.getFormatedString(\r\n\t\t\t\t'system_requirements.certification_browser_notification',\r\n\t\t\t\taras.Browser.getBrowserName()\r\n\t\t\t)}\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t`;\r\n\r\n\tdialog.dialogNode.addEventListener('cancel', (event) => {\r\n\t\tevent.preventDefault();\r\n\t});\r\n\r\n\tdialog.show();\r\n\r\n\treturn dialog.promise;\r\n};\r\n\r\nexport default notCertifiedBrowser;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport notCertifiedBrowserDialog from './notCertifiedBrowser';\r\n\r\nconst storageKey = 'ArasAppUrlsKeys';\r\nconst getUrlsKeys = () => {\r\n\tconst strArray = localStorage.getItem(storageKey);\r\n\tlet array = [];\r\n\ttry {\r\n\t\tif (strArray) {\r\n\t\t\tarray = JSON.parse(strArray);\r\n\t\t}\r\n\t} catch (exp) {\r\n\t\treturn array;\r\n\t}\r\n\r\n\treturn array;\r\n};\r\n\r\nconst getBaseUrl = () =>\r\n\twindow.location.href.replace(/Client\\/.*/i, 'Client').toLowerCase();\r\nconst addToLocalStorage = () => {\r\n\tconst baseUrl = getBaseUrl();\r\n\tconst arrayUrls = getUrlsKeys();\r\n\r\n\tif (!arrayUrls.includes(baseUrl)) {\r\n\t\tarrayUrls.push(baseUrl);\r\n\t}\r\n\tlocalStorage.setItem(storageKey, JSON.stringify(arrayUrls));\r\n};\r\nconst keySessionStore = 'skipBrowserCertificationDialog';\r\nconst checkStorage = function () {\r\n\tif (sessionStorage.getItem(keySessionStore)) {\r\n\t\treturn true;\r\n\t}\r\n\treturn getUrlsKeys().includes(getBaseUrl());\r\n};\r\n\r\nconst validateBrowserCertified = async function () {\r\n\tif (aras.Browser.isCertified() || checkStorage()) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst rememberChoice = await notCertifiedBrowserDialog();\r\n\tif (rememberChoice) {\r\n\t\taddToLocalStorage();\r\n\t} else {\r\n\t\tsessionStorage.setItem(keySessionStore, true);\r\n\t}\r\n};\r\n\r\nexport default validateBrowserCertified;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { bind } from 'hyperhtml';\r\nimport Dialog from '../../core/Dialog';\r\nimport getResourceManager from './getResourceManager';\r\nimport SvgManager from '../../core/SvgManager';\r\n\r\nconst images = {\r\n\terror: '../images/Error.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(images));\r\n\r\nconst disabledCookies = () => {\r\n\tconst resourceManager = getResourceManager('core');\r\n\tconst title = resourceManager.getString(\r\n\t\t'system_requirements.failed_initialize_innovator'\r\n\t);\r\n\tconst dialog = new Dialog('html', { title });\r\n\r\n\tdialog.dialogNode.classList.add(\r\n\t\t'aras-dialog-alert',\r\n\t\t'aras-dialog_disabled-cookies'\r\n\t);\r\n\r\n\tconst message = resourceManager.getString(\r\n\t\t'login.cookies_are_disabled_msg_html'\r\n\t);\r\n\tconst imageNode = SvgManager.createHyperHTMLNode(images.error, {\r\n\t\tcssClass: 'aras-dialog-alert__img'\r\n\t});\r\n\tbind(dialog.contentNode)`\r\n\t\t
    \r\n\t\t\t${imageNode}\r\n\t\t\t${message}\r\n\t\t
    \r\n\t`;\r\n\r\n\tdialog.dialogNode.addEventListener('cancel', (event) => {\r\n\t\tevent.preventDefault();\r\n\t});\r\n\r\n\tdialog.show();\r\n\r\n\treturn dialog.promise;\r\n};\r\n\r\nexport default disabledCookies;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { bind, wire } from 'hyperhtml';\r\nimport Dialog from '../../core/Dialog';\r\nimport getResourceManager from './getResourceManager';\r\nimport { createButtonContext } from '../../components/dialogCommonApi';\r\n\r\nconst selectTimeZone = (winTzNames) => {\r\n\tconst resourceManager = getResourceManager('core');\r\n\tconst title = resourceManager.getString('tz.select_time_zone');\r\n\tconst dialog = new Dialog('html', { title });\r\n\r\n\tdialog.dialogNode.classList.add('aras-dialog_timezone-selector');\r\n\tconst timeZonesSelect = wire()`\r\n\t\t\r\n\t`;\r\n\r\n\tconst acceptTimeZone = () => dialog.close(timeZonesSelect.value);\r\n\tconst createOkButton = createButtonContext();\r\n\tconst okButton = createOkButton(\r\n\t\tresourceManager.getString('common.ok'),\r\n\t\t'aras-button_primary aras-buttons-bar__button',\r\n\t\tacceptTimeZone\r\n\t);\r\n\r\n\tconst html = bind(dialog.contentNode);\r\n\thtml`\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t${timeZonesSelect}\r\n\t\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    ${okButton}
    \r\n\t`;\r\n\r\n\tdialog.dialogNode.addEventListener('cancel', (event) =>\r\n\t\tevent.preventDefault()\r\n\t);\r\n\r\n\tdialog.show();\r\n\r\n\treturn dialog.promise;\r\n};\r\n\r\nexport default selectTimeZone;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport selectTimeZoneDialog from './selectTimeZone';\r\nimport getResourceManager from '../startup/getResourceManager';\r\n\r\nconst setTimeZoneNameInLocalStorage = (tzLabel, winTzName) => {\r\n\tconst tzOffset = -1 * new Date().getTimezoneOffset();\r\n\tconst timeZones = {};\r\n\ttimeZones[tzOffset + tzLabel] = winTzName;\r\n\tlocalStorage.setItem('timeZone', JSON.stringify(timeZones));\r\n};\r\n\r\nconst getTimeZoneName = async () => {\r\n\tconst resourceManager = getResourceManager('core');\r\n\tlet tzLabel;\r\n\r\n\ttry {\r\n\t\ttzLabel = new Intl.DateTimeFormat().resolvedOptions().timeZone || '';\r\n\t} catch (ex) {\r\n\t\ttzLabel = '';\r\n\t}\r\n\r\n\tconst tzOffset = -1 * new Date().getTimezoneOffset();\r\n\tlet timeZones = {};\r\n\r\n\ttry {\r\n\t\ttimeZones = JSON.parse(localStorage.getItem('timeZone'));\r\n\t} catch (e) {\r\n\t\ttimeZones = {};\r\n\t}\r\n\r\n\tconst winTzName = timeZones?.[tzOffset + tzLabel];\r\n\tif (winTzName) {\r\n\t\treturn winTzName;\r\n\t}\r\n\r\n\tconst inputType = tzLabel ? 'iana' : 'windows';\r\n\tconst localTime = new Date().toISOString();\r\n\tconst localTimeOffset = (-1 * new Date().getTimezoneOffset()).toString();\r\n\r\n\tconst url = new URL(aras.getBaseURL() + '/TimeZone/GetTimezoneNames');\r\n\turl.searchParams.set('tzlabel', tzLabel);\r\n\turl.searchParams.set('inputType', inputType);\r\n\turl.searchParams.set('localTime', localTime);\r\n\turl.searchParams.set('offsetBetweenLocalTimeAndUTCTime', localTimeOffset);\r\n\r\n\tconst tzRequest = await (await fetch(url)).json();\r\n\tconst winTzNames = tzRequest.map(({ id }) => id);\r\n\r\n\tif (winTzNames.length === 0) {\r\n\t\tthrow new Error(resourceManager.getString('tz.get_currentzone_fail'));\r\n\t} else if (winTzNames.length === 1) {\r\n\t\tsetTimeZoneNameInLocalStorage(tzLabel, winTzNames[0]);\r\n\t\treturn winTzNames[0];\r\n\t}\r\n\r\n\treturn selectTimeZoneDialog(winTzNames).then((value) => {\r\n\t\tsetTimeZoneNameInLocalStorage(tzLabel, value);\r\n\t\treturn value;\r\n\t});\r\n};\r\n\r\nexport default getTimeZoneName;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nexport default function login() {\r\n\treturn Promise.all([\r\n\t\twindow.deepLinking.beforeInitializeLoginForm(),\r\n\t\taras.OAuthServerDiscovery.discover(aras.getServerBaseURL())\r\n\t])\r\n\t\t.then(function (result) {\r\n\t\t\tconst deepLinkingResult = result[0];\r\n\t\t\tif (deepLinkingResult.startItemHandled === true) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst oauthServerConfiguration = result[1];\r\n\t\t\tconst clientUrlsUtility = new window.ClientUrlsUtility(aras.getBaseURL());\r\n\t\t\tconst clientBaseUrl = clientUrlsUtility.getBaseUrlWithoutSalt() + '/';\r\n\t\t\treturn aras.OAuthClient.init(\r\n\t\t\t\twindow.oauthClientId,\r\n\t\t\t\tclientBaseUrl,\r\n\t\t\t\toauthServerConfiguration\r\n\t\t\t)\r\n\t\t\t\t.then(async function () {\r\n\t\t\t\t\tconst navigatedFromRedirectCallbackKey =\r\n\t\t\t\t\t\t'OAuth:NavigatedFromRedirectCallback';\r\n\t\t\t\t\tconst params = new URLSearchParams(\r\n\t\t\t\t\t\tlocation.search.substr(1, location.search.length)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst options = {\r\n\t\t\t\t\t\tprompt: params.get('prompt'),\r\n\t\t\t\t\t\tdatabase: params.get('db'),\r\n\t\t\t\t\t\tauthentication_type: params.get('auth'),\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\treturnUrl: location.href\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (options.prompt === '') {\r\n\t\t\t\t\t\toptions.prompt = 'select_account';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (sessionStorage[navigatedFromRedirectCallbackKey] === 'true') {\r\n\t\t\t\t\t\t// Deteleting prompt field to avoid cyclic navigation to login page\r\n\t\t\t\t\t\t// after redirection from OAuth server after authorization\r\n\t\t\t\t\t\tdelete options.prompt;\r\n\t\t\t\t\t\tsessionStorage.removeItem(navigatedFromRedirectCallbackKey);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (navigator.serviceWorker) {\r\n\t\t\t\t\t\tconst { active: worker } = await navigator.serviceWorker.ready;\r\n\t\t\t\t\t\t// worker can occasionally be null during Firefox selenium tests execution against an AICD instance.\r\n\t\t\t\t\t\t// This seems to be caused by a bug in Firefox service worker logic. In AICD oauth and client work\r\n\t\t\t\t\t\t// under different domains (urls), so probably switching domains (client -> oauth -> client) during the login\r\n\t\t\t\t\t\t// process can somehow \"break\" the service worker registration process (which occurs at the client's domain).\r\n\t\t\t\t\t\t// Also currently selenium tests are run against MSI Innovator only with http protocol (not https), which means\r\n\t\t\t\t\t\t// that the service worker feature is disabled (it's disabled by default for http), so probably this issue is not\r\n\t\t\t\t\t\t// specific to AICD.\r\n\t\t\t\t\t\tif (worker) {\r\n\t\t\t\t\t\t\tconst salt = clientUrlsUtility.getSalt();\r\n\t\t\t\t\t\t\tconst payload = { salt };\r\n\t\t\t\t\t\t\tworker.postMessage({ type: 'LOAD_STATIC', payload });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn aras.OAuthClient.login(options);\r\n\t\t\t\t})\r\n\t\t\t\t.then(function (result) {\r\n\t\t\t\t\tif (result.status == 'logged-in') {\r\n\t\t\t\t\t\treturn aras.login().then(function () {\r\n\t\t\t\t\t\t\twindow.onSuccessfulLogin();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t})\r\n\t\t.catch(function (err) {\r\n\t\t\treturn aras.AlertError(err).then(function () {\r\n\t\t\t\tif (aras.OAuthClient.isLogged()) {\r\n\t\t\t\t\tconst url = new URL(window.location.href);\r\n\t\t\t\t\turl.searchParams.delete('StartItem');\r\n\t\t\t\t\tlet returnUrl = url.toString();\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\terr instanceof SOAPResults &&\r\n\t\t\t\t\t\terr.getFaultString() === 'Invalid user name.' &&\r\n\t\t\t\t\t\t!url.searchParams.has('prompt')\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tif (returnUrl.includes('?')) {\r\n\t\t\t\t\t\t\treturnUrl += '&prompt';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturnUrl += '?prompt';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn aras.OAuthClient.logout({\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\treturnUrl: returnUrl\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport validateBrowserCertified from './validateBrowserCertified';\r\nimport disabledCookiesDialog from './disabledCookies';\r\nimport getTimeZoneName from './getTimeZoneName';\r\nimport login from './login';\r\n\r\nfunction onBeforeUnloadHandler() {\r\n\tconst tabsContainer = window.mainLayout && window.mainLayout.tabsContainer;\r\n\r\n\tif (aras.getCommonPropertyValue('exitInProgress') === true) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (aras.isDirtyItems()) {\r\n\t\twindow.onLogoutCommand();\r\n\t\treturn 'Changes you made may not be saved.';\r\n\t} else if (\r\n\t\ttabsContainer &&\r\n\t\ttabsContainer.isExistAnyTabs() &&\r\n\t\taras.getCommonPropertyValue('exitWithoutSavingInProgress') !== true\r\n\t) {\r\n\t\treturn 'Changes you made may not be saved.';\r\n\t}\r\n}\r\nasync function onLoadHandler() {\r\n\tif (!navigator.cookieEnabled) {\r\n\t\tawait disabledCookiesDialog();\r\n\t}\r\n\r\n\tawait validateBrowserCertified();\r\n\r\n\ttry {\r\n\t\tconst timeZoneName = await getTimeZoneName();\r\n\t\taras.setCommonPropertyValue('systemInfo_CurrentTimeZoneName', timeZoneName);\r\n\t\tawait login();\r\n\t} catch (e) {\r\n\t\taras.AlertError(e.message);\r\n\t}\r\n\taras.setWindowLangAttribute(window);\r\n}\r\nfunction onUnloadHandler() {\r\n\tif (!window.aras) {\r\n\t\treturn;\r\n\t}\r\n\taras.setCommonPropertyValue('exitInProgress', true);\r\n\taras.getOpenedWindowsCount(true);\r\n\r\n\tconst { mainLayout } = window;\r\n\tif (mainLayout && mainLayout.tabsContainer) {\r\n\t\tconst { dockHeaderTabs, undockHeaderTabs } = mainLayout.tabsContainer;\r\n\t\tdockHeaderTabs.forceCloseAllTabs();\r\n\t\tundockHeaderTabs.forceCloseAllTabs();\r\n\t}\r\n\r\n\taras.logout();\r\n}\r\n\r\nexport default { onBeforeUnloadHandler, onLoadHandler, onUnloadHandler };\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nconst SPLIT_CSS_CLASS = 'content-block_split';\r\nconst ACTIVE_TABBAR_CSS_CLASS = 'content-block__main-tabs_active';\r\nconst DOCK_FRAME_CSS_CLASS = 'content-block__tab_docked';\r\n\r\nexport default class HeaderTabsContainer {\r\n\tdockHeaderTabs;\r\n\tundockHeaderTabs;\r\n\t#requestId;\r\n\t#activeTabbar;\r\n\tconstructor(dockHeaderTabs, undockHeaderTabs, options = {}) {\r\n\t\tthis.dockHeaderTabs = dockHeaderTabs;\r\n\t\tthis.undockHeaderTabs = undockHeaderTabs;\r\n\r\n\t\tthis.undockHeaderTabs.addEventListener('focusin', () => {\r\n\t\t\tthis._setActiveTabbar(this.undockHeaderTabs);\r\n\t\t});\r\n\t\tthis.dockHeaderTabs.addEventListener('focusin', () => {\r\n\t\t\tthis._setActiveTabbar(this.dockHeaderTabs);\r\n\t\t});\r\n\t\tthis.dockHeaderTabs.addEventListener('select', (event) => {\r\n\t\t\tif (!event.detail.id) {\r\n\t\t\t\tthis.updateTabbarsStyle();\r\n\t\t\t\tthis._setActiveTabbar(this.undockHeaderTabs);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.undockHeaderTabs.addEventListener('select', (event) => {\r\n\t\t\tif (!event.detail.id && this.dockHeaderTabs.data.size > 0) {\r\n\t\t\t\tthis._setActiveTabbar(this.dockHeaderTabs);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.undockHeaderTabs.options.updateTabState =\r\n\t\t\toptions.actions.updateUndockedTabs;\r\n\t\tthis.dockHeaderTabs.options.updateTabState =\r\n\t\t\toptions.actions.updateDockedTabs;\r\n\t}\r\n\ton(eventType, callback) {\r\n\t\tconst removeDockHandler = this.dockHeaderTabs.on(\r\n\t\t\teventType,\r\n\t\t\t(tabId, event) => callback(this.dockHeaderTabs, tabId, event)\r\n\t\t);\r\n\t\tconst removeUndockHandler = this.undockHeaderTabs.on(\r\n\t\t\teventType,\r\n\t\t\t(tabId, event) => callback(this.undockHeaderTabs, tabId, event)\r\n\t\t);\r\n\t\treturn () => {\r\n\t\t\tremoveDockHandler();\r\n\t\t\tremoveUndockHandler();\r\n\t\t};\r\n\t}\r\n\tattachContextMenu(contextMenu) {\r\n\t\tif (!contextMenu) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tabsHandlers = {\r\n\t\t\tdockTab: (id) => this.dockTab(id),\r\n\t\t\tundockTab: (id) => this.undockTab(id),\r\n\t\t\tisDockedTab: (id) => this.isDockedTab(id)\r\n\t\t};\r\n\t\tthis.on('contextmenu', (tabbar, tabId, event) => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst currentTarget = tabbar.data.get(tabId);\r\n\r\n\t\t\tcontextMenu.show(\r\n\t\t\t\t{ x: event.clientX, y: event.clientY },\r\n\t\t\t\t{\r\n\t\t\t\t\ttabs: [...tabbar.tabs],\r\n\t\t\t\t\tcurrentTarget: { ...currentTarget, id: tabId },\r\n\t\t\t\t\tcloseTab: (id) => tabbar.removeTab(id),\r\n\t\t\t\t\tcloseTabs: (ids) => tabbar.closeTabs(ids),\r\n\t\t\t\t\tcloseOtherTabs: (id) => tabbar.closeOtherTabs(id),\r\n\t\t\t\t\topenInTearOff: (id) => tabbar.clickOpenInTearOff(id),\r\n\t\t\t\t\t...tabsHandlers\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\tisDockedTab(tabId) {\r\n\t\treturn this.dockHeaderTabs.tabs.includes(tabId);\r\n\t}\r\n\t_moveTab(tabId, tabbarFrom, tabbarTo, position) {\r\n\t\tconst data = tabbarFrom.ejectTab(tabId);\r\n\t\tdata.parentTab = null;\r\n\t\ttabbarTo.addTab(tabId, data, position);\r\n\t\tconst frame = document.getElementById(tabId);\r\n\t\tframe.classList.toggle(\r\n\t\t\tDOCK_FRAME_CSS_CLASS,\r\n\t\t\ttabbarTo === this.dockHeaderTabs\r\n\t\t);\r\n\t}\r\n\tdockTab(tabId) {\r\n\t\tthis._moveTab(tabId, this.undockHeaderTabs, this.dockHeaderTabs);\r\n\t\tthis.updateTabbar(tabId, this.dockHeaderTabs);\r\n\t}\r\n\tundockTab(tabId) {\r\n\t\tif (this.dockHeaderTabs.tabs.length === 1) {\r\n\t\t\tthis.exitSplitscreen();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._moveTab(tabId, this.dockHeaderTabs, this.undockHeaderTabs);\r\n\t\tthis.updateTabbar(tabId, this.undockHeaderTabs);\r\n\t}\r\n\tupdateTabbarsStyle() {\r\n\t\tconst isNeedSplit = this.dockHeaderTabs.data.size > 0;\r\n\t\tconst tabsParentElement = this.dockHeaderTabs.parentElement;\r\n\t\ttabsParentElement.classList.toggle(SPLIT_CSS_CLASS, isNeedSplit);\r\n\r\n\t\tconst splitter = tabsParentElement.querySelector('aras-splitter');\r\n\t\tconst splitterWidth = splitter.offsetWidth;\r\n\t\tif (splitterWidth === 0 && isNeedSplit) {\r\n\t\t\tthrow new Error(\r\n\t\t\t\t// 'The width of the splitter cannot be zero if split screen mode is enabled'\r\n\t\t\t\t\"탭이 적어도 2개 이상 열려 있어야 창을 분할 할 수 있습니다.\"\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst splitterColumnWidth = `${splitterWidth}px`;\r\n\t\tconst startColumnSize = `calc(50% - ${splitterWidth / 2}px)`;\r\n\t\tconst splitColumnStyle = `${startColumnSize} ${splitterColumnWidth} ${startColumnSize}`;\r\n\r\n\t\tconst shouldUpdateStyles = !(\r\n\t\t\tisNeedSplit && tabsParentElement.style['grid-template-columns']\r\n\t\t);\r\n\r\n\t\tif (shouldUpdateStyles) {\r\n\t\t\ttabsParentElement.style['grid-template-columns'] = isNeedSplit\r\n\t\t\t\t? splitColumnStyle\r\n\t\t\t\t: null;\r\n\t\t}\r\n\t}\r\n\tupdateActiveTabbarObserver() {\r\n\t\tconst isNeedSplit = this.dockHeaderTabs.data.size > 0;\r\n\t\tif (isNeedSplit) {\r\n\t\t\tthis.startActiveTabbarObserver();\r\n\t\t} else {\r\n\t\t\tthis.stopActiveTabbarObserver();\r\n\t\t}\r\n\t}\r\n\tupdateTabbar(tabId, tabbar) {\r\n\t\ttabbar.selectTab(tabId);\r\n\t\tthis._setActiveTabbar(tabbar);\r\n\t\tthis.updateTabbarsStyle();\r\n\t\tthis.updateActiveTabbarObserver();\r\n\t}\r\n\tstartActiveTabbarObserver() {\r\n\t\tif (this.#requestId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#requestId = requestAnimationFrame(this._checkActiveTabbar.bind(this));\r\n\t}\r\n\tstopActiveTabbarObserver() {\r\n\t\tcancelAnimationFrame(this.#requestId);\r\n\t\tthis.#requestId = null;\r\n\t}\r\n\t_checkActiveTabbar() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (!this.#requestId) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.#requestId = requestAnimationFrame(\r\n\t\t\t\tthis._checkActiveTabbar.bind(this)\r\n\t\t\t);\r\n\t\t}, 200);\r\n\r\n\t\tconst activeElement = document.activeElement;\r\n\t\tconst activeElementTagName = activeElement && activeElement.tagName;\r\n\r\n\t\tif (activeElementTagName === 'IFRAME') {\r\n\t\t\tconst tabbar = this.getTabbarByTabId(activeElement.id);\r\n\t\t\tif (tabbar) {\r\n\t\t\t\tthis._setActiveTabbar(tabbar);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t_setActiveTabbar(tabbar) {\r\n\t\tif (this.#activeTabbar === tabbar) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.#activeTabbar = tabbar;\r\n\t\tconst isDockTabbarActive = tabbar === this.dockHeaderTabs;\r\n\t\tthis.dockHeaderTabs.classList.toggle(\r\n\t\t\tACTIVE_TABBAR_CSS_CLASS,\r\n\t\t\tisDockTabbarActive\r\n\t\t);\r\n\t\tthis.undockHeaderTabs.classList.toggle(\r\n\t\t\tACTIVE_TABBAR_CSS_CLASS,\r\n\t\t\t!isDockTabbarActive\r\n\t\t);\r\n\t}\r\n\tgetTabbarByTabId(tabId) {\r\n\t\tif (this.dockHeaderTabs.tabs.includes(tabId)) {\r\n\t\t\treturn this.dockHeaderTabs;\r\n\t\t}\r\n\r\n\t\tif (this.undockHeaderTabs.tabs.includes(tabId)) {\r\n\t\t\treturn this.undockHeaderTabs;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\tisExistAnyTabs() {\r\n\t\tconst dockHeaderTabsExist = !!this.dockHeaderTabs.tabs.length;\r\n\t\tconst undockHeaderTabsExist = !!this.undockHeaderTabs.tabs.length;\r\n\r\n\t\treturn dockHeaderTabsExist || undockHeaderTabsExist;\r\n\t}\r\n\tgetSearchGridTabs(id) {\r\n\t\treturn [\r\n\t\t\t...this.dockHeaderTabs.getSearchGridTabs(id),\r\n\t\t\t...this.undockHeaderTabs.getSearchGridTabs(id)\r\n\t\t];\r\n\t}\r\n\topenPage(url, icon, label) {\r\n\t\tif (!url) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst openedPageTabId = this.dockHeaderTabs.tabs.find(\r\n\t\t\t(tab) => tab.indexOf('page_' + url) !== -1\r\n\t\t);\r\n\r\n\t\tif (openedPageTabId) {\r\n\t\t\tthis.dockHeaderTabs.selectTab(openedPageTabId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.undockHeaderTabs.openPage(url, icon, label);\r\n\t}\r\n\topenCuiLayout(layoutConstructor, location, name, tabUiData) {\r\n\t\tif (!layoutConstructor) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst openedCuiLayoutId = this.dockHeaderTabs.tabs.find((tab) =>\r\n\t\t\ttab.includes(name)\r\n\t\t);\r\n\t\tif (openedCuiLayoutId) {\r\n\t\t\tthis.dockHeaderTabs.selectTab(openedCuiLayoutId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.undockHeaderTabs.openCuiLayout(\r\n\t\t\tlayoutConstructor,\r\n\t\t\tlocation,\r\n\t\t\tname,\r\n\t\t\ttabUiData\r\n\t\t);\r\n\t}\r\n\topenForm(formId, icon, label) {\r\n\t\tif (!formId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst formName = aras.MetadataCache.GetFormName(formId);\r\n\t\tconst openedFormTabId = this.dockHeaderTabs.tabs.find(\r\n\t\t\t(tab) => tab.indexOf('form_' + formId + formName + '_') !== -1\r\n\t\t);\r\n\r\n\t\tif (openedFormTabId) {\r\n\t\t\tthis.dockHeaderTabs.selectTab(openedFormTabId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.undockHeaderTabs.openForm(formId, icon, label);\r\n\t}\r\n\ttoggleSplitScreenMode() {\r\n\t\tconst isSplitScreenModeEnabled = this.dockHeaderTabs.tabs.length > 0;\r\n\t\tif (isSplitScreenModeEnabled) {\r\n\t\t\tthis.exitSplitscreen();\r\n\t\t} else {\r\n\t\t\tconst selectedTab = this.undockHeaderTabs.selectedTab;\r\n\t\t\tthis.dockTab(selectedTab);\r\n\t\t}\r\n\t}\r\n\texitSplitscreen() {\r\n\t\tconst selectedTab = this.#activeTabbar.selectedTab;\r\n\t\tconst dockHeaderTabs = [...this.dockHeaderTabs.tabs];\r\n\t\tdockHeaderTabs.forEach((tabId, index) => {\r\n\t\t\tthis._moveTab(tabId, this.dockHeaderTabs, this.undockHeaderTabs, index);\r\n\t\t});\r\n\t\tthis.updateTabbar(selectedTab, this.undockHeaderTabs);\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nfunction updateTabs(setState, type) {\r\n\treturn (newTabs) => {\r\n\t\tsetState((state) => {\r\n\t\t\tstate.splitScreen[type] = [...newTabs];\r\n\t\t});\r\n\t};\r\n}\r\n\r\nexport default (setState) => {\r\n\treturn {\r\n\t\tupdateDockedTabs: updateTabs(setState, 'dockTabs'),\r\n\t\tupdateUndockedTabs: updateTabs(setState, 'mainTabs'),\r\n\t\tnavigationPanel: {\r\n\t\t\tupdateVisibility: (newState) => {\r\n\t\t\t\tsetState((state) => {\r\n\t\t\t\t\tstate.navigationPanel.isVisible = newState;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { bind } from 'hyperhtml';\r\nimport {\r\n\tcontentTabId,\r\n\tgetSidebarData,\r\n\tupdateLockedStatus,\r\n\tgetFavoriteItemTypes\r\n} from '../NavigationPanel/sidebarDataConverter';\r\nimport HeaderTabsContainer from './HeaderTabsContainer';\r\nimport {\r\n\tcuiBackgroundPage,\r\n\tcuiContextMenu,\r\n\tCuiLayout,\r\n\tcuiMethods,\r\n\tcuiToc,\r\n\tcuiToolbar\r\n} from 'cui';\r\nimport ContextMenu from '../components/contextMenu';\r\nimport mainWindowActions from './MainWindowCuiActions';\r\nimport { itemType as itemTypeMetadata } from 'metadata';\r\nimport { favorites } from 'store';\r\n\r\nconst tocContextMenuLocation = 'PopupMenuMainWindowTOC';\r\n\r\nexport default class MainWindowCuiLayout extends CuiLayout {\r\n\t_initBackgroundPromise = null;\r\n\t_initTocPromise = null;\r\n\tbackgroundPage = document.getElementById('backgroundPage');\r\n\tdeferredLocations = ['PopupMenuSecondaryMenu'];\r\n\tnavigationPanel = document.getElementById('navigationPanel');\r\n\ttabsContainer = null;\r\n\tactions = mainWindowActions(this.setState.bind(this));\r\n\tinitialState = {\r\n\t\tsplitScreen: {\r\n\t\t\tdockTabs: [],\r\n\t\t\tmainTabs: []\r\n\t\t},\r\n\t\tnavigationPanel: {\r\n\t\t\tisVisible: false\r\n\t\t}\r\n\t};\r\n\r\n\tasync init() {\r\n\t\tconst waitForInit = super.init();\r\n\t\tthis.tabsContainer = new HeaderTabsContainer(\r\n\t\t\tdocument.getElementById('dock-tab'),\r\n\t\t\tdocument.getElementById('main-tab'),\r\n\t\t\t{\r\n\t\t\t\tactions: this.actions\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tsessionStorage.setItem('defaultDState', 'defaultDState');\r\n\r\n\t\tconst commandFactory = cuiMethods.getLayoutCommandFactory(this.options);\r\n\t\tthis.options.commandFactory = commandFactory;\r\n\t\tconst initHeader = this._initializeHeader();\r\n\t\tconst initBackgroundPage = this._initializeBackgroundPage();\r\n\t\tconst initToc = this._initializeToc();\r\n\t\tconst initContextMenu = this._initializeContextMenu(tocContextMenuLocation);\r\n\t\tconst initHeaderTabsContextMenu = this._initializeHeaderTabsContextMenu();\r\n\t\tconst headerControl = await initHeader;\r\n\t\tthis._registerHeaderHandlers(headerControl);\r\n\r\n\t\tawait initToc;\r\n\t\twindow.selectStartPage();\r\n\t\tthis._registerTocHandlers();\r\n\r\n\t\tconst contextMenu = await initContextMenu;\r\n\t\tthis._registerNavPanelHandlers(contextMenu);\r\n\t\tthis._setupNavPanel();\r\n\r\n\t\tthis._registerSidebarHandlers();\r\n\t\tawait this._initializeSidebar();\r\n\r\n\t\tconst headerTabsContextMenu = await initHeaderTabsContextMenu;\r\n\t\tthis._registerHeaderTabsContextMenuHandlers(headerTabsContextMenu);\r\n\r\n\t\tawait initBackgroundPage;\r\n\t\tthis._registerBackgroundPageHandlers();\r\n\t\tawait waitForInit;\r\n\t}\r\n\r\n\tasync _getCuiControls() {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tcontrol_type: 'ShortcutsControl',\r\n\t\t\t\t'location@keyed_name': 'MainView.Shortcuts',\r\n\t\t\t\tname: 'MainView.Shortcuts'\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\tupdateLayout(oldProps, oldState) {\r\n\t\tthis.navigationPanel.setState({ favorites: this.props.favorites });\r\n\t\tthis.renderHeader(oldState);\r\n\t\tthis._updateBackgroundPage(oldState);\r\n\t\tthis.#updateSideBar();\r\n\t}\r\n\r\n\t#updateSideBar() {\r\n\t\tconst tabs = this.navigationPanel.tabs;\r\n\t\tconst navData = this.navigationPanel.nav.data;\r\n\t\tconst favoriteItemTypes = getFavoriteItemTypes(this.props.favorites);\r\n\t\tconst sidebarData = getSidebarData(favoriteItemTypes, navData);\r\n\t\ttabs.setState({ favorites: sidebarData });\r\n\t}\r\n\r\n\trenderHeader(oldState) {\r\n\t\tif (oldState.splitScreen !== this.state.splitScreen) {\r\n\t\t\tconst oldSplitScreen = oldState.splitScreen;\r\n\t\t\tconst newSplitScreen = this.state.splitScreen;\r\n\t\t\tif (\r\n\t\t\t\toldSplitScreen.dockTabs.length + newSplitScreen.dockTabs.length === 1 ||\r\n\t\t\t\toldSplitScreen.mainTabs.length + newSplitScreen.mainTabs.length === 1\r\n\t\t\t) {\r\n\t\t\t\tthis.observer.notify('SplitScreen');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (oldState.navigationPanel !== this.state.navigationPanel) {\r\n\t\t\tthis.observer.notify('NavigationPanelVisibility');\r\n\t\t}\r\n\t}\r\n\r\n\tasync updateCuiLayoutOnItemChange(itemTypeName) {\r\n\t\tconst itemType = await itemTypeMetadata.getItemType(\r\n\t\t\t'CuiDependency',\r\n\t\t\t'name'\r\n\t\t);\r\n\t\tconst morphaes = itemType['Morphae'] ?? [];\r\n\t\tconst needToCuiUpgrade = morphaes.some((morphae) => {\r\n\t\t\tconst morphaeName = morphae['related_id@aras.name'];\r\n\t\t\treturn morphaeName === itemTypeName;\r\n\t\t});\r\n\t\tif (needToCuiUpgrade) {\r\n\t\t\tthis.observer.notify('reInitByCUIDependencies');\r\n\t\t}\r\n\t}\r\n\r\n\tmapStateToProps({ favorites }) {\r\n\t\tconst filteredFavorites = Object.values(favorites).reduce(\r\n\t\t\t(acum, favoriteItem) => {\r\n\t\t\t\tconst { category, quickAccessFlag } = favoriteItem;\r\n\t\t\t\tif (\r\n\t\t\t\t\t['ItemType', 'Item'].includes(category) ||\r\n\t\t\t\t\t(category === 'Search' && quickAccessFlag === '1')\r\n\t\t\t\t) {\r\n\t\t\t\t\tacum[favoriteItem.id] = favoriteItem;\r\n\t\t\t\t}\r\n\t\t\t\treturn acum;\r\n\t\t\t},\r\n\t\t\t{}\r\n\t\t);\r\n\t\treturn { favorites: filteredFavorites };\r\n\t}\r\n\r\n\tasync _initializeBackgroundPage(options = {}) {\r\n\t\tif (this._initBackgroundPromise) {\r\n\t\t\treturn this._initBackgroundPromise;\r\n\t\t}\r\n\r\n\t\tthis._initBackgroundPromise = cuiBackgroundPage(\r\n\t\t\tthis.backgroundPage,\r\n\t\t\t'BackgroundPage',\r\n\t\t\t{ ...this.options, ...options }\r\n\t\t);\r\n\t\tawait this._initBackgroundPromise;\r\n\t\tthis._initBackgroundPromise = null;\r\n\t}\r\n\r\n\t_initializeContextMenu(location) {\r\n\t\treturn cuiContextMenu(this.navigationPanel.popupMenu, location, {\r\n\t\t\t...this.options\r\n\t\t});\r\n\t}\r\n\r\n\t_initializeHeaderTabsContextMenu() {\r\n\t\treturn cuiContextMenu(new ContextMenu(), 'HeaderTabsContextMenu', {\r\n\t\t\t...this.options,\r\n\t\t\ttabs: []\r\n\t\t});\r\n\t}\r\n\r\n\t_registerHeaderTabsContextMenuHandlers(contextMenu) {\r\n\t\tthis.tabsContainer.attachContextMenu(contextMenu);\r\n\t}\r\n\r\n\tasync _initializeHeader() {\r\n\t\tconst toolbarComponent = document.getElementById('headerCommandsBar');\r\n\t\tawait cuiToolbar(toolbarComponent, 'MainWindowHeader', this.options);\r\n\t\ttoolbarComponent.firstChild.classList.add('aras-header');\r\n\r\n\t\tthis.options.toggleSplitScreenMode = () =>\r\n\t\t\tthis.tabsContainer.toggleSplitScreenMode();\r\n\r\n\t\treturn toolbarComponent;\r\n\t}\r\n\r\n\t_initializeSidebar() {\r\n\t\tthis.#updateSideBar();\r\n\t\tconst tabs = this.navigationPanel.tabs;\r\n\t\treturn tabs.selectTab(contentTabId);\r\n\t}\r\n\r\n\tasync _initializeToc() {\r\n\t\tif (this._initTocPromise) {\r\n\t\t\treturn this._initTocPromise;\r\n\t\t}\r\n\r\n\t\tconst nav = this.navigationPanel.nav;\r\n\t\tthis._initTocPromise = cuiToc(nav, 'TOC', this.options);\r\n\r\n\t\tawait this._initTocPromise;\r\n\t\tthis._initTocPromise = null;\r\n\r\n\t\treturn this._initTocPromise;\r\n\t}\r\n\r\n\t_setupNavPanel() {\r\n\t\tconst isTocPinned =\r\n\t\t\taras.getPreferenceItemProperty(\r\n\t\t\t\t'Core_GlobalLayout',\r\n\t\t\t\tnull,\r\n\t\t\t\t'core_toc_pinned'\r\n\t\t\t) === '1';\r\n\r\n\t\tif (isTocPinned) {\r\n\t\t\tthis.navigationPanel.togglePin(true);\r\n\t\t\tthis.navigationPanel.toggleVisibility(true);\r\n\t\t}\r\n\t}\r\n\r\n\t_registerBackgroundPageHandlers() {\r\n\t\tthis.observer.subscribe(async (event) => {\r\n\t\t\tif (event !== 'UpdateTOC') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tawait this._initializeBackgroundPage();\r\n\t\t\tthis._toggleBackgroundPage(this.state.splitScreen);\r\n\t\t});\r\n\t}\r\n\r\n\t_registerNavPanelHandlers(contextMenu) {\r\n\t\tlet activeLocation = tocContextMenuLocation;\r\n\t\tconst contextMenus = {\r\n\t\t\t[activeLocation]: contextMenu\r\n\t\t};\r\n\t\tthis.navigationPanel.addEventListener(\r\n\t\t\t'navigationPanelContextMenu',\r\n\t\t\tasync (event) => {\r\n\t\t\t\tconst { x, y, location, itemTypeName, itemTypeId, ...detail } =\r\n\t\t\t\t\tevent.detail;\r\n\t\t\t\tconst criteria = itemTypeId\r\n\t\t\t\t\t? [itemTypeId, 'id']\r\n\t\t\t\t\t: [itemTypeName, 'name'];\r\n\t\t\t\tconst itemTypePromise = itemTypeMetadata.getItemType(...criteria);\r\n\r\n\t\t\t\tif (activeLocation !== location) {\r\n\t\t\t\t\tactiveLocation = location;\r\n\t\t\t\t\tcontextMenus[location] = await this._initializeContextMenu(location);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst itemType = await itemTypePromise;\r\n\t\t\t\tconst options = {\r\n\t\t\t\t\t...detail,\r\n\t\t\t\t\tfavorites,\r\n\t\t\t\t\titemType,\r\n\t\t\t\t\titemTypeName: itemType?.name\r\n\t\t\t\t};\r\n\t\t\t\tcontextMenus[location].show({ x, y }, options);\r\n\t\t\t}\r\n\t\t);\r\n\t\tthis.navigationPanel.addEventListener('sidebarPin', (event) => {\r\n\t\t\tconst { state } = event.detail;\r\n\t\t\taras.setPreferenceItemProperties('Core_GlobalLayout', null, {\r\n\t\t\t\tcore_toc_pinned: Number(state)\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.navigationPanel.addEventListener('sidebarClose', () => {\r\n\t\t\tthis.actions.navigationPanel.updateVisibility(false);\r\n\t\t});\r\n\t\tthis.navigationPanel.addEventListener('sidebarShow', () => {\r\n\t\t\tthis.actions.navigationPanel.updateVisibility(true);\r\n\t\t});\r\n\t}\r\n\r\n\t_registerHeaderHandlers(headerControl) {\r\n\t\tthis.observer.subscribe((event) => {\r\n\t\t\tswitch (event) {\r\n\t\t\t\tcase 'reInitByCUIDependencies':\r\n\t\t\t\t\tthis._initializeHeader();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'UpdateNotifications':\r\n\t\t\t\tcase 'UpdatePreferences':\r\n\t\t\t\tcase 'SplitScreen':\r\n\t\t\t\tcase 'NavigationPanelVisibility':\r\n\t\t\t\t\tcuiMethods.reinitControlItems(headerControl, event, this.options);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t\taras.registerEventHandler('PreferenceValueChanged', window, () => {\r\n\t\t\tthis.observer.notify('UpdatePreferences');\r\n\t\t});\r\n\t}\r\n\r\n\t_registerSidebarHandlers() {\r\n\t\tthis.observer.subscribe(async (event) => {\r\n\t\t\tif (event !== 'UpdateTOC') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tawait this._initializeToc();\r\n\t\t\tconst nav = this.navigationPanel.nav;\r\n\t\t\tconst tabs = this.navigationPanel.tabs;\r\n\t\t\tupdateLockedStatus(tabs.data, nav.data);\r\n\t\t\ttabs.render();\r\n\t\t});\r\n\t}\r\n\r\n\t_registerTocHandlers() {\r\n\t\tthis.observer.subscribe(async (event) => {\r\n\t\t\tif (event !== 'UpdateTOC') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\taras.MetadataCache.DeleteConfigurableUiDatesFromCache();\r\n\t\t\tawait this._initializeToc();\r\n\t\t\tthis.navigationPanel.resetState();\r\n\t\t});\r\n\t}\r\n\r\n\tasync _toggleBackgroundPage({ dockTabs, mainTabs }) {\r\n\t\tconst hidden = dockTabs.length > 0 || mainTabs.length > 0;\r\n\t\tif (hidden) {\r\n\t\t\tawait this._initBackgroundPromise;\r\n\t\t\tbind(this.backgroundPage)``;\r\n\t\t} else {\r\n\t\t\tawait this._initializeBackgroundPage({ renderOnly: true });\r\n\t\t}\r\n\t}\r\n\r\n\t_updateBackgroundPage(oldState) {\r\n\t\tconst splitScreenState = this.state.splitScreen;\r\n\t\tif (splitScreenState === oldState.splitScreen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._toggleBackgroundPage(splitScreenState);\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport Nav from './nav';\r\nimport SvgManager from '../../core/SvgManager';\r\n\r\nconst icons = {\r\n\topen: '../images/OpenInTab.svg',\r\n\tadd: '../images/New.svg',\r\n\tedit: '../images/Edit.svg',\r\n\tdelete: '../images/Delete.svg'\r\n};\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nconst dashboardProperties = ['startPage', 'formId', 'itemId'];\r\nconst isDashboard = (item) => {\r\n\tconst {\r\n\t\tadditional_data: additionalData,\r\n\t\t'command_alias@aras.id': alias,\r\n\t\t'on_click_handler@aras.id': handler\r\n\t} = item;\r\n\tif (alias || handler) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif (!additionalData) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn (\r\n\t\tdashboardProperties.some((property) => additionalData[property]) ||\r\n\t\t!additionalData.itemTypeId\r\n\t);\r\n};\r\nconst decorateTemplateForDelatedItem = (originFunction) => {\r\n\treturn (item) => {\r\n\t\tconst originalTemplate = originFunction(item);\r\n\r\n\t\tif (item.value['@aras.action'] === 'delete') {\r\n\t\t\toriginalTemplate.props.draggable = false;\r\n\t\t}\r\n\r\n\t\treturn originalTemplate;\r\n\t};\r\n};\r\n\r\nclass NavEditor extends Nav {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.modifier = 'editor';\r\n\r\n\t\tconst { childNode, parentNode } = this.templates;\r\n\t\tthis.templates.childNode = decorateTemplateForDelatedItem(childNode);\r\n\t\tthis.templates.parentNode = decorateTemplateForDelatedItem(parentNode);\r\n\t}\r\n\r\n\tformatter(item) {\r\n\t\tconst result = [];\r\n\t\tconst {\r\n\t\t\tchildren,\r\n\t\t\t'@aras.action': action,\r\n\t\t\trelated_id: relatedId\r\n\t\t} = item.value;\r\n\t\tconst relatedItem = this.data.get(relatedId);\r\n\t\tconst { image, name, label, '@aras.action': relatedAction } = relatedItem;\r\n\t\tconst status = action || relatedAction;\r\n\r\n\t\tif (status) {\r\n\t\t\tif (status === 'delete') {\r\n\t\t\t\tresult.push(
    );\r\n\t\t\t}\r\n\r\n\t\t\tconst statusIndicatorClass = 'aras-nav__status-indicator';\r\n\t\t\tconst icon = SvgManager.createInfernoVNode(icons[status], {\r\n\t\t\t\tcssClass: `${statusIndicatorClass}-icon`\r\n\t\t\t});\r\n\t\t\tconst statusClass = `${statusIndicatorClass} ${statusIndicatorClass}_${status}`;\r\n\t\t\tresult.push(
    {icon}
    );\r\n\t\t}\r\n\r\n\t\tif (!children) {\r\n\t\t\tresult.push();\r\n\t\t}\r\n\r\n\t\tif (image) {\r\n\t\t\tconst iconNode = SvgManager.createInfernoVNode(image, {\r\n\t\t\t\tcssClass: `aras-nav__row__icon`\r\n\t\t\t});\r\n\t\t\tresult.push(iconNode);\r\n\t\t}\r\n\r\n\t\tconst labelNode = {label || name};\r\n\t\tresult.push(labelNode);\r\n\r\n\t\tconst isDashboardItem = isDashboard(relatedItem);\r\n\t\tif (!children && isDashboardItem) {\r\n\t\t\tresult.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{SvgManager.createInfernoVNode(icons.open)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nconst name = 'aras-nav-editor';\r\nif (!customElements.get(name)) {\r\n\tNavEditor.define(name);\r\n}\r\n\r\nexport default NavEditor;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nconst sortBySortOrder = (dataMap, children) => {\r\n\tchildren.forEach((id) => {\r\n\t\tconst { children } = dataMap.get(id);\r\n\t\tif (children?.length) {\r\n\t\t\tsortBySortOrder(dataMap, children);\r\n\t\t}\r\n\t});\r\n\r\n\tchildren.sort((firstKey, secondKey) => {\r\n\t\tconst firstItem = dataMap.get(firstKey);\r\n\t\tconst secondItem = dataMap.get(secondKey);\r\n\r\n\t\treturn firstItem.sort_order - secondItem.sort_order;\r\n\t});\r\n};\r\n\r\nconst createNavDataStore = (data) => {\r\n\tconst roots = new Set();\r\n\tconst dataMap = new Map();\r\n\tconst tocItems = [];\r\n\tconst levels = {};\r\n\r\n\tdata.forEach((item, id) => {\r\n\t\tif (item['@odata.type'] !== '#CommandBarSectionItem') {\r\n\t\t\tdataMap.set(id, item);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst { related_id: relatedId } = item;\r\n\t\tconst relatedItem = data.get(relatedId);\r\n\t\tconst { 'parent_menu@aras.id': parentId } = relatedItem;\r\n\r\n\t\tif (parentId) {\r\n\t\t\tconst level = (levels[parentId] ||= []);\r\n\t\t\tlevel.push(id);\r\n\t\t} else {\r\n\t\t\troots.add(id);\r\n\t\t}\r\n\r\n\t\tconst tocItem = {\r\n\t\t\t...item\r\n\t\t};\r\n\t\tif (relatedItem['@odata.type'] === '#CommandBarMenu') {\r\n\t\t\ttocItem.children = [];\r\n\t\t}\r\n\r\n\t\ttocItems.push(tocItem);\r\n\t\tdataMap.set(id, tocItem);\r\n\t});\r\n\r\n\tObject.entries(levels).forEach(([parentId, children]) => {\r\n\t\ttocItems\r\n\t\t\t.filter(({ related_id: relatedId }) => {\r\n\t\t\t\treturn relatedId === parentId;\r\n\t\t\t})\r\n\t\t\t.forEach((item) => {\r\n\t\t\t\titem.children = children;\r\n\t\t\t});\r\n\t});\r\n\r\n\treturn { roots, dataMap };\r\n};\r\n\r\nexport default (nav, data) => {\r\n\tconst dataStore = createNavDataStore(data);\r\n\tconst { dataMap, roots } = dataStore;\r\n\tconst rootsArr = [...roots];\r\n\tsortBySortOrder(dataMap, rootsArr);\r\n\tnav.dataStore.items = dataMap;\r\n\tnav.dataStore.roots = new Set(rootsArr);\r\n\treturn nav.render();\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { itemType } from 'metadata';\r\n\r\nconst tocMenuPrefix = 'com.aras.innovator.cui_default.toc';\r\nconst tocCommandBarSectionId = '0AEAF671F8E548C494CCEC8E13F99562';\r\nconst sortOrderStep = 128;\r\nconst sortOrderForDeleted = Infinity;\r\nconst getItemWithChanges = (itemId, state) => {\r\n\tconst { tocData, changes } = state;\r\n\tconst item = tocData.get(itemId);\r\n\tconst itemChanges = changes[itemId];\r\n\treturn { ...item, ...itemChanges };\r\n};\r\nconst getChildrenWithChanges = (state, parentId) => {\r\n\tconst { tocData, changes } = state;\r\n\tconst newData = new Map([...tocData]);\r\n\tfor (const [id, change] of Object.entries(changes)) {\r\n\t\tconst oldItem = tocData.get(id);\r\n\t\tif (!oldItem) {\r\n\t\t\tnewData.set(id, change);\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tnewData.set(id, { ...oldItem, ...change });\r\n\t}\r\n\r\n\tconst children = [];\r\n\tnewData.forEach((relshipItem) => {\r\n\t\tif (\r\n\t\t\trelshipItem['@odata.type'] !== '#CommandBarSectionItem' ||\r\n\t\t\trelshipItem['@aras.action'] === 'delete'\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst relatedId = relshipItem.related_id;\r\n\t\tconst relatedItem = newData.get(relatedId);\r\n\t\tconst isChild = relatedItem['parent_menu@aras.id'] === parentId;\r\n\t\tif (!isChild) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst changedRelship = newData.get(relshipItem.id);\r\n\t\tchildren.push(changedRelship);\r\n\t});\r\n\r\n\tchildren.sort(\r\n\t\t(firstItem, secondItem) => firstItem.sort_order - secondItem.sort_order\r\n\t);\r\n\r\n\treturn children;\r\n};\r\n\r\nconst addItemChanges = (id, itemChanges, state) => {\r\n\tconst existingChange = state.changes[id];\r\n\tif (existingChange) {\r\n\t\tstate.changes[id] = {\r\n\t\t\t...existingChange,\r\n\t\t\t...itemChanges\r\n\t\t};\r\n\t} else {\r\n\t\tstate.changes[id] = {\r\n\t\t\t'@aras.action': 'edit',\r\n\t\t\t...itemChanges\r\n\t\t};\r\n\t}\r\n\r\n\tconst currentItemChanges = state.changes[id];\r\n\tif (currentItemChanges['@aras.action'] !== 'edit') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst originalItem = state.tocData.get(id);\r\n\tconst changes = Object.entries(currentItemChanges);\r\n\tconst wasItemResetToInitialState = !changes.some(\r\n\t\t([propName, changedValue]) => {\r\n\t\t\tif (\r\n\t\t\t\tpropName === '@aras.action' ||\r\n\t\t\t\toriginalItem[propName] === changedValue\r\n\t\t\t) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\t);\r\n\r\n\tif (wasItemResetToInitialState) {\r\n\t\tdelete state.changes[id];\r\n\t}\r\n};\r\n\r\nconst createRelatedItem = (props) => {\r\n\tconst commandBarId = aras.generateNewGUID();\r\n\tconst commandBarName = [tocMenuPrefix];\r\n\tconst itemTypeId = props.additional_data?.itemTypeId;\r\n\tif (itemTypeId) {\r\n\t\tconst itemTypeName = itemTypeId ? itemType.getItemTypeName(itemTypeId) : '';\r\n\t\tcommandBarName.push(itemTypeName);\r\n\t}\r\n\tcommandBarName.push(commandBarId);\r\n\r\n\tconst relatedItem = {\r\n\t\t'@aras.action': 'add',\r\n\t\tid: commandBarId,\r\n\t\tname: commandBarName.join('_'),\r\n\t\t...props\r\n\t};\r\n\r\n\treturn relatedItem;\r\n};\r\n\r\nconst setSelectedItem = (value, state) => {\r\n\tconst { prevToSelectedId, nextToSelectedId } = getSelectedButtonNeighbours(\r\n\t\tvalue,\r\n\t\tstate\r\n\t);\r\n\tstate.prevToSelectedId = prevToSelectedId;\r\n\tstate.nextToSelectedId = nextToSelectedId;\r\n\tstate.selectedId = value;\r\n};\r\n\r\nconst getSelectedButtonNeighbours = (selectedId, state) => {\r\n\tif (!selectedId) {\r\n\t\treturn { prevToSelectedId: '', nextToSelectedId: '' };\r\n\t}\r\n\r\n\tconst selectedRelationshipItem = getItemWithChanges(selectedId, state);\r\n\tconst selectedRelatedItem = getItemWithChanges(\r\n\t\tselectedRelationshipItem.related_id,\r\n\t\tstate\r\n\t);\r\n\tconst currentItemFolderId = selectedRelatedItem['parent_menu@aras.id'];\r\n\tconst allItemsOnCurrentlevel = getChildrenWithChanges(\r\n\t\tstate,\r\n\t\tcurrentItemFolderId\r\n\t);\r\n\tconst indexOfCurrentElementInFolder = allItemsOnCurrentlevel.findIndex(\r\n\t\t(item) => item.id === selectedRelationshipItem.id\r\n\t);\r\n\tconst prevToSelectedId =\r\n\t\tallItemsOnCurrentlevel[indexOfCurrentElementInFolder - 1]?.id ?? '';\r\n\tconst nextToSelectedId =\r\n\t\tallItemsOnCurrentlevel[indexOfCurrentElementInFolder + 1]?.id ?? '';\r\n\r\n\treturn { prevToSelectedId, nextToSelectedId };\r\n};\r\n\r\nconst convertButtonToType = (relshipItem, type, state) => {\r\n\tconst relatedId = relshipItem['related_id'];\r\n\tconst relatedItem = getItemWithChanges(relatedId, state);\r\n\tconst relatedChanges = {\r\n\t\t'@aras.action': 'delete'\r\n\t};\r\n\taddItemChanges(relatedId, relatedChanges, state);\r\n\r\n\tconst relatedItemCopy = {\r\n\t\t...relatedItem,\r\n\t\t'@odata.type': type,\r\n\t\t'@aras.action': 'add'\r\n\t};\r\n\tconst propsToClear = ['id', 'name'];\r\n\r\n\tif (type === '#CommandBarButton') {\r\n\t\tpropsToClear.push('parent_menu@aras.id');\r\n\t\tpropsToClear.push('parent_menu@aras.keyed_name');\r\n\t}\r\n\r\n\tpropsToClear.forEach((prop) => delete relatedItemCopy[prop]);\r\n\r\n\tconst newRelatedItem = createRelatedItem(relatedItemCopy);\r\n\taddItemChanges(newRelatedItem.id, newRelatedItem, state);\r\n\r\n\taddItemChanges(relshipItem.id, { related_id: newRelatedItem.id }, state);\r\n};\r\n\r\nconst normalizeSortOrders = (treeLevelItems, state) => {\r\n\ttreeLevelItems.forEach((item, index) => {\r\n\t\tconst { id } = item;\r\n\t\tconst newSortOrder = (index + 1) * sortOrderStep;\r\n\r\n\t\taddItemChanges(id, { sort_order: newSortOrder }, state);\r\n\t});\r\n};\r\n\r\nconst getRelatedItemTypeName = (state) => {\r\n\tconst selectedId = state.selectedId;\r\n\tif (!selectedId) {\r\n\t\treturn '#CommandBarButton';\r\n\t}\r\n\r\n\tconst selectedRelationshipItem = getItemWithChanges(selectedId, state);\r\n\tconst selectedRelatedId = selectedRelationshipItem.related_id;\r\n\tconst selectedRelatedItem = getItemWithChanges(selectedRelatedId, state);\r\n\tconst isRootButtonSelected =\r\n\t\tselectedRelatedItem['@odata.type'] === '#CommandBarButton';\r\n\tconst itemTypeName = isRootButtonSelected\r\n\t\t? '#CommandBarButton'\r\n\t\t: '#CommandBarMenuButton';\r\n\r\n\treturn itemTypeName;\r\n};\r\n\r\nexport default (setState) => {\r\n\treturn {\r\n\t\teditItem: (id, itemChanges) => {\r\n\t\t\tsetState((state) => addItemChanges(id, itemChanges, state));\r\n\t\t},\r\n\t\tdeleteItem: (id) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst deletedItem = getItemWithChanges(id, state);\r\n\t\t\t\tconst isNewItem = deletedItem['@aras.action'] === 'add';\r\n\t\t\t\tconst relatedId = deletedItem.related_id;\r\n\t\t\t\tconst relatedItem = getItemWithChanges(relatedId, state);\r\n\r\n\t\t\t\tconst deletedParentId = relatedItem['parent_menu@aras.id'];\r\n\t\t\t\tconst indexOfDeletedItem = getChildrenWithChanges(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tdeletedParentId\r\n\t\t\t\t).findIndex((item) => item.id === id);\r\n\r\n\t\t\t\tif (isNewItem) {\r\n\t\t\t\t\tdelete state.changes[id];\r\n\t\t\t\t\tdelete state.changes[relatedId];\r\n\t\t\t\t\tsetSelectedItem('', state);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst relshipChanges = {\r\n\t\t\t\t\t\t'@aras.action': 'delete',\r\n\t\t\t\t\t\tsort_order: sortOrderForDeleted\r\n\t\t\t\t\t};\r\n\t\t\t\t\taddItemChanges(id, relshipChanges, state);\r\n\r\n\t\t\t\t\tconst relatedChanges = {\r\n\t\t\t\t\t\t'@aras.action': 'delete'\r\n\t\t\t\t\t};\r\n\t\t\t\t\taddItemChanges(relatedId, relatedChanges, state);\r\n\t\t\t\t}\r\n\t\t\t\tconst childrenOfParent = getChildrenWithChanges(state, deletedParentId);\r\n\t\t\t\tconst isFolderDeleted =\r\n\t\t\t\t\trelatedItem['@odata.type'] === '#CommandBarMenu';\r\n\t\t\t\tif (isFolderDeleted) {\r\n\t\t\t\t\tconst childrenOfDeletedFolder = getChildrenWithChanges(\r\n\t\t\t\t\t\tstate,\r\n\t\t\t\t\t\trelatedId\r\n\t\t\t\t\t);\r\n\t\t\t\t\tchildrenOfParent.splice(\r\n\t\t\t\t\t\tindexOfDeletedItem,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t...childrenOfDeletedFolder\r\n\t\t\t\t\t);\r\n\t\t\t\t\tnormalizeSortOrders(childrenOfParent, state);\r\n\r\n\t\t\t\t\tchildrenOfDeletedFolder.forEach((relship) => {\r\n\t\t\t\t\t\tconst relatedId = relship['related_id'];\r\n\t\t\t\t\t\tconst moveToRoot = !deletedParentId;\r\n\t\t\t\t\t\tif (moveToRoot) {\r\n\t\t\t\t\t\t\tconst relatedItem = getItemWithChanges(relatedId, state);\r\n\t\t\t\t\t\t\tconst convertToButton =\r\n\t\t\t\t\t\t\t\trelatedItem['@odata.type'] !== '#CommandBarMenu';\r\n\t\t\t\t\t\t\tif (convertToButton) {\r\n\t\t\t\t\t\t\t\tconvertButtonToType(relship, '#CommandBarButton', state);\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst relatedChanges = {\r\n\t\t\t\t\t\t\t'parent_menu@aras.id': deletedParentId\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\taddItemChanges(relatedId, relatedChanges, state);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildrenOfParent.forEach((child) => {\r\n\t\t\t\t\t\tconst { id, sort_order: sortOrder } = child;\r\n\t\t\t\t\t\tif (sortOrder > deletedItem['sort_order']) {\r\n\t\t\t\t\t\t\tconst change = { sort_order: sortOrder - sortOrderStep };\r\n\t\t\t\t\t\t\taddItemChanges(id, change, state);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tdiscardChanges: () => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tstate.changes = {};\r\n\t\t\t\tstate.selectedSortingType = state.sortingType;\r\n\t\t\t\tsetSelectedItem('', state);\r\n\t\t\t});\r\n\t\t},\r\n\t\taddRelationshipItem: (props) => {\r\n\t\t\tconst relationshipItem = {\r\n\t\t\t\taction: 'Add',\r\n\t\t\t\t'@aras.action': 'add',\r\n\t\t\t\t'@odata.type': '#CommandBarSectionItem',\r\n\t\t\t\tid: aras.generateNewGUID(),\r\n\t\t\t\tsource_id: tocCommandBarSectionId,\r\n\t\t\t\t...props\r\n\t\t\t};\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst { id, related_id: relatedId } = relationshipItem;\r\n\t\t\t\tstate.changes[id] = relationshipItem;\r\n\t\t\t\tconst { selectedId } = state;\r\n\t\t\t\tif (!selectedId) {\r\n\t\t\t\t\tconst roots = getChildrenWithChanges(state);\r\n\t\t\t\t\trelationshipItem.sort_order = roots.length * sortOrderStep;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst relatedItem = state.changes[relatedId];\r\n\t\t\t\tconst selectedRelationshipItem = getItemWithChanges(selectedId, state);\r\n\t\t\t\tconst { related_id: selectedRelatedId } = selectedRelationshipItem;\r\n\t\t\t\tconst selectedRelatedItem = getItemWithChanges(\r\n\t\t\t\t\tselectedRelatedId,\r\n\t\t\t\t\tstate\r\n\t\t\t\t);\r\n\t\t\t\tif (selectedRelatedItem['@odata.type'] === '#CommandBarMenu') {\r\n\t\t\t\t\tconst { id: parentId } = selectedRelatedItem;\r\n\t\t\t\t\trelatedItem['parent_menu@aras.id'] = parentId;\r\n\t\t\t\t\tconst children = getChildrenWithChanges(state, parentId);\r\n\t\t\t\t\trelationshipItem.sort_order = children.length * sortOrderStep;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst parentId = selectedRelatedItem['parent_menu@aras.id'];\r\n\t\t\t\t\tconst children = getChildrenWithChanges(state, parentId);\r\n\r\n\t\t\t\t\tif (selectedRelationshipItem['@aras.action'] === 'delete') {\r\n\t\t\t\t\t\trelationshipItem.sort_order = (children.length + 1) * sortOrderStep;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst { sort_order: selectedSortOrder } = selectedRelationshipItem;\r\n\t\t\t\t\t\trelationshipItem.sort_order = selectedSortOrder + sortOrderStep;\r\n\t\t\t\t\t\tchildren.forEach((relship) => {\r\n\t\t\t\t\t\t\tconst { id, sort_order: sortOrder } = relship;\r\n\t\t\t\t\t\t\tif (sortOrder > selectedSortOrder) {\r\n\t\t\t\t\t\t\t\tconst change = { sort_order: sortOrder + sortOrderStep };\r\n\t\t\t\t\t\t\t\taddItemChanges(id, change, state);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\trelatedItem['parent_menu@aras.id'] = parentId;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn relationshipItem;\r\n\t\t},\r\n\t\taddRelatedItem: (props) => {\r\n\t\t\tconst relatedItem = createRelatedItem(props);\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst type = relatedItem['@odata.type'];\r\n\t\t\t\trelatedItem['@odata.type'] = type ?? getRelatedItemTypeName(state);\r\n\t\t\t\tstate.changes[relatedItem.id] = relatedItem;\r\n\t\t\t});\r\n\r\n\t\t\treturn relatedItem;\r\n\t\t},\r\n\t\tselectItem: (id) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tsetSelectedItem(id, state);\r\n\t\t\t});\r\n\t\t},\r\n\t\tsetViewAs: (props) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst prevTocData =\r\n\t\t\t\t\tstate.viewAs === null ? state.tocData : state.viewAs.prevTocData;\r\n\t\t\t\tconst prevLanguages = state.viewAs?.prevLanguages ?? state.languages;\r\n\r\n\t\t\t\tstate.languages = prevLanguages.filter(\r\n\t\t\t\t\t(language) => language.code === state.defaultLanguageCode\r\n\t\t\t\t);\r\n\t\t\t\tstate.viewAs = {\r\n\t\t\t\t\t...state.viewAs,\r\n\t\t\t\t\t...props,\r\n\t\t\t\t\tprevTocData,\r\n\t\t\t\t\tprevLanguages\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t},\r\n\t\tresetViewAs: () => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tif (state.viewAs !== null) {\r\n\t\t\t\t\tstate.tocData = state.viewAs.prevTocData;\r\n\t\t\t\t\tstate.languages = state.viewAs.prevLanguages;\r\n\t\t\t\t\tstate.viewAs = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tsetSelectedSortingType: (selectedSortingType) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tstate.selectedSortingType = selectedSortingType;\r\n\t\t\t});\r\n\t\t},\r\n\t\tsetSortingType: (sortingType) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tstate.sortingType = sortingType;\r\n\t\t\t});\r\n\t\t},\r\n\t\tsetSortingTypesList: (sortingTypesList) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tstate.sortingTypesList = sortingTypesList;\r\n\t\t\t});\r\n\t\t},\r\n\t\tswapItemSortOrders: (firstItemId, secondItemId) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst item = getItemWithChanges(firstItemId, state);\r\n\t\t\t\tconst relatedItemId = item.related_id;\r\n\t\t\t\tconst relatedItem = getItemWithChanges(relatedItemId, state);\r\n\t\t\t\tconst parentMenuId = relatedItem['parent_menu@aras.id'];\r\n\t\t\t\tconst currentLevelItems = getChildrenWithChanges(state, parentMenuId);\r\n\t\t\t\tnormalizeSortOrders(currentLevelItems, state);\r\n\r\n\t\t\t\tconst firstItem = getItemWithChanges(firstItemId, state);\r\n\t\t\t\tconst firstItemSortOrder = firstItem.sort_order;\r\n\r\n\t\t\t\tconst secondItem = getItemWithChanges(secondItemId, state);\r\n\t\t\t\tconst secondItemSortOrder = secondItem.sort_order;\r\n\r\n\t\t\t\taddItemChanges(firstItemId, { sort_order: secondItemSortOrder }, state);\r\n\t\t\t\taddItemChanges(secondItemId, { sort_order: firstItemSortOrder }, state);\r\n\t\t\t\tsetSelectedItem(state.selectedId, state);\r\n\t\t\t});\r\n\t\t},\r\n\t\tdropItem: (parameters) => {\r\n\t\t\tsetState((state) => {\r\n\t\t\t\tconst { itemId, targetParentId, insertPosition } = parameters;\r\n\t\t\t\tconst draggedItem = getItemWithChanges(itemId, state);\r\n\t\t\t\tconst relatedId = draggedItem['related_id'];\r\n\t\t\t\tconst draggedRelatedItem = getItemWithChanges(relatedId, state);\r\n\t\t\t\tconst currentParentId = draggedRelatedItem['parent_menu@aras.id'];\r\n\t\t\t\tconst currentLevelItems = getChildrenWithChanges(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tcurrentParentId\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst currentLevelItemsWithoutDraggedItem = currentLevelItems.filter(\r\n\t\t\t\t\t(item) => item.id !== draggedItem.id\r\n\t\t\t\t);\r\n\t\t\t\tnormalizeSortOrders(currentLevelItemsWithoutDraggedItem, state);\r\n\r\n\t\t\t\tconst parentMenuRelshipItem = getItemWithChanges(targetParentId, state);\r\n\t\t\t\tconst parentMenuId = parentMenuRelshipItem.related_id;\r\n\t\t\t\tconst targetLevelItems = getChildrenWithChanges(state, parentMenuId);\r\n\r\n\t\t\t\tconst targetLevelItemsWithoutDraggedItem = targetLevelItems.filter(\r\n\t\t\t\t\t(item) => item.id !== draggedItem.id\r\n\t\t\t\t);\r\n\t\t\t\ttargetLevelItemsWithoutDraggedItem.splice(\r\n\t\t\t\t\tinsertPosition,\r\n\t\t\t\t\t0,\r\n\t\t\t\t\tdraggedItem\r\n\t\t\t\t);\r\n\t\t\t\tnormalizeSortOrders(targetLevelItemsWithoutDraggedItem, state);\r\n\r\n\t\t\t\taddItemChanges(\r\n\t\t\t\t\tdraggedRelatedItem.id,\r\n\t\t\t\t\t{ 'parent_menu@aras.id': parentMenuId },\r\n\t\t\t\t\tstate\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst buttonType = draggedRelatedItem['@odata.type'];\r\n\t\t\t\tconst wasButtonMovedToRoot =\r\n\t\t\t\t\t!parentMenuId && buttonType === '#CommandBarMenuButton';\r\n\t\t\t\tif (wasButtonMovedToRoot) {\r\n\t\t\t\t\tconvertButtonToType(draggedItem, '#CommandBarButton', state);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst wasButtonMovedFromRoot =\r\n\t\t\t\t\tparentMenuId && buttonType === '#CommandBarButton';\r\n\t\t\t\tif (wasButtonMovedFromRoot) {\r\n\t\t\t\t\tconvertButtonToType(draggedItem, '#CommandBarMenuButton', state);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport getResource from '../../core/resources';\r\nimport { itemType } from 'metadata';\r\n\r\nconst getAccessFieldMetadata = () => {\r\n\treturn {\r\n\t\ttype: 'item',\r\n\t\titemTypeName: 'Identity',\r\n\t\tlabel: getResource('toc_editor.access'),\r\n\t\trequired: true,\r\n\t\tvalidation: true\r\n\t};\r\n};\r\n\r\nconst getImageFieldMetadata = () => {\r\n\treturn {\r\n\t\ttype: 'image',\r\n\t\tcssClass:\r\n\t\t\t'toc-editor__form-image-field toc-editor__form-image-field_distant',\r\n\t\tlabel: getResource('toc_editor.icon')\r\n\t};\r\n};\r\n\r\nconst getLabelFieldMetadata = (state) => {\r\n\tconst { languages, defaultLanguageCode } = state;\r\n\treturn {\r\n\t\tdefaultLanguageCode,\r\n\t\tlabel: getResource('toc_editor.label'),\r\n\t\tlanguages,\r\n\t\trequired: true,\r\n\t\ttype: 'multiLingual'\r\n\t};\r\n};\r\n\r\nconst getItemTypeFieldMetadata = () => {\r\n\treturn {\r\n\t\titemTypeName: 'ItemType',\r\n\t\tlabel: getResource('toc_editor.itemtype'),\r\n\t\trequired: true,\r\n\t\tvalidation: true,\r\n\t\ttype: 'item'\r\n\t};\r\n};\r\n\r\nconst getFormFieldMetadata = () => {\r\n\treturn {\r\n\t\titemTypeName: 'Form',\r\n\t\tlabel: getResource('toc_editor.form'),\r\n\t\trequired: true,\r\n\t\tvalidation: true,\r\n\t\ttype: 'item'\r\n\t};\r\n};\r\n\r\nconst getSortFieldMetadata = (state) => {\r\n\tconst { sortingTypesList: options = [] } = state;\r\n\treturn {\r\n\t\tlabel: getResource('toc_editor.sort'),\r\n\t\ttype: 'select',\r\n\t\toptions\r\n\t};\r\n};\r\n\r\nconst getStartPageFieldMetadata = () => {\r\n\treturn {\r\n\t\tlabel: getResource('toc_editor.start_page'),\r\n\t\trequired: true,\r\n\t\ttype: 'text'\r\n\t};\r\n};\r\n\r\nconst getPageParametersFieldMetadata = () => {\r\n\treturn {\r\n\t\tlabel: getResource('toc_editor.parameters'),\r\n\t\ttype: 'text'\r\n\t};\r\n};\r\n\r\nconst getItemFieldMetadata = (state, stateData) => {\r\n\tconst { selectedId } = state;\r\n\tconst relshipItem = stateData.get(selectedId);\r\n\tconst relatedItem = stateData.get(relshipItem['related_id']);\r\n\tconst { itemTypeId } = relatedItem['additional_data'];\r\n\tconst itemTypeName = itemType.getItemTypeName(itemTypeId);\r\n\treturn {\r\n\t\titemTypeName,\r\n\t\tlabel: getResource('toc_editor.item'),\r\n\t\trequired: true,\r\n\t\tvalidation: true,\r\n\t\ttype: 'item'\r\n\t};\r\n};\r\n\r\nconst propertyMetadataGenerators = {\r\n\taccess: getAccessFieldMetadata,\r\n\tlabel: getLabelFieldMetadata,\r\n\timage: getImageFieldMetadata,\r\n\titemType: getItemTypeFieldMetadata,\r\n\tstartPage: getStartPageFieldMetadata,\r\n\tparameters: getPageParametersFieldMetadata,\r\n\tform: getFormFieldMetadata,\r\n\tsort: getSortFieldMetadata,\r\n\titem: getItemFieldMetadata\r\n};\r\n\r\nexport const getFormMetadata = (stateData, state, order = []) => {\r\n\tconst { selectedId, viewAs } = state;\r\n\tconst relshipItem = stateData.get(selectedId);\r\n\tconst disabled = viewAs || relshipItem?.['@aras.action'] === 'delete';\r\n\treturn order.reduce((result, property) => {\r\n\t\tconst metadata = propertyMetadataGenerators[property](state, stateData);\r\n\t\tresult[property] = { ...metadata, disabled };\r\n\t\treturn result;\r\n\t}, {});\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { itemType } from 'metadata';\r\n\r\nconst getRelshipItem = (stateData, state) => {\r\n\tconst { selectedId } = state;\r\n\treturn stateData.get(selectedId);\r\n};\r\n\r\nconst getRelatedItem = (stateData, state) => {\r\n\tconst { related_id: relatedId } = getRelshipItem(stateData, state);\r\n\treturn stateData.get(relatedId);\r\n};\r\n\r\nconst getAccessValue = (stateData, state) => {\r\n\tconst relshipItem = getRelshipItem(stateData, state);\r\n\tconst { 'role@aras.keyed_name': label } = relshipItem;\r\n\treturn { label };\r\n};\r\n\r\nconst getMultiLingualValue = (stateData, state, property) => {\r\n\tconst { languages } = state;\r\n\tconst relatedItem = getRelatedItem(stateData, state);\r\n\treturn languages.reduce((result, { code }) => {\r\n\t\tresult[code] = relatedItem[`${property}@aras.lang.${code}`];\r\n\t\treturn result;\r\n\t}, {});\r\n};\r\n\r\nconst getImageValue = (stateData, state) => {\r\n\tconst { image } = getRelatedItem(stateData, state);\r\n\treturn image;\r\n};\r\n\r\nconst getItemTypeValue = (stateData, state) => {\r\n\tconst relatedItem = getRelatedItem(stateData, state);\r\n\tconst { additional_data: additionalData } = relatedItem;\r\n\tconst { itemTypeId } = additionalData;\r\n\tconst label = itemType.getItemTypeName(itemTypeId);\r\n\treturn { label };\r\n};\r\n\r\nconst getFormValue = (stateData, state) => {\r\n\tconst relatedItem = getRelatedItem(stateData, state);\r\n\tconst { additional_data: additionalData } = relatedItem;\r\n\tconst { formId } = additionalData;\r\n\tconst label = aras.getKeyedName(formId, 'Form');\r\n\treturn { label };\r\n};\r\n\r\nconst getSortValue = (stateData, state) => {\r\n\tconst { selectedSortingType } = state;\r\n\treturn selectedSortingType;\r\n};\r\n\r\nconst getPageValue = (stateData, state, property) => {\r\n\tconst relatedItem = getRelatedItem(stateData, state);\r\n\tconst { additional_data: additionalData } = relatedItem;\r\n\treturn additionalData[property] ?? '';\r\n};\r\n\r\nconst getItemValue = (stateData, state) => {\r\n\tconst relatedItem = getRelatedItem(stateData, state);\r\n\tconst { additional_data: additionalData } = relatedItem;\r\n\tconst { itemId, itemTypeId } = additionalData;\r\n\tconst itemTypeName = itemType.getItemTypeName(itemTypeId);\r\n\tconst label = aras.getKeyedName(itemId, itemTypeName);\r\n\treturn { label };\r\n};\r\n\r\nconst propertyValueGenerators = {\r\n\taccess: getAccessValue,\r\n\tlabel: (...args) => getMultiLingualValue(...args, 'label'),\r\n\timage: getImageValue,\r\n\titemType: getItemTypeValue,\r\n\tstartPage: getPageValue,\r\n\tparameters: getPageValue,\r\n\tform: getFormValue,\r\n\tsort: getSortValue,\r\n\titem: getItemValue\r\n};\r\n\r\nexport const getFormValues = (stateData, state, order) => {\r\n\treturn order.reduce((result, property) => {\r\n\t\tconst value = propertyValueGenerators[property](stateData, state, property);\r\n\t\tresult[property] = value;\r\n\t\treturn result;\r\n\t}, {});\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport getResource from '../../core/resources';\r\nimport SvgManager from '../../core/SvgManager';\r\nimport { getFormMetadata } from './formMetadata';\r\nimport { getFormValues } from './formValues';\r\n\r\nconst images = {\r\n\tfolder: '../images/Folder.svg',\r\n\tform: '../images/Form.svg',\r\n\titemType: '../images/ItemType.svg',\r\n\tpage: '../images/File.svg',\r\n\tsort: '../images/NavContentsOn.svg',\r\n\titem: '../images/DefaultItemType.svg'\r\n};\r\nSvgManager.enqueue(Object.values(images));\r\n\r\nconst generateFormData = (stateData, state, form) => {\r\n\tconst { order } = form;\r\n\tconst metadata = getFormMetadata(stateData, state, order);\r\n\tconst data = getFormValues(stateData, state, order);\r\n\r\n\treturn { ...form, data, metadata };\r\n};\r\n\r\nconst getSortingFormData = () => {\r\n\tconst image = images.sort;\r\n\tconst label = getResource('toc_editor.toc');\r\n\tconst order = ['sort'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nconst getCategoryFormData = () => {\r\n\tconst image = images.folder;\r\n\tconst label = getResource('toc_editor.category');\r\n\tconst order = ['label'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nconst getItemTypeFormData = () => {\r\n\tconst image = images.itemType;\r\n\tconst label = getResource('toc_editor.itemtype');\r\n\tconst order = ['itemType', 'image', 'label', 'access'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nconst getPageDashboardFormData = () => {\r\n\tconst image = images.page;\r\n\tconst label = getResource('toc_editor.page');\r\n\tconst order = ['startPage', 'parameters', 'image', 'label', 'access'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nconst getItemFormData = () => {\r\n\tconst image = images.item;\r\n\tconst label = 'Item';\r\n\tconst order = ['itemType', 'item', 'image', 'label', 'access'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nconst getFormDashboardFormData = () => {\r\n\tconst image = images.form;\r\n\tconst label = getResource('toc_editor.form');\r\n\tconst order = ['form', 'image', 'label', 'access'];\r\n\r\n\treturn {\r\n\t\timage,\r\n\t\tlabel,\r\n\t\torder\r\n\t};\r\n};\r\n\r\nexport const getFormData = (data, state) => {\r\n\tconst { selectedId } = state;\r\n\tif (!selectedId) {\r\n\t\tconst formData = getSortingFormData();\r\n\t\treturn generateFormData(data, state, formData);\r\n\t}\r\n\r\n\tconst relshipItem = data.get(selectedId);\r\n\tif (!relshipItem) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tlet formData = null;\r\n\tconst relatedItem = data.get(relshipItem.related_id) ?? {};\r\n\tconst { '@odata.type': type, additional_data: additionalData } = relatedItem;\r\n\tif (type === '#CommandBarMenu') {\r\n\t\tformData = getCategoryFormData();\r\n\t} else if (additionalData?.itemId !== undefined) {\r\n\t\tformData = getItemFormData();\r\n\t} else if (additionalData?.startPage !== undefined) {\r\n\t\tformData = getPageDashboardFormData();\r\n\t} else if (additionalData?.itemTypeId) {\r\n\t\tformData = getItemTypeFormData();\r\n\t} else if (additionalData?.formId) {\r\n\t\tformData = getFormDashboardFormData();\r\n\t}\r\n\r\n\tif (formData) {\r\n\t\treturn generateFormData(data, state, formData);\r\n\t}\r\n\r\n\treturn formData;\r\n};\r\n\r\nconst getItemChange = (propName, newValue, state) => {\r\n\tconst { itemId, label } = newValue;\r\n\tswitch (propName) {\r\n\t\tcase 'access':\r\n\t\t\treturn {\r\n\t\t\t\t'role@aras.id': itemId,\r\n\t\t\t\t'role@aras.keyed_name': label\r\n\t\t\t};\r\n\t\tcase 'itemType': {\r\n\t\t\tconst additionalData = getAdditionalData(state);\r\n\r\n\t\t\tconst change = {\r\n\t\t\t\tadditional_data: {\r\n\t\t\t\t\t...additionalData,\r\n\t\t\t\t\titemTypeId: itemId\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst isItemTypeWasChanged = additionalData.itemTypeId !== itemId;\r\n\t\t\tif (change.additional_data.itemId !== undefined && isItemTypeWasChanged) {\r\n\t\t\t\tchange.additional_data.itemId = null;\r\n\t\t\t}\r\n\r\n\t\t\treturn change;\r\n\t\t}\r\n\t\tcase 'form': {\r\n\t\t\tconst additionalData = getAdditionalData(state);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tadditional_data: {\r\n\t\t\t\t\t...additionalData,\r\n\t\t\t\t\tformId: itemId\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tcase 'item': {\r\n\t\t\tconst additionalData = getAdditionalData(state);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tadditional_data: {\r\n\t\t\t\t\t...additionalData,\r\n\t\t\t\t\titemId\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\nconst getAdditionalData = (state) => {\r\n\tconst { selectedId, tocData, changes } = state;\r\n\tconst relshipItem = tocData.get(selectedId);\r\n\tconst relatedId = relshipItem?.related_id;\r\n\tconst relatedItem = tocData.get(relatedId);\r\n\tconst changedRelatedId = relatedId ?? changes[selectedId].related_id;\r\n\tconst changedRelatedItem = changes[changedRelatedId];\r\n\tconst additionalData = {\r\n\t\t...relatedItem?.additional_data,\r\n\t\t...changedRelatedItem?.additional_data\r\n\t};\r\n\r\n\treturn additionalData;\r\n};\r\n\r\nexport const getFormChange = (form, state, detail) => {\r\n\tconst { newValue, propName } = detail;\r\n\tconst type = form.metadata[propName]?.type;\r\n\tswitch (type) {\r\n\t\tcase 'multiLingual': {\r\n\t\t\tconst { defaultLanguageCode } = state;\r\n\t\t\treturn Object.entries(newValue).reduce((change, [code, value]) => {\r\n\t\t\t\tif (code === defaultLanguageCode) {\r\n\t\t\t\t\tchange[propName] = value;\r\n\t\t\t\t}\r\n\t\t\t\tchange[`${propName}@aras.lang.${code}`] = value;\r\n\t\t\t\treturn change;\r\n\t\t\t}, {});\r\n\t\t}\r\n\t\tcase 'item': {\r\n\t\t\treturn getItemChange(propName, newValue, state);\r\n\t\t}\r\n\t\tcase 'image': {\r\n\t\t\treturn { image: newValue };\r\n\t\t}\r\n\t\tcase 'select': {\r\n\t\t\treturn { sortingType: newValue };\r\n\t\t}\r\n\t\tcase 'text': {\r\n\t\t\tconst additionalData = getAdditionalData(state);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tadditional_data: {\r\n\t\t\t\t\t...additionalData,\r\n\t\t\t\t\t[propName]: newValue\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport Accordion from '../../components/accordion';\r\nimport { itemType } from 'metadata';\r\nimport viewAsAccordionCSS from '../../../styles/less/aras/tocEditorAccordion.less';\r\nimport getResource from '../../core/resources';\r\nimport { wire } from 'hyperhtml';\r\n\r\nconst viewAsAccordionStylesheet = new CSSStyleSheet();\r\nviewAsAccordionStylesheet.replaceSync(viewAsAccordionCSS);\r\n\r\nclass ViewAsAccordion extends Accordion {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.reversed = true;\r\n\t\tthis.collapsed = true;\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tsuper.created();\r\n\r\n\t\tthis.shadowRoot.adoptedStyleSheets = [\r\n\t\t\t...this.shadowRoot.adoptedStyleSheets,\r\n\t\t\tviewAsAccordionStylesheet\r\n\t\t];\r\n\t\tthis.classList.add('toc-editor__view-as-accordion');\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\r\n\t\tconst header = this.shadowRoot.querySelector('.aras-accordion__header');\r\n\t\theader.addEventListener('click', () => {\r\n\t\t\tthis.collapsed = !this.collapsed;\r\n\t\t});\r\n\t}\r\n}\r\n\r\nconst name = 'aras-accordion-view-as';\r\nif (!customElements.get(name)) {\r\n\tViewAsAccordion.define(name);\r\n}\r\n\r\nexport default async (layout, viewAsChangeHandler) => {\r\n\tconst state = layout.state || {};\r\n\tconst { viewAs } = state;\r\n\tconst formContext = wire(layout, ':view-as-form');\r\n\tconst formChangeHandler = (e) => {\r\n\t\tconst { detail } = e;\r\n\t\tif (!detail) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst { itemId: value, label } = detail.newValue;\r\n\t\tif (!value) {\r\n\t\t\tif (detail.propName === 'identity') {\r\n\t\t\t\tlayout.actions.resetViewAs();\r\n\t\t\t} else {\r\n\t\t\t\tlayout.actions.setViewAs({\r\n\t\t\t\t\t[detail.propName]: null\r\n\t\t\t\t});\r\n\t\t\t\tviewAsChangeHandler();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst { viewAs: oldViewAs } = state;\r\n\t\tlayout.actions.setViewAs({\r\n\t\t\t[detail.propName]: { value, label }\r\n\t\t});\r\n\r\n\t\tconst hasViewAsChanged = value !== oldViewAs?.[detail.propName]?.value;\r\n\t\tif (hasViewAsChanged) {\r\n\t\t\tviewAsChangeHandler();\r\n\t\t}\r\n\t};\r\n\tconst form = formContext`\r\n\t\t`;\r\n\tconst identityItemTypeName = 'Identity';\r\n\tconst languageItemTypeName = 'Language';\r\n\tconst { getItemType } = itemType;\r\n\tconst [identityItemType, languageItemType] = await Promise.all([\r\n\t\tgetItemType(identityItemTypeName),\r\n\t\tgetItemType(languageItemTypeName)\r\n\t]);\r\n\tconst identityDisabled =\r\n\t\tstate.changes && Object.keys(state.changes).length > 0;\r\n\tconst availableLanguages = viewAs?.prevLanguages ?? state.languages;\r\n\tconst languageDisabled =\r\n\t\t!viewAs || identityDisabled || availableLanguages.length === 1;\r\n\tform.metadata = {\r\n\t\tidentity: {\r\n\t\t\ttype: 'item',\r\n\t\t\titemTypeName: identityItemTypeName,\r\n\t\t\tdisabled: identityDisabled,\r\n\t\t\tplaceholder: identityItemType.label,\r\n\t\t\ticon: identityItemType.open_icon,\r\n\t\t\tvalidation: true\r\n\t\t},\r\n\t\tlanguage: {\r\n\t\t\ttype: 'item',\r\n\t\t\titemTypeName: languageItemTypeName,\r\n\t\t\tdisabled: languageDisabled,\r\n\t\t\tplaceholder: languageItemType.label,\r\n\t\t\ticon: languageItemType.open_icon,\r\n\t\t\tvalidation: true\r\n\t\t}\r\n\t};\r\n\tform.order = Object.keys(form.metadata);\r\n\tform.data = {\r\n\t\tidentity: viewAs?.identity,\r\n\t\tlanguage: viewAs?.language\r\n\t};\r\n\tform.resetState();\r\n\tform.render();\r\n\r\n\t// header color should be yellow when filter is active and it's impossible to do with css-class\r\n\t// because hyperHTML replaces basic component classes in this case.\r\n\t// so used attribute \"filtered\" (see styles in tocEditorAccordion.less)\r\n\tconst filterActive = !!viewAs;\r\n\tconst filters = [];\r\n\tif (viewAs?.identity) {\r\n\t\tfilters.push(viewAs.identity.label);\r\n\t}\r\n\tif (viewAs?.language) {\r\n\t\tfilters.push(viewAs.language.label);\r\n\t}\r\n\tconst filterLabel = filters.join(', ');\r\n\r\n\tconst headerLabel = viewAs\r\n\t\t? getResource('toc_editor.view_as_something', filterLabel)\r\n\t\t: getResource('toc_editor.view_as');\r\n\tconst clearLabel = getResource('toc_editor.clear_view_as');\r\n\tconst clearDisabledClass = viewAs ? '' : 'aras-link_a-disabled';\r\n\tconst clearHandler = (e) => {\r\n\t\te.stopPropagation();\r\n\t\tlayout.actions.resetViewAs();\r\n\t};\r\n\tconst accordionContext = wire(layout, ':view-as-accordion');\r\n\r\n\treturn accordionContext`\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t${headerLabel}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t${clearLabel}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t${form}\r\n\t\t\t
    \r\n\t\t`;\r\n};\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { soap } from '../../core/Soap';\r\nimport { alertSoapError } from '../../core/SessionSoap';\r\nimport { jsonToXml } from '../../core/XmlToJson';\r\n\r\nconst saveTOC = async (state, tocData): Promise => {\r\n\tconst { changes, selectedSortingType, sortingType } = state;\r\n\tconst propsToSkip = new Set([\r\n\t\t'@aras.action',\r\n\t\t'@odata.type',\r\n\t\t'role@aras.keyed_name'\r\n\t]);\r\n\tconst propsToStringify = new Set(['sort_order', 'additional_data']);\r\n\tconst mlPropNamePrefix = '@aras.lang.';\r\n\r\n\tconst order = new Map([\r\n\t\t['add-#CommandBarMenu', 1],\r\n\t\t['add', 2], // menubutton, button and other\r\n\t\t['add-#CommandBarSectionItem', 3],\r\n\t\t['edit-#CommandBarMenu', 4],\r\n\t\t['edit', 5],\r\n\t\t['edit-#CommandBarSectionItem', 6],\r\n\t\t['delete-#CommandBarSectionItem', 7],\r\n\t\t['delete', 8],\r\n\t\t['delete-#CommandBarMenu', 9]\r\n\t]);\r\n\r\n\tconst getItemOrder = (item) => {\r\n\t\tconst { '@aras.action': action, '@odata.type': type } = item;\r\n\t\treturn order.get(`${action}-${type}`) || order.get(`${action}`) || 0;\r\n\t};\r\n\r\n\tconst getParentId = (id) => {\r\n\t\tconst item = tocData.get(id);\r\n\t\tif (item['@aras.action'] !== 'delete') {\r\n\t\t\treturn item['parent_menu@aras.id'];\r\n\t\t}\r\n\r\n\t\tconst originalItem = tocData.get(id);\r\n\t\treturn originalItem['parent_menu@aras.id'];\r\n\t};\r\n\r\n\tconst getNestingDistance = (fromId: string, toParentId: string): number => {\r\n\t\tlet nestingLevel = 0;\r\n\t\tlet parentId = getParentId(fromId);\r\n\r\n\t\twhile (parentId) {\r\n\t\t\tnestingLevel++;\r\n\t\t\tif (parentId === toParentId) {\r\n\t\t\t\treturn nestingLevel;\r\n\t\t\t}\r\n\r\n\t\t\tparentId = getParentId(parentId);\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t};\r\n\tconst changeEntries = Object.entries(changes);\r\n\tconst sortedChanges = changeEntries.sort(([id1], [id2]) => {\r\n\t\tconst item1 = tocData.get(id1);\r\n\t\tconst item2 = tocData.get(id2);\r\n\t\tconst order1 = getItemOrder(item1);\r\n\t\tconst order2 = getItemOrder(item2);\r\n\t\tif (order1 !== order2) {\r\n\t\t\treturn order1 - order2;\r\n\t\t}\r\n\r\n\t\tconst { '@aras.action': action1, '@odata.type': type1 } = item1;\r\n\t\tconst { '@aras.action': action2, '@odata.type': type2 } = item2;\r\n\t\tconst actions = ['add', 'delete'];\r\n\t\tif (\r\n\t\t\ttype1 === '#CommandBarMenu' &&\r\n\t\t\ttype2 === '#CommandBarMenu' &&\r\n\t\t\tactions.includes(action1) &&\r\n\t\t\tactions.includes(action2)\r\n\t\t) {\r\n\t\t\t// item1 is a child of item2-then item2 should be added before item1 when the action is \"add\" and otherwise when the action is \"delete\"\r\n\t\t\tif (getNestingDistance(id1, id2) > 0) {\r\n\t\t\t\treturn action1 === 'add' ? 1 : -1;\r\n\t\t\t}\r\n\t\t\tif (getNestingDistance(id2, id1) > 0) {\r\n\t\t\t\treturn action1 === 'add' ? -1 : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t});\r\n\r\n\tconst amlItems = sortedChanges.map(([id, change]) => {\r\n\t\tconst item = tocData.get(id);\r\n\t\tconst odataType = item?.['@odata.type'];\r\n\t\tconst type = odataType?.substring(1);\r\n\t\tconst properties = {};\r\n\t\tconst action = change['@aras.action'];\r\n\t\tif (action !== 'delete') {\r\n\t\t\tfor (const [propName, propValue] of Object.entries(change)) {\r\n\t\t\t\tif (propsToSkip.has(propName)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet value = propValue;\r\n\t\t\t\tif (value === undefined) {\r\n\t\t\t\t\tvalue = '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (propsToStringify.has(propName)) {\r\n\t\t\t\t\tvalue = JSON.stringify(value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!propName.includes(mlPropNamePrefix)) {\r\n\t\t\t\t\tconst realPropName = propName.replace('@aras.id', '');\r\n\t\t\t\t\tproperties[realPropName] = value;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst [prop, lang] = propName.split(mlPropNamePrefix);\r\n\t\t\t\tconst mlPropName = `i18n:${prop}`;\r\n\t\t\t\tconst newValue = {\r\n\t\t\t\t\t'@attrs': {\r\n\t\t\t\t\t\t'xml:lang': lang,\r\n\t\t\t\t\t\t'xmlns:i18n': 'http://www.aras.com/I18N'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'@value': value\r\n\t\t\t\t};\r\n\t\t\t\tconst multilingualProperties = properties[mlPropName] || [];\r\n\t\t\t\tmultilingualProperties.push(newValue);\r\n\t\t\t\tproperties[mlPropName] = multilingualProperties;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst itemObject = {\r\n\t\t\tItem: {\r\n\t\t\t\t'@attrs': {\r\n\t\t\t\t\taction,\r\n\t\t\t\t\tid,\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tdoGetItem: '0'\r\n\t\t\t\t},\r\n\t\t\t\t...properties\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn jsonToXml(itemObject);\r\n\t});\r\n\r\n\tlet preferencesXml = '';\r\n\tif (sortingType !== selectedSortingType) {\r\n\t\tconst Relationships = {\r\n\t\t\tItem: {\r\n\t\t\t\t'@attrs': {\r\n\t\t\t\t\taction: 'edit',\r\n\t\t\t\t\tid: 'DB4652A5C55D4EB38F39E5C0602CEC48',\r\n\t\t\t\t\ttype: 'Core_GlobalLayout'\r\n\t\t\t\t},\r\n\t\t\t\tcore_toc_sorting_type: selectedSortingType\r\n\t\t\t}\r\n\t\t};\r\n\t\tconst itemObject = {\r\n\t\t\tItem: {\r\n\t\t\t\t'@attrs': {\r\n\t\t\t\t\taction: 'edit',\r\n\t\t\t\t\tid: '507A16AA36F94513AD7EC1F948B5B48F',\r\n\t\t\t\t\ttype: 'Preference'\r\n\t\t\t\t},\r\n\t\t\t\tRelationships\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tpreferencesXml = jsonToXml(itemObject);\r\n\t}\r\n\r\n\tconst requestToRefreshMetadataDate =\r\n\t\t'';\r\n\tconst requestXml = `\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t${amlItems.join('')}${preferencesXml}${requestToRefreshMetadataDate}\r\n\t\t\t\t\r\n\t\t\t`;\r\n\tconst requestOptions = { method: 'ApplyItem', async: true };\r\n\r\n\taras.browserHelper.toggleSpinner(document, true, 'toc_editor_spinner');\r\n\r\n\ttry {\r\n\t\tawait soap(requestXml, requestOptions);\r\n\t} catch (err) {\r\n\t\talertSoapError(err);\r\n\t\treturn false;\r\n\t} finally {\r\n\t\taras.browserHelper.toggleSpinner(document, false, 'toc_editor_spinner');\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nexport default saveTOC;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport '../../components/nav/navEditor';\r\nimport { CuiLayout } from 'cui';\r\nimport { bind, wire } from 'hyperhtml';\r\nimport getResource from '../../core/resources';\r\nimport odataFetch from '../../core/odataFetch';\r\nimport applyNavChanges from './navDataConverter';\r\nimport tocEditorCuiActions from './tocEditorCuiLayoutActions';\r\nimport SvgManager from '../../core/SvgManager';\r\nimport xml from '../../core/Xml';\r\nimport { getFormChange, getFormData } from './formDataConverter';\r\nimport renderViewAs from './viewAs';\r\nimport saveTOC from './saveTOC';\r\nimport notify from '../../components/notify';\r\nimport '../../components/formView';\r\n\r\nconst notifyTOCSaving = (): void => {\r\n\tconst successMessage = getResource('toc_editor.toc_saved');\r\n\tnotify(successMessage, { type: 'success' });\r\n\twindow.mainLayout.observer.notify('UpdateTOC');\r\n};\r\n\r\nexport default class TocEditorCuiLayout extends CuiLayout {\r\n\tactions = tocEditorCuiActions(this.setState.bind(this));\r\n\tinitialState = {\r\n\t\tchanges: {},\r\n\t\tviewAs: null,\r\n\t\tdefaultLanguageCode: 'en',\r\n\t\tlanguages: [{ code: 'en', name: 'English' }],\r\n\t\tselectedSortingType: '',\r\n\t\tsortingType: '',\r\n\t\tsortingTypesList: [],\r\n\t\tselectedId: '',\r\n\t\tnextToSelectedId: '',\r\n\t\tprevToSelectedId: '',\r\n\t\ttocData: new Map()\r\n\t};\r\n\r\n\tasync init() {\r\n\t\tconst contentsTitle = getResource('common.contents');\r\n\t\tconst header = wire()`\r\n\t\t\t
    \r\n\t\t`;\r\n\t\tconst nav = wire()`\r\n\t\t\t\r\n\t\t`;\r\n\t\tnav.on('click', (key) => this.actions.selectItem(key));\r\n\t\tnav.on('dropitem', (_, event) => this.actions.dropItem(event.detail));\r\n\t\tconst formHeader = wire()`\r\n\t\t\t
    \r\n\t\t`;\r\n\t\tconst formView = wire()`\r\n\t\t\t\r\n\t\t`;\r\n\t\tconst spinner = wire()`\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t`;\r\n\t\tconst viewAsForm = this._renderViewAsForm(this);\r\n\r\n\t\tconst onTitleClick = () => this.actions.selectItem('');\r\n\t\tbind(this.dom)`\r\n\t\t\t
    \r\n\t\t\t\t${header}\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t${contentsTitle}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t${nav}\r\n\t\t\t\t\t\t${viewAsForm}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t${formHeader}\r\n\t\t\t\t\t\t${formView}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t${spinner}\r\n\t\t\t
    \r\n\t\t`;\r\n\r\n\t\tthis.dom = header;\r\n\t\tthis.nav = nav;\r\n\t\tthis.formHeader = formHeader;\r\n\t\tthis.formView = formView;\r\n\t\tthis.formView.addEventListener('change', (e) => {\r\n\t\t\tconst detail = e.detail;\r\n\t\t\tif (!detail) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst state = this.state;\r\n\t\t\tconst change = getFormChange(this.formView, state, detail);\r\n\t\t\tif (!change) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst { changes, selectedId, tocData } = state;\r\n\t\t\tif (!selectedId) {\r\n\t\t\t\tconst { sortingType } = change;\r\n\t\t\t\tthis.actions.setSelectedSortingType(sortingType);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst relshipProperties = [\r\n\t\t\t\t'role@aras.id',\r\n\t\t\t\t'role@aras.keyed_name',\r\n\t\t\t\t'sort_order'\r\n\t\t\t];\r\n\t\t\tconst changedProperties = Object.keys(change);\r\n\t\t\tconst relshipChanged = relshipProperties.some((property) =>\r\n\t\t\t\tchangedProperties.includes(property)\r\n\t\t\t);\r\n\t\t\tconst relshipItem = {\r\n\t\t\t\t...tocData.get(selectedId),\r\n\t\t\t\t...changes[selectedId]\r\n\t\t\t};\r\n\t\t\tconst id = relshipChanged ? relshipItem.id : relshipItem.related_id;\r\n\t\t\tthis.actions.editItem(id, change);\r\n\t\t});\r\n\r\n\t\taras.browserHelper.toggleSpinner(document, true, 'toc_editor_spinner');\r\n\r\n\t\ttry {\r\n\t\t\tawait Promise.all([\r\n\t\t\t\tthis._initTOC(nav),\r\n\t\t\t\tthis._getSortPreferences(),\r\n\t\t\t\tsuper.init()\r\n\t\t\t]);\r\n\r\n\t\t\tthis._initLanguageData();\r\n\t\t\tthis._registerTocEditorHandlers();\r\n\t\t} finally {\r\n\t\t\taras.browserHelper.toggleSpinner(document, false, 'toc_editor_spinner');\r\n\t\t}\r\n\t}\r\n\r\n\tupdateLayout(oldProps, oldState) {\r\n\t\tconst {\r\n\t\t\tchanges: oldChanges,\r\n\t\t\tselectedId: oldSelectedId,\r\n\t\t\ttocData: oldTocData,\r\n\t\t\tviewAs: oldViewAs\r\n\t\t} = oldState;\r\n\t\tconst { changes, selectedId, tocData, viewAs } = this.state;\r\n\t\tconst data = this._applyDataChanges();\r\n\t\tconst hasNewChanegs = oldChanges !== changes || oldTocData !== tocData;\r\n\t\tif (hasNewChanegs) {\r\n\t\t\tapplyNavChanges(this.nav, data);\r\n\t\t}\r\n\r\n\t\tconst newItemSelected = oldSelectedId !== selectedId;\r\n\t\tif (newItemSelected) {\r\n\t\t\tthis._selectItem(data);\r\n\t\t}\r\n\r\n\t\tconst viewAsChanged = oldViewAs !== viewAs;\r\n\t\tif (hasNewChanegs || newItemSelected || viewAsChanged) {\r\n\t\t\tthis._renderForm(data);\r\n\t\t}\r\n\r\n\t\tif (viewAsChanged) {\r\n\t\t\tthis.nav.dragOn = !viewAs;\r\n\t\t}\r\n\r\n\t\tthis._renderViewAsForm(this);\r\n\t}\r\n\r\n\tasync saveTOC(): Promise {\r\n\t\tconst tocData = this._applyDataChanges();\r\n\t\tconst tocEditorSaved = await saveTOC(this.state, tocData);\r\n\t\tif (tocEditorSaved) {\r\n\t\t\tnotifyTOCSaving();\r\n\t\t}\r\n\r\n\t\treturn tocEditorSaved;\r\n\t}\r\n\r\n\t_selectItem(data) {\r\n\t\tconst { changes, selectedId } = this.state;\r\n\r\n\t\tthis.nav.select(selectedId);\r\n\r\n\t\tconst selectedItem = data.get(selectedId);\r\n\t\tif (!selectedItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst isNewItem = selectedItem['@aras.action'] === 'add';\r\n\t\tif (!isNewItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst selectedRelatedId = selectedItem.related_id;\r\n\t\tconst selectedRelatedItem = changes[selectedRelatedId];\r\n\t\tconst selectedItemParentMenu = selectedRelatedItem['parent_menu@aras.id'];\r\n\t\tconst itemToExpand = [...data.values()].find(\r\n\t\t\t(el) => el.related_id === selectedItemParentMenu\r\n\t\t);\r\n\r\n\t\tif (itemToExpand) {\r\n\t\t\tthis.nav.expand(itemToExpand.id, true);\r\n\t\t}\r\n\t}\r\n\r\n\t_applyDataChanges() {\r\n\t\tconst { changes, tocData } = this.state;\r\n\t\tconst changeEntries = Object.entries(changes);\r\n\t\tif (changeEntries.length === 0) {\r\n\t\t\treturn tocData;\r\n\t\t}\r\n\r\n\t\tconst newData = new Map([...tocData]);\r\n\t\tfor (const [id, change] of changeEntries) {\r\n\t\t\tconst oldItem = tocData.get(id);\r\n\t\t\tif (!oldItem) {\r\n\t\t\t\tnewData.set(id, change);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tnewData.set(id, { ...oldItem, ...change });\r\n\t\t}\r\n\r\n\t\treturn newData;\r\n\t}\r\n\r\n\t_buildDataForToc(rawData) {\r\n\t\treturn rawData.reduce((acc, relship) => {\r\n\t\t\tconst { id, related_id: relatedItem } = relship;\r\n\r\n\t\t\tdelete relatedItem['label@aras.lang'];\r\n\t\t\tif (relatedItem['@odata.type'] === '#CommandBarButton') {\r\n\t\t\t\tdelete relatedItem['parent_menu'];\r\n\t\t\t}\r\n\r\n\t\t\tacc.set(relatedItem.id, {\r\n\t\t\t\t...relatedItem,\r\n\t\t\t\tadditional_data: JSON.parse(relatedItem.additional_data)\r\n\t\t\t});\r\n\t\t\tacc.set(id, {\r\n\t\t\t\t...relship,\r\n\t\t\t\t'@odata.type': '#CommandBarSectionItem',\r\n\t\t\t\trelated_id: relatedItem.id\r\n\t\t\t});\r\n\t\t\treturn acc;\r\n\t\t}, new Map());\r\n\t}\r\n\r\n\tasync _getSortingTypesList() {\r\n\t\tconst list = await aras.MetadataCacheJson.GetList([\r\n\t\t\t'8D88E35D2B3C4E98AD954767736F724F'\r\n\t\t]);\r\n\t\tconst sortingTypeTable = list?.[0]?.value?.[0];\r\n\t\tconst sortingTypeList = sortingTypeTable?.Value.map(({ label, value }) => ({\r\n\t\t\tlabel,\r\n\t\t\tvalue\r\n\t\t}));\r\n\t\treturn sortingTypeList;\r\n\t}\r\n\r\n\tasync _getCurrentSortingType() {\r\n\t\tconst worldPreferenceId = '507A16AA36F94513AD7EC1F948B5B48F';\r\n\t\tconst currentSortingTypeUrl = `Preference('${worldPreferenceId}')/Core_GlobalLayout('DB4652A5C55D4EB38F39E5C0602CEC48')/core_toc_sorting_type`;\r\n\t\tconst { value: currentSortingType } = await odataFetch(\r\n\t\t\tcurrentSortingTypeUrl\r\n\t\t);\r\n\t\treturn currentSortingType;\r\n\t}\r\n\r\n\tasync _getSortPreferences() {\r\n\t\tconst currentSortingTypePromise = this._getCurrentSortingType();\r\n\t\tconst sortingTypesListPromise = this._getSortingTypesList();\r\n\t\tconst promises = [currentSortingTypePromise, sortingTypesListPromise];\r\n\t\tconst [sortingType = '', sortingTypesList = []] = await Promise.all(\r\n\t\t\tpromises\r\n\t\t);\r\n\t\tconst { setSelectedSortingType, setSortingType, setSortingTypesList } =\r\n\t\t\tthis.actions;\r\n\t\tsetSelectedSortingType(sortingType);\r\n\t\tsetSortingType(sortingType);\r\n\t\tsetSortingTypesList(sortingTypesList);\r\n\t}\r\n\r\n\tasync _fetchTOCData() {\r\n\t\tconst odataFilter = `action eq 'Add' and source_id/location/name eq 'TOC'`;\r\n\t\tconst odataRelatedSelect = `id,image,name,label,parent_menu,additional_data,command_alias,on_click_handler`;\r\n\t\tconst requestURL = `\r\n\t\t\tCommandBarSectionItem?\r\n\t\t\t$select=id,role,sort_order,source_id&\r\n\t\t\t$orderby=sort_order&\r\n\t\t\t$filter=${odataFilter}&\r\n\t\t\t$expand=related_id($select=${odataRelatedSelect};lang=*)\r\n\t\t`;\r\n\t\tconst data = await odataFetch(requestURL);\r\n\r\n\t\treturn this._buildDataForToc(data.value);\r\n\t}\r\n\r\n\tasync _fetchTOCDataForIdentity() {\r\n\t\tconst requestURL = `method.cui_GetTocForIdentityInODATAForm`;\r\n\t\tconst headers = {};\r\n\t\tconst { viewAs } = this.state;\r\n\t\tif (viewAs.language) {\r\n\t\t\tconst selectedLanguage = viewAs.prevLanguages.find(\r\n\t\t\t\t(lang) => lang.name === viewAs.language.label\r\n\t\t\t);\r\n\t\t\theaders['Accept-Language'] = selectedLanguage.code;\r\n\t\t}\r\n\t\tconst data = await odataFetch(requestURL, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders,\r\n\t\t\tbody: JSON.stringify({\r\n\t\t\t\tidentity: viewAs.identity.value\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this._buildDataForToc(data.value);\r\n\t}\r\n\r\n\tasync _updateTocDataForIdentity() {\r\n\t\tconst tocData = await this._fetchTOCDataForIdentity();\r\n\t\tthis.setState((state) => {\r\n\t\t\tstate.tocData = tocData;\r\n\t\t});\r\n\t}\r\n\r\n\tasync _initTOC() {\r\n\t\tconst tocData = await this._fetchTOCData();\r\n\t\tthis.setState((state) => {\r\n\t\t\tstate.changes = {};\r\n\t\t\tstate.tocData = tocData;\r\n\t\t});\r\n\t\tif (!tocData.has(this.state.selectedId)) {\r\n\t\t\tthis.actions.selectItem('');\r\n\t\t}\r\n\t}\r\n\t_renderForm(stateData) {\r\n\t\tconst formData = getFormData(stateData, this.state);\r\n\t\tif (!formData) {\r\n\t\t\tbind(this.formHeader)``;\r\n\t\t\tthis.formView.order = [];\r\n\t\t\tthis.formView.render();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.formView.resetState();\r\n\t\tconst { data, image, label, metadata, order } = formData;\r\n\t\tbind(this.formHeader)`\r\n\t\t\t${SvgManager.createHyperHTMLNode(image, {\r\n\t\t\t\tcssClass: 'toc-editor__form-header-image'\r\n\t\t\t})}\r\n\t\t\t${label}\r\n\t\t`;\r\n\r\n\t\tthis.formView.metadata = metadata;\r\n\t\tthis.formView.data = data;\r\n\t\tthis.formView.order = order;\r\n\t\tthis.formView.render();\r\n\t}\r\n\r\n\t_renderViewAsForm() {\r\n\t\tconst formChangeHandler = async () => {\r\n\t\t\taras.browserHelper.toggleSpinner(document, true, 'toc_editor_spinner');\r\n\r\n\t\t\ttry {\r\n\t\t\t\tawait this._updateTocDataForIdentity();\r\n\t\t\t} finally {\r\n\t\t\t\taras.browserHelper.toggleSpinner(document, false, 'toc_editor_spinner');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn renderViewAs(this, formChangeHandler);\r\n\t}\r\n\r\n\t_initLanguageData() {\r\n\t\tthis.setState((state) => {\r\n\t\t\tstate.defaultLanguageCode = aras.getSessionContextLanguageCode();\r\n\t\t\tstate.languages = xml\r\n\t\t\t\t.selectNodes(aras.getLanguagesResultNd(), 'Item[@type=\"Language\"]')\r\n\t\t\t\t.map((language) => {\r\n\t\t\t\t\tconst codePropertyNode = xml.selectSingleNode(language, 'code');\r\n\t\t\t\t\tconst code = codePropertyNode?.text;\r\n\t\t\t\t\tconst namePropertyNode = xml.selectSingleNode(language, 'name');\r\n\t\t\t\t\tconst name = namePropertyNode?.text;\r\n\t\t\t\t\treturn { code, name };\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t_registerTocEditorHandlers() {\r\n\t\tthis.observer.subscribe(async (event) => {\r\n\t\t\tif (event !== 'reinitTOCEditor') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst initTocPromise = this._initTOC(this.nav);\r\n\t\t\tconst preferencesPromise = this._getSortPreferences();\r\n\t\t\tawait Promise.all([initTocPromise, preferencesPromise]);\r\n\t\t});\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nexport default class UserNotificationContainer {\r\n\tconstructor(control, notifyObserver) {\r\n\t\tif (!control) {\r\n\t\t\tthrow new Error(\r\n\t\t\t\t\"ArgumentException: notification_control can't be undefined\"\r\n\t\t\t);\r\n\t\t}\r\n\t\tconst messageCheckInterval = aras.commonProperties.MessageCheckInterval;\r\n\r\n\t\tif (!messageCheckInterval) {\r\n\t\t\tArasModules.Dialog.alert(\r\n\t\t\t\taras.getResource('', 'user_notifications.failed_get_interval_variable')\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.checkInterval = null;\r\n\t\tthis.checkTimeout = null;\r\n\t\tthis.acknowledge = 'Acknowledge';\r\n\t\tthis.closeText = 'Close';\r\n\t\tthis.url = aras.getServerBaseURL() + 'Notifications.aspx';\r\n\t\tthis.updateInfoDom = null;\r\n\t\tthis.popupParametersArray = [];\r\n\t\tthis.checkInterval = messageCheckInterval;\r\n\t\tthis.checkTimeout = setTimeout(\r\n\t\t\tthis.startIterativeUpdateMessageCollection.bind(this),\r\n\t\t\tthis.checkInterval\r\n\t\t);\r\n\t\tthis.notifyObserver = notifyObserver;\r\n\t\tthis.notifications = new Map();\r\n\t\tthis.extendControlWithNotificationButtonFormatter(control);\r\n\t\tthis.updateMessageCollection(true);\r\n\t}\r\n\tnotificationsButtonFormatter(item) {\r\n\t\tconst BUTTON_CLASS = 'aras-button';\r\n\t\tconst iconNode = ArasModules.SvgManager.createInfernoVNode(item.image, {\r\n\t\t\tcssClass: BUTTON_CLASS + '__icon'\r\n\t\t});\r\n\t\tlet hasOnceMessages = false;\r\n\t\titem.data &&\r\n\t\t\titem.data.forEach(function (message) {\r\n\t\t\t\tif (message.isOnce) {\r\n\t\t\t\t\thasOnceMessages = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tconst buttonNode = iconNode || (\r\n\t\t\t\r\n\t\t\t\t{item.label}\r\n\t\t\t\r\n\t\t);\r\n\t\tif (!item.roots.length) {\r\n\t\t\treturn buttonNode;\r\n\t\t}\r\n\t\tconst notificationCountModifier = hasOnceMessages\r\n\t\t\t? 'notifications-count_red'\r\n\t\t\t: 'notifications-count_gray';\r\n\t\tconst notificationCountClass = `aras-header__notifications-count ${notificationCountModifier}`;\r\n\t\tconst msgCountNode = (\r\n\t\t\t{item.roots.length}\r\n\t\t);\r\n\t\treturn [msgCountNode, buttonNode];\r\n\t}\r\n\textendControlWithNotificationButtonFormatter(control) {\r\n\t\tcontrol.constructor.extendFormatters({\r\n\t\t\tnotificationsButtonFormatter: this.notificationsButtonFormatter\r\n\t\t});\r\n\t}\r\n\tupdateCuiLayout() {\r\n\t\tthis.notifyObserver('UpdateNotifications');\r\n\t}\r\n\taddMessage(id, text, image, messageItem) {\r\n\t\tconst acknowledgeDom =\r\n\t\t\tmessageItem && messageItem.selectSingleNode('acknowledge');\r\n\t\tconst isOnceAcknowledge = acknowledgeDom && acknowledgeDom.text === 'Once';\r\n\t\tconst type = messageItem.getAttribute('type');\r\n\r\n\t\tthis.notifications.set(id, {\r\n\t\t\tid: id,\r\n\t\t\ttype,\r\n\t\t\tlabel: text,\r\n\t\t\tname: id,\r\n\t\t\ticon: image,\r\n\t\t\tisOnce: isOnceAcknowledge,\r\n\t\t\tisOld: false\r\n\t\t});\r\n\t\tthis.updateCuiLayout();\r\n\t}\r\n\tremoveMessage(id) {\r\n\t\tif (this.notifications.has(id)) {\r\n\t\t\tthis.notifications.delete(id);\r\n\t\t}\r\n\t\tthis.updateCuiLayout();\r\n\t}\r\n\tclearCollection() {\r\n\t\tthis.notifications = new Map();\r\n\t\tthis.updateCuiLayout();\r\n\t}\r\n\tmakeAllMessagesOld() {\r\n\t\tthis.notifications.forEach((notification) => {\r\n\t\t\tnotification.isOld = true;\r\n\t\t});\r\n\t\tthis.updateCuiLayout();\r\n\t}\r\n\tclearOldMessages() {\r\n\t\tthis.notifications.forEach((notification) => {\r\n\t\t\tif (notification.isOld) {\r\n\t\t\t\tthis.notifications.delete(notification.id);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.updateCuiLayout();\r\n\t}\r\n\tgetMessageQuery() {\r\n\t\tconst queryDom = aras.createXMLDocument();\r\n\r\n\t\tqueryDom.loadXML('');\r\n\t\tconst currentUserIDNode = queryDom.createElement('CurrentUserID');\r\n\t\tconst dateTimeNode = queryDom.createElement('DateTime');\r\n\t\tconst intlObject = ArasModules.intl;\r\n\r\n\t\tcurrentUserIDNode.text = aras.getCurrentUserID();\r\n\t\tdateTimeNode.text = intlObject.date.toIS0Format(new Date());\r\n\r\n\t\tqueryDom.documentElement.appendChild(currentUserIDNode);\r\n\t\tqueryDom.documentElement.appendChild(dateTimeNode);\r\n\r\n\t\treturn queryDom.documentElement.xml;\r\n\t}\r\n\tasyncCheckNewMessages(getCollectionCallback) {\r\n\t\tconst resultCallbackHandler = (soapResult) => {\r\n\t\t\tconst messageCollection = this.processSoapResult(soapResult);\r\n\t\t\tgetCollectionCallback(this, messageCollection);\r\n\t\t};\r\n\r\n\t\tconst soapController = new window.SoapController(resultCallbackHandler);\r\n\r\n\t\tconst query = this.getMessageQuery();\r\n\t\twindow.aras.soapSend(\r\n\t\t\t'GetNotifications',\r\n\t\t\tquery,\r\n\t\t\tthis.url,\r\n\t\t\tnull,\r\n\t\t\tsoapController\r\n\t\t);\r\n\t}\r\n\tsyncGetMessageCollection() {\r\n\t\tconst query = this.getMessageQuery();\r\n\t\tconst soapResult = aras.soapSend('GetNotifications', query, this.url);\r\n\r\n\t\treturn this.processSoapResult(soapResult);\r\n\t}\r\n\tprocessSoapResult(soapResult) {\r\n\t\tif (soapResult.getFaultCode() !== 0) {\r\n\t\t\tArasModules.Dialog.alert('', {\r\n\t\t\t\ttype: 'soap',\r\n\t\t\t\tdata: soapResult\r\n\t\t\t});\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (soapResult.isFault()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn soapResult.getResult();\r\n\t}\r\n\trefreshUpdateDom(resultDom) {\r\n\t\tif (!resultDom) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.updateInfoDom = resultDom.selectSingleNode(\r\n\t\t\t'Item[@id=\"UpdateInfoMessage\"]'\r\n\t\t);\r\n\t}\r\n\tfillStandardMessageCollection(resultDom, clearBefore) {\r\n\t\tif (clearBefore) {\r\n\t\t\tthis.clearCollection();\r\n\t\t} else {\r\n\t\t\tthis.makeAllMessagesOld();\r\n\t\t}\r\n\r\n\t\tif (!resultDom) {\r\n\t\t\tthis.clearCollection();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst standardCollection = resultDom.selectNodes(\r\n\t\t\t'Item[type/text()=\"Standard\"]'\r\n\t\t);\r\n\r\n\t\tfor (let i = 0; i < standardCollection.length; i++) {\r\n\t\t\tconst messageItem = standardCollection[i];\r\n\t\t\tconst messageId = messageItem.getAttribute('id');\r\n\t\t\tconst title = aras.getItemProperty(messageItem, 'title');\r\n\t\t\tconst imageUrl = aras.getItemProperty(messageItem, 'icon');\r\n\t\t\tthis.addMessage(messageId, title, imageUrl, messageItem);\r\n\t\t}\r\n\r\n\t\tthis.clearOldMessages();\r\n\t}\r\n\tshowPopupCollection(resultDom, showAsModeless) {\r\n\t\tif (!resultDom) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst popupCollection = resultDom.selectNodes('Item[type/text()=\"Popup\"]');\r\n\r\n\t\tconst sortedList = this.sortMessagesByPriority(popupCollection);\r\n\t\tlet i = 0;\r\n\r\n\t\tconst nextSortedList = function () {\r\n\t\t\tif (i >= sortedList.length) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst index = sortedList.length - i - 1;\r\n\t\t\tif (!sortedList[index]) {\r\n\t\t\t\ti++;\r\n\t\t\t\treturn nextSortedList();\r\n\t\t\t}\r\n\t\t\tnextMsgIndex(index, 0);\r\n\t\t};\r\n\r\n\t\tconst nextMsgIndex = (index, msgIndex) => {\r\n\t\t\tif (msgIndex >= sortedList[index].length) {\r\n\t\t\t\ti++;\r\n\t\t\t\tnextSortedList();\r\n\t\t\t} else {\r\n\t\t\t\tthis.displayMessageDialog(\r\n\t\t\t\t\tsortedList[index][msgIndex],\r\n\t\t\t\t\tshowAsModeless,\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\tmsgIndex++;\r\n\t\t\t\t\t\t\tnextMsgIndex(index, msgIndex);\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tnextSortedList();\r\n\t}\r\n\tsortMessagesByPriority(messageCollection) {\r\n\t\tconst sortedList = [];\r\n\r\n\t\tfor (let i = 0; i < messageCollection.length; i++) {\r\n\t\t\tconst priority = aras.getItemProperty(messageCollection[i], 'priority');\r\n\t\t\tif (!sortedList[priority]) {\r\n\t\t\t\tsortedList[priority] = [];\r\n\t\t\t}\r\n\r\n\t\t\tsortedList[priority][sortedList[priority].length] = messageCollection[i];\r\n\t\t}\r\n\r\n\t\treturn sortedList;\r\n\t}\r\n\tupdateMessageCollection(doAsync, callback) {\r\n\t\tif (!doAsync) {\r\n\t\t\tdoAsync = false;\r\n\t\t}\r\n\r\n\t\tif (doAsync) {\r\n\t\t\tconst getCollectionCallback = function (container, messageCollection) {\r\n\t\t\t\tcontainer.refreshUpdateDom(messageCollection);\r\n\t\t\t\tcontainer.fillStandardMessageCollection(messageCollection);\r\n\t\t\t\tcontainer.showPopupCollection(messageCollection, true);\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.asyncCheckNewMessages(getCollectionCallback);\r\n\t\t} else {\r\n\t\t\tconst messageCollection = this.syncGetMessageCollection();\r\n\t\t\tthis.refreshUpdateDom(messageCollection);\r\n\t\t\tthis.fillStandardMessageCollection(messageCollection);\r\n\t\t\tthis.showPopupCollection(messageCollection, false);\r\n\t\t}\r\n\t}\r\n\tstartIterativeUpdateMessageCollection() {\r\n\t\tconst callback = () => {\r\n\t\t\tthis.checkTimeout = setTimeout(\r\n\t\t\t\tthis.startIterativeUpdateMessageCollection.bind(this),\r\n\t\t\t\tthis.checkInterval\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tthis.updateMessageCollection(true, callback);\r\n\t}\r\n\tdisplayMessageDialogById(messageId, showAsModeless) {\r\n\t\tif (messageId === 'UpdateInfoMessage') {\r\n\t\t\tthis.displayMessageDialog(this.updateInfoDom, showAsModeless);\r\n\t\t} else {\r\n\t\t\tconst messageItem = aras.getItemById('Message', messageId);\r\n\t\t\tif (messageItem) {\r\n\t\t\t\tthis.displayMessageDialog(messageItem, showAsModeless);\r\n\t\t\t} else {\r\n\t\t\t\tArasModules.Dialog.alert(\r\n\t\t\t\t\taras.getResource('', 'user_notifications.message_no_more_available')\r\n\t\t\t\t);\r\n\t\t\t\tthis.removeMessage(messageId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tdisplayMessageDialog(messageItem, showAsModeless, callback) {\r\n\t\tif (!messageItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst templateUrl = aras.getI18NXMLResource(\r\n\t\t\t'notification_popup_template.xml',\r\n\t\t\taras.getBaseURL()\r\n\t\t);\r\n\t\tconst templateDom = aras.createXMLDocument();\r\n\t\ttemplateDom.load(templateUrl);\r\n\r\n\t\tlet parameters =\r\n\t\t\tthis.popupParametersArray[aras.getItemProperty(messageItem, 'id')];\r\n\t\tif (!parameters) {\r\n\t\t\tparameters = {};\r\n\t\t}\r\n\r\n\t\tconst openedMessageWindow = parameters.window;\r\n\r\n\t\tparameters.id = aras.getItemProperty(messageItem, 'id');\r\n\t\tparameters.default_template =\r\n\t\t\ttemplateDom.selectSingleNode('template/html').text;\r\n\t\tparameters.custom_html = aras.getItemProperty(messageItem, 'custom_html');\r\n\r\n\t\tparameters.dialogWidth = aras.getItemProperty(messageItem, 'width');\r\n\t\tparameters.dialogHeight = aras.getItemProperty(messageItem, 'height');\r\n\t\tparameters.css = aras.getItemProperty(messageItem, 'css');\r\n\t\tparameters.is_standard_template =\r\n\t\t\taras.getItemProperty(messageItem, 'is_standard_template') === '1';\r\n\r\n\t\tif (!parameters.dialogWidth || parameters.is_standard_template) {\r\n\t\t\tparameters.dialogWidth = templateDom.selectSingleNode(\r\n\t\t\t\t'template/dialog_width'\r\n\t\t\t).text;\r\n\t\t}\r\n\r\n\t\tif (!parameters.dialogHeight || parameters.is_standard_template) {\r\n\t\t\tparameters.dialogHeight = templateDom.selectSingleNode(\r\n\t\t\t\t'template/dialog_height'\r\n\t\t\t).text;\r\n\t\t}\r\n\r\n\t\tparameters.title = aras.getItemProperty(messageItem, 'title');\r\n\t\tparameters.text = aras.getItemProperty(messageItem, 'text');\r\n\t\tparameters.url = aras.getItemProperty(messageItem, 'url');\r\n\t\tparameters.icon = aras.getItemProperty(messageItem, 'icon');\r\n\r\n\t\tparameters.OK_IsVisible =\r\n\t\t\taras.getItemProperty(messageItem, 'show_ok_button') === '1';\r\n\t\tparameters.Exit_IsVisible =\r\n\t\t\taras.getItemProperty(messageItem, 'show_exit_button') === '1';\r\n\r\n\t\tparameters.OK_Label = aras.getItemProperty(messageItem, 'ok_button_label');\r\n\t\tparameters.Exit_Label = aras.getItemProperty(\r\n\t\t\tmessageItem,\r\n\t\t\t'exit_button_label'\r\n\t\t);\r\n\r\n\t\tparameters.container = this;\r\n\t\tparameters.opener = window;\r\n\t\tparameters.writeContent = writeContent;\r\n\t\tparameters.aras = aras;\r\n\r\n\t\tthis.popupParametersArray[parameters.id] = parameters;\r\n\r\n\t\tif (!showAsModeless) {\r\n\t\t\tparameters.content = 'modalDialog.html';\r\n\r\n\t\t\twindow.ArasModules.Dialog.show('iframe', parameters)\r\n\t\t\t\t.promise.then((res) => {\r\n\t\t\t\t\tif (res === this.acknowledge) {\r\n\t\t\t\t\t\treturn this.acknowledgeMessage(messageItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (callback) {\r\n\t\t\t\t\t\treturn callback();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst sFeatures = `height=${parameters.dialogHeight}, width=${parameters.dialogWidth}`;\r\n\r\n\t\t\tif (openedMessageWindow) {\r\n\t\t\t\topenedMessageWindow.close();\r\n\t\t\t}\r\n\r\n\t\t\tconst OnBeforeUnloadHandler = async function () {\r\n\t\t\t\tconst container = parameters.window.parameters.container;\r\n\t\t\t\tif (parameters.window.returnValue === container.acknowledge) {\r\n\t\t\t\t\tawait container.acknowledgeMessage(messageItem);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t\tparameters.window = null;\r\n\t\t\t};\r\n\r\n\t\t\tparameters.window = window.open(\r\n\t\t\t\taras.getScriptsURL() + 'blank.html',\r\n\t\t\t\t'',\r\n\t\t\t\tsFeatures\r\n\t\t\t);\r\n\t\t\tparameters.window.focus();\r\n\t\t\twriteContent(parameters.window);\r\n\t\t\tparameters.window.parameters = parameters;\r\n\t\t\tparameters.window.addEventListener('beforeunload', OnBeforeUnloadHandler);\r\n\t\t}\r\n\r\n\t\tfunction uiDrawInputButton(name, value, handlerCode, className) {\r\n\t\t\treturn ``;\r\n\t\t}\r\n\r\n\t\tfunction writeContent(w) {\r\n\t\t\tconst doc = w.document;\r\n\t\t\tlet template;\r\n\t\t\tconst titleExpr = new RegExp('{TITLE}', 'g');\r\n\t\t\tconst urlExpr = new RegExp('{URL}', 'g');\r\n\t\t\tconst textExpr = new RegExp('{TEXT}', 'g');\r\n\t\t\tconst iconExpr = new RegExp('{ICON}', 'g');\r\n\r\n\t\t\tif (parameters.icon) {\r\n\t\t\t\tparameters.icon = aras.getScriptsURL() + parameters.icon;\r\n\t\t\t}\r\n\t\t\tif (!parameters.is_standard_template) {\r\n\t\t\t\ttemplate = parameters.custom_html.replace(titleExpr, parameters.title);\r\n\t\t\t\ttemplate = template.replace(urlExpr, parameters.url);\r\n\t\t\t\ttemplate = template.replace(textExpr, parameters.text);\r\n\t\t\t\ttemplate = template.replace(iconExpr, parameters.icon);\r\n\r\n\t\t\t\tdoc.write(template);\r\n\t\t\t} else {\r\n\t\t\t\ttemplate = parameters.default_template.replace(\r\n\t\t\t\t\ttitleExpr,\r\n\t\t\t\t\tparameters.title\r\n\t\t\t\t);\r\n\t\t\t\ttemplate = template.replace(urlExpr, parameters.url);\r\n\t\t\t\ttemplate = template.replace(textExpr, parameters.text);\r\n\t\t\t\ttemplate = template.replace(iconExpr, parameters.icon);\r\n\t\t\t\tdoc.write(template);\r\n\r\n\t\t\t\tif (parameters.css) {\r\n\t\t\t\t\tconst style = doc.createElement('style');\r\n\t\t\t\t\tstyle.innerHTML = parameters.css;\r\n\t\t\t\t\tdoc.head.appendChild(style);\r\n\t\t\t\t}\r\n\t\t\t\tconst notificationTitle = doc.getElementById('notification_title');\r\n\t\t\t\tconst titleElement = notificationTitle.appendChild(\r\n\t\t\t\t\tdoc.createElement('h2')\r\n\t\t\t\t);\r\n\t\t\t\ttitleElement.setAttribute('class', 'title');\r\n\t\t\t\tif (parameters.url) {\r\n\t\t\t\t\tconst urlElement = titleElement.appendChild(doc.createElement('a'));\r\n\t\t\t\t\turlElement.setAttribute('href', parameters.url);\r\n\t\t\t\t\turlElement.setAttribute('target', '_about');\r\n\t\t\t\t\turlElement.setAttribute('class', 'sys_item_link');\r\n\t\t\t\t\turlElement.textContent = parameters.title;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttitleElement.textContent = parameters.title;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!parameters.icon) {\r\n\t\t\t\t\tdoc.getElementById('message_icon').style.display = 'none';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tw.returnValue = parameters.container.closeText;\r\n\t\t\tw.closeWindow = function (value) {\r\n\t\t\t\tif (w.dialogArguments && w.dialogArguments.dialog) {\r\n\t\t\t\t\tw.dialogArguments.dialog.close(value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tw.returnValue = value || w.returnValue;\r\n\t\t\t\t\tw.close();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tdoc.close();\r\n\r\n\t\t\tlet innerHTML = '';\r\n\t\t\tif (parameters.OK_IsVisible) {\r\n\t\t\t\tinnerHTML += uiDrawInputButton(\r\n\t\t\t\t\t'OK_button',\r\n\t\t\t\t\tparameters.OK_Label,\r\n\t\t\t\t\t` window.closeWindow('${parameters.container.acknowledge}');`,\r\n\t\t\t\t\t'notification_ok_btn'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (parameters.Exit_IsVisible) {\r\n\t\t\t\tinnerHTML += uiDrawInputButton(\r\n\t\t\t\t\t'Exit_button',\r\n\t\t\t\t\tparameters.Exit_Label,\r\n\t\t\t\t\t` window.closeWindow('${parameters.container.closeText}');`,\r\n\t\t\t\t\t'cancel_button notification_exit_btn'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (innerHTML) {\r\n\t\t\t\tconst el = doc.createElement('center');\r\n\t\t\t\tel.innerHTML = innerHTML;\r\n\t\t\t\tconst source =\r\n\t\t\t\t\tdoc.getElementById('btns') || doc.getElementsByTagName('body')[0];\r\n\t\t\t\tif (source) {\r\n\t\t\t\t\tsource.appendChild(el);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tasync acknowledgeMessage(messageItem) {\r\n\t\tconst acknowledgeDom =\r\n\t\t\tmessageItem && messageItem.selectSingleNode('acknowledge');\r\n\t\tif (!acknowledgeDom || acknowledgeDom.text !== 'Once') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst messageId = messageItem.getAttribute('id');\r\n\r\n\t\tconst relsh = `\r\n\t\t\t\t${aras.getCurrentUserID()}\r\n\t\t\t\t${messageItem.getAttribute('id')}\r\n\t\t\t`;\r\n\r\n\t\ttry {\r\n\t\t\tawait ArasModules.soap(relsh, {\r\n\t\t\t\tmethod: 'ApplyItem',\r\n\t\t\t\tasync: true\r\n\t\t\t});\r\n\t\t\tthis.removeMessage(messageId);\r\n\t\t} catch (error) {\r\n\t\t\tconst errorResult = new SOAPResults(aras, error.responseText);\r\n\t\t\tif (errorResult.getFaultCode() !== 0) {\r\n\t\t\t\tawait ArasModules.Dialog.alert('', {\r\n\t\t\t\t\ttype: 'soap',\r\n\t\t\t\t\tdata: errorResult\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tdispose() {\r\n\t\tif (this.checkTimeout) {\r\n\t\t\tclearTimeout(this.checkTimeout);\r\n\t\t}\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport '../../NavigationPanel/NavigationPanel';\r\nimport './headerTabs';\r\nimport { favorites } from 'store';\r\nimport mainPageEventHandlers from './mainPageEventHandlers';\r\nimport MainWindowCuiLayout from '../../mainWindowCuiLayout/MainWindowCuiLayout';\r\nimport TocEditorCuiLayout from '../../mainWindowCuiLayout/TocEditor/TocEditorCuiLayout';\r\nimport UserNotificationsContainer from './userNotifications';\r\nimport notCertifiedBrowser from './notCertifiedBrowser';\r\n\r\nwindow.favorites = favorites;\r\nwindow.MainWindowCuiLayout = MainWindowCuiLayout;\r\nwindow.TocEditorCuiLayout = TocEditorCuiLayout;\r\nwindow.UserNotificationContainer = UserNotificationsContainer;\r\n\r\nexport {\r\n\tmainPageEventHandlers,\r\n\tMainWindowCuiLayout,\r\n\tTocEditorCuiLayout,\r\n\tUserNotificationsContainer,\r\n\tnotCertifiedBrowser\r\n};\r\n"],"names":["maxItemHeight","showUnpinDialog","async","item","tabs","confirmResult","ArasModules","Dialog","confirm","aras","getResource","title","okButtonText","okButtonModifier","removeTab","id","favorites","e","addTab","NavigationPanelTabs","Tabs","constructor","args","super","this","tooltipSettings","tooltipPosition","state","Map","Object","defineProperty","_resizeHandler","writable","value","render","created","useTooltip","vertical","connectedCallback","classList","add","setAttribute","window","addEventListener","disconnectedCallback","removeEventListener","visibleItems","maxVisibleItems","Math","max","floor","clientHeight","forEach","length","push","data","selectTab","get","locked","formatter","lockIconNode","createVNode","imageNode","_getImage","image","content","_getTooltipTemplate","define","icons","navContents","SvgManager","enqueue","values","contentTabId","contentTab","cssClass","getItemTypeIds","dataMap","itemTypeIds","Set","formId","itemTypeId","startPage","updateLockedStatus","has","set","getSidebarData","sidebarData","tooltip_template","additionalData","additional_data","favoriteItem","parentTab","label","getFavoriteItemTypes","filtered","favoriteMethods","reduce","acc","favorite","quickSearch","QuickSearch","ItemProperty","_pressEnterTimeout","_selectedItemIndex","initialize","placeholder","icon","focus","_this$state$refs$inpu","refs","input","clear","setState","list","_onInputFocusoutHandler","predictedValue","oldLabel","getSelectedItem","toUpperCase","_classPrivateFieldLooseBase","find","_onItemClickHandler","li","target","closest","indexOf","call","parentElement","children","_onKeyDownHandler","key","focusedIndex","requestTimeoutID","setTimeout","requestPromise","typingDelay","dispatchEvent","CustomEvent","bubbles","preventDefault","_getButtonTemplate","_getInputTemplate","className","_getIconContainerTemplate","map","includes","name","customElements","search","createItem","secondaryMenuClass","secondaryMenuHiddenClass","getQuickSearch","context","secondaryMenuData","itemTypeName","isQuickSearchDisabled","singularLabel","emptyMessage","wire","event","_openItem","getButtonsSection","canAdd","_createNewItem","createHyperHTMLNode","_searchItemType","pluralLabel","keyboardHandler","code","currentTarget","currentNode","querySelector","childNodes","nextElement","nextNode","tabIndex","getFavoriteCategory","categoryData","items","idx","overlayIcons","getUnpinFavoriteButton","unpinIcon","ownedBy","loggedUserIdentity","tooltipString","getFavoritesSection","favoriteCategories","_favoritesClick","_favoritesContextMenuHandler","secondaryMenu","back","close","defaultItemType","open","pinned","savedSearch","unpinned","disabledRowHighlightingClass","navFormatter","nav","itemValue","isDashboardItem","dashboard","leafTemplate","templates","getDefaultTemplate","nodeClassList","nodeIconUrl","Inferno","getFlagsForElementVnode","createInfernoVNode","utils","infernoFlags","unknownChildren","getFavoriteCategories","options","favoritesFilterCriteria","quickAccessFlag","contextType","favoriteSearches","favoriteItems","type","getItemTypeData","itemType","itemTypeMetadata","getItemType","propertiesWithKeyedName","getKeyedNameConfiguration","newCommand","createCommand","canExecute","openForbidden","isFunctionDisabled","commandName","commands","commandFactory","location","NavigationPanel","Sidebar","document","createElement","secondaryMenuItemTypeId","togglePin","toggleVisibility","visible","splitter","nextElementSibling","isVisible","toggle","isPinned","navHeader","_getSecondaryMenuData","contentsTitle","pinIcon","pinIconNode","backTitle","html","_hideSecondaryMenu","popupMenu","ContextMenu","_initContextMenuHandlers","_initContextMenuListeners","observer","MutationObserver","mutations","navPanel","panelWidth","style","width","left","observe","attributes","attributeFilter","_initTOC","_initTabs","resetState","sidebarTabs","contextMenuMethods","pinItemType","tabData","unpinItemType","tabsData","removedTab","getItemTypeByItemTypeId","tabId","openSearch","arasTabs","dispatchContextMenuEvent","detail","x","clientX","y","clientY","cuiEvent","on","itemKey","select","favoriteItemRow","unselectHighlightedItem","remove","dom","favoriteId","dataset","contextMenuDom","closeIfNotAcitive","activeElement","_hideIfNotPinned","element","isElement","Boolean","contains","isContextMenu","dataItem","tabItem","bind","handler","isNewTabOpened","_showSecondaryMenu","documentElement","_this$state$secondary","getItemTypeName","getIsAliasIdentityIDForLoggedUser","_updateSecondaryMenuData","visibility","itemTypeData","unpinIconNode","category","favoriteItemType","isVersionable","getItemMethod","itemNode","openCommand","execute","errorMessage","alertModule","openNewItemCommand","favoriteSearchId","Promise","resolve","then","selectedItem","getItemById","itemId","gridSearch","IFRAME_CSS_CLASS","PAGE_IFRAME_CSS_CLASS","HeaderTabs","props","draggableTabs","initialized","dropdownContainer","dropdownTabRender","_dropdownBox","_frameCssClass","_elem","firstElementChild","_movable","makeScroll","makeSelectable","makeDraggable","connectKeyboard","openForm","formName","MetadataCache","GetFormName","tab","url","getScriptsURL","winName","Date","now","win","updateTitleTab","openPage","LayoutConstructor","layoutId","closable","hasTab","containerNode","tabsContainer","getElementById","appendChild","layout","init","itemtypeID","scrollIntoView","selectedTab","itemTypePromise","_hideAll","frame","opacity","ejectTab","updateTabState","preventFocus","focusTab","tabContainer","contentWindow","nativeFocus","_getNextTabId","lastTabId","ignorePageCloseHooks","layoutDestroyed","tryDestroyLayout","replace","mainWindowName","uiUnregWindowEx","src","parentNode","removeChild","toString","isClosed","windowType","openNonItemWindow","selectItem","getAttribute","gettedItem","openInTearOff","uiShowItemEx","Dependencies","view","frameWindow","frameElement","paramObjectName","getKeyedNameEx","setTabContent","position","isUnfocused","iframe","isFirstTab","startsWith","addedTab","trim","opener","listTab","currentSelectedTabId","previousId","onmousedown","updateTabInformation","currentID","newID","index","dataObj","delete","assign","getSearchGridTabs","filter","isTabOpen","forceCloseAllTabs","destroy","editedTabs","promisesArray","isEdited","tabWindow","isDirtyEx","isTempEx","all","i","closeOtherTabs","excludedTabId","excludedTabIndex","removableTabs","slice","splice","closeTabs","getResourceManager","solution","resourceName","language","navigator","ResourceManager","Solution","images","warning","notCertifiedBrowser","resourceManager","getString","dialog","dialogNode","onContinueClick","rememberChoice","contentNode","checked","getFormatedString","Browser","getBrowserName","show","promise","storageKey","getUrlsKeys","strArray","localStorage","getItem","array","JSON","parse","exp","getBaseUrl","href","toLowerCase","addToLocalStorage","baseUrl","arrayUrls","setItem","stringify","keySessionStore","checkStorage","sessionStorage","validateBrowserCertified","isCertified","notCertifiedBrowserDialog","error","disabledCookies","message","selectTimeZone","winTzNames","timeZonesSelect","acceptTimeZone","createOkButton","createButtonContext","okButton","setTimeZoneNameInLocalStorage","tzLabel","winTzName","tzOffset","getTimezoneOffset","timeZones","getTimeZoneName","_timeZones","Intl","DateTimeFormat","resolvedOptions","timeZone","ex","inputType","localTime","toISOString","localTimeOffset","URL","getBaseURL","searchParams","tzRequest","fetch","json","Error","selectTimeZoneDialog","login","deepLinking","beforeInitializeLoginForm","OAuthServerDiscovery","discover","getServerBaseURL","result","deepLinkingResult","startItemHandled","oauthServerConfiguration","clientUrlsUtility","ClientUrlsUtility","clientBaseUrl","getBaseUrlWithoutSalt","OAuthClient","oauthClientId","navigatedFromRedirectCallbackKey","params","URLSearchParams","substr","prompt","database","authentication_type","returnUrl","removeItem","serviceWorker","active","worker","ready","salt","getSalt","payload","postMessage","status","onSuccessfulLogin","catch","err","AlertError","isLogged","SOAPResults","getFaultString","logout","onBeforeUnloadHandler","mainLayout","getCommonPropertyValue","isDirtyItems","onLogoutCommand","isExistAnyTabs","onLoadHandler","cookieEnabled","disabledCookiesDialog","timeZoneName","setCommonPropertyValue","setWindowLangAttribute","onUnloadHandler","getOpenedWindowsCount","dockHeaderTabs","undockHeaderTabs","mainPageEventHandlers","SPLIT_CSS_CLASS","ACTIVE_TABBAR_CSS_CLASS","DOCK_FRAME_CSS_CLASS","HeaderTabsContainer","_requestId","_activeTabbar","_setActiveTabbar","updateTabbarsStyle","size","actions","updateUndockedTabs","updateDockedTabs","eventType","callback","removeDockHandler","removeUndockHandler","attachContextMenu","contextMenu","tabsHandlers","dockTab","undockTab","isDockedTab","tabbar","closeTab","ids","clickOpenInTearOff","_moveTab","tabbarFrom","tabbarTo","updateTabbar","exitSplitscreen","isNeedSplit","tabsParentElement","splitterWidth","offsetWidth","splitterColumnWidth","startColumnSize","splitColumnStyle","shouldUpdateStyles","updateActiveTabbarObserver","startActiveTabbarObserver","stopActiveTabbarObserver","requestAnimationFrame","_checkActiveTabbar","cancelAnimationFrame","activeElementTagName","tagName","getTabbarByTabId","isDockTabbarActive","dockHeaderTabsExist","undockHeaderTabsExist","openedPageTabId","openCuiLayout","layoutConstructor","tabUiData","openedCuiLayoutId","openedFormTabId","toggleSplitScreenMode","isSplitScreenModeEnabled","updateTabs","newTabs","splitScreen","mainWindowActions","navigationPanel","updateVisibility","newState","tocContextMenuLocation","MainWindowCuiLayout","CuiLayout","_updateSideBar","_updateSideBar2","_initBackgroundPromise","_initTocPromise","backgroundPage","deferredLocations","initialState","dockTabs","mainTabs","waitForInit","cuiMethods","getLayoutCommandFactory","initHeader","_initializeHeader","initBackgroundPage","_initializeBackgroundPage","initToc","_initializeToc","initContextMenu","_initializeContextMenu","initHeaderTabsContextMenu","_initializeHeaderTabsContextMenu","headerControl","_registerHeaderHandlers","selectStartPage","_registerTocHandlers","_registerNavPanelHandlers","_setupNavPanel","_registerSidebarHandlers","_initializeSidebar","headerTabsContextMenu","_registerHeaderTabsContextMenuHandlers","_registerBackgroundPageHandlers","control_type","updateLayout","oldProps","oldState","renderHeader","_updateBackgroundPage","oldSplitScreen","newSplitScreen","notify","morphaes","needToCuiUpgrade","some","morphae","morphaeName","mapStateToProps","filteredFavorites","acum","cuiBackgroundPage","cuiContextMenu","toolbarComponent","cuiToolbar","firstChild","cuiToc","isTocPinned","getPreferenceItemProperty","subscribe","_toggleBackgroundPage","activeLocation","contextMenus","criteria","setPreferenceItemProperties","core_toc_pinned","Number","reinitControlItems","registerEventHandler","DeleteConfigurableUiDatesFromCache","hidden","renderOnly","splitScreenState","navData","favoriteItemTypes","edit","dashboardProperties","isDashboard","alias","property","decorateTemplateForDelatedItem","originFunction","originalTemplate","draggable","NavEditor","Nav","modifier","childNode","action","related_id","relatedId","relatedItem","relatedAction","statusIndicatorClass","statusClass","iconNode","labelNode","sortBySortOrder","sort","firstKey","secondKey","firstItem","secondItem","sort_order","createNavDataStore","roots","tocItems","levels","parentId","level","tocItem","entries","applyNavChanges","dataStore","rootsArr","tocMenuPrefix","tocCommandBarSectionId","sortOrderStep","sortOrderForDeleted","Infinity","getItemWithChanges","tocData","changes","itemChanges","getChildrenWithChanges","newData","change","oldItem","relshipItem","isChild","changedRelship","addItemChanges","existingChange","currentItemChanges","originalItem","wasItemResetToInitialState","propName","changedValue","createRelatedItem","_props$additional_dat","commandBarId","generateNewGUID","commandBarName","join","setSelectedItem","prevToSelectedId","nextToSelectedId","getSelectedButtonNeighbours","selectedId","_allItemsOnCurrentlev","_allItemsOnCurrentlev2","selectedRelationshipItem","selectedRelatedItem","currentItemFolderId","allItemsOnCurrentlevel","indexOfCurrentElementInFolder","findIndex","convertButtonToType","relatedChanges","relatedItemCopy","propsToClear","prop","newRelatedItem","normalizeSortOrders","treeLevelItems","newSortOrder","getRelatedItemTypeName","selectedRelatedId","isRootButtonSelected","tocEditorCuiActions","editItem","deleteItem","deletedItem","isNewItem","deletedParentId","indexOfDeletedItem","relshipChanges","childrenOfParent","isFolderDeleted","childrenOfDeletedFolder","relship","moveToRoot","convertToButton","child","sortOrder","discardChanges","selectedSortingType","sortingType","addRelationshipItem","relationshipItem","source_id","selectedSortOrder","addRelatedItem","setViewAs","_state$viewAs","prevTocData","viewAs","prevLanguages","languages","defaultLanguageCode","resetViewAs","setSelectedSortingType","setSortingType","setSortingTypesList","sortingTypesList","swapItemSortOrders","firstItemId","secondItemId","relatedItemId","parentMenuId","currentLevelItems","firstItemSortOrder","secondItemSortOrder","dropItem","parameters","targetParentId","insertPosition","draggedItem","draggedRelatedItem","currentParentId","currentLevelItemsWithoutDraggedItem","parentMenuRelshipItem","targetLevelItems","targetLevelItemsWithoutDraggedItem","buttonType","wasButtonMovedToRoot","wasButtonMovedFromRoot","getAccessFieldMetadata","required","validation","getImageFieldMetadata","getLabelFieldMetadata","getItemTypeFieldMetadata","getFormFieldMetadata","getSortFieldMetadata","getStartPageFieldMetadata","getPageParametersFieldMetadata","getItemFieldMetadata","stateData","propertyMetadataGenerators","access","form","getFormMetadata","order","disabled","metadata","getRelshipItem","getRelatedItem","getAccessValue","getMultiLingualValue","getImageValue","getItemTypeValue","getFormValue","getKeyedName","getSortValue","getPageValue","getItemValue","propertyValueGenerators","getFormValues","folder","page","generateFormData","getSortingFormData","getCategoryFormData","getItemTypeFormData","getPageDashboardFormData","getItemFormData","getFormDashboardFormData","getFormData","formData","undefined","getItemChange","newValue","getAdditionalData","isItemTypeWasChanged","changedRelatedId","changedRelatedItem","getFormChange","_form$metadata$propNa","viewAsAccordionStylesheet","CSSStyleSheet","replaceSync","viewAsAccordionCSS","ViewAsAccordion","Accordion","reversed","collapsed","shadowRoot","adoptedStyleSheets","header","renderViewAs","viewAsChangeHandler","formContext","formChangeHandler","_oldViewAs$detail$pro","oldViewAs","hasViewAsChanged","identityItemTypeName","languageItemTypeName","identityItemType","languageItemType","identityDisabled","keys","availableLanguages","languageDisabled","identity","open_icon","filterActive","filters","filterLabel","headerLabel","clearLabel","clearDisabledClass","clearHandler","stopPropagation","accordionContext","saveTOC","propsToSkip","propsToStringify","mlPropNamePrefix","getItemOrder","getParentId","getNestingDistance","fromId","toParentId","nestingLevel","changeEntries","sortedChanges","id1","id2","item1","item2","order1","order2","action1","type1","action2","type2","amlItems","odataType","substring","properties","propValue","realPropName","lang","split","mlPropName","multilingualProperties","itemObject","Item","doGetItem","jsonToXml","preferencesXml","Relationships","core_toc_sorting_type","requestToRefreshMetadataDate","requestXml","requestOptions","method","browserHelper","toggleSpinner","soap","alertSoapError","notifyTOCSaving","successMessage","TocEditorCuiLayout","_","formHeader","formView","spinner","viewAsForm","_renderViewAsForm","onTitleClick","relshipProperties","changedProperties","relshipChanged","_getSortPreferences","_initLanguageData","_registerTocEditorHandlers","oldChanges","oldSelectedId","oldTocData","_applyDataChanges","hasNewChanegs","newItemSelected","_selectItem","viewAsChanged","_renderForm","dragOn","tocEditorSaved","selectedItemParentMenu","itemToExpand","el","expand","_buildDataForToc","rawData","_list$","_list$$value","MetadataCacheJson","GetList","sortingTypeTable","sortingTypeList","Value","worldPreferenceId","currentSortingTypeUrl","currentSortingType","odataFetch","currentSortingTypePromise","_getCurrentSortingType","sortingTypesListPromise","_getSortingTypesList","promises","odataFilter","odataRelatedSelect","requestURL","headers","selectedLanguage","body","_fetchTOCDataForIdentity","_fetchTOCData","_updateTocDataForIdentity","getSessionContextLanguageCode","xml","selectNodes","getLanguagesResultNd","codePropertyNode","selectSingleNode","text","namePropertyNode","initTocPromise","preferencesPromise","UserNotificationContainer","control","notifyObserver","messageCheckInterval","commonProperties","MessageCheckInterval","alert","checkInterval","checkTimeout","acknowledge","closeText","updateInfoDom","popupParametersArray","startIterativeUpdateMessageCollection","notifications","extendControlWithNotificationButtonFormatter","updateMessageCollection","notificationsButtonFormatter","BUTTON_CLASS","hasOnceMessages","isOnce","buttonNode","tabindex","notificationCountModifier","notificationCountClass","msgCountNode","extendFormatters","updateCuiLayout","addMessage","messageItem","acknowledgeDom","isOnceAcknowledge","isOld","removeMessage","clearCollection","makeAllMessagesOld","notification","clearOldMessages","getMessageQuery","queryDom","createXMLDocument","loadXML","currentUserIDNode","dateTimeNode","intlObject","intl","getCurrentUserID","date","toIS0Format","asyncCheckNewMessages","getCollectionCallback","resultCallbackHandler","soapResult","messageCollection","processSoapResult","soapController","SoapController","query","soapSend","syncGetMessageCollection","getFaultCode","isFault","getResult","refreshUpdateDom","resultDom","fillStandardMessageCollection","clearBefore","standardCollection","messageId","getItemProperty","imageUrl","showPopupCollection","showAsModeless","popupCollection","sortedList","sortMessagesByPriority","nextSortedList","nextMsgIndex","msgIndex","displayMessageDialog","priority","doAsync","container","displayMessageDialogById","templateUrl","getI18NXMLResource","templateDom","load","openedMessageWindow","default_template","custom_html","dialogWidth","dialogHeight","css","is_standard_template","OK_IsVisible","Exit_IsVisible","OK_Label","Exit_Label","writeContent","res","acknowledgeMessage","sFeatures","OnBeforeUnloadHandler","returnValue","uiDrawInputButton","handlerCode","w","doc","template","titleExpr","RegExp","urlExpr","textExpr","iconExpr","write","innerHTML","head","notificationTitle","titleElement","urlElement","textContent","display","closeWindow","dialogArguments","source","getElementsByTagName","relsh","errorResult","responseText","dispose","clearTimeout","UserNotificationsContainer"],"mappings":"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"}