{"version":3,"file":"core.es.js","sources":["../Modules/core/aml.ts","../Modules/core/bunchSoap.ts","../Modules/core/vault.ts","../Modules/core/vaultUploader.ts","../Modules/components/prompt.ts","../Modules/components/trimSeparators.ts","../Modules/components/menu.tsx","../Modules/components/dropdown.ts","../Modules/components/dropdownButton.ts","../Modules/components/viewersTabs.tsx","../Modules/components/calendar.tsx","../Modules/components/timePicker.ts","../Modules/components/toolbarTemplates.tsx","../Modules/components/toolbar.ts","../Modules/components/formHelper.ts","../Modules/components/form.ts","../Modules/components/compatToolbarTemplates.tsx","../Modules/components/compatToolbar.ts","../Modules/components/classificationProperty.tsx","../Modules/components/scroller.ts","../Modules/components/switcher.ts","../Modules/components/pagination/paginationControls.ts","../Modules/components/pagination/paginationTemplates.tsx","../Modules/components/pagination/pagination.ts","../Modules/components/splitter.ts","../Modules/components/cardTableFormatters.tsx","../Modules/components/cardTable.tsx","../Modules/components/input.ts","../Modules/components/spinner.ts","../Modules/core/index.ts"],"sourcesContent":["import { xmlToJson } from './XmlToJson';\r\n\r\ninterface faultObject {\r\n\tfaultcode: string;\r\n\tfaultstring: string;\r\n\tdetail?: {\r\n\t\tafLegacyDetail?: string;\r\n\t\tafLlegacyFaultactor?: string;\r\n\t\tafException?: string;\r\n\t};\r\n}\r\n\r\nconst aml = {\r\n\tfaultToJSON(xml: HTMLElement): faultObject | null {\r\n\t\tconst result = xml?.firstChild?.firstChild?.firstChild;\r\n\t\tif (!result) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst isFault = result.nodeName.toLowerCase() === 'soap-env:fault';\r\n\r\n\t\tif (isFault) {\r\n\t\t\tconst obj = xmlToJson(result);\r\n\t\t\tdelete obj['@attrs'];\r\n\t\t\treturn obj;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n};\r\n\r\nexport default aml;\r\n","import { sessionSoap } from './SessionSoap';\r\nimport xml from './Xml';\r\nimport type { SoapOptions } from './coreTypes';\r\n\r\nlet isCollectRequests = false;\r\nlet bunchXML: Array = [];\r\nlet requestsPromises: Array<{\r\n\tresolve: (value?: unknown) => void;\r\n\treject: (reason?: unknown) => void;\r\n}> = [];\r\n\r\nconst collect = () => {\r\n\tisCollectRequests = true;\r\n\tbunchXML = [];\r\n\trequestsPromises = [];\r\n};\r\n\r\nconst soap = (requestBody: string, options: SoapOptions = {}) => {\r\n\tif (!isCollectRequests || options.method !== 'ApplyItem') {\r\n\t\treturn sessionSoap(requestBody, options);\r\n\t}\r\n\r\n\tconst promise = new Promise((resolve, reject) => {\r\n\t\trequestsPromises.push({ resolve, reject });\r\n\t});\r\n\r\n\tbunchXML.push(requestBody);\r\n\treturn promise;\r\n};\r\n\r\nconst complete = async () => {\r\n\tisCollectRequests = false;\r\n\r\n\ttry {\r\n\t\tconst resultSoap = await sessionSoap(`${bunchXML.join('')}`, {\r\n\t\t\tmethod: 'ApplyAML',\r\n\t\t\tasync: true\r\n\t\t});\r\n\t\tconst nodes = xml.selectNodes(resultSoap, 'Item');\r\n\r\n\t\tif (!nodes) {\r\n\t\t\trequestsPromises.forEach(({ resolve }) => resolve());\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\trequestsPromises.forEach(({ resolve }, i) => {\r\n\t\t\tconst result = xml.parseString(\r\n\t\t\t\t`${xml.getXml(nodes[i])}`\r\n\t\t\t);\r\n\t\t\tresolve(result.documentElement);\r\n\t\t});\r\n\t} catch (error) {\r\n\t\trequestsPromises.forEach(({ reject }) => {\r\n\t\t\treject(error);\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport { collect, soap, complete };\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nconst vault = {\r\n\t_downloadHelper: function (url, async) {\r\n\t\tconst frameId = 'downloadFrame';\r\n\t\tconst download = function () {\r\n\t\t\tlet frame = document.getElementById(frameId);\r\n\t\t\tif (frame === null) {\r\n\t\t\t\tframe = document.createElement('iframe');\r\n\t\t\t\tframe.id = frameId;\r\n\t\t\t\tframe.style.display = 'none';\r\n\t\t\t\tdocument.body.appendChild(frame);\r\n\t\t\t}\r\n\t\t\tframe.src = url;\r\n\t\t};\r\n\t\tconst xhr = new XMLHttpRequest();\r\n\t\txhr.open('HEAD', url, async);\r\n\t\txhr.send();\r\n\t\tif (async) {\r\n\t\t\treturn new Promise(function (resolve, reject) {\r\n\t\t\t\tconst asyncCallback = function (e) {\r\n\t\t\t\t\tif (e.target.status !== 200) {\r\n\t\t\t\t\t\treturn reject(\r\n\t\t\t\t\t\t\tnew Error(\r\n\t\t\t\t\t\t\t\t`The file has not been downloaded: (${e.target.status}) ${e.target.statusText}`\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\t\t\t\t\tdownload();\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t};\r\n\t\t\t\tconst errorCallback = function (e) {\r\n\t\t\t\t\treject(\r\n\t\t\t\t\t\tnew Error(\r\n\t\t\t\t\t\t\t`Connection error: (${e.target.status || 500}) ${\r\n\t\t\t\t\t\t\t\te.target.statusText\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\t\t\t\t};\r\n\t\t\t\txhr.addEventListener('load', asyncCallback);\r\n\t\t\t\txhr.addEventListener('error', errorCallback);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (xhr.status !== 200) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t'Server status: ' + xhr.status + '. The file has not been downloaded!'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tdownload();\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Downloading file using frame.\r\n\t * Create HEAD request to check if file exists and\r\n\t * use frame to download it.\r\n\r\n\t * @param {string} url\r\n\t * @return {Promise}\r\n\t*/\r\n\tdownloadFile: function (url) {\r\n\t\treturn this._downloadHelper(url, true);\r\n\t},\r\n\r\n\t/**\r\n\t * Opening file select dialog.\r\n\r\n\t * @return {Promise}\r\n\t*/\r\n\tselectFile: function () {\r\n\t\tconst previouslyAddedNode = document.getElementById('fileSelector');\r\n\t\tif (previouslyAddedNode) {\r\n\t\t\tdocument.body.removeChild(previouslyAddedNode);\r\n\t\t}\r\n\t\tconst inputNode = document.createElement('input');\r\n\t\tinputNode.style.display = 'none';\r\n\t\tinputNode.type = 'file';\r\n\t\tinputNode.id = 'fileSelector';\r\n\t\tdocument.body.appendChild(inputNode);\r\n\r\n\t\treturn new Promise(function (resolve) {\r\n\t\t\tinputNode.addEventListener(\r\n\t\t\t\t'change',\r\n\t\t\t\tfunction (e) {\r\n\t\t\t\t\tresolve(e.target.files[0]);\r\n\t\t\t\t\tdocument.body.removeChild(e.target);\r\n\t\t\t\t},\r\n\t\t\t\tfalse\r\n\t\t\t);\r\n\t\t\tinputNode.click();\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Saving Blob object as file.\r\n\t * Create link with download attribute\r\n\t * and trigger click on it to open window.\r\n\t @param {string} blob\r\n\t @param {string} fileName\r\n\t */\r\n\tsaveBlob: function (blob, fileName) {\r\n\t\tconst link = document.createElement('a');\r\n\t\tlink.style.display = 'none';\r\n\t\tlink.href = URL.createObjectURL(blob);\r\n\t\tlink.download = fileName;\r\n\t\tdocument.body.appendChild(link);\r\n\t\tlink.click();\r\n\t\tdocument.body.removeChild(link);\r\n\t}\r\n};\r\n\r\nexport default vault;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport xml from './Xml';\r\nimport { soap } from './Soap';\r\nimport vault from './vault';\r\nimport getResource from './resources';\r\n/**\r\n * @typedef {File} ExtendedFile\r\n * @property {String} fileItemId - Id from AML Item of file\r\n *\r\n * Internal module type.\r\n */\r\n\r\n/**\r\n * @typedef {String} FileState\r\n *\r\n * Internal module type.\r\n * Each file have states:\r\n * - \"pending\" - file not uploaded and has waiting for upload;\r\n * - \"in progress\" - some chunks of file currently are in upload;\r\n * - \"uploaded\" - file is uploaded.\r\n */\r\n\r\n/**\r\n * @typedef {Object} Chunk\r\n * @property {Blob} data\r\n * @property {Number} from - Count of file bytes where starts the chunk range\r\n * @property {Number} to - Count of file bytes where ends the chunk range\r\n *\r\n * Internal module type.\r\n * Serves to allow a possibility to upload a chunk multiple times\r\n */\r\n\r\n/**\r\n * Serves to store the states of file uploading\r\n *\r\n * @param {ExtendedFile} file\r\n * @param {Boolean} isAsync\r\n *\r\n * @property {String} fileName\r\n * @property {String} fileItemId\r\n * @property {Number} fileSize\r\n * @property {File} _file\r\n * @property {Boolean} _isAsync - Chunks of file can be uploaded synchronously or not\r\n * @property {FileState} _state\r\n * @property {Number} _sentBytes - Watch to\r\n * @property {Number} _readingPoint\r\n * @property {Number} chunkSize\r\n *\r\n * @constructor\r\n */\r\nclass FileWrapper {\r\n\tchunkSize = 16 * 1024 * 1024; // 16 Mb\r\n\r\n\tconstructor(file, isAsync, worker) {\r\n\t\tthis.fileName = file.name;\r\n\t\tthis.fileItemId = file.fileItemId;\r\n\t\tthis.fileSize = file.size;\r\n\r\n\t\tthis._file = file;\r\n\t\tthis._isAsync = isAsync;\r\n\t\tthis._state = 'pending';\r\n\r\n\t\tthis._sentBytes = 0;\r\n\t\tthis._readingPoint = 0;\r\n\r\n\t\tif (this.fileSize && worker) {\r\n\t\t\tthis._hashWaiting = {};\r\n\t\t\tthis._hashes = {};\r\n\t\t\tthis.initialize(worker);\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Method needs to split file at chunks to upload.\r\n\t * Chunks splits by the schema:\r\n\t * ChunkSize = 16 Mb\r\n\t *\r\n\t * file: [________________36Mb________________]\r\n\t * 1 ch: [0Mb + 16Mb]_________________________\r\n\t * 2 ch: ____________[16Mb + 16Mb]____________\r\n\t * 3 ch: _________________________[32Mb + 4Mb]\r\n\t *\r\n\t * @return {Chunk|undefined} undefined if file is empty\r\n\t */\r\n\tasync getData() {\r\n\t\tthis._state = 'in progress';\r\n\r\n\t\tif (this.fileSize === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst offset = this._readingPoint;\r\n\t\tthis._readingPoint = Math.min(this.fileSize, offset + this.chunkSize);\r\n\r\n\t\tif (this.errorMessage) {\r\n\t\t\tthrow new Error(this.errorMessage);\r\n\t\t}\r\n\r\n\t\tif (!this._hashes || this._hashes[offset]) {\r\n\t\t\treturn this._formatPacket(offset);\r\n\t\t}\r\n\r\n\t\treturn new Promise(\r\n\t\t\t(resolve, reject) => (this._hashWaiting[offset] = { resolve, reject })\r\n\t\t);\r\n\t}\r\n\t/**\r\n\t * Toggles state of file upload to \"uploaded\" or \"pending\"\r\n\t */\r\n\tendUpload() {\r\n\t\tthis._sentBytes = Math.min(this.fileSize, this._sentBytes + this.chunkSize);\r\n\t\tthis._state = this._sentBytes === this.fileSize ? 'uploaded' : 'pending';\r\n\t}\r\n\tisAllowedUpload() {\r\n\t\tif (\r\n\t\t\tthis._state === 'uploaded' ||\r\n\t\t\t(!this._isAsync && this._state === 'in progress')\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t} else if (this.fileSize === 0 && this._state === 'pending') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this._readingPoint < this.fileSize;\r\n\t}\r\n\tinitialize(worker) {\r\n\t\tlet offset = 0;\r\n\t\tconst receiveHash = (e) => {\r\n\t\t\tconst receivedData = e.data;\r\n\r\n\t\t\tif (receivedData.error) {\r\n\t\t\t\tthis.errorMessage =\r\n\t\t\t\t\tgetResource('item_methods.file_moved_or_renamed', this.fileName) +\r\n\t\t\t\t\t'\\r\\nDetails: ' +\r\n\t\t\t\t\treceivedData.error;\r\n\t\t\t\tif (this._hashWaiting[receivedData.offset]) {\r\n\t\t\t\t\tthis._hashWaiting[receivedData.offset].reject(\r\n\t\t\t\t\t\tnew Error(this.errorMessage)\r\n\t\t\t\t\t);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (receivedData.fileId === this.fileItemId) {\r\n\t\t\t\toffset = Math.min(this.fileSize, offset + this.chunkSize);\r\n\t\t\t\tthis._hashes[receivedData.offset] = receivedData.xxhash;\r\n\r\n\t\t\t\tif (this._hashWaiting[receivedData.offset]) {\r\n\t\t\t\t\tthis._hashWaiting[receivedData.offset].resolve(\r\n\t\t\t\t\t\tthis._formatPacket(receivedData.offset)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (offset < this.fileSize) {\r\n\t\t\t\t\tworker.postMessage(this._formatPacket(offset));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tworker.addEventListener('message', receiveHash);\r\n\t\tworker.postMessage(this._formatPacket(0));\r\n\t}\r\n\r\n\t_formatPacket(offset) {\r\n\t\tconst to = Math.min(this.fileSize, offset + this.chunkSize);\r\n\t\treturn {\r\n\t\t\tfileId: this.fileItemId,\r\n\t\t\tfrom: offset,\r\n\t\t\tto: to,\r\n\t\t\thash: this._hashes ? this._hashes[offset] : null,\r\n\t\t\tdata: this._file.slice(offset, to)\r\n\t\t};\r\n\t}\r\n}\r\n\r\n/**\r\n * Class is needed for encapsulation of each upload transaction of files\r\n * to providing opportunity to send more than 1 set of files to upload and prevent conflicts.\r\n *\r\n * @param {FileList|File[]} files\r\n * @param {{credentials: Object, isAsync: Boolean, serverUrl: String}} options\r\n * @param {String} aml\r\n *\r\n * @property {Object} _credentials\r\n * @property {String} _serverUrl\r\n * @property {FileWrapper[]} _filesWrappers\r\n * @property {Number} attempts - The number of attempts of try to repeat upload chunk\r\n *\r\n * @constructor\r\n */\r\nclass FilesUploader {\r\n\tconstructor(files, options, aml) {\r\n\t\tthis._credentials = { ...options.credentials };\r\n\t\tthis._serverUrl = options.serverUrl;\r\n\t\tthis._fileWrappers = [];\r\n\t\tthis.attempts = 10;\r\n\t\tthis.progressCallback = options.progress;\r\n\r\n\t\tthis._initFileWrappers(files, !!options.isAsync, aml);\r\n\t}\r\n\t/**\r\n\t * @param {FileList|File[]} files\r\n\t * @param {Boolean} isAsync\r\n\t * @param {String} aml\r\n\t * @private\r\n\t */\r\n\t_initFileWrappers(files, isAsync, aml) {\r\n\t\tconst doc = xml.parseString(aml);\r\n\t\tconst fileItems = xml.selectNodes(\r\n\t\t\tdoc,\r\n\t\t\t\"//Item[@type='File' and @action='add']\"\r\n\t\t);\r\n\t\tif (!this._serverUrl.startsWith('https')) {\r\n\t\t\tthis._xxhWorker = new Worker('../Modules/core/xxhWorker.js');\r\n\t\t}\r\n\r\n\t\t// search item file id for upload transaction\r\n\t\tconst wrappersArray = Array.from(files).map((file) => {\r\n\t\t\tlet index;\r\n\t\t\tconst foundFileItem = fileItems.find((fileItem, idx) => {\r\n\t\t\t\tindex = idx;\r\n\t\t\t\treturn file.name === fileItem.selectSingleNode('filename').text;\r\n\t\t\t});\r\n\t\t\tfile.fileItemId = foundFileItem.getAttribute('id');\r\n\t\t\tfileItems.splice(index, 1);\r\n\t\t\treturn new FileWrapper(file, isAsync, this._xxhWorker);\r\n\t\t});\r\n\r\n\t\tthis._fileWrappers = [...this._fileWrappers, ...wrappersArray];\r\n\t}\r\n\t/**\r\n\t * Sets the existing transaction id as request header with the other headers.\r\n\t * Thus server can identify a context of uploaded files\r\n\t *\r\n\t * @param {XMLHttpRequest} xhr\r\n\t * @param {Object} [headers]\r\n\t * @private\r\n\t */\r\n\t_setHeaders(xhr, headers = {}) {\r\n\t\tconst topWnd = TopWindowHelper.getMostTopWindowWithAras();\r\n\t\tconst aras = topWnd.aras;\r\n\r\n\t\theaders = {\r\n\t\t\t...this._credentials,\r\n\t\t\t...headers,\r\n\t\t\t...aras.OAuthClient.getAuthorizationHeader()\r\n\t\t};\r\n\r\n\t\tif (this._transactionId) {\r\n\t\t\theaders.transactionid = this._transactionId;\r\n\t\t}\r\n\r\n\t\tObject.keys(headers).forEach(function (header) {\r\n\t\t\txhr.setRequestHeader(header, headers[header]);\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * @param {String|Node} response\r\n\t * @returns {Node|undefined}\r\n\t * @private\r\n\t */\r\n\t_selectResultNode(response) {\r\n\t\tif (response.nodeName) {\r\n\t\t\treturn response;\r\n\t\t}\r\n\r\n\t\tconst xmlModule = xml;\r\n\t\tconst doc = xmlModule.parseString(response);\r\n\r\n\t\treturn xmlModule.selectSingleNode(doc, '//Result');\r\n\t}\r\n\t/**\r\n\t * Serves to beginning of upload transaction on the server and takes its transaction id\r\n\t *\r\n\t * @returns {Promise} Resolves without parameters\r\n\t */\r\n\tasync beginTransaction() {\r\n\t\ttry {\r\n\t\t\tconst response = await soap('', {\r\n\t\t\t\tasync: true,\r\n\t\t\t\tmethod: 'BeginTransaction',\r\n\t\t\t\turl: this._serverUrl,\r\n\t\t\t\theaders: { ...this._credentials }\r\n\t\t\t});\r\n\t\t\tconst node = this._selectResultNode(response);\r\n\r\n\t\t\tif (!node) {\r\n\t\t\t\t// will caught below to throw an error\r\n\t\t\t\tawait Promise.reject(new Error(\"Response doesn't contain Result node\"));\r\n\t\t\t}\r\n\r\n\t\t\tthis._transactionId = node.text;\r\n\t\t} catch (res) {\r\n\t\t\tif (res instanceof Error) {\r\n\t\t\t\tthrow res;\r\n\t\t\t}\r\n\t\t\tthrow new Error(\r\n\t\t\t\tres.status +\r\n\t\t\t\t\t' occurred while beginning transaction with text: ' +\r\n\t\t\t\t\tres.responseText\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Serves to rollback of upload transaction on the server which removes earlier uploaded files\r\n\t *\r\n\t * @returns {undefined | Promise} undefined returns if no sense in rollback | Promise resolves with xhr\r\n\t */\r\n\tasync rollbackTransaction() {\r\n\t\tif (!this._transactionId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn await soap('', {\r\n\t\t\tasync: true,\r\n\t\t\tmethod: 'RollbackTransaction',\r\n\t\t\turl: this._serverUrl,\r\n\t\t\theaders: { transactionid: this._transactionId, ...this._credentials }\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * Serves to commit of upload transaction on the server and applies aml as the context of uploaded files\r\n\t *\r\n\t * @param {String} aml\r\n\t * @returns {Promise} Resolves with xml node\r\n\t */\r\n\tcommitTransaction(aml) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst formData = new FormData();\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\r\n\t\t\tformData.append('XMLData', aml);\r\n\r\n\t\t\txhr.open('POST', this._serverUrl, true);\r\n\t\t\tthis._setHeaders(xhr, {\r\n\t\t\t\tSOAPAction: 'CommitTransaction'\r\n\t\t\t});\r\n\t\t\txhr.addEventListener('error', () => {\r\n\t\t\t\treject(xhr);\r\n\t\t\t});\r\n\t\t\txhr.addEventListener('load', () => {\r\n\t\t\t\tif (xhr.status < 200 || xhr.status > 299) {\r\n\t\t\t\t\treject(xhr);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst node = this._selectResultNode(xhr.responseText);\r\n\r\n\t\t\t\t\tif (!node) {\r\n\t\t\t\t\t\treject(xhr);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresolve(node);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\txhr.send(formData);\r\n\t\t}).catch((xhr) => {\r\n\t\t\tif (xhr.status === 200) {\r\n\t\t\t\tconst responseXML = xml.parseString(xhr.responseText);\r\n\t\t\t\tthrow responseXML;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error(\r\n\t\t\t\txhr.status +\r\n\t\t\t\t\t' occurred while commit transaction with text: ' +\r\n\t\t\t\t\txhr.responseText\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * Encodes file name for Content-Disposition\r\n\t *\r\n\t * @returns {String} Encoded string\r\n\t * @private\r\n\t */\r\n\t_encodeRFC5987ValueChars(str) {\r\n\t\t// noinspection JSDeprecatedSymbols\r\n\t\treturn encodeURIComponent(str)\r\n\t\t\t.replace(/['()]/g, escape) // i.e., %27 %28 %29\r\n\t\t\t.replace(/\\*/g, '%2A')\r\n\t\t\t.replace(/%(?:7C|60|5E)/g, unescape);\r\n\t}\r\n\t/**\r\n\t * @returns {undefined | FileWrapper} A wrapper of file which is not uploaded fully\r\n\t * @private\r\n\t */\r\n\t_searchNotUploadedFile() {\r\n\t\treturn this._fileWrappers.find((fileWrapper) =>\r\n\t\t\tfileWrapper.isAllowedUpload()\r\n\t\t);\r\n\t}\r\n\t/** @private */\r\n\t_upload(fileWrapper, dataObject) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst xhr = new XMLHttpRequest();\r\n\t\t\tconst url =\r\n\t\t\t\tthis._serverUrl +\r\n\t\t\t\t(this._serverUrl.indexOf('?') > -1 ? '&' : '?') +\r\n\t\t\t\t'fileId=' +\r\n\t\t\t\tfileWrapper.fileItemId;\r\n\r\n\t\t\txhr.open('POST', url, true);\r\n\t\t\txhr.addEventListener('error', (event) => {\r\n\t\t\t\tconst xhr = event.target;\r\n\t\t\t\t// Detect that file was removed or rename\r\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 0) {\r\n\t\t\t\t\tthis.attempts = 0;\r\n\t\t\t\t\tconst message =\r\n\t\t\t\t\t\tgetResource(\r\n\t\t\t\t\t\t\t'item_methods.file_moved_or_renamed',\r\n\t\t\t\t\t\t\tfileWrapper.fileName\r\n\t\t\t\t\t\t) +\r\n\t\t\t\t\t\t'\\r\\nDetails: ' +\r\n\t\t\t\t\t\txhr.statusText;\r\n\t\t\t\t\treject(message);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\treject(xhr.statusText);\r\n\t\t\t});\r\n\t\t\txhr.addEventListener('load', function (event) {\r\n\t\t\t\tif (event.target.status !== 200) {\r\n\t\t\t\t\treject(event.target.statusText);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tfileWrapper.endUpload();\r\n\t\t\t\tresolve();\r\n\t\t\t});\r\n\r\n\t\t\tconst contentRange = !dataObject\r\n\t\t\t\t? '*/0'\r\n\t\t\t\t: dataObject.from +\r\n\t\t\t\t '-' +\r\n\t\t\t\t (dataObject.to - 1) +\r\n\t\t\t\t '/' +\r\n\t\t\t\t fileWrapper.fileSize;\r\n\r\n\t\t\tconst headers = {\r\n\t\t\t\t'Content-Type': 'application/octet-stream',\r\n\t\t\t\t'Content-Range': 'bytes ' + contentRange,\r\n\t\t\t\tSOAPAction: 'UploadFile',\r\n\t\t\t\t'Content-Disposition':\r\n\t\t\t\t\t\"attachment; filename*=utf-8''\" +\r\n\t\t\t\t\tthis._encodeRFC5987ValueChars(fileWrapper.fileName)\r\n\t\t\t};\r\n\t\t\tif (this._xxhWorker) {\r\n\t\t\t\theaders['Aras-Content-Range-Checksum'] = dataObject\r\n\t\t\t\t\t? dataObject.hash\r\n\t\t\t\t\t: '46947589';\r\n\t\t\t\theaders['Aras-Content-Range-Checksum-Type'] =\r\n\t\t\t\t\t'xxHashAsUInt32AsDecimalString';\r\n\t\t\t}\r\n\t\t\tthis._setHeaders(xhr, headers);\r\n\t\t\txhr.send(dataObject ? dataObject.data : null);\r\n\t\t}).catch((message) => {\r\n\t\t\tif (this.attempts > 0) {\r\n\t\t\t\tthis.attempts--;\r\n\t\t\t\treturn this._upload(fileWrapper, dataObject);\r\n\t\t\t}\r\n\t\t\tthis.attempts--;\r\n\t\t\treturn Promise.reject(new Error(message));\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * Serves to filter and send data to the server\r\n\t *\r\n\t * @returns {Promise} undefined returns if no data to send or file already loaded in sync mode\r\n\t * Promise resolves without parameters\r\n\t */\r\n\tasync send() {\r\n\t\tconst fileWrapper = this._searchNotUploadedFile();\r\n\t\tif (!fileWrapper || this.attempts === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst dataPromise = fileWrapper.getData();\r\n\t\tthis.indicateProgress(fileWrapper);\r\n\t\tconst data = await dataPromise;\r\n\t\tawait this._upload(fileWrapper, data);\r\n\t\tthis.indicateProgress(fileWrapper);\r\n\r\n\t\tawait this.send();\r\n\t}\r\n\tindicateProgress(fileWrapper) {\r\n\t\tif (this.progressCallback) {\r\n\t\t\tconst currentFileProgress = this.getFileProgress(fileWrapper);\r\n\t\t\tconst allFilesProgress = this._fileWrappers.map(this.getFileProgress);\r\n\t\t\tthis.progressCallback(currentFileProgress, allFilesProgress);\r\n\t\t}\r\n\t}\r\n\tgetFileProgress(fileWrapper) {\r\n\t\treturn {\r\n\t\t\tstate: fileWrapper._state,\r\n\t\t\tfileName: fileWrapper.fileName,\r\n\t\t\tfileItemId: fileWrapper.fileItemId,\r\n\t\t\tfileSize: fileWrapper.fileSize,\r\n\t\t\tsentBytes: fileWrapper._sentBytes,\r\n\t\t\tisAsync: fileWrapper._isAsync\r\n\t\t};\r\n\t}\r\n\tdestroyWorker() {\r\n\t\tif (this._xxhWorker) {\r\n\t\t\tthis._xxhWorker.terminate();\r\n\t\t\tthis._xxhWorker = null;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Serves to control upload queue of data.\r\n * For each call of send makes new instance of it to avoid redundant\r\n * complexity in cases when exists only one vault instance in application.\r\n *\r\n * @constructor\r\n */\r\nclass RequestsManager {\r\n\tparallelRequests = 3;\r\n\t/**\r\n\t * Serves to start parallel requests\r\n\t *\r\n\t * @param {FilesUploader} filesUploader\r\n\t * @returns {Promise} Resolves without parameters\r\n\t * @private\r\n\t */\r\n\tasync _upload(filesUploader) {\r\n\t\tconst array = [];\r\n\t\tfor (let i = this.parallelRequests; i--; ) {\r\n\t\t\tarray.push(filesUploader.send());\r\n\t\t}\r\n\r\n\t\treturn await Promise.all(array);\r\n\t}\r\n\t/**\r\n\t * Serves to control action sequence of upload\r\n\t *\r\n\t * @param {FileList|File[]} files\r\n\t * @param {{credentials: Object, isAsync: Boolean, serverUrl: String}} options\r\n\t * @param {String} aml\r\n\t * @returns {Promise|undefined} Resolves with response after commit transaction\r\n\t */\r\n\tasync send(files, options, aml) {\r\n\t\tconst filesUploader = new FilesUploader(files, options, aml);\r\n\r\n\t\ttry {\r\n\t\t\tawait filesUploader.beginTransaction();\r\n\t\t\tawait this._upload(filesUploader);\r\n\t\t\tfilesUploader.destroyWorker();\r\n\t\t\tconst result = await filesUploader.commitTransaction(aml);\r\n\t\t\treturn result;\r\n\t\t} catch (e) {\r\n\t\t\tfilesUploader.destroyWorker();\r\n\t\t\tfilesUploader.rollbackTransaction();\r\n\t\t\tthrow e;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nlet vaultUploader = {\r\n\toptions: {\r\n\t\tserverUrl: 'http://localhost/S11-0-SP8',\r\n\t\tcredentials: {},\r\n\t\tisAsync: false\r\n\t},\r\n\t/**\r\n\t * @param {FileList|File[]} files\r\n\t * @param {String} aml\r\n\t * @param {Object} options\r\n\t * @param {Function} {options.progress} progress callback\r\n\t * @returns {Promise}\r\n\t */\r\n\tsend: function (files, aml, options) {\r\n\t\treturn new RequestsManager().send(\r\n\t\t\tfiles,\r\n\t\t\t{ ...this.options, ...options },\r\n\t\t\taml\r\n\t\t);\r\n\t}\r\n};\r\n\r\nvaultUploader = Object.assign(vault || {}, vaultUploader);\r\nexport default vaultUploader;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { wire, bind } from 'hyperhtml';\r\nimport Dialog from '../core/Dialog';\r\nimport { createButtonContext } from './dialogCommonApi';\r\nimport getResource from '../core/resources';\r\n\r\nfunction promptModule(\r\n\tlabel = getResource('common.prompt_label'),\r\n\toptions = {}\r\n) {\r\n\tconst {\r\n\t\tcancelButtonModifier = 'aras-button_secondary-light',\r\n\t\tokButtonModifier = 'aras-button_primary aras-buttons-bar__button',\r\n\t\tokButtonText = getResource('common.ok'),\r\n\t\ttitle = getResource('common.prompt_title'),\r\n\t\tdefaultValue = null,\r\n\t\trequired = false,\r\n\t\tpattern = null,\r\n\t\tdialogClassModifier\r\n\t} = options;\r\n\tconst cssClassName = 'aras-dialog-prompt';\r\n\tconst promptDialog = new Dialog('html', {\r\n\t\tclassList: cssClassName,\r\n\t\ttitle\r\n\t});\r\n\tif (dialogClassModifier) {\r\n\t\tpromptDialog.dialogNode.classList.add(dialogClassModifier);\r\n\t}\r\n\tconst createOkButton = createButtonContext();\r\n\tconst okBtn = createOkButton(okButtonText, okButtonModifier, () =>\r\n\t\tpromptDialog.close(input.value)\r\n\t);\r\n\tconst createCancelButton = createButtonContext();\r\n\tconst cancelBtn = createCancelButton(\r\n\t\tgetResource('common.cancel'),\r\n\t\tcancelButtonModifier,\r\n\t\t() => promptDialog.close(null)\r\n\t);\r\n\tconst checkValidity = () => {\r\n\t\tif (required || pattern) {\r\n\t\t\tokBtn.disabled = !input.validity.valid;\r\n\t\t}\r\n\t};\r\n\tconst onKeyPress = (event) => {\r\n\t\tif (event.code === 'Enter' && input.validity.valid) {\r\n\t\t\tpromptDialog.close(input.value);\r\n\t\t}\r\n\t};\r\n\tconst onInput = required || pattern ? checkValidity : null;\r\n\tconst labelClass = `${cssClassName}__label`;\r\n\tconst inputClass = `${cssClassName}__input aras-input`;\r\n\tconst input = wire()``;\r\n\tbind(promptDialog.contentNode)`\r\n\t\t\r\n\t\t
\r\n\t\t\t${okBtn}${cancelBtn}\r\n\t\t
\r\n\t`;\r\n\tcheckValidity();\r\n\r\n\tpromptDialog.show();\r\n\treturn promptDialog.promise;\r\n}\r\n\r\nexport default promptModule;\r\n","import type { toolbarItems } from './toolbarTypes';\r\n\r\nconst trimSeparators = (\r\n\tdata: Map,\r\n\titems: string[]\r\n): string[] => {\r\n\tif (!items.length) {\r\n\t\treturn items;\r\n\t}\r\n\r\n\tlet lastOfTypeSeparator = true;\r\n\tconst result = items.filter((id) => {\r\n\t\tconst item = data.get(id);\r\n\r\n\t\tif (!item || item.hidden) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst isSeparator = item.type === 'separator';\r\n\t\tconst result = isSeparator ? lastOfTypeSeparator === false : true;\r\n\t\tlastOfTypeSeparator = isSeparator;\r\n\t\treturn result;\r\n\t});\r\n\r\n\tif (lastOfTypeSeparator) {\r\n\t\tresult.pop();\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nexport default trimSeparators;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport SvgManager from '../core/SvgManager';\r\nimport trimSeparators from './trimSeparators';\r\n\r\nconst iconClass = 'aras-list-item__icon';\r\nconst itemClassName = 'aras-list-item';\r\nconst parentClass = 'aras-list__parent';\r\nconst focusedClass = itemClassName + '_focused';\r\nconst expandedClass = itemClassName + '_expanded';\r\nconst disabledClass = itemClassName + '_disabled';\r\nconst arrowedClass = itemClassName + '_arrowed';\r\nconst iconedClass = itemClassName + '_iconed';\r\nconst labelClass = itemClassName + '__label';\r\nconst shortcutClass = itemClassName + '__shortcut';\r\nconst containerClass = itemClassName + '__container';\r\nconst submenuContainerClass = itemClassName + '__submenu-container';\r\nconst invisibleShortcutClass = shortcutClass + '_invisible';\r\nconst arrowClass = itemClassName + '__arrow';\r\nconst hiddenArrowClass = arrowClass + '_hidden';\r\n\r\nfunction getNextItem(childArray, data) {\r\n\treturn childArray.find(function (nextId) {\r\n\t\tconst item = data.get(nextId);\r\n\t\treturn item.type !== 'separator' && !item.hidden;\r\n\t});\r\n}\r\n\r\nexport default class Menu extends HTMLElement {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = {\r\n\t\t\tdata: new Map(),\r\n\t\t\troots: [],\r\n\t\t\texpandedItems: [],\r\n\t\t\tfocusedItems: []\r\n\t\t};\r\n\t}\r\n\tsetState(next) {\r\n\t\tthis.state = { ...(this.state || {}), ...next };\r\n\t\tthis.render();\r\n\t}\r\n\tconnectedCallback() {\r\n\t\tif (!this.initialized) {\r\n\t\t\tthis.addEventListener('focusout', this.focusoutHandler);\r\n\t\t\tthis.addEventListener('keydown', this.keyboardHandler);\r\n\t\t\tthis.initialized = true;\r\n\t\t}\r\n\t}\r\n\tapplyData(data, roots) {\r\n\t\tthis.setState({\r\n\t\t\tdata: data || this.state.data,\r\n\t\t\troots: roots || this.state.roots\r\n\t\t});\r\n\t}\r\n\tblur() {\r\n\t\tconst itemWithFocus = this.state.focusedItems.slice(-1)[0];\r\n\t\tif (itemWithFocus) {\r\n\t\t\tthis.querySelector(`[data-index=\"${itemWithFocus}\"]`).blur();\r\n\t\t}\r\n\t\tsuper.blur();\r\n\t}\r\n\tfocusoutHandler(e) {\r\n\t\tconst isChildNodeFocused =\r\n\t\t\te.relatedTarget && this.contains(e.relatedTarget);\r\n\t\tif (!isChildNodeFocused) {\r\n\t\t\tthis.resetList();\r\n\t\t}\r\n\t}\r\n\tresetList() {\r\n\t\tthis.setState({\r\n\t\t\tfocusedItems: [],\r\n\t\t\texpandedItems: []\r\n\t\t});\r\n\t}\r\n\tkeyboardHandler(e) {\r\n\t\tconst key = e.code;\r\n\r\n\t\tif (\r\n\t\t\t![\r\n\t\t\t\t'ArrowUp',\r\n\t\t\t\t'ArrowDown',\r\n\t\t\t\t'ArrowLeft',\r\n\t\t\t\t'ArrowRight',\r\n\t\t\t\t'Enter',\r\n\t\t\t\t'NumpadEnter',\r\n\t\t\t\t'Space'\r\n\t\t\t].includes(key) ||\r\n\t\t\t!this.state.roots.length\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentItemId = this.state.focusedItems.slice(-1)[0];\r\n\t\tconst parentId =\r\n\t\t\tthis.state.expandedItems[this.state.expandedItems.length - 1];\r\n\t\tlet nextItemId;\r\n\t\tconst nextState = {\r\n\t\t\tfocusedItems: [...this.state.focusedItems],\r\n\t\t\texpandedItems: [...this.state.expandedItems]\r\n\t\t};\r\n\r\n\t\tif (\r\n\t\t\t['ArrowLeft', 'ArrowRight', 'Enter', 'Space', 'NumpadEnter'].includes(\r\n\t\t\t\tkey\r\n\t\t\t) &&\r\n\t\t\t!currentItemId\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch (key) {\r\n\t\t\tcase 'ArrowUp':\r\n\t\t\tcase 'ArrowDown': {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tif (!currentItemId) {\r\n\t\t\t\t\tnextItemId = getNextItem(\r\n\t\t\t\t\t\tkey === 'ArrowUp'\r\n\t\t\t\t\t\t\t? [...this.state.roots].reverse()\r\n\t\t\t\t\t\t\t: this.state.roots,\r\n\t\t\t\t\t\tthis.state.data\r\n\t\t\t\t\t);\r\n\t\t\t\t\tnextState.focusedItems.push(nextItemId);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst children =\r\n\t\t\t\t\t(this.state.data.get(parentId) || {}).children || this.state.roots;\r\n\t\t\t\tconst nextItems =\r\n\t\t\t\t\tkey === 'ArrowUp'\r\n\t\t\t\t\t\t? children.slice(0, children.indexOf(currentItemId)).reverse()\r\n\t\t\t\t\t\t: children.slice(children.indexOf(currentItemId) + 1);\r\n\t\t\t\tnextItemId =\r\n\t\t\t\t\tgetNextItem(nextItems, this.state.data) ||\r\n\t\t\t\t\tgetNextItem(\r\n\t\t\t\t\t\tkey === 'ArrowUp' ? [...children].reverse() : children,\r\n\t\t\t\t\t\tthis.state.data\r\n\t\t\t\t\t);\r\n\t\t\t\tnextState.focusedItems.pop();\r\n\t\t\t\tnextState.focusedItems.push(nextItemId);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'ArrowLeft': {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tif (parentId) {\r\n\t\t\t\t\tnextState.expandedItems.pop();\r\n\t\t\t\t\tnextState.focusedItems.pop();\r\n\t\t\t\t\tnextItemId = parentId;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'ArrowRight': {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tconst data = this.state.data.get(currentItemId);\r\n\t\t\t\tif (data.children && !data.disabled) {\r\n\t\t\t\t\tthis.calcSubmenuPosition(e.target);\r\n\t\t\t\t\tnextItemId = getNextItem(data.children, this.state.data);\r\n\t\t\t\t\tnextState.expandedItems.push(currentItemId);\r\n\t\t\t\t\tnextState.focusedItems.push(nextItemId);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'Enter':\r\n\t\t\tcase 'NumpadEnter':\r\n\t\t\tcase 'Space': {\r\n\t\t\t\tconst data = this.state.data.get(currentItemId);\r\n\t\t\t\tif (data.disabled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (data.children) {\r\n\t\t\t\t\tthis.calcSubmenuPosition(e.target);\r\n\t\t\t\t\tnextItemId = getNextItem(data.children, this.state.data);\r\n\t\t\t\t\tnextState.expandedItems.push(currentItemId);\r\n\t\t\t\t\tnextState.focusedItems.push(nextItemId);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tthis.querySelector(`[data-index=\"${currentItemId}\"]`).dispatchEvent(\r\n\t\t\t\t\tnew CustomEvent('click', { bubbles: true })\r\n\t\t\t\t);\r\n\t\t\t\tthis.resetList();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setState(nextState);\r\n\t\tif (nextItemId) {\r\n\t\t\tthis.querySelector(`[data-index=\"${nextItemId}\"]`).focus();\r\n\t\t}\r\n\t}\r\n\tmouseEnterHandler(e) {\r\n\t\tconst li = e.target.closest('li');\r\n\t\tif (!li) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst itemId = li.dataset.index;\r\n\t\tconst prevItemId =\r\n\t\t\tthis.state.focusedItems[this.state.focusedItems.length - 1];\r\n\t\tconst newState = {\r\n\t\t\tfocusedItems: [...this.state.focusedItems],\r\n\t\t\texpandedItems: [...this.state.expandedItems]\r\n\t\t};\r\n\t\tconst currentItem = this.state.data.get(itemId);\r\n\t\tconst prevItem = this.state.data.get(prevItemId);\r\n\t\tif (currentItem.type !== 'separator') {\r\n\t\t\tif (prevItem) {\r\n\t\t\t\tif (prevItem.children) {\r\n\t\t\t\t\tif (!prevItem.children.includes(itemId)) {\r\n\t\t\t\t\t\tnewState.expandedItems.pop();\r\n\t\t\t\t\t\tnewState.focusedItems.pop();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewState.focusedItems.pop();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (currentItem.children) {\r\n\t\t\t\tnewState.expandedItems.push(itemId);\r\n\t\t\t}\r\n\t\t\tnewState.focusedItems.push(itemId);\r\n\t\t}\r\n\r\n\t\tthis.setState(newState);\r\n\t}\r\n\tmouseLeaveHandler = () => {\r\n\t\tconst newState = {\r\n\t\t\tfocusedItems: [...this.state.focusedItems],\r\n\t\t\texpandedItems: [...this.state.expandedItems]\r\n\t\t};\r\n\r\n\t\tconst focusedItemId =\r\n\t\t\tthis.state.focusedItems[this.state.focusedItems.length - 1];\r\n\t\tnewState.focusedItems.pop();\r\n\t\tif (this.state.expandedItems.includes(focusedItemId)) {\r\n\t\t\tnewState.expandedItems.pop();\r\n\t\t}\r\n\r\n\t\tthis.setState(newState);\r\n\t};\r\n\tcalcSubmenuPosition(parentMenuItem, options = {}) {\r\n\t\tconst BORDER_WIDTH = 1;\r\n\t\tconst SYNTHETIC_FRAME_PADDING = 4;\r\n\t\tconst SCROLLBAR_WIDTH = 17;\r\n\r\n\t\tconst submenuContainer = parentMenuItem.querySelector(\r\n\t\t\t'div.aras-list-item__submenu-container'\r\n\t\t);\r\n\t\tconst submenuList = submenuContainer.querySelector('ul.aras-list');\r\n\t\tconst isRootMenu = parentMenuItem.tagName === 'ARAS-MENU';\r\n\t\tconst parentMenuNode = isRootMenu\r\n\t\t\t? parentMenuItem\r\n\t\t\t: parentMenuItem.closest('ul.aras-list');\r\n\r\n\t\tsubmenuContainer.style.top = 'auto';\r\n\t\tsubmenuContainer.style.bottom = 'auto';\r\n\t\tsubmenuContainer.style.right = 'auto';\r\n\t\tsubmenuContainer.style.left = 'auto';\r\n\t\tsubmenuContainer.style.width = 'auto';\r\n\t\tsubmenuList.style.maxHeight = 'none';\r\n\r\n\t\tconst docWidth = document.documentElement.clientWidth;\r\n\t\tconst docHeight = document.documentElement.clientHeight;\r\n\t\tconst parentMenuItemRect = parentMenuItem.getBoundingClientRect();\r\n\t\tconst parentMenuRect = parentMenuNode.getBoundingClientRect();\r\n\r\n\t\tconst availableSpaceToTheTop = parentMenuItemRect.bottom;\r\n\t\tconst availableSpaceToTheBottom = docHeight - parentMenuItemRect.top;\r\n\r\n\t\t// save width before we maxHeight is set, because FF won't add extra space for scrollbar causing overflow-x\r\n\t\tconst submenuWidth = submenuContainer.offsetWidth;\r\n\t\tconst submenuHeight = submenuContainer.clientHeight;\r\n\t\tconst isNotEnoughVerticalSpace =\r\n\t\t\tsubmenuHeight > availableSpaceToTheBottom &&\r\n\t\t\tsubmenuHeight > availableSpaceToTheTop;\r\n\t\tlet isScrollInSubmenuRequired = isNotEnoughVerticalSpace;\r\n\r\n\t\tconst borderWidthOfParentMenu = BORDER_WIDTH;\r\n\t\tconst showMenuToTopAlignmentPosition =\r\n\t\t\tparentMenuRect.bottom -\r\n\t\t\tparentMenuItemRect.bottom -\r\n\t\t\t(isRootMenu ? 0 : borderWidthOfParentMenu);\r\n\t\tconst showMenuToBottomAlignmentPosition =\r\n\t\t\tparentMenuItemRect.top -\r\n\t\t\tparentMenuRect.top -\r\n\t\t\t(isRootMenu ? 0 : borderWidthOfParentMenu);\r\n\r\n\t\tif (isNotEnoughVerticalSpace) {\r\n\t\t\tconst borderOfSubmenuContainer = BORDER_WIDTH;\r\n\t\t\tif (options.preventGreedyVerticalExpansion) {\r\n\t\t\t\tconst directionBasedConfig = {\r\n\t\t\t\t\tbottom: {\r\n\t\t\t\t\t\tmaxHeight:\r\n\t\t\t\t\t\t\tavailableSpaceToTheBottom -\r\n\t\t\t\t\t\t\tSYNTHETIC_FRAME_PADDING -\r\n\t\t\t\t\t\t\t2 * borderOfSubmenuContainer,\r\n\t\t\t\t\t\talignmentSide: 'top',\r\n\t\t\t\t\t\talignmentSideOffset: showMenuToBottomAlignmentPosition,\r\n\t\t\t\t\t\tautoSide: 'bottom'\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttop: {\r\n\t\t\t\t\t\tmaxHeight:\r\n\t\t\t\t\t\t\tavailableSpaceToTheTop -\r\n\t\t\t\t\t\t\tSYNTHETIC_FRAME_PADDING -\r\n\t\t\t\t\t\t\t2 * borderOfSubmenuContainer,\r\n\t\t\t\t\t\talignmentSide: 'bottom',\r\n\t\t\t\t\t\talignmentSideOffset: showMenuToTopAlignmentPosition,\r\n\t\t\t\t\t\tautoSide: 'top'\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst preferredMenuDirection =\r\n\t\t\t\t\tavailableSpaceToTheBottom > availableSpaceToTheTop ? 'bottom' : 'top';\r\n\t\t\t\tconst verticalAlignmentConfig =\r\n\t\t\t\t\tdirectionBasedConfig[preferredMenuDirection];\r\n\r\n\t\t\t\tsubmenuList.style.maxHeight = verticalAlignmentConfig.maxHeight + 'px';\r\n\r\n\t\t\t\tsubmenuContainer.style[verticalAlignmentConfig.autoSide] = 'auto';\r\n\t\t\t\tsubmenuContainer.style[verticalAlignmentConfig.alignmentSide] =\r\n\t\t\t\t\tverticalAlignmentConfig.alignmentSideOffset + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tconst maxAvailableVerticalSpace =\r\n\t\t\t\t\tdocHeight -\r\n\t\t\t\t\t2 * SYNTHETIC_FRAME_PADDING -\r\n\t\t\t\t\t2 * borderOfSubmenuContainer;\r\n\r\n\t\t\t\tif (submenuHeight > maxAvailableVerticalSpace) {\r\n\t\t\t\t\tsubmenuList.style.maxHeight = maxAvailableVerticalSpace + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisScrollInSubmenuRequired = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst stickToBottomCoordinate =\r\n\t\t\t\t\tdocHeight - parentMenuRect.bottom - SYNTHETIC_FRAME_PADDING;\r\n\t\t\t\tsubmenuContainer.style.bottom = -stickToBottomCoordinate + 'px';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst isEnoughSpaceForSubmenuBelow =\r\n\t\t\t\tavailableSpaceToTheBottom > submenuHeight;\r\n\r\n\t\t\tsubmenuContainer.style.top = isEnoughSpaceForSubmenuBelow\r\n\t\t\t\t? showMenuToBottomAlignmentPosition + 'px'\r\n\t\t\t\t: 'auto';\r\n\t\t\tsubmenuContainer.style.bottom = isEnoughSpaceForSubmenuBelow\r\n\t\t\t\t? 'auto'\r\n\t\t\t\t: showMenuToTopAlignmentPosition + 'px';\r\n\t\t}\r\n\r\n\t\tconst submenuContainerWidth =\r\n\t\t\tsubmenuWidth + (isScrollInSubmenuRequired ? SCROLLBAR_WIDTH : 0);\r\n\t\tif (isScrollInSubmenuRequired) {\r\n\t\t\tsubmenuContainer.style.width = submenuWidth + SCROLLBAR_WIDTH + 'px';\r\n\t\t}\r\n\r\n\t\tconst availableSpaceToTheRight = docWidth - parentMenuRect.right;\r\n\t\tconst availableSpaceToTheLeft = parentMenuRect.left;\r\n\r\n\t\tif (\r\n\t\t\tavailableSpaceToTheRight > submenuContainerWidth &&\r\n\t\t\toptions.horizontalAlignmentSide !== 'right'\r\n\t\t) {\r\n\t\t\tsubmenuContainer.style.left = '100%';\r\n\t\t\treturn;\r\n\t\t} else if (\r\n\t\t\tavailableSpaceToTheLeft > submenuContainerWidth &&\r\n\t\t\toptions.horizontalAlignmentSide !== 'left'\r\n\t\t) {\r\n\t\t\tsubmenuContainer.style.right = '100%';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (options.horizontalAlignmentSide) {\r\n\t\t\tconst stickingConfig = {\r\n\t\t\t\tleft: {\r\n\t\t\t\t\tdelta: submenuContainerWidth - (docWidth - parentMenuRect.right),\r\n\t\t\t\t\tside: 'left'\r\n\t\t\t\t},\r\n\t\t\t\tright: {\r\n\t\t\t\t\tdelta: submenuContainerWidth - parentMenuRect.left,\r\n\t\t\t\t\tside: 'right'\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tconst { side, delta } = stickingConfig[options.horizontalAlignmentSide];\r\n\t\t\tsubmenuContainer.style[side] = -delta + 'px';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst isRightLargerThanLeft =\r\n\t\t\tavailableSpaceToTheLeft < availableSpaceToTheRight;\r\n\t\tconst horizontalAlignmentConfig = isRightLargerThanLeft\r\n\t\t\t? {\r\n\t\t\t\t\tdelta: submenuContainerWidth - availableSpaceToTheRight,\r\n\t\t\t\t\talignmentSide: 'left',\r\n\t\t\t\t\tautoSide: 'right'\r\n\t\t\t }\r\n\t\t\t: {\r\n\t\t\t\t\tdelta: submenuContainerWidth - availableSpaceToTheLeft,\r\n\t\t\t\t\talignmentSide: 'right',\r\n\t\t\t\t\tautoSide: 'left'\r\n\t\t\t };\r\n\r\n\t\tsubmenuContainer.style[horizontalAlignmentConfig.autoSide] = 'auto';\r\n\t\tsubmenuContainer.style[horizontalAlignmentConfig.alignmentSide] =\r\n\t\t\t'calc(100% - ' + horizontalAlignmentConfig.delta + 'px)';\r\n\t}\r\n\teventHandler = (e) => {\r\n\t\tconst li = e.target.closest('li');\r\n\r\n\t\tif (!li) {\r\n\t\t\te.stopPropagation();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst item = this.state.data.get(li.dataset.index);\r\n\t\tif (item.disabled || item.type === 'separator') {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\t};\r\n\ton(event, callback) {\r\n\t\tconst handler = (e) => {\r\n\t\t\tconst li = e.target.closest('li');\r\n\t\t\tconst elementId = li && li.dataset.index;\r\n\t\t\tcallback(elementId, e);\r\n\r\n\t\t\tif (elementId && !this.state.data.get(elementId).children) {\r\n\t\t\t\tli.blur();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.addEventListener(event, handler);\r\n\t\treturn () => {\r\n\t\t\tthis.removeEventListener(event, handler);\r\n\t\t};\r\n\t}\r\n\trenderRecursive = (data, roots = []) => {\r\n\t\tconst focusedItem =\r\n\t\t\tthis.state.focusedItems[this.state.focusedItems.length - 1];\r\n\t\tconst iconsRequired = roots.some((element) => {\r\n\t\t\tconst item = data.get(element);\r\n\t\t\treturn Boolean(item.icon || item.image);\r\n\t\t});\r\n\r\n\t\tconst checkedRequired = roots.some((element) => {\r\n\t\t\tconst item = data.get(element);\r\n\t\t\treturn item.checked !== undefined || item.type === 'checkbox';\r\n\t\t});\r\n\r\n\t\tconst arrowsRequired = roots.some((element) => {\r\n\t\t\tconst item = data.get(element);\r\n\t\t\treturn item.children || item.type === 'menu';\r\n\t\t});\r\n\r\n\t\tconst shortcutsInfo = roots.reduce(\r\n\t\t\t(result, id) => {\r\n\t\t\t\tconst currentShortcut = data.get(id).shortcut;\r\n\t\t\t\tif (!currentShortcut) {\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!result.shortcutsRequired) {\r\n\t\t\t\t\tresult.shortcutsRequired = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (currentShortcut.length > result.longestShortcut.length) {\r\n\t\t\t\t\tresult.longestShortcut = currentShortcut;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tshortcutsRequired: false,\r\n\t\t\t\tlongestShortcut: ''\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\troots = trimSeparators(data, roots);\r\n\t\tconst items = roots.reduce((acc, id) => {\r\n\t\t\tconst item = data.get(id);\r\n\t\t\tif (item.hidden) {\r\n\t\t\t\treturn acc;\r\n\t\t\t}\r\n\r\n\t\t\tconst childItems = item.children;\r\n\t\t\tconst isSeparator = item.type === 'separator';\r\n\t\t\tconst isMenu = childItems || item.type === 'menu';\r\n\t\t\tconst isExpanded = this.state.expandedItems.includes(id);\r\n\t\t\tconst isFocused = this.state.focusedItems.includes(id);\r\n\t\t\tconst classList = [itemClassName];\r\n\t\t\tlet childList = [];\r\n\t\t\tif (!isSeparator) {\r\n\t\t\t\tconst formattedNode = this.formatter(id, item);\r\n\t\t\t\tif (formattedNode === null) {\r\n\t\t\t\t\tchildList = [\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{item.label || aras.getResource('', 'common.no_label')}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildList = [].concat(formattedNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (isFocused) {\r\n\t\t\t\tclassList.push(focusedClass);\r\n\t\t\t}\r\n\r\n\t\t\tif (item.disabled) {\r\n\t\t\t\tclassList.push(disabledClass);\r\n\t\t\t}\r\n\t\t\tif (isSeparator) {\r\n\t\t\t\tclassList.push('separator');\r\n\t\t\t}\r\n\t\t\tif (shortcutsInfo.shortcutsRequired && item.label) {\r\n\t\t\t\tchildList = childList.concat(\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{item.shortcut || shortcutsInfo.longestShortcut}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (arrowsRequired && !isSeparator) {\r\n\t\t\t\tconst additionalArrowClass = isMenu ? '' : hiddenArrowClass;\r\n\t\t\t\tconst className = `${arrowClass} ${additionalArrowClass}`;\r\n\t\t\t\tconst arrowNode = ;\r\n\t\t\t\tchildList = childList.concat(arrowNode);\r\n\t\t\t\tclassList.push(arrowedClass);\r\n\t\t\t}\r\n\t\t\tif (iconsRequired || checkedRequired) {\r\n\t\t\t\tclassList.push(iconedClass);\r\n\t\t\t\tlet iconNode = SvgManager.createInfernoVNode(item.icon || item.image);\r\n\t\t\t\tif (!iconNode) {\r\n\t\t\t\t\ticonNode = ;\r\n\t\t\t\t}\r\n\t\t\t\ticonNode.className = `${iconClass} ${\r\n\t\t\t\t\titem.checked ? 'aras-icon-checked' : ''\r\n\t\t\t\t}`;\r\n\t\t\t\tchildList.unshift(iconNode);\r\n\t\t\t}\r\n\r\n\t\t\tconst props = {\r\n\t\t\t\t'data-index': id,\r\n\t\t\t\ttabIndex: focusedItem === id ? '0' : '-1',\r\n\t\t\t\tonMouseEnter: (e) => this.mouseEnterHandler(e)\r\n\t\t\t};\r\n\r\n\t\t\tif (isMenu) {\r\n\t\t\t\tconst menuItemContentNodes = childList;\r\n\t\t\t\tconst menuItem = (\r\n\t\t\t\t\t
{menuItemContentNodes}
\r\n\t\t\t\t);\r\n\r\n\t\t\t\tchildList = [menuItem];\r\n\r\n\t\t\t\tconst submenuList = this.renderRecursive(data, childItems);\r\n\t\t\t\tif (submenuList) {\r\n\t\t\t\t\tconst submenuListWrapper = (\r\n\t\t\t\t\t\t
{submenuList}
\r\n\t\t\t\t\t);\r\n\t\t\t\t\tchildList = childList.concat(submenuListWrapper);\r\n\r\n\t\t\t\t\tif (!item.disabled) {\r\n\t\t\t\t\t\tprops.onMouseEnter = (e) => {\r\n\t\t\t\t\t\t\tthis.calcSubmenuPosition(e.target);\r\n\t\t\t\t\t\t\tthis.mouseEnterHandler(e);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (isExpanded) {\r\n\t\t\t\t\t\tclassList.push(expandedClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (!item.disabled) {\r\n\t\t\t\t\tclassList.push(disabledClass);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclassList.push(parentClass);\r\n\t\t\t}\r\n\r\n\t\t\tprops.className = classList.join(' ');\r\n\r\n\t\t\tif (item.cssStyle) {\r\n\t\t\t\tprops.style = item.cssStyle;\r\n\t\t\t}\r\n\t\t\tif (item.disabled) {\r\n\t\t\t\tprops['aria-disabled'] = 'true';\r\n\t\t\t}\r\n\t\t\tif (!childItems) {\r\n\t\t\t\tprops.role = isSeparator ? 'separator' : 'menuitem';\r\n\t\t\t} else {\r\n\t\t\t\tprops['aria-haspopup'] = 'true';\r\n\t\t\t\tprops['aria-expanded'] = isExpanded ? 'true' : 'false';\r\n\t\t\t}\r\n\r\n\t\t\tacc.push(\r\n\t\t\t\t
  • \r\n\t\t\t\t\t{childList}\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t\treturn acc;\r\n\t\t}, []);\r\n\r\n\t\tif (!items.length) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{items}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\trender() {\r\n\t\tconst menu = this.renderRecursive(this.state.data, this.state.roots);\r\n\t\tconst wrappedMenu = menu ? (\r\n\t\t\t
    {menu}
    \r\n\t\t) : null;\r\n\t\tInferno.render(wrappedMenu, this);\r\n\t}\r\n\r\n\tformatter() {\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import HyperHTMLElement from 'hyperhtml-element';\r\nimport Menu from './menu';\r\n\r\nconst OPENED_CLASS_NAME = 'aras-dropdown_opened';\r\n\r\nconst getDropdownSize = function (element: HTMLElement) {\r\n\telement.style.visibility = 'hidden';\r\n\tconst size = {\r\n\t\twidth: element.offsetWidth,\r\n\t\theight: element.offsetHeight\r\n\t};\r\n\telement.style.visibility = '';\r\n\r\n\treturn size;\r\n};\r\n\r\nconst udpatePositionOfDropdownBoxElement = (\r\n\telement: HTMLElement,\r\n\tdropdownPosition: string\r\n) => {\r\n\tif (element instanceof Menu) {\r\n\t\tlet horizontalAlignmentSide = null;\r\n\t\tif (dropdownPosition.endsWith('left')) {\r\n\t\t\thorizontalAlignmentSide = 'left';\r\n\t\t} else if (dropdownPosition.endsWith('right')) {\r\n\t\t\thorizontalAlignmentSide = 'right';\r\n\t\t}\r\n\r\n\t\telement.calcSubmenuPosition(element, {\r\n\t\t\tpreventGreedyVerticalExpansion: true,\r\n\t\t\thorizontalAlignmentSide\r\n\t\t});\r\n\t}\r\n};\r\n\r\nconst updatePositionOfDroprownBox = function (\r\n\tparentProps: { width: number; height: number; offsetTop: number },\r\n\tdropdownBox: HTMLElement\r\n) {\r\n\tconst elmRect = dropdownBox.getBoundingClientRect();\r\n\tconst elementBottom = dropdownBox.offsetHeight + parentProps.offsetTop;\r\n\tconst docElement = document.documentElement;\r\n\tconst docSize = {\r\n\t\twidth: docElement.clientWidth,\r\n\t\theight: docElement.clientHeight\r\n\t};\r\n\r\n\tif (elmRect.right > docSize.width) {\r\n\t\tdropdownBox.style.left =\r\n\t\t\tparseInt(dropdownBox.style.left) - (elmRect.right - docSize.width) + 'px';\r\n\t}\r\n\tif (elementBottom > parentProps.height) {\r\n\t\tdropdownBox.style.top =\r\n\t\t\tparseInt(dropdownBox.style.top) -\r\n\t\t\t(elementBottom - parentProps.height) +\r\n\t\t\t'px';\r\n\t}\r\n\tif (elmRect.left < 0) {\r\n\t\tdropdownBox.style.left =\r\n\t\t\tparseInt(dropdownBox.style.left) + Math.abs(elmRect.left) + 'px';\r\n\t}\r\n\tif (parentProps.offsetTop < 0) {\r\n\t\tdropdownBox.style.top =\r\n\t\t\tparseInt(dropdownBox.style.top) + Math.abs(parentProps.offsetTop) + 'px';\r\n\t}\r\n};\r\n\r\nconst getSourcePosition = function (\r\n\tpos: string,\r\n\tdropdownSize: { width: number; height: number },\r\n\tbuttonSize: { width: number; height: number }\r\n) {\r\n\tswitch (pos) {\r\n\t\tcase 'bottom-left':\r\n\t\t\treturn { top: 0 + buttonSize.height, left: 0 };\r\n\t\tcase 'bottom-right':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height,\r\n\t\t\t\tleft: 0 + buttonSize.width - dropdownSize.width\r\n\t\t\t};\r\n\t\tcase 'bottom-center':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height,\r\n\t\t\t\tleft: 0 + buttonSize.width / 2 - dropdownSize.width / 2\r\n\t\t\t};\r\n\t\tcase 'top-left':\r\n\t\t\treturn { top: 0 - dropdownSize.height, left: 0 };\r\n\t\tcase 'top-right':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 - dropdownSize.height,\r\n\t\t\t\tleft: 0 + buttonSize.width - dropdownSize.width\r\n\t\t\t};\r\n\t\tcase 'top-center':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 - dropdownSize.height,\r\n\t\t\t\tleft: 0 + buttonSize.width / 2 - dropdownSize.width / 2\r\n\t\t\t};\r\n\t\tcase 'left-top':\r\n\t\t\treturn { top: 0, left: 0 - dropdownSize.width };\r\n\t\tcase 'left-bottom':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height - dropdownSize.height,\r\n\t\t\t\tleft: 0 - dropdownSize.width\r\n\t\t\t};\r\n\t\tcase 'left-center':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height / 2 - dropdownSize.height / 2,\r\n\t\t\t\tleft: 0 - dropdownSize.width\r\n\t\t\t};\r\n\t\tcase 'right-top':\r\n\t\t\treturn { top: 0, left: 0 + buttonSize.width };\r\n\t\tcase 'right-bottom':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height - dropdownSize.height,\r\n\t\t\t\tleft: 0 + buttonSize.width\r\n\t\t\t};\r\n\t\tcase 'right-center':\r\n\t\t\treturn {\r\n\t\t\t\ttop: 0 + buttonSize.height / 2 - dropdownSize.height / 2,\r\n\t\t\t\tleft: 0 + buttonSize.width\r\n\t\t\t};\r\n\t\t// the same as bottom-left\r\n\t\tdefault:\r\n\t\t\treturn { top: 0 + buttonSize.height, left: 0 };\r\n\t}\r\n};\r\n\r\nconst getOffsetParentProps = function (\r\n\tcontainer: HTMLElement | Dropdown,\r\n\toffsetTop: number\r\n): { width: number; height: number; offsetTop: number } {\r\n\toffsetTop += container.offsetTop;\r\n\tconst offsetParent = container.offsetParent;\r\n\tif (!(offsetParent instanceof HTMLElement)) {\r\n\t\tconst docElement = document.documentElement;\r\n\t\treturn {\r\n\t\t\toffsetTop: offsetTop,\r\n\t\t\twidth: docElement.clientWidth,\r\n\t\t\theight: docElement.clientHeight\r\n\t\t};\r\n\t}\r\n\r\n\tconst elementOverflow = getComputedStyle(offsetParent).overflow;\r\n\tif (elementOverflow === 'hidden') {\r\n\t\treturn {\r\n\t\t\toffsetTop: offsetTop,\r\n\t\t\twidth: offsetParent.clientWidth,\r\n\t\t\theight: offsetParent.clientHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn getOffsetParentProps(offsetParent, offsetTop);\r\n};\r\n\r\nexport default class Dropdown extends HyperHTMLElement {\r\n\tprivate declare buttonNode: HTMLElement;\r\n\tprivate declare dropdownBox: HTMLElement;\r\n\tprivate declare buttonSize: { width: number; height: number };\r\n\tprivate initialized = false;\r\n\r\n\tprivate blurEventHandler = ({ relatedTarget }: FocusEvent) => {\r\n\t\tconst isDropdownContentBecameFocused =\r\n\t\t\t(relatedTarget instanceof Node &&\r\n\t\t\t\tthis.dropdownBox.contains(relatedTarget)) ||\r\n\t\t\tthis.dropdownBox.contains(document.activeElement);\r\n\t\tif (!isDropdownContentBecameFocused) {\r\n\t\t\tthis.closeDropdown();\r\n\t\t}\r\n\t};\r\n\r\n\tconnectedCallback(): void {\r\n\t\tif (this.initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.addEventListener('click', (e) => this.handleDropdownContentClick(e));\r\n\t\tthis.addEventListener('keydown', (e) => this.handleKeydown(e));\r\n\t\tthis.addEventListener('click', (e) => this.toggleDropdown(e));\r\n\t\t// Using 'mousedown' event to prevent open dropdown if it was opened before\r\n\t\tthis.addEventListener('mousedown', (e) => this.mouseDown(e));\r\n\t\tthis.initialized = true;\r\n\t}\r\n\tprivate recalculateButtonSize() {\r\n\t\tif (this.buttonNode) {\r\n\t\t\tthis.buttonSize = {\r\n\t\t\t\twidth: this.buttonNode.offsetWidth,\r\n\t\t\t\theight: this.buttonNode.offsetHeight\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\tprivate convertEventToDropbox(target: EventTarget | null) {\r\n\t\tif (!(target instanceof Element)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst targetButton = target.closest('[dropdown-button]');\r\n\t\tconst container = targetButton?.closest('aras-dropdown');\r\n\t\tconst dropdownBox = container?.querySelector('.aras-dropdown');\r\n\t\tif (\r\n\t\t\t!targetButton ||\r\n\t\t\t!dropdownBox ||\r\n\t\t\tcontainer !== this ||\r\n\t\t\ttargetButton.hasAttribute('disabled') ||\r\n\t\t\ttargetButton.getAttribute('aria-disabled') === 'true'\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.dropdownBox || this.dropdownBox !== dropdownBox) {\r\n\t\t\tthis.dropdownBox = dropdownBox;\r\n\t\t\tthis.dropdownBox.tabIndex = 0;\r\n\t\t}\r\n\t\tif (!this.buttonNode || this.buttonNode !== targetButton) {\r\n\t\t\tthis.buttonNode = targetButton;\r\n\t\t\tthis.recalculateButtonSize();\r\n\t\t}\r\n\r\n\t\treturn dropdownBox;\r\n\t}\r\n\r\n\tprivate mouseDown(e: MouseEvent) {\r\n\t\tconst dropdownBox = this.convertEventToDropbox(e.target);\r\n\t\tif (!dropdownBox) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.dropdownBox.classList.contains(OPENED_CLASS_NAME)) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate toggleDropdown({ target }: Event) {\r\n\t\tconst dropdownBox = this.convertEventToDropbox(target);\r\n\t\tif (!dropdownBox) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst parentProps = getOffsetParentProps(this, 0);\r\n\t\tthis.dropdownBox.style.maxHeight = 'none';\r\n\t\tthis.dropdownBox.style.overflowY = 'visible';\r\n\t\tthis.dropdownBox.classList.toggle(OPENED_CLASS_NAME);\r\n\r\n\t\tif (this.dropdownBox.classList.contains(OPENED_CLASS_NAME)) {\r\n\t\t\tthis.dispatchCustomEvent('dropdownbeforeopen');\r\n\t\t\tconst dropdownSize = getDropdownSize(this.dropdownBox);\r\n\t\t\tconst pos = this.getAttribute('position') || 'bottom-left';\r\n\t\t\tconst sourcePosition = getSourcePosition(\r\n\t\t\t\tpos,\r\n\t\t\t\tdropdownSize,\r\n\t\t\t\tthis.buttonSize\r\n\t\t\t);\r\n\t\t\tconst leftPos = sourcePosition.left + 'px';\r\n\t\t\tconst topPos = sourcePosition.top + 'px';\r\n\t\t\tif (parentProps.height < this.dropdownBox.clientHeight) {\r\n\t\t\t\tthis.dropdownBox.style.maxHeight = parentProps.height + 'px';\r\n\t\t\t\tthis.dropdownBox.style.overflowY = 'auto';\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\tthis.dropdownBox.style.left !== leftPos ||\r\n\t\t\t\tthis.dropdownBox.style.top !== topPos\r\n\t\t\t) {\r\n\t\t\t\tthis.dropdownBox.style.left = leftPos;\r\n\t\t\t\tthis.dropdownBox.style.top = topPos;\r\n\t\t\t}\r\n\t\t\tparentProps.offsetTop += this.dropdownBox.offsetTop;\r\n\t\t\tupdatePositionOfDroprownBox(parentProps, this.dropdownBox);\r\n\t\t\tudpatePositionOfDropdownBoxElement(this.dropdownBox, pos);\r\n\r\n\t\t\tthis.dropdownBox.addEventListener('blur', this.blurEventHandler, true);\r\n\t\t\tthis.dispatchCustomEvent('dropdownopened');\r\n\t\t\tthis.setAttribute('open', '');\r\n\t\t\tthis.buttonNode.setAttribute('aria-expanded', 'true');\r\n\t\t\tthis.dropdownBox.focus();\r\n\t\t} else {\r\n\t\t\tthis.removeAttribute('open');\r\n\t\t\tthis.buttonNode.focus();\r\n\t\t}\r\n\t}\r\n\tprivate dispatchCustomEvent(type: string) {\r\n\t\tconst evt = new CustomEvent(type, { bubbles: true, cancelable: true });\r\n\t\tthis.dropdownBox.dispatchEvent(evt);\r\n\t}\r\n\r\n\tprivate closeDropdown() {\r\n\t\tthis.dropdownBox.removeEventListener('blur', this.blurEventHandler, true);\r\n\t\tthis.dropdownBox.classList.remove(OPENED_CLASS_NAME);\r\n\t\tthis.dropdownBox.blur();\r\n\t\tthis.dispatchCustomEvent('dropdownclosed');\r\n\t\tthis.buttonNode.removeAttribute('aria-expanded');\r\n\t\tthis.removeAttribute('open');\r\n\t\tdocument.body.focus();\r\n\t}\r\n\r\n\tprivate handleDropdownContentClick({ target }: MouseEvent) {\r\n\t\tif (\r\n\t\t\t!(target instanceof Element) ||\r\n\t\t\ttarget.closest('[dropdown-button]') ||\r\n\t\t\ttarget === this\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst isContainerClicked = target === this.dropdownBox;\r\n\r\n\t\tconst listNode = target.closest('li[data-index]');\r\n\t\tconst isParentListNodeClicked =\r\n\t\t\tlistNode && listNode.classList.contains('aras-list__parent');\r\n\r\n\t\tif (\r\n\t\t\tthis.hasAttribute('closeonclick') &&\r\n\t\t\t!isContainerClicked &&\r\n\t\t\t!isParentListNodeClicked\r\n\t\t) {\r\n\t\t\tthis.closeDropdown();\r\n\t\t}\r\n\t}\r\n\tprivate handleKeydown(e: KeyboardEvent) {\r\n\t\tswitch (e.code) {\r\n\t\t\tcase 'Escape':\r\n\t\t\tcase e.altKey && 'ArrowUp':\r\n\t\t\t\tif (this.hasAttribute('open')) {\r\n\t\t\t\t\tthis.closeDropdown();\r\n\t\t\t\t\tthis.buttonNode.focus();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Enter':\r\n\t\t\tcase 'NumpadEnter':\r\n\t\t\tcase 'Space':\r\n\t\t\tcase e.altKey && 'ArrowDown':\r\n\t\t\t\tif (\r\n\t\t\t\t\te.target instanceof Element &&\r\n\t\t\t\t\te.target.closest('[dropdown-button]') &&\r\n\t\t\t\t\t!this.hasAttribute('open')\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.toggleDropdown(e);\r\n\t\t\t\t\t// :active state doesn't remove from button https://bugs.chromium.org/p/chromium/issues/detail?id=973035&can=2&q=973035\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nfunction dropdownButton(container, options) {\r\n\tif (!container) {\r\n\t\treturn false;\r\n\t}\r\n\toptions = options || {};\r\n\tconst dropdownBox =\r\n\t\tcontainer.querySelector('.aras-dropdown') || container.lastElementChild;\r\n\tconst buttonNode =\r\n\t\tcontainer.querySelector(options.buttonSelector) ||\r\n\t\tdropdownBox.previousElementSibling;\r\n\tconst list = dropdownBox.querySelector('ul');\r\n\r\n\tif (!(buttonNode && dropdownBox && list)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tdropdownBox.style.minWidth = list.style.minWidth = '100%';\r\n\tdropdownBox.style.boxSizing = list.style.boxSizing = 'border-box';\r\n\treturn true;\r\n}\r\n\r\nexport default dropdownButton;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport Tabs from './tabs';\r\n\r\nconst createMenu = function (item, tabs) {\r\n\tconst buttonClass = 'aras-dropdown__button';\r\n\tconst buttonImage = tabs._updateImage(item);\r\n\tconst template = tabs._getTooltipTemplate(item, buttonImage, {\r\n\t\t'dropdown-button': ''\r\n\t});\r\n\tconst hasTooltip = template !== buttonImage;\r\n\tlet button = null;\r\n\r\n\tif (hasTooltip) {\r\n\t\tbutton = template;\r\n\t\tbutton.className = `${button.className} ${buttonClass}`;\r\n\t} else {\r\n\t\tbutton = (\r\n\t\t\t\r\n\t\t\t\t{buttonImage}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{button}\r\n\t\t\t {\r\n\t\t\t\t\tif (!node) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tnode.formatter = (id, item) => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{item.label}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{item.holderKeyedName}\r\n\t\t\t\t\t\t\t\t\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\t\t\t\t\tnode.applyData(item.data, item.roots);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default class ViewersTabs extends Tabs {\r\n\t_unsubscribeOnClick = null;\r\n\ttooltipSettings = {\r\n\t\ttooltipPosition: 'right'\r\n\t};\r\n\tselectedMenuItem = null;\r\n\r\n\tcreated() {\r\n\t\tthis.vertical = true;\r\n\t\tthis.useTooltip = true;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.classList.add('aras-viewers-tabs', 'aras-tabs_b');\r\n\t}\r\n\r\n\t_selectMenuItem(fileId) {\r\n\t\tlet lastCheckedItemData = {};\r\n\t\tlet nextCheckedItemData = {};\r\n\t\tlet nextCheckedTab = null;\r\n\r\n\t\tfor (const [tabId, tab] of this.data) {\r\n\t\t\tif (!tab.data) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (tab.data.has(this.selectedMenuItem)) {\r\n\t\t\t\tlastCheckedItemData = tab.data.get(this.selectedMenuItem);\r\n\t\t\t}\r\n\t\t\tif (tab.data.has(fileId)) {\r\n\t\t\t\tnextCheckedItemData = tab.data.get(fileId);\r\n\t\t\t\tnextCheckedTab = tabId;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!nextCheckedTab && fileId !== null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlastCheckedItemData.checked = false;\r\n\t\tnextCheckedItemData.checked = true;\r\n\r\n\t\tthis.selectedTab = this.focusedTab = nextCheckedTab;\r\n\t\tthis.selectedMenuItem = fileId;\r\n\t\treturn true;\r\n\t}\r\n\r\n\tasync selectTab(id) {\r\n\t\tconst item = this.data.get(id);\r\n\t\tif (item) {\r\n\t\t\tconst isMenu = item.type === 'menu' && item.data?.size > 0;\r\n\t\t\tif (isMenu) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tthis._selectMenuItem(null);\r\n\t\t\treturn super.selectTab(id);\r\n\t\t}\r\n\r\n\t\tconst result = this._selectMenuItem(id);\r\n\t\tif (this.switcher && result) {\r\n\t\t\tthis.switcher.activePaneId = this.selectedMenuItem;\r\n\t\t}\r\n\t\tawait this.render();\r\n\t\treturn result;\r\n\t}\r\n\r\n\tformatter(id, data) {\r\n\t\tconst item = data.get(id);\r\n\t\tconst isMenu = item.type === 'menu' && item.data?.size > 0;\r\n\t\tif (isMenu) {\r\n\t\t\treturn {\r\n\t\t\t\tchildren: createMenu(item, this),\r\n\t\t\t\tcssClass: 'aras-tabs__tab_viewing'\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst image = this._updateImage(item);\r\n\t\treturn this._getTooltipTemplate(item, image);\r\n\t}\r\n\r\n\t_updateImage(item) {\r\n\t\tconst image =\r\n\t\t\t!item.image_additional || this.selectedTab !== item.id\r\n\t\t\t\t? item.image\r\n\t\t\t\t: item.image_additional;\r\n\t\treturn this._getImage(image);\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport calendarCSS from '../../styles/less/components/calendar.less';\r\nimport intl from '../core/intl';\r\nimport getResource from '../core/resources';\r\nimport processKeyboardEvent from '../core/keyboardEvent';\r\n\r\nconst stylesheet = new CSSStyleSheet();\r\nstylesheet.replaceSync(calendarCSS);\r\nconst calendarClass = 'aras-calendar';\r\nconst switchButtonClass = 'aras-button aras-button_d';\r\nconst arrowClass = 'aras-icon-arrow';\r\nconst gridItemClass = `${calendarClass}__grid-item`;\r\nconst secondaryItemClass = `${gridItemClass}_secondary`;\r\nconst weekLength = 7;\r\nconst weeksNumber = 6;\r\nconst monthsInYear = 12;\r\nconst yearsInDecade = 10;\r\nconst MODES = ['days', 'months', 'years'];\r\nconst ariaLabels = {\r\n\tprev: {\r\n\t\tdays: 'calendar.aria_label.prev_month',\r\n\t\tmonths: 'calendar.aria_label.prev_year',\r\n\t\tyears: 'calendar.aria_label.prev_decade'\r\n\t},\r\n\tnext: {\r\n\t\tdays: 'calendar.aria_label.next_month',\r\n\t\tmonths: 'calendar.aria_label.next_year',\r\n\t\tyears: 'calendar.aria_label.next_decade'\r\n\t}\r\n};\r\n\r\nexport default class Calendar extends HyperHTMLElement {\r\n\tstatic get observedAttributes() {\r\n\t\treturn ['selected-date', 'mode', 'range-date', 'range-mode'];\r\n\t}\r\n\r\n\tattributeChangedCallback(name, oldValue, newValue) {\r\n\t\tlet newState;\r\n\t\tswitch (name) {\r\n\t\t\tcase 'selected-date':\r\n\t\t\t\tnewState = {\r\n\t\t\t\t\tselectedDate: newValue,\r\n\t\t\t\t\tfocusedDate: newValue\r\n\t\t\t\t\t\t? newValue\r\n\t\t\t\t\t\t: intl.date.toIS0Format(this._getDate())\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'mode':\r\n\t\t\t\tif (MODES.includes(newValue)) {\r\n\t\t\t\t\tnewState = { mode: newValue };\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'range-date':\r\n\t\t\t\tnewState = { rangeDate: newValue };\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tnewState.focusedDate = newValue;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'range-mode':\r\n\t\t\t\tnewState = {\r\n\t\t\t\t\trangeMode: newValue\r\n\t\t\t\t};\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (newState) {\r\n\t\t\tthis.setState(newState);\r\n\t\t}\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis.classList.add(calendarClass);\r\n\t\tthis.attachShadow({ mode: 'open' });\r\n\t\tthis.shadowRoot.adoptedStyleSheets = [stylesheet];\r\n\t\tthis.setState({\r\n\t\t\tfocusedDate: intl.date.toIS0Format(this._getDate()),\r\n\t\t\tselectedDate: '',\r\n\t\t\tmode: this.mode || 'days',\r\n\t\t\trangeDate: '',\r\n\t\t\trangeMode: '=',\r\n\t\t\thoveredDate: ''\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst isDateMode = this.state.mode === 'days';\r\n\t\tconst formatOptions = isDateMode ? { month: 'long' } : {};\r\n\t\tconst title = this._getButtonModeTitle(formatOptions);\r\n\t\tconst switchButtonIconRef = (\r\n\t\t\t\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\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t\tconst switchButtonIconNode = (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t\tconst switchModeButton = (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{title}\r\n\t\t\t\t\r\n\t\t\t\t{switchButtonIconRef}\r\n\t\t\t\t{this.state.mode === 'years' ? null : switchButtonIconNode}\r\n\t\t\t\r\n\t\t);\r\n\t\tconst switchToPrevLabel = getResource(ariaLabels['prev'][this.state.mode]);\r\n\t\tconst switchToNextLabel = getResource(ariaLabels['next'][this.state.mode]);\r\n\t\tconst switchNode = (\r\n\t\t\t
    \r\n\t\t\t\t{switchModeButton}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t\tconst gridItems = this._getGridItems();\r\n\t\tconst gridClass = `${calendarClass}__grid`;\r\n\t\tconst daysModifier = isDateMode ? ` ${gridClass}_days` : '';\r\n\t\tconst className = `${gridClass}${daysModifier}`;\r\n\t\tconst isHighlightActive =\r\n\t\t\tthis.state.rangeMode === '...' &&\r\n\t\t\tthis.state.mode === 'days' &&\r\n\t\t\t!this.state.rangeDate &&\r\n\t\t\tthis.state.selectedDate;\r\n\t\tconst onmouseover = isHighlightActive\r\n\t\t\t? (e) => this._highlightRange(e)\r\n\t\t\t: null;\r\n\t\tconst grid = (\r\n\t\t\t\r\n\t\t\t\t{gridItems}\r\n\t\t\t\r\n\t\t);\r\n\t\tconst root = (\r\n\t\t\t\r\n\t\t\t\t{switchNode}\r\n\t\t\t\t{grid}\r\n\t\t\t\r\n\t\t);\r\n\t\tInferno.render(root, this.shadowRoot);\r\n\t}\r\n\r\n\t_calculateDates() {\r\n\t\tconst daysOfWeek = this._getLocaleDaysOfWeek();\r\n\t\tconst datesOfPreviousMonth = this._getDatesOfPreviousMonth();\r\n\t\tconst datesOfCurrentMonth = this._getDatesOfCurrentMonth();\r\n\t\tconst datesOfNextMonth = this._getDatesOfNextMonth(\r\n\t\t\tdatesOfPreviousMonth.length,\r\n\t\t\tdatesOfCurrentMonth.length\r\n\t\t);\r\n\t\tconst datesWithWeeks = this._getDatesWithWeeks(\r\n\t\t\tdatesOfPreviousMonth,\r\n\t\t\tdatesOfCurrentMonth,\r\n\t\t\tdatesOfNextMonth\r\n\t\t);\r\n\r\n\t\treturn [{ value: '#', disabled: true }, ...daysOfWeek, ...datesWithWeeks];\r\n\t}\r\n\r\n\t_calculateGridData() {\r\n\t\tif (this.state.mode === 'days') {\r\n\t\t\treturn this._calculateDates();\r\n\t\t}\r\n\t\treturn this._calculateMonthsYears();\r\n\t}\r\n\r\n\t_calculateMonthsYears() {\r\n\t\tconst currentDate = this._getDateObject(true);\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst items = [];\r\n\t\tconst isMonthsMode = this.state.mode === 'months';\r\n\t\tconst itemsCount = isMonthsMode ? monthsInYear : yearsInDecade;\r\n\t\tconst decade = Math.trunc(focusedDate.year / 10);\r\n\t\tfor (let data = 0; data < itemsCount; data++) {\r\n\t\t\tconst targetYear = decade * 10 + data;\r\n\t\t\tconst date = isMonthsMode\r\n\t\t\t\t? new Date(focusedDate.year, data, 1)\r\n\t\t\t\t: new Date(targetYear, focusedDate.month, 1);\r\n\t\t\tconst isCurrent = isMonthsMode\r\n\t\t\t\t? this._compareDates(date, currentDate.date, 'months') === 0\r\n\t\t\t\t: this._compareDates(date, currentDate.date, 'years') === 0;\r\n\t\t\tconst isFocused = isMonthsMode\r\n\t\t\t\t? this._compareDates(date, focusedDate.date, 'months') === 0\r\n\t\t\t\t: this._compareDates(date, focusedDate.date, 'years') === 0;\r\n\t\t\tconst value = isMonthsMode\r\n\t\t\t\t? this._format(date, { month: 'short' })\r\n\t\t\t\t: targetYear;\r\n\t\t\titems.push({\r\n\t\t\t\tdata: isMonthsMode ? data : targetYear,\r\n\t\t\t\tvalue,\r\n\t\t\t\tisCurrent,\r\n\t\t\t\tisFocused\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\t_prepareDate(date, mode) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tmode === 'years' ? 0 : date.getMonth(),\r\n\t\t\tmode === 'days' ? date.getDate() : 1\r\n\t\t);\r\n\t}\r\n\r\n\t_compareDates(date1, date2, mode = 'days') {\r\n\t\tconst _date1 = this._prepareDate(date1, mode);\r\n\t\tconst _date2 = this._prepareDate(date2, mode);\r\n\r\n\t\tif (_date1 > _date2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (_date1 < _date2) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t_createRange(start, end) {\r\n\t\treturn Array.from(\r\n\t\t\tnew Array(end - start + 1),\r\n\t\t\t(item, index) => start + index\r\n\t\t);\r\n\t}\r\n\r\n\t_format(date, options) {\r\n\t\tdate = Date.UTC(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\tdate.getMilliseconds()\r\n\t\t);\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\ttimeZone: 'UTC'\r\n\t\t};\r\n\t\tconst result = new Intl.DateTimeFormat(intl.locale, options).format(date);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_getButtonModeTitle(additionalFormat = {}) {\r\n\t\tconst formatOptions = { year: 'numeric', ...additionalFormat };\r\n\r\n\t\tif (this.state.mode === 'years') {\r\n\t\t\tconst focusedDate = this._getDateObject();\r\n\t\t\tconst decade = Math.trunc(focusedDate.year / 10);\r\n\t\t\tconst firstDate = new Date(`${decade}0`, 0, 1);\r\n\t\t\tconst firstYear = this._format(firstDate, { year: 'numeric' });\r\n\t\t\tconst lastDate = new Date(`${decade}9`, 0, 1);\r\n\t\t\tconst lastYear = this._format(lastDate, { year: 'numeric' });\r\n\t\t\treturn `${firstYear} - ${lastYear}`;\r\n\t\t}\r\n\r\n\t\tconst date = intl.date.parse(this.state.focusedDate);\r\n\t\treturn this._format(date, formatOptions);\r\n\t}\r\n\r\n\t_getDateObject(current) {\r\n\t\tconst date = current\r\n\t\t\t? this._getDate()\r\n\t\t\t: intl.date.parse(this.state.focusedDate);\r\n\t\tconst year = date.getFullYear();\r\n\t\tconst month = date.getMonth();\r\n\t\tconst weekDay = date.getDay();\r\n\t\tconst day = date.getDate();\r\n\r\n\t\treturn {\r\n\t\t\tdate,\r\n\t\t\tyear,\r\n\t\t\tmonth,\r\n\t\t\tday,\r\n\t\t\tweekDay\r\n\t\t};\r\n\t}\r\n\r\n\t_getDate(year, month, day) {\r\n\t\tconst currentDate = new Date();\r\n\t\tyear = year ?? currentDate.getFullYear();\r\n\t\tmonth = month ?? currentDate.getMonth();\r\n\t\tday = day ?? currentDate.getDate();\r\n\t\treturn new Date(year, month, day);\r\n\t}\r\n\r\n\t_getDatesOfCurrentMonth() {\r\n\t\tconst currentDate = this._getDateObject(true);\r\n\t\tconst firstDateOfMonth = 1;\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst lastDateOfMonth = this._getLastDateOfMonth(focusedDate.month);\r\n\t\tconst datesOfCurrentMonth = this._createRange(\r\n\t\t\tfirstDateOfMonth,\r\n\t\t\tlastDateOfMonth\r\n\t\t).map((date) => {\r\n\t\t\tconst dateValue = new Date(focusedDate.year, focusedDate.month, date);\r\n\t\t\tconst isCurrent = this._compareDates(currentDate.date, dateValue) === 0;\r\n\t\t\tconst isFocused = this._compareDates(focusedDate.date, dateValue) === 0;\r\n\t\t\tlet isSelected = null;\r\n\t\t\tlet inRange = null;\r\n\t\t\tif (this.state.selectedDate) {\r\n\t\t\t\tconst selectedDate = intl.date.parse(this.state.selectedDate);\r\n\t\t\t\tisSelected = this._compareDates(dateValue, selectedDate) === 0;\r\n\t\t\t\tif (!isSelected && this.state.rangeDate) {\r\n\t\t\t\t\tconst rangeDate = intl.date.parse(this.state.rangeDate);\r\n\t\t\t\t\tisSelected = this._compareDates(dateValue, rangeDate) === 0;\r\n\t\t\t\t}\r\n\t\t\t\tinRange = this._isInRange(dateValue);\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tisCurrent,\r\n\t\t\t\tisSelected,\r\n\t\t\t\tisFocused,\r\n\t\t\t\tinRange,\r\n\t\t\t\tvalue: date\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn datesOfCurrentMonth;\r\n\t}\r\n\r\n\t_getDatesOfNextMonth(datesOfCurrentMonthLength, datesOfPreviousMonthLength) {\r\n\t\tconst firstDateOfMonth = 1;\r\n\t\tconst daysCount = weeksNumber * weekLength;\r\n\t\tconst listedDaysCount =\r\n\t\t\tdatesOfCurrentMonthLength + datesOfPreviousMonthLength;\r\n\t\tconst restOfNextDates = daysCount - listedDaysCount;\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst datesOfNextMonth = this._createRange(\r\n\t\t\tfirstDateOfMonth,\r\n\t\t\trestOfNextDates\r\n\t\t).map((date) => {\r\n\t\t\tconst dateValue = new Date(focusedDate.year, focusedDate.month + 1, date);\r\n\t\t\tconst inRange = this.state.selectedDate\r\n\t\t\t\t? this._isInRange(dateValue)\r\n\t\t\t\t: null;\r\n\t\t\treturn { value: date, notInMonth: true, monthOffset: 1, inRange };\r\n\t\t});\r\n\r\n\t\treturn datesOfNextMonth;\r\n\t}\r\n\r\n\t_getDatesOfPreviousMonth() {\r\n\t\tconst firstDayOfWeek = intl.date.firstDayOfWeek();\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst currentDate = this._getDate(focusedDate.year, focusedDate.month, 1);\r\n\t\tlet restOfPreviousDates = currentDate.getDay() - firstDayOfWeek;\r\n\t\trestOfPreviousDates =\r\n\t\t\trestOfPreviousDates < 0\r\n\t\t\t\t? weekLength + restOfPreviousDates\r\n\t\t\t\t: restOfPreviousDates;\r\n\t\tconst lastOfPreviousDates = this._getLastDateOfMonth(focusedDate.month - 1);\r\n\t\tconst datesOfPreviousMonth = this._createRange(\r\n\t\t\tlastOfPreviousDates - restOfPreviousDates + 1,\r\n\t\t\tlastOfPreviousDates\r\n\t\t).map((date) => {\r\n\t\t\tconst dateValue = new Date(focusedDate.year, focusedDate.month - 1, date);\r\n\t\t\tconst inRange = this.state.selectedDate\r\n\t\t\t\t? this._isInRange(dateValue)\r\n\t\t\t\t: null;\r\n\t\t\treturn { value: date, notInMonth: true, monthOffset: -1, inRange };\r\n\t\t});\r\n\r\n\t\treturn datesOfPreviousMonth;\r\n\t}\r\n\r\n\t_getDatesWithWeeks(\r\n\t\tdatesOfPreviousMonth,\r\n\t\tdatesOfCurrentMonth,\r\n\t\tdatesOfNextMonth\r\n\t) {\r\n\t\tconst isWeek = true;\r\n\t\tconst disabled = true;\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst firstDateOfMonth = this._getDate(\r\n\t\t\tfocusedDate.year,\r\n\t\t\tfocusedDate.month,\r\n\t\t\t1\r\n\t\t);\r\n\t\tconst firstWeekOfMonth = intl.date.week(firstDateOfMonth);\r\n\t\tconst datesWithWeeks = [\r\n\t\t\t...datesOfPreviousMonth,\r\n\t\t\t...datesOfCurrentMonth,\r\n\t\t\t...datesOfNextMonth\r\n\t\t].reduce(\r\n\t\t\t(arr, date, index) => {\r\n\t\t\t\tif (index > 0 && index % weekLength === 0) {\r\n\t\t\t\t\tconst month = date.notInMonth\r\n\t\t\t\t\t\t? focusedDate.month + 1\r\n\t\t\t\t\t\t: focusedDate.month;\r\n\t\t\t\t\tconst currentDate = this._getDate(\r\n\t\t\t\t\t\tfocusedDate.year,\r\n\t\t\t\t\t\tmonth,\r\n\t\t\t\t\t\tdate.value\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst week = intl.date.week(currentDate);\r\n\t\t\t\t\tarr.push({\r\n\t\t\t\t\t\tvalue: week,\r\n\t\t\t\t\t\tisWeek,\r\n\t\t\t\t\t\tdisabled\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tarr.push(date);\r\n\r\n\t\t\t\treturn arr;\r\n\t\t\t},\r\n\t\t\t[\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: firstWeekOfMonth,\r\n\t\t\t\t\tisWeek,\r\n\t\t\t\t\tdisabled\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t);\r\n\r\n\t\treturn datesWithWeeks;\r\n\t}\r\n\r\n\t_getGridItems() {\r\n\t\tconst isDateMode = this.state.mode === 'days';\r\n\t\tconst monthClass = !isDateMode ? ` ${secondaryItemClass}` : '';\r\n\t\tconst gridData = this._calculateGridData();\r\n\r\n\t\treturn gridData.map((item) => {\r\n\t\t\tconst {\r\n\t\t\t\tvalue,\r\n\t\t\t\tnotInMonth,\r\n\t\t\t\tisCurrent,\r\n\t\t\t\tisSelected,\r\n\t\t\t\tisFocused,\r\n\t\t\t\tinRange,\r\n\t\t\t\tisWeek,\r\n\t\t\t\tdisabled,\r\n\t\t\t\tdata,\r\n\t\t\t\tmonthOffset = null\r\n\t\t\t} = item;\r\n\t\t\tconst notInMonthClass = notInMonth\r\n\t\t\t\t? ` ${gridItemClass}_not-in-month`\r\n\t\t\t\t: '';\r\n\t\t\tconst weekClass = isWeek ? ` ${gridItemClass}_week` : '';\r\n\t\t\tconst disabledClass = disabled ? ` ${gridItemClass}_disabled` : '';\r\n\t\t\tconst isCurrentClass = isCurrent ? ` ${gridItemClass}_current` : '';\r\n\t\t\tconst isSelectedClass = isSelected ? ` ${gridItemClass}_selected` : '';\r\n\t\t\tconst inRangeClass = inRange ? ` ${gridItemClass}_in-range` : '';\r\n\t\t\tconst className = `${gridItemClass}${notInMonthClass}${isCurrentClass}${weekClass}${disabledClass}${monthClass}${inRangeClass}${isSelectedClass}`;\r\n\t\t\tconst ariaRole = disabled ? null : 'button';\r\n\t\t\tconst tabIndex = isFocused ? '0' : null;\r\n\t\t\tlet dataValue = null;\r\n\t\t\tif (!disabled) {\r\n\t\t\t\tdataValue = !isDateMode ? data : value;\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{value}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t_getLastDateOfMonth(month) {\r\n\t\tconst { year } = this._getDateObject();\r\n\t\tconst date = this._getDate(year, month + 1, 0);\r\n\r\n\t\treturn date.getDate();\r\n\t}\r\n\r\n\t_getLocaleDaysOfWeek() {\r\n\t\tconst formatOptions = { weekday: 'narrow' };\r\n\t\tconst currentDate = this._getDateObject(true);\r\n\r\n\t\tconst firstDayOfWeek = intl.date.firstDayOfWeek();\r\n\t\tconst firstDateOfWeek =\r\n\t\t\tcurrentDate.date.getDate() - currentDate.weekDay + firstDayOfWeek;\r\n\t\tconst datesOfWeek = this._createRange(\r\n\t\t\tfirstDateOfWeek,\r\n\t\t\tfirstDateOfWeek + weekLength - 1\r\n\t\t);\r\n\r\n\t\treturn datesOfWeek.map((date) => {\r\n\t\t\tconst day = this._format(\r\n\t\t\t\tnew Date(currentDate.year, currentDate.month, date),\r\n\t\t\t\tformatOptions\r\n\t\t\t);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tvalue: day,\r\n\t\t\t\tdisabled: true\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\t_getOffset() {\r\n\t\tlet offset = monthsInYear;\r\n\t\tswitch (this.state.mode) {\r\n\t\t\tcase 'days':\r\n\t\t\t\toffset = 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'years':\r\n\t\t\t\toffset *= yearsInDecade;\r\n\t\t}\r\n\t\treturn offset;\r\n\t}\r\n\r\n\t_arrowButtonClick = (e) => {\r\n\t\tconst next = e.target.closest(`.${calendarClass}__switch_next`);\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst offset = this._getOffset();\r\n\t\tconst month = next\r\n\t\t\t? focusedDate.month + offset\r\n\t\t\t: focusedDate.month - offset;\r\n\t\tconst date = this._getDate(focusedDate.year, month, 1);\r\n\t\tconst iso = intl.date.toIS0Format(date);\r\n\t\tthis.setState({ focusedDate: iso });\r\n\t};\r\n\r\n\t_highlightRange(e) {\r\n\t\tconst target = e.target.closest(`.${gridItemClass}`);\r\n\t\tconst isDisabled = target.classList.contains(`${gridItemClass}_disabled`);\r\n\t\tif (isDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst focusedDate = intl.date.parse(this.state.focusedDate);\r\n\t\tconst { value, offset = 0 } = target.dataset;\r\n\t\tconst hoveredDate = new Date(\r\n\t\t\tfocusedDate.getFullYear(),\r\n\t\t\tfocusedDate.getMonth() + +offset,\r\n\t\t\tvalue\r\n\t\t);\r\n\t\tconst hoveredIso = intl.date.toIS0Format(hoveredDate);\r\n\t\tthis.setState({ hoveredDate: hoveredIso });\r\n\t}\r\n\r\n\t_isInRange(date) {\r\n\t\tconst selectedDate = intl.date.parse(this.state.selectedDate);\r\n\t\tif (this.state.rangeMode === '...') {\r\n\t\t\tconst endRangeDate = this.state.rangeDate || this.state.hoveredDate;\r\n\t\t\tif (endRangeDate) {\r\n\t\t\t\tconst rangeDate = intl.date.parse(endRangeDate);\r\n\t\t\t\tconst dates = [selectedDate, rangeDate];\r\n\t\t\t\tconst minDate = new Date(Math.min(...dates));\r\n\t\t\t\tconst maxDate = new Date(Math.max(...dates));\r\n\t\t\t\treturn minDate <= date && date <= maxDate;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst comparisonResult = this._compareDates(\r\n\t\t\tdate,\r\n\t\t\tselectedDate,\r\n\t\t\tthis.state.mode\r\n\t\t);\r\n\r\n\t\tswitch (this.state.rangeMode) {\r\n\t\t\tcase '<':\r\n\t\t\t\treturn comparisonResult === -1;\r\n\t\t\tcase '<=':\r\n\t\t\t\treturn comparisonResult !== 1;\r\n\t\t\tcase '>':\r\n\t\t\t\treturn comparisonResult === 1;\r\n\t\t\tcase '>=':\r\n\t\t\t\treturn comparisonResult !== -1;\r\n\t\t\tcase '=':\r\n\t\t\t\treturn comparisonResult === 0;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t_selectDate = (e) => {\r\n\t\tconst focusedDate = this._getDateObject();\r\n\t\tconst target = e.target.closest(`.${gridItemClass}`);\r\n\r\n\t\tif (!target || !target.dataset.value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst isDisabled = target.classList.contains(`${gridItemClass}_disabled`);\r\n\t\tif (isDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst value = target.dataset.value;\r\n\t\tif (this.state.mode === 'days') {\r\n\t\t\tconst { offset = 0 } = target.dataset;\r\n\t\t\tconst selectedDate = new Date(\r\n\t\t\t\tfocusedDate.year,\r\n\t\t\t\tfocusedDate.month + +offset,\r\n\t\t\t\tvalue\r\n\t\t\t);\r\n\t\t\tconst isoDate = intl.date.toIS0Format(selectedDate);\r\n\r\n\t\t\tif (this.state.rangeMode === '...') {\r\n\t\t\t\tif (!this.selectedDate || this.rangeDate) {\r\n\t\t\t\t\tthis.selectedDate = isoDate;\r\n\t\t\t\t\tthis.rangeDate = '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.rangeDate = isoDate;\r\n\t\t\t\t\tconst selectedDateValue = intl.date.parse(this.selectedDate);\r\n\t\t\t\t\tif (selectedDate < selectedDateValue) {\r\n\t\t\t\t\t\tthis.rangeDate = this.selectedDate;\r\n\t\t\t\t\t\tthis.selectedDate = isoDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedDate = isoDate;\r\n\t\t\t}\r\n\t\t\tconst event = new CustomEvent('change', {\r\n\t\t\t\tdetail: {\r\n\t\t\t\t\tselectedDate: this.selectedDate,\r\n\t\t\t\t\trangeDate: this.rangeDate\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent(event);\r\n\t\t} else {\r\n\t\t\tconst isMonthsMode = this.state.mode === 'months';\r\n\t\t\tconst newDate = isMonthsMode\r\n\t\t\t\t? this._getDate(focusedDate.year, value, 1)\r\n\t\t\t\t: this._getDate(value, focusedDate.month, 1);\r\n\t\t\tconst newMode = isMonthsMode ? 'days' : 'months';\r\n\t\t\tthis._changeMode(newMode);\r\n\t\t\tthis.setState({\r\n\t\t\t\tfocusedDate: intl.date.toIS0Format(newDate)\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t_switchMode = () => {\r\n\t\tconst currentMode = this.state.mode;\r\n\t\tconst targetMode = currentMode === 'days' ? 'months' : 'years';\r\n\t\tthis._changeMode(targetMode);\r\n\t};\r\n\r\n\t_changeMode(mode) {\r\n\t\tthis.mode = mode;\r\n\t\tconst event = new CustomEvent('changemode', {\r\n\t\t\tdetail: {\r\n\t\t\t\tmode\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.dispatchEvent(event);\r\n\t}\r\n\r\n\t_keyboardHandler = (e) => {\r\n\t\tconst { shortcut } = processKeyboardEvent(e);\r\n\t\tconst submit = ['space', 'enter'].includes(shortcut);\r\n\t\tif (submit) {\r\n\t\t\tthis._selectDate(e);\r\n\t\t} else {\r\n\t\t\tlet nextFocusedDate;\r\n\t\t\tif (this.state.mode === 'days') {\r\n\t\t\t\tnextFocusedDate = this._getNextFocusedDay(shortcut);\r\n\t\t\t} else if (this.state.mode === 'months') {\r\n\t\t\t\tnextFocusedDate = this._getNextFocusedMonth(shortcut);\r\n\t\t\t} else if (this.state.mode === 'years') {\r\n\t\t\t\tnextFocusedDate = this._getNextFocusedYear(shortcut);\r\n\t\t\t}\r\n\r\n\t\t\tif (!nextFocusedDate) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setState({\r\n\t\t\t\tfocusedDate: intl.date.toIS0Format(nextFocusedDate)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\tconst focusNode = this.shadowRoot.querySelector(\r\n\t\t\t`.${gridItemClass}[tabindex=\"0\"]`\r\n\t\t);\r\n\t\tfocusNode.focus();\r\n\t};\r\n\r\n\t_getNextFocusedDay(shortcut) {\r\n\t\tconst { date, year, month, day } = this._getDateObject();\r\n\t\tswitch (shortcut) {\r\n\t\t\tcase 'ctrl+arrowup':\r\n\t\t\t\tthis.mode = 'months';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowleft':\r\n\t\t\t\tdate.setDate(day - 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowright':\r\n\t\t\t\tdate.setDate(day + 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowup':\r\n\t\t\t\tdate.setDate(day - 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowdown':\r\n\t\t\t\tdate.setDate(day + 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'home':\r\n\t\t\t\tdate.setDate(1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'end':\r\n\t\t\t\tdate.setMonth(date.getMonth() + 1);\r\n\t\t\t\tdate.setDate(0);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pageup':\r\n\t\t\t\tdate.setMonth(month - 1);\r\n\t\t\t\t// when focus moves from Mar 31 to Feb 28 => Mar 2\r\n\t\t\t\tif (month === date.getMonth()) {\r\n\t\t\t\t\tdate.setDate(0);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pagedown':\r\n\t\t\t\tdate.setMonth(month + 1);\r\n\t\t\t\t// when focus moves from Jan 31 to Feb 28 => Mar 3\r\n\t\t\t\tif (date.getMonth() > month + 1) {\r\n\t\t\t\t\tdate.setDate(0);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'shift+pageup':\r\n\t\t\t\tdate.setFullYear(year - 1);\r\n\t\t\t\t// when focus moves from Feb 29 to Feb 28 => Mar 1\r\n\t\t\t\tif (month !== date.getMonth()) {\r\n\t\t\t\t\tdate.setDate(0);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'shift+pagedown':\r\n\t\t\t\tdate.setFullYear(year + 1);\r\n\t\t\t\t// when focus moves from Feb 29 to Feb 28 => Mar 1\r\n\t\t\t\tif (month !== date.getMonth()) {\r\n\t\t\t\t\tdate.setDate(0);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t_getNextFocusedMonth(shortcut) {\r\n\t\tconst { date, year, month } = this._getDateObject();\r\n\t\tdate.setDate(1);\r\n\t\tswitch (shortcut) {\r\n\t\t\tcase 'ctrl+arrowup':\r\n\t\t\t\tthis.mode = 'years';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'ctrl+arrowdown':\r\n\t\t\t\tthis.mode = 'days';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowleft':\r\n\t\t\t\tdate.setMonth(month - 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowright':\r\n\t\t\t\tdate.setMonth(month + 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowup':\r\n\t\t\t\tdate.setMonth(month - 4);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowdown':\r\n\t\t\t\tdate.setMonth(month + 4);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'home': {\r\n\t\t\t\tconst january = 0;\r\n\t\t\t\tdate.setMonth(january);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'end': {\r\n\t\t\t\tconst december = 11;\r\n\t\t\t\tdate.setMonth(december);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'pageup':\r\n\t\t\t\tdate.setFullYear(year - 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pagedown':\r\n\t\t\t\tdate.setFullYear(year + 1);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t_getNextFocusedYear(shortcut) {\r\n\t\tconst { date, year } = this._getDateObject();\r\n\t\tdate.setDate(1);\r\n\t\tswitch (shortcut) {\r\n\t\t\tcase 'ctrl+arrowdown':\r\n\t\t\t\tthis.mode = 'months';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowleft':\r\n\t\t\t\tdate.setFullYear(year - 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowright':\r\n\t\t\t\tdate.setFullYear(year + 1);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'arrowup': {\r\n\t\t\t\tconst yearDigit = year % 10;\r\n\t\t\t\tlet modifier = -4;\r\n\t\t\t\tswitch (yearDigit) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tmodifier = -2;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\tmodifier = -6;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tdate.setFullYear(year + modifier);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'arrowdown': {\r\n\t\t\t\tconst yearDigit = year % 10;\r\n\t\t\t\tlet modifier = +4;\r\n\t\t\t\tswitch (yearDigit) {\r\n\t\t\t\t\tcase 6:\r\n\t\t\t\t\tcase 7:\r\n\t\t\t\t\t\tmodifier = +6;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 8:\r\n\t\t\t\t\tcase 9:\r\n\t\t\t\t\t\tmodifier = +2;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tdate.setFullYear(year + modifier);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'home': {\r\n\t\t\t\tconst firstYearInDecade = year - (year % 10);\r\n\t\t\t\tdate.setFullYear(firstYearInDecade);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'end': {\r\n\t\t\t\tconst firstYearInDecade = year - (year % 10);\r\n\t\t\t\tconst lastYearInDecade = firstYearInDecade + 9;\r\n\t\t\t\tdate.setFullYear(lastYearInDecade);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'pageup':\r\n\t\t\t\tdate.setFullYear(year - 10);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'pagedown':\r\n\t\t\t\tdate.setFullYear(year + 10);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport FilterList from './filterList';\r\nimport intl from '../core/intl';\r\nimport getResource from '../core/resources';\r\n\r\nconst dropdownMaxHeight = 210;\r\nconst hours = 24;\r\nconst midnightISO = '00:00:00';\r\nconst padNumber = (number) => {\r\n\tif (number < 10) {\r\n\t\treturn '0' + number;\r\n\t}\r\n\treturn number;\r\n};\r\nconst splitToParts = (str, delimiter) => {\r\n\tconst index = str.indexOf(delimiter);\r\n\tconst firstPart = str.substring(0, index);\r\n\tconst secondPart = str.substring(index + 1);\r\n\r\n\treturn [firstPart, secondPart];\r\n};\r\nconst arabicNumberingSystem = {\r\n\tarab: ['Ù ', 'Ù¡', 'Ù¢', 'Ù£', 'Ù¤', 'Ù¥', 'Ù¦', 'Ù§', 'Ù¨', 'Ù©'],\r\n\tarabext: ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹']\r\n};\r\n\r\nexport default class TimePicker extends FilterList {\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.setAttribute('mode', 'input-a');\r\n\t\tthis.value = midnightISO;\r\n\t}\r\n\r\n\tinitialize() {\r\n\t\tsuper.initialize();\r\n\t\tconst list = this._createHours();\r\n\t\tthis.validation = true;\r\n\t\tthis.setState({ list });\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\r\n\t\tconst timePicker = this;\r\n\t\tthis.state = {\r\n\t\t\t...this.state,\r\n\t\t\tset value(isoTime) {\r\n\t\t\t\tif (!isoTime) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst time = timePicker._formatTime(isoTime);\r\n\t\t\t\ttimePicker.setState({ label: time });\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_createHours() {\r\n\t\tconst list = Array.from(new Array(hours), (item, hour) => {\r\n\t\t\thour = padNumber(hour);\r\n\t\t\tconst isoTime = `${hour}:00:00`;\r\n\t\t\tconst time = this._formatTime(isoTime);\r\n\r\n\t\t\treturn { label: time, value: isoTime };\r\n\t\t});\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\t_getInputTemplate() {\r\n\t\tconst input = super._getInputTemplate();\r\n\t\tinput.attrs['aria-label'] = getResource('time_picker.aria_label');\r\n\t\tinput.events = {\r\n\t\t\t...input.events,\r\n\t\t\tonchange: (e) => {\r\n\t\t\t\tif (!(e instanceof CustomEvent)) {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst predictedValue = this.state.predictedValue;\r\n\t\t\t\tpredictedValue && this.setState({ value: predictedValue });\r\n\t\t\t\tconst invalid = !this.validate();\r\n\t\t\t\tthis.setState({ invalid });\r\n\t\t\t\tconst isoTime = !invalid\r\n\t\t\t\t\t? this._convertTimeToISO(this.state.label)\r\n\t\t\t\t\t: '';\r\n\t\t\t\tthis.value = isoTime;\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn input;\r\n\t}\r\n\r\n\t_getDropdownHeight() {\r\n\t\tconst itemHeight = this._getItemHeight();\r\n\t\tconst totalHeight = this.state.count * itemHeight;\r\n\r\n\t\treturn Math.min(totalHeight, dropdownMaxHeight);\r\n\t}\r\n\r\n\t_formatTime(isoTime) {\r\n\t\tconst [hours, minutes, seconds] = isoTime.split(':');\r\n\t\tconst currentDate = new Date();\r\n\t\tconst year = currentDate.getFullYear();\r\n\t\tconst month = currentDate.getMonth();\r\n\t\tconst date = currentDate.getDate();\r\n\t\tconst dateISO = intl.date.toIS0Format(\r\n\t\t\tnew Date(year, month, date, hours, minutes, seconds)\r\n\t\t);\r\n\t\tconst dateParsed = intl.date.parse(dateISO);\r\n\t\tconst time = intl.date.format(dateParsed, 'longTime');\r\n\r\n\t\treturn time;\r\n\t}\r\n\r\n\t_validateHour(hour, isTwelveHourFormat) {\r\n\t\tconst isTwentyFourHour = hour >= 0 && hour < 24;\r\n\t\tconst isTwelveHour = hour > 0 && hour <= 12;\r\n\t\tconst isValid = isTwelveHourFormat ? isTwelveHour : isTwentyFourHour;\r\n\r\n\t\treturn isValid;\r\n\t}\r\n\r\n\t_validateMinuteAndSecond(value) {\r\n\t\tconst isValid = value >= 0 && value < 60;\r\n\r\n\t\treturn isValid;\r\n\t}\r\n\r\n\t_validateDayPeriod(dayPeriod, localeDayPeriods) {\r\n\t\tdayPeriod = dayPeriod.toLowerCase();\r\n\r\n\t\treturn localeDayPeriods.includes(dayPeriod);\r\n\t}\r\n\r\n\t_convertTimeToISO(time) {\r\n\t\tconst isTwelveHourFormat = intl.date.isHour12();\r\n\t\ttime = time.toLowerCase();\r\n\t\ttime = this._checkForArabic(time);\r\n\t\ttime = this._parseTime(time);\r\n\t\tlet hour = +time.hour;\r\n\t\tlet minute = +time.minute;\r\n\t\tlet second = +time.second;\r\n\t\tif (isTwelveHourFormat) {\r\n\t\t\tconst dayPeriod = time.dayPeriod;\r\n\t\t\tif (dayPeriod === time.beforeMidnightPeriod && hour < 12) {\r\n\t\t\t\thour += 12;\r\n\t\t\t} else if (dayPeriod === time.afterMidnightPeriod && hour === 12) {\r\n\t\t\t\thour = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thour = padNumber(hour);\r\n\t\tminute = padNumber(minute);\r\n\t\tsecond = padNumber(second);\r\n\r\n\t\treturn `${hour}:${minute}:${second}`;\r\n\t}\r\n\r\n\t_getTimeParts() {\r\n\t\tconst isoDate = '2020-09-01';\r\n\t\tconst beforeMidnight = intl.date.parse(`${isoDate}T23:00:00Z`);\r\n\t\tconst afterMidnight = intl.date.parse(`${isoDate}T01:00:00Z`);\r\n\t\tconst options = {\r\n\t\t\ttimeZone: 'UTC',\r\n\t\t\thour: 'numeric',\r\n\t\t\tminute: 'numeric',\r\n\t\t\tsecond: 'numeric'\r\n\t\t};\r\n\t\tconst formatter = new Intl.DateTimeFormat(intl.locale, options);\r\n\t\tconst beforeMidnightParts = formatter.formatToParts(beforeMidnight);\r\n\t\tconst afterMidnightParts = formatter.formatToParts(afterMidnight);\r\n\t\tconst order = beforeMidnightParts\r\n\t\t\t.filter((part) => part.type !== 'literal')\r\n\t\t\t.map((part) => part.type);\r\n\t\tconst delimiters = beforeMidnightParts\r\n\t\t\t.filter((part) => part.type === 'literal')\r\n\t\t\t.map((part) => part.value);\r\n\t\tconst beforeMidnightPeriod = beforeMidnightParts\r\n\t\t\t.find((part) => part.type === 'dayPeriod')\r\n\t\t\t?.value.toLowerCase();\r\n\t\tconst afterMidnightPeriod = afterMidnightParts\r\n\t\t\t.find((part) => part.type === 'dayPeriod')\r\n\t\t\t?.value.toLowerCase();\r\n\t\tconst parts = {\r\n\t\t\torder,\r\n\t\t\tdelimiters,\r\n\t\t\tbeforeMidnightPeriod,\r\n\t\t\tafterMidnightPeriod\r\n\t\t};\r\n\r\n\t\treturn parts;\r\n\t}\r\n\r\n\t_parseTime(time) {\r\n\t\tconst timeParts = this._getTimeParts();\r\n\t\tconst delimiters = timeParts.delimiters;\r\n\t\tconst order = timeParts.order;\r\n\t\tconst result = {};\r\n\t\tconst length = delimiters.length;\r\n\t\tlet splitted = time;\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tsplitted = splitToParts(splitted, delimiters[i]);\r\n\t\t\tresult[order[i]] = splitted[0];\r\n\t\t\tsplitted = splitted[1];\r\n\t\t}\r\n\r\n\t\tresult[order[length]] = splitted;\r\n\t\tresult.beforeMidnightPeriod = timeParts.beforeMidnightPeriod;\r\n\t\tresult.afterMidnightPeriod = timeParts.afterMidnightPeriod;\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t_checkForArabic(inputValue) {\r\n\t\tconst formatter = new Intl.DateTimeFormat(intl.locale);\r\n\t\tconst localeOptions = formatter.resolvedOptions();\r\n\t\tconst numberingSystem =\r\n\t\t\tarabicNumberingSystem[localeOptions.numberingSystem];\r\n\t\tif (numberingSystem) {\r\n\t\t\tinputValue = numberingSystem.reduce((inputValue, number, index) => {\r\n\t\t\t\treturn inputValue.replaceAll(number, `${index}`);\r\n\t\t\t}, inputValue);\r\n\t\t}\r\n\r\n\t\treturn inputValue;\r\n\t}\r\n\r\n\tinputValidate() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tlet inputValue = this._getCurrentInputValue();\r\n\t\tif (!inputValue) {\r\n\t\t\tthis.value = midnightISO;\r\n\t\t\tinputValue = this.state.label;\r\n\t\t}\r\n\r\n\t\tinputValue = this._checkForArabic(inputValue);\r\n\t\tconst isTwelveHourFormat = intl.date.isHour12();\r\n\t\tconst time = this._parseTime(inputValue);\r\n\t\tconst hour = time.hour;\r\n\t\tconst minute = time.minute;\r\n\t\tconst second = time.second;\r\n\t\tconst isInvalid = [hour, minute, second].some((timePart) => {\r\n\t\t\treturn !timePart || timePart.startsWith(' ') || timePart.endsWith(' ');\r\n\t\t});\r\n\t\tif (isInvalid) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst isValidHour = this._validateHour(+hour, isTwelveHourFormat);\r\n\t\tif (!isValidHour) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst isValidMinute = this._validateMinuteAndSecond(+minute);\r\n\t\tif (!isValidMinute) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isTwelveHourFormat) {\r\n\t\t\tconst dayPeriod = time.dayPeriod;\r\n\t\t\tconst isValidDayPeriod = this._validateDayPeriod(dayPeriod, [\r\n\t\t\t\ttime.beforeMidnightPeriod,\r\n\t\t\t\ttime.afterMidnightPeriod\r\n\t\t\t]);\r\n\t\t\tif (!isValidDayPeriod) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst isValidSecond = this._validateMinuteAndSecond(+second);\r\n\t\tif (!isValidSecond) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetTemplate() {\r\n\t\tconst wrapper = super.getTemplate();\r\n\t\tif (wrapper.attrs) {\r\n\t\t\tconst invalidMessage = getResource('time_picker.invalid_message');\r\n\t\t\twrapper.attrs['data-tooltip'] = invalidMessage;\r\n\t\t}\r\n\r\n\t\treturn wrapper;\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport intl from '../core/intl';\r\nimport SvgManager from '../core/SvgManager';\r\nimport getResource from '../core/resources';\r\n\r\nconst icons = {\r\n\tcalendar: '../images/InputCalendar12.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nconst TOOLBAR_CLASS = 'aras-toolbar';\r\nconst TOOLBAR_VERTICAL_CLASS = 'aras-toolbar_vertical';\r\nconst TOOLBAR_OVERFLOWED_CLASS = 'aras-toolbar_overflow_expanded';\r\nconst TOOLBAR_ITEM_CLASS = 'aras-toolbar__item';\r\nconst TOOLBAR_ITEM_HIDDEN_CLASS = 'aras-toolbar__item_hidden';\r\nconst DROPDOWN_CLASS = 'aras-toolbar__dropdown';\r\nconst DROPDOWN_BUTTON_CLASS =\r\n\t'aras-toolbar__dropdown-button aras-icon-arrow aras-icon-arrow_down';\r\nconst DROPDOWN_LIST_CONTAINER_CLASS = 'aras-dropdown';\r\nconst DROPDOWN_LIST_CLASS = 'aras-list';\r\nconst RIGHT_CONTAINER_CLASS = 'aras-toolbar__right-container';\r\nconst DIVIDER_CLASS = 'aras-toolbar__divider';\r\n\r\nconst ICON_CLASS = 'aras-icon';\r\nconst BUTTON_CLASS = 'aras-button';\r\nconst BUTTON_ICON_CLASS = 'aras-button__icon';\r\nconst SELECT_CLASS = 'aras-select';\r\nconst SELECT_CONTAINER_CLASS = 'aras-select__container';\r\nconst SEPARATOR_CLASS = 'aras-toolbar__separator';\r\nconst FORM_CLASS = 'aras-toolbar__form aras-form';\r\nconst SINGULAR_CLASS = 'aras-singular';\r\nconst SINGULAR_CONTAINER_CLASS = SINGULAR_CLASS + '__container';\r\nconst SINGULAR_BUTTON_CLASS = SINGULAR_CLASS + '__button';\r\nconst DISABLED_MODIFIER = '_disabled';\r\nconst CORPORATE_TIME_CLASS = 'aras-toolbar__corporate-time';\r\nconst TEXT_CLASS = 'aras-toolbar__text';\r\nconst IMAGE_CLASS = 'aras-toolbar__image';\r\nconst INPUT_CLASS = 'aras-input';\r\nconst INPUT_INVALID_CLASS = INPUT_CLASS + '_invalid';\r\n\r\nconst ItemConstructorWrapper = function ({ item, ...options }) {\r\n\tconst node = options.formatter(item, options);\r\n\tnode.props = {\r\n\t\t...item.attributes,\r\n\t\t...node.props\r\n\t};\r\n\tnode.className = [\r\n\t\tTOOLBAR_ITEM_CLASS,\r\n\t\toptions.isHidden ? TOOLBAR_ITEM_HIDDEN_CLASS : '',\r\n\t\tnode.className,\r\n\t\titem.cssClass\r\n\t]\r\n\t\t.filter((className) => className)\r\n\t\t.join(' ');\r\n\r\n\tconst itemStyle = item.cssStyle || '';\r\n\tif (typeof itemStyle === 'object') {\r\n\t\tnode.props.style = {\r\n\t\t\t...itemStyle,\r\n\t\t\torder: options.flexOrder\r\n\t\t};\r\n\t} else {\r\n\t\tnode.props.style = `order:${options.flexOrder}; ${itemStyle}`;\r\n\t}\r\n\r\n\treturn node;\r\n};\r\n\r\nconst defaultTemplates = {\r\n\troot: function (data) {\r\n\t\tconst leftContainerItemsData = data.leftContainerItems || [];\r\n\t\tconst leftContainerItems = this.items(\r\n\t\t\tleftContainerItemsData,\r\n\t\t\tdata.options,\r\n\t\t\tdata.toolbar\r\n\t\t);\r\n\t\tconst rightContainerItems = this.items(\r\n\t\t\tdata.rightContainerItems || [],\r\n\t\t\tdata.options,\r\n\t\t\tdata.toolbar,\r\n\t\t\ttrue\r\n\t\t);\r\n\t\tconst {\r\n\t\t\trightContainerOrder,\r\n\t\t\tisOverflowVisible,\r\n\t\t\tisOverflowAllowed,\r\n\t\t\tisVertical\r\n\t\t} = data.options;\r\n\t\tconst isExpandButtonHidden =\r\n\t\t\tdata.options.isExpandButtonHidden ||\r\n\t\t\trightContainerOrder >= leftContainerItemsData.length - 1;\r\n\t\tlet toolbarOverflowToggleButton = null;\r\n\r\n\t\tif (isOverflowAllowed) {\r\n\t\t\tconst defaultClass = `${TOOLBAR_ITEM_CLASS} ${BUTTON_CLASS}`;\r\n\t\t\tconst hiddenClass = isExpandButtonHidden ? TOOLBAR_ITEM_HIDDEN_CLASS : '';\r\n\t\t\tconst overflowClass = isOverflowVisible\r\n\t\t\t\t? `${BUTTON_CLASS}_toggled-on`\r\n\t\t\t\t: '';\r\n\t\t\tconst className = `${defaultClass} ${hiddenClass} ${overflowClass} ${TOOLBAR_CLASS}__expand-button`;\r\n\t\t\tconst resourceKey = isOverflowVisible\r\n\t\t\t\t? 'toolbar.hide_overflow'\r\n\t\t\t\t: 'toolbar.show_overflow';\r\n\t\t\tconst title = getResource(resourceKey);\r\n\t\t\tconst isFocusNodeInOverflow = leftContainerItems.some(\r\n\t\t\t\t(item) => item.props.focused && item.props.isHidden\r\n\t\t\t);\r\n\t\t\tconst tabIndex =\r\n\t\t\t\tdata.options.isToolbarRole && !isFocusNodeInOverflow ? -1 : 0;\r\n\t\t\t// Safari and FF on MacOS doesn't focus button after click\r\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\r\n\t\t\t// Used for fix it (+event keyup and role=button for accessibility)\r\n\t\t\tconst attrs = {\r\n\t\t\t\tonclick: () => {\r\n\t\t\t\t\tdata.toolbar._toggleToolbarExpandState();\r\n\t\t\t\t},\r\n\t\t\t\tonkeyup: function (e) {\r\n\t\t\t\t\tif (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (['Space', 'Enter', 'NumpadEnter'].includes(e.code)) {\r\n\t\t\t\t\t\tthis.click();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tclassName,\r\n\t\t\t\ttitle,\r\n\t\t\t\ttabIndex,\r\n\t\t\t\trole: 'button'\r\n\t\t\t};\r\n\t\t\ttoolbarOverflowToggleButton = (\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\r\n\t\tconst overflowClassName = isOverflowVisible ? TOOLBAR_OVERFLOWED_CLASS : '';\r\n\t\tconst verticalClass = isVertical ? TOOLBAR_VERTICAL_CLASS : '';\r\n\t\tconst className = `${TOOLBAR_CLASS} ${overflowClassName} ${verticalClass}`;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{[...leftContainerItems]}\r\n\t\t\t\t\r\n\t\t\t\t\t{toolbarOverflowToggleButton}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{[...rightContainerItems]}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t},\r\n\titems: function (items, options, toolbar, isRightContainerItem) {\r\n\t\tconst itemNodes = items.reduce(function (acc, item, index) {\r\n\t\t\titem = toolbar.data.get(item);\r\n\t\t\tif (!item.hidden && defaultFormatters[item.type]) {\r\n\t\t\t\tacc.push(\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn acc;\r\n\t\t}, []);\r\n\t\treturn itemNodes;\r\n\t}\r\n};\r\n\r\nfunction CreateSelectNode(data) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{data.optionNodes}\r\n\t\t\r\n\t);\r\n}\r\n\r\nconst lifecycle = {\r\n\tonComponentShouldUpdate: function (lastProps, nextProps) {\r\n\t\treturn (\r\n\t\t\tlastProps.item !== nextProps.item ||\r\n\t\t\tlastProps.isToolbarRole !== nextProps.isToolbarRole ||\r\n\t\t\tlastProps.focused !== nextProps.focused ||\r\n\t\t\tlastProps.flexOrder !== nextProps.flexOrder ||\r\n\t\t\tlastProps.isHidden !== nextProps.isHidden\r\n\t\t);\r\n\t}\r\n};\r\n\r\nconst CreateMenu = function (props) {\r\n\treturn props.spinner ? (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t e.preventDefault()}\r\n\t\t\tref={(node) => {\r\n\t\t\t\tprops.data &&\r\n\t\t\t\t\tprops.data.size &&\r\n\t\t\t\t\tnode &&\r\n\t\t\t\t\tnode.applyData(props.data, props.roots);\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nconst defaultFormatters = {\r\n\tcorporateTime: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst currentDate = intl.date.parse(item.value);\r\n\t\tconst date = intl.date.format(currentDate, 'longDate');\r\n\t\tconst time = intl.date.format(currentDate, 'shortTime');\r\n\t\tconst dateNodeId = `${item.id}_date`;\r\n\t\tconst timeNodeId = `${item.id}_time`;\r\n\t\tconst describedByAttribute = `${dateNodeId} ${timeNodeId}`;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{date}\r\n\t\t\t\t{time}\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tbutton: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst contentNodes = [];\r\n\t\tconst { image } = item;\r\n\t\tlet label = item.label;\r\n\r\n\t\tif (image) {\r\n\t\t\tconst iconNode = SvgManager.createInfernoVNode(image, {\r\n\t\t\t\tcssClass: BUTTON_ICON_CLASS\r\n\t\t\t});\r\n\r\n\t\t\tcontentNodes.push(iconNode);\r\n\t\t} else if (!label) {\r\n\t\t\tlabel = getResource('common.no_label');\r\n\t\t}\r\n\r\n\t\tif (label) {\r\n\t\t\tcontentNodes.push(\r\n\t\t\t\t{label}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tlet nodeClass = BUTTON_CLASS;\r\n\t\tnodeClass += item.state ? ' ' + BUTTON_CLASS + '_toggled-on' : '';\r\n\t\tconst disabledAttribute = toolbar._getDisabledAttributeName();\r\n\t\tconst props = {\r\n\t\t\ttabindex: toolbar._getItemTabindex(item.id),\r\n\t\t\ttitle: item.tooltip_template,\r\n\t\t\t'data-id': item.id,\r\n\t\t\t'aria-label': item.aria_label,\r\n\t\t\t[disabledAttribute]: !!item.disabled\r\n\t\t};\r\n\t\tif (item.state !== undefined) {\r\n\t\t\tprops['aria-pressed'] = Boolean(item.state);\r\n\t\t}\r\n\r\n\t\t// Click handler attached only for enabled button with state property\r\n\t\tif (!item.disabled && item.state !== undefined) {\r\n\t\t\tconst toggleButtonClick = function () {\r\n\t\t\t\ttoolbar.data.set(\r\n\t\t\t\t\titem.id,\r\n\t\t\t\t\tObject.assign({}, item, { state: !item.state })\r\n\t\t\t\t);\r\n\t\t\t\ttoolbar.render();\r\n\t\t\t};\r\n\r\n\t\t\tif (item.clickEventType === 'mousedown') {\r\n\t\t\t\tprops.onmousedown = toggleButtonClick;\r\n\t\t\t} else {\r\n\t\t\t\tprops.onclick = toggleButtonClick;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tseparator: function () {\r\n\t\treturn ;\r\n\t},\r\n\tselect: function (item, options) {\r\n\t\tconst { toolbar, selectedIndex } = options;\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\titem.id,\r\n\t\t\t\tObject.assign({}, item, {\r\n\t\t\t\t\tvalue: event.target.value\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\t\tconst optionNodes = (item.options || []).map(function (option) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst selectNode = (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{item.label && (\r\n\t\t\t\t\t{item.label}\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\t{selectNode}\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\tdate: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst { id } = item;\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\t\tconst style = item.size ? { width: item.size } : {};\r\n\t\tObject.assign(style, item.disabled ? {} : { cursor: 'pointer' });\r\n\r\n\t\tconst nodeClass =\r\n\t\t\tSINGULAR_CLASS +\r\n\t\t\t(item.disabled ? ` ${SINGULAR_CLASS + DISABLED_MODIFIER}` : '');\r\n\t\tconst buttonClass =\r\n\t\t\tSINGULAR_BUTTON_CLASS + (item.disabled ? ` ${ICON_CLASS}_grayscale` : '');\r\n\t\tconst iconNode = SvgManager.createInfernoVNode(icons.calendar, {\r\n\t\t\tcssClass: ICON_CLASS + ' aras-singular__button-icon'\r\n\t\t});\r\n\t\tconst buttonNode = item.disabled ? null : (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\tlet value = getResource('itemsgrid.today');\r\n\t\tif (item.value) {\r\n\t\t\tconst parsedValue = intl.date.parse(item.value);\r\n\t\t\tif (parsedValue) {\r\n\t\t\t\tvalue = intl.date.format(parsedValue, 'shortDateTime');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{buttonNode}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tsingular: function (item, options) {\r\n\t\tconst { id } = item;\r\n\t\tconst { toolbar } = options;\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\r\n\t\tconst nodeClass =\r\n\t\t\tFORM_CLASS + (item.disabled ? ' ' + FORM_CLASS + DISABLED_MODIFIER : '');\r\n\r\n\t\treturn (\r\n\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\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\ttextbox: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst { id, label } = item;\r\n\t\tconst children = [];\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\t\tconst style = item.size ? { width: item.size + 'rem' } : {};\r\n\t\tconst textboxInput = (\r\n\t\t\t\r\n\t\t);\r\n\t\tif (label) {\r\n\t\t\tchildren.push(\r\n\t\t\t\t{label}\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (item.image) {\r\n\t\t\tconst iconNode = SvgManager.createInfernoVNode(item.image, {\r\n\t\t\t\tcssClass: 'aras-input-icon',\r\n\t\t\t\tattrs: { 'aria-hidden': true }\r\n\t\t\t});\r\n\t\t\tchildren.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{textboxInput}\r\n\t\t\t\t\t{iconNode}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tchildren.push(textboxInput);\r\n\t\t}\r\n\t\tconst nodeClass = 'aras-toolbar__textbox aras-tooltip';\r\n\t\tconst nodeAttributes = {\r\n\t\t\t'data-tooltip-show': item.invalid ? 'focuswithin' : false,\r\n\t\t\t'data-tooltip': getResource(\r\n\t\t\t\titem.validationMessageResource || 'components.value_invalid'\r\n\t\t\t),\r\n\t\t\t'data-tooltip-pos': item.tooltip_pos || 'right'\r\n\t\t};\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tdropdownMenu: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst createButtonContent = function (item) {\r\n\t\t\tconst contentNodes = [];\r\n\r\n\t\t\tif (item.image) {\r\n\t\t\t\tconst iconNode = SvgManager.createInfernoVNode(item.image, {\r\n\t\t\t\t\tcssClass: BUTTON_ICON_CLASS\r\n\t\t\t\t});\r\n\t\t\t\tcontentNodes.push(iconNode);\r\n\t\t\t}\r\n\r\n\t\t\tif (item.label) {\r\n\t\t\t\tcontentNodes.push(\r\n\t\t\t\t\t{item.label}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// Dropdown arrow node always rendered\r\n\t\t\tcontentNodes.push(\r\n\t\t\t\t\r\n\t\t\t);\r\n\r\n\t\t\treturn contentNodes;\r\n\t\t};\r\n\r\n\t\tconst buttonFormatter = defaultFormatters[item.buttonFormatter];\r\n\t\tconst nodeClass =\r\n\t\t\tBUTTON_CLASS + (item.buttonCssClass ? ' ' + item.buttonCssClass : '');\r\n\r\n\t\tconst buttonRenderFunc = buttonFormatter || createButtonContent;\r\n\t\tlet buttonContentNodes = buttonRenderFunc(item, options);\r\n\t\tconst disabledAttribute = toolbar._getDisabledAttributeName();\r\n\t\tconst noItems = !item.data || !item.data.size;\r\n\t\tconst buttonNodeAttributes = {\r\n\t\t\t'aria-label': item.aria_label,\r\n\t\t\ttabindex: toolbar._getItemTabindex(item.id),\r\n\t\t\ttitle: item.tooltip_template,\r\n\t\t\t[disabledAttribute]:\r\n\t\t\t\titem.disabled === undefined ? noItems : !!item.disabled,\r\n\t\t\t'dropdown-button': '',\r\n\t\t\t'aria-haspopup': 'menu'\r\n\t\t};\r\n\r\n\t\tif (buttonContentNodes) {\r\n\t\t\tbuttonContentNodes = Array.isArray(buttonContentNodes)\r\n\t\t\t\t? buttonContentNodes\r\n\t\t\t\t: [buttonContentNodes];\r\n\t\t} else {\r\n\t\t\tbuttonContentNodes = [];\r\n\t\t}\r\n\r\n\t\tlet position = item.menuPosition;\r\n\t\tif (!position) {\r\n\t\t\tposition = toolbar.vertical ? 'right-top' : null;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tfilterDropdown: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst buttonClassList = [BUTTON_CLASS, 'aras-button_select'];\r\n\t\tif (item.buttonCssClass) {\r\n\t\t\tbuttonClassList.push(item.buttonCssClass);\r\n\t\t}\r\n\r\n\t\tconst buttonTabIndex = toolbar._getItemTabindex(item.id);\r\n\t\tconst buttonNodeAttributes = {\r\n\t\t\tclassName: buttonClassList.join(' '),\r\n\t\t\t'aria-label': item.aria_label,\r\n\t\t\ttabindex: buttonTabIndex,\r\n\t\t\ttitle: item.tooltip_template,\r\n\t\t\t'dropdown-button': '',\r\n\t\t\t'aria-haspopup': 'menu'\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\tif (e.currentTarget.contains(document.activeElement)) {\r\n\t\t\t\t\t\tdocument.activeElement.blur();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst buttonsList = e.target.querySelector(\r\n\t\t\t\t\t\t'.aras-dropdown-filter__buttons-list > .aras-list-item__submenu-container > .aras-list'\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbuttonsList.style.maxHeight = 'none';\r\n\t\t\t\t}}\r\n\t\t\t\tondropdownopened={(e) => {\r\n\t\t\t\t\tconst { target: dropdown } = e;\r\n\t\t\t\t\tconst isDropdownNotShrinked = dropdown.style.maxHeight === 'none';\r\n\r\n\t\t\t\t\tif (isDropdownNotShrinked) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst itemsList = dropdown.querySelector(\r\n\t\t\t\t\t\t'.aras-dropdown-filter__filtered-items-list'\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst dropdownHeight = dropdown.clientHeight;\r\n\t\t\t\t\tconst itemsListHeight = itemsList.clientHeight;\r\n\r\n\t\t\t\t\tconst residualHeight = dropdownHeight - itemsListHeight;\r\n\t\t\t\t\tconst buttonsList = dropdown.querySelector(\r\n\t\t\t\t\t\t'.aras-dropdown-filter__buttons-list > .aras-list-item__submenu-container > .aras-list'\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbuttonsList.style.maxHeight = `${residualHeight - 1}px`;\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t e.target.firstElementChild.focus()}\r\n\t\t\t\t>\r\n\t\t\t\t\t e.preventDefault()}\r\n\t\t\t\t\t\tref={(node) => {\r\n\t\t\t\t\t\t\tconst subMenu = item.data.get(item.subMenuKey);\r\n\t\t\t\t\t\t\tif (!node || !subMenu.roots.length || !item.data?.size) {\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\tnode.formatter = (id, item) => {\r\n\t\t\t\t\t\t\t\tif (!item.cssClass) {\r\n\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{item.label}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tnode.applyData(item.data, subMenu.roots);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t e.preventDefault()}\r\n\t\t\t\t\t\tref={(node) => {\r\n\t\t\t\t\t\t\tif (!node || !item.roots.length || !item.data?.size) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tnode.applyData(item.data, item.roots);\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},\r\n\tdropdownSelector: function (item, options) {\r\n\t\tconst { id } = item;\r\n\t\tconst { toolbar, dropdownStyle } = options;\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, {\r\n\t\t\t\t\tvalue: event.currentTarget.dataset.value\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tconst evt = new CustomEvent('change', { bubbles: true });\r\n\t\t\tevent.currentTarget.dispatchEvent(evt);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\t\tconst keys = Object.keys(item.options);\r\n\t\tconst itemOptions = item.options;\r\n\t\tconst checkedItemValue = itemOptions[item.value];\r\n\t\tconst dropdownItemsNodes = (keys || []).map(function (key) {\r\n\t\t\tconst itemValue = itemOptions[key];\r\n\t\t\tconst iconClass =\r\n\t\t\t\t'aras-list-item__icon' +\r\n\t\t\t\t(itemValue === checkedItemValue ? ' aras-icon-radio' : '');\r\n\t\t\treturn (\r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    ,\r\n\t\t\t\t\t{itemValue}\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst nodeClass = 'aras-toolbar__dropdown-selector';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{item.text}\r\n\t\t\t\t\t{item.value}\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\t
      {dropdownItemsNodes}
    \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\thtmlSelector: function (item, options) {\r\n\t\tconst { id } = item;\r\n\t\tconst { toolbar, dropdownStyle } = options;\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\ttoolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, {\r\n\t\t\t\t\tvalue: event.currentTarget.dataset.value\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tconst evt = new CustomEvent('change', { bubbles: true });\r\n\t\t\tevent.currentTarget\r\n\t\t\t\t.closest('.aras-toolbar__html-selector')\r\n\t\t\t\t.dispatchEvent(evt);\r\n\t\t\ttoolbar.render();\r\n\t\t};\r\n\r\n\t\tconst selectedItemValue = item.value;\r\n\t\tlet selectedItemLabel = '';\r\n\r\n\t\tconst dropdownItemsNodes = item.options.map(function (option) {\r\n\t\t\tif (option.type === 'separator') {\r\n\t\t\t\treturn
  • ;\r\n\t\t\t}\r\n\r\n\t\t\tconst itemLabel = option.label;\r\n\t\t\tconst itemValue = option.value;\r\n\t\t\tselectedItemLabel =\r\n\t\t\t\titemValue === selectedItemValue ? itemLabel : selectedItemLabel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
  • \r\n\t\t\t\t\t{itemLabel}\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{item.label}\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{selectedItemLabel}\r\n\t\t\t\t\t\t\r\n\t\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\t
      {dropdownItemsNodes}
    \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\tdropdownButton: function (item, options) {\r\n\t\tconst { dropdownStyle, toolbar } = options;\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\tconst evt = new CustomEvent('dropDownItemClick', {\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tdetail: { optionId: event.currentTarget.dataset.optionid }\r\n\t\t\t});\r\n\t\t\tevent.currentTarget.dispatchEvent(evt);\r\n\t\t};\r\n\r\n\t\tconst dropdownItemsNodes = item.options.map((option) => {\r\n\t\t\treturn (\r\n\t\t\t\t
  • \r\n\t\t\t\t\t{option.label}\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{item.text}\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
      {dropdownItemsNodes}
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t},\r\n\timage: function (item, options) {\r\n\t\tconst { toolbar } = options;\r\n\t\tconst imageClass = IMAGE_CLASS;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{SvgManager.createInfernoVNode(item.image, {\r\n\t\t\t\t\talt: item.tooltip_template\r\n\t\t\t\t})}\r\n\t\t\t
    \r\n\t\t);\r\n\t},\r\n\ttext: function (item, options) {\r\n\t\tconst textClass = TEXT_CLASS;\r\n\t\tconst { toolbar } = options;\r\n\t\treturn (\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}\r\n};\r\n\r\nexport { defaultTemplates, defaultFormatters as toolbarFormatters };\r\n","import HyperHTMLElement from 'hyperhtml-element';\r\nimport { render } from 'inferno';\r\nimport { defaultTemplates, toolbarFormatters } from './toolbarTemplates';\r\nimport trimSeparators from './trimSeparators';\r\nimport type {\r\n\ttoolbarItems,\r\n\tFormatterT,\r\n\tcheckedItemT,\r\n\ttoolbarDataRender\r\n} from './toolbarTypes';\r\n\r\nexport default class Toolbar extends HyperHTMLElement {\r\n\t#leftContainerItems: string[] = [];\r\n\t#rightContainerItems: string[] = [];\r\n\t#renderingPromise: Promise | null = null;\r\n\t#resizeObserver = new ResizeObserver(() => this.render());\r\n\t#templates = defaultTemplates;\r\n\r\n\tdatastore: Map = new Map();\r\n\tfocusedItemId = '';\r\n\tdeclare expanded: boolean;\r\n\tdeclare overflow: boolean;\r\n\tdeclare vertical: boolean;\r\n\tdeclare role: string;\r\n\r\n\tstatic get booleanAttributes(): string[] {\r\n\t\treturn ['overflow', 'expanded', 'vertical'];\r\n\t}\r\n\tstatic get observedAttributes(): string[] {\r\n\t\treturn ['role'];\r\n\t}\r\n\r\n\t_getItemTabindex(itemId: string) {\r\n\t\tif (this._isToolbarRole()) {\r\n\t\t\treturn itemId === this.focusedItemId ? '0' : '-1';\r\n\t\t}\r\n\r\n\t\treturn this._isItemFocusable(itemId) ? '0' : '-1';\r\n\t}\r\n\r\n\t_getDisabledAttributeName() {\r\n\t\treturn this._isToolbarRole() ? 'aria-disabled' : 'disabled';\r\n\t}\r\n\r\n\t#focusoutHandler = (event: FocusEvent): void => {\r\n\t\tconst relatedTarget = event.relatedTarget;\r\n\t\tif (\r\n\t\t\tthis.expanded &&\r\n\t\t\t!(relatedTarget instanceof Node && this.contains(relatedTarget))\r\n\t\t) {\r\n\t\t\tthis.expanded = false;\r\n\t\t}\r\n\t};\r\n\r\n\t#resizeHandler = (): Promise => {\r\n\t\treturn this.render();\r\n\t};\r\n\r\n\tstatic extendFormatters(formatter: FormatterT): void {\r\n\t\tObject.assign(toolbarFormatters, formatter);\r\n\t}\r\n\r\n\tconnectedCallback(): void {\r\n\t\tif (!this.role) {\r\n\t\t\tthis.role = 'toolbar';\r\n\t\t}\r\n\t\tif (!this.overflow && this._isToolbarRole()) {\r\n\t\t\tthis.overflow = true;\r\n\t\t}\r\n\r\n\t\tthis._initKeyboardHandler();\r\n\t\tthis._initOverflowHandlers();\r\n\t\tthis.on('click', (parentItemId, event) =>\r\n\t\t\tthis._checkedItemClickHandler(parentItemId, event)\r\n\t\t);\r\n\t\twindow.addEventListener('resize', this.#resizeHandler);\r\n\t}\r\n\r\n\tdisconnectedCallback(): void {\r\n\t\tthis.#resizeObserver.unobserve(this);\r\n\t\twindow.removeEventListener('resize', this.#resizeHandler);\r\n\t}\r\n\r\n\tattributeChangedCallback(attrName: string): void {\r\n\t\tif (attrName === 'role') {\r\n\t\t\tthis._initKeyboardHandler();\r\n\t\t} else if (attrName === 'overflow') {\r\n\t\t\tthis._initOverflowHandlers();\r\n\t\t} else if (attrName === 'vertical') {\r\n\t\t\tif (this.vertical) {\r\n\t\t\t\tthis.setAttribute('aria-orientation', 'vertical');\r\n\t\t\t} else {\r\n\t\t\t\tthis.removeAttribute('aria-orientation');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tprivate _initKeyboardHandler() {\r\n\t\tif (this._isToolbarRole()) {\r\n\t\t\tthis.addEventListener('keydown', this._keyboardEventHandler);\r\n\t\t} else {\r\n\t\t\tthis.removeEventListener('keydown', this._keyboardEventHandler);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _initOverflowHandlers() {\r\n\t\tif (this.overflow) {\r\n\t\t\tthis.#resizeObserver.observe(this);\r\n\t\t\tthis.addEventListener('focusout', this.#focusoutHandler);\r\n\t\t} else {\r\n\t\t\tthis.#resizeObserver.unobserve(this);\r\n\t\t\tthis.removeEventListener('focusout', this.#focusoutHandler);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async _keyboardEventHandler(e: KeyboardEvent) {\r\n\t\tif (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst prevItemKey = this.vertical ? 'ArrowUp' : 'ArrowLeft';\r\n\t\tconst nextItemKey = this.vertical ? 'ArrowDown' : 'ArrowRight';\r\n\t\tconst key: string = e.code;\r\n\t\tif (![prevItemKey, nextItemKey].includes(key)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (\r\n\t\t\te.target instanceof Element &&\r\n\t\t\tthis._getFocusNode() !== e.target &&\r\n\t\t\t!e.target.closest('.aras-toolbar__expand-button')\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nextItemId;\r\n\t\tswitch (key) {\r\n\t\t\tcase prevItemKey:\r\n\t\t\t\tnextItemId = this._getPrevFocusable();\r\n\t\t\t\tbreak;\r\n\t\t\tcase nextItemKey:\r\n\t\t\t\tnextItemId = this._getNextFocusable();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (nextItemId) {\r\n\t\t\te.preventDefault();\r\n\t\t\tawait this._focusItem(nextItemId);\r\n\r\n\t\t\t// preventDefault isn't working for 'select' in FF: https://bugzilla.mozilla.org/show_bug.cgi?id=1019630\r\n\t\t\tconst targetNode = e.target;\r\n\r\n\t\t\tif (!(targetNode instanceof HTMLElement)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\ttargetNode.nodeName === 'SELECT' &&\r\n\t\t\t\t/Firefox\\/(\\S+)/.test(window.navigator.userAgent)\r\n\t\t\t) {\r\n\t\t\t\tconst originalDisplay = targetNode.style.display;\r\n\t\t\t\ttargetNode.style.display = 'none';\r\n\t\t\t\ttargetNode.clientHeight; // execute re-rendering of HTML engine\r\n\t\t\t\ttargetNode.style.display = originalDisplay;\r\n\t\t\t\t// don't call anything below what will re-render HTML\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _getFocusableItems() {\r\n\t\treturn [...this.#leftContainerItems, ...this.#rightContainerItems].filter(\r\n\t\t\t(itemId) => this._isItemFocusable(itemId)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _getNextFocusable() {\r\n\t\tconst itemsId = this._getFocusableItems();\r\n\t\tif (!itemsId.length) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn itemsId[itemsId.indexOf(this.focusedItemId) + 1] || itemsId[0];\r\n\t}\r\n\r\n\tprivate _getPrevFocusable() {\r\n\t\tconst itemsId = this._getFocusableItems();\r\n\t\tif (!itemsId.length) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\titemsId[itemsId.indexOf(this.focusedItemId) - 1] ||\r\n\t\t\titemsId[itemsId.length - 1]\r\n\t\t);\r\n\t}\r\n\r\n\tprivate async _focusItem(itemId = '') {\r\n\t\tthis.focusedItemId = itemId;\r\n\t\tawait this.render();\r\n\t\tconst focusNode = this._getFocusNode();\r\n\t\tif (!focusNode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (focusNode.closest('.aras-toolbar__item_hidden')) {\r\n\t\t\tthis.expanded = true;\r\n\t\t\tawait this.render();\r\n\t\t}\r\n\r\n\t\tfocusNode.focus();\r\n\t}\r\n\r\n\tprivate _getFocusNode() {\r\n\t\tif (!this.focusedItemId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst dataIdSelector = `[data-id=\"${this.focusedItemId}\"]`;\r\n\t\treturn this.querySelector(\r\n\t\t\t`${dataIdSelector}[tabindex=\"0\"], ${dataIdSelector} [tabindex=\"0\"]`\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _isItemFocusable(itemId: string) {\r\n\t\tconst item = this.datastore.get(itemId);\r\n\r\n\t\treturn (\r\n\t\t\titem &&\r\n\t\t\t!item.hidden &&\r\n\t\t\t!(item.attributes && item.attributes['aria-hidden']) &&\r\n\t\t\titem.type !== 'separator' &&\r\n\t\t\t(!item.disabled || ['button', 'dropdownMenu'].includes(item.type))\r\n\t\t);\r\n\t}\r\n\r\n\tprivate async _checkedItemClickHandler(parentItemId: string, event: Event) {\r\n\t\tconst node = event.target;\r\n\t\tif (!(node instanceof Element)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst targetNode = node.closest('li[data-index]');\r\n\t\tconst parentItem = this.data.get(parentItemId);\r\n\r\n\t\tif (!targetNode?.dataset.index || !(parentItem && 'data' in parentItem)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst dataMap = parentItem.data;\r\n\t\tconst targetNodeIndex = targetNode.dataset.index;\r\n\t\tconst targetItem = dataMap.get(targetNodeIndex) as checkedItemT;\r\n\r\n\t\tif (\r\n\t\t\ttargetItem &&\r\n\t\t\t!targetItem.disabled &&\r\n\t\t\t(targetItem.checked !== undefined || targetItem.type === 'checkbox')\r\n\t\t) {\r\n\t\t\tconst groupId = targetItem.group_id;\r\n\t\t\tif (groupId) {\r\n\t\t\t\tfor (const [key, item] of dataMap) {\r\n\t\t\t\t\tif (!('group_id' in item && item.group_id === groupId)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataMap.set(key, { ...item, checked: false });\r\n\t\t\t\t}\r\n\t\t\t\ttargetItem.checked = true;\r\n\t\t\t} else {\r\n\t\t\t\ttargetItem.checked = !targetItem.checked;\r\n\t\t\t}\r\n\r\n\t\t\tdataMap.set(targetNodeIndex, { ...targetItem });\r\n\t\t\tthis.data.set(parentItemId, { ...parentItem });\r\n\t\t\treturn this.render();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _overflowRender() {\r\n\t\tconst options = this._getVnodeProperties();\r\n\t\toptions.options = Object.assign(options.options, {\r\n\t\t\tisOverflowVisible: true,\r\n\t\t\trightContainerOrder: -1\r\n\t\t});\r\n\t\tthis._render(options);\r\n\r\n\t\tlet rightContainerOrder = this._getLastItemOnFirstRowIndex();\r\n\t\tif (this._hasItemsInOverflow()) {\r\n\t\t\toptions.options = Object.assign(options.options, {\r\n\t\t\t\tisExpandButtonHidden: true\r\n\t\t\t});\r\n\t\t\tthis._render(options);\r\n\r\n\t\t\tif (!this._hasItemsInOverflow()) {\r\n\t\t\t\trightContainerOrder = this._getLastItemOnFirstRowIndex();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst finalOptions = this._getVnodeProperties();\r\n\t\tfinalOptions.options.rightContainerOrder = rightContainerOrder;\r\n\t\tthis._render(finalOptions);\r\n\r\n\t\tif (\r\n\t\t\t!this.expanded &&\r\n\t\t\tthis.firstElementChild &&\r\n\t\t\tthis.offsetParent !== null\r\n\t\t) {\r\n\t\t\tthis.style.height = this.firstElementChild.clientHeight + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _render(options?: toolbarDataRender) {\r\n\t\tif (\r\n\t\t\tthis._isToolbarRole() &&\r\n\t\t\t(!this.focusedItemId || !this._isItemFocusable(this.focusedItemId))\r\n\t\t) {\r\n\t\t\tthis.focusedItemId = this._getNextFocusable();\r\n\t\t}\r\n\r\n\t\tconst root = this.#templates.root(options || this._getVnodeProperties());\r\n\t\trender(root, this);\r\n\t}\r\n\r\n\trender(): Promise {\r\n\t\tif (this.#renderingPromise) {\r\n\t\t\treturn this.#renderingPromise;\r\n\t\t}\r\n\t\tthis.#renderingPromise = Promise.resolve().then(() => {\r\n\t\t\tif (this.overflow) {\r\n\t\t\t\tthis._overflowRender();\r\n\t\t\t} else {\r\n\t\t\t\tthis._render();\r\n\t\t\t}\r\n\r\n\t\t\tthis.#renderingPromise = null;\r\n\r\n\t\t\tif (this.expanded && !this.contains(document.activeElement)) {\r\n\t\t\t\tthis.expanded = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this.#renderingPromise;\r\n\t}\r\n\r\n\tset data(dataMap: Map) {\r\n\t\tthis.datastore = dataMap;\r\n\t\tthis.#rightContainerItems = [];\r\n\t\tthis.#leftContainerItems = [];\r\n\t\tthis.datastore.forEach((value, key) => {\r\n\t\t\tif (value.right) {\r\n\t\t\t\tthis.#rightContainerItems.push(key);\r\n\t\t\t} else {\r\n\t\t\t\tthis.#leftContainerItems.push(key);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget data(): Map {\r\n\t\treturn this.datastore;\r\n\t}\r\n\r\n\tset container(newContainerItems: string[]) {\r\n\t\tthis.#leftContainerItems = newContainerItems;\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget container(): string[] {\r\n\t\treturn this.#leftContainerItems;\r\n\t}\r\n\r\n\tset rightContainer(newContainerItems: string[]) {\r\n\t\tthis.#rightContainerItems = newContainerItems;\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget rightContainer(): string[] {\r\n\t\treturn this.#rightContainerItems;\r\n\t}\r\n\r\n\ton(\r\n\t\teventType: string,\r\n\t\tcallback: (itemId: string, event: Event) => void | Promise\r\n\t): () => void {\r\n\t\tconst handler = (event: Event) => {\r\n\t\t\tconst targetItemId = this._getIdByDomElement(event.target);\r\n\t\t\tconst item = this.data.get(targetItemId);\r\n\t\t\tif (item && !item.disabled) {\r\n\t\t\t\tcallback(targetItemId, event);\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.addEventListener(eventType, handler);\r\n\t\treturn () => {\r\n\t\t\tthis.removeEventListener(eventType, handler);\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _getIdByDomElement(element: EventTarget | null): string {\r\n\t\tif (!(element instanceof Element)) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tconst targetNodeSelector = '[data-id]';\r\n\t\tconst targetNode = element.closest(targetNodeSelector);\r\n\t\treturn targetNode?.dataset.id ?? '';\r\n\t}\r\n\r\n\tprivate _getVnodeProperties(): toolbarDataRender {\r\n\t\tconst leftContainerItems = trimSeparators(\r\n\t\t\tthis.data,\r\n\t\t\tthis.#leftContainerItems\r\n\t\t);\r\n\t\tconst rightContainerItems = trimSeparators(\r\n\t\t\tthis.data,\r\n\t\t\tthis.#rightContainerItems\r\n\t\t);\r\n\t\treturn {\r\n\t\t\tleftContainerItems,\r\n\t\t\trightContainerItems,\r\n\t\t\ttoolbar: this,\r\n\t\t\toptions: {\r\n\t\t\t\tisToolbarRole: this._isToolbarRole(),\r\n\t\t\t\tisOverflowAllowed: this.overflow,\r\n\t\t\t\tisOverflowVisible: this.expanded,\r\n\t\t\t\tisExpandButtonHidden: false,\r\n\t\t\t\tisVertical: this.vertical,\r\n\t\t\t\trightContainerOrder: leftContainerItems.length\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tprivate _isToolbarRole() {\r\n\t\treturn this.role === 'toolbar';\r\n\t}\r\n\r\n\tprivate _getLastItemOnFirstRowIndex() {\r\n\t\tconst maximalFirstRowItemOffsetTop = 20;\r\n\t\tconst lastItemOnFirstRowIndex = Array.prototype.findIndex.call(\r\n\t\t\tthis.firstElementChild && this.firstElementChild.childNodes,\r\n\t\t\t(itemNode) => itemNode.offsetTop > maximalFirstRowItemOffsetTop\r\n\t\t);\r\n\r\n\t\treturn lastItemOnFirstRowIndex === -1\r\n\t\t\t? this.#leftContainerItems.length\r\n\t\t\t: lastItemOnFirstRowIndex - 1;\r\n\t}\r\n\r\n\tprivate _hasItemsInOverflow() {\r\n\t\treturn this.firstElementChild\r\n\t\t\t? this.clientHeight < this.firstElementChild.clientHeight\r\n\t\t\t: false;\r\n\t}\r\n\r\n\t_toggleToolbarExpandState() {\r\n\t\tthis.expanded = !this.expanded;\r\n\r\n\t\tif (this.expanded) {\r\n\t\t\tthis._focusItem(this.focusedItemId);\r\n\t\t}\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport xml from '../core/Xml';\r\n\r\nconst setPropertyTypeIdNode = (formNode, propertyName) => {\r\n\tconst itemTypeProperty = window.itemType.selectSingleNode(\r\n\t\t`Relationships/Item[name=\"${propertyName}\"]`\r\n\t);\r\n\tconst propertyTypeNode = formNode.selectSingleNode(\r\n\t\t`Relationships/Item/Relationships/Item[name=\"${propertyName}\"]/propertytype_id`\r\n\t);\r\n\tif (!itemTypeProperty || !propertyTypeNode) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst propertyTypeId = itemTypeProperty.getAttribute('id');\r\n\txml.setText(propertyTypeNode, propertyTypeId);\r\n};\r\n\r\nconst prepareFormNode = (formNode, currentItemType) => {\r\n\tif (\r\n\t\tcurrentItemType.startsWith('effs_') &&\r\n\t\tcurrentItemType.endsWith('_expression')\r\n\t) {\r\n\t\tsetPropertyTypeIdNode(formNode, 'definition');\r\n\t\tsetPropertyTypeIdNode(formNode, 'effs_scope_id');\r\n\t}\r\n\r\n\treturn formNode;\r\n};\r\n\r\nexport default prepareFormNode;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport prepareFormNode from './formHelper';\r\n\r\nconst showItemInFrame = (frame) => {\r\n\tif (!frame) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst currentItem = window.item;\r\n\tconst currentItemType = currentItem.getAttribute('type');\r\n\tconst formMode = window.isNew ? 'add' : window.isEditMode ? 'edit' : 'view';\r\n\tlet formNode = aras.uiGetForm4ItemEx(currentItem, formMode);\r\n\tformNode = prepareFormNode(formNode, currentItemType);\r\n\r\n\taras.uiShowItemInFrameEx(\r\n\t\tframe.contentWindow,\r\n\t\tcurrentItem,\r\n\t\tformMode,\r\n\t\t0,\r\n\t\tformNode\r\n\t);\r\n};\r\nexport default class Form extends HyperHTMLElement {\r\n\tcreated() {\r\n\t\tthis.style.height = window.formHeight + 'px';\r\n\t\tthis.html`\r\n\t\t\t this.render()}\"\r\n\t\t\t\tonload=\"${(e) =>\r\n\t\t\t\t\twindow.returnBlockerHelper.attachBlocker(e.target.contentWindow)}\"\r\n\t\t\t>\r\n\t\t`;\r\n\t}\r\n\r\n\tasync render() {\r\n\t\tif (this.renderPromise) {\r\n\t\t\treturn this.renderPromise;\r\n\t\t}\r\n\r\n\t\tthis.renderPromise = Promise.resolve();\r\n\t\tawait this.renderPromise;\r\n\t\tshowItemInFrame(this.firstElementChild);\r\n\t\tthis.renderPromise = null;\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport SvgManager from '../core/SvgManager';\r\n\r\nconst TOOLBAR_CLASS = 'aras-compat-toolbar';\r\nconst TOOLBAR_LABELED_CLASS = 'aras-compat-toolbar_labeled';\r\nconst CONTENT_CLASS = 'aras-compat-toolbar__content';\r\nconst CONTAINER_CLASS = 'aras-compat-toolbar__container';\r\nconst DROPDOWN_CLASS = 'aras-compat-toolbar__dropdown';\r\nconst DROPDOWN_BUTTON_CLASS =\r\n\t'aras-compat-toolbar__dropdown-button aras-icon-arrow aras-icon-arrow_down';\r\nconst DROPDOWN_LIST_CONTAINER_CLASS = 'aras-dropdown';\r\nconst DROPDOWN_OPENED_LIST_CONTAINER_CLASS = 'aras-dropdown_opened';\r\nconst DROPDOWN_LIST_CLASS = 'aras-list';\r\n\r\nconst BUTTON_CLASS = 'aras-compat-toolbar__button';\r\nconst SEPARATOR_CLASS = 'aras-compat-toolbar__separator';\r\nconst FORM_CLASS = 'aras-compat-toolbar__form aras-form';\r\nconst DATE_CLASS = 'aras-form-date';\r\nconst SINGULAR_CLASS = 'aras-form-singular';\r\nconst DISABLED_CLASS = 'aras-compat-toolbar_disabled';\r\nconst HIDDEN_CLASS = 'aras-hide';\r\n\r\nlet toolbarFormatters;\r\n\r\nconst defaultTemplates = {\r\n\troot: function (data) {\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\r\n\t\tconst templatesObj = this;\r\n\t\tconst leftContainerItems = this.items(\r\n\t\t\tdata.leftContainerItems || [],\r\n\t\t\ttemplatesObj,\r\n\t\t\tdata.options,\r\n\t\t\tdata.toolbar\r\n\t\t);\r\n\t\tconst rightContainerItems = this.items(\r\n\t\t\tdata.rightContainerItems || [],\r\n\t\t\ttemplatesObj,\r\n\t\t\tdata.options,\r\n\t\t\tdata.toolbar\r\n\t\t);\r\n\t\tconst dropdownItems = this.items(\r\n\t\t\tdata.dropdownItems || [],\r\n\t\t\ttemplatesObj,\r\n\t\t\tdata.options,\r\n\t\t\tdata.toolbar\r\n\t\t);\r\n\t\tlet dropdownNode;\r\n\t\tif (dropdownItems.length > 0) {\r\n\t\t\tconst DropdownNode = this.dropdownNode;\r\n\t\t\tdropdownNode = (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst toolbarNodeClass = data.options.isToolbarLabeled\r\n\t\t\t? TOOLBAR_CLASS + ' ' + TOOLBAR_LABELED_CLASS\r\n\t\t\t: TOOLBAR_CLASS;\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    {leftContainerItems}
    \r\n\t\t\t\t\t
    {rightContainerItems}
    \r\n\t\t\t\t
    \r\n\t\t\t\t{dropdownNode}\r\n\t\t\t
    \r\n\t\t);\r\n\t},\r\n\titems: function (items, itemTemplates, options, toolbar) {\r\n\t\tconst itemNodes = items.map(function (item) {\r\n\t\t\titem = toolbar.data.get(item);\r\n\t\t\tconst ItemConstructor = toolbarFormatters[item.type];\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn itemNodes;\r\n\t},\r\n\tdropdownNode: function (data) {\r\n\t\tconst items = data.items;\r\n\t\tconst options = data.options;\r\n\t\tlet buttonClass = DROPDOWN_BUTTON_CLASS;\r\n\t\tif (!items || !items.length) {\r\n\t\t\tbuttonClass += ' ' + HIDDEN_CLASS;\r\n\t\t}\r\n\r\n\t\tconst dropdownItemsNodes = items.map(function (item) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{item}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t\tconst listContainerClass = options.forceOpenDropdown\r\n\t\t\t? DROPDOWN_LIST_CONTAINER_CLASS +\r\n\t\t\t ' ' +\r\n\t\t\t DROPDOWN_OPENED_LIST_CONTAINER_CLASS\r\n\t\t\t: DROPDOWN_LIST_CONTAINER_CLASS;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
      {dropdownItemsNodes}
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t}\r\n};\r\n\r\nconst lifecycle = {\r\n\tonComponentShouldUpdate: function (lastProps, nextProps) {\r\n\t\tif (lastProps.item.type === 'separator') {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst needToUpdate = lastProps.item !== nextProps.item;\r\n\t\tif (needToUpdate) {\r\n\t\t\tconst itemNode = lastProps.toolbar._nodesInfo.get(lastProps.item);\r\n\t\t\tnextProps.toolbar._nodesInfo.set(nextProps.item, itemNode);\r\n\t\t}\r\n\t\treturn nextProps.forceUpdate || needToUpdate;\r\n\t},\r\n\tonComponentDidUpdate: function (lastProps, nextProps) {\r\n\t\tif (nextProps.forceUpdate) {\r\n\t\t\tconst itemNode = lastProps.toolbar._nodesInfo.get(lastProps.item);\r\n\t\t\titemNode.width = itemNode.node.clientWidth;\r\n\t\t\tnextProps.toolbar._nodesInfo.set(nextProps.item, itemNode);\r\n\t\t}\r\n\t},\r\n\tonComponentDidMount: function (domNode, props) {\r\n\t\tconst item = props.item;\r\n\t\tconst toolbar = props.toolbar;\r\n\t\tif (!item || item.type === 'separator') {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (toolbar._nodesInfo.has(item)) {\r\n\t\t\tconst nodeInfo = toolbar._nodesInfo.get(item);\r\n\t\t\tnodeInfo.node = domNode;\r\n\t\t\tif (props.forceUpdate) {\r\n\t\t\t\tnodeInfo.width = domNode.clientWidth;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttoolbar._nodesInfo.set(item, {\r\n\t\t\t\tnode: domNode,\r\n\t\t\t\twidth: domNode.clientWidth\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst defaultFormatters = {\r\n\tbutton: function (data) {\r\n\t\tconst iconNode = SvgManager.createInfernoVNode(data.item.image);\r\n\r\n\t\tconst toggleButtonClick = function () {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, { state: !data.item.state })\r\n\t\t\t);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tlet nodeClass = data.item.disabled\r\n\t\t\t? BUTTON_CLASS + ' ' + DISABLED_CLASS\r\n\t\t\t: BUTTON_CLASS;\r\n\t\tnodeClass += data.item.state ? ' aras-compat-toolbar__toggle-button' : '';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{iconNode}\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tseparator: function () {\r\n\t\treturn ;\r\n\t},\r\n\tselect: function (data) {\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tconst optionNodes = data.item.options.map(function (option) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{option.label}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.item.label}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{optionNodes}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tdate: function (data) {\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tconst style = data.item.size ? { width: data.item.size + 'rem' } : {};\r\n\t\tconst nodeClass = data.item.disabled\r\n\t\t\t? FORM_CLASS + ' ' + DISABLED_CLASS\r\n\t\t\t: FORM_CLASS;\r\n\t\treturn (\r\n\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\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tsingular: function (data) {\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tconst nodeClass = data.item.disabled\r\n\t\t\t? FORM_CLASS + ' ' + DISABLED_CLASS\r\n\t\t\t: FORM_CLASS;\r\n\r\n\t\treturn (\r\n\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\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\ttextbox: function (data) {\r\n\t\tconst item = data.item;\r\n\t\tconst changeHandler = function (event) {\r\n\t\t\tconst id = item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, item, { value: event.target.value })\r\n\t\t\t);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tconst style = data.item.size ? { width: data.item.size + 'rem' } : {};\r\n\t\tconst nodeClass = 'aras-form aras-compat-toolbar__textbox';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.item.label}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\tdropdownSelector: function (data) {\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, {\r\n\t\t\t\t\tvalue: event.currentTarget.dataset.value\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tconst evt = new CustomEvent('change', { bubbles: true });\r\n\t\t\tevent.currentTarget.dispatchEvent(evt);\r\n\t\t\tdata.toolbar._doUpdateNodesInfo = true;\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\t\tconst keys = Object.keys(data.item.options);\r\n\t\tconst itemOptions = data.item.options;\r\n\t\tconst checkedItemValue = itemOptions[data.item.value];\r\n\t\tconst dropdownItemsNodes = (keys || []).map(function (key) {\r\n\t\t\tconst itemValue = itemOptions[key];\r\n\t\t\tconst iconClass =\r\n\t\t\t\t'aras-list-item__icon' +\r\n\t\t\t\t(itemValue === checkedItemValue ? ' aras-icon-radio' : '');\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{itemValue}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst nodeClass = 'aras-compat-toolbar__dropdown-selector';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.item.text}\r\n\t\t\t\t\t{data.item.value}\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\t
      {dropdownItemsNodes}
    \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\thtmlSelector: function (data) {\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\tconst id = data.item.id;\r\n\t\t\tdata.toolbar.data.set(\r\n\t\t\t\tid,\r\n\t\t\t\tObject.assign({}, data.item, {\r\n\t\t\t\t\tvalue: event.currentTarget.dataset.value\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tconst evt = new CustomEvent('change', { bubbles: true });\r\n\t\t\tevent.currentTarget\r\n\t\t\t\t.closest('.aras-compat-toolbar__html-selector')\r\n\t\t\t\t.dispatchEvent(evt);\r\n\t\t\tdata.toolbar.render();\r\n\t\t};\r\n\r\n\t\tconst selectedItemValue = data.item.value;\r\n\t\tlet selectedItemLabel = '';\r\n\t\tconst dropdownItemsNodes = data.item.options.map(function (option) {\r\n\t\t\tif (option.type === 'separator') {\r\n\t\t\t\treturn
  • ;\r\n\t\t\t}\r\n\r\n\t\t\tconst itemLabel = option.label;\r\n\t\t\tconst itemValue = option.value;\r\n\t\t\tselectedItemLabel =\r\n\t\t\t\titemValue === selectedItemValue ? itemLabel : selectedItemLabel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{itemLabel}\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst nodeClass = 'aras-compat-toolbar__html-selector';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.item.label}\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\t\r\n\t\t\t\t\t\t\t{selectedItemLabel}\r\n\t\t\t\t\t\t\r\n\t\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\t
      {dropdownItemsNodes}
    \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\tdropdownButton: function (data) {\r\n\t\tconst itemClickHandler = function (event) {\r\n\t\t\tconst evt = new CustomEvent('dropDownItemClick', {\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tdetail: { optionId: event.currentTarget.dataset.optionid }\r\n\t\t\t});\r\n\t\t\tevent.currentTarget.dispatchEvent(evt);\r\n\t\t};\r\n\r\n\t\tconst dropdownItemsNodes = data.item.options.map((option) => {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{option.label}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{data.item.text}\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
      {dropdownItemsNodes}
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n};\r\n\r\ntoolbarFormatters = defaultFormatters;\r\nconst toolbarTemplates = function (customTemplates) {\r\n\ttoolbarFormatters = Object.assign(toolbarFormatters, customTemplates || {});\r\n\treturn Object.assign({}, defaultTemplates, customTemplates || {});\r\n};\r\n\r\nexport { toolbarTemplates, toolbarFormatters };\r\n","/* eslint-disable @typescript-eslint/no-this-alias */\r\n// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport { toolbarTemplates } from './compatToolbarTemplates';\r\n\r\nconst DROPDOWN_CLASS = 'aras-compat-toolbar__dropdown';\r\nconst DROPDOWN_LIST_CONTAINER_CLASS = 'aras-dropdown';\r\nconst DROPDOWN_OPENED_LIST_CONTAINER_CLASS = 'aras-dropdown_opened';\r\nconst DROPDOWN_BUTTON_CLASS = 'aras-compat-toolbar__dropdown-button';\r\n\r\nfunction CompatToolbar(dom, options) {\r\n\tthis.dom = dom;\r\n\tthis.templates = null;\r\n\tthis.dataset = new Map();\r\n\tthis.detectedForceRender = new Map();\r\n\tthis._nodesInfo = new WeakMap();\r\n\tthis._leftContainerItems = [];\r\n\tthis._rightContainerItems = [];\r\n\tthis._dropdownItems = [];\r\n\tthis._isToolbarLabeled = false;\r\n\tthis._doUpdateNodesInfo = true;\r\n\tthis._layoutInfo = {\r\n\t\tdropdownButtonWidth: 0,\r\n\t\tseparatorWidth: 3,\r\n\t\ttotalWidth: 0,\r\n\t\tleftContainerWidth: 0,\r\n\t\trightContainerWidth: 0\r\n\t};\r\n\tthis._renderingPromise = null;\r\n\tthis._init(options);\r\n}\r\n\r\nCompatToolbar.prototype = {\r\n\t_init: function (options) {\r\n\t\toptions = options || {};\r\n\t\tconst self = this;\r\n\t\tthis.templates = toolbarTemplates(options.customTemplates);\r\n\t\tthis._isToolbarLabeled = options.isToolbarLabeled || false;\r\n\t\tthis._resizeHandler = function () {\r\n\t\t\tself._updateItemsPosition();\r\n\t\t\tself.render();\r\n\t\t};\r\n\t\twindow.addEventListener('resize', this._resizeHandler);\r\n\t},\r\n\trender: function () {\r\n\t\tif (this._renderingPromise) {\r\n\t\t\treturn this._renderingPromise;\r\n\t\t}\r\n\t\tconst self = this;\r\n\t\tthis._renderingPromise = Promise.resolve().then(function () {\r\n\t\t\tlet root;\r\n\t\t\tself.dataset.forEach(function (item, key) {\r\n\t\t\t\tconst oldItem = self.detectedForceRender.get(key);\r\n\t\t\t\tif (\r\n\t\t\t\t\t!oldItem ||\r\n\t\t\t\t\t((item.type === 'select' || item.type === 'htmlSelector') &&\r\n\t\t\t\t\t\titem.options !== oldItem.options)\r\n\t\t\t\t) {\r\n\t\t\t\t\tself._doUpdateNodesInfo = true;\r\n\t\t\t\t\tself.detectedForceRender.set(key, item);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (self._doUpdateNodesInfo) {\r\n\t\t\t\tself._doUpdateNodesInfo = false;\r\n\t\t\t\troot = self.templates.root(self._getVnodeProperties(true));\r\n\t\t\t\tInferno.render(root, self.dom);\r\n\t\t\t\tconst layoutInfo = self._layoutInfo;\r\n\t\t\t\tconst containers = self.dom.querySelectorAll(\r\n\t\t\t\t\t'.aras-compat-toolbar__container'\r\n\t\t\t\t);\r\n\t\t\t\tlayoutInfo.leftContainerWidth = containers[0].clientWidth;\r\n\t\t\t\tlayoutInfo.rightContainerWidth = containers[1].clientWidth;\r\n\t\t\t\tlayoutInfo.totalWidth =\r\n\t\t\t\t\tlayoutInfo.leftContainerWidth + layoutInfo.rightContainerWidth;\r\n\t\t\t\tself._updateItemsPosition();\r\n\t\t\t}\r\n\r\n\t\t\troot = self.templates.root(self._getVnodeProperties(false));\r\n\t\t\tInferno.render(root, self.dom);\r\n\t\t\tself._renderingPromise = null;\r\n\t\t});\r\n\t\treturn this._renderingPromise;\r\n\t},\r\n\tset labeled(newValue) {\r\n\t\tif (this.dom.firstChild) {\r\n\t\t\tthis.dom.firstChild.classList.toggle(\r\n\t\t\t\t'aras-compat-toolbar_labeled',\r\n\t\t\t\tnewValue\r\n\t\t\t);\r\n\t\t}\r\n\t\tthis._isToolbarLabeled = newValue;\r\n\t\tthis._doUpdateNodesInfo = true;\r\n\t\tthis.render();\r\n\t},\r\n\tget labeled() {\r\n\t\treturn this._isToolbarLabeled;\r\n\t},\r\n\tset data(dataMap) {\r\n\t\tconst self = this;\r\n\t\tthis.dataset = dataMap;\r\n\t\tthis._doUpdateNodesInfo = true;\r\n\t\tthis._rightContainerItems = [];\r\n\t\tthis._leftContainerItems = [];\r\n\t\tthis.detectedForceRender = new Map();\r\n\t\tthis.dataset.forEach(function (value, key) {\r\n\t\t\tif (value.right) {\r\n\t\t\t\tself._rightContainerItems.push(key);\r\n\t\t\t} else {\r\n\t\t\t\tself._leftContainerItems.push(key);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.render();\r\n\t},\r\n\tget data() {\r\n\t\treturn this.dataset;\r\n\t},\r\n\tset container(newContainerItems) {\r\n\t\tthis._doUpdateNodesInfo = true;\r\n\t\tthis._leftContainerItems = newContainerItems;\r\n\t\tthis.render();\r\n\t},\r\n\tget container() {\r\n\t\treturn this._leftContainerItems;\r\n\t},\r\n\tset rightContainer(newContainerItems) {\r\n\t\tthis._doUpdateNodesInfo = true;\r\n\t\tthis._rightContainerItems = newContainerItems;\r\n\t\tthis.render();\r\n\t},\r\n\tget rightContainer() {\r\n\t\treturn this._rightContainerItems;\r\n\t},\r\n\ton: function (eventType, callback) {\r\n\t\tconst self = this;\r\n\t\tconst handler = function (event) {\r\n\t\t\tconst targetItemId = self._getIdByDomElement(event.target);\r\n\t\t\tconst item = self.data.get(targetItemId);\r\n\t\t\tif (\r\n\t\t\t\tevent.type === 'click' &&\r\n\t\t\t\titem &&\r\n\t\t\t\titem.type === 'button' &&\r\n\t\t\t\titem.disabled\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (targetItemId) {\r\n\t\t\t\tcallback(targetItemId, event);\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.dom.addEventListener(eventType, handler);\r\n\t\treturn function () {\r\n\t\t\tself.dom.removeEventListener(eventType, handler);\r\n\t\t};\r\n\t},\r\n\tcloseDropdown: function () {\r\n\t\tconst dropdown = this.dom.querySelector(\r\n\t\t\t'.' + DROPDOWN_LIST_CONTAINER_CLASS\r\n\t\t);\r\n\t\tdropdown.classList.remove(DROPDOWN_OPENED_LIST_CONTAINER_CLASS);\r\n\t},\r\n\tdestroy: function () {\r\n\t\tthis.dom.parentNode.removeChild(this.dom);\r\n\t\twindow.removeEventListener('resize', this._resizeHandler);\r\n\t},\r\n\t_trimSeparators: function (arr) {\r\n\t\tif (!arr.length) {\r\n\t\t\treturn arr;\r\n\t\t}\r\n\t\tlet startIndex = 0;\r\n\t\tlet lastIndex = arr.length;\r\n\t\tlet startIndexFound = false;\r\n\t\tlet lastIndexFound = false;\r\n\t\tfor (let i = 0; i < arr.length; i++) {\r\n\t\t\tif (!startIndexFound) {\r\n\t\t\t\tif (this.data.get(arr[i]).type === 'separator') {\r\n\t\t\t\t\tstartIndex = i;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstartIndexFound = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!lastIndexFound) {\r\n\t\t\t\tif (this.data.get(arr[arr.length - 1 - i]).type === 'separator') {\r\n\t\t\t\t\tlastIndex = arr.length - 1 - i;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlastIndexFound = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn arr.slice(startIndex, lastIndex);\r\n\t},\r\n\t_getIdByDomElement: function (element) {\r\n\t\tconst targetNodeSelector = '[data-id]';\r\n\t\tconst targetNode = element.closest(targetNodeSelector);\r\n\t\treturn targetNode ? targetNode.dataset.id : null;\r\n\t},\r\n\t_getVnodeProperties: function (isPreRender) {\r\n\t\tconst self = this;\r\n\t\tconst dropdownNode = self.dom.querySelector(\r\n\t\t\t'.' + DROPDOWN_CLASS + ' .' + DROPDOWN_LIST_CONTAINER_CLASS + ''\r\n\t\t);\r\n\t\tconst dropdownStyle = dropdownNode\r\n\t\t\t? 'top:' +\r\n\t\t\t dropdownNode.style.top +\r\n\t\t\t ';left: ' +\r\n\t\t\t dropdownNode.style.left +\r\n\t\t\t ';'\r\n\t\t\t: false;\r\n\t\tconst filterDropdownItems = function (itemId) {\r\n\t\t\treturn !self._dropdownItems.some(function (id) {\r\n\t\t\t\treturn id === itemId;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tleftContainerItems: isPreRender\r\n\t\t\t\t? self._leftContainerItems\r\n\t\t\t\t: self._trimSeparators(\r\n\t\t\t\t\t\tself._leftContainerItems.filter(filterDropdownItems)\r\n\t\t\t\t ),\r\n\t\t\trightContainerItems: isPreRender\r\n\t\t\t\t? self._rightContainerItems\r\n\t\t\t\t: self._trimSeparators(\r\n\t\t\t\t\t\tself._rightContainerItems.filter(filterDropdownItems)\r\n\t\t\t\t ),\r\n\t\t\tdropdownItems: isPreRender ? undefined : self._dropdownItems,\r\n\t\t\ttoolbar: this,\r\n\t\t\toptions: {\r\n\t\t\t\tdropdownRefCallback: function (node) {\r\n\t\t\t\t\tif (node) {\r\n\t\t\t\t\t\tself._layoutInfo.dropdownButtonWidth = node.querySelector(\r\n\t\t\t\t\t\t\t'.' + DROPDOWN_BUTTON_CLASS\r\n\t\t\t\t\t\t).clientWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tisToolbarLabeled: self._isToolbarLabeled,\r\n\t\t\t\tforceOpenDropdown: dropdownNode\r\n\t\t\t\t\t? dropdownNode.classList.contains(\r\n\t\t\t\t\t\t\tDROPDOWN_OPENED_LIST_CONTAINER_CLASS\r\n\t\t\t\t\t )\r\n\t\t\t\t\t: false,\r\n\t\t\t\tdropdownStyle: dropdownStyle,\r\n\t\t\t\tforceUpdateItems: isPreRender ? true : undefined\r\n\t\t\t}\r\n\t\t};\r\n\t},\r\n\t_updateItemsPosition: function () {\r\n\t\tconst self = this;\r\n\t\tconst toolbarWidth = self.dom.clientWidth - 2; // padding\r\n\t\tlet widthAvailable = toolbarWidth - self._layoutInfo.dropdownButtonWidth;\r\n\t\tconst placeItem = function (itemId) {\r\n\t\t\tconst item = self.data.get(itemId);\r\n\t\t\tif (item.type === 'separator') {\r\n\t\t\t\twidthAvailable -= self._layoutInfo.separatorWidth;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst nodeWidth = self._nodesInfo.get(item).width;\r\n\t\t\tif (widthAvailable >= nodeWidth) {\r\n\t\t\t\twidthAvailable -= nodeWidth;\r\n\t\t\t} else {\r\n\t\t\t\twidthAvailable = -1;\r\n\t\t\t\tself._dropdownItems.push(item.id);\r\n\t\t\t}\r\n\t\t};\r\n\t\tself._dropdownItems = [];\r\n\t\tif (toolbarWidth <= self._layoutInfo.totalWidth) {\r\n\t\t\tif (\r\n\t\t\t\ttoolbarWidth >\r\n\t\t\t\tself._layoutInfo.leftContainerWidth +\r\n\t\t\t\t\tself._layoutInfo.dropdownButtonWidth\r\n\t\t\t) {\r\n\t\t\t\twidthAvailable -= self._layoutInfo.leftContainerWidth;\r\n\t\t\t\tself._rightContainerItems.forEach(placeItem);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tself._leftContainerItems.forEach(placeItem);\r\n\t\t\tself._rightContainerItems.forEach(function (itemId) {\r\n\t\t\t\tconst item = self.data.get(itemId);\r\n\t\t\t\tif (item.type !== 'separator') {\r\n\t\t\t\t\tself._dropdownItems.push(item.id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport default CompatToolbar;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport FilterList from './filterList';\r\nimport BaseTypeahead from './baseTypeahead';\r\nimport SvgManager from '../core/SvgManager';\r\n\r\nconst icons = {\r\n\tclassStructureButtonIcon: '../images/InputLookup12.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(icons));\r\n\r\nclass ClassificationProperty extends FilterList {\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.setAttribute('aria-haspopup', 'tree');\r\n\t}\r\n\r\n\tinitialize() {\r\n\t\tsuper.initialize();\r\n\t\tObject.defineProperty(this.state, 'value', {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn this.predictedValue !== null\r\n\t\t\t\t\t? this.predictedValue\r\n\t\t\t\t\t: this._value || '';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\r\n\tshowDialogHandler() {}\r\n\r\n\t_onKeyDownHandler(e) {\r\n\t\tsuper._onKeyDownHandler(e);\r\n\r\n\t\tif (e.key === 'F2') {\r\n\t\t\tthis.showDialogHandler();\r\n\t\t}\r\n\t}\r\n\r\n\t_getButtonTemplate() {\r\n\t\tif (\r\n\t\t\tthis.state.width !== 'auto' &&\r\n\t\t\t(this.state.disabled || this.state.readonly)\r\n\t\t) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst buttonAttributes = {\r\n\t\t\tdisabled: this.state.disabled || this.state.readonly,\r\n\t\t\ttabIndex: -1,\r\n\t\t\t'aria-hidden': true\r\n\t\t};\r\n\t\tconst iconNode = SvgManager.createInfernoVNode(\r\n\t\t\ticons.classStructureButtonIcon,\r\n\t\t\t{\r\n\t\t\t\tcssClass: 'aras-input-icon'\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t {\r\n\t\t\t\t\tthis.state.refs.button = node;\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{iconNode}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\t_getAutocompleteLabel() {\r\n\t\tconst predictedValue = this.state.predictedValue;\r\n\t\tconst item = this._findItem(predictedValue);\r\n\r\n\t\treturn item ? item.label : '';\r\n\t}\r\n\r\n\t_getCurrentInputValue() {\r\n\t\tconst value = this.state._value;\r\n\t\tconst label = this.state.label;\r\n\r\n\t\tif (label !== null) {\r\n\t\t\treturn label;\r\n\t\t} else if (value !== null) {\r\n\t\t\tconst item = this._findItem(value);\r\n\r\n\t\t\treturn item ? item.label : '';\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\t_findItem(value) {\r\n\t\tconst path = (value || '').split('/');\r\n\r\n\t\tfunction findRecurcive(values, level) {\r\n\t\t\tconst value = path[level];\r\n\t\t\tconst lastLevel = path.length - 1 === level;\r\n\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tconst item = values[i];\r\n\t\t\t\tif (item.label === value) {\r\n\t\t\t\t\tif (lastLevel) {\r\n\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst hasChildren = item.children && item.children.length;\r\n\t\t\t\t\tif (hasChildren) {\r\n\t\t\t\t\t\treturn findRecurcive(item.children, level + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn findRecurcive(this.state.list, 0);\r\n\t}\r\n\r\n\t_getListTemplate(list, level, path) {\r\n\t\tconst label = this._getCurrentInputValue();\r\n\t\tconst needPredict = this.state.shown && this.state.autocomplete;\r\n\t\tconst focusedIndex = this.state.focusedIndex;\r\n\t\tconst items = [];\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\r\n\t\tconst self = this;\r\n\r\n\t\tconst isLeaf = function (item) {\r\n\t\t\treturn !item.children || item.children.length === 0;\r\n\t\t};\r\n\t\tconst isExists = function (item) {\r\n\t\t\treturn (\r\n\t\t\t\t((!isLeaf(item) && self.state.searchableBranch) || isLeaf(item)) &&\r\n\t\t\t\titem.label.toUpperCase().indexOf(label.toUpperCase()) === 0\r\n\t\t\t);\r\n\t\t};\r\n\t\tconst getChildrenInside = function (list, level, path) {\r\n\t\t\treturn (list || []).some(function (item) {\r\n\t\t\t\tconst childrenInside = getChildrenInside(\r\n\t\t\t\t\titem.children,\r\n\t\t\t\t\tlevel + 1,\r\n\t\t\t\t\tpath\r\n\t\t\t\t);\r\n\t\t\t\tif (isExists(item) || childrenInside || self.state.showAll) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t(list || []).forEach(function (item) {\r\n\t\t\tconst startCount = this.state.commonCount;\r\n\r\n\t\t\tconst itemPath = path ? path + '/' + item.label : item.label;\r\n\t\t\tconst leaf = isLeaf(item);\r\n\t\t\tconst exist = isExists(item);\r\n\t\t\tconst textEnding = exist\r\n\t\t\t\t? item.label.substring(label.length, item.label.length)\r\n\t\t\t\t: item.label;\r\n\t\t\tlet classes = leaf\r\n\t\t\t\t? 'aras-filter-list-tree-leaf '\r\n\t\t\t\t: 'aras-filter-list-tree-branch ';\r\n\t\t\tif (!leaf && this.state.searchableBranch) {\r\n\t\t\t\tclasses += 'aras-filter-list-tree-searchable-branch ';\r\n\t\t\t}\r\n\r\n\t\t\tconst children = [\r\n\t\t\t\t{\r\n\t\t\t\t\ttag: 'div',\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttag: 'span',\r\n\t\t\t\t\t\t\tclassName: 'aras-filter-list-tree-label',\r\n\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag: 'mark',\r\n\t\t\t\t\t\t\t\t\tchildren: [exist ? item.label.substring(0, label.length) : '']\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttextEnding\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\t\t\t\t}\r\n\t\t\t];\r\n\t\t\tlet childrenInside = getChildrenInside(\r\n\t\t\t\titem.children,\r\n\t\t\t\tlevel + 1,\r\n\t\t\t\titemPath\r\n\t\t\t);\r\n\t\t\tif (exist) {\r\n\t\t\t\tif (this.state.count === 0) {\r\n\t\t\t\t\tthis.state.predictedValue = needPredict\r\n\t\t\t\t\t\t? itemPath\r\n\t\t\t\t\t\t: label === ''\r\n\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t: null;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.state.count === focusedIndex) {\r\n\t\t\t\t\tthis.state.predictedValue = needPredict\r\n\t\t\t\t\t\t? itemPath\r\n\t\t\t\t\t\t: label === ''\r\n\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t: null;\r\n\t\t\t\t\tthis.state.computedFocusedIndex = startCount + level;\r\n\t\t\t\t\tclasses += 'aras-filter-list-tree-leaf_selected';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\t!exist &&\r\n\t\t\t\t(this.state.showAll ||\r\n\t\t\t\t\t(!leaf && this.state.searchableBranch && childrenInside))\r\n\t\t\t) {\r\n\t\t\t\tif (this.state.count === focusedIndex) {\r\n\t\t\t\t\tthis.state.predictedValue = needPredict\r\n\t\t\t\t\t\t? itemPath\r\n\t\t\t\t\t\t: label === ''\r\n\t\t\t\t\t\t? ''\r\n\t\t\t\t\t\t: null;\r\n\t\t\t\t\tthis.state.computedFocusedIndex = startCount + level;\r\n\t\t\t\t\tclasses += 'aras-filter-list-tree-leaf_selected';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\texist ||\r\n\t\t\t\tthis.state.showAll ||\r\n\t\t\t\t(!leaf && this.state.searchableBranch && childrenInside)\r\n\t\t\t) {\r\n\t\t\t\tthis.state.count++;\r\n\t\t\t\tthis.state.commonCount++;\r\n\t\t\t}\r\n\r\n\t\t\tif (exist || childrenInside || this.state.showAll) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\ttag: 'li',\r\n\t\t\t\t\tclassName: classes,\r\n\t\t\t\t\tchildren: children,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\t'data-value': itemPath,\r\n\t\t\t\t\t\trole: 'treeitem'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tevents: {\r\n\t\t\t\t\t\tonmousedown:\r\n\t\t\t\t\t\t\tleaf || this.state.searchableBranch\r\n\t\t\t\t\t\t\t\t? this._onItemClickHandler.bind(this)\r\n\t\t\t\t\t\t\t\t: (e) => {\r\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\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\r\n\t\t\tchildrenInside =\r\n\t\t\t\t!leaf && this._getListTemplate(item.children, level + 1, itemPath);\r\n\t\t\tif (childrenInside) {\r\n\t\t\t\tchildren.push(childrenInside);\r\n\t\t\t\tthis.state.commonCount++;\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\treturn (\r\n\t\t\titems.length > 0 && {\r\n\t\t\t\ttag: 'ul',\r\n\t\t\t\tchildren: items,\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\trole: level === 0 ? 'tree' : 'group'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t_getDropdownHeight() {\r\n\t\tconst itemHeight = this._getItemHeight();\r\n\t\tconst maxVisibleItemsCount = 16;\r\n\r\n\t\treturn Math.min(this.state.commonCount, maxVisibleItemsCount) * itemHeight;\r\n\t}\r\n\r\n\t_getDropdownTemplate() {\r\n\t\tObject.assign(this.state, {\r\n\t\t\tcount: 0,\r\n\t\t\tcommonCount: 0\r\n\t\t});\r\n\r\n\t\tconst list = this._getListTemplate(this.state.list, 0, '');\r\n\t\tconst dropdown = BaseTypeahead.prototype._getDropdownTemplate.call(this);\r\n\t\tdropdown.children.push(list);\r\n\t\tdropdown.className += ' aras-filter-list-tree';\r\n\r\n\t\treturn dropdown;\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tconst inputValue = this._getCurrentInputValue();\r\n\r\n\t\tif (inputValue === '') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst value = this.state.value;\r\n\t\tconst item = this._findItem(value);\r\n\r\n\t\tif (!item || (item.children && item.children.length)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn item.label === inputValue;\r\n\t}\r\n\r\n\tinputValidate() {\r\n\t\tconst inputValue = this._getCurrentInputValue();\r\n\t\tconst searchableBranch = this.state.searchableBranch;\r\n\t\tconst isAutocomplete = this.state.autocomplete && this.state.focus;\r\n\r\n\t\tif (inputValue === '') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tfunction findRecurcive(values) {\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tconst item = values[i];\r\n\t\t\t\tconst hasChildren = item.children && item.children.length;\r\n\t\t\t\tconst itemLabel = item.label.toUpperCase();\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t(!hasChildren || searchableBranch) &&\r\n\t\t\t\t\t(isAutocomplete\r\n\t\t\t\t\t\t? itemLabel.startsWith(inputValue.toUpperCase())\r\n\t\t\t\t\t\t: itemLabel === inputValue)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (hasChildren && findRecurcive(item.children)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn findRecurcive(this.state.list);\r\n\t}\r\n}\r\n\r\nClassificationProperty.observedAttributes = BaseTypeahead.observedAttributes;\r\n\r\nexport default ClassificationProperty;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\n\r\nconst accordionMinHeight = 320;\r\nconst relationshipInitialHeight = 600;\r\n\r\nexport default class Scroller extends HyperHTMLElement {\r\n\t_mutationObserver: MutationObserver | null = null;\r\n\t_intersectionObserver: IntersectionObserver | null = null;\r\n\t_scrollerTop = 0;\r\n\t_currentStickedElement: HTMLElement | null = null;\r\n\t_store: WeakMap = new WeakMap();\r\n\t_wrappers: Set = new Set();\r\n\t_isMaximized = false;\r\n\r\n\tcreated() {\r\n\t\tthis._mutationObserver = new MutationObserver((mutations) => {\r\n\t\t\tthis._mutationObserverHandler(mutations);\r\n\t\t});\r\n\t\tthis._mutationObserver.observe(this, {\r\n\t\t\tchildList: true,\r\n\t\t\tsubtree: true,\r\n\t\t\tattributes: true,\r\n\t\t\tattributeFilter: ['active-pane-id']\r\n\t\t});\r\n\t\tthis._intersectionObserver = new IntersectionObserver(\r\n\t\t\t(changes) => {\r\n\t\t\t\tthis._intersectionObserverHandler(changes);\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troot: this,\r\n\t\t\t\t// If page would be zoomed, Chrome calculates incorrect fractional pixels in sticky wrapper's width and IntersectionRatio less than 1\r\n\t\t\t\tthreshold: [0.999, 1]\r\n\t\t\t}\r\n\t\t);\r\n\t\tthis.addEventListener('accordionToggle', this._accordionToggleHandler);\r\n\t\tthis.addEventListener('accordionMaximize', this._resizeAccordion);\r\n\t\tthis.addEventListener('scroll', this._scrollHandler);\r\n\t\twindow.addEventListener('resize', this._resizeHandler);\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tthis.classList.add('aras-scroller');\r\n\t}\r\n\r\n\tdisconnectedCallback() {\r\n\t\tthis._mutationObserver && this._mutationObserver.disconnect();\r\n\t\tthis._intersectionObserver && this._intersectionObserver.disconnect();\r\n\t\tthis.removeEventListener('accordionToggle', this._accordionToggleHandler);\r\n\t\tthis.removeEventListener('accordionMaximize', this._resizeAccordion);\r\n\t\tthis.removeEventListener('scroll', this._scrollHandler);\r\n\t\twindow.removeEventListener('resize', this._resizeHandler);\r\n\t}\r\n\r\n\tasync _mutationObserverHandler(\r\n\t\tmutations: Array\r\n\t): Promise {\r\n\t\tconst relationshipIframes = await this._collectRelationshipIframes(\r\n\t\t\tmutations\r\n\t\t);\r\n\t\tconst scrollables = await Promise.all(\r\n\t\t\trelationshipIframes.map((iframe) => this._loadScrollableElement(iframe))\r\n\t\t);\r\n\t\tthis._connectResizeObserver(scrollables);\r\n\t}\r\n\r\n\t_loadScrollableElement(iframe: HTMLIFrameElement): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tconst setupScrollableElement = (scrollableElement) => {\r\n\t\t\t\tconst overflowY = this._isMaximized ? 'auto' : 'hidden';\r\n\t\t\t\tscrollableElement.style.overflowY = overflowY;\r\n\t\t\t\tthis._store.set(\r\n\t\t\t\t\tiframe.closest('.aras-scroller__sticky') || iframe,\r\n\t\t\t\t\tscrollableElement\r\n\t\t\t\t);\r\n\t\t\t};\r\n\r\n\t\t\tconst contentWindow = iframe.contentWindow;\r\n\t\t\tconst grid = contentWindow.grid;\r\n\t\t\tif (grid) {\r\n\t\t\t\tconst scrollableElement = grid._grid.view.scrollableElement;\r\n\t\t\t\tsetupScrollableElement(scrollableElement);\r\n\t\t\t\tresolve(scrollableElement);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst observer = new MutationObserver((mutations, observer) => {\r\n\t\t\t\tconst grid = contentWindow.grid;\r\n\t\t\t\tconst scrollableElement = grid && grid._grid.view.scrollableElement;\r\n\r\n\t\t\t\tif (scrollableElement) {\r\n\t\t\t\t\tsetupScrollableElement(scrollableElement);\r\n\t\t\t\t\tresolve(scrollableElement);\r\n\t\t\t\t\tobserver.disconnect();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tobserver.observe(contentWindow.document, {\r\n\t\t\t\tchildList: true,\r\n\t\t\t\tsubtree: true\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tasync _collectRelationshipIframes(\r\n\t\tmutations: Array\r\n\t): Promise> {\r\n\t\tconst iframes = mutations.reduce((iframes, mutationRecord) => {\r\n\t\t\tif (mutationRecord.type !== 'attributes') {\r\n\t\t\t\treturn iframes;\r\n\t\t\t}\r\n\r\n\t\t\tconst switcherControl = mutationRecord.target;\r\n\t\t\tconst activePaneId = switcherControl.getAttribute('active-pane-id') || '';\r\n\t\t\tconst closestAccordion = switcherControl.closest('.aras-accordion');\r\n\t\t\tif (closestAccordion) {\r\n\t\t\t\tclosestAccordion.maximized = this._isMaximized;\r\n\t\t\t}\r\n\t\t\tconst relationshipIframe =\r\n\t\t\t\tdocument.getElementById(activePaneId);\r\n\t\t\tconst isInfernoGridIFrame =\r\n\t\t\t\trelationshipIframe instanceof HTMLIFrameElement &&\r\n\t\t\t\trelationshipIframe.src.includes('relationshipsInfernoGrid.html');\r\n\t\t\tif (isInfernoGridIFrame) {\r\n\t\t\t\tiframes.push(relationshipIframe);\r\n\t\t\t} else if (relationshipIframe) {\r\n\t\t\t\trelationshipIframe.height = this._isMaximized\r\n\t\t\t\t\t? '100%'\r\n\t\t\t\t\t: `${relationshipInitialHeight}`;\r\n\t\t\t}\r\n\r\n\t\t\tthis._store.delete(closestAccordion);\r\n\t\t\tthis._setupStickyWrapperNode(closestAccordion, isInfernoGridIFrame);\r\n\r\n\t\t\treturn iframes;\r\n\t\t}, []);\r\n\r\n\t\treturn await Promise.all(\r\n\t\t\tiframes.map((iframe) => {\r\n\t\t\t\treturn new Promise((resolve) => {\r\n\t\t\t\t\tif (iframe.contentWindow.location.href === iframe.src) {\r\n\t\t\t\t\t\tresolve(iframe);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tiframe.addEventListener('load', function loadHandler() {\r\n\t\t\t\t\t\tiframe.removeEventListener('load', loadHandler);\r\n\t\t\t\t\t\tresolve(iframe);\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\r\n\t_adjustFrameSize(frame: HTMLIFrameElement): void {\r\n\t\tconst _window = frame.contentWindow;\r\n\t\tconst gridContainer = _window.document.getElementById('gridTD');\r\n\t\tconst gridHeader = gridContainer.querySelector('.aras-grid-header');\r\n\r\n\t\tif (!gridHeader) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._isMaximized) {\r\n\t\t\tframe.style.height = '100%';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst topMargin = 12;\r\n\t\tconst accordion = _window.frameElement.closest('aras-accordion');\r\n\t\tlet accordionOffset = 0;\r\n\t\tif (accordion) {\r\n\t\t\tconst accordionHead = accordion.shadowRoot.querySelector(\r\n\t\t\t\t'.aras-accordion__header'\r\n\t\t\t);\r\n\t\t\tconst accordionContent = accordion.shadowRoot.querySelector(\r\n\t\t\t\t'.aras-accordion__content'\r\n\t\t\t);\r\n\t\t\taccordionOffset =\r\n\t\t\t\taccordionHead.offsetHeight +\r\n\t\t\t\tparseInt(window.getComputedStyle(accordionContent).paddingTop) * 2;\r\n\t\t}\r\n\r\n\t\tconst scrollerHeight = _window.grid._grid.view.scroller.offsetHeight;\r\n\t\tconst scrollableElement = _window.grid._grid.view.scrollableElement;\r\n\t\tconst paginationOffset = _window.pagination\r\n\t\t\t? _window.pagination.offsetHeight +\r\n\t\t\t parseInt(getComputedStyle(_window.pagination).marginTop)\r\n\t\t\t: 0;\r\n\t\tconst gridOuterHeight = gridContainer.offsetTop + paginationOffset;\r\n\t\tconst headerHeight = gridHeader.offsetHeight;\r\n\t\tconst scrollbarWidth =\r\n\t\t\tscrollableElement.offsetHeight - scrollableElement.clientHeight;\r\n\t\tconst newFrameHeight = Math.max(\r\n\t\t\tMath.min(\r\n\t\t\t\theaderHeight + gridOuterHeight + scrollerHeight + scrollbarWidth,\r\n\t\t\t\tthis.clientHeight - accordionOffset - topMargin\r\n\t\t\t),\r\n\t\t\taccordionMinHeight - accordionOffset\r\n\t\t);\r\n\r\n\t\tif (\r\n\t\t\tframe.style.height === '' ||\r\n\t\t\tMath.abs(parseInt(frame.style.height) - newFrameHeight) > 1\r\n\t\t) {\r\n\t\t\tframe.style.height = newFrameHeight + 'px';\r\n\t\t}\r\n\t}\r\n\r\n\t_adjustGridContainerSize(gridContainer?: HTMLDivElement): void {\r\n\t\tif (gridContainer) {\r\n\t\t\tconst gridFrameWindow = gridContainer.ownerDocument.defaultView;\r\n\t\t\tconst paginationOffset = gridFrameWindow.pagination\r\n\t\t\t\t? gridFrameWindow.pagination.offsetHeight +\r\n\t\t\t\t parseInt(getComputedStyle(gridFrameWindow.pagination).marginTop)\r\n\t\t\t\t: 0;\r\n\t\t\tconst gridOuterHeight = gridContainer.offsetTop + paginationOffset;\r\n\r\n\t\t\tgridContainer.style.maxHeight = `calc(100% - ${gridOuterHeight}px)`;\r\n\t\t}\r\n\t}\r\n\r\n\t_resizeGridAndFrame(gridScroller?: HTMLDivElement): void {\r\n\t\tif (gridScroller) {\r\n\t\t\tconst gridFrameWindow = gridScroller.ownerDocument.defaultView;\r\n\t\t\tconst gridContainer = gridScroller.closest('.aras-grid');\r\n\t\t\tconst gridFrame: HTMLIFrameElement = gridFrameWindow.frameElement;\r\n\r\n\t\t\tthis._adjustGridContainerSize(gridContainer);\r\n\t\t\tthis._adjustFrameSize(gridFrame);\r\n\t\t}\r\n\t}\r\n\r\n\t_handleResize(targets: Array): void {\r\n\t\ttargets.forEach((target) => {\r\n\t\t\tconst domElement = target.target;\r\n\t\t\tconst targetOwnerFrame =\r\n\t\t\t\tdomElement.ownerDocument.defaultView.frameElement;\r\n\t\t\tconst targetOwnerFrameStyle = window.getComputedStyle(targetOwnerFrame);\r\n\t\t\tif (targetOwnerFrameStyle.visibility === 'hidden') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst [type, id] = [...domElement.dataset.scrollerMark.split('_')];\r\n\t\t\tswitch (type) {\r\n\t\t\t\tcase 'scroller':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis._resizeGridAndFrame(domElement);\r\n\t\t\t\t\t\tthis._calculateStickyHeight(domElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'toolbar':\r\n\t\t\t\tcase 'body':\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst gridScroller = domElement.ownerDocument.querySelector(\r\n\t\t\t\t\t\t\t'[data-scroller-mark=\"scroller_' + id + '\"]'\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tthis._resizeGridAndFrame(gridScroller);\r\n\t\t\t\t\t\tthis._scrollerTop = this.getBoundingClientRect().top;\r\n\t\t\t\t\t\tthis._calculateStickyHeight(gridScroller);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_connectResizeObserver(scrollableElements: Array): void {\r\n\t\tscrollableElements.forEach((gridScroller, idx) => {\r\n\t\t\tconst scroller = gridScroller.firstElementChild;\r\n\t\t\tconst body = gridScroller.parentElement;\r\n\t\t\tconst tollbars =\r\n\t\t\t\tgridScroller.ownerDocument.getElementById('topContainer');\r\n\t\t\tconst gridWindow = gridScroller.ownerDocument.defaultView;\r\n\t\t\tif (\r\n\t\t\t\t!scroller ||\r\n\t\t\t\t!gridWindow ||\r\n\t\t\t\t!(scroller instanceof gridWindow.HTMLElement) ||\r\n\t\t\t\t!body ||\r\n\t\t\t\t!(body instanceof gridWindow.HTMLElement) ||\r\n\t\t\t\t!tollbars ||\r\n\t\t\t\tscroller.dataset.scrollerMark\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tgridWindow.frameElement.removeAttribute('height');\r\n\t\t\tconst observer = new gridWindow.ResizeObserver(\r\n\t\t\t\tthis._handleResize.bind(this)\r\n\t\t\t);\r\n\r\n\t\t\tscroller.dataset.scrollerMark = 'scroller_' + idx;\r\n\t\t\tbody.dataset.scrollerMark = 'body_' + idx;\r\n\t\t\ttollbars.dataset.scrollerMark = 'toolbar_' + idx;\r\n\r\n\t\t\tobserver.observe(scroller);\r\n\t\t\tobserver.observe(body);\r\n\t\t\tobserver.observe(tollbars);\r\n\t\t});\r\n\t}\r\n\r\n\t_setupStickyWrapperNode(accordion: HTMLElement, isSticky: boolean): void {\r\n\t\tif (!accordion) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet accordionWrapperNode = accordion.closest(\r\n\t\t\t'.aras-scroller__wrapper'\r\n\t\t);\r\n\t\tif (!accordionWrapperNode) {\r\n\t\t\taccordionWrapperNode = document.createElement('div');\r\n\t\t\taccordionWrapperNode.classList.add('aras-scroller__wrapper');\r\n\t\t\tthis._wrappers.add(accordionWrapperNode);\r\n\t\t\taccordion.parentElement &&\r\n\t\t\t\taccordion.parentElement.replaceChild(accordionWrapperNode, accordion);\r\n\t\t\taccordionWrapperNode.appendChild(accordion);\r\n\t\t\tthis._intersectionObserver &&\r\n\t\t\t\tthis._intersectionObserver.observe(accordion);\r\n\t\t}\r\n\r\n\t\taccordion.classList.toggle('aras-scroller__sticky', isSticky);\r\n\r\n\t\tif (this._isMaximized) {\r\n\t\t\taccordionWrapperNode.style.height = '100%';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!isSticky) {\r\n\t\t\taccordionWrapperNode.style.height = '';\r\n\t\t}\r\n\t}\r\n\r\n\t_calculateStickyHeight(gridScroller?: HTMLDivElement): void {\r\n\t\tif (this._isMaximized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst scrollableElement = gridScroller && gridScroller.parentElement;\r\n\r\n\t\tif (scrollableElement) {\r\n\t\t\tconst frame = scrollableElement.ownerDocument.defaultView.frameElement;\r\n\t\t\tconst sticky = frame.closest('.aras-accordion') || frame;\r\n\t\t\tif (sticky.classList.contains('aras-accordion') && sticky.collapsed) {\r\n\t\t\t\tsticky.parentElement.style.height = '';\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst height =\r\n\t\t\t\tsticky.offsetHeight +\r\n\t\t\t\tscrollableElement.scrollHeight -\r\n\t\t\t\tscrollableElement.clientHeight;\r\n\r\n\t\t\tsticky.parentElement.style.height = `${height}px`;\r\n\t\t}\r\n\t}\r\n\r\n\t_accordionToggleHandler(event: Event): void {\r\n\t\tif (this._isMaximized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst target: HTMLElement = event.target;\r\n\t\tconst iframe = target.querySelector(\r\n\t\t\t'.aras-switcher-pane_active iframe[src*=\"relationshipsInfernoGrid.html\"]'\r\n\t\t);\r\n\t\tif (!iframe) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst gridScroller = iframe.contentWindow.document.querySelector(\r\n\t\t\t'.aras-grid-scroller'\r\n\t\t);\r\n\t\tthis._calculateStickyHeight(gridScroller);\r\n\t}\r\n\r\n\t_intersectionObserverHandler(\r\n\t\tchanges: Array\r\n\t): void {\r\n\t\tchanges.forEach((change) => {\r\n\t\t\tconst sticky = change.target;\r\n\r\n\t\t\tif (change.isIntersecting) {\r\n\t\t\t\tthis._currentStickedElement = sticky;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this._currentStickedElement === sticky) {\r\n\t\t\t\tthis._currentStickedElement = null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_scrollHandler(): void {\r\n\t\tif (this._currentStickedElement) {\r\n\t\t\tconst wrapper = this._currentStickedElement.parentElement;\r\n\t\t\tconst scrollableElement = this._store.get(this._currentStickedElement);\r\n\r\n\t\t\tif (!wrapper || !scrollableElement) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscrollableElement.scrollTop =\r\n\t\t\t\tthis._scrollerTop - wrapper.getBoundingClientRect().top;\r\n\t\t}\r\n\t}\r\n\r\n\t_resizeHandler = () => {\r\n\t\tif (this._isMaximized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst activeIframes = this.querySelectorAll(\r\n\t\t\t'.aras-switcher-pane_active iframe[src*=\"relationshipsInfernoGrid.html\"]'\r\n\t\t);\r\n\t\tactiveIframes.forEach((activeIframe) =>\r\n\t\t\tthis._adjustFrameSize(activeIframe)\r\n\t\t);\r\n\t};\r\n\r\n\t_resizeAccordion(event: mixed): void {\r\n\t\tif (!(event instanceof CustomEvent)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst accordion = event.target;\r\n\t\tconst currentWrapper = accordion.closest(\r\n\t\t\t'.aras-scroller__wrapper'\r\n\t\t);\r\n\t\tconst details = event.detail;\r\n\r\n\t\tthis._isMaximized = details.maximized === 'true';\r\n\t\tcurrentWrapper.classList.toggle(\r\n\t\t\t'aras-scroller__wrapper_maximized',\r\n\t\t\tthis._isMaximized\r\n\t\t);\r\n\r\n\t\tthis._wrappers.forEach((wrapper) => {\r\n\t\t\tconst hidden = this._isMaximized && currentWrapper !== wrapper;\r\n\t\t\twrapper.classList.toggle('aras-scroller__wrapper_hidden', hidden);\r\n\t\t});\r\n\r\n\t\tconst itemForm = currentWrapper.querySelector('aras-form');\r\n\t\tif (itemForm) {\r\n\t\t\tthis._resizeItemForm(itemForm);\r\n\t\t} else {\r\n\t\t\tconst relationshipSwitcher =\r\n\t\t\t\tcurrentWrapper.querySelector('.aras-switcher');\r\n\t\t\tconst activePaneId = relationshipSwitcher?.getAttribute('active-pane-id');\r\n\t\t\tconst relationshipIframe = document.getElementById(\r\n\t\t\t\tactivePaneId || ''\r\n\t\t\t);\r\n\t\t\tif (relationshipIframe) {\r\n\t\t\t\tthis._resizeRelationship(relationshipIframe);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._isMaximized) {\r\n\t\t\tthis._maximizeAccordion(currentWrapper);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._restoreAccordion(currentWrapper);\r\n\t}\r\n\r\n\t_maximizeAccordion(wrapper: HTMLElement): void {\r\n\t\tconst stickyElement = wrapper.firstElementChild;\r\n\t\tconst isCollapsed =\r\n\t\t\tstickyElement.classList.contains('aras-accordion') &&\r\n\t\t\tstickyElement.collapsed;\r\n\t\tisCollapsed && stickyElement.expand();\r\n\t\twrapper.style.height = '100%';\r\n\r\n\t\tconst scrollableElement = this._store.get(stickyElement);\r\n\t\tscrollableElement && (scrollableElement.style.overflowY = 'auto');\r\n\t}\r\n\r\n\t_restoreAccordion(wrapper: HTMLElement): void {\r\n\t\tconst stickyElement = wrapper.firstElementChild;\r\n\t\tconst scrollableElement = this._store.get(stickyElement);\r\n\t\tif (scrollableElement) {\r\n\t\t\tscrollableElement.style.overflowY = 'hidden';\r\n\t\t\tconst gridScroller = scrollableElement.firstElementChild;\r\n\t\t\tthis._resizeGridAndFrame(gridScroller);\r\n\t\t\tthis._calculateStickyHeight(gridScroller);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twrapper.style.height = '';\r\n\t}\r\n\r\n\t_resizeItemForm(form: HTMLElement): void {\r\n\t\tform.style.height = this._isMaximized ? '100%' : `${window.formHeight}px`;\r\n\t}\r\n\r\n\t_resizeRelationship(iframe: HTMLIFrameElement): void {\r\n\t\tconst isInfernoGridIFrame = iframe.src.includes(\r\n\t\t\t'relationshipsInfernoGrid.html'\r\n\t\t);\r\n\t\tif (isInfernoGridIFrame) {\r\n\t\t\tthis._adjustFrameSize(iframe);\r\n\t\t} else {\r\n\t\t\tiframe.height = this._isMaximized\r\n\t\t\t\t? '100%'\r\n\t\t\t\t: `${relationshipInitialHeight}`;\r\n\t\t}\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nconst SWITCHER_CLASS = 'aras-switcher';\r\nconst SWITCHER_PANE_CLASS = SWITCHER_CLASS + '-pane';\r\nconst ACTIVE_PANE_CLASS = SWITCHER_PANE_CLASS + '_active';\r\nconst SWITCHER_PANE_ID_ATTRIBUTE = 'switcher-pane-id';\r\n\r\nexport default class Switcher extends HyperHTMLElement {\r\n\tdeclare activePaneId: string;\r\n\t_mutationObserver = null;\r\n\t_renderingPromise = null;\r\n\r\n\tstatic get observedAttributes() {\r\n\t\treturn ['active-pane-id'];\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis.classList.add(SWITCHER_CLASS);\r\n\r\n\t\tthis._mutationObserver = new MutationObserver(() => {\r\n\t\t\tthis.render();\r\n\t\t});\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tif (!this.activePaneId && this.firstElementChild) {\r\n\t\t\tthis.activePaneId = this.firstElementChild.getAttribute(\r\n\t\t\t\tSWITCHER_PANE_ID_ATTRIBUTE\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis._mutationObserver.observe(this, {\r\n\t\t\tchildList: true\r\n\t\t});\r\n\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tdisconnectedCallback() {\r\n\t\tif (this._mutationObserver) {\r\n\t\t\tthis._mutationObserver.disconnect();\r\n\t\t}\r\n\t}\r\n\r\n\tattributeChangedCallback() {\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tasync render() {\r\n\t\tif (this._renderingPromise) {\r\n\t\t\treturn this._renderingPromise;\r\n\t\t}\r\n\r\n\t\tthis._renderingPromise = Promise.resolve();\r\n\t\tawait this._renderingPromise;\r\n\t\tconst children = Array.from(this.children);\r\n\t\tchildren.forEach((paneElement) => {\r\n\t\t\tconst paneId = paneElement.getAttribute(SWITCHER_PANE_ID_ATTRIBUTE);\r\n\t\t\tconst isActivePane = paneId === this.activePaneId;\r\n\r\n\t\t\tpaneElement.classList.add(SWITCHER_PANE_CLASS);\r\n\t\t\tpaneElement.classList.toggle(ACTIVE_PANE_CLASS, isActivePane);\r\n\r\n\t\t\tif (isActivePane) {\r\n\t\t\t\tpaneElement.removeAttribute('aria-hidden');\r\n\t\t\t} else {\r\n\t\t\t\tpaneElement.setAttribute('aria-hidden', 'true');\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._renderingPromise = null;\r\n\t}\r\n}\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport SvgManager from '../../core/SvgManager';\r\n\r\nconst images = {\r\n\tmaxResults: '../images/MaxResults.svg',\r\n\tmore: '../images/More.svg',\r\n\tpageSize: '../images/PageSize.svg'\r\n};\r\n\r\nSvgManager.enqueue(Object.values(images));\r\n\r\nconst paginationControls = new Map();\r\npaginationControls.set('pagination_prev_button', {\r\n\ttype: 'button',\r\n\tid: 'pagination_prev_button',\r\n\tlabel: 'Prev',\r\n\tcssClass: 'aras-pagination__prev-button',\r\n\tdisabled: true,\r\n\ttooltip_template: 'Previous Page'\r\n});\r\npaginationControls.set('pagination_next_button', {\r\n\ttype: 'button',\r\n\tid: 'pagination_next_button',\r\n\tlabel: 'Next',\r\n\tcssClass: 'aras-pagination__next-button',\r\n\tdisabled: true,\r\n\ttooltip_template: 'Next Page'\r\n});\r\npaginationControls.set('pagination_status_node', {\r\n\ttype: 'pageStatusNode',\r\n\tid: 'pagination_status_node',\r\n\tcurrentPageNumber: 1,\r\n\tdisabled: true\r\n});\r\npaginationControls.set('pagination_status_separator', {\r\n\ttype: 'separator',\r\n\tid: 'pagination_status_separator',\r\n\thidden: true\r\n});\r\npaginationControls.set('pagination_total_results_status_node', {\r\n\ttype: 'totalResultStatusNode',\r\n\tid: 'pagination_total_results_status_node'\r\n});\r\npaginationControls.set('pagination_more_button', {\r\n\ttype: 'button',\r\n\tid: 'pagination_more_button',\r\n\timage: images.more,\r\n\tdisabled: true,\r\n\ttooltip_template: 'Show Total Pages and Results'\r\n});\r\npaginationControls.set('pagination_separator', {\r\n\ttype: 'separator',\r\n\tid: 'pagination_separator'\r\n});\r\npaginationControls.set('pagination_page_size', {\r\n\ttype: 'textbox',\r\n\tid: 'pagination_page_size',\r\n\tvalue: '',\r\n\tsize: '6.667',\r\n\timage: images.pageSize,\r\n\ttooltip_template: 'Results per Page',\r\n\tvalidationMessageResource: 'pagination.invalid_value'\r\n});\r\npaginationControls.set('pagination_max_results', {\r\n\ttype: 'textbox',\r\n\tid: 'pagination_max_results',\r\n\tvalue: '',\r\n\tsize: '6.667',\r\n\timage: images.maxResults,\r\n\ttooltip_template: 'Maximum Results',\r\n\tvalidationMessageResource: 'pagination.invalid_value'\r\n});\r\npaginationControls.set('pagination_max_reached', {\r\n\ttype: 'text',\r\n\tid: 'pagination_max_reached',\r\n\thidden: true,\r\n\tlabel: 'Max Reached',\r\n\ttooltip_template: 'Max Reached'\r\n});\r\n\r\nconst paginationControlsIds = [\r\n\t'pagination_prev_button',\r\n\t'pagination_next_button',\r\n\t'pagination_status_node',\r\n\t'pagination_status_separator',\r\n\t'pagination_total_results_status_node',\r\n\t'pagination_more_button',\r\n\t'pagination_separator',\r\n\t'pagination_page_size',\r\n\t'pagination_max_results',\r\n\t'pagination_max_reached'\r\n];\r\n\r\nexport { paginationControls, paginationControlsIds };\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nexport default {\r\n\tpageStatusNode: (item, { toolbar }) => {\r\n\t\tconst pageSize = toolbar._prevPageSize || toolbar.pageSize;\r\n\t\tconst totalResults = parseInt(item.totalResults) || 0;\r\n\t\tconst totalPages =\r\n\t\t\tpageSize && totalResults ? Math.ceil(totalResults / pageSize) : 1;\r\n\t\tconst paginationStatusLabel =\r\n\t\t\titem.totalResults || item.totalResults === 0\r\n\t\t\t\t? aras.getResource(\r\n\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t'pagination.page_X_of_Y',\r\n\t\t\t\t\t\titem.currentPageNumber,\r\n\t\t\t\t\t\ttotalPages\r\n\t\t\t\t )\r\n\t\t\t\t: aras.getResource('', 'pagination.page', item.currentPageNumber);\r\n\t\tconst classNode =\r\n\t\t\t'aras-pagination__status' +\r\n\t\t\t(item.disabled ? ' aras-pagination__status_disabled' : '');\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{paginationStatusLabel}\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\ttotalResultStatusNode: (item) => {\r\n\t\tlet classNode = 'aras-pagination__status';\r\n\t\tif (!item.totalResults && item.totalResults !== 0) {\r\n\t\t\tclassNode += ' aras-hide';\r\n\t\t} else if (item.disabled) {\r\n\t\t\tclassNode += ' aras-pagination__status_disabled';\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{aras.getResource('', 'pagination.results', item.totalResults)}\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\n\r\nimport Toolbar from '../toolbar';\r\nimport {\r\n\tpaginationControls,\r\n\tpaginationControlsIds\r\n} from './paginationControls';\r\nimport paginationTemplates from './paginationTemplates';\r\nimport processKeyboardEvent from '../../core/keyboardEvent';\r\nimport intl from '../../core/intl';\r\n\r\nconst resources = {\r\n\tpagination_prev_button: {\r\n\t\tlabel: 'pagination.prev',\r\n\t\ttooltip: 'pagination.prev.tooltip'\r\n\t},\r\n\tpagination_next_button: {\r\n\t\tlabel: 'pagination.next',\r\n\t\ttooltip: 'pagination.next.tooltip'\r\n\t},\r\n\tpagination_page_size: {\r\n\t\ttooltip: 'pagination.pagesize.tooltip'\r\n\t},\r\n\tpagination_more_button: {\r\n\t\ttooltip: 'pagination.more.tooltip'\r\n\t},\r\n\tpagination_max_results: {\r\n\t\ttooltip: 'pagination.maxresults.tooltip'\r\n\t},\r\n\tpagination_max_reached: {\r\n\t\tlabel: 'search.how_much_items_max_reached',\r\n\t\ttooltip: 'search.how_much_items_max_reached'\r\n\t}\r\n};\r\n\r\nexport default class Pagination extends Toolbar {\r\n\t_itemsCount = 0;\r\n\t_prevPageSize = null;\r\n\t_prevMaxResults = null;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._initEventListeners();\r\n\t\tthis._initControls();\r\n\t\tthis._initLabelsForControls();\r\n\t}\r\n\r\n\tconnectedCallback(): void {\r\n\t\tthis.container = paginationControlsIds;\r\n\t\tthis.role = 'navigation';\r\n\t\tthis.overflow = true;\r\n\t\tthis.classList.add('aras-pagination');\r\n\t\tthis.render();\r\n\t}\r\n\r\n\t_render(renderingOptions?: unknown) {\r\n\t\tthis.updateControlsState();\r\n\t\tsuper._render(renderingOptions);\r\n\t}\r\n\r\n\t_setDataItemProperties(itemId: string, properties: unknown): void {\r\n\t\tthis.data.set(itemId, {\r\n\t\t\t...this.getItem(itemId),\r\n\t\t\t...properties\r\n\t\t});\r\n\t}\r\n\r\n\tsetItemEnabled(itemId: string, isEnabled: boolean): Promise {\r\n\t\tconst item = this.getItem(itemId);\r\n\t\tif (!item || item.disabled === !isEnabled) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tthis.data.set(itemId, Object.assign({}, item, { disabled: !isEnabled }));\r\n\t\treturn this.render();\r\n\t}\r\n\r\n\tgetItem(itemId: string): unknown {\r\n\t\treturn this.data.get(itemId);\r\n\t}\r\n\r\n\tshowSpinner(): Promise {\r\n\t\tthis._setDataItemProperties('pagination_more_button', {\r\n\t\t\ttype: 'text',\r\n\t\t\tcssClass: 'aras-spinner'\r\n\t\t});\r\n\t\treturn this.render();\r\n\t}\r\n\r\n\tshowMoreButton(): Promise {\r\n\t\tthis._itemsCount = 0;\r\n\t\tthis._setDataItemProperties('pagination_more_button', {\r\n\t\t\thidden: false,\r\n\t\t\ttype: 'button',\r\n\t\t\tcssClass: ''\r\n\t\t});\r\n\t\tthis._setDataItemProperties('pagination_status_node', {\r\n\t\t\ttotalResults: null\r\n\t\t});\r\n\t\tthis._setDataItemProperties('pagination_status_separator', {\r\n\t\t\thidden: true\r\n\t\t});\r\n\t\tthis._setDataItemProperties('pagination_total_results_status_node', {\r\n\t\t\ttotalResults: null\r\n\t\t});\r\n\t\treturn this.render();\r\n\t}\r\n\r\n\t/**\r\n\t * @returns {Promise}\r\n\t * @memberof Pagination\r\n\t */\r\n\tgetTotalResults(): Promise {\r\n\t\treturn Promise.resolve(null);\r\n\t}\r\n\r\n\tupdateControlsState(): Promise {\r\n\t\treturn this.updateControlsStateByDefault();\r\n\t}\r\n\r\n\tupdateControlsStateByDefault(): Promise {\r\n\t\tconst isValidPaginationInputs =\r\n\t\t\tthis.pageSize !== null && this.maxResults !== null;\r\n\t\tif (!isValidPaginationInputs) {\r\n\t\t\tthis.setItemEnabled('pagination_prev_button', false);\r\n\t\t\tthis.setItemEnabled('pagination_next_button', false);\r\n\r\n\t\t\treturn this.render();\r\n\t\t}\r\n\r\n\t\tlet totalResults = this.totalResults;\r\n\t\tconst pageSize = this._prevPageSize || this.pageSize || 0;\r\n\t\tconst maxResults = this._prevMaxResults || this.maxResults;\r\n\t\tlet totalPages;\r\n\t\tif (totalResults !== -1) {\r\n\t\t\ttotalPages = pageSize ? Math.ceil(totalResults / pageSize) : 1;\r\n\t\t}\r\n\r\n\t\tconst itemsQuantity =\r\n\t\t\tpageSize * (this.currentPageNumber - 1) + this.itemsCount;\r\n\t\tconst isFirstPage = this.currentPageNumber === 1;\r\n\t\tconst isEmptyResult = this.itemsCount === 0;\r\n\t\tif (totalPages && itemsQuantity > totalResults) {\r\n\t\t\tconst itemsCount = this._itemsCount;\r\n\t\t\tthis.showMoreButton();\r\n\t\t\tthis._itemsCount = itemsCount;\r\n\t\t\ttotalResults = this.totalResults;\r\n\t\t\ttotalPages = 0;\r\n\t\t}\r\n\r\n\t\tlet isLastPage;\r\n\t\tif (totalPages) {\r\n\t\t\tisLastPage =\r\n\t\t\t\tthis.currentPageNumber === totalPages || itemsQuantity === totalResults;\r\n\t\t} else {\r\n\t\t\tisLastPage =\r\n\t\t\t\tisEmptyResult ||\r\n\t\t\t\t!pageSize ||\r\n\t\t\t\tthis.itemsCount < pageSize ||\r\n\t\t\t\titemsQuantity === maxResults;\r\n\t\t}\r\n\r\n\t\tconst isMaxReached = maxResults && maxResults === itemsQuantity;\r\n\t\tthis.getItem('pagination_max_reached').hidden = !isMaxReached;\r\n\r\n\t\tconst isEnabledPrevButton = !isFirstPage && pageSize;\r\n\t\tconst isEnabledMoreButton = !(isFirstPage && isEmptyResult);\r\n\t\tlet isEnabledNextButton =\r\n\t\t\tpageSize && maxResults ? pageSize < maxResults : true;\r\n\t\tisEnabledNextButton = isEnabledNextButton && !isLastPage;\r\n\t\tif (!totalPages && !isEmptyResult && isLastPage) {\r\n\t\t\tthis.totalResults = Math.max(totalResults, itemsQuantity);\r\n\t\t\ttotalPages = pageSize ? Math.ceil(this.totalResults / pageSize) : 1;\r\n\t\t\tisEnabledNextButton =\r\n\t\t\t\tisEnabledNextButton && this.currentPageNumber < totalPages;\r\n\t\t}\r\n\r\n\t\tthis.setItemEnabled('pagination_prev_button', !!isEnabledPrevButton);\r\n\t\tthis.setItemEnabled('pagination_next_button', !!isEnabledNextButton);\r\n\t\tthis.setItemEnabled('pagination_more_button', !!isEnabledMoreButton);\r\n\t\tthis.setItemEnabled('pagination_status_node', !!isEnabledMoreButton);\r\n\t\tthis.setItemEnabled(\r\n\t\t\t'pagination_total_results_status_node',\r\n\t\t\t!!isEnabledMoreButton\r\n\t\t);\r\n\r\n\t\treturn this.render();\r\n\t}\r\n\r\n\tset totalResults(newValue?: number | string) {\r\n\t\tif (\r\n\t\t\tnewValue === '' ||\r\n\t\t\t(!this._isPositiveInteger(newValue) && parseInt(newValue) !== 0)\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst moreButton = this.getItem('pagination_more_button');\r\n\t\tmoreButton.hidden = true;\r\n\t\tthis._setDataItemProperties('pagination_status_node', {\r\n\t\t\ttotalResults: newValue\r\n\t\t});\r\n\t\tthis._setDataItemProperties('pagination_status_separator', {\r\n\t\t\thidden: false\r\n\t\t});\r\n\t\tthis._setDataItemProperties('pagination_total_results_status_node', {\r\n\t\t\ttotalResults: newValue\r\n\t\t});\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget totalResults(): number {\r\n\t\tconst totalResultValue = this.getItem(\r\n\t\t\t'pagination_status_node'\r\n\t\t).totalResults;\r\n\t\treturn this._isPositiveInteger(totalResultValue) ||\r\n\t\t\tString(totalResultValue) === '0'\r\n\t\t\t? parseInt(totalResultValue)\r\n\t\t\t: -1;\r\n\t}\r\n\r\n\tset itemsCount(newValue: number) {\r\n\t\tthis._prevPageSize = null;\r\n\t\tthis._prevMaxResults = null;\r\n\t\tthis._itemsCount = newValue;\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget itemsCount(): number {\r\n\t\treturn this._itemsCount;\r\n\t}\r\n\r\n\tset pageSize(newValue?: number | string) {\r\n\t\tthis._setValueInItemWithPositiveInt('pagination_page_size', newValue);\r\n\t}\r\n\r\n\tget pageSize(): number {\r\n\t\treturn this._getValueFromItemWithPositiveInt('pagination_page_size');\r\n\t}\r\n\r\n\tset currentPageNumber(newValue: number) {\r\n\t\tconst statusNodeId = 'pagination_status_node';\r\n\t\tconst pageNumberControl = this.getItem(statusNodeId);\r\n\t\tif (pageNumberControl.currentPageNumber === newValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._setDataItemProperties(statusNodeId, { currentPageNumber: newValue });\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tget currentPageNumber(): number {\r\n\t\treturn this.getItem('pagination_status_node').currentPageNumber;\r\n\t}\r\n\r\n\tset maxResults(newValue?: number | string) {\r\n\t\tthis._setValueInItemWithPositiveInt('pagination_max_results', newValue);\r\n\t}\r\n\r\n\tget maxResults(): number {\r\n\t\treturn this._getValueFromItemWithPositiveInt('pagination_max_results');\r\n\t}\r\n\r\n\t_setValueInItemWithPositiveInt(itemId: string, newValue?: number | string) {\r\n\t\tconst control = this.getItem(itemId);\r\n\r\n\t\tif (control.value === newValue || !this._isPositiveInteger(newValue)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._setDataItemProperties(itemId, {\r\n\t\t\tvalue: newValue,\r\n\t\t\tinvalid: false\r\n\t\t});\r\n\t\tthis.render();\r\n\t}\r\n\r\n\t_getValueFromItemWithPositiveInt(itemId: string): number {\r\n\t\tconst itemValue = this.getItem(itemId).value;\r\n\t\tif (itemValue === '') {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn this._isPositiveInteger(itemValue)\r\n\t\t\t? intl.number.parseInt(itemValue)\r\n\t\t\t: null;\r\n\t}\r\n\r\n\t_initLabelsForControls() {\r\n\t\tObject.keys(resources).forEach((id) => {\r\n\t\t\tconst item = this.getItem(id);\r\n\t\t\tconst resource = resources[id];\r\n\t\t\tif (resource.label) {\r\n\t\t\t\titem.label = aras.getResource('', resource.label);\r\n\t\t\t}\r\n\t\t\tif (resource.tooltip) {\r\n\t\t\t\titem.tooltip_template = aras.getResource('', resource.tooltip);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_isPositiveInteger(value?: number | string): boolean {\r\n\t\tconst parsedInt = intl.number.parseInt(value);\r\n\t\tif (\r\n\t\t\tvalue !== '' &&\r\n\t\t\t(isNaN(parsedInt) || parsedInt < 1 || String(parsedInt) !== String(value))\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t_clickNextButton() {\r\n\t\tthis.itemsCount = 0;\r\n\t\tthis.currentPageNumber += 1;\r\n\t\tthis.dispatchEvent(new CustomEvent('runSearch'));\r\n\t}\r\n\r\n\t_clickPrevButton() {\r\n\t\tif (this.currentPageNumber === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.itemsCount = 0;\r\n\t\tthis.currentPageNumber -= 1;\r\n\t\tthis.dispatchEvent(new CustomEvent('runSearch'));\r\n\t}\r\n\r\n\t_clickMoreButton() {\r\n\t\tthis.showSpinner()\r\n\t\t\t.then(this.getTotalResults)\r\n\t\t\t.then((totalResults) => {\r\n\t\t\t\tthis.totalResults = totalResults;\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tthis.showMoreButton();\r\n\t\t\t});\r\n\t}\r\n\r\n\t_initControls() {\r\n\t\tthis.datastore = new Map();\r\n\t\tpaginationControls.forEach((control, id) => {\r\n\t\t\tthis.datastore.set(id, { ...control });\r\n\t\t});\r\n\t}\r\n\r\n\t_initEventListeners() {\r\n\t\tthis.on('click', (itemId: string) => {\r\n\t\t\tswitch (itemId) {\r\n\t\t\t\tcase 'pagination_prev_button':\r\n\t\t\t\t\tthis._clickPrevButton();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'pagination_next_button':\r\n\t\t\t\t\tthis._clickNextButton();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'pagination_more_button':\r\n\t\t\t\t\tthis._clickMoreButton();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthis.render();\r\n\t\t});\r\n\t\tthis.on('keyup', (itemId: string, event: KeyboardEvent) => {\r\n\t\t\tconst { shortcut } = processKeyboardEvent(event);\r\n\t\t\tif (shortcut === 'enter' && event.target instanceof HTMLInputElement) {\r\n\t\t\t\tthis.dispatchEvent(new CustomEvent('runSearch'));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.addEventListener(\r\n\t\t\t'input',\r\n\t\t\t(event: InputEvent) => {\r\n\t\t\t\tconst targetItemId = this._getIdByDomElement(event.target);\r\n\t\t\t\tconst item = this.getItem(targetItemId);\r\n\t\t\t\tif (\r\n\t\t\t\t\t!item ||\r\n\t\t\t\t\t!targetItemId ||\r\n\t\t\t\t\t!(event.target instanceof HTMLInputElement)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._prevPageSize === null) {\r\n\t\t\t\t\tthis._prevPageSize = this.pageSize;\r\n\t\t\t\t\tthis._prevMaxResults = this.maxResults;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst newValue = event.target.value;\r\n\t\t\t\tconst isInvalid = !this._isPositiveInteger(newValue);\r\n\t\t\t\titem.invalid = isInvalid;\r\n\t\t\t\tthis.data.set(targetItemId, item);\r\n\t\t\t\tthis.render();\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t);\r\n\t}\r\n}\r\n\r\nPagination.extendFormatters(paginationTemplates);\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\n/**\r\n * Global object which contains general controls and helpers.\r\n * The object doesn't contain any business logic\r\n *\r\n * @namespace ArasModules\r\n */\r\nconst rowSettings = {\r\n\tclassName: 'aras-splitter_vertical',\r\n\tsizeParam: 'width',\r\n\toffsetParam: 'offsetWidth',\r\n\tpositionCoordinateParam: 'left',\r\n\tghostMoveParam: 'translateX',\r\n\tmouseEventCoordinateParam: 'clientX',\r\n\tminSizeParam: 'min-width',\r\n\tflexSizeParam: 'flexBasis',\r\n\tgridTemplateParam: 'grid-template-columns',\r\n\tgridSplitterStartParam: 'grid-column-start'\r\n};\r\nconst columnSettings = {\r\n\tclassName: 'aras-splitter_horizontal',\r\n\tsizeParam: 'height',\r\n\toffsetParam: 'offsetHeight',\r\n\tpositionCoordinateParam: 'top',\r\n\tghostMoveParam: 'translateY',\r\n\tmouseEventCoordinateParam: 'clientY',\r\n\tminSizeParam: 'min-height',\r\n\tflexSizeParam: 'height',\r\n\tgridTemplateParam: 'grid-template-rows',\r\n\tgridSplitterStartParam: 'grid-row-start'\r\n};\r\nconst DEFAULT_BLOCK_MIN_SIZE = 100;\r\nconst DRAGGABLE_CLASS_NAME = 'aras-splitter_draggable';\r\n// CURSOR_OFFSET need for set cursor upon ':before' element of splitter ghost\r\nconst CURSOR_OFFSET = 3;\r\n\r\n/**\r\n * @private\r\n * @param {DOMElement} element - DOM element (one of the siblings)\r\n * @param {String} prop - prop to return\r\n * @return {String}, return prop value inline or computed\r\n */\r\nconst getStyleProperty = function (element, prop) {\r\n\tif (element && prop) {\r\n\t\tconst inlineStyle = element.style.getPropertyValue(prop);\r\n\t\treturn inlineStyle\r\n\t\t\t? inlineStyle\r\n\t\t\t: window.getComputedStyle(element).getPropertyValue(prop);\r\n\t}\r\n};\r\n\r\n/**\r\n * @private\r\n * @param {DOMElement} element - DOM element\r\n * @return {Boolean}, return true if element has flex grow\r\n */\r\nconst hasFlexGrow = (element) =>\r\n\t!!Number(getStyleProperty(element, 'flex-grow'));\r\n\r\n/**\r\n * @private\r\n * @param {DOMElement} element - DOM element (one of the siblings)\r\n * @param {Object} settings - settings object\r\n * @return {Number}, return element's minSize according to the settings\r\n */\r\nconst getElementMinSize = function (element, settings) {\r\n\treturn (\r\n\t\tparseInt(getStyleProperty(element, settings.minSizeParam)) ||\r\n\t\tDEFAULT_BLOCK_MIN_SIZE\r\n\t);\r\n};\r\n\r\n/**\r\n * Get sibling of splitter element, that have fixed width or height and do not have \"flex-grow\" property.\r\n * If container has two growing siblings or none, function returns undefined\r\n *\r\n * @private\r\n * @param {DOMElement} element - splitter DOM element\r\n * @return {DOMElement}, return splitter sibling, that do not have \"flex-grow\" property\r\n */\r\nconst getFixedSibling = function (element) {\r\n\tconst prevSiblingGrow = hasFlexGrow(element.previousElementSibling);\r\n\tconst nextSiblingGrow = hasFlexGrow(element.nextElementSibling);\r\n\r\n\tif (prevSiblingGrow && nextSiblingGrow) {\r\n\t\treturn;\r\n\t} else if (nextSiblingGrow) {\r\n\t\treturn element.previousElementSibling;\r\n\t}\r\n\treturn element.nextElementSibling;\r\n};\r\n\r\n/**\r\n * Get coordinates of extreme positions of splitter.\r\n * These coordinates are used to ensure that current splitter does not extend beyond adjacent splitters when blocks are resized.\r\n *\r\n * @private\r\n * @param {DOMElement} element - splitter DOM element\r\n * @param {Number} splitterCoordinate - splitter coordinate\r\n * @param {Number} minPrevSize - minimal size of previous sibling of passed element\r\n * @param {Number} minNextSize - maximum size of next sibling of passed element\r\n * @return {null|Object}, return object that contains max and min extreme positions for splitter and transform for this positions;\r\n * return null when previous or next sibling of splitter has height/width as 0 to use default logic of moving splitter\r\n */\r\nconst getCoordinatesSplitterExtremePositions = function (\r\n\telement,\r\n\tsplitterCoordinate,\r\n\tminPrevSize,\r\n\tminNextSize\r\n) {\r\n\tconst { offsetParam } = element.settings;\r\n\r\n\tconst prevElementSize = element.previousElementSibling[offsetParam];\r\n\tconst nextElementSize = element.nextElementSibling[offsetParam];\r\n\r\n\tif (prevElementSize === 0 || nextElementSize === 0) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst minExtremePosition = splitterCoordinate - prevElementSize;\r\n\tconst maxExtremePosition = splitterCoordinate + nextElementSize;\r\n\r\n\tconst transformForMinExtremePosition = minPrevSize - prevElementSize;\r\n\tconst transformForMaxExtremePosition = nextElementSize - minNextSize;\r\n\r\n\treturn {\r\n\t\tmaxExtremePosition,\r\n\t\tminExtremePosition,\r\n\t\ttransformForMinExtremePosition,\r\n\t\ttransformForMaxExtremePosition\r\n\t};\r\n};\r\n\r\n/**\r\n * Make splitter from received element. Splitter component is based on flex html tags.\r\n *\r\n * @function\r\n * @memberof ArasModules\r\n * @param {DOMElement} element - DOM element, that needs to be made as splitter\r\n * @param {Object} options\r\n * @param {boolean} [options.flexible] options.flexible - enable/disable flexible behavior\r\n * @return {boolean} true, if splitter has been made\r\n */\r\n\r\nexport default class Splitter extends HyperHTMLElement {\r\n\tsettings = {};\r\n\t#fixedSibling;\r\n\t#prevIsFixed;\r\n\t#minPrevSize;\r\n\t#minNextSize;\r\n\t#minFixedSize;\r\n\t#areBothSiblingsFixed;\r\n\r\n\tstatic get booleanAttributes() {\r\n\t\treturn ['flexible'];\r\n\t}\r\n\r\n\tstatic get observedAttributes() {\r\n\t\treturn ['direction'];\r\n\t}\r\n\r\n\t_validate() {\r\n\t\tconst displayType = getStyleProperty(this.parentNode, 'display');\r\n\t\tconst supportedDisplayTypes = ['flex', 'inline-flex', 'grid'];\r\n\t\tif (!supportedDisplayTypes.includes(displayType)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (displayType !== 'grid') {\r\n\t\t\tconst direction = getStyleProperty(this.parentNode, 'flex-direction');\r\n\t\t\tif (!direction.startsWith('row') && !direction.startsWith('column')) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.flexible || this.#fixedSibling;\r\n\t}\r\n\r\n\t_initializeSettings() {\r\n\t\tconst displayType = getStyleProperty(this.parentNode, 'display');\r\n\r\n\t\tif (displayType === 'grid') {\r\n\t\t\tthis.settings =\r\n\t\t\t\tthis.direction === 'column' ? columnSettings : rowSettings;\r\n\t\t} else {\r\n\t\t\tconst isColumn = getStyleProperty(\r\n\t\t\t\tthis.parentNode,\r\n\t\t\t\t'flex-direction'\r\n\t\t\t).startsWith('column');\r\n\r\n\t\t\tthis.settings = isColumn ? columnSettings : rowSettings;\r\n\t\t}\r\n\t}\r\n\r\n\t_setSiblingsParams() {\r\n\t\tconst children = Array.from(this.parentNode.children);\r\n\t\tchildren.forEach((child) => {\r\n\t\t\tif (hasFlexGrow(child)) {\r\n\t\t\t\tconst param = this.flexible ? 'flexBasis' : this.settings.flexSizeParam;\r\n\t\t\t\tchild.style[param] = '0';\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_initialize() {\r\n\t\tthis.#prevIsFixed = this.#fixedSibling === this.previousElementSibling;\r\n\t\tthis.#minPrevSize = getElementMinSize(\r\n\t\t\tthis.previousElementSibling,\r\n\t\t\tthis.settings\r\n\t\t);\r\n\t\tthis.#minNextSize = getElementMinSize(\r\n\t\t\tthis.nextElementSibling,\r\n\t\t\tthis.settings\r\n\t\t);\r\n\t\tthis.#minFixedSize = this.#prevIsFixed\r\n\t\t\t? this.#minPrevSize\r\n\t\t\t: this.#minNextSize;\r\n\r\n\t\tthis.classList.add('aras-splitter', this.settings.className);\r\n\t\tthis.addEventListener('mousedown', this.onmousedown);\r\n\t}\r\n\r\n\t// To prevent default render() afted node creation\r\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\r\n\tcreated() {}\r\n\r\n\tconnectedCallback() {\r\n\t\tthis.#fixedSibling = getFixedSibling(this);\r\n\t\tthis.#areBothSiblingsFixed =\r\n\t\t\t!hasFlexGrow(this.previousElementSibling) &&\r\n\t\t\t!hasFlexGrow(this.nextElementSibling);\r\n\t\tif (!this._validate()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._initializeSettings();\r\n\t\tthis._initialize();\r\n\t\tthis._setSiblingsParams();\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tonmousedown(e) {\r\n\t\tconst ghost = this.querySelector('.aras-splitter-ghost');\r\n\t\tthis.classList.add(DRAGGABLE_CLASS_NAME);\r\n\r\n\t\tconst splitterBoundingClientRect = this.getBoundingClientRect();\r\n\t\tconst splitterCoordinate = Math.round(\r\n\t\t\tsplitterBoundingClientRect[this.settings.positionCoordinateParam]\r\n\t\t);\r\n\r\n\t\tconst extremePositionsCoordinates = getCoordinatesSplitterExtremePositions(\r\n\t\t\tthis,\r\n\t\t\tsplitterCoordinate,\r\n\t\t\tthis.#minPrevSize,\r\n\t\t\tthis.#minNextSize\r\n\t\t);\r\n\r\n\t\tconst mouseMoveHandler = (e) => {\r\n\t\t\tif (!this.classList.contains(DRAGGABLE_CLASS_NAME)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst mouseEventCoordinate =\r\n\t\t\t\te[this.settings.mouseEventCoordinateParam] - CURSOR_OFFSET;\r\n\t\t\tlet transform = mouseEventCoordinate - splitterCoordinate;\r\n\r\n\t\t\tif (extremePositionsCoordinates) {\r\n\t\t\t\tconst isMovedToMinExtremePosition = transform < 0;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tisMovedToMinExtremePosition &&\r\n\t\t\t\t\tmouseEventCoordinate - this.#minPrevSize <=\r\n\t\t\t\t\t\textremePositionsCoordinates.minExtremePosition\r\n\t\t\t\t) {\r\n\t\t\t\t\ttransform =\r\n\t\t\t\t\t\textremePositionsCoordinates.transformForMinExtremePosition;\r\n\t\t\t\t} else if (\r\n\t\t\t\t\t!isMovedToMinExtremePosition &&\r\n\t\t\t\t\tmouseEventCoordinate + this.#minNextSize >=\r\n\t\t\t\t\t\textremePositionsCoordinates.maxExtremePosition\r\n\t\t\t\t) {\r\n\t\t\t\t\ttransform =\r\n\t\t\t\t\t\textremePositionsCoordinates.transformForMaxExtremePosition;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tghost.style.transform = `${this.settings.ghostMoveParam}(${transform}px)`;\r\n\t\t};\r\n\r\n\t\tconst mouseUpHandler = () => {\r\n\t\t\tif (!this.classList.contains(DRAGGABLE_CLASS_NAME)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.classList.remove(DRAGGABLE_CLASS_NAME);\r\n\t\t\tlet sizeOffset = parseInt(ghost.style.transform.substring(11));\r\n\t\t\tconst { offsetParam } = this.settings;\r\n\t\t\tif (this.flexible) {\r\n\t\t\t\tconst isCssGrid =\r\n\t\t\t\t\tgetStyleProperty(this.parentNode, 'display') === 'grid';\r\n\r\n\t\t\t\tconst oldPrevSize = this.previousElementSibling[offsetParam];\r\n\t\t\t\tconst oldNextSize = this.nextElementSibling[offsetParam];\r\n\r\n\t\t\t\tconst combinedSize = isCssGrid\r\n\t\t\t\t\t? this.parentNode[offsetParam] - this[offsetParam]\r\n\t\t\t\t\t: oldPrevSize + oldNextSize;\r\n\r\n\t\t\t\tconst newPrevSize = Math.min(\r\n\t\t\t\t\tMath.max(oldPrevSize + sizeOffset, this.#minPrevSize),\r\n\t\t\t\t\tcombinedSize - this.#minNextSize\r\n\t\t\t\t);\r\n\t\t\t\tif (isCssGrid) {\r\n\t\t\t\t\tconst splitterSize = this[offsetParam];\r\n\t\t\t\t\tconst prevPercent = (newPrevSize / combinedSize) * 100;\r\n\r\n\t\t\t\t\tconst prevSize = `calc(${prevPercent}% - ${splitterSize / 2}px)`;\r\n\t\t\t\t\tconst nextSize = `calc(${100 - prevPercent}% - ${\r\n\t\t\t\t\t\tsplitterSize / 2\r\n\t\t\t\t\t}px)`;\r\n\r\n\t\t\t\t\tthis.parentNode.style[\r\n\t\t\t\t\t\tthis.settings.gridTemplateParam\r\n\t\t\t\t\t] = `${prevSize} ${splitterSize}px ${nextSize}`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst newNextSize = combinedSize - newPrevSize;\r\n\t\t\t\t\tthis.previousElementSibling.style['flex-grow'] =\r\n\t\t\t\t\t\tnewPrevSize / newNextSize;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst { sizeParam } = this.settings;\r\n\t\t\t\tconst getElementNewSize = (oldElementSize, offset, minSize) => {\r\n\t\t\t\t\tconst newSize = Math.max(oldElementSize + offset, minSize);\r\n\t\t\t\t\treturn `${newSize}px`;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (this.#areBothSiblingsFixed) {\r\n\t\t\t\t\tconst nextElementSibling = this.nextElementSibling;\r\n\t\t\t\t\tconst previousElementSibling = this.previousElementSibling;\r\n\t\t\t\t\tconst oldPrevSize = previousElementSibling[offsetParam];\r\n\t\t\t\t\tconst oldNextSize = nextElementSibling[offsetParam];\r\n\t\t\t\t\tconst combinedSize = oldNextSize + oldPrevSize;\r\n\t\t\t\t\tlet prevSiblingNewSize;\r\n\t\t\t\t\tlet nextSiblingNewSize;\r\n\t\t\t\t\tif (sizeOffset < 0) {\r\n\t\t\t\t\t\tprevSiblingNewSize = getElementNewSize(\r\n\t\t\t\t\t\t\toldPrevSize,\r\n\t\t\t\t\t\t\tsizeOffset,\r\n\t\t\t\t\t\t\tthis.#minPrevSize\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tnextSiblingNewSize = `${\r\n\t\t\t\t\t\t\tcombinedSize - parseFloat(prevSiblingNewSize)\r\n\t\t\t\t\t\t}px`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnextSiblingNewSize = getElementNewSize(\r\n\t\t\t\t\t\t\toldNextSize,\r\n\t\t\t\t\t\t\t-sizeOffset,\r\n\t\t\t\t\t\t\tthis.#minNextSize\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tprevSiblingNewSize = `${\r\n\t\t\t\t\t\t\tcombinedSize - parseFloat(nextSiblingNewSize)\r\n\t\t\t\t\t\t}px`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpreviousElementSibling.style[sizeParam] = prevSiblingNewSize;\r\n\t\t\t\t\tnextElementSibling.style[sizeParam] = nextSiblingNewSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsizeOffset = sizeOffset * (this.#prevIsFixed ? 1 : -1);\r\n\r\n\t\t\t\t\tthis.#fixedSibling.style[sizeParam] = getElementNewSize(\r\n\t\t\t\t\t\tthis.#fixedSibling[offsetParam],\r\n\t\t\t\t\t\tsizeOffset,\r\n\t\t\t\t\t\tthis.#minFixedSize\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tghost.style.transform = '';\r\n\t\t\tdocument.removeEventListener('mousemove', mouseMoveHandler);\r\n\t\t\tdocument.removeEventListener('mouseup', mouseUpHandler);\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('mousemove', mouseMoveHandler);\r\n\t\tdocument.addEventListener('mouseup', mouseUpHandler);\r\n\t\t// preventDefault need for disable text selecting when mouse moving\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.html`\r\n\t\t\t
    \r\n\t\t`;\r\n\t}\r\n}\r\n","import type CardTable from './cardTable';\r\nimport SvgManager from '../core/SvgManager';\r\n\r\ninterface FormatterT {\r\n\tclassName?: string;\r\n\tchildren: Array;\r\n}\r\n\r\nexport type CardTableTemplate = JSX.Element | FormatterT | string;\r\n\r\nconst cellClassName = 'aras-card-table__cell';\r\nconst checkboxClassName = 'aras-checkbox';\r\nexport const cardTableFormatters: Record<\r\n\tstring,\r\n\t(\r\n\t\theadId: string,\r\n\t\trowId: string,\r\n\t\tvalue: unknown,\r\n\t\tcontrol: CardTable\r\n\t) => CardTableTemplate\r\n> = {\r\n\tboolean: (headId, rowId, value, control) => {\r\n\t\tconst className = `${cellClassName}_shrunk`;\r\n\t\tconst applyChange = (event: React.ChangeEvent) => {\r\n\t\t\tconst { checked: newValue } = event.target;\r\n\t\t\tconst detail = {\r\n\t\t\t\theadId,\r\n\t\t\t\trowId,\r\n\t\t\t\tnewValue,\r\n\t\t\t\toldValue: value\r\n\t\t\t};\r\n\t\t\tconst changeEvent = new CustomEvent('applyChange', { detail });\r\n\t\t\tcontrol.dispatchEvent(changeEvent);\r\n\t\t};\r\n\t\tconst node = (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn { className, children: [node] };\r\n\t},\r\n\tbutton: (headId, rowId, value) => {\r\n\t\tconst text = String(value);\r\n\t\tconst attributes = {\r\n\t\t\tclassName: 'aras-button aras-card__button',\r\n\t\t\tonclick: (event: MouseEvent) => event.stopPropagation(),\r\n\t\t\ttitle: text\r\n\t\t};\r\n\t\tconst node = (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn node;\r\n\t},\r\n\ticon: (headId, rowId, value) => {\r\n\t\tconst className = `${cellClassName}_shrunk ${cellClassName}_with-icon`;\r\n\t\tconst icon = SvgManager.createInfernoVNode(value, {\r\n\t\t\tcssClass: 'aras-card__icon'\r\n\t\t});\r\n\t\tconst template = {\r\n\t\t\tclassName,\r\n\t\t\tchildren: icon ? [icon] : []\r\n\t\t};\r\n\r\n\t\treturn template;\r\n\t},\r\n\tlink: (headId, rowId, value) => {\r\n\t\tconst node = (\r\n\t\t\t\r\n\t\t\t\t{String(value)}\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn node;\r\n\t},\r\n\ttext: (headId, rowId, value) => String(value ?? '')\r\n};\r\n","import HyperHTMLElement from 'hyperhtml-element';\r\nimport { render as infernoRender, Fragment } from 'inferno';\r\nimport cardTableCSS from '../../styles/less/components/cardTable.less';\r\nimport cardCSS from '../../styles/less/components/card.less';\r\nimport {\r\n\tcheckboxStylesheet,\r\n\tlinkStylesheet,\r\n\tbuttonStylesheet,\r\n\ticonStylesheet\r\n} from './stylesheets';\r\nimport { cardTableFormatters } from './cardTableFormatters';\r\nimport type { CardTableTemplate } from './cardTableFormatters';\r\n\r\ninterface CardTableHeadT {\r\n\tlabel?: string;\r\n\ttype?: string;\r\n}\r\n\r\ninterface CardTableRowT {\r\n\tchildren?: Array;\r\n\t[prop: string]: unknown;\r\n}\r\n\r\nconst cardTableClassName = 'aras-card-table';\r\nconst cellClassName = `${cardTableClassName}__cell`;\r\nconst cardClassName = 'aras-card';\r\nconst columnTypes: Record = {\r\n\tboolean: `${cellClassName}_shrunk`,\r\n\ticon: `${cellClassName}_shrunk ${cellClassName}_with-icon`,\r\n\tdraggable: `${cellClassName}_shrunk ${cellClassName}_drag-on`\r\n};\r\nconst adoptedStyleSheets = [cardTableCSS, cardCSS].map((css) => {\r\n\tconst stylesheet = new CSSStyleSheet();\r\n\tstylesheet.replaceSync(css);\r\n\r\n\treturn stylesheet;\r\n});\r\n\r\nclass CardTable extends HyperHTMLElement {\r\n\tdeclare shadowRoot: ShadowRoot;\r\n\tdeclare dragOn: boolean;\r\n\tstate: {\r\n\t\tindexHead: string[];\r\n\t\tindexRows: string[];\r\n\t\thead: Map;\r\n\t\trows: Map;\r\n\t\tselectedRows: string[];\r\n\t} = {\r\n\t\tindexHead: [],\r\n\t\tindexRows: [],\r\n\t\thead: new Map(),\r\n\t\trows: new Map(),\r\n\t\tselectedRows: []\r\n\t};\r\n\r\n\tstatic get booleanAttributes() {\r\n\t\treturn ['drag-on'];\r\n\t}\r\n\r\n\tstatic extendFormatters(\r\n\t\tformatter: Record<\r\n\t\t\tstring,\r\n\t\t\t(\r\n\t\t\t\theadId: string,\r\n\t\t\t\trowId: string,\r\n\t\t\t\tvalue: unknown,\r\n\t\t\t\tcontrol: CardTable\r\n\t\t\t) => CardTableTemplate\r\n\t\t>\r\n\t): void {\r\n\t\tObject.assign(cardTableFormatters, formatter);\r\n\t}\r\n\r\n\tcreated(): void {\r\n\t\tthis.attachShadow({ mode: 'open' });\r\n\t\tthis.shadowRoot.adoptedStyleSheets = [\r\n\t\t\tbuttonStylesheet,\r\n\t\t\tcheckboxStylesheet,\r\n\t\t\ticonStylesheet,\r\n\t\t\tlinkStylesheet,\r\n\t\t\t...adoptedStyleSheets\r\n\t\t];\r\n\t\tthis.addEventListener('applyChange', ((event: CustomEvent) =>\r\n\t\t\tthis.#applyChange(event)) as EventListener);\r\n\t\tthis.addEventListener('selectRow', ((event: CustomEvent) =>\r\n\t\t\tthis.#toggleSelection(event)) as EventListener);\r\n\t}\r\n\r\n\tget head(): Map {\r\n\t\treturn this.state.head;\r\n\t}\r\n\r\n\tset head(head: Map) {\r\n\t\tconst indexHead = [...head.keys()];\r\n\t\tthis.setState({ indexHead, head });\r\n\t}\r\n\r\n\tget rows(): Map {\r\n\t\treturn this.state.rows;\r\n\t}\r\n\r\n\tset rows(rows: Map) {\r\n\t\tconst children = [...rows.values()].reduce(\r\n\t\t\t(arr: Array, rowItem) => {\r\n\t\t\t\tconst children = rowItem.children ?? [];\r\n\r\n\t\t\t\treturn [...arr, ...children];\r\n\t\t\t},\r\n\t\t\t[]\r\n\t\t);\r\n\t\tconst indexRows = [...rows.keys()].filter(\r\n\t\t\t(rowKey) => !children.includes(rowKey)\r\n\t\t);\r\n\t\tthis.setState({ indexRows, rows });\r\n\t}\r\n\r\n\tattributeChangedCallback(): void {\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tgetCellType(headId: string): string {\r\n\t\tconst { head } = this.state;\r\n\t\tconst headCell = head.get(headId);\r\n\t\tconst columnType = headCell?.type;\r\n\t\tconst cellType = columnType ?? 'text';\r\n\r\n\t\treturn cellType;\r\n\t}\r\n\r\n\trender(): void {\r\n\t\tconst headNode = this.#buildHead();\r\n\t\tconst contentNode = this.#buildRows();\r\n\t\tconst root = (\r\n\t\t\t\r\n\t\t\t\t{headNode}\r\n\t\t\t\t{contentNode}\r\n\t\t\t\r\n\t\t);\r\n\t\tinfernoRender(root, this.shadowRoot);\r\n\t\tthis.#checkForScroll();\r\n\t}\r\n\r\n\t#applyChange(event: CustomEvent) {\r\n\t\tconst { headId, rowId, newValue } = event.detail;\r\n\t\tconst rows = this.state.rows;\r\n\t\tconst row = rows.get(rowId);\r\n\t\trows.set(rowId, { ...row, [headId]: newValue });\r\n\t\tthis.setState(rows);\r\n\t}\r\n\r\n\t#buildHead() {\r\n\t\tconst { indexHead, indexRows, head } = this.state;\r\n\t\tconst headCells = indexHead.map((headId) => {\r\n\t\t\tconst className = this.#getHeadCellClass(headId);\r\n\t\t\tconst headCell = head.get(headId);\r\n\t\t\tconst label = headCell?.label ?? '';\r\n\t\t\tconst cell = (\r\n\t\t\t\t\r\n\t\t\t\t\t{label}\r\n\t\t\t\t\r\n\t\t\t);\r\n\r\n\t\t\treturn cell;\r\n\t\t});\r\n\t\tif (this.dragOn) {\r\n\t\t\tconst className = columnTypes.draggable;\r\n\t\t\theadCells.unshift();\r\n\t\t}\r\n\r\n\t\tconst rowShrunk = indexRows.some((rowId) => this.#hasChildren(rowId));\r\n\t\tconst headClassName = rowShrunk\r\n\t\t\t? `${cardTableClassName}__head ${cardTableClassName}__row_shrunk`\r\n\t\t\t: `${cardTableClassName}__head`;\r\n\t\tconst headNode = (\r\n\t\t\t
    \r\n\t\t\t\t{headCells}\r\n\t\t\t
    \r\n\t\t);\r\n\r\n\t\treturn headNode;\r\n\t}\r\n\r\n\t#buildRows() {\r\n\t\tconst { indexHead, indexRows, rows } = this.state;\r\n\t\tconst rowShrunk = indexRows.some((rowId) => this.#hasChildren(rowId));\r\n\t\tconst draggable = this.dragOn || undefined;\r\n\t\tconst rowsNodes = indexRows.map((rowId) => {\r\n\t\t\tconst rowItem = rows.get(rowId);\r\n\t\t\tconst cells = indexHead.map((headId) => {\r\n\t\t\t\tconst value = rowItem?.[headId];\r\n\t\t\t\tconst cellTemplate = this.#getCellTemplate(headId, rowId, value);\r\n\r\n\t\t\t\treturn cellTemplate;\r\n\t\t\t});\r\n\t\t\tif (this.dragOn) {\r\n\t\t\t\tconst cellTemplate = this.#getDragTemplate();\r\n\t\t\t\tconst cell = this.#parseCellTemplate(cellTemplate);\r\n\t\t\t\tcells.unshift(cell);\r\n\t\t\t}\r\n\r\n\t\t\tconst color = rowItem?.color;\r\n\t\t\tconst borderStyle = color\r\n\t\t\t\t? `border-left: 4px solid ${color};`\r\n\t\t\t\t: undefined;\r\n\t\t\tconst classList = this.#getRowClasses(rowId, rowShrunk);\r\n\t\t\tconst rowNodeAttributes = {\r\n\t\t\t\tclassName: classList,\r\n\t\t\t\t'data-row-id': rowId,\r\n\t\t\t\tdraggable,\r\n\t\t\t\trole: 'row',\r\n\t\t\t\tstyle: borderStyle\r\n\t\t\t};\r\n\t\t\tconst expandButton = this.#getExpandButton(rowId);\r\n\t\t\tconst rowNode = expandButton ? (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    {cells}
    \r\n\t\t\t\t\t{expandButton}\r\n\t\t\t\t
    \r\n\t\t\t) : (\r\n\t\t\t\t
    {cells}
    \r\n\t\t\t);\r\n\r\n\t\t\treturn rowNode;\r\n\t\t});\r\n\t\tconst dragEvents = this.dragOn\r\n\t\t\t? {\r\n\t\t\t\t\tondragstart: this.#dragStart,\r\n\t\t\t\t\tondragover: this.#dragOver,\r\n\t\t\t\t\tondrop: (event: DragEvent) => this.#drop(event)\r\n\t\t\t }\r\n\t\t\t: {};\r\n\t\tconst contentNodeAttributes = {\r\n\t\t\tclassName: `${cardTableClassName}__rows`,\r\n\t\t\tonclick: (event: MouseEvent) => this.#click(event),\r\n\t\t\trole: 'rowgroup',\r\n\t\t\t...dragEvents\r\n\t\t};\r\n\t\tconst contentNode =
    {rowsNodes}
    ;\r\n\r\n\t\treturn contentNode;\r\n\t}\r\n\r\n\t#calculateCursorPosition(event: DragEvent, draggedItemId: string) {\r\n\t\tconst { target, clientY } = event;\r\n\t\tif (!(target instanceof HTMLElement)) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tconst overItem = target.closest('.aras-card');\r\n\t\tif (!overItem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst draggedItemParent = this.#getParent(draggedItemId);\r\n\t\tconst overItemId = overItem.dataset.rowId ?? '';\r\n\t\tconst overItemParent = this.#getParent(overItemId);\r\n\t\tconst sameParent = draggedItemParent === overItemParent;\r\n\t\tconst sameItem = draggedItemId === overItemId;\r\n\t\tif (sameItem || !sameParent) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tconst { top: cardTop } = overItem.getBoundingClientRect();\r\n\t\tconst topAreaBounding = cardTop + overItem.offsetHeight / 2;\r\n\t\tconst above = clientY >= cardTop && clientY < topAreaBounding;\r\n\t\tconst position = above ? 'above' : 'bellow';\r\n\r\n\t\treturn position;\r\n\t}\r\n\r\n\t#checkForScroll(): void {\r\n\t\tconst { firstElementChild: headNode, lastElementChild: contentNode } =\r\n\t\t\tthis.shadowRoot;\r\n\t\tif (!(contentNode instanceof HTMLElement)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst { offsetHeight, scrollHeight } = contentNode;\r\n\t\tconst hasScroll = scrollHeight > offsetHeight;\r\n\t\tconst className = `${cardTableClassName}__head_scroll-on`;\r\n\t\theadNode?.classList.toggle(className, hasScroll);\r\n\t}\r\n\r\n\t#click(event: MouseEvent): void {\r\n\t\tconst { ctrlKey, metaKey, shiftKey, target } = event;\r\n\t\tif (!(target instanceof HTMLElement)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst row = target.closest('.aras-card');\r\n\t\tif (!row) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst rowId = row.dataset.rowId;\r\n\t\tconst type = ctrlKey || metaKey ? 'ctrl' : shiftKey ? 'shift' : 'single';\r\n\t\tconst detail = { rowId, type };\r\n\t\tconst selectRowEvent = new CustomEvent('selectRow', { detail });\r\n\t\tthis.dispatchEvent(selectRowEvent);\r\n\t}\r\n\r\n\t#dragStart(event: DragEvent) {\r\n\t\tconst { target: draggedItem, dataTransfer } = event;\r\n\t\tif (draggedItem instanceof HTMLElement) {\r\n\t\t\tconst rowId = draggedItem.dataset.rowId;\r\n\t\t\trowId && dataTransfer?.setData('id', rowId);\r\n\t\t}\r\n\t}\r\n\r\n\t#dragOver(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t#drop(event: DragEvent) {\r\n\t\tconst dataTransfer = event.dataTransfer;\r\n\t\tconst draggedId = dataTransfer?.getData('id') ?? '';\r\n\t\tconst cursorPosition = this.#calculateCursorPosition(event, draggedId);\r\n\t\tif (!cursorPosition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#insertOnPosition(event, draggedId, cursorPosition);\r\n\t}\r\n\r\n\t#getButtonState(rowId: string) {\r\n\t\tconst expanded = this.#isExpanded(rowId);\r\n\t\tconst state = expanded ? 'collapse' : 'expand';\r\n\r\n\t\treturn state;\r\n\t}\r\n\r\n\t#getHeadCellClass(headId: string): string {\r\n\t\tconst { head } = this.state;\r\n\t\tconst headCell = head.get(headId);\r\n\t\tconst columnType = headCell?.type ?? '';\r\n\t\tconst cellClassModifier = columnTypes[columnType];\r\n\t\tconst className = cellClassModifier\r\n\t\t\t? `${cellClassName} ${cellClassModifier}`\r\n\t\t\t: cellClassName;\r\n\r\n\t\treturn className;\r\n\t}\r\n\r\n\t#getCellTemplate(headId: string, rowId: string, value: unknown) {\r\n\t\tconst cellType = this.getCellType(headId);\r\n\t\tconst formatter = cardTableFormatters[cellType] ?? cardTableFormatters.text;\r\n\t\tconst cellTemplate = formatter(headId, rowId, value, this);\r\n\t\tconst parsedTemplate = this.#parseCellTemplate(cellTemplate);\r\n\r\n\t\treturn parsedTemplate;\r\n\t}\r\n\r\n\t#getDragTemplate() {\r\n\t\tconst className = `${cellClassName}_shrunk ${cellClassName}_drag-on`;\r\n\t\tconst node = ;\r\n\t\tconst template = {\r\n\t\t\tclassName,\r\n\t\t\tchildren: [node]\r\n\t\t};\r\n\r\n\t\treturn template;\r\n\t}\r\n\r\n\t#getRowClasses(rowId: string, rowShrunk: boolean) {\r\n\t\tconst { selectedRows } = this.state;\r\n\t\tconst rowClasses = [cardClassName];\r\n\t\tconst isRowSelected = selectedRows.includes(rowId);\r\n\t\tif (isRowSelected) {\r\n\t\t\trowClasses.push(`${cardClassName}_selected`);\r\n\t\t}\r\n\r\n\t\tif (rowShrunk) {\r\n\t\t\trowClasses.push(`${cardTableClassName}__row_shrunk`);\r\n\t\t}\r\n\r\n\t\tconst classList = rowClasses.join(' ');\r\n\r\n\t\treturn classList;\r\n\t}\r\n\r\n\t#getExpandButton(rowId: string) {\r\n\t\tconst hasChildren = this.#hasChildren(rowId);\r\n\t\tif (!hasChildren) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst buttonClassList = `aras-button aras-button_b ${cardTableClassName}__expand-button`;\r\n\t\tconst state = this.#getButtonState(rowId);\r\n\t\tconst iconClassList = `aras-icon-${state}`;\r\n\t\tconst buttonAttributes = {\r\n\t\t\tclassName: `${buttonClassList} ${iconClassList}`,\r\n\t\t\tonclick: () => this.#toggleExpanding(rowId)\r\n\t\t};\r\n\r\n\t\treturn ;\r\n\t}\r\n\r\n\t#getParent(rowId: string) {\r\n\t\tconst data = [...this.rows.values()];\r\n\t\tconst parent = data.find((row) => row.children?.includes(rowId));\r\n\r\n\t\treturn parent;\r\n\t}\r\n\r\n\t#getRowData(rowId: string, indexRows: Array) {\r\n\t\tconst rowIndex = indexRows.indexOf(rowId);\r\n\t\tconst expanded = this.#isExpanded(rowId);\r\n\t\tconst rowItem = this.rows.get(rowId);\r\n\t\tconst children = expanded ? rowItem?.children : null;\r\n\r\n\t\treturn { rowIndex, children };\r\n\t}\r\n\r\n\t#hasChildren(rowId: string) {\r\n\t\tconst row = this.rows.get(rowId);\r\n\t\tconst children = row?.children ?? [];\r\n\t\tconst hasChildren = children.length > 0;\r\n\r\n\t\treturn hasChildren;\r\n\t}\r\n\r\n\t#isExpanded(rowId: string) {\r\n\t\tconst row = this.rows.get(rowId);\r\n\t\tconst children = row?.children;\r\n\t\tif (!children) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst { indexRows } = this.state;\r\n\t\tconst expanded = children.every((childId) => indexRows.includes(childId));\r\n\r\n\t\treturn expanded;\r\n\t}\r\n\r\n\t#insertOnPosition(event: DragEvent, draggedItemId: string, position: string) {\r\n\t\tconst target = event.target;\r\n\t\tif (!(target instanceof HTMLElement)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst overNode = target.closest('.aras-card');\r\n\t\tif (!overNode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst indexRows = [...this.state.indexRows];\r\n\t\tconst { children: draggedChildren, rowIndex: draggedIndex } =\r\n\t\t\tthis.#getRowData(draggedItemId, indexRows);\r\n\t\tconst splicedCount = draggedChildren && draggedChildren.length + 1;\r\n\t\tconst insertedIds = indexRows.splice(draggedIndex, splicedCount ?? 1);\r\n\t\tconst overItemId = overNode.dataset.rowId ?? '';\r\n\t\tconst { rowIndex: overIndex, children: overChildren } = this.#getRowData(\r\n\t\t\toverItemId,\r\n\t\t\tindexRows\r\n\t\t);\r\n\t\tconst length = overChildren?.length;\r\n\t\tconst shift = position === 'above' ? 0 : length ? length + 1 : 1;\r\n\t\tconst changedRows = [\r\n\t\t\t...indexRows.slice(0, overIndex + shift),\r\n\t\t\t...insertedIds,\r\n\t\t\t...indexRows.slice(overIndex + shift)\r\n\t\t];\r\n\t\tthis.setState({ indexRows: changedRows });\r\n\t}\r\n\r\n\t#parseCellTemplate(cellTemplate: CardTableTemplate) {\r\n\t\tconst role = 'gridcell';\r\n\t\tconst isString = typeof cellTemplate === 'string';\r\n\t\tconst isObject = typeof cellTemplate === 'object';\r\n\t\tconst isVNode = isObject && 'flags' in cellTemplate;\r\n\t\tif (isVNode || isString || !('children' in cellTemplate)) {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t{cellTemplate}\r\n\t\t\t\t
    \r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst { className = '', children } = cellTemplate;\r\n\t\tconst classList = className\r\n\t\t\t? `${cellClassName} ${className}`\r\n\t\t\t: cellClassName;\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{children}\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\t#toggleExpanding(rowId: string) {\r\n\t\tconst row = this.rows.get(rowId);\r\n\t\tconst children = row?.children ?? [];\r\n\t\tconst { indexRows } = this.state;\r\n\t\tconst rowIndex = indexRows.indexOf(rowId) + 1;\r\n\t\tconst expanded = this.#isExpanded(rowId);\r\n\t\tconst changedRows = expanded\r\n\t\t\t? indexRows.filter((rowId) => !children.includes(rowId))\r\n\t\t\t: [\r\n\t\t\t\t\t...indexRows.slice(0, rowIndex),\r\n\t\t\t\t\t...children,\r\n\t\t\t\t\t...indexRows.slice(rowIndex)\r\n\t\t\t ];\r\n\t\tthis.setState({ indexRows: changedRows });\r\n\t}\r\n\r\n\t#toggleSelection(event: CustomEvent) {\r\n\t\tconst { rowId, type } = event.detail;\r\n\t\tif (type === 'single') {\r\n\t\t\tthis.setState({ selectedRows: [rowId] });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (type === 'shift') {\r\n\t\t\tthis.#toggleRangeSelection(rowId);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst selectedRows = [...this.state.selectedRows];\r\n\t\tconst selectedIndex = selectedRows.indexOf(rowId);\r\n\t\tif (selectedIndex !== -1) {\r\n\t\t\tselectedRows.splice(selectedIndex, 1);\r\n\t\t} else {\r\n\t\t\tselectedRows.push(rowId);\r\n\t\t}\r\n\r\n\t\tthis.setState({ selectedRows });\r\n\t}\r\n\r\n\t#toggleRangeSelection(selectedId: string): void {\r\n\t\tconst { indexRows, selectedRows } = this.state;\r\n\t\tconst lastSelectedId =\r\n\t\t\tselectedRows[selectedRows.length - 1] ?? indexRows[0];\r\n\t\tconst lastSelectedIndex = indexRows.indexOf(lastSelectedId);\r\n\t\tconst selectedIndex = indexRows.indexOf(selectedId);\r\n\t\tconst leftBound = Math.min(lastSelectedIndex, selectedIndex);\r\n\t\tconst rightBound = Math.max(lastSelectedIndex, selectedIndex) + 1;\r\n\t\tconst range = indexRows.slice(leftBound, rightBound);\r\n\t\tif (lastSelectedIndex > selectedIndex) {\r\n\t\t\trange.reverse();\r\n\t\t}\r\n\r\n\t\tconst unselectedRows = range.filter(\r\n\t\t\t(rowId) => !selectedRows.includes(rowId)\r\n\t\t);\r\n\t\tif (unselectedRows.length > 0) {\r\n\t\t\tthis.setState({ selectedRows: [...selectedRows, ...unselectedRows] });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst selectedRest = selectedRows.filter(\r\n\t\t\t(selectedRowId) => !range.includes(selectedRowId)\r\n\t\t);\r\n\t\tthis.setState({ selectedRows: [...selectedRest, selectedId] });\r\n\t}\r\n}\r\n\r\nconst name = 'aras-card-table';\r\nif (!customElements.get(name)) {\r\n\tCardTable.define(name);\r\n}\r\n\r\nexport default CardTable;\r\n","import HyperHTMLElement from 'hyperhtml-element';\r\nimport inputCSS from '../../styles/less/core/input.less';\r\nconst { wire } = HyperHTMLElement;\r\n\r\nconst inputStylesheet = new CSSStyleSheet();\r\ninputStylesheet.replaceSync(inputCSS);\r\n\r\nexport default class Input extends HyperHTMLElement {\r\n\tstatic formAssociated = true;\r\n\r\n\tdeclare disabled: boolean;\r\n\tdeclare invalid: boolean;\r\n\tdeclare placeholder: string;\r\n\tdeclare readonly: boolean;\r\n\tdeclare required: boolean;\r\n\tdeclare shadowRoot: ShadowRoot;\r\n\tdeclare value: string;\r\n\r\n\tstatic get booleanAttributes(): string[] {\r\n\t\treturn ['disabled', 'invalid', 'readonly', 'required'];\r\n\t}\r\n\r\n\tstatic get observedAttributes(): string[] {\r\n\t\treturn ['maxlength', 'placeholder', 'value'];\r\n\t}\r\n\r\n\tget maxLength(): number {\r\n\t\tconst attrValue = this.getAttribute('maxlength');\r\n\t\treturn attrValue ? Number(attrValue) : -1;\r\n\t}\r\n\r\n\tonslotchange = (e: Event): void => {\r\n\t\tconst target = e.target as HTMLSlotElement;\r\n\t\tconst slottedElements = target.assignedElements() as HTMLElement[];\r\n\t\tslottedElements.forEach((slotItem) => {\r\n\t\t\tslotItem.tabIndex = -1;\r\n\t\t\tslotItem.ariaHidden = 'true';\r\n\t\t});\r\n\t\tthis.render();\r\n\t};\r\n\r\n\tattributeChangedCallback(\r\n\t\tname: string,\r\n\t\toldValue: string | null,\r\n\t\tnewValue: string | null\r\n\t): void {\r\n\t\tswitch (name) {\r\n\t\t\tcase 'disabled':\r\n\t\t\t\tthis.ariaDisabled = `${this.disabled}`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'invalid':\r\n\t\t\t\tthis.setAttribute('aria-invalid', `${this.invalid}`);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'placeholder':\r\n\t\t\t\tthis.ariaPlaceholder = newValue ?? '';\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'required':\r\n\t\t\t\tthis.ariaRequired = `${this.required}`;\r\n\t\t\t\tthis.#validate();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'value': {\r\n\t\t\t\tif (newValue === null) {\r\n\t\t\t\t\tthis.value = '';\r\n\t\t\t\t}\r\n\t\t\t\tthis.#validate();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tcreated(): void {\r\n\t\tthis.attachShadow({ mode: 'open' });\r\n\t\tthis.shadowRoot.adoptedStyleSheets = [inputStylesheet];\r\n\t\tthis.tabIndex = 0;\r\n\t\tthis.value = '';\r\n\t\tthis.shadowRoot.addEventListener('slotchange', this);\r\n\t\t['blur', 'focus'].forEach((event) => this.addEventListener(event, this));\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tfocus(): void {\r\n\t\tsuper.focus();\r\n\t\tthis.shadowRoot.querySelector('input')?.focus();\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tonblur(): void {\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tonchange(): void {\r\n\t\tconst event = new CustomEvent('change');\r\n\t\tthis.dispatchEvent(event);\r\n\t}\r\n\r\n\tonfocus(): void {\r\n\t\tthis.focus();\r\n\t}\r\n\r\n\toninput(e: InputEvent): void {\r\n\t\tconst target = e.target as HTMLInputElement;\r\n\t\tthis.value = target.value;\r\n\t}\r\n\r\n\trender(): void {\r\n\t\tconst trailing = wire(this, ':slot:trailing')``;\r\n\t\tconst inputClass = this.#getInputClass({ trailing });\r\n\t\tthis.html`\r\n\t\t\t\r\n\t\t\t${trailing}\r\n\t\t`;\r\n\t}\r\n\r\n\t#getInputClass(slots: Record): string {\r\n\t\tconst classes = ['aras-input__input'];\r\n\t\tif (this.invalid) {\r\n\t\t\tclasses.push('aras-input__input_invalid');\r\n\t\t}\r\n\r\n\t\tconst { trailing } = slots;\r\n\t\tconst trailingElementsCount = this.#getSlotElementsCount(trailing);\r\n\t\tif (trailingElementsCount > 0) {\r\n\t\t\tclasses.push('aras-input__input_with-trailing-icon');\r\n\t\t}\r\n\r\n\t\treturn classes.join(' ');\r\n\t}\r\n\r\n\t#getSlotElementsCount(slot: HTMLSlotElement): number {\r\n\t\tconst assignedElements = slot.assignedElements();\r\n\t\treturn assignedElements.length;\r\n\t}\r\n\r\n\t#validate(): boolean {\r\n\t\tif (!this.required) {\r\n\t\t\tthis.invalid = false;\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst valid = Boolean(this.value);\r\n\t\tthis.invalid = !valid;\r\n\t\treturn valid;\r\n\t}\r\n}\r\n\r\nif (!customElements.get('aras-input')) {\r\n\tInput.define('aras-input');\r\n}\r\n","import HyperHTMLElement from 'hyperhtml-element';\r\nimport spinnerCSS from '../../styles/less/components/spinner.less';\r\n\r\nconst spinnerStylesheet = new CSSStyleSheet();\r\nspinnerStylesheet.replaceSync(spinnerCSS);\r\n\r\nclass Spinner extends HyperHTMLElement {\r\n\tdeclare shadow: ShadowRoot;\r\n\tdeclare active: boolean;\r\n\r\n\tstatic get booleanAttributes(): string[] {\r\n\t\treturn ['active'];\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis.shadow = this.attachShadow({ mode: 'open' });\r\n\t\tthis.shadow.adoptedStyleSheets = [spinnerStylesheet];\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tattributeChangedCallback() {\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tthis.active = true;\r\n\t}\r\n\r\n\thide() {\r\n\t\tthis.active = false;\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.html`\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\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}\r\n}\r\n\r\nconst name = 'aras-spinner';\r\nif (!customElements.get(name)) {\r\n\tSpinner.define(name);\r\n}\r\n\r\nexport default Spinner;\r\n","// eslint-disable-next-line\r\n// @ts-nocheck\r\nimport aml from './aml';\r\nimport copyTextToBuffer, { copyHtmlToBuffer } from './copyTextToBuffer';\r\nimport Dialog from './Dialog';\r\nimport intl from './intl';\r\nimport MaximazableDialog from './MaximazableDialog';\r\nimport { SyncPromise, soap, SOAPError } from './Soap';\r\nimport { sessionSoap, alertSoapError } from './SessionSoap';\r\nimport * as bunchSoap from './bunchSoap';\r\nimport SvgManager from './SvgManager';\r\nimport utils from './utils';\r\nimport vaultUploader from './vaultUploader';\r\nimport xml from './Xml';\r\nimport { xmlToJson, jsonToXml } from './XmlToJson';\r\nimport {\r\n\txmlToODataJson,\r\n\txmlToODataJsonAsCollection,\r\n\txmlToODataJsonByItemType\r\n} from './XmlToODataJson';\r\nimport fetch from './sessionFetch';\r\nimport odataFetch from './odataFetch';\r\n\r\nimport Sidebar from '../components/sidebar';\r\nimport alertModule from '../components/alert';\r\nimport ContextMenu from '../components/contextMenu';\r\nimport confirmModule from '../components/confirm';\r\nimport promptModule from '../components/prompt';\r\nimport notify from '../components/notify';\r\nimport Dropdown from '../components/dropdown';\r\nimport dropdownButton from '../components/dropdownButton';\r\nimport Tabs from '../components/tabs';\r\nimport ViewersTabs from '../components/viewersTabs';\r\nimport Calendar from '../components/calendar';\r\nimport TimePicker from '../components/timePicker';\r\nimport Toolbar from '../components/toolbar';\r\nimport Form from '../components/form';\r\nimport CompatToolbar from '../components/compatToolbar';\r\nimport {\r\n\ttoolbarTemplates as compatToolbarTemplates,\r\n\ttoolbarFormatters as compatToolbarFormatters\r\n} from '../components/compatToolbarTemplates';\r\nimport BaseTypeahead from '../components/baseTypeahead';\r\nimport FilterList from '../components/filterList';\r\nimport ItemProperty from '../components/itemProperty';\r\nimport ClassificationProperty from '../components/classificationProperty';\r\nimport Nav from '../components/nav/nav';\r\nimport navTemplates from '../components/nav/navTemplates';\r\nimport Menu from '../components/menu';\r\n\r\nimport { HeadWrap, RowsWrap } from '../components/grid/utils';\r\nimport Keyboard from '../components/grid/keyboard';\r\nimport GridActions from '../components/grid/actions';\r\nimport gridTemplates from '../components/grid/templates';\r\nimport GridView from '../components/grid/view';\r\nimport gridEditors from '../components/grid/editors';\r\nimport gridFormatters from '../components/grid/formatters';\r\nimport { extend as extendGridSorters } from '../components/grid/sorters';\r\nimport dataTypeFormatters from '../components/grid/dataTypeFormatters';\r\nimport GridSearch from '../components/grid/search';\r\nimport Grid from '../components/grid/grid';\r\n\r\nimport TreeGrid from '../components/treeGrid/treeGrid';\r\nimport TreeGridActions from '../components/treeGrid/treeGridActions';\r\nimport treeGridTemplates from '../components/treeGrid/treeGridTemplates';\r\nimport TreeGridView from '../components/treeGrid/treeGridView';\r\nimport Accordion from '../components/accordion';\r\nimport Scroller from '../components/scroller';\r\nimport Switcher from '../components/switcher';\r\nimport Pagination from '../components/pagination/pagination';\r\nimport Splitter from '../components/splitter';\r\nimport CardTable from '../components/cardTable';\r\nimport Input from '../components/input';\r\n\r\nimport '../components/spinner';\r\n\r\ngridFormatters.extend(dataTypeFormatters);\r\n\r\nwindow.Toolbar = Toolbar;\r\nwindow.Input = Input;\r\nwindow.Form = Form;\r\nwindow.CompatToolbar = CompatToolbar;\r\nwindow.CompatToolbar.formatters = compatToolbarFormatters;\r\nwindow.CompatToolbar.toolbarTemplates = compatToolbarTemplates;\r\nwindow.Pagination = Pagination;\r\n\r\nwindow.BaseTypeahead = BaseTypeahead;\r\nwindow.FilterList = FilterList;\r\nwindow.ItemProperty = ItemProperty;\r\nwindow.ClassificationProperty = ClassificationProperty;\r\nwindow.Nav = Nav;\r\nwindow.NavTemplates = navTemplates;\r\n\r\nwindow.GridActions = GridActions;\r\nwindow.Keyboard = Keyboard;\r\nwindow.GridTemplates = gridTemplates;\r\nwindow.HeadWrap = HeadWrap;\r\nwindow.RowsWrap = RowsWrap;\r\nwindow.GridView = GridView;\r\n\r\nwindow.Grid = Grid;\r\nwindow.GridView = GridView;\r\nwindow.GridActions = GridActions;\r\n\r\nwindow.Grid.editors = gridEditors;\r\nwindow.Grid.sorters = {\r\n\textend: extendGridSorters\r\n};\r\nwindow.Grid.search = GridSearch;\r\n\r\nwindow.TreeGrid = TreeGrid;\r\nwindow.TreeGridActions = TreeGridActions;\r\nwindow.TreeGridTemplates = treeGridTemplates;\r\nwindow.TreeGridView = TreeGridView;\r\nwindow.CardTable = CardTable;\r\n\r\nDialog.alert = alertModule;\r\nDialog.confirm = confirmModule;\r\nDialog.prompt = promptModule;\r\n\r\nwindow.ArasModules = window.ArasModules || {};\r\n\r\nconst core = {\r\n\taml,\r\n\tcopyTextToBuffer,\r\n\tcopyHtmlToBuffer,\r\n\tDialog: Dialog,\r\n\tnativSoap: soap,\r\n\tSOAPError,\r\n\tsoap: sessionSoap,\r\n\talertSoapError: alertSoapError,\r\n\tintl: intl,\r\n\tjsonToXml: jsonToXml,\r\n\tMaximazableDialog: MaximazableDialog,\r\n\tSyncPromise: SyncPromise,\r\n\tSvgManager: SvgManager,\r\n\tutils: utils,\r\n\tvault: vaultUploader,\r\n\txml: xml,\r\n\txmlToJson: xmlToJson,\r\n\tContextMenu: ContextMenu,\r\n\tnotify: notify,\r\n\tdropdownButton: dropdownButton,\r\n\txmlToODataJson: xmlToODataJson,\r\n\txmlToODataJsonAsCollection: xmlToODataJsonAsCollection,\r\n\txmlToODataJsonByItemType,\r\n\tfetch: fetch,\r\n\todataFetch: odataFetch,\r\n\tbunchSoap\r\n};\r\n\r\nconst webComponents = {\r\n\t'aras-filter-list': FilterList,\r\n\t'aras-item-property': ItemProperty,\r\n\t'aras-classification-property': ClassificationProperty,\r\n\t'aras-nav': Nav,\r\n\t'aras-sidebar': Sidebar,\r\n\t'aras-toolbar': Toolbar,\r\n\t'aras-form': Form,\r\n\t'aras-accordion': Accordion,\r\n\t'aras-scroller': Scroller,\r\n\t'aras-switcher': Switcher,\r\n\t'aras-tabs': Tabs,\r\n\t'aras-viewers-tabs': ViewersTabs,\r\n\t'aras-calendar': Calendar,\r\n\t'aras-time-picker': TimePicker,\r\n\t'aras-dropdown': Dropdown,\r\n\t'aras-pagination': Pagination,\r\n\t'aras-menu': Menu,\r\n\t'aras-grid': Grid,\r\n\t'aras-tree-grid': TreeGrid,\r\n\t'aras-splitter': Splitter\r\n};\r\n\r\nObject.keys(webComponents).forEach(function (name) {\r\n\tif (!customElements.get(name)) {\r\n\t\tif ('define' in webComponents[name]) {\r\n\t\t\twebComponents[name].define(name);\r\n\t\t} else {\r\n\t\t\tcustomElements.define(name, webComponents[name]);\r\n\t\t}\r\n\t}\r\n});\r\n\r\nwindow.ArasModules = Object.assign(window.ArasModules, core);\r\n\r\nexport {\r\n\talertSoapError,\r\n\taml,\r\n\tBaseTypeahead,\r\n\tCardTable,\r\n\tClassificationProperty,\r\n\tCompatToolbar,\r\n\tContextMenu,\r\n\tcopyHtmlToBuffer,\r\n\tcopyTextToBuffer,\r\n\tDialog,\r\n\tdropdownButton,\r\n\tfetch,\r\n\tFilterList,\r\n\tForm,\r\n\tGrid,\r\n\tInput,\r\n\tintl,\r\n\tItemProperty,\r\n\tjsonToXml,\r\n\tMaximazableDialog,\r\n\tNav,\r\n\tnotify,\r\n\todataFetch,\r\n\tPagination,\r\n\tsessionSoap as soap,\r\n\tsoap as nativSoap,\r\n\tSOAPError,\r\n\tSvgManager,\r\n\tSyncPromise,\r\n\tToolbar,\r\n\tTreeGrid,\r\n\tutils,\r\n\tvaultUploader as vault,\r\n\txml,\r\n\txmlToJson,\r\n\txmlToODataJson,\r\n\txmlToODataJsonAsCollection,\r\n\txmlToODataJsonByItemType,\r\n\tbunchSoap\r\n};\r\n"],"names":["aml","faultToJSON","xml","_xml$firstChild","_xml$firstChild$first","result","firstChild","isFault","nodeName","toLowerCase","obj","xmlToJson","isCollectRequests","bunchXML","requestsPromises","collect","soap","requestBody","options","method","sessionSoap","promise","Promise","resolve","reject","push","complete","async","resultSoap","join","nodes","selectNodes","forEach","i","parseString","getXml","documentElement","error","vault","_downloadHelper","url","frameId","download","frame","document","getElementById","createElement","id","style","display","body","appendChild","src","xhr","XMLHttpRequest","open","send","asyncCallback","e","target","status","Error","statusText","errorCallback","addEventListener","downloadFile","this","selectFile","previouslyAddedNode","removeChild","inputNode","type","files","click","saveBlob","blob","fileName","link","href","URL","createObjectURL","FileWrapper","constructor","file","isAsync","worker","chunkSize","name","fileItemId","fileSize","size","_file","_isAsync","_state","_sentBytes","_readingPoint","_hashWaiting","_hashes","initialize","offset","Math","min","errorMessage","_formatPacket","endUpload","isAllowedUpload","receiveHash","receivedData","data","getResource","fileId","xxhash","postMessage","to","from","hash","slice","FilesUploader","_credentials","credentials","_serverUrl","serverUrl","_fileWrappers","attempts","progressCallback","progress","_initFileWrappers","doc","fileItems","startsWith","_xxhWorker","Worker","wrappersArray","Array","map","index","foundFileItem","find","fileItem","idx","selectSingleNode","text","getAttribute","splice","_setHeaders","headers","topWnd","TopWindowHelper","getMostTopWindowWithAras","aras","OAuthClient","getAuthorizationHeader","_transactionId","transactionid","Object","keys","header","setRequestHeader","_selectResultNode","response","xmlModule","node","res","responseText","commitTransaction","formData","FormData","append","SOAPAction","catch","responseXML","_encodeRFC5987ValueChars","str","encodeURIComponent","replace","escape","unescape","_searchNotUploadedFile","fileWrapper","_upload","dataObject","indexOf","event","readyState","message","contentRange","dataPromise","getData","indicateProgress","currentFileProgress","getFileProgress","allFilesProgress","state","sentBytes","destroyWorker","terminate","RequestsManager","parallelRequests","filesUploader","array","all","beginTransaction","rollbackTransaction","vaultUploader","assign","vaultUploader$1","promptModule","label","cancelButtonModifier","okButtonModifier","okButtonText","title","defaultValue","required","pattern","dialogClassModifier","cssClassName","promptDialog","Dialog","classList","dialogNode","add","createOkButton","createButtonContext","okBtn","close","input","value","createCancelButton","cancelBtn","checkValidity","disabled","validity","valid","onKeyPress","code","onInput","labelClass","inputClass","wire","bind","contentNode","show","trimSeparators","items","length","lastOfTypeSeparator","filter","item","get","hidden","isSeparator","pop","iconClass","itemClassName","parentClass","focusedClass","expandedClass","disabledClass","arrowedClass","iconedClass","shortcutClass","containerClass","submenuContainerClass","invisibleShortcutClass","arrowClass","hiddenArrowClass","getNextItem","childArray","nextId","Menu","HTMLElement","super","mouseLeaveHandler","newState","focusedItems","expandedItems","focusedItemId","includes","setState","eventHandler","li","closest","stopPropagation","dataset","renderRecursive","roots","focusedItem","iconsRequired","some","element","Boolean","icon","image","checkedRequired","checked","undefined","arrowsRequired","children","shortcutsInfo","reduce","currentShortcut","shortcut","shortcutsRequired","longestShortcut","acc","childItems","isMenu","isExpanded","isFocused","childList","formattedNode","formatter","concat","createVNode","additionalArrowClass","className","arrowNode","iconNode","SvgManager","createInfernoVNode","unshift","props","tabIndex","onMouseEnter","mouseEnterHandler","menuItemContentNodes","menuItem","submenuList","submenuListWrapper","calcSubmenuPosition","cssStyle","role","onclick","onmousedown","onmouseleave","Map","next","render","connectedCallback","initialized","focusoutHandler","keyboardHandler","applyData","blur","itemWithFocus","querySelector","isChildNodeFocused","relatedTarget","contains","resetList","key","currentItemId","parentId","nextItemId","nextState","preventDefault","reverse","nextItems","dispatchEvent","CustomEvent","bubbles","focus","itemId","prevItemId","currentItem","prevItem","parentMenuItem","BORDER_WIDTH","SYNTHETIC_FRAME_PADDING","SCROLLBAR_WIDTH","submenuContainer","isRootMenu","tagName","parentMenuNode","top","bottom","right","left","width","maxHeight","docWidth","clientWidth","docHeight","clientHeight","parentMenuItemRect","getBoundingClientRect","parentMenuRect","availableSpaceToTheTop","availableSpaceToTheBottom","submenuWidth","offsetWidth","submenuHeight","isNotEnoughVerticalSpace","isScrollInSubmenuRequired","borderWidthOfParentMenu","showMenuToTopAlignmentPosition","showMenuToBottomAlignmentPosition","borderOfSubmenuContainer","preventGreedyVerticalExpansion","directionBasedConfig","alignmentSide","alignmentSideOffset","autoSide","preferredMenuDirection","verticalAlignmentConfig","maxAvailableVerticalSpace","stickToBottomCoordinate","isEnoughSpaceForSubmenuBelow","submenuContainerWidth","availableSpaceToTheRight","availableSpaceToTheLeft","horizontalAlignmentSide","stickingConfig","delta","side","isRightLargerThanLeft","horizontalAlignmentConfig","on","callback","handler","elementId","removeEventListener","menu","wrappedMenu","Inferno","OPENED_CLASS_NAME","getDropdownSize","visibility","height","offsetHeight","udpatePositionOfDropdownBoxElement","dropdownPosition","endsWith","updatePositionOfDroprownBox","parentProps","dropdownBox","elmRect","elementBottom","offsetTop","docElement","docSize","parseInt","abs","getSourcePosition","pos","dropdownSize","buttonSize","getOffsetParentProps","container","offsetParent","elementOverflow","getComputedStyle","overflow","Dropdown","HyperHTMLElement","args","blurEventHandler","isDropdownContentBecameFocused","Node","activeElement","closeDropdown","handleDropdownContentClick","handleKeydown","toggleDropdown","mouseDown","recalculateButtonSize","buttonNode","convertEventToDropbox","Element","targetButton","hasAttribute","overflowY","toggle","dispatchCustomEvent","sourcePosition","leftPos","topPos","setAttribute","removeAttribute","evt","cancelable","remove","isContainerClicked","listNode","isParentListNodeClicked","altKey","dropdownButton","lastElementChild","buttonSelector","previousElementSibling","list","minWidth","boxSizing","createMenu","tabs","buttonClass","buttonImage","_updateImage","template","_getTooltipTemplate","hasTooltip","button","holderKeyedName","closeonclick","position","ViewersTabs","Tabs","_unsubscribeOnClick","tooltipSettings","tooltipPosition","selectedMenuItem","created","vertical","useTooltip","_selectMenuItem","lastCheckedItemData","nextCheckedItemData","nextCheckedTab","tabId","tab","has","selectedTab","focusedTab","_item$data","selectTab","switcher","activePaneId","_item$data2","cssClass","image_additional","_getImage","stylesheet","CSSStyleSheet","replaceSync","calendarCSS","calendarClass","switchButtonClass","gridItemClass","secondaryItemClass","weekLength","weeksNumber","monthsInYear","yearsInDecade","MODES","ariaLabels","prev","days","months","years","Calendar","_arrowButtonClick","focusedDate","_getDateObject","_getOffset","month","date","_getDate","year","iso","intl","toIS0Format","_selectDate","isDisabled","mode","selectedDate","Date","isoDate","rangeMode","rangeDate","selectedDateValue","parse","detail","isMonthsMode","newDate","newMode","_changeMode","_switchMode","currentMode","targetMode","_keyboardHandler","processKeyboardEvent","submit","nextFocusedDate","_getNextFocusedDay","_getNextFocusedMonth","_getNextFocusedYear","focusNode","shadowRoot","observedAttributes","attributeChangedCallback","oldValue","newValue","attachShadow","adoptedStyleSheets","hoveredDate","isDateMode","formatOptions","_getButtonModeTitle","switchButtonIconRef","d","fill","viewBox","switchButtonIconNode","switchModeButton","switchToPrevLabel","switchToNextLabel","switchNode","gridItems","_getGridItems","gridClass","daysModifier","isHighlightActive","onmouseover","_highlightRange","grid","onkeydown","root","createFragment","_calculateDates","daysOfWeek","_getLocaleDaysOfWeek","datesOfPreviousMonth","_getDatesOfPreviousMonth","datesOfCurrentMonth","_getDatesOfCurrentMonth","datesOfNextMonth","_getDatesOfNextMonth","datesWithWeeks","_getDatesWithWeeks","_calculateGridData","_calculateMonthsYears","currentDate","itemsCount","decade","trunc","targetYear","isCurrent","_compareDates","_format","_prepareDate","getFullYear","getMonth","getDate","date1","date2","_date1","_date2","_createRange","start","end","UTC","getHours","getMinutes","getSeconds","getMilliseconds","timeZone","Intl","DateTimeFormat","locale","format","additionalFormat","firstDate","firstYear","lastDate","lastYear","current","weekDay","getDay","day","firstDateOfMonth","lastDateOfMonth","_getLastDateOfMonth","dateValue","isSelected","inRange","_isInRange","datesOfCurrentMonthLength","datesOfPreviousMonthLength","daysCount","listedDaysCount","restOfNextDates","notInMonth","monthOffset","firstDayOfWeek","restOfPreviousDates","lastOfPreviousDates","isWeek","firstWeekOfMonth","week","arr","monthClass","gridData","notInMonthClass","weekClass","isCurrentClass","isSelectedClass","inRangeClass","ariaRole","dataValue","weekday","firstDateOfWeek","datesOfWeek","hoveredIso","endRangeDate","dates","minDate","maxDate","max","comparisonResult","setDate","setMonth","setFullYear","january","december","yearDigit","modifier","firstYearInDecade","lastYearInDecade","dropdownMaxHeight","hours","midnightISO","padNumber","number","splitToParts","delimiter","firstPart","substring","secondPart","arabicNumberingSystem","arab","arabext","TimePicker","FilterList","_createHours","validation","timePicker","isoTime","time","_formatTime","hour","_getInputTemplate","attrs","events","onchange","predictedValue","invalid","validate","_convertTimeToISO","_getDropdownHeight","itemHeight","_getItemHeight","totalHeight","count","minutes","seconds","split","dateISO","dateParsed","_validateHour","isTwelveHourFormat","isTwentyFourHour","isTwelveHour","isValid","_validateMinuteAndSecond","_validateDayPeriod","dayPeriod","localeDayPeriods","isHour12","_checkForArabic","_parseTime","minute","second","beforeMidnightPeriod","afterMidnightPeriod","_getTimeParts","_beforeMidnightParts$","_afterMidnightParts$f","beforeMidnight","afterMidnight","beforeMidnightParts","formatToParts","afterMidnightParts","order","part","delimiters","parts","timeParts","splitted","inputValue","localeOptions","resolvedOptions","numberingSystem","replaceAll","inputValidate","_getCurrentInputValue","isInvalid","timePart","isValidHour","isValidMinute","isValidDayPeriod","isValidSecond","getTemplate","wrapper","invalidMessage","icons","calendar","enqueue","values","TOOLBAR_CLASS","TOOLBAR_VERTICAL_CLASS","TOOLBAR_OVERFLOWED_CLASS","TOOLBAR_ITEM_CLASS","TOOLBAR_ITEM_HIDDEN_CLASS","DROPDOWN_CLASS","DROPDOWN_BUTTON_CLASS","DROPDOWN_LIST_CONTAINER_CLASS","DROPDOWN_LIST_CLASS","RIGHT_CONTAINER_CLASS","DIVIDER_CLASS","ICON_CLASS","BUTTON_CLASS","BUTTON_ICON_CLASS","SELECT_CLASS","SELECT_CONTAINER_CLASS","SEPARATOR_CLASS","FORM_CLASS","SINGULAR_CLASS","SINGULAR_CONTAINER_CLASS","SINGULAR_BUTTON_CLASS","DISABLED_MODIFIER","CORPORATE_TIME_CLASS","TEXT_CLASS","IMAGE_CLASS","INPUT_CLASS","INPUT_INVALID_CLASS","ItemConstructorWrapper","attributes","isHidden","itemStyle","flexOrder","defaultTemplates","leftContainerItemsData","leftContainerItems","toolbar","rightContainerItems","rightContainerOrder","isOverflowVisible","isOverflowAllowed","isVertical","isExpandButtonHidden","toolbarOverflowToggleButton","defaultClass","hiddenClass","overflowClass","resourceKey","isFocusNodeInOverflow","focused","isToolbarRole","_toggleToolbarExpandState","onkeyup","ctrlKey","shiftKey","metaKey","overflowClassName","verticalClass","isRightContainerItem","itemNodes","defaultFormatters","createComponentVNode","itemRefCallback","lifecycle","CreateSelectNode","optionNodes","onChange","changeHandler","tooltip_template","selectedIndex","tabindex","onComponentShouldUpdate","lastProps","nextProps","CreateMenu","spinner","onContextMenu","corporateTime","dateNodeId","timeNodeId","describedByAttribute","aria_label","_getItemTabindex","contentNodes","nodeClass","disabledAttribute","_getDisabledAttributeName","toggleButtonClick","set","clickEventType","separator","select","option","selected","selectNode","onComponentDidMount","dom","cursor","parsedValue","singular","textbox","textboxInput","autoComplete","nodeAttributes","validationMessageResource","tooltip_pos","dropdownMenu","createButtonContent","buttonFormatter","buttonCssClass","buttonRenderFunc","buttonContentNodes","noItems","buttonNodeAttributes","isArray","menuPosition","normalizeProps","filterDropdown","buttonClassList","buttonTabIndex","subMenu","subMenuKey","onfocus","firstElementChild","ondropdownclosed","currentTarget","buttonsList","ondropdownopened","dropdown","isDropdownNotShrinked","itemsList","dropdownHeight","itemsListHeight","residualHeight","dropdownSelector","dropdownStyle","itemClickHandler","itemOptions","checkedItemValue","dropdownItemsNodes","itemValue","createTextVNode","htmlSelector","selectedItemValue","selectedItemLabel","itemLabel","optionId","optionid","imageClass","alt","textClass","Toolbar","defineProperty","_leftContainerItems","writable","_rightContainerItems","_renderingPromise","_resizeObserver","ResizeObserver","_templates","datastore","_focusoutHandler","expanded","_resizeHandler","booleanAttributes","_isToolbarRole","_isItemFocusable","static","toolbarFormatters","_initKeyboardHandler","_initOverflowHandlers","parentItemId","_checkedItemClickHandler","window","disconnectedCallback","_classPrivateFieldLooseBase","unobserve","attrName","_keyboardEventHandler","observe","prevItemKey","nextItemKey","_getFocusNode","_getPrevFocusable","_getNextFocusable","_focusItem","targetNode","test","navigator","userAgent","originalDisplay","_getFocusableItems","itemsId","dataIdSelector","parentItem","dataMap","targetNodeIndex","targetItem","groupId","group_id","_overflowRender","_getVnodeProperties","_render","_getLastItemOnFirstRowIndex","_hasItemsInOverflow","finalOptions","then","newContainerItems","rightContainer","eventType","targetItemId","_getIdByDomElement","targetNodeSelector","maximalFirstRowItemOffsetTop","lastItemOnFirstRowIndex","prototype","findIndex","call","childNodes","itemNode","setPropertyTypeIdNode","formNode","propertyName","itemTypeProperty","itemType","propertyTypeNode","propertyTypeId","setText","prepareFormNode","currentItemType","showItemInFrame","formMode","isNew","isEditMode","uiGetForm4ItemEx","uiShowItemInFrameEx","contentWindow","Form","formHeight","html","returnBlockerHelper","attachBlocker","renderPromise","TOOLBAR_LABELED_CLASS","CONTENT_CLASS","CONTAINER_CLASS","DROPDOWN_OPENED_LIST_CONTAINER_CLASS","DATE_CLASS","DISABLED_CLASS","HIDDEN_CLASS","templatesObj","dropdownItems","dropdownNode","DropdownNode","toolbarNodeClass","isToolbarLabeled","itemTemplates","ItemConstructor","forceUpdate","forceUpdateItems","listContainerClass","forceOpenDropdown","needToUpdate","_nodesInfo","onComponentDidUpdate","domNode","nodeInfo","tooltip","_doUpdateNodesInfo","toolbarTemplates","customTemplates","CompatToolbar","templates","detectedForceRender","WeakMap","_dropdownItems","_isToolbarLabeled","_layoutInfo","dropdownButtonWidth","separatorWidth","totalWidth","leftContainerWidth","rightContainerWidth","_init","self","_updateItemsPosition","oldItem","layoutInfo","containers","querySelectorAll","labeled","destroy","parentNode","_trimSeparators","startIndex","lastIndex","startIndexFound","lastIndexFound","isPreRender","filterDropdownItems","dropdownRefCallback","toolbarWidth","widthAvailable","placeItem","nodeWidth","classStructureButtonIcon","ClassificationProperty","_value","showDialogHandler","_onKeyDownHandler","_getButtonTemplate","readonly","buttonAttributes","refs","_getAutocompleteLabel","_findItem","path","findRecurcive","level","lastLevel","hasChildren","_getListTemplate","needPredict","shown","autocomplete","focusedIndex","isLeaf","isExists","searchableBranch","toUpperCase","getChildrenInside","childrenInside","showAll","startCount","commonCount","itemPath","leaf","exist","textEnding","classes","tag","computedFocusedIndex","_onItemClickHandler","maxVisibleItemsCount","_getDropdownTemplate","BaseTypeahead","isAutocomplete","accordionMinHeight","relationshipInitialHeight","Scroller","_mutationObserver","_intersectionObserver","_scrollerTop","_currentStickedElement","_store","_wrappers","Set","_isMaximized","activeIframes","activeIframe","_adjustFrameSize","MutationObserver","mutations","_mutationObserverHandler","subtree","attributeFilter","IntersectionObserver","changes","_intersectionObserverHandler","threshold","_accordionToggleHandler","_resizeAccordion","_scrollHandler","disconnect","relationshipIframes","_collectRelationshipIframes","scrollables","iframe","_loadScrollableElement","_connectResizeObserver","setupScrollableElement","scrollableElement","_grid","view","observer","iframes","mutationRecord","switcherControl","closestAccordion","maximized","relationshipIframe","isInfernoGridIFrame","HTMLIFrameElement","delete","_setupStickyWrapperNode","location","loadHandler","_window","gridContainer","gridHeader","topMargin","accordion","frameElement","accordionOffset","accordionHead","accordionContent","paddingTop","scrollerHeight","scroller","paginationOffset","pagination","marginTop","gridOuterHeight","headerHeight","scrollbarWidth","newFrameHeight","_adjustGridContainerSize","gridFrameWindow","ownerDocument","defaultView","_resizeGridAndFrame","gridScroller","gridFrame","_handleResize","targets","domElement","targetOwnerFrame","targetOwnerFrameStyle","scrollerMark","_calculateStickyHeight","scrollableElements","parentElement","tollbars","gridWindow","isSticky","accordionWrapperNode","replaceChild","sticky","collapsed","scrollHeight","change","isIntersecting","scrollTop","currentWrapper","details","itemForm","_resizeItemForm","relationshipSwitcher","_resizeRelationship","_maximizeAccordion","_restoreAccordion","stickyElement","isCollapsed","expand","form","SWITCHER_CLASS","SWITCHER_PANE_CLASS","ACTIVE_PANE_CLASS","SWITCHER_PANE_ID_ATTRIBUTE","Switcher","paneElement","paneId","isActivePane","images","maxResults","more","pageSize","paginationControls","currentPageNumber","paginationControlsIds","paginationTemplates","pageStatusNode","_prevPageSize","totalResults","totalPages","ceil","paginationStatusLabel","classNode","totalResultStatusNode","resources","pagination_prev_button","pagination_next_button","pagination_page_size","pagination_more_button","pagination_max_results","pagination_max_reached","Pagination","_itemsCount","_prevMaxResults","_initEventListeners","_initControls","_initLabelsForControls","renderingOptions","updateControlsState","_setDataItemProperties","properties","getItem","setItemEnabled","isEnabled","showSpinner","showMoreButton","getTotalResults","updateControlsStateByDefault","isValidPaginationInputs","itemsQuantity","isFirstPage","isEmptyResult","isLastPage","isMaxReached","isEnabledPrevButton","isEnabledMoreButton","isEnabledNextButton","_isPositiveInteger","moreButton","totalResultValue","String","_setValueInItemWithPositiveInt","_getValueFromItemWithPositiveInt","statusNodeId","pageNumberControl","control","resource","parsedInt","isNaN","_clickNextButton","_clickPrevButton","_clickMoreButton","HTMLInputElement","extendFormatters","rowSettings","sizeParam","offsetParam","positionCoordinateParam","ghostMoveParam","mouseEventCoordinateParam","minSizeParam","flexSizeParam","gridTemplateParam","gridSplitterStartParam","columnSettings","DEFAULT_BLOCK_MIN_SIZE","DRAGGABLE_CLASS_NAME","CURSOR_OFFSET","getStyleProperty","prop","inlineStyle","getPropertyValue","hasFlexGrow","Number","getElementMinSize","settings","getFixedSibling","prevSiblingGrow","nextSiblingGrow","nextElementSibling","getCoordinatesSplitterExtremePositions","splitterCoordinate","minPrevSize","minNextSize","prevElementSize","nextElementSize","minExtremePosition","maxExtremePosition","transformForMinExtremePosition","transformForMaxExtremePosition","Splitter","_fixedSibling","_prevIsFixed","_minPrevSize","_minNextSize","_minFixedSize","_areBothSiblingsFixed","_validate","displayType","supportedDisplayTypes","direction","flexible","_initializeSettings","isColumn","_setSiblingsParams","child","param","_initialize","ghost","splitterBoundingClientRect","round","extremePositionsCoordinates","mouseMoveHandler","mouseEventCoordinate","transform","isMovedToMinExtremePosition","mouseUpHandler","sizeOffset","isCssGrid","oldPrevSize","oldNextSize","combinedSize","newPrevSize","splitterSize","prevPercent","prevSize","nextSize","newNextSize","getElementNewSize","oldElementSize","minSize","newSize","prevSiblingNewSize","nextSiblingNewSize","parseFloat","cellClassName","checkboxClassName","cardTableFormatters","boolean","headId","rowId","applyChange","changeEvent","cardTableClassName","cardClassName","columnTypes","draggable","cardTableCSS","cardCSS","css","CardTable","_toggleRangeSelection","_toggleRangeSelection2","_toggleSelection","_toggleSelection2","_toggleExpanding","_toggleExpanding2","_parseCellTemplate","_parseCellTemplate2","_insertOnPosition","_insertOnPosition2","_isExpanded","_isExpanded2","_hasChildren","_hasChildren2","_getRowData","_getRowData2","_getParent","_getParent2","_getExpandButton","_getExpandButton2","_getRowClasses","_getRowClasses2","_getDragTemplate","_getDragTemplate2","_getCellTemplate","_getCellTemplate2","_getHeadCellClass","_getHeadCellClass2","_getButtonState","_getButtonState2","_drop","_drop2","_dragOver","_dragOver2","_dragStart","_dragStart2","_click","_click2","_checkForScroll","_checkForScroll2","_calculateCursorPosition","_calculateCursorPosition2","_buildRows","_buildRows2","_buildHead","_buildHead2","_applyChange","_applyChange2","indexHead","indexRows","head","rows","selectedRows","buttonStylesheet","checkboxStylesheet","iconStylesheet","linkStylesheet","rowItem","rowKey","getCellType","headCell","columnType","cellType","headNode","infernoRender","row","headCells","cell","dragOn","rowShrunk","headClassName","rowsNodes","cells","cellTemplate","color","borderStyle","rowNodeAttributes","expandButton","rowNode","dragEvents","ondragstart","ondragover","ondrop","contentNodeAttributes","draggedItemId","clientY","overItem","draggedItemParent","overItemId","overItemParent","sameParent","sameItem","cardTop","topAreaBounding","above","hasScroll","selectRowEvent","draggedItem","dataTransfer","setData","draggedId","cursorPosition","cellClassModifier","parsedTemplate","rowClasses","isRowSelected","iconClassList","parent","_row$children","rowIndex","every","childId","overNode","draggedChildren","draggedIndex","splicedCount","insertedIds","overIndex","overChildren","shift","changedRows","isString","isObject","isVNode","selectedId","lastSelectedId","lastSelectedIndex","leftBound","rightBound","range","unselectedRows","selectedRest","selectedRowId","customElements","define","inputStylesheet","inputCSS","Input","_validate2","_getSlotElementsCount","_getSlotElementsCount2","_getInputClass","_getInputClass2","onslotchange","slottedElements","assignedElements","slotItem","ariaHidden","maxLength","attrValue","ariaDisabled","ariaPlaceholder","ariaRequired","_this$shadowRoot$quer","onblur","oninput","trailing","placeholder","slots","trailingElementsCount","slot","formAssociated","spinnerStylesheet","spinnerCSS","Spinner","shadow","active","hide","gridFormatters","extend","dataTypeFormatters","formatters","compatToolbarFormatters","compatToolbarTemplates","ItemProperty","Nav","NavTemplates","navTemplates","GridActions","Keyboard","GridTemplates","gridTemplates","HeadWrap","RowsWrap","GridView","Grid","editors","gridEditors","sorters","extendGridSorters","search","GridSearch","TreeGrid","TreeGridActions","TreeGridTemplates","treeGridTemplates","TreeGridView","alert","alertModule","confirm","confirmModule","prompt","ArasModules","core","copyTextToBuffer","copyHtmlToBuffer","nativSoap","SOAPError","alertSoapError","jsonToXml","MaximazableDialog","SyncPromise","utils","ContextMenu","notify","xmlToODataJson","xmlToODataJsonAsCollection","xmlToODataJsonByItemType","fetch","odataFetch","bunchSoap","webComponents","Sidebar","Accordion"],"mappings":"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"}