{"version":3,"file":"4759.chunk.2417594af020c5bbc485.js","mappings":"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","sources":["webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/util/LiveAnnouncer.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-body/table-body.styles.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-body/table-body.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-react/components/TableBody/TableBody.tsx","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-header/table-header.styles.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-header/table-header.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-react/components/TableHeader/TableHeader.tsx","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/icon/icons/arrow-down-alt.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/icon/icons/arrow-up-alt.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-header-cell/table-header-cell.styles.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-header-cell/table-header-cell.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-react/components/TableHeaderCell/TableHeaderCell.tsx","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/icon/icons/delta-down.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-object/table-object.styles.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-web-components/components/table-object/table-object.ts","webpack://CATSAS/./node_modules/blocks-nextjs/blocks-react/components/TableObject/TableObject.tsx"],"sourcesContent":["const LIVEREGION_TIMEOUT_DELAY = 7000;\nlet liveAnnouncer = null;\n/**\n * Announces the message using screen reader technology.\n */\nexport function announce(message, assertiveness = 'assertive', timeout = LIVEREGION_TIMEOUT_DELAY) {\n if (!liveAnnouncer) {\n liveAnnouncer = new LiveAnnouncer();\n }\n liveAnnouncer.announce(message, assertiveness, timeout);\n}\n/**\n * Stops all queued announcements.\n */\nexport function clearAnnouncer(assertiveness) {\n if (liveAnnouncer) {\n liveAnnouncer.clear(assertiveness);\n }\n}\n/**\n * Removes the announcer from the DOM.\n */\nexport function destroyAnnouncer() {\n if (liveAnnouncer) {\n liveAnnouncer.destroy();\n liveAnnouncer = null;\n }\n}\nclass LiveAnnouncer {\n constructor() {\n this.node = document.createElement('div');\n this.node.dataset.liveAnnouncer = 'true';\n Object.assign(this.node.style, {\n border: 0,\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n width: '1px',\n whiteSpace: 'nowrap'\n });\n this.assertiveLog = this.createLog('assertive');\n this.node.appendChild(this.assertiveLog);\n this.politeLog = this.createLog('polite');\n this.node.appendChild(this.politeLog);\n document.body.prepend(this.node);\n }\n createLog(ariaLive) {\n let node = document.createElement('div');\n node.setAttribute('role', 'log');\n node.setAttribute('aria-live', ariaLive);\n node.setAttribute('aria-relevant', 'additions');\n return node;\n }\n destroy() {\n if (!this.node) {\n return;\n }\n document.body.removeChild(this.node);\n this.node = null;\n }\n announce(message, assertiveness = 'assertive', timeout = LIVEREGION_TIMEOUT_DELAY) {\n if (!this.node) {\n return;\n }\n let node = document.createElement('div');\n node.textContent = message;\n if (assertiveness === 'assertive') {\n this.assertiveLog.appendChild(node);\n }\n else {\n this.politeLog.appendChild(node);\n }\n if (message !== '') {\n setTimeout(() => {\n node.remove();\n }, timeout);\n }\n }\n clear(assertiveness) {\n if (!this.node) {\n return;\n }\n if (!assertiveness || assertiveness === 'assertive') {\n this.assertiveLog.innerHTML = '';\n }\n if (!assertiveness || assertiveness === 'polite') {\n this.politeLog.innerHTML = '';\n }\n }\n}\n","import { css } from 'lit';\nexport default css ` \n @charset \"UTF-8\";\n/* ------------------------------------*\\\n #RESET\n\\*------------------------------------ */\n/**\n * Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/\n */\n*,\n::slotted(*),\n*:before,\n*:after {\n box-sizing: border-box;\n}\n\n:focus-visible {\n outline-color: var(--cat-theme-color-focus-ring);\n}\n\n/* ------------------------------------*\\\n    #BREAKPOINT VARIABLES\n\\*------------------------------------ */\n:root,\n:host {\n --size-base-unit: 0.5rem;\n}\n\n/**\n * RTL support for values logical properties can't automatically adjust for\n * 1) Percentage based horizontal translate values need to be flipped\n * 2) Background gradients using \"to right\" or \"to left\" need to be switched to using deg values\n * 3) Background Position From is used for reversing animation from right to left at 0%\n * 4) Background Position To is used for reversing animation from right to left at 100%\n * 5) Rotate Icon to 180deg for nav button\n * 6) Transformation size for badge left positions\n * 7) Transformation size for badge right positions\n * 8 to 18) Padding values for Input Field Type Tel\n */\n[dir=rtl] {\n --rtlTranslateX: 50%; /* 1 */\n --rtlGradientToRight: 270deg; /* 2 */\n --rtlBackgroundPositionFrom: -135%; /* 3 */\n --rtlBackgroundPositionTo: 0%; /* 4 */\n --rtlRotate180: 180deg; /* 5 */\n --rtlRotate135: 135deg;\n --rtlBadgeLeft: -1.5; /* 6 */\n --rtlBadgeRight: 1.5; /* 7 */\n --rtlTelTypeInputFieldPaddingStart: calc(var(--size-base-unit) * 5); /* 8 */\n --rtlTelTypeInputFieldPaddingEnd: calc(var(--size-base-unit) * 2); /* 9 */\n --rtlTelTypeInputFieldMedPaddingStart: calc(var(--size-base-unit) * 4.5); /* 10 */\n --rtlTelTypeInputFieldMedPaddingEnd: calc(var(--size-base-unit) * 1.5); /* 11 */\n --rtlTelTypeInputFieldSmPaddingStart: calc(var(--size-base-unit) * 4); /* 12 */\n --rtlTelTypeInputFieldSmPaddingEnd: calc(var(--size-base-unit) * 1); /* 13 */\n --rtlTelTypeInputFieldCharBeforePaddingEnd: calc(var(--size-base-unit) * 3.75); /* 14 */\n --rtlTelTypeInputFieldCharAfterPaddingStart: calc(var(--size-base-unit) * 6); /* 15 */\n --rtlTelTypeInputFieldCharAfterErrPaddingStart: calc(var(--size-base-unit) * 9); /* 16 */\n --rtlTelTypeInputFieldIconAfterErrPaddingStart: calc(var(--size-base-unit) * 8); /* 17 */\n --rtlTelTypeInputFieldIconCharAfterErrPaddingStart: calc(var(--size-base-unit) * 12); /* 18 */\n --rtlDisplayNone: none;\n --rtlDisplayBlock: block;\n --rtlDrawerRightTranslateX: -100%;\n --rtlDrawerLeftTranslateX: 100%;\n}\n\n/**\n * Visible focus outline for elements on a light background\n */\n/**\n * Visible focus outline for elements on a dark background\n */\n/**\n * Invisible focus outline for elements that need a more visible\n * focus state for high-contrast mode\n */\n/**\n * Visually hidden from display\n */\n/**\n * style for text ellipsis\n */\n/**\n * Popover attribute has default styling which comes from UA stylesheets which will be overridden here.\n */\n/* ------------------------------------*\\\n #TYPOGRAPHY APPLICATIONS\n\\*------------------------------------ */ /* ------------------------------------*\\\n #TABLE-BODY\n\\*------------------------------------ */\n/**\n * Table body host (cat-table-body)\n */\n:host {\n display: contents;\n}\n\n/**\n * Table body\n * 1) The tbody of the table\n */\n.cat-c-table-body {\n --cat-table-row-align-items: flex-start;\n position: relative;\n}\n\n/**\n* set background for even numbered rows for ZebraStripes variant.\n*/\n::slotted(:nth-child(even of cat-table-row:not([isexpandablechild], [isexpandablenestedchild], [isSelfFoldableChild]))) {\n --cat-c-table-row-background: var(--cat-c-table-body-even-background-pass-down);\n}\n\n/**\n* set background for odd numbered rows for ZebraStripes variant.\n*/\n::slotted(:nth-child(odd of cat-table-row:not([isexpandablechild], [isexpandablenestedchild], [isSelfFoldableChild]))) {\n --cat-c-table-row-background: var(--cat-c-table-body-odd-background-pass-down);\n}\n`;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { KEYS } from '../../util/event-keys';\nimport { announce } from '../../util/LiveAnnouncer';\nimport { BlocksElement } from '../BlocksElement';\nimport styles from './table-body.styles';\n/**\n * @slot default - The table body content\n * @csspart base - The component's base wrapper.\n * @csspart part-default - The component's default slot.\n */\nexport class BlocksTableBody extends BlocksElement {\n static { this.styles = styles; }\n /**\n * Query all the rows in the cat table\n */\n get _catTableRows() {\n return Array.from(this.children);\n }\n constructor() {\n super();\n /**\n * Delay for announcement like \"please enter space to drop\"\n */\n this.dropAnnouncementDelay = 3000;\n /**\n * Text to announce when a row is dragged\n */\n this.rowDraggedText = 'Row dragged';\n /**\n * Text to announce when a row is dropped\n */\n this.rowDroppedText = 'Row dropped';\n /**\n * Text template to announce when a row is to be inserted between two specified rows.\n * Specify a template such as \"Insert between row {prevRow} and {nextRow}\". The placeholders will be\n * replaced with actual row numbers during screen reader announcements.\n */\n this.insertBetweenText = 'Insert between row {prevRow} and {nextRow}';\n /**\n * Text template to announce when a row is to be inserted after first row.\n * Specify a template such as \"Insert before row {nextRow}\". The placeholders will be\n * replaced with actual row numbers during screen reader announcements.\n */\n this.insertBeforeText = 'Insert before row {nextRow}';\n /**\n * Text template to announce when a row is to be inserted before last row.\n * Specify a template such as \"Insert after row {prevRow}\". The placeholders will be\n * replaced with actual row numbers during screen reader announcements.\n */\n this.insertAfterText = 'Insert after row {prevRow}';\n /**\n * Text to announce prompting the user to press space or enter to drop the row\n */\n this.clickToDropText = 'press enter/space to drop the row';\n this.isDraggingInProgress = false;\n this.arrowDirection = null;\n this.timeoutId = null;\n this.dragRow = null;\n this.handleDragStart = (e) => {\n const { dragRow } = e.detail;\n this.isDraggingInProgress = true;\n this.dragRow = dragRow;\n // announces row dragged text\n this.dragRow.dragAnnouncementText = this.rowDraggedText;\n // announces in between rows as well after a slight delay\n setTimeout(() => {\n this.announce(dragRow);\n }, 300);\n };\n this.handleDragEnd = async (e) => {\n e.preventDefault();\n const target = e.target;\n // since start and end are same element\n if (target.tagName === 'CAT-TABLE-CELL') {\n return;\n }\n this.dispatch({\n eventName: 'bl-keyboard-drag-end',\n detailObj: { row: target, direction: this.arrowDirection }\n });\n this.timeoutId = null;\n this.isDraggingInProgress = false;\n this.arrowDirection = null;\n announce(this.rowDroppedText);\n await this.updateComplete;\n setTimeout(() => {\n const rowElement = target?.shadowRoot?.querySelector('.cat-c-table-row');\n const rowNumber = Number(rowElement.getAttribute('data-row'));\n // In angular tab index is getting reset on table body rerendering. Hence picking row with index value.\n const targetRow = this._catTableRows[rowNumber - 1];\n const targetElement = targetRow?.shadowRoot?.querySelector('.cat-c-table-row');\n targetElement?.setAttribute('tabindex', '-1');\n targetElement?.focus();\n }, 100);\n };\n this.handleDragReset = () => {\n // if focus lost during the drag process then reset required\n if (this.isDraggingInProgress) {\n this.dispatch({\n eventName: 'bl-keyboard-drag-reset'\n });\n }\n };\n this.getDeepActiveElement = () => {\n let activeElement = document.activeElement;\n while (activeElement?.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement || activeElement;\n }\n return activeElement;\n };\n this.makeAnnouncement = (e) => {\n e.preventDefault();\n let currentActiveRow = null;\n let currentIndex;\n const currentActiveElement = this.getDeepActiveElement();\n const currentActiveRowNode = currentActiveElement?.getRootNode();\n if (currentActiveRowNode instanceof ShadowRoot) {\n currentActiveRow = currentActiveRowNode.host;\n }\n const children = Array.from(this.children);\n if (currentActiveRow) {\n currentIndex = children.indexOf(currentActiveRow);\n if (e.key === KEYS.DOWN_ARROW && currentIndex < children.length - 1) {\n this.arrowDirection = 'after';\n const row = children[currentIndex + 1];\n this.setFocusAndAnnounce(row);\n }\n else if (e.key === KEYS.UP_ARROW && currentIndex > 0) {\n this.arrowDirection = 'before';\n const row = children[currentIndex - 1];\n this.setFocusAndAnnounce(row);\n }\n }\n };\n this.handleOnEscape = () => {\n const currentActiveElement = document?.activeElement?.shadowRoot?.activeElement;\n const firstTablecell = currentActiveElement.children[0];\n const btn = firstTablecell.shadowRoot?.querySelector('.cat-c-table-cell__draggable-button');\n btn?.focus();\n this.dispatch({\n eventName: 'bl-keyboard-drag-reset'\n });\n this.isDraggingInProgress = false;\n };\n this.handleKeyDown = (e) => {\n if (this.isDraggingInProgress && (e.key === KEYS.ENTER || e.key === KEYS.SPACE)) {\n this.handleDragEnd(e);\n }\n if (this.isDraggingInProgress) {\n this.makeAnnouncement(e);\n }\n if (this.isDraggingInProgress && e.key === KEYS.ESCAPE) {\n this.handleOnEscape();\n }\n };\n this.getRowNumber = (row) => {\n if (row) {\n const rowElement = row?.shadowRoot?.querySelector('.cat-c-table-row');\n const rowNumberByIndex = this._catTableRows.indexOf(row) + 1;\n return rowElement.getAttribute('data-row') ?? rowNumberByIndex;\n }\n return '';\n };\n this.setFocusAndAnnounce = (row) => {\n const rowElement = row?.shadowRoot?.querySelector('.cat-c-table-row');\n this.announce(row);\n rowElement.setAttribute('tabindex', '-1');\n setTimeout(() => {\n rowElement?.focus();\n }, 0);\n };\n this.updateRowPositions = () => {\n const rows = Array.from(this.children);\n rows.forEach((row, index) => {\n const rowElement = row?.shadowRoot?.querySelector('.cat-c-table-row');\n if (rowElement) {\n rowElement.setAttribute('data-row', `${index + 1}`);\n }\n });\n };\n this.announce = (row, text = '') => {\n let announcementText = text;\n if (this._catTableRows) {\n const firsRow = this._catTableRows[0];\n const lastRow = this._catTableRows[this._catTableRows.length - 1];\n const prevRow = row.previousElementSibling;\n const nextRow = row.nextElementSibling;\n const prevRowNumber = this.getRowNumber(prevRow);\n const nextRowNumber = this.getRowNumber(nextRow);\n if (row.isEqualNode(firsRow)) {\n announcementText = this.insertBeforeText.replace('{nextRow}', nextRowNumber.toString());\n }\n else if (row.isEqualNode(lastRow)) {\n announcementText = this.insertAfterText.replace('{prevRow}', prevRowNumber.toString());\n }\n else {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n announcementText = this.insertBetweenText.replace('{prevRow}', prevRowNumber.toString()).replace('{nextRow}', nextRowNumber.toString());\n // announces after delay\n this.timeoutId = setTimeout(() => {\n if (this.isDraggingInProgress) {\n row.dragAnnouncementText = this.clickToDropText;\n }\n }, this.dropAnnouncementDelay);\n }\n }\n row.dragAnnouncementText = announcementText;\n };\n this.addEventListener('bl-keyboard-drag-start', this.handleDragStart);\n }\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('mousedown', this.handleDragReset);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('mousedown', this.handleDragReset);\n }\n firstUpdated() {\n // announce earlier to create aria live region placeholder\n announce('');\n this.updateRowPositions();\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-table-body', {});\n return html `\n
\n {\n this.updateRowPositions();\n }}\n part=\"part-default\"\n >\n
\n `;\n }\n}\n__decorate([\n property({ type: Number })\n], BlocksTableBody.prototype, \"dropAnnouncementDelay\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"rowDraggedText\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"rowDroppedText\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"insertBetweenText\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"insertBeforeText\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"insertAfterText\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableBody.prototype, \"clickToDropText\", void 0);\nif (customElements.get('cat-table-body') === undefined) {\n customElements.define('cat-table-body', BlocksTableBody);\n}\n","import { BlocksTableBody } from 'blocks-nextjs/blocks-web-components/components/table-body/table-body';\nimport React from 'react';\nimport { createComponent } from '../CustomWrapper/CustomWrapper';\nexport const CatTableBody = createComponent({ react: React, tagName: 'cat-table-body', elementClass: BlocksTableBody });\n","import { css } from 'lit';\nexport default css ` \n @charset \"UTF-8\";\n/* ------------------------------------*\\\n #RESET\n\\*------------------------------------ */\n/**\n * Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/\n */\n*,\n::slotted(*),\n*:before,\n*:after {\n box-sizing: border-box;\n}\n\n:focus-visible {\n outline-color: var(--cat-theme-color-focus-ring);\n}\n\n/* ------------------------------------*\\\n    #BREAKPOINT VARIABLES\n\\*------------------------------------ */\n:root,\n:host {\n --size-base-unit: 0.5rem;\n}\n\n/**\n * RTL support for values logical properties can't automatically adjust for\n * 1) Percentage based horizontal translate values need to be flipped\n * 2) Background gradients using \"to right\" or \"to left\" need to be switched to using deg values\n * 3) Background Position From is used for reversing animation from right to left at 0%\n * 4) Background Position To is used for reversing animation from right to left at 100%\n * 5) Rotate Icon to 180deg for nav button\n * 6) Transformation size for badge left positions\n * 7) Transformation size for badge right positions\n * 8 to 18) Padding values for Input Field Type Tel\n */\n[dir=rtl] {\n --rtlTranslateX: 50%; /* 1 */\n --rtlGradientToRight: 270deg; /* 2 */\n --rtlBackgroundPositionFrom: -135%; /* 3 */\n --rtlBackgroundPositionTo: 0%; /* 4 */\n --rtlRotate180: 180deg; /* 5 */\n --rtlRotate135: 135deg;\n --rtlBadgeLeft: -1.5; /* 6 */\n --rtlBadgeRight: 1.5; /* 7 */\n --rtlTelTypeInputFieldPaddingStart: calc(var(--size-base-unit) * 5); /* 8 */\n --rtlTelTypeInputFieldPaddingEnd: calc(var(--size-base-unit) * 2); /* 9 */\n --rtlTelTypeInputFieldMedPaddingStart: calc(var(--size-base-unit) * 4.5); /* 10 */\n --rtlTelTypeInputFieldMedPaddingEnd: calc(var(--size-base-unit) * 1.5); /* 11 */\n --rtlTelTypeInputFieldSmPaddingStart: calc(var(--size-base-unit) * 4); /* 12 */\n --rtlTelTypeInputFieldSmPaddingEnd: calc(var(--size-base-unit) * 1); /* 13 */\n --rtlTelTypeInputFieldCharBeforePaddingEnd: calc(var(--size-base-unit) * 3.75); /* 14 */\n --rtlTelTypeInputFieldCharAfterPaddingStart: calc(var(--size-base-unit) * 6); /* 15 */\n --rtlTelTypeInputFieldCharAfterErrPaddingStart: calc(var(--size-base-unit) * 9); /* 16 */\n --rtlTelTypeInputFieldIconAfterErrPaddingStart: calc(var(--size-base-unit) * 8); /* 17 */\n --rtlTelTypeInputFieldIconCharAfterErrPaddingStart: calc(var(--size-base-unit) * 12); /* 18 */\n --rtlDisplayNone: none;\n --rtlDisplayBlock: block;\n --rtlDrawerRightTranslateX: -100%;\n --rtlDrawerLeftTranslateX: 100%;\n}\n\n/**\n * Visible focus outline for elements on a light background\n */\n/**\n * Visible focus outline for elements on a dark background\n */\n/**\n * Invisible focus outline for elements that need a more visible\n * focus state for high-contrast mode\n */\n/**\n * Visually hidden from display\n */\n/**\n * style for text ellipsis\n */\n/**\n * Popover attribute has default styling which comes from UA stylesheets which will be overridden here.\n */\n/* ------------------------------------*\\\n #TYPOGRAPHY APPLICATIONS\n\\*------------------------------------ */ /* ------------------------------------*\\\n #TABLE-HEADER\n\\*------------------------------------ */\n/**\n * Table header host (cat-table-header)\n */\n:host {\n display: contents;\n}\n\n/**\n * Table header\n * 1) The thead of the table\n */\n.cat-c-table-header {\n position: relative;\n}\n\n/**\n * Table header frozen\n * 1) If frozen is true, then make the table header sticky\n */\n.cat-c-table-header--frozen {\n position: sticky;\n inset-block-start: 0;\n inset-inline-start: 0;\n background-color: var(--cat-theme-color-background-default);\n z-index: var(--cat-z-index-300);\n}\n`;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { BlocksElement } from '../BlocksElement';\nimport styles from './table-header.styles';\n/**\n * @slot default - The table header content\n * @csspart base - The component's base wrapper.\n * @csspart part-default - The component's default slot.\n */\nexport class BlocksTableHeader extends BlocksElement {\n static { this.styles = styles; }\n render() {\n const componentClassName = this.componentClassNames('cat-c-table-header', {\n 'cat-c-table-header--frozen': this.isFrozen === true\n });\n return html `
`;\n }\n}\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeader.prototype, \"isFrozen\", void 0);\nif (customElements.get('cat-table-header') === undefined) {\n customElements.define('cat-table-header', BlocksTableHeader);\n}\n","import { BlocksTableHeader } from 'blocks-nextjs/blocks-web-components/components/table-header/table-header';\nimport React from 'react';\nimport { createComponent } from '../CustomWrapper/CustomWrapper';\nexport const CatTableHeader = createComponent({ react: React, tagName: 'cat-table-header', elementClass: BlocksTableHeader });\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { BlocksElement } from '../../BlocksElement';\nimport styles from '../icon.styles';\n/**\n * ArrowDownAlt component\n * @csspart base- The component's base wrapper\n */\nexport class BlocksIconArrowDownAlt extends BlocksElement {\n static { this.styles = styles; }\n connectedCallback() {\n super.connectedCallback();\n this.classList.add('cat-icon');\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-icon', {\n 'cat-c-icon--sm': this.size === 'sm',\n 'cat-c-icon--lg': this.size === 'lg',\n 'cat-c-icon--xl': this.size === 'xl',\n 'cat-c-icon--content-strong': this.color === 'content-strong',\n 'cat-c-icon--knockout': this.color === 'knockout',\n 'cat-c-icon--knockout-brand': this.color === 'knockout-brand',\n 'cat-c-icon--information': this.color === 'information',\n 'cat-c-icon--success': this.color === 'success',\n 'cat-c-icon--warning': this.color === 'warning',\n 'cat-c-icon--error': this.color === 'error'\n });\n return html `\n \n \n \n \n \n `;\n }\n}\n__decorate([\n property({ type: String })\n], BlocksIconArrowDownAlt.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconArrowDownAlt.prototype, \"iconTitle\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconArrowDownAlt.prototype, \"size\", void 0);\nif (customElements.get('cat-icon-arrow-down-alt') === undefined) {\n customElements.define('cat-icon-arrow-down-alt', BlocksIconArrowDownAlt);\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { BlocksElement } from '../../BlocksElement';\nimport styles from '../icon.styles';\n/**\n * ArrowUpAlt component\n * @csspart base- The component's base wrapper\n */\nexport class BlocksIconArrowUpAlt extends BlocksElement {\n static { this.styles = styles; }\n connectedCallback() {\n super.connectedCallback();\n this.classList.add('cat-icon');\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-icon', {\n 'cat-c-icon--sm': this.size === 'sm',\n 'cat-c-icon--lg': this.size === 'lg',\n 'cat-c-icon--xl': this.size === 'xl',\n 'cat-c-icon--content-strong': this.color === 'content-strong',\n 'cat-c-icon--knockout': this.color === 'knockout',\n 'cat-c-icon--knockout-brand': this.color === 'knockout-brand',\n 'cat-c-icon--information': this.color === 'information',\n 'cat-c-icon--success': this.color === 'success',\n 'cat-c-icon--warning': this.color === 'warning',\n 'cat-c-icon--error': this.color === 'error'\n });\n return html `\n \n \n \n \n \n `;\n }\n}\n__decorate([\n property({ type: String })\n], BlocksIconArrowUpAlt.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconArrowUpAlt.prototype, \"iconTitle\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconArrowUpAlt.prototype, \"size\", void 0);\nif (customElements.get('cat-icon-arrow-up-alt') === undefined) {\n customElements.define('cat-icon-arrow-up-alt', BlocksIconArrowUpAlt);\n}\n","import { css } from 'lit';\nexport default css ` \n @charset \"UTF-8\";\n/* ------------------------------------*\\\n #RESET\n\\*------------------------------------ */\n/**\n * Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/\n */\n*,\n::slotted(*),\n*:before,\n*:after {\n box-sizing: border-box;\n}\n\n:focus-visible {\n outline-color: var(--cat-theme-color-focus-ring);\n}\n\n/* ------------------------------------*\\\n    #BREAKPOINT VARIABLES\n\\*------------------------------------ */\n:root,\n:host {\n --size-base-unit: 0.5rem;\n}\n\n/**\n * RTL support for values logical properties can't automatically adjust for\n * 1) Percentage based horizontal translate values need to be flipped\n * 2) Background gradients using \"to right\" or \"to left\" need to be switched to using deg values\n * 3) Background Position From is used for reversing animation from right to left at 0%\n * 4) Background Position To is used for reversing animation from right to left at 100%\n * 5) Rotate Icon to 180deg for nav button\n * 6) Transformation size for badge left positions\n * 7) Transformation size for badge right positions\n * 8 to 18) Padding values for Input Field Type Tel\n */\n[dir=rtl] {\n --rtlTranslateX: 50%; /* 1 */\n --rtlGradientToRight: 270deg; /* 2 */\n --rtlBackgroundPositionFrom: -135%; /* 3 */\n --rtlBackgroundPositionTo: 0%; /* 4 */\n --rtlRotate180: 180deg; /* 5 */\n --rtlRotate135: 135deg;\n --rtlBadgeLeft: -1.5; /* 6 */\n --rtlBadgeRight: 1.5; /* 7 */\n --rtlTelTypeInputFieldPaddingStart: calc(var(--size-base-unit) * 5); /* 8 */\n --rtlTelTypeInputFieldPaddingEnd: calc(var(--size-base-unit) * 2); /* 9 */\n --rtlTelTypeInputFieldMedPaddingStart: calc(var(--size-base-unit) * 4.5); /* 10 */\n --rtlTelTypeInputFieldMedPaddingEnd: calc(var(--size-base-unit) * 1.5); /* 11 */\n --rtlTelTypeInputFieldSmPaddingStart: calc(var(--size-base-unit) * 4); /* 12 */\n --rtlTelTypeInputFieldSmPaddingEnd: calc(var(--size-base-unit) * 1); /* 13 */\n --rtlTelTypeInputFieldCharBeforePaddingEnd: calc(var(--size-base-unit) * 3.75); /* 14 */\n --rtlTelTypeInputFieldCharAfterPaddingStart: calc(var(--size-base-unit) * 6); /* 15 */\n --rtlTelTypeInputFieldCharAfterErrPaddingStart: calc(var(--size-base-unit) * 9); /* 16 */\n --rtlTelTypeInputFieldIconAfterErrPaddingStart: calc(var(--size-base-unit) * 8); /* 17 */\n --rtlTelTypeInputFieldIconCharAfterErrPaddingStart: calc(var(--size-base-unit) * 12); /* 18 */\n --rtlDisplayNone: none;\n --rtlDisplayBlock: block;\n --rtlDrawerRightTranslateX: -100%;\n --rtlDrawerLeftTranslateX: 100%;\n}\n\n/**\n * Visible focus outline for elements on a light background\n */\n/**\n * Visible focus outline for elements on a dark background\n */\n/**\n * Invisible focus outline for elements that need a more visible\n * focus state for high-contrast mode\n */\n/**\n * Visually hidden from display\n */\n/**\n * style for text ellipsis\n */\n/**\n * Popover attribute has default styling which comes from UA stylesheets which will be overridden here.\n */\n/* ------------------------------------*\\\n #TYPOGRAPHY APPLICATIONS\n\\*------------------------------------ */ /* ------------------------------------*\\\n #TABLE-HEADER-CELL\n\\*------------------------------------ */\n:host {\n display: contents;\n}\n\n/**\n * Table header cell\n * 1) The main table header cell (th) within the table header and row\n */\n.cat-c-table-header-cell {\n font-family: var(--cat-theme-typography-label-font-family);\n font-weight: var(--cat-theme-typography-label-font-weight);\n font-size: var(--cat-theme-typography-label-font-size);\n line-height: var(--cat-theme-typography-label-line-height);\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n width: 100%;\n min-width: var(--cat-table-column-min-width, calc(var(--size-base-unit) * 17.5));\n min-height: calc(var(--size-base-unit) * 4);\n height: 100%;\n padding: var(--cat-c-table-header-cell-padding, calc(var(--size-base-unit) * 0.5) calc(var(--size-base-unit) * 2));\n border-block-end: 1px solid var(--cat-theme-color-border-subtle);\n color: var(--cat-theme-color-content-strong);\n background-color: var(--cat-theme-color-background-default);\n z-index: var(--cat-table-header-cell-zindex-pass-down, var(--cat-table-header-cell-zindex, var(--cat-z-index-200)));\n}\n.cat-c-table-header-cell:hover:not(.cat-c-table-header-cell--loader), .cat-c-table-header-cell:focus {\n background-color: var(--cat-theme-color-table-alternate-hover);\n color: var(--cat-theme-color-content-strong-hover);\n cursor: default;\n}\n\n::slotted(cat-tooltip) {\n font-weight: normal;\n}\n\n/**\n * Align right\n * If align right is true, then align the content to right of the cell\n */\n.cat-c-table-header-cell--align-right {\n align-items: end;\n justify-content: flex-end;\n}\n\n/**\n * Align center\n * If align center is true, then align the content to center of the cell\n */\n.cat-c-table-header-cell--align-center {\n align-items: center;\n justify-content: center;\n}\n\n/**\n * Table header cell sortable and filter\n * 1) Hover/focus state if the cell behavior is sortable or filter\n */\n.cat-c-table-header-cell--sortable,\n.cat-c-table-header-cell--filter {\n --cat-c-table-header-cell-padding: 0;\n}\n.cat-c-table-header-cell--sortable.cat-c-table-header-cell--loader,\n.cat-c-table-header-cell--filter.cat-c-table-header-cell--loader {\n padding: calc(var(--size-base-unit) * 0.5) calc(var(--size-base-unit) * 2);\n}\n\n/**\n * Table header cell button\n * 1) If sortable or has filter, then the content is inside a button.\n */\n.cat-c-table-header-cell__button {\n font-family: var(--cat-theme-typography-label-font-family);\n font-weight: var(--cat-theme-typography-label-font-weight);\n font-size: var(--cat-theme-typography-label-font-size);\n line-height: var(--cat-theme-typography-label-line-height);\n appearance: none;\n outline: none;\n border: 0;\n background: 0;\n margin: 0;\n padding: var(--cat-c-table-header-cell__button-padding, calc(var(--size-base-unit) * 1) calc(var(--size-base-unit) * 2));\n width: 100%;\n height: 100%;\n cursor: pointer;\n position: relative;\n text-align: start;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n color: unset;\n /**\n * Table header cell hover/focus state\n */\n /**\n * Table header cell focus visibile state\n * 1) Adds focus state when you tab through the table header cells\n */\n /**\n * If align right is true, then align the content var(--rtlGradientToRight, 90deg) of the button\n */\n /**\n * If align center is true, then align the content to center of the button\n */\n /**\n * If isExpandable or isDraggable, the shift over the button to align with the cell text\n */\n}\n.cat-c-table-header-cell__button:hover, .cat-c-table-header-cell__button:focus {\n cursor: pointer;\n}\n.cat-c-table-header-cell__button:focus-visible {\n outline: 2px solid var(--cat-theme-color-focus-ring);\n outline-offset: var(--cat-theme-offset-focus-ring, -2px);\n transition: all var(--cat-anim-fade-quick) var(--cat-anim-ease);\n}\n.cat-c-table-header-cell--align-right .cat-c-table-header-cell__button {\n align-items: flex-end;\n}\n.cat-c-table-header-cell--align-center .cat-c-table-header-cell__button {\n align-items: center;\n}\n.cat-is-expandable .cat-c-table-header-cell__button, .cat-is-draggable .cat-c-table-header-cell__button {\n padding-inline-start: calc(var(--size-base-unit) * 7.5);\n}\n\n/**\n * Table header cell header\n * 1) The container for the sortable/filter triggers and default slot content\n */\n.cat-c-table-header-cell__heading {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n/**\n * Table header cell title\n * 1) The container for the default slot content inside the table header cell\n */\n.cat-c-table-header-cell__title {\n /**\n * Table header cell tooltip\n * 1) Line clamp the content if it goes over two lines\n */\n}\n.cat-c-table-header-cell__button .cat-c-table-header-cell__title {\n flex: 1;\n}\n.cat-c-table-header-cell--tooltip .cat-c-table-header-cell__title {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/**\n * Table header cell description\n * 1) The container for the description slot content inside the table header cell\n * 2) Fix for cell hover to activate tooltip\n */\n.cat-c-table-header-cell__description {\n font-weight: normal;\n pointer-events: none;\n color: var(--cat-theme-color-content-strong);\n}\n.cat-c-table-header-cell:hover .cat-c-table-header-cell__description, .cat-c-table-header-cell:focus .cat-c-table-header-cell__description {\n color: var(--cat-theme-color-content-strong-hover);\n}\n.cat-c-table-header-cell--ascending .cat-c-table-header-cell__description, .cat-c-table-header-cell--descending .cat-c-table-header-cell__description, .cat-c-table-header-cell--sortable .cat-c-table-header-cell__description {\n margin-inline-start: calc(var(--size-base-unit) * 3);\n}\n\n/**\n * Table header cell sortable icon\n * 1) The icon that displays if the table header cell is sortable\n */\n.cat-c-table-header-cell__sortable-icon {\n transition: all var(--cat-anim-fade-quick) var(--cat-anim-ease);\n margin-inline-end: calc(var(--size-base-unit) * 1);\n}\n\n/**\n * Table header cell filter icon\n * 1) The icon that displays if the table header cell has a filter\n */\n.cat-c-table-header-cell__filter-icon {\n margin-inline-start: calc(var(--size-base-unit) * 1);\n}\n\n/**\n * Table header cell filter\n * 1) The dropdown panel for the filter\n */\n.cat-c-table-header-cell__filter {\n position: absolute;\n inset-block-start: 100%;\n inset-inline-start: calc(var(--size-base-unit) * 2);\n z-index: var(--cat-z-index-300);\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n /**\n * 1) Show the filter dropdown panel if active is true\n */\n /**\n * 1) If is expandable or draggable is true, then align the filter dropdown panel with the cell content\n */\n /**\n * 1) If is bulk action, then align the filter dropdown panel with the cell content\n */\n /**\n * If align right is true, then align the filter dropdown panel to the right of the cell\n */\n /**\n * If align center is true, then align the filter dropdown panel to the center of the cell\n */\n}\n.cat-is-active-filter .cat-c-table-header-cell__filter {\n opacity: 1;\n visibility: visible;\n}\n.cat-is-expandable:not(.cat-c-table-header-cell--align-right, .cat-c-table-header-cell--align-center) .cat-c-table-header-cell__filter, .cat-is-draggable:not(.cat-c-table-header-cell--align-right, .cat-c-table-header-cell--align-center) .cat-c-table-header-cell__filter {\n inset-inline-start: calc(var(--size-base-unit) * 7.5);\n}\n.cat-is-bulk-action:not(.cat-c-table-header-cell--align-right, .cat-c-table-header-cell--align-center) .cat-c-table-header-cell__filter {\n inset-inline-start: calc(var(--size-base-unit) * 7);\n}\n.cat-c-table-header-cell--align-right .cat-c-table-header-cell__filter {\n inset-inline: auto calc(var(--size-base-unit) * 2);\n}\n.cat-c-table-header-cell--align-center .cat-c-table-header-cell__filter {\n inset-inline-start: 50%;\n transform: translateX(var(--rtlTranslateX, -50%));\n}\n\n/**\n * Table header cell active shadow\n * 1) If isActiveShadow is set to true, then add a shadow to the right on scrollLeft\n * 2) Add 1px to the height to account for the borders\n */\n.cat-is-active-shadow {\n position: relative;\n}\n.cat-is-active-shadow:after {\n content: \"\";\n display: block;\n position: absolute;\n background: linear-gradient(var(--rtlGradientToRight, to right), rgba(0, 0, 0, 0.19) 0%, rgba(0, 0, 0, 0) 100%);\n height: calc(100% + 1px); /* 2 */\n inset-block-start: 0;\n inset-inline-end: calc(calc(var(--size-base-unit) * 1.125) * -1);\n width: calc(var(--size-base-unit) * 1.125);\n z-index: -1;\n}\n\n/**\n * Shift over the shadow to not cover the right border\n */\n.cat-is-active-shadow.cat-c-table-header-cell--border-right.cat-c-table-header-cell--frozen:after {\n inset-inline-end: calc((calc(var(--size-base-unit) * 1.125) * -1) - 1px);\n}\n\n/**\n * Table cell bulk action\n * 1) If isBulkAction is true, then align the content in a row.\n */\n.cat-is-bulk-action {\n flex-direction: row;\n justify-content: flex-start;\n align-items: flex-end;\n}\n\n/**\n * Table cell expandable and draggable\n * 1) If isExpandable or isDraggable is true, then align the content to the table cells\n */\n.cat-is-expandable:not(.cat-c-table-header-cell--filter, .cat-c-table-header-cell--sortable),\n.cat-is-draggable:not(.cat-c-table-header-cell--filter, .cat-c-table-header-cell--sortable) {\n padding-inline-start: calc(var(--size-base-unit) * 7.5);\n}\n\n/**\n * Table cell checkox\n * 1) The inline checkbox that appears if bulk actions is true.\n */\n.cat-c-table-header-cell__checkbox {\n margin-inline-end: calc(var(--size-base-unit) * 2);\n margin-block-end: calc(var(--size-base-unit) * 0.25);\n --cat-checkbox-field-margin-top: 0;\n}\n.cat-c-table-header-cell--sortable .cat-c-table-header-cell__checkbox, .cat-c-table-header-cell--filter .cat-c-table-header-cell__checkbox {\n margin-inline: calc(var(--size-base-unit) * 2) 0;\n margin-block: calc(var(--size-base-unit) * 0.5) calc(var(--size-base-unit) * 0.5);\n}\n\n/**\n * Table header cell tooltip trigger\n * 1) The trigger slot inside the tooltip\n * 2) Aligns the content to the bottom of the cell\n */\n.cat-c-table-header-cell__tooltip-trigger {\n display: flex;\n position: relative;\n}\n\n/**\n * Table header cell border right\n * 1) Adds a border to the right of the cell\n */\n.cat-c-table-header-cell--border-right {\n border-inline-end: 1px solid var(--cat-theme-color-border-subtle);\n}\n\n/**\n * Table header cell border top\n * 1) Adds a border to the top of the cell\n */\n.cat-c-table-header-cell--border-top {\n border-block-start: 1px solid var(--cat-theme-color-border-subtle);\n}\n\n/**\n * Table header cell border top right\n * 1) Adds a border to the top and right of the cell\n */\n.cat-c-table-header-cell--border-top-right {\n border-block-start: 1px solid var(--cat-theme-color-border-subtle);\n border-inline-end: 1px solid var(--cat-theme-color-border-subtle);\n}\n\n/**\n * Table header cell border bottom none\n * 1) Removes a border to the bottom of the cell\n */\n.cat-c-table-header-cell--border-bottom-none {\n border-block-end: none;\n}\n\n/**\n * Table header cell border bottom none\n * 1) Removes a border to the bottom of the cell\n */\n.cat-c-table-header-cell--border-right-only {\n border-block-end: 1px solid transparent;\n border-inline-end: 1px solid var(--cat-theme-color-border-subtle);\n}\n\n/**\n * Table header cell frozen\n * 1) If frozen is true, then make the table header cell sticky\n */\n.cat-c-table-header-cell--frozen {\n position: sticky;\n inset-block-start: 0;\n inset-inline-start: var(--cat-table-header-cell-left, 0);\n background-color: var(--cat-theme-color-background-default);\n}\n\n/**\n * Table header cell sticky\n * 1) If isSticky then make the cell sticky on scroll\n */\n.cat-c-table-header-cell--sticky {\n position: sticky;\n inset-block-start: 0;\n inset-inline-start: var(--cat-table-header-cell-sticky-left, 0);\n z-index: var(--cat-z-index-300);\n}\n\n/**\n * Table header cell mobile view\n * 1) If isMobileView then set the border to transparent\n */\n.cat-is-mobile-view {\n border-inline-end: 1px solid transparent;\n /**\n * Visually remove aria-hidden cells on the mobile view, so an empty cell does not display\n */\n}\n.cat-is-mobile-view[aria-hidden] {\n display: var(--cat-table-header-column-display);\n border-width: var(--cat-table-header-column-border-width);\n}\n`;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { KEYS } from '../../util/event-keys';\nimport { BlocksElement } from '../BlocksElement';\nimport '../checkbox-field/checkbox-field';\nimport '../dropdown-panel/dropdown-panel';\nimport '../icon/icons/arrow-down-alt';\nimport '../icon/icons/arrow-up-alt';\nimport '../icon/icons/chevron-down';\nimport '../icon/icons/swap';\nimport '../skeleton/skeleton';\nimport styles from './table-header-cell.styles';\n/**\n * @slot default - The table header cell content\n * @slot description - The table header cell description that displays below the main cell content\n * @slot filter - The table header cell filter content that appears in a dropdown panel if the behavior is set to filter\n * @fires bl-column-sort - emitted when behavior is filter (when wither ascending/descending is selected)\n * @fires bl-row-cell-select-all - emitted when select-all checkbox is checked\n * @fires bl-table-frozen-change - event is emitted when isFrozen prop value is updated\n * @csspart base - The component's base wrapper.\n * @csspart skeleton - The component's skeleton element.\n * @csspart checkbox - The component's checkbox element.\n * @csspart button - The component's button element.\n * @csspart heading - The component's heading wrapper.\n * @csspart sort-icon - The component's sort-icon wrapper.\n * @csspart title - The component's title wrapper.\n * @csspart part-default - The component's default slot.\n * @csspart icon-chevron-down - The component's chevron-down icon.\n * @csspart description-wrapper - The component's description wrapper.\n * @csspart part-description - The component's description slot.\n * @csspart dropdown-panel - The component's dropdown-panel element.\n * @csspart part-filter - The component's filter slot.\n * @csspart list - The component's list element.\n * @csspart ascending - The component's ascending list-item.\n * @csspart descending - The component's descending list-item.\n * @csspart filter-by - The component's filter-by list-item.\n */\nexport class BlocksTableHeaderCell extends BlocksElement {\n constructor() {\n super(...arguments);\n /**\n * Active filter\n * - Append an active state for the filter on the button\n * - _*This is dynamically applied and should not be manually added to the cell_\n */\n this.isActiveFilter = false;\n /**\n * Loading State\n * - Enables the skeleton loader on cells\n * - _*This is dynamically applied and should not be manually added to the cell_\n */\n this.isLoading = false;\n this.setDirection = true;\n this.toggleKeys = [KEYS.ESCAPE, KEYS.TAB, KEYS.ENTER, KEYS.SPACE];\n /**\n * Set the empty\n * 1. Add aria-hidden and a negative tabindex to prevent tabbing for proper A11y if the cell has not content.\n */\n this.setEmpty = () => {\n if (this.innerHTML === '' || this.innerHTML === ' ') {\n this._headerCellElement?.setAttribute('aria-hidden', 'true');\n this._headerCellElement?.setAttribute('tabindex', '-1');\n }\n };\n /**\n * Handle click outside the component\n * 1) Close the dropdown panel on click outside\n * 2) If the dropdown panel is already closed then we don't care about outside clicks and we\n * can bail early\n * 3) By the time a user clicks on the page the shadowRoot will almost certainly be\n * defined, but TypeScript isn't that trusting and sees this.shadowRoot as possibly\n * undefined. To work around that we'll check that we have a shadowRoot (and a\n * rendered .host) element here to appease the TypeScript compiler. This should never\n * actually be shown or run for a human end user.\n * 4) Check to see if we clicked inside the active dropdown panel\n * 5) If the dropdown panel is active and we've clicked outside of the panel then it should\n * be closed.\n */\n this.handleOnClickOutside = (event) => {\n /* 2 */\n if (!this.isActiveFilter) {\n return;\n }\n /* 3 */\n if (!this.shadowRoot?.host) {\n throw Error('Could not determine panel context during click handler');\n }\n /* 4 */\n const didClickInside = event.composedPath().includes(this.shadowRoot.host);\n /* 5 */\n if (this.isActiveFilter && !didClickInside) {\n this.toggleFilter();\n }\n };\n }\n static { this.styles = styles; }\n /**\n * Connected callback lifecycle\n * 1. Add mousedown event listener\n */\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('mousedown', this.handleOnClickOutside, false); /* 1 */\n }\n /**\n * Disconnected callback lifecycle\n * 1. Remove mousedown event listener\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('mousedown', this.handleOnClickOutside, false); /* 1 */\n }\n willUpdate(changedProperties) {\n if (changedProperties.has('behavior') && this.behavior) {\n if (changedProperties.has('sortDirection') && this.sortDirection && this.setDirection) {\n if (this.sortDirection === 'ascending') {\n this.sortAscending();\n }\n else {\n this.sortDescending();\n }\n this.isActive = true;\n }\n else {\n this.sortDefault();\n }\n this.setDirection = false;\n }\n }\n /**\n * Updated lifecycle hook\n * 1. If sortable, set the sort direction to ascending\n * 2. Fire to set the cell width\n * 3. Fire to set the cell empty attributes\n */\n updated(changedProperties) {\n if (changedProperties.has('isFrozen')) {\n this.dispatch({\n eventName: 'bl-table-frozen-change',\n detailObj: {\n value: true\n }\n });\n }\n if (changedProperties.has('isLoading') && !this.isLoading) {\n this.setWidth(); /* 2 */\n this.setEmpty(); /* 3 */\n this.dispatch({\n eventName: 'bl-table-header-loading',\n detailObj: {\n value: true\n }\n });\n }\n }\n firstUpdated() {\n this.setListItemRoles();\n }\n /**\n * Get the cat-list under header cell.\n */\n getList() {\n return this.querySelector('cat-list') ?? this.shadowRoot?.querySelector('cat-dropdown-panel')?.querySelector('cat-list');\n }\n /**\n * 1. Get the list item under header cell\n * 2. Set the list role to listbox\n * 3. Get the list items based on the list, loop through and add list item role to option\n */\n setListItemRoles() {\n if (this.behavior === 'filter') {\n /* 1 */\n const list = this.getList();\n if (list) {\n /* 2 */\n list.listRole = 'listbox';\n /* 3 */\n const listItems = list.querySelectorAll('cat-list-item');\n listItems.forEach((listItem) => {\n listItem.listItemRole = 'option';\n });\n }\n }\n }\n /**\n * Set the width\n * 1. Add inline width style to cell to adjust the width\n */\n setWidth() {\n if (this.width) {\n const isPercentage = this.width.endsWith('%');\n if (!isPercentage && this._headerCellElement) {\n this._headerCellElement.style.minWidth = this.width;\n this._headerCellElement.style.width = this.width;\n }\n else {\n const tableObject = this.parentElement?.closest('cat-table-object')?.shadowRoot?.querySelector('.cat-c-table-object');\n if (tableObject) {\n const width = `${(parseInt(this.width) / 100) * tableObject.clientWidth}` + 'px';\n if (this._headerCellElement) {\n this._headerCellElement.style.width = width;\n this._headerCellElement.style.minWidth = width;\n }\n }\n }\n }\n }\n /**\n * Toggle filter\n * 1. Toggles the active state between true and false\n * 2. If the active state is toggled to false, close the panel and return focus to the trigger\n */\n toggleFilter() {\n /* 1 */\n this.isActiveFilter = !this.isActiveFilter;\n }\n /**\n * Default Sort\n * 1) Displays swap icon to indicate this header cell is sortable\n */\n sortDefault() {\n this.sortDirection = null;\n }\n /**\n * Sort ascending\n * 1) Changes the sort direction to ascending\n */\n sortAscending() {\n this.sortDirection = 'ascending';\n }\n /**\n * Sort descending\n * 1) Changes the sort direction to descending\n */\n sortDescending() {\n this.sortDirection = 'descending';\n }\n /**\n * Toggle filter and list item sort\n * 1. Close the filter dropdown panel when a list item is clicked\n * 2. If list item value is ascending or descending then set the sort direction, else set to null\n * 3. Emit a custom event on click of each filter list item\n */\n toggleFilterSort(listItem) {\n /* 1 */\n this.toggleFilter();\n if (listItem.value) {\n /* 2 */\n if (listItem.value === 'ascending') {\n this.sortDirection = 'ascending';\n }\n else if (listItem.value === 'descending') {\n this.sortDirection = 'descending';\n }\n else {\n this.sortDirection = null;\n }\n /* 3 */\n this.setActiveCell();\n const value = listItem.value.toString();\n this.eventEmit('bl-column-sort', value);\n }\n }\n /**\n * This event will fire on selecting filter from the dropdown on Keydown\n */\n handleFilterOnKeydown(e) {\n if (e.key === KEYS.ENTER || e.key === KEYS.SPACE) {\n e.preventDefault();\n this.toggleFilterSort(e.target);\n }\n }\n /**\n * This event will fire on clicking filter from the dropdown\n */\n onClickingFilterOption(e) {\n this.toggleFilterSort(e.target);\n }\n /**\n * Set behaviors\n * 1. On click of the table header, set the active state to true.\n * 2. If is sortable, toggle the sort direction.\n * 3. If has filter, toggle display of the dropdown panel.\n */\n toggleBehaviors() {\n /* 1 */\n this.isActive = true;\n /* 2 */\n if (this.behavior === 'sortable') {\n if (this.sortDirection === 'ascending') {\n this.sortDescending();\n }\n else {\n this.sortAscending();\n }\n this.setActiveCell();\n if (this.sortDirection !== undefined) {\n this.eventEmit('bl-column-sort', this.sortDirection);\n }\n }\n /* 3 */\n if (this.behavior === 'filter') {\n this.toggleFilter();\n }\n }\n /**\n * Set active cell\n * 1. Any cell that is not the current selected cell, then remove isActive and reset sort direction.\n */\n setActiveCell() {\n /* 1 */\n const element = this.closest('cat-table')?.querySelectorAll('cat-table-header-cell');\n if (element) {\n const allTableHeaderCells = Array.from(element).filter((el) => el !== this);\n allTableHeaderCells.forEach((cell) => {\n cell.isActive = false;\n if (cell.behavior) {\n cell.sortDefault();\n }\n });\n }\n }\n /**\n * Handle on keydown\n * 1) If the dropdown panel is open and escape or tab is keyed, close the menu and return focus to the trigger button\n */\n handleKeyDown(e) {\n if (this.isActiveFilter === true && this.toggleKeys.includes(e.key)) {\n e.preventDefault();\n this.toggleFilter();\n this.shadowRoot?.querySelector('.cat-c-table-header-cell__button')?.focus();\n }\n }\n /**\n * 1. Once the filter panel is open state, press the arrow down should focus the first list item. Arrow up press will focus the last element\n * 2. Escape or tab close the filter panel. For Enter and space toggle the panel\n */\n handleKeyDownOnHeader(e) {\n /* 1 */\n if (this.isActiveFilter === true) {\n e.preventDefault();\n const listItems = Array.from(this.getList()?.querySelectorAll('cat-list-item') ?? [])?.filter((list) => !list.isStatic);\n if (e.key === KEYS.DOWN_ARROW) {\n listItems[0]?.focus();\n }\n if (e.key === KEYS.UP_ARROW) {\n listItems?.pop()?.focus();\n }\n }\n /* 2 */\n if (this.isActiveFilter === true && this.toggleKeys.includes(e.key)) {\n this.toggleFilter();\n }\n }\n /**\n * Event emit\n * @param name - name of the emit event\n * @param value - value of the emit event\n */\n eventEmit(name, value) {\n return this.dispatch({\n eventName: name,\n detailObj: {\n value: value\n }\n });\n }\n renderLoading(componentClassName) {\n return html `\n
\n \n
\n `;\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-table-header-cell', {\n 'cat-c-table-header-cell--align-right': this.align === 'right',\n 'cat-c-table-header-cell--align-center': this.align === 'center',\n 'cat-c-table-header-cell--sortable': this.behavior === 'sortable',\n 'cat-c-table-header-cell--filter': this.behavior === 'filter',\n 'cat-c-table-header-cell--ascending': this.sortDirection === 'ascending',\n 'cat-c-table-header-cell--descending': this.sortDirection === 'descending',\n 'cat-c-table-header-cell--frozen': this.isFrozen === true,\n 'cat-c-table-header-cell--border-top': this.border === 'top',\n 'cat-c-table-header-cell--border-top-right': this.border === 'top-right',\n 'cat-c-table-header-cell--border-right': this.border === 'right',\n 'cat-c-table-header-cell--border-bottom-none': this.border === 'bottom-none',\n 'cat-c-table-header-cell--border-right-only': this.border === 'right-only',\n 'cat-c-table-header-cell--tooltip': this.tooltip === true,\n 'cat-c-table-header-cell--sticky': this.isSticky === true,\n 'cat-is-bulk-action': this.isBulkAction === true,\n 'cat-is-expandable': this.isExpandable === true,\n 'cat-is-draggable': this.isDraggable === true,\n 'cat-is-active': this.isActive === true,\n 'cat-is-active-shadow': this.isActiveShadow === true,\n 'cat-is-active-filter': this.isActiveFilter === true,\n 'cat-is-first': this.isFirst === true,\n 'cat-is-mobile-view': this.isMobileView === true,\n 'cat-c-table-header-cell--loader': this.isLoading === true\n });\n if (this.isLoading) {\n return this.renderLoading(componentClassName);\n }\n return html `\n
\n ${this.behavior === 'sortable' || this.behavior === 'filter'\n ? html `\n ${this.isBulkAction === true\n ? html `\n {\n const path = e.composedPath();\n const isSelected = path[0]?.checked;\n this.dispatch({\n e,\n eventName: 'bl-row-cell-select-all',\n detailObj: { isSelected }\n });\n }}\n >\n Bulk action table header cell checkbox\n \n `\n : nothing}\n \n \n ${this.sortDirection === 'ascending'\n ? html `\n \n `\n : this.sortDirection === 'descending'\n ? html `\n \n `\n : this.behavior === 'sortable'\n ? html ` `\n : nothing}\n
\n \n
\n ${this.behavior === 'filter'\n ? html `\n \n `\n : nothing}\n
\n ${this.slotNotEmpty('description') &&\n html `\n \n \n \n `}\n \n ${this.behavior === 'filter'\n ? html `\n \n ${this.slotNotEmpty('filter')\n ? html `\n \n `\n : html `\n \n \n Sort A to Z\n \n \n Sort Z to A\n \n \n Filter by\n \n \n `}\n \n `\n : nothing}\n `\n : html `\n ${this.isBulkAction === true\n ? html `\n {\n const path = e.composedPath();\n const isSelected = path[0]?.checked;\n this.dispatch({\n e,\n eventName: 'bl-row-cell-select-all',\n detailObj: { isSelected }\n });\n }}\n >\n `\n : nothing}\n
\n \n
\n ${this.slotNotEmpty('description') &&\n html `\n \n \n \n `}\n `}\n
\n `;\n }\n}\n__decorate([\n property({ type: Number })\n], BlocksTableHeaderCell.prototype, \"dataKey\", void 0);\n__decorate([\n property({ type: Number, reflect: true })\n], BlocksTableHeaderCell.prototype, \"colspan\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableHeaderCell.prototype, \"width\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableHeaderCell.prototype, \"border\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableHeaderCell.prototype, \"align\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableHeaderCell.prototype, \"behavior\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableHeaderCell.prototype, \"sortDirection\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isFrozen\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isSticky\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"tooltip\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isBulkAction\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isBulkActionSelected\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isBulkActionIndeterminate\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isExpandable\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isDraggable\", void 0);\n__decorate([\n state()\n], BlocksTableHeaderCell.prototype, \"isActive\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isActiveFilter\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isActiveShadow\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isFirst\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isMobileView\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"isLoading\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableHeaderCell.prototype, \"disabled\", void 0);\n__decorate([\n query('.cat-c-table-header-cell')\n], BlocksTableHeaderCell.prototype, \"_headerCellElement\", void 0);\nif (customElements.get('cat-table-header-cell') === undefined) {\n customElements.define('cat-table-header-cell', BlocksTableHeaderCell);\n}\n","import { BlocksTableHeaderCell } from 'blocks-nextjs/blocks-web-components/components/table-header-cell/table-header-cell';\nimport React from 'react';\nimport { createComponent } from '../CustomWrapper/CustomWrapper';\nexport const CatTableHeaderCell = createComponent({\n react: React,\n tagName: 'cat-table-header-cell',\n elementClass: BlocksTableHeaderCell,\n events: {\n onBlColumnSort: 'bl-column-sort',\n onBlRowCellSelectAll: 'bl-row-cell-select-all'\n }\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { BlocksElement } from '../../BlocksElement';\nimport styles from '../icon.styles';\n/**\n * DeltaDown component\n * @csspart base- The component's base wrapper\n */\nexport class BlocksIconDeltaDown extends BlocksElement {\n static { this.styles = styles; }\n connectedCallback() {\n super.connectedCallback();\n this.classList.add('cat-icon');\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-icon', {\n 'cat-c-icon--sm': this.size === 'sm',\n 'cat-c-icon--lg': this.size === 'lg',\n 'cat-c-icon--xl': this.size === 'xl',\n 'cat-c-icon--content-strong': this.color === 'content-strong',\n 'cat-c-icon--knockout': this.color === 'knockout',\n 'cat-c-icon--knockout-brand': this.color === 'knockout-brand',\n 'cat-c-icon--information': this.color === 'information',\n 'cat-c-icon--success': this.color === 'success',\n 'cat-c-icon--warning': this.color === 'warning',\n 'cat-c-icon--error': this.color === 'error'\n });\n return html `\n \n \n \n \n \n `;\n }\n}\n__decorate([\n property({ type: String })\n], BlocksIconDeltaDown.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconDeltaDown.prototype, \"iconTitle\", void 0);\n__decorate([\n property({ type: String })\n], BlocksIconDeltaDown.prototype, \"size\", void 0);\nif (customElements.get('cat-icon-delta-down') === undefined) {\n customElements.define('cat-icon-delta-down', BlocksIconDeltaDown);\n}\n","import { css } from 'lit';\nexport default css ` \n @charset \"UTF-8\";\n/* ------------------------------------*\\\n #RESET\n\\*------------------------------------ */\n/**\n * Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/\n */\n*,\n::slotted(*),\n*:before,\n*:after {\n box-sizing: border-box;\n}\n\n:focus-visible {\n outline-color: var(--cat-theme-color-focus-ring);\n}\n\n/* ------------------------------------*\\\n    #BREAKPOINT VARIABLES\n\\*------------------------------------ */\n:root,\n:host {\n --size-base-unit: 0.5rem;\n}\n\n/**\n * RTL support for values logical properties can't automatically adjust for\n * 1) Percentage based horizontal translate values need to be flipped\n * 2) Background gradients using \"to right\" or \"to left\" need to be switched to using deg values\n * 3) Background Position From is used for reversing animation from right to left at 0%\n * 4) Background Position To is used for reversing animation from right to left at 100%\n * 5) Rotate Icon to 180deg for nav button\n * 6) Transformation size for badge left positions\n * 7) Transformation size for badge right positions\n * 8 to 18) Padding values for Input Field Type Tel\n */\n[dir=rtl] {\n --rtlTranslateX: 50%; /* 1 */\n --rtlGradientToRight: 270deg; /* 2 */\n --rtlBackgroundPositionFrom: -135%; /* 3 */\n --rtlBackgroundPositionTo: 0%; /* 4 */\n --rtlRotate180: 180deg; /* 5 */\n --rtlRotate135: 135deg;\n --rtlBadgeLeft: -1.5; /* 6 */\n --rtlBadgeRight: 1.5; /* 7 */\n --rtlTelTypeInputFieldPaddingStart: calc(var(--size-base-unit) * 5); /* 8 */\n --rtlTelTypeInputFieldPaddingEnd: calc(var(--size-base-unit) * 2); /* 9 */\n --rtlTelTypeInputFieldMedPaddingStart: calc(var(--size-base-unit) * 4.5); /* 10 */\n --rtlTelTypeInputFieldMedPaddingEnd: calc(var(--size-base-unit) * 1.5); /* 11 */\n --rtlTelTypeInputFieldSmPaddingStart: calc(var(--size-base-unit) * 4); /* 12 */\n --rtlTelTypeInputFieldSmPaddingEnd: calc(var(--size-base-unit) * 1); /* 13 */\n --rtlTelTypeInputFieldCharBeforePaddingEnd: calc(var(--size-base-unit) * 3.75); /* 14 */\n --rtlTelTypeInputFieldCharAfterPaddingStart: calc(var(--size-base-unit) * 6); /* 15 */\n --rtlTelTypeInputFieldCharAfterErrPaddingStart: calc(var(--size-base-unit) * 9); /* 16 */\n --rtlTelTypeInputFieldIconAfterErrPaddingStart: calc(var(--size-base-unit) * 8); /* 17 */\n --rtlTelTypeInputFieldIconCharAfterErrPaddingStart: calc(var(--size-base-unit) * 12); /* 18 */\n --rtlDisplayNone: none;\n --rtlDisplayBlock: block;\n --rtlDrawerRightTranslateX: -100%;\n --rtlDrawerLeftTranslateX: 100%;\n}\n\n/**\n * Visible focus outline for elements on a light background\n */\n/**\n * Visible focus outline for elements on a dark background\n */\n/**\n * Invisible focus outline for elements that need a more visible\n * focus state for high-contrast mode\n */\n/**\n * Visually hidden from display\n */\n/**\n * style for text ellipsis\n */\n/**\n * Popover attribute has default styling which comes from UA stylesheets which will be overridden here.\n */\n/* ------------------------------------*\\\n #TYPOGRAPHY APPLICATIONS\n\\*------------------------------------ */ /* ------------------------------------*\\\n #TABLE-OBJECT\n\\*------------------------------------ */\n/**\n * Table object host (cat-table-object)\n */\n:host {\n display: contents;\n}\n\n/**\n * Table object\n */\n.cat-c-table-object {\n width: var(--cat-table-min-width, 100%);\n}\n.cat-c-table-object.cat-c-table-cell-size-sm {\n --cat-c-table-cell--min-height: calc(var(--size-base-unit) * 4);\n --cat-skeleton-loader-height: calc(var(--size-base-unit) * 1);\n}\n.cat-c-table-object.cat-c-table-cell-size-md {\n --cat-c-table-cell--min-height: calc(var(--size-base-unit) * 5);\n --cat-skeleton-loader-height: calc(var(--size-base-unit) * 1.5);\n}\n.cat-c-table-object.cat-is-even-order-stripe {\n --cat-c-table-body-even-background-pass-down: var(--cat-theme-color-background-subtle);\n}\n.cat-c-table-object.cat-is-odd-order-stripe {\n --cat-c-table-body-odd-background-pass-down: var(--cat-theme-color-background-subtle);\n}\n\n/**\n * Table object body\n * 1) Position relative to position overflow gradients\n */\n.cat-c-table-object__body {\n position: relative; /* 1 */\n /**\n * Table object body within table object overflow left\n */\n /**\n * Table object body within table object overflow right\n */\n}\n.cat-is-overflow-left .cat-c-table-object__body {\n /**\n * Left overflow gradient for the table object body\n */\n}\n.cat-is-overflow-left .cat-c-table-object__body:before {\n content: \"\";\n display: block;\n position: absolute;\n background: linear-gradient(var(--rtlGradientToRight, 90deg), var(--cat-theme-color-background-default), rgba(255, 255, 255, 0.001) 30%);\n height: 100%;\n inset-block-start: 0;\n inset-inline-start: 0;\n width: calc(var(--size-base-unit) * 6);\n z-index: var(--cat-z-index-100);\n pointer-events: none;\n}\n.cat-is-overflow-right .cat-c-table-object__body {\n /**\n * Right overflow gradient for the table object body\n */\n}\n.cat-is-overflow-right .cat-c-table-object__body:after {\n content: \"\";\n display: block;\n position: absolute;\n background: linear-gradient(var(--rtlGradientToRight, 90deg), rgba(255, 255, 255, 0.001) 30%, var(--cat-theme-color-background-default));\n height: 100%;\n inset-block-start: 0;\n inset-inline-end: 0;\n width: calc(var(--size-base-unit) * 6);\n z-index: var(--cat-z-index-100);\n pointer-events: none;\n}\n\n/**\n * Table object body inner\n * 1) Actual container within the table object body that scrolls\n * 2) Fixed height required for position sticky to work on child elements\n */\n.cat-c-table-object__body-inner {\n overflow: auto; /* 1 */\n width: 100%;\n height: 100%;\n max-height: var(--cat-table-height, 400px); /* 2 */\n}\n.cat-c-table-object__body-inner::-webkit-scrollbar {\n width: 12px;\n height: 12px;\n}\n.cat-c-table-object__body-inner::-webkit-scrollbar-track {\n border-radius: 12px;\n background: var(--cat-theme-color-background-subtle);\n margin-inline-start: var(--cat-table-scrollbar-margin-left);\n margin-block-start: var(--cat-table-scrollbar-margin-top);\n}\n.cat-c-table-object__body-inner::-webkit-scrollbar-thumb {\n background: var(--cat-theme-color-background-subtle-hover);\n border-radius: 12px;\n}\n\n/**\n * Table object header\n * 1) The containers the appear above the table object body\n * 2) Aligns the content into a row\n */\n.cat-c-table-object__header {\n width: 100%;\n /**\n  * Align slotted items in a row.\n */\n}\n.cat-c-table-object__header slot {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n/**\n * Table object header\n * 1) The container that appears above the table object body\n */\n.cat-c-table-object__header {\n margin-block-end: calc(var(--size-base-unit) * 1);\n}\n\n/**\n * Table object footer\n * 1) The container that appears below the table object body\n */\n.cat-c-table-object__footer {\n margin-block-start: calc(var(--size-base-unit) * 1);\n}\n\n/**\n * Table object tooltip\n * 1) The tooltip that appears over table header cells if they are greater than two lines\n * 2) Tooltip is positioned absolutely to the object body\n */\n.cat-c-table-object__tooltip {\n height: 0;\n width: 0;\n position: absolute;\n z-index: var(--cat-z-index-top);\n font-family: var(--cat-theme-typography-body-sm-font-family);\n font-weight: var(--cat-theme-typography-body-sm-font-weight);\n font-size: var(--cat-theme-typography-body-sm-font-size);\n line-height: var(--cat-theme-typography-body-sm-line-height);\n}\n\n/**\n * Table bulk actions\n * 1) The flyout container for the bulk actions that appears above the first table cell header\n */\n.cat-c-table-object__bulk-action {\n font-family: var(--cat-theme-typography-label-font-family);\n font-weight: var(--cat-theme-typography-label-font-weight);\n font-size: var(--cat-theme-typography-label-font-size);\n line-height: var(--cat-theme-typography-label-line-height);\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: fit-content;\n position: absolute;\n inset-block-start: calc(calc(var(--size-base-unit) * 4.75) * -1);\n inset-inline-start: 0;\n color: var(--cat-theme-color-content-strong);\n background-color: var(--cat-theme-color-background-brand);\n padding-inline: calc(var(--size-base-unit) * 1.5) calc(var(--size-base-unit) * 0.5);\n z-index: var(--cat-z-index-300);\n margin-block-end: calc(var(--size-base-unit) * 0.5);\n opacity: 0;\n visibility: hidden;\n /**\n * The indication arrow at the bottom of the flyout\n */\n}\n.cat-c-table-object__bulk-action:before {\n content: \"\";\n display: block;\n width: calc(var(--size-base-unit) * 1);\n height: calc(var(--size-base-unit) * 1);\n transform: rotate(45deg);\n background-color: var(--cat-theme-color-background-brand);\n position: absolute;\n inset-inline-start: calc(var(--size-base-unit) * 3);\n inset-block-end: calc(calc(var(--size-base-unit) * 0.5) * -1);\n}\n.cat-is-bulk-action-active .cat-c-table-object__bulk-action {\n opacity: 1;\n visibility: visible;\n}\n\n/**\n * Table bulk actions title\n * 1) The title to the bulk action container that displays before the actions\n */\n.cat-c-table-object__bulk-action-title {\n font-weight: normal;\n margin-inline-end: calc(var(--size-base-unit) * 1);\n white-space: nowrap;\n}\n\n/**\n * Table bulk actions buttons\n * 1) The slotted container that holds all the action buttons\n */\n.cat-c-table-object__bulk-action-buttons {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n\n/**\n * Table bulk actions buttons slotted\n * 1) Styling for all the slotted item in the bulk actions buttons wrapper\n * 2) Styling for the contextual menu trigger for more bulk action items\n */\n.cat-c-table-object__bulk-action-buttons slot[name=bulkAction]::slotted(*),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkActionSingle]::slotted(*),\n.cat-c-table-object__bulk-action-more-trigger {\n font-family: var(--cat-theme-typography-label-font-family);\n font-weight: var(--cat-theme-typography-label-font-weight);\n font-size: var(--cat-theme-typography-label-font-size);\n line-height: var(--cat-theme-typography-label-line-height);\n background: transparent;\n outline: 0;\n border: 0;\n margin: 0;\n text-decoration: none;\n padding: calc(var(--size-base-unit) * 0.75) calc(var(--size-base-unit) * 1);\n transition: all 0.15s ease;\n color: var(--cat-theme-color-content-strong);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n}\n\n/**\n * Table bulk actions buttons slotted hover, focus, active\n * 1) Hover, focus, and active states for slotted items and contextual menu trigger\n */\n.cat-c-table-object__bulk-action-buttons slot[name=bulkAction]::slotted(*:hover),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkAction]::slotted(*:focus),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkAction]::slotted(*:active),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkActionSingle]::slotted(*:hover),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkActionSingle]::slotted(*:focus),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkActionSingle]::slotted(*:active),\n.cat-c-table-object__bulk-action-more-trigger:hover,\n.cat-c-table-object__bulk-action-more-trigger:focus,\n.cat-c-table-object__bulk-action-more-trigger:active {\n color: var(--cat-theme-color-content-strong-hover);\n}\n\n/**\n * Table bulk actions buttons slotted focus-visible\n * 1) Focus visible state for slotted items.\n */\n.cat-c-table-object__bulk-action-buttons slot[name=bulkAction]::slotted(*:focus-visible),\n.cat-c-table-object__bulk-action-buttons slot[name=bulkActionSingle]::slotted(*:focus-visible),\n.cat-c-table-object__bulk-action-more-trigger:focus-visible {\n outline: 2px solid var(--cat-theme-color-focus-ring);\n outline-offset: var(--cat-theme-offset-focus-ring, -2px);\n transition: all var(--cat-anim-fade-quick) var(--cat-anim-ease);\n}\n\n/**\n * Table bulk actions more trigger icon\n * 1) The arrow down icon that appears next to the more trigger in the bulk actions\n */\n.cat-c-table-object__bulk-action-more-trigger-icon {\n --cat-icon-width: calc(var(--size-base-unit) * 1);\n --cat-icon-height: calc(var(--size-base-unit) * 1);\n margin-inline-start: calc(var(--size-base-unit) * 0.5);\n}\n\n/**\n * Table modal for mobile list view\n */\n.cat-c-modal__body {\n display: flex;\n flex-direction: column;\n gap: calc(var(--size-base-unit) * 2);\n font-family: var(--cat-theme-typography-body-sm-font-family);\n font-weight: var(--cat-theme-typography-body-sm-font-weight);\n font-size: var(--cat-theme-typography-body-sm-font-size);\n line-height: var(--cat-theme-typography-body-sm-line-height);\n}\n`;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { KEYS } from '../../util/event-keys';\nimport { BlocksElement } from '../BlocksElement';\nimport '../button/button';\nimport '../contextual-menu/contextual-menu';\nimport '../icon/icons/close';\nimport '../icon/icons/delta-down';\nimport '../modal/modal';\nimport '../tooltip/tooltip';\nimport styles from './table-object.styles';\n/**\n * @slot default - The contained element, usually a table or `cat-table`\n * @slot header - Content to appear above the table\n * @slot footer - Content to appear below the table\n * @slot bulkActionSingle - Content to appear as bulkaction content when bulkActionCount is 1 (when a specific bulkActionContent to be shown for a single selected row)\n * @slot bulkActionSingleMore - Content to appear as bulkaction content when bulkActionCount is 1 (when a specific bulkActionContent to be shown for a single selected row with more dropdown)\n * @slot bulkAction - Content to appear as bulkaction content when bulkActionCount is > 1\n * @slot bulkActionMore - Content to appear as bulkaction content when bulkActionCount is > 1 with more dropdown\n * @fires bl-column-sort - emitted when behavior is filter (when wither ascending/descending is selected)\n * @fires bl-table-scroll-y - emitted when table body is scrolled vertically\n * @fires bl-table-scroll-y-end - emitted when table vertical scroll reached bottom-end\n * @fires bl-table-scroll-x - emitted when table body is scrolled horizontally.\n * @fires bl-table-scroll-x-end - emitted when table vertical scroll reached right-end\n * @fires bl-table-resize - emitted on window resize\n * @fires bl-row-expand - emitted when nested component/ accordion in self-foldable table is opened.\n * @fires bl-row-drag-end - emitted when a row is dropped (after dragging and leaving the mouse)\n * @fires bl-row-cell-select-all - emitted when a bulk action is toggled\n * @csspart base - The component's base wrapper.\n * @csspart header-wrapper - The component's header wrapper.\n * @csspart part-header - The component's header slot.\n * @csspart tooltip - The component's tooltip element.\n * @csspart body - The component's body wrapper.\n * @csspart bulk-action - The component's bulk-action element.\n * @csspart bulk-action-title - The component's bulk-action title.\n * @csspart bulk-action-buttons - The component's bulk-action buttons.\n * @csspart part-bulkActionSingle - The component's bulkActionSingle slot.\n * @csspart part-bulkAction - The component's bulkAction slot.\n * @csspart bulk-action-more - The component's bulk-action-more element.\n * @csspart more-trigger - The component's more-trigger button.\n * @csspart icon-delta-down - The component's delta-down icon.\n * @csspart part-bulkActionSingleMore - The component's bulkActionSingleMore slot.\n * @csspart part-bulkActionMore - The component's bulkActionMore slot.\n * @csspart bulk-action-close - The component's bulk-action-close button.\n * @csspart icon-close - The component's close icon.\n * @csspart body-inner - The component's body-inner wrapper.\n * @csspart part-default - The component's default slot.\n * @csspart footer-wrapper - The component's footer wrapper.\n * @csspart part-footer - The component's footer slot.\n * @csspart modal - The component's modal element.\n * @csspart modal-heading - The component's modal-heading wrapper.\n * @csspart modal-body - The component's modal-body wrapper.\n * @csspart cellHeading-item-mobile - The component's cellHeading-item in mobile wrapper.\n * @csspart cellHeading-text - The component's cellHeading text in mobile.\n * @csspart cellHeading-innerText - The component's cellHeading innerText in mobile.\n * @csspart cellHeading-innerHTML - The component's cellHeading innerHTML in mobile.\n * @csspart self-foldable-item - The component's self-foldable cell inside expandable row.\n * @csspart self-foldable-item-text - The component's text of self-foldable cell inside expandable row.\n * @csspart self-foldable-item-innerText - The component's innerText of self-foldable cell inside expandable row.\n * @csspart self-foldable-item-innerHTML - The component's innerHTML of self-foldable cell inside expandable row.\n * @csspart isExpandableNestedChild-row - The component's isExpandableNestedChild row.\n * @csspart isExpandableChild-row - The component's isExpandableChild row.\n * @csspart isExpandableNestedChild-cell - The component's cell inside isExpandableNestedChild row.\n * @csspart isExpandableChild-cell - The component's cell inside isExpandableChild row.\n */\nexport class BlocksTableObject extends BlocksElement {\n constructor() {\n super(...arguments);\n /**\n * Tooltip position state\n * - Controls the header cell tooltip position\n */\n this.tooltipPosition = [0, 0];\n /**\n * Previous scroll value\n * - Set previous scroll value to determine process\n */\n this.prevScrollVal = 0;\n /**\n * Is scrolling state\n */\n this.isScrolling = false;\n /**\n * Resize observer state\n */\n this.tableResizeObserver = new ResizeObserver((entries) => {\n window.requestAnimationFrame(() => {\n if (!Array.isArray(entries) || !entries.length) {\n return;\n }\n for (const entry of entries) {\n this.onResizeObserver(entry);\n // Only ever do first entry.\n break;\n }\n });\n });\n /**\n * Bulk actions count\n * - Counts/displays the number of rows selected in the bulk actions flyout\n */\n this.bulkActionCount = 0;\n /**\n * Show more contextual menu label text in bulk-action content\n */\n this.moreDropdownLabel = 'More';\n /**\n * Table object mobile view breakpoint\n * - default to 560, and can add as property for custom width\n */\n this.mobileBreakPoint = 560;\n /**\n * Table object stripeOrder property\n * `default` - renders table-cell with no zebra stripes\n * `odd` - renders table-cell in odd order zebra stripes\n * `even` - renders table-cell in even order zebra stripes\n */\n this.stripeOrder = 'default';\n this.catTableBodyScrollheight = 0;\n this.isMobileDragging = false;\n this.cellTooltipAttached = false;\n this.isTouchMoved = false;\n this.currentDragHoveredRow = null;\n this.onWindowResize = (evt) => {\n this.onScroll(evt);\n this.setTableColumnCount();\n this.setMobileView();\n this.setTableHeaderCellZindex();\n };\n /**\n * Called when SelfFoldable is true\n * 1. Make all the available rows isExpandableActive to false, so the expandable arrows change to original position.\n * 2. Call processSelfFoldable function with width greater than allowed width, so that all Headers come out of selfFolded rows.\n * 3. Do the SelfFoldable by creating new rows.\n * 4. If resize Observer is already called, do the processSelfFoldable again for correct column calculation.\n * 5. Call setExpandableRows for expandable icons and trigger click events.\n */\n this.startSelfFoldable = () => {\n this._catTableRowsArray?.forEach((tableRows) => {\n tableRows.isExpandableActive = false; /* 1 */\n });\n if (!this._catIsMobileView) {\n this.closest('cat-table-object')?.style.removeProperty('--cat-table-template-column-width');\n }\n if (this.foldingHeaderCells) {\n this.processSelfFoldable(this.foldingHeaderCells[this.foldingHeaderCells.length - 1].showWidth + 10); /* 2 */\n }\n this.setSelfFoldable(); /* 3 */\n if (this.width) {\n this.processSelfFoldable(this.width); /* 4 */\n }\n this.setExpandableRows(); /* 5 */\n };\n /**\n * On table body inner scroll\n * 1. On scroll, if position from left is greater than 0, set isStart to false. Otherwise set isStart to true.\n * 2. On scroll, If last child is fully in the viewport, set isEnd to true. Otherwise, set isEnd to false.\n * 3. Fire event emitters on scroll.\n */\n this.onScroll = (e) => {\n const scrollEl = e.target;\n const scrollTop = scrollEl.scrollTop;\n const scrollLeft = scrollEl.scrollLeft;\n this.setOverflowShadows();\n this.setFrozenShadows(scrollLeft);\n // Update previous scroll\n this.prevScrollVal = scrollLeft;\n // Do once while scrolling\n if (!this.isScrolling) {\n this.isScrolling = true;\n // Remove tooltip\n this.showTooltip = false;\n // Remove active filter\n if (this._catTableHeaderCells) {\n this._catTableHeaderCells.forEach((el) => {\n el.isActiveFilter = false;\n });\n }\n // Remove active contextual menu\n if (this.querySelectorAll('cat-contextual-menu').length > 0) {\n Array.from(this.querySelectorAll('cat-contextual-menu')).forEach((el) => {\n el.isActive = false;\n el.hidePopup();\n });\n }\n }\n // Throttle is scrolling.\n if (this.scrollTimeout) {\n clearInterval(this.scrollTimeout);\n }\n this.scrollTimeout = setTimeout(() => {\n this.isScrolling = false;\n }, 100);\n /* 3 */\n // Fire an event emitter when scrolling vertically\n if (scrollTop > 0) {\n this.eventEmit('bl-table-scroll-y', scrollTop);\n //https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#determine_if_an_element_has_been_totally_scrolled\n if (this._catTableObjectBodyInner) {\n const yScrollAtEnd = Math.abs(this._catTableObjectBodyInner.scrollHeight - this._catTableObjectBodyInner.clientHeight - this._catTableObjectBodyInner.scrollTop) < 1;\n // Fire an event emitter when scrolled to then end of the table vertically\n if (yScrollAtEnd) {\n this.eventEmit('bl-table-scroll-y-end', 'true');\n }\n }\n }\n // Fire an event emitter when scrolling horizontally\n if (scrollLeft > 0) {\n this.eventEmit('bl-table-scroll-x', scrollLeft);\n // Fire an event emitter when scrolled to then end of the table horizontally\n if (this._catTableObjectBodyInner) {\n const xScrollAtEnd = Math.abs(this._catTableObjectBodyInner.scrollWidth - this._catTableObjectBodyInner.clientWidth - this._catTableObjectBodyInner.scrollLeft) <\n 1;\n if (xScrollAtEnd) {\n this.eventEmit('bl-table-scroll-x-end', 'true');\n }\n }\n }\n };\n /**\n * On table object resize\n * 1. Use width to calculate which headers are visible.\n * 2. Adjusts the header cell offset on screen resize.\n * 3. Fire event emitter on window resize.\n */\n this.onResizeObserver = (entry) => {\n /* 1 */\n const { width } = entry.contentRect;\n this.width = entry.contentRect.width;\n if (this._catIsSelfFoldable) {\n this.processSelfFoldable(width);\n }\n /* 2 */\n if (this._catIsFrozenCells) {\n this.setFrozenCells();\n }\n /* 3 */\n this.eventEmit('bl-table-resize', width);\n };\n /**\n * Set table column count and table column key\n * 1. Query all the table header cells in the last table header row.\n * 2. If self foldable and the table object width is smaller than the table header width, then subtract 1 to account for the folding header cell.\n * 3. Count the number of table header cells and set the table columns custom property to the table cell count.\n * 4. For each table header cell, set the key based on the index inside the row.\n * 5. Generate grid template column based on the header custom width.\n * 6. Loop over all the rows to assign style gridTemplateColumn.\n */\n this.setTableColumnCount = () => {\n /* 1 */\n const tableHeaderCells = this.querySelector('cat-table-header cat-table-row:last-child')?.querySelectorAll('cat-table-header-cell');\n let tableCellCount = 0;\n /* 2 */\n if (tableHeaderCells) {\n if (this._catIsSelfFoldable && this._catTableHeaderWidth !== undefined && this._catTableObjectWidth < this._catTableHeaderWidth) {\n tableCellCount = tableHeaderCells.length - 1; /* 3 */\n }\n else {\n tableCellCount = tableHeaderCells.length; /* 3 */\n }\n }\n const tableObjectStyle = this.closest('cat-table-object')?.style;\n const tableHeaderRows = this.querySelector('cat-table-header')?.querySelectorAll('cat-table-row');\n if (tableHeaderRows) {\n let templateColumnsRow = '';\n tableHeaderRows.forEach((row) => {\n let templateColumns = '';\n row.querySelectorAll('cat-table-header-cell').forEach((cell, index) => {\n cell.dataKey = index; /* 4 */\n /* 5 */\n const cellWidth = cell.width;\n if (cellWidth) {\n if (cellWidth.endsWith('%')) {\n const width = (parseInt(cellWidth) / 100) * this._catTableObjectElement.clientWidth + 'px';\n const innerCell = cell.shadowRoot?.querySelector('.cat-c-table-header-cell');\n if (innerCell) {\n innerCell.style.width = width;\n innerCell.style.minWidth = width;\n }\n templateColumns = templateColumns + ' ' + width;\n }\n else {\n templateColumns = templateColumns + ' ' + cellWidth;\n }\n }\n else if (cell.colspan) {\n templateColumns = templateColumns + ' ' + `${cell.colspan}` + 'fr';\n }\n else {\n templateColumns = templateColumns + ' ' + '1fr';\n }\n });\n const element = row.shadowRoot?.querySelector('.cat-c-table-row');\n if (this.mobileBreakPoint >= window.innerWidth && this._catIsMobileView) {\n setTimeout(() => {\n if (element) {\n element.style.gridTemplateColumns = '1fr';\n }\n }, 0);\n }\n else {\n setTimeout(() => {\n if (element) {\n element.style.gridTemplateColumns = templateColumns;\n }\n }, 0);\n }\n templateColumnsRow = templateColumns;\n });\n if (this.mobileBreakPoint >= window.innerWidth && this._catIsMobileView) {\n tableObjectStyle?.setProperty('--cat-table-template-column-width', '1fr');\n tableObjectStyle?.setProperty('--cat-table-header-column-display', 'none');\n tableObjectStyle?.setProperty('--cat-table-header-column-border-width', '0');\n }\n else {\n tableObjectStyle?.setProperty('--cat-table-template-column-width', templateColumnsRow);\n tableObjectStyle?.setProperty('--cat-table-header-column-display', 'flex');\n tableObjectStyle?.setProperty('--cat-table-header-column-border-width', '1px');\n }\n /* 6 */\n }\n if (this.mobileBreakPoint >= window.innerWidth && this._catIsMobileView) {\n tableObjectStyle?.setProperty('--cat-table-column-count', '1');\n }\n else {\n tableObjectStyle?.setProperty('--cat-table-column-count', tableCellCount.toString());\n }\n /* 3 */\n };\n /**\n * Set table column width\n * 1. If a columnWidth is defined, set the table column width custom property. Defaults to 200px.\n */\n this.setTableColumnWidth = () => {\n /* 1 */\n if (this._catTableHeaderCells.some((el) => el.width)) {\n this.closest('cat-table-object')?.style.setProperty('--cat-table-column-min-width', 'unset');\n this.closest('cat-table-object')?.style.setProperty('--cat-table-column-max-width', 'none');\n }\n else if (this.columnWidth) {\n this.closest('cat-table-object')?.style.setProperty('--cat-table-column-min-width', this.columnWidth.toString());\n }\n };\n /**\n * Set table height\n * 1. If a tableHeight is defined, set the height custom property. Defaults to 400px.\n */\n this.setTableHeight = () => {\n /* 1 */\n if (this.height) {\n return this.closest('cat-table-object')?.style.setProperty('--cat-table-height', this.height.toString());\n }\n };\n /**\n * Set table min width\n * 1. If a minWidth is defined, set the min-width custom property. Defaults to 100%.\n */\n this.setTableMinWidth = () => {\n /* 1 */\n if (this.minWidth) {\n return this.closest('cat-table-object')?.style.setProperty('--cat-table-min-width', this.minWidth.toString());\n }\n };\n /**\n * Start draggable\n * 1. Set draggable vars to begin sequence\n * 2. Add draggable events to document (mouse up / mouse move) and sibling elements to determine order\n * 3. Set draggable styles so it is removed from flow\n */\n this.startDrag = (evt) => {\n this.dragRow = evt.composedPath()[0].closest('cat-table-row');\n if (!this.dragRow?.isDraggable) {\n return false;\n }\n this.isMobileDragging = true;\n /* 1 */\n const children = this.dragRow.parentElement?.children;\n if (children) {\n this.drawRowSiblings = Array.from(children).filter((row) => row.isDraggable === true && row !== this.dragRow);\n }\n this.prevDragPos = evt.detail.event instanceof MouseEvent ? evt.detail.event.clientY : evt.detail.event.targetTouches[0].clientY;\n this.preDragScrollPos = this._catTableObjectBodyInner?.scrollTop;\n this.catTableBodyScrollheight = this._catTableObjectBodyInner?.scrollHeight;\n /* 2 */\n document.addEventListener('mouseup', this.endDrag);\n document.addEventListener('mousemove', this.moveDrag);\n document.addEventListener('touchend', this.endDrag);\n document.addEventListener('touchmove', this.touchMoveDrag);\n this.drawRowSiblings?.forEach((row) => {\n row.addEventListener('mouseover', this.rowOver);\n });\n /* 3 */\n this.dragRow.style.display = 'block';\n this.dragRow.style.position = 'absolute';\n this.dragRow.style.zIndex = '500';\n this.dragRow.style.pointerEvents = 'none';\n if (window.TouchEvent && evt.detail.event instanceof TouchEvent) {\n this.highlightRow(this.dragRow);\n }\n };\n /**\n * End draggable\n * 1. Trigger custom event\n * 2. Clear drag style\n */\n this.endDrag = (e) => {\n this.isMobileDragging = false;\n if (window.TouchEvent && e instanceof TouchEvent && !this.isTouchMoved) {\n this.clearDragStyle();\n return false;\n }\n if (!this.dragRow || !this.prevDragRowOver) {\n return false;\n }\n /* 1 */\n const draggedRowInfo = {\n rowKey: this.dragRow.dataKey,\n insert: `${this.prevDragRowOver.dragHover}`,\n insertRowKey: this.prevDragRowOver.dataKey\n };\n this.dispatch({\n e,\n eventName: 'bl-row-drag-end',\n detailObj: draggedRowInfo\n });\n this.clearDragStyle();\n this.isTouchMoved = false;\n };\n /**\n * Clear Drag style\n */\n this.clearDragStyle = () => {\n if (this.prevDragRowOver)\n this.prevDragRowOver.dragHover = undefined;\n this.dragRow?.setAttribute('style', '');\n this.dragRow = null;\n document.removeEventListener('mouseup', this.endDrag);\n document.removeEventListener('mousemove', this.moveDrag);\n this.drawRowSiblings?.forEach((row) => {\n row.removeEventListener('mouseover', this.rowOver);\n row.setAttribute('style', '');\n });\n this.resetHighlightRow();\n };\n /**\n * Move draggable\n \n */\n this.moveDrag = (e) => {\n this.handleDragOnScroll(e.clientY);\n };\n /**\n * Touch draggable\n * 1. Finds the current destination element using touch coordinates\n */\n this.touchMoveDrag = (e) => {\n if (this.isMobileDragging) {\n this.isTouchMoved = true;\n // resets the initial highlight set on touch start\n this.resetHighlightRow();\n this.handleDragOnScroll(e.changedTouches[0].clientY);\n const { clientX, clientY } = e.touches[0];\n const tableCell = this.shadowRoot?.elementFromPoint(clientX, clientY); /* 1 */\n if (tableCell?.matches('cat-table-cell')) {\n const row = tableCell.closest('cat-table-row');\n if (row) {\n this.updateDragIndex(row, e.changedTouches[0].clientY);\n }\n }\n }\n };\n /**\n * Handles drag on scroll\n * 1. Update drag row position\n * 2. Check if the dragged row is near the edges\n * 3. If the dragged row is near the table-body top-edge, decrease the scrolltop of the table-body by 10\n * 4. If the dragged row is near the table-body bottom-edge and if scroll is not at the end, increase the scrolltop of the table-body by 10\n */\n this.handleDragOnScroll = (elementClientY) => {\n if (!this.dragRow) {\n return false;\n }\n /* 1 */\n if (this.prevDragPos !== undefined) {\n const pos = this.prevDragPos - elementClientY;\n const scrollPos = this._catTableObjectBodyInner?.scrollTop;\n if (scrollPos !== undefined && this.preDragScrollPos !== undefined) {\n this.dragRow.style.marginTop = scrollPos - this.preDragScrollPos - pos + 'px';\n }\n }\n if (this.prevDragRowOver) {\n this.updateDragIndex(this.prevDragRowOver, elementClientY); /* 1 */\n }\n if (this._catTableObjectBodyInner) {\n const distanceTop = this.dragRow.getBoundingClientRect().top - this._catTableObjectBodyInner.getBoundingClientRect().top;\n const distanceBottom = this._catTableObjectBodyInner.getBoundingClientRect().bottom - this.dragRow.getBoundingClientRect().bottom;\n const isNearTop = distanceTop < 50;\n const isNearBottom = distanceBottom < 50; /* 2 */\n if (isNearTop) {\n this._catTableObjectBodyInner.scrollTop -= 10; /* 3 */\n }\n if (isNearBottom &&\n this.catTableBodyScrollheight !== undefined &&\n this.catTableBodyScrollheight > this._catTableObjectBodyInner.scrollTop + this._catTableObjectBodyInner.clientHeight) {\n this._catTableObjectBodyInner.scrollTop += 10; /* 4 */\n }\n }\n };\n /**\n * Row over\n */\n this.rowOver = (e) => {\n const row = e.currentTarget;\n const pos = e.clientY;\n this.updateDragIndex(row, pos);\n };\n /**\n * Update drag index\n */\n this.updateDragIndex = (row, pos) => {\n const boundingClientRect = row.shadowRoot?.children[0].getBoundingClientRect();\n const { y, height } = boundingClientRect;\n const dragHover = y + height / 2 > pos ? 'before' : 'after';\n row.dragHover = dragHover;\n if (row !== this.prevDragRowOver) {\n if (this.prevDragRowOver)\n this.prevDragRowOver.dragHover = undefined;\n this.prevDragRowOver = row;\n }\n };\n this.handleKeyboardDragStart = (event) => {\n this.dragRow = event.detail?.dragRow;\n if (this.dragRow) {\n this.dragRow.style.display = 'block';\n this.dragRow.style.position = 'absolute';\n this.dragRow.style.zIndex = '500';\n this.dragRow.style.pointerEvents = 'none';\n this.dragRow.setAttribute('data-keyboard-dragging', 'true');\n this.highlightRow(this.dragRow);\n }\n };\n this.handleKeyboardDragEnd = (event) => {\n const row = event.detail?.row;\n const direction = event.detail?.direction;\n row.dragHover = direction;\n if (row !== this.prevDragRowOver) {\n if (this.prevDragRowOver)\n this.prevDragRowOver.dragHover = undefined;\n this.prevDragRowOver = row;\n }\n this.dispatch({\n e: event,\n eventName: 'bl-row-drag-end',\n detailObj: {\n rowKey: this.dragRow?.dataKey,\n insert: `${this.prevDragRowOver?.dragHover}`,\n insertRowKey: this.prevDragRowOver?.dataKey\n }\n });\n this.clearDragStyle();\n };\n /**\n * Highlights the row for keyboard and mobile drag and drop.\n * @param row\n */\n this.highlightRow = (row) => {\n if (this._catTableRowsArray && this._catTableRowsArray?.length > 2) {\n let currentIndex = this._catTableRowsArray?.indexOf(row);\n const lastIndex = this._catTableRowsArray?.length - 1;\n let nextRow;\n if (currentIndex === lastIndex) {\n nextRow = row.previousElementSibling;\n }\n else {\n nextRow = row.nextElementSibling;\n nextRow.dragHover = 'before';\n }\n this.currentDragHoveredRow = nextRow;\n }\n };\n /**\n * Highlights the row for keyboard and mobile drag and drop.\n * @param row\n */\n this.resetHighlightRow = () => {\n if (this.currentDragHoveredRow) {\n this.currentDragHoveredRow.dragHover = undefined;\n }\n };\n /**\n * Sets the frozen table cells from header.\n * 1. Add up all the frozen cell widths in the last header row and set the custom property to adjust the scrollbar horizontal offset.\n * 2. Get the height of the table header and set the custom property to adjust the scrollbar vertical offset.\n * 3. Set the offset for each table header cell.\n * 4. Update the table cells to match the header cell.\n */\n this.setFrozenCells = () => {\n const frozenHeaderCells = [];\n // Reset frozen cells.\n this.frozenCells = [];\n /* 1 */\n const lastHeaderRow = this.querySelector('cat-table-header cat-table-row:last-child');\n let lastHeaderRowFrozenCells = Array.from(lastHeaderRow?.querySelectorAll('cat-table-header-cell') ?? []).filter((el) => el.isFrozen === true);\n if (lastHeaderRowFrozenCells.length) {\n if (this.mobileBreakPoint >= window.innerWidth) {\n lastHeaderRowFrozenCells = [lastHeaderRowFrozenCells[0]];\n }\n const frozenHeaderCellWidths = [];\n lastHeaderRowFrozenCells.forEach((cell) => {\n let cellWidth;\n // If the cell has a right border applied, add 1px to account for it.\n const headerCell = cell.shadowRoot?.querySelector('.cat-c-table-header-cell');\n if (headerCell) {\n if (cell.border === 'right') {\n cellWidth = headerCell.clientWidth + 1;\n }\n else {\n cellWidth = headerCell.clientWidth;\n }\n // Push widths to the array.\n frozenHeaderCellWidths.push(cellWidth);\n }\n });\n // Add up all the values in the array and set the margin left value.\n const marginLeft = frozenHeaderCellWidths.reduce((previousValue, el) => previousValue + el, 0);\n // Set the scrollbar custom property with the margin left value.\n this._catTableObjectBodyInner?.style.setProperty('--cat-table-scrollbar-margin-left', marginLeft.toString() + 'px');\n }\n /* 2 */\n const frozenHeader = this.querySelector('cat-table-header')?.shadowRoot?.querySelector('.cat-c-table-header--frozen');\n if (frozenHeader) {\n // Set timeout to let tooltips apply if present to get proper height.\n setTimeout(() => {\n // Get the height of the frozen header.\n const marginTop = frozenHeader.clientHeight;\n // Set the scrollbar custom property with the margin top value.\n this._catTableObjectBodyInner?.style.setProperty('--cat-table-scrollbar-margin-top', marginTop.toString() + 'px');\n }, 1);\n }\n this._catTableRows.forEach((row) => {\n const isHeaderRow = row.parentElement?.nodeName === 'CAT-TABLE-HEADER' ? true : false;\n if (isHeaderRow) {\n let cells;\n /* 3 */\n const headerRowCells = isHeaderRow ? Array.from(row.children) : [];\n cells = this._catTableHeaderCells.filter((el) => el.isFrozen === true);\n if (this.mobileBreakPoint >= window.innerWidth) {\n cells = [cells[0]];\n }\n cells.forEach((cell) => {\n if (headerRowCells.indexOf(cell) !== -1) {\n const index = headerRowCells.indexOf(cell);\n // Get offset.\n const offset = headerRowCells.slice(0, index).reduce((previousValue, el) => {\n const headerCell = el.shadowRoot?.querySelector('.cat-c-table-header-cell');\n if (headerCell) {\n return previousValue + headerCell.clientWidth;\n }\n else {\n return previousValue;\n }\n }, 0);\n // Set index.\n frozenHeaderCells.push({\n index,\n offset\n });\n // Update header cell.\n cell.style.setProperty('--cat-table-header-cell-left', offset.toString() + 'px');\n // Add cell to state.\n if (!this.frozenCells?.includes(cell)) {\n this.frozenCells?.push(cell);\n }\n }\n });\n }\n else {\n /* 4 */\n const cells = Array.from(row.querySelectorAll('cat-table-cell'));\n if (this.mobileBreakPoint >= window.innerWidth) {\n // Reset all the frozen cells before updating them to match with header cell\n cells?.forEach((element) => {\n if (element.isFrozen) {\n element.isFrozen = false;\n }\n });\n }\n frozenHeaderCells.forEach((cellInfo) => {\n if (cells[cellInfo.index]) {\n // Update cells to match header cell.\n cells[cellInfo.index].isFrozen = true;\n cells[cellInfo.index].style.setProperty('--cat-table-cell-left', cellInfo.offset.toString() + 'px');\n // Add cell to state.\n if (!this.frozenCells?.includes(cells[cellInfo.index])) {\n this.frozenCells?.push(cells[cellInfo.index]);\n }\n }\n });\n }\n });\n };\n /**\n * Sets the table cell width based on the header cells\n * 1. Set the width for each table header cell.\n * 2. Update the table cells to match the header cell.\n */\n this.setCellWidths = () => {\n const widthHeaderCells = [];\n // Reset width cells.\n this.widthCells = [];\n this._catTableRows.forEach((row) => {\n const isHeaderRow = row.parentElement?.nodeName === 'CAT-TABLE-HEADER';\n if (isHeaderRow) {\n /* 1 */\n let cells;\n const headerRowCells = isHeaderRow ? Array.from(row.children) : [];\n cells = this._catTableHeaderCells.filter((el) => el.width);\n cells.forEach((cell) => {\n if (headerRowCells.indexOf(cell) !== -1) {\n const index = headerRowCells.indexOf(cell);\n // Get width.\n const width = cell.width?.toString();\n // Set index.\n if (width) {\n widthHeaderCells.push({\n index,\n width\n });\n }\n // Add cell to state.\n if (!this.widthCells?.includes(cell)) {\n this.widthCells?.push(cell);\n }\n }\n });\n }\n else {\n /* 2 */\n const cells = Array.from(row.querySelectorAll('cat-table-cell'));\n widthHeaderCells.forEach((cellInfo) => {\n if (cells[cellInfo.index]) {\n // Add cell to state.\n if (!this.widthCells?.includes(cells[cellInfo.index])) {\n this.widthCells?.push(cells[cellInfo.index]);\n }\n }\n });\n }\n });\n };\n /**\n * Sets the sticky table cells from header.\n * 1. If there are frozen cells, then shift over the sticky cell to not overlap it, else set to 0.\n * 2. Set the custom property to offset the sticky table header cell.\n */\n this.setStickyCells = () => {\n if (this._catIsStickyCells) {\n const frozenCells = this._catTableHeaderCells.filter((el) => el.isFrozen === true);\n const stickyCells = this._catTableHeaderCells.filter((el) => el.isSticky === true);\n stickyCells.forEach((cell, index) => {\n let offset;\n if (index === 0) {\n /* 1 */\n if (frozenCells.length > 0) {\n const headerCell = cell.shadowRoot?.querySelector('.cat-c-table-header-cell');\n if (headerCell) {\n offset = headerCell.getBoundingClientRect().left;\n }\n }\n else {\n offset = 0;\n }\n /* 2 */\n this.style.setProperty('--cat-table-header-cell-sticky-left', offset?.toString() + 'px');\n }\n });\n }\n };\n /**\n * Table cell mouse over\n * 1. Get the text inside the cell title and set the tooltip text to display inside the tooltip content\n * 2. Only set the tooltip if the header cell filter is not active and there is text\n * 3. Set the tooltip top position based on the table row position\n * 4. If the cell is first, then adjust the tooltip alignment and left position\n * 5. If the cell is frozen then don't reposition the tooltip based on scroll\n * 6. Set the tooltip alignment based on if the cell is first or not\n * 7. Set the tooltip position and to show on hover\n */\n this.cellOver = (e) => {\n const cell = e.target;\n let cellElement;\n if (cell.nodeName === 'CAT-TABLE-HEADER-CELL') {\n cellElement = cell.shadowRoot?.querySelector('.cat-c-table-header-cell');\n }\n else if (cell.nodeName === 'CAT-TABLE-CELL') {\n cellElement = cell.shadowRoot?.querySelector('.cat-c-table-cell');\n }\n /* 1 */\n let cellTitleText;\n if (cellElement && cellElement.querySelector('slot')) {\n cellTitleText = cellElement.querySelector('slot')?.assignedNodes({ flatten: true })[0].textContent;\n }\n /* 2 */\n if ((cell.isActiveFilter === false || !cell.isActiveFilter) && cellTitleText) {\n this.tooltipText = cellTitleText; /* 1 */\n const tableRow = cell.parentElement?.shadowRoot?.querySelector('.cat-c-table-row')?.getBoundingClientRect();\n const rowTopPosition = tableRow.top + window.scrollY;\n const tooltipArrowHeight = 12;\n const top = rowTopPosition - tooltipArrowHeight; /* 3 */\n /* 4 */\n let left;\n const cellElementBoundingClient = cellElement?.getBoundingClientRect();\n if (cell.hasAttribute('first')) {\n /* 5 */\n if (cell.isFrozen) {\n left = cellElementBoundingClient.left + 16;\n }\n else {\n left = cellElementBoundingClient.left + 16 - this.prevScrollVal;\n }\n // Need to set top align to show the tooltip correctly on mobile/rtl view\n this.tooltipAlign = 'top'; /* 6 */\n }\n else {\n const clientWidth = cellElement?.clientWidth;\n // Position of the tooltip will be misaligned when scrolling the table header to left or right if we reduce prevScrollVal from left.\n left = cellElementBoundingClient.left + clientWidth / 2;\n this.tooltipAlign = 'top'; /* 6 */\n }\n /* 7 */\n this.tooltipPosition = [top, left];\n this.showTooltip = true;\n }\n };\n /**\n * Table cell mouse out\n * 1. Hide the tooltip on mouse out of the table cell\n */\n this.cellOut = () => {\n this.showTooltip = false;\n };\n /**\n * Setup self foldable\n * 1. Add folding cells (do once)\n * 2. Prevent scrolling if any row is self foldable\n * 3. Adding foldable child row for populating clipped columns.\n * 4. Add all folding header cells to state.\n */\n this.setSelfFoldable = () => {\n /* 1 */\n if (this._catIsSelfFoldable) {\n this.setSelfFoldableExpandable();\n /* 2 */\n const tableBodyInner = this.shadowRoot?.querySelector('.cat-c-table-object__body-inner');\n if (tableBodyInner) {\n tableBodyInner.style.overflowX = 'hidden';\n }\n /* 3 */\n // @TODO Remove the self foldable child row if there are no cells in it\n let prevShowWidth = 0;\n const selfFoldableRows = this._catTableRowsArray?.filter((el) => el.isSelfFoldable === true);\n selfFoldableRows?.forEach((row) => {\n if (row.isExpandableChild) {\n row.insertAdjacentHTML('afterend', `\n \n `);\n }\n else {\n row.insertAdjacentHTML('afterend', `\n \n `);\n }\n });\n /* 4 */\n this.foldingHeaderCells = Array.from(this.querySelectorAll('cat-table-header > cat-table-row > cat-table-header-cell')).map((cell, index) => {\n const element = cell.shadowRoot;\n let cellStyles;\n if (element) {\n cellStyles = window.getComputedStyle(element.children[0]);\n }\n const minWidthStyle = cellStyles?.getPropertyValue('min-width');\n const minWidth = minWidthStyle?.includes('px') ? parseInt(minWidthStyle.replace('px', ''), 10) : cell.clientWidth;\n prevShowWidth = prevShowWidth + minWidth;\n return {\n showWidth: prevShowWidth,\n el: cell,\n initialRow: cell.parentElement,\n associatedCells: Array.from(this.querySelectorAll(`cat-table-cell:nth-child(${index + 1})`)).map((el) => {\n const initialRow = el.closest('cat-table-row');\n const foldingRow = initialRow?.nextElementSibling;\n return {\n initialRow,\n foldingRow,\n el\n };\n })\n };\n });\n }\n };\n /**\n * Set expandable rows\n * 1.) When no rows are Expandable, iterate through rows and get the first cell and change `isFirst` and `isExpandable` to false.\n */\n this.setExpandableRows = () => {\n if (this._catIsExpandable || this._catIsExpandableNested) {\n this.setTableRole();\n this.setExpandableRowsFirstCells();\n this.setExpandableGroups();\n this.setExpandableNestedGroups();\n }\n if (!this._catIsExpandable && !this._catIsExpandableNested) {\n const firstHeaderCell = this.querySelector('cat-table-header-cell:first-of-type');\n if (firstHeaderCell) {\n firstHeaderCell.isExpandable = false;\n }\n this._catTableRows.forEach((row) => {\n row.isExpandableActive = false;\n const rowTableCells = row.querySelectorAll('cat-table-cell');\n rowTableCells.forEach((cell, index) => {\n /* 1 */\n if (index === 0) {\n cell.isFirst = false;\n cell.isExpandable = false;\n cell.isExpandableActive = false;\n cell.isTriggerEventAttached = false;\n }\n });\n });\n }\n };\n /**\n * Set table header cell z-index\n * 1. Prevent the filter dropdowns from being overlapped by the following row.\n * 2. If the cell is frozen, give it a higher z-index to prevent overlap on scroll\n * 3. Subtract the row index for the default z-index value\n * 4. Apply an incremented z-index custom property to each table header cell\n */\n this.setTableHeaderCellZindex = () => {\n /* 1 */\n const tableHeaderRows = this.querySelector('cat-table-header')?.querySelectorAll('cat-table-row');\n if (tableHeaderRows) {\n tableHeaderRows.forEach((row, index) => {\n row.querySelectorAll('cat-table-header-cell').forEach((cell, rowIndex) => {\n let indexValue;\n /* 2 */\n if (cell.isFrozen && this.mobileBreakPoint <= window.innerWidth) {\n indexValue = 400 - index; /* 3 */\n }\n else if (this.mobileBreakPoint >= window.innerWidth && rowIndex === 0) {\n const colspan = cell?.colspan;\n if (colspan === undefined || colspan === 1) {\n indexValue = 400 - index; /* 3 */\n }\n else {\n indexValue = 300 - index; /* 3 */\n }\n }\n else {\n indexValue = 300 - index; /* 3 */\n }\n cell.style.setProperty('--cat-table-header-cell-zindex', indexValue.toString()); /* 4 */\n });\n });\n }\n };\n /**\n * Set mobile view\n * 1. Toggle the mobile view active state and modal\n * 2. For the target row clicked, create an array of div's with table header and cell content to print in the modal\n * 3. Set the modal heading to use the first table header cell inner text\n * 4. Set the markup in the modal body\n * 5. Return focus to the button on click of the modal back button\n * 6. Return focus to the button on press of the escape key in the modal\n */\n this.toggleMobileViewModal = (e) => {\n /* 1 */\n if (e.type === 'click' || (e instanceof KeyboardEvent && (e.key === KEYS.ENTER || e.key === KEYS.SPACE))) {\n e.preventDefault();\n if (this._catModal) {\n this._catModal.isActive = !this._catModal.isActive;\n }\n const target = e.currentTarget;\n this.targetButton = target.shadowRoot?.querySelector('.cat-c-button');\n const targetRow = target.getRootNode().host.closest('cat-table-row');\n this.targetRowCells = targetRow.querySelectorAll('cat-table-cell');\n let targetModalBody = '';\n /* 2 */\n if (this.targetRowCells) {\n this.targetRowCells.forEach((_, index) => {\n // Skipping all the header cells which are having colspan to get the correct heading for modal\n const cellHeading = this.querySelectorAll(`cat-table-header-cell:not([colspan])`)[index];\n targetModalBody += `\n
\n
${cellHeading?.innerText}
\n
\n
\n `;\n });\n }\n /* 3 */\n const modalHeading = this._catModal?.querySelector('.cat-c-modal__heading');\n const element = this.querySelector(`cat-table-header cat-table-row:last-child cat-table-header-cell:first-child`);\n if (modalHeading && element) {\n modalHeading.innerHTML = element.innerText;\n }\n /* 4 */\n const modalBody = this._catModal?.querySelector('.cat-c-modal__body');\n if (modalBody) {\n modalBody.innerHTML = ''; /* 5 */\n }\n if (targetModalBody && modalBody) {\n setTimeout(() => {\n modalBody.innerHTML = targetModalBody;\n /**\n * As passing innerHTML will remove the event listeners attached to the element, we will query the table-cell chilNodes\n * which is in light dom(slot) and append it to the above created div (cat-c-table-cell__cell-content-mobile) when modal is opened.\n */\n this.targetRowCells?.forEach((cell, index) => {\n Array.from(cell.childNodes).forEach((child) => {\n modalBody.querySelector(`[data-index=\"${index}\"] div.cat-c-table-cell__cell-content-mobile`)?.append(child);\n });\n });\n }, 2);\n }\n /* 5 */\n const modalBackButton = this._catModal?.shadowRoot?.querySelector('.cat-c-modal__back-button');\n modalBackButton?.addEventListener('click', (e) => {\n e.preventDefault();\n this.restoreChild();\n });\n /* 6 */\n this._catModal?.addEventListener('keydown', (e) => {\n if (e.key === KEYS.ESCAPE) {\n this.restoreChild();\n }\n });\n }\n };\n /**\n * Set mobile view\n * 1. Fire functions when the table object width is less than 560px\n */\n this.setMobileView = () => {\n if (this._catIsMobileView) {\n /* 1 */\n if (this.mobileBreakPoint >= this._catTableObjectWidth) {\n this.startMobileView();\n }\n else {\n this.endMobileView();\n }\n }\n };\n }\n static { this.styles = styles; }\n /**\n * Query the cat modal\n */\n get _catModal() {\n return this.shadowRoot?.querySelector('cat-modal');\n }\n /**\n * Query the cat table body\n */\n get _catTableBody() {\n return this.querySelector('cat-table-body');\n }\n /**\n * Query the table object body\n */\n get _catTableObjectBody() {\n return this.shadowRoot?.querySelector('.cat-c-table-object__body');\n }\n /**\n * Query the table object body inner\n */\n get _catTableObjectBodyInner() {\n return this.shadowRoot?.querySelector('.cat-c-table-object__body-inner');\n }\n /**\n * Query the cat table body element\n */\n get _catTableObjectElement() {\n return this.shadowRoot?.querySelector('.cat-c-table-object');\n }\n /**\n * Get the width of the table object\n */\n get _catTableObjectWidth() {\n return this._catTableObjectElement.getBoundingClientRect().width;\n }\n /**\n * Query the cat table element\n */\n get _catTableElement() {\n return this.querySelector('cat-table')?.shadowRoot?.querySelector('.cat-c-table');\n }\n /**\n * Query the cat table body element\n */\n get _catTableHeaderElement() {\n return this.querySelector('cat-table-header')?.shadowRoot?.querySelector('.cat-c-table-header');\n }\n /**\n * Get the width of the table header\n */\n get _catTableHeaderWidth() {\n if (this._catTableHeaderElement) {\n return this._catTableHeaderElement.getBoundingClientRect().width;\n }\n }\n /**\n * Query all the rows in the cat table\n */\n get _catTableRows() {\n return Array.from(this.querySelectorAll('cat-table-row'));\n }\n /**\n * Query the rows in the cat table body only\n */\n get _catTableRowsArray() {\n const children = this._catTableBody?.children;\n if (children) {\n return Array.from(children);\n }\n }\n /**\n * Query all the header cells in the cat table\n */\n get _catTableHeaderCells() {\n return Array.from(this.querySelectorAll('cat-table-header-cell'));\n }\n /**\n * Check if any rows are expandable\n */\n get _catIsExpandable() {\n return this._catTableRowsArray?.some((el) => el.isExpandable === true);\n }\n /**\n * Check if any rows are expandable nested\n */\n get _catIsExpandableNested() {\n return this._catTableRowsArray?.some((el) => el.isExpandableNested === true);\n }\n /**\n * Check if any rows are self foldable\n */\n get _catIsSelfFoldable() {\n return this._catTableRowsArray?.some((el) => el.isSelfFoldable === true);\n }\n /**\n * Check if any cells are frozen\n */\n get _catIsFrozenCells() {\n return this._catTableHeaderCells.some((el) => el.isFrozen === true);\n }\n /**\n * Check if any cells are sticky\n */\n get _catIsStickyCells() {\n return this._catTableHeaderCells.some((el) => el.isSticky === true);\n }\n /**\n * Check if any rows have a mobile view\n */\n get _catIsMobileView() {\n return this._catTableRowsArray?.some((el) => el.isMobileView === true);\n }\n /**\n * Check if any Row cells have a loading state\n */\n get _catIsTableRowsLoading() {\n return this._catTableRows.some((el) => el.isLoading === true);\n }\n /**\n * Check if any customRows created for Self-foldable Tables are present\n */\n get _customSelfFoldRows() {\n const element = this._catTableBody?.querySelectorAll('cat-table-row[isCustomRow]');\n if (element) {\n return Array.from(element);\n }\n }\n /**\n * Show bulk actions\n */\n get _catIsAnyBulkActions() {\n return (this.slotNotEmpty('bulkAction') ||\n this.slotNotEmpty('bulkActionSingle') ||\n this.slotNotEmpty('bulkActionMore') ||\n this.slotNotEmpty('bulkActionSingleMore'));\n }\n /**\n * Show bulk actions\n */\n get _catIsAnyBulkActionsMore() {\n return this.slotNotEmpty('bulkActionMore') || this.slotNotEmpty('bulkActionSingleMore');\n }\n /**\n * Show bulk actions single\n */\n get _catShowBulkActionSingle() {\n return this.slotNotEmpty('bulkActionSingle') && this.bulkActionCount === 1;\n }\n /**\n * Show bulk actions single more\n */\n get _catShowBulkActionSingleMore() {\n return this.slotNotEmpty('bulkActionSingleMore') && this.bulkActionCount === 1;\n }\n /**\n * First updated lifecycle hook\n * 1. When the component is first updated, run these functions\n */\n firstUpdated() {\n this.setTableHeight();\n this.setTableMinWidth();\n this.setTableColumnWidth();\n this.setTableColumnCount();\n this.setTableHeaderCellZindex();\n this.setMobileView();\n }\n /**\n * Connected callback lifecycle\n * 1. Add window resize event listener\n * 2. Calculate and assign shadow to frozen cells if slotChange occurs\n */\n async connectedCallback() {\n super.connectedCallback();\n await this.updateComplete;\n setTimeout(() => {\n if (!this._catIsTableRowsLoading) {\n this.setCellTooltip();\n }\n this.setCellWidths();\n this.setStickyCells();\n this.tableResizeObserver?.observe(this.renderRoot.children[0]);\n }, 1);\n this.addEventListener('bl-draggable-cell-mousedown', (evt) => {\n this.startDrag(evt);\n });\n window.addEventListener('resize', this.onWindowResize); /* 1 @TODO: use with resize observer */\n this.addEventListener('bl-table-frozen-change', this.handleFrozenChanged);\n this.addEventListener('bl-table-cell-change', () => {\n this.handleFrozenChanged();\n this.setTableColumnCount();\n this.setFrozenShadows(this._catTableObjectBodyInner?.scrollLeft ?? 0, 'onChange'); /* 2*/\n });\n // When self-foldable table-rows are initialized, bl-table-row-initialize will be triggered from table-row\n this.addEventListener('bl-table-row-initialize', this.onRowInitialize);\n // When isExpandable is toggled, bl-table-row-prop-change will be triggered from table-row\n this.addEventListener('bl-table-row-prop-change', this.onRowPropsChange);\n this.addEventListener('bl-keyboard-drag-start', this.handleKeyboardDragStart);\n this.addEventListener('bl-keyboard-drag-end', this.handleKeyboardDragEnd);\n this.addEventListener('bl-keyboard-drag-reset', () => {\n this.dragRow?.setAttribute('style', '');\n this.dragRow?.removeAttribute('data-keyboard-dragging');\n this.resetHighlightRow();\n });\n this.addEventListener('bl-table-header-loading', () => {\n if (this.clearSetTimeout) {\n clearTimeout(this.clearSetTimeout);\n }\n this.clearSetTimeout = setTimeout(async () => {\n clearTimeout(this.clearSetTimeout);\n if (!this._catIsTableRowsLoading) {\n this.setCellTooltip();\n }\n }, 400);\n });\n }\n /**\n * Disconnected callback lifecycle\n * 1. Remove window resize event listener\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('resize', this.onWindowResize); /* 1 */\n document.removeEventListener('mouseup', this.endDrag);\n document.removeEventListener('mousemove', this.moveDrag);\n }\n handleFrozenChanged() {\n this.setFrozenCells();\n this.setTableHeaderCellZindex();\n }\n /**\n * Called when SelfFoldable is true\n * 1. Remove all the available customTableRow created for self-foldable rows in setSelfFoldable(), so that it gets removed when the parent row is not available.\n * 2. Call startSelfFoldable() after debounce.\n */\n onRowInitialize() {\n if (this._customSelfFoldRows) {\n this._customSelfFoldRows.forEach((customTableRow) => {\n customTableRow.remove(); /* 1 */\n });\n }\n if (this.clearSetTimeoutRow) {\n clearTimeout(this.clearSetTimeoutRow);\n }\n this.clearSetTimeoutRow = setTimeout(async () => {\n clearTimeout(this.clearSetTimeoutRow);\n this.startSelfFoldable(); /* 2 */\n }, 400);\n }\n /**\n * Called when `isExpandable` props is toggled dynamically in table-row\n * 1. Call setExpandableRows() only when no rows are self-foldable, since it is already being called in startSelfFoldable().\n * Useful when self-foldable with expandable table variant is created.\n */\n onRowPropsChange(event) {\n if (this.clearSetTimeoutRowProps) {\n clearTimeout(this.clearSetTimeoutRowProps);\n }\n if (event.detail.propName === 'isExpandable') {\n this.setTableRole();\n }\n this.clearSetTimeoutRowProps = setTimeout(() => {\n clearTimeout(this.clearSetTimeoutRowProps);\n if (event.detail.propName === 'isExpandable' && !this._catIsSelfFoldable) {\n /* 1 */\n this.setExpandableRows();\n }\n }, 400);\n }\n /**\n * Sets the frozen shadows.\n * 1. If scrolled position is greater than zero, then add shadows\n * 2. If scroll position is at zero, then remove shadows\n */\n setFrozenShadows(scrollLeft, trigger) {\n if (this.frozenCells && scrollLeft > 0 && (!this.prevScrollVal || trigger === 'onChange')) {\n /* 1 */\n this.frozenCells.forEach((el) => {\n el.isActiveShadow = true;\n });\n }\n else if (this.frozenCells && scrollLeft === 0 && this.prevScrollVal > 0) {\n /* 2 */\n this.frozenCells.forEach((el) => {\n el.isActiveShadow = false;\n });\n }\n }\n /**\n * Set right and left gradients on tables\n * 1. Target the actual table inside table object body\n * 2. Get the width of the table offscreen when table overflows\n * 3. If table width is less than or equal to table object body width, remove all shadows\n * 4. If table object body inner scroll isn't all the way to the left or to the right, turn all shadows on\n * 5. If table body inner scroll is >= to width of table offscreen, turn off right shadow and turn left shadow on\n * 6. Else, set the right shadow to true and the left shadow to false\n */\n setOverflowShadows() {\n const tableObjectBody = this._catTableObjectBody;\n const tableObjectBodyInner = this._catTableObjectBodyInner;\n if (this._catTableElement && tableObjectBody && tableObjectBodyInner) {\n const tableWidth = this._catTableElement.clientWidth; /* 2 */\n const tableScrollWidth = tableObjectBodyInner.scrollWidth; /* 2 */\n const tableOffScreen = tableScrollWidth - tableWidth; /* 2 */\n if (tableScrollWidth <= tableWidth) {\n /* 3 */\n this.isEnd = false;\n this.isStart = false;\n }\n else if (tableObjectBodyInner.scrollLeft > 0 && tableObjectBodyInner.scrollLeft < tableOffScreen) {\n /* 4 */\n this.isEnd = true;\n this.isStart = true;\n }\n else if (tableObjectBodyInner.scrollLeft >= tableOffScreen) {\n /* 5 */\n this.isEnd = false;\n this.isStart = true;\n }\n else {\n /* 6 */\n this.isEnd = true;\n this.isStart = false;\n }\n }\n }\n /**\n * Sets tooltips for cells\n * 1. Loop through all the table rows and cells\n * 2. Assumes only text in cells\n * 3. Use range and count more than 2 render rectangles\n * 4. If there are more than two rects., then fire the mouse events\n * 5. Check for the overflow and Set the tooltip to true to enable the line clamp\n * 6. If the first cell, then set the isFirst property to true\n */\n setCellTooltip() {\n /* 1 */\n if (this.cellTooltipAttached) {\n return;\n }\n this._catTableRows.forEach((row) => {\n const rowTableCells = row.querySelectorAll('cat-table-header-cell, cat-table-cell');\n rowTableCells.forEach((cell, index) => {\n /* 2 */\n const cellTextWrapper = cell.shadowRoot?.querySelector('.cat-c-table-header-cell__title, .cat-c-table-cell__title');\n const nodes = cellTextWrapper?.querySelector('slot')?.assignedNodes({ flatten: true });\n if (nodes?.[0] === undefined) {\n return null;\n }\n /* 3 */\n const range = document.createRange();\n range.selectNodeContents(nodes[0]);\n const rects = range.getClientRects();\n /* 4 */\n if (rects.length > 2 && nodes?.[0].nodeName === '#text') {\n /* 5 */\n cell.tooltip = true;\n cell.updateComplete.then(() => {\n if (cellTextWrapper && cellTextWrapper.offsetHeight < cellTextWrapper.scrollHeight) {\n this.tooltip = true;\n this.tooltipText = cell.innerText;\n cell.addEventListener('mouseover', this.cellOver);\n cell.addEventListener('mouseout', this.cellOut);\n }\n else {\n cell.tooltip = false;\n }\n });\n /* 6 */\n if (index === 0) {\n cell.setAttribute('first', 'true');\n }\n }\n });\n this.cellTooltipAttached = true;\n });\n }\n /**\n * Set expandable for self foldable rows\n * 1. If the table object width is smaller than the table header, then enable expandable rows for self foldable rows.\n * 2. If row is an expandable child, then set expandable nested if has self foldable items.\n * 3. If row is an expandable, then set expandable if has self foldable items.\n */\n setSelfFoldableExpandable() {\n /* 1 */\n if (this._catTableHeaderWidth !== undefined && this._catTableObjectWidth < this._catTableHeaderWidth) {\n this._catTableRowsArray?.forEach((row) => {\n if (row.isSelfFoldable) {\n if (row.isExpandableChild) {\n /* 2 */\n row.isExpandableNested = true;\n }\n else {\n /* 3 */\n row.isExpandable = true;\n }\n }\n });\n }\n }\n /**\n * Process self foldable rows\n */\n processSelfFoldable(width) {\n if (this.foldingHeaderCells) {\n // Determine which cells to show.\n this.foldingHeaderCells.forEach((cellInfo, index) => {\n // Don't adjust first item.\n if (index === 0) {\n return null;\n }\n if (width < cellInfo.showWidth) {\n // Abort if already processed.\n if (!cellInfo.el.isConnected) {\n return null;\n }\n // Remove header el.\n cellInfo.el.remove();\n // Fold cells.\n cellInfo.associatedCells.forEach((cell) => {\n if (cell.el.closest('cat-table-row') === cell.initialRow) {\n cell.el.remove();\n if (cell.foldingRow) {\n // Query the closest table cell in the current folding row with a data-index attribute\n let indexEl = cell.foldingRow\n .querySelector(`[data-index]`)\n ?.closest('cat-table-cell');\n let position;\n // Check if there is any cell item already folded into the current table cell\n if (indexEl && indexEl.querySelector('.cat-c-table-cell__self-foldable-item')) {\n // If an item already exists, compare its index with the current table header cell index\n const element = indexEl.querySelector('.cat-c-table-cell__self-foldable-item')?.dataset?.index;\n if (element !== undefined && +element > index) {\n // If the existing item has a higher index, insert before the existing item\n position = 'afterbegin';\n }\n else {\n const prevCellItem = cell.foldingRow.querySelector(`[data-index=\"${index - 1}\"]`);\n // Get the index of the cell item before the current index\n const prevIndex = prevCellItem?.dataset?.index;\n // Check if there is a cell item with an index less than the current index\n if (prevIndex !== undefined && +prevIndex < index) {\n // Update indexEl to the cell with the previous index and set position to insert after it\n indexEl = prevCellItem;\n position = 'afterend';\n }\n else {\n // If no item with a lower index is found, insert at the end\n position = 'beforeend';\n }\n }\n }\n else {\n // If no existing item is found, insert at the end\n position = 'beforeend';\n }\n const insertEl = indexEl ? indexEl : cell.foldingRow.children[0];\n // If cell has inner HTML, then print the self foldable cell.\n if (cell.el.innerHTML) {\n insertEl.insertAdjacentHTML(position, `
\n
${cellInfo.el.innerText}
\n
\n
`);\n /**\n * As passing innerHTML will remove the event listeners attached to the element, we will query the table-cell chilNodes\n * which is in light dom(slot) and append it to the above created div (cat-c-table-cell__cell-content) when the cell is moved to self-foldable row.\n */\n Array.from(cell.el.childNodes).forEach((child) => {\n cell.foldingRow.children[0].querySelector(`[data-index=\"${index}\"] div.cat-c-table-cell__cell-content`)?.append(child);\n });\n // To display the row\n if (cell.foldingRow.isEmptySelfFoldable) {\n cell.foldingRow.isEmptySelfFoldable = false;\n }\n }\n }\n }\n });\n }\n else {\n // Abort if already processed.\n if (cellInfo.el.isConnected) {\n return null;\n }\n // Attached header.\n cellInfo.initialRow.appendChild(cellInfo.el);\n cellInfo.associatedCells.forEach((cell) => {\n if (cell.foldingRow) {\n Array.from(cell.foldingRow.querySelectorAll(`[data-index=\"${index}\"]`)).forEach((el) => {\n /**\n * The table-cells light dom which got appended to the self-folding row above is moved out to their original position inside table-cell when it moves out of self-foldable row.\n */\n const element = el.querySelector('div.cat-c-table-cell__cell-content')?.childNodes;\n if (element) {\n Array.from(element)?.forEach((child) => {\n cell.el.append(child);\n });\n }\n el.remove();\n });\n // if no cells are self-folded inside the row,hide the row\n if (Array.from(cell.foldingRow.querySelectorAll(`.cat-c-table-cell__self-foldable-item`)).length === 0) {\n cell.foldingRow.isEmptySelfFoldable = true;\n }\n }\n cell.initialRow?.appendChild(cell.el);\n });\n }\n });\n // Adjust column width.\n this.setTableColumnCount();\n }\n }\n /**\n * Set expandable first cells\n * 1. Loop through all the rows.\n * 2. If the row is mot expandable, set isExpandable and isExpandableActive to false.\n * 3. If is the first table cell and is expandable, then set the cell expandable to true to show the accordion arrow\n * 4. If is first table cell and row is expandable nested child, then set the cell is expanded nested child to true.\n * 5. If first table cell and is not expandable, then set isFirst to true to align the cells vertically\n */\n setExpandableRowsFirstCells() {\n /* 1 */\n this._catTableRows.forEach((row) => {\n /* 2 */\n if (!row.isExpandable) {\n row.isExpandableActive = false;\n }\n if (!row.isExpandableNested) {\n row.isExpandableNestedChildActive = false;\n }\n const rowTableCells = row.querySelectorAll('cat-table-header-cell, cat-table-cell');\n rowTableCells.forEach((cell, index) => {\n /* 3 */\n if ((index === 0 && row.isExpandable) ||\n (index === 0 && row.isExpandableNested) ||\n (index === 0 && cell.nodeName === 'CAT-TABLE-HEADER-CELL')) {\n cell.isExpandable = true;\n }\n /* 4 */\n if (index === 0 && row.isExpandableNestedChild) {\n cell.isExpandableNestedChild = true;\n }\n /* 5 */\n if (index === 0 && !row.isExpandable) {\n cell.isFirst = true;\n if (cell.nodeName !== 'CAT-TABLE-HEADER-CELL' && !row.isExpandableNested) {\n cell.isExpandable = false;\n cell.isExpandableActive = false;\n cell.isTriggerEventAttached = false;\n }\n }\n });\n });\n }\n /**\n * Set expandable active state\n * 1. Toggle the active state between true and false.\n * 2. Toggle the state of aria-expanded when a parent row is clicked.\n * 3. Toggle the active class to row table cell when clicked.\n * 4. Toggle the active class on expandable children when the parent row is clicked.\n * 5. Custom event emitter for the row expanded\n */\n toggleExpandableRows(parent, group, el, index, e) {\n e.preventDefault();\n el.isExpandableActive = !el.isExpandableActive; /* 1 */\n el.isAriaExpanded = el.isAriaExpanded ? false : true; /* 2 */\n /* 3 */\n const tableCells = el.querySelectorAll('cat-table-cell');\n if (tableCells) {\n tableCells.forEach((cell, index) => {\n if (index === 0) {\n cell.isExpandableActive = !cell.isExpandableActive;\n }\n });\n }\n /* 4 */\n group[index].slice(1).forEach((row) => {\n if (parent === 'isExpandable') {\n row.isExpandableChildActive = row.isExpandableChildActive ? false : true;\n }\n else {\n row.isExpandableNestedChildActive = row.isExpandableNestedChildActive ? false : true;\n }\n });\n /* 5 */\n let eventValue;\n if (parent === 'isExpandable') {\n eventValue = 'parent-row-' + el.dataKey;\n }\n else {\n eventValue = 'child-row-' + el.dataKey;\n }\n this.eventEmit('bl-row-expand', eventValue);\n }\n /**\n * Filters out `undefined` group data from array of items.\n */\n filterUndefinedGroups(expandableGroups) {\n return expandableGroups?.filter((group) => group !== undefined);\n }\n /**\n * Set expandable rows\n * 1. Group the table rows for the expandable rows on click.\n * 2. On click of the isExpandable row, set the children to active\n * 3. On keyboard press of space or enter, set the children to active\n * 4. Set the key value\n */\n setExpandableGroups() {\n /* 1 */\n if (this._catIsExpandable && this._catTableRowsArray) {\n const expandableGroups = this._catTableRowsArray\n .filter((el) => el.isExpandable === true)\n .map((el, index) => {\n if (!el.isLoading) {\n setTimeout(() => {\n const firstCell = el.querySelector('cat-table-cell');\n if (!firstCell?.isTriggerEventAttached) {\n const trigger = firstCell?.shadowRoot?.querySelector('.cat-c-table-cell__expandable-button');\n /* 2 */\n trigger?.addEventListener('click', (e) => {\n this.toggleExpandableRows('isExpandable', this.filterUndefinedGroups(expandableGroups), el, index, e);\n });\n /* 3 */\n trigger?.addEventListener('keydown', (e) => {\n if (e.key === KEYS.ENTER || e.key === KEYS.SPACE) {\n this.toggleExpandableRows('isExpandable', this.filterUndefinedGroups(expandableGroups), el, index, e);\n }\n });\n if (firstCell) {\n firstCell.isTriggerEventAttached = true;\n }\n }\n }, 1);\n /* 4 */\n el.dataKey = index.toString();\n if (this._catTableRowsArray) {\n return [\n el,\n ...this._catTableRowsArray\n .slice(this._catTableRowsArray.indexOf(el) + 1)\n .reduce((acc, curr, i, arr) => {\n if (curr.isExpandable && curr.nextElementSibling) {\n // Eject early by mutating iterated copy\n arr.splice(i + 1);\n }\n return [...acc, curr];\n }, [])\n ];\n }\n }\n });\n }\n }\n /**\n * Set expandable nested rows\n * 1. Group the table rows for the expandable nested rows on click.\n * 2. On click of the isExpandableNested row, set the children to active\n * 3. On keyboard press of space or enter, set the children to active\n * 4. Set the key value\n */\n setExpandableNestedGroups() {\n if (this._catIsExpandableNested && this._catTableRowsArray) {\n const expandableGroupsNested = this._catTableRowsArray\n .filter((el) => el.isExpandableNested === true)\n .map((el, index) => {\n if (!el.isLoading) {\n setTimeout(() => {\n const firstCell = el.querySelector('cat-table-cell');\n if (!firstCell?.isTriggerEventAttached) {\n const trigger = el\n .querySelector('cat-table-cell')\n ?.shadowRoot?.querySelector('.cat-c-table-cell__expandable-button');\n /* 2 */\n trigger?.addEventListener('click', (e) => {\n this.toggleExpandableRows('isExpandableNested', this.filterUndefinedGroups(expandableGroupsNested), el, index, e);\n });\n /* 3 */\n trigger?.addEventListener('keydown', (e) => {\n if (e.key === KEYS.ENTER || e.key === KEYS.SPACE) {\n this.toggleExpandableRows('isExpandableNested', this.filterUndefinedGroups(expandableGroupsNested), el, index, e);\n }\n });\n if (firstCell) {\n firstCell.isTriggerEventAttached = true;\n }\n }\n }, 1);\n /* 4 */\n el.dataKey = index.toString();\n if (this._catTableRowsArray) {\n return [\n el,\n ...this._catTableRowsArray\n .slice(this._catTableRowsArray.indexOf(el) + 1)\n .reduce((acc, curr, i, arr) => {\n if (curr.isExpandableNested && curr.nextElementSibling) {\n // Eject early by mutating iterated copy\n arr.splice(i + 1);\n }\n return [...acc, curr];\n }, [])\n ];\n }\n }\n });\n }\n }\n /**\n * Set bulk action active state\n * 1. Toggle the active state between true and false\n */\n toggleBulkActionActive() {\n this.isBulkActionActive = !this.isBulkActionActive; /* 1 */\n this.dispatch({ eventName: 'bl-row-cell-select-all', detailObj: { isSelected: this.isBulkActionActive } });\n }\n /**\n * Set table role attribute\n * 1. If any rows are expandable, set the table role to tree grid for accessibility\n */\n setTableRole() {\n this._catTableElement?.setAttribute('role', 'treegrid'); /* 1 */\n }\n /**\n * The table-cells light dom which got appended to the modal-body above is moved out to their original position inside table-cell when modal is closed.\n */\n restoreChild() {\n const modalBody = this._catModal?.querySelector('.cat-c-modal__body');\n if (this.targetRowCells?.length) {\n Array.from(this.targetRowCells).forEach((cell, index) => {\n const childNodes = modalBody?.querySelector(`[data-index=\"${index}\"] div.cat-c-table-cell__cell-content-mobile`)?.childNodes;\n if (childNodes) {\n Array.from(childNodes)?.forEach((child) => {\n cell.append(child);\n });\n }\n });\n }\n this.targetButton?.focus();\n }\n /**\n * Start mobile view on screen sizes smaller then 560px\n * 1. Add event listener for click or keyboard event that toggles the mobile view modal\n * 2. If row has other functionality, then disable it\n * 3. Set the table column count to 1\n * 4. If is the first table cell, the set the cell mobile view to true\n * 5. Hide all the cells that are not in the first column\n */\n startMobileView() {\n this._catTableRows.forEach((row) => {\n if (row.isMobileView) {\n setTimeout(() => {\n const trigger = row\n .querySelector('cat-table-cell')\n ?.shadowRoot?.querySelector('.cat-c-table-cell__mobile-view-button');\n /* 1 */\n if (trigger) {\n trigger.addEventListener('click', this.toggleMobileViewModal);\n trigger.addEventListener('keydown', this.toggleMobileViewModal);\n }\n }, 1);\n /* 2 */\n row.isSelfFoldable = false;\n }\n const tableObjectStyle = this.closest('cat-table-object')?.style;\n tableObjectStyle?.setProperty('--cat-table-column-count', '1'); /* 3 */\n const rowTableCells = row.querySelectorAll('cat-table-header-cell, cat-table-cell');\n if (rowTableCells) {\n rowTableCells.forEach((cell, index) => {\n if ((row.isMobileView && index === 0) || (cell.nodeName === 'CAT-TABLE-HEADER-CELL' && index === 0)) {\n cell.isMobileView = true; /* 4 */\n tableObjectStyle?.setProperty('--cat-table-template-column-width', '1fr');\n }\n if (index !== 0) {\n cell.style.display = 'none'; /* 5 */\n }\n });\n }\n });\n }\n /**\n * End mobile view on screen sizes greater then 560px\n * 1. Remove event listener for click or keyboard event that toggles the moblie view modal\n * 2. Set the table column count to the number to table header cells\n * 3. If is the first table cell, the set the cell mobile view to false\n * 4. Show all the cells that are not in the first column\n */\n endMobileView() {\n this._catTableRows.forEach((row) => {\n if (row.isMobileView) {\n if (row.hasAttribute('isselffoldable')) {\n row.isSelfFoldable = true;\n }\n }\n const tableHeaderCells = this.querySelector('cat-table-header cat-table-row:last-child')?.querySelectorAll('cat-table-header-cell');\n const tableHeaderCellsCount = tableHeaderCells?.length;\n if (tableHeaderCellsCount !== undefined) {\n this.closest('cat-table-object')?.style.setProperty('--cat-table-column-count', tableHeaderCellsCount.toString()); /* 2 */\n }\n const rowTableCells = row.querySelectorAll('cat-table-cell, cat-table-header-cell');\n if (rowTableCells) {\n rowTableCells.forEach((cell, index) => {\n if (row.isMobileView && index === 0) {\n cell.isMobileView = false; /* 3 */\n }\n if (index !== 0) {\n cell.style.display = 'contents'; /* 4 */\n }\n });\n }\n });\n }\n /**\n *\n * @param name - name of the emit event\n * @param value - value of the emit event\n */\n eventEmit(name, value) {\n return this.dispatch({\n eventName: name,\n detailObj: {\n value: value\n }\n });\n }\n render() {\n const componentClassName = this.componentClassNames('cat-c-table-object', {\n 'cat-is-overflow-left': this.isStart === true,\n 'cat-is-overflow-right': this.isEnd === true,\n 'cat-is-bulk-action-active': this.isBulkActionActive === true,\n 'cat-is-scrolling': this.isScrolling === true,\n 'cat-c-table-cell-size-sm': this.tableCellSize === 'sm',\n 'cat-c-table-cell-size-md': this.tableCellSize === 'md',\n 'cat-is-odd-order-stripe': this.stripeOrder === 'odd',\n 'cat-is-even-order-stripe': this.stripeOrder === 'even'\n });\n return html `\n
\n ${this.slotNotEmpty('header') &&\n html `
`}\n ${this.tooltip === true\n ? html `\n \n ${this.tooltipText}\n \n `\n : html `${nothing}`}\n
\n ${this.isBulkActionActive === true\n ? html `\n
\n \n (${this.bulkActionCount}) ${this.bulkActionTitle ? this.bulkActionTitle : 'Actions'}:\n \n ${this._catIsAnyBulkActions\n ? html `\n
\n ${this._catShowBulkActionSingle\n ? html ` `\n : html ` `}\n ${this._catIsAnyBulkActionsMore &&\n html `\n \n \n ${this._catShowBulkActionSingleMore\n ? html ` `\n : html ` `}\n \n `}\n
\n `\n : html `${nothing}`}\n \n Close\n \n
\n `\n : html `${nothing}`}\n
\n \n
\n
\n ${this.slotNotEmpty('footer') &&\n html `
`}\n ${this._catIsMobileView\n ? html `\n \n \n \n \n
\n \n `\n : html `${nothing}`}\n
\n `;\n }\n}\n__decorate([\n state()\n], BlocksTableObject.prototype, \"isStart\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"isEnd\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"tooltip\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"showTooltip\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"tooltipText\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"tooltipAlign\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"tooltipPosition\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"frozenCells\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"widthCells\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"foldingHeaderCells\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"prevScrollVal\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"scrollTimeout\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"isScrolling\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"dragRow\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"prevDragRowOver\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"drawRowSiblings\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"prevDragPos\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"preDragScrollPos\", void 0);\n__decorate([\n state()\n], BlocksTableObject.prototype, \"tableResizeObserver\", void 0);\n__decorate([\n property({ type: Boolean })\n], BlocksTableObject.prototype, \"isBulkActionActive\", void 0);\n__decorate([\n property({ type: Number })\n], BlocksTableObject.prototype, \"bulkActionCount\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"bulkActionTitle\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"columnWidth\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"height\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"moreDropdownLabel\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"minWidth\", void 0);\n__decorate([\n property({ type: Number })\n], BlocksTableObject.prototype, \"mobileBreakPoint\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"tableCellSize\", void 0);\n__decorate([\n property({ type: String })\n], BlocksTableObject.prototype, \"stripeOrder\", void 0);\nif (customElements.get('cat-table-object') === undefined) {\n customElements.define('cat-table-object', BlocksTableObject);\n}\n","import { BlocksTableObject } from 'blocks-nextjs/blocks-web-components/components/table-object/table-object';\nimport React from 'react';\nimport { createComponent } from '../CustomWrapper/CustomWrapper';\nexport const CatTableObject = createComponent({\n react: React,\n tagName: 'cat-table-object',\n elementClass: BlocksTableObject,\n events: {\n onBlTableScrollY: 'bl-table-scroll-y',\n onBlTableScrollYEnd: 'bl-table-scroll-y-end',\n onBlTableScrollX: 'bl-table-scroll-x',\n onBlTableScrollXEnd: 'bl-table-scroll-x-end',\n onBlRowExpand: 'bl-row-expand',\n onBlTableResize: 'bl-table-resize',\n onBlRowDragEnd: 'bl-row-drag-end',\n onBlRowCellSelectAll: 'bl-row-cell-select-all'\n }\n});\n"],"names":["liveAnnouncer","announce","message","assertiveness","timeout","LiveAnnouncer","constructor","this","node","document","createElement","dataset","Object","assign","style","border","clip","clipPath","height","margin","overflow","padding","position","width","whiteSpace","assertiveLog","createLog","appendChild","politeLog","body","prepend","ariaLive","setAttribute","destroy","removeChild","textContent","setTimeout","remove","clear","innerHTML","__decorate","decorators","target","key","desc","d","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","BlocksTableBody","BlocksElement","styles","_catTableRows","Array","from","children","super","dropAnnouncementDelay","rowDraggedText","rowDroppedText","insertBetweenText","insertBeforeText","insertAfterText","clickToDropText","isDraggingInProgress","arrowDirection","timeoutId","dragRow","handleDragStart","e","detail","dragAnnouncementText","handleDragEnd","async","preventDefault","tagName","dispatch","eventName","detailObj","row","direction","updateComplete","rowElement","shadowRoot","querySelector","rowNumber","Number","getAttribute","targetRow","targetElement","focus","handleDragReset","getDeepActiveElement","activeElement","makeAnnouncement","currentIndex","currentActiveRow","currentActiveElement","currentActiveRowNode","getRootNode","ShadowRoot","host","indexOf","DOWN_ARROW","setFocusAndAnnounce","UP_ARROW","handleOnEscape","firstTablecell","btn","handleKeyDown","ENTER","SPACE","ESCAPE","getRowNumber","rowNumberByIndex","updateRowPositions","forEach","index","text","announcementText","firsRow","lastRow","prevRow","previousElementSibling","nextRow","nextElementSibling","prevRowNumber","nextRowNumber","isEqualNode","replace","toString","clearTimeout","addEventListener","connectedCallback","disconnectedCallback","removeEventListener","firstUpdated","render","componentClassName","componentClassNames","type","prototype","String","undefined","customElements","get","define","CatTableBody","react","elementClass","BlocksTableHeader","isFrozen","Boolean","CatTableHeader","BlocksIconArrowDownAlt","classList","add","size","color","iconTitle","BlocksIconArrowUpAlt","BlocksTableHeaderCell","isActiveFilter","isLoading","setDirection","toggleKeys","TAB","setEmpty","_headerCellElement","handleOnClickOutside","event","Error","didClickInside","composedPath","includes","toggleFilter","willUpdate","changedProperties","has","behavior","sortDirection","sortAscending","sortDescending","isActive","sortDefault","updated","value","setWidth","setListItemRoles","getList","list","listRole","querySelectorAll","listItem","listItemRole","endsWith","minWidth","tableObject","parentElement","closest","parseInt","clientWidth","toggleFilterSort","setActiveCell","eventEmit","handleFilterOnKeydown","onClickingFilterOption","toggleBehaviors","element","filter","el","cell","handleKeyDownOnHeader","listItems","isStatic","pop","name","renderLoading","getExportParts","align","tooltip","isSticky","isBulkAction","isExpandable","isDraggable","isActiveShadow","isFirst","isMobileView","isBulkActionSelected","isBulkActionIndeterminate","disabled","path","isSelected","checked","slotNotEmpty","reflect","CatTableHeaderCell","events","onBlColumnSort","onBlRowCellSelectAll","BlocksIconDeltaDown","BlocksTableObject","tooltipPosition","prevScrollVal","isScrolling","tableResizeObserver","ResizeObserver","entries","window","requestAnimationFrame","isArray","entry","onResizeObserver","bulkActionCount","moreDropdownLabel","mobileBreakPoint","stripeOrder","catTableBodyScrollheight","isMobileDragging","cellTooltipAttached","isTouchMoved","currentDragHoveredRow","onWindowResize","evt","onScroll","setTableColumnCount","setMobileView","setTableHeaderCellZindex","startSelfFoldable","_catTableRowsArray","tableRows","isExpandableActive","_catIsMobileView","removeProperty","foldingHeaderCells","processSelfFoldable","showWidth","setSelfFoldable","setExpandableRows","scrollEl","scrollTop","scrollLeft","setOverflowShadows","setFrozenShadows","showTooltip","_catTableHeaderCells","hidePopup","scrollTimeout","clearInterval","_catTableObjectBodyInner","Math","abs","scrollHeight","clientHeight","scrollWidth","contentRect","_catIsSelfFoldable","_catIsFrozenCells","setFrozenCells","tableHeaderCells","tableCellCount","_catTableHeaderWidth","_catTableObjectWidth","tableObjectStyle","tableHeaderRows","templateColumnsRow","templateColumns","dataKey","cellWidth","_catTableObjectElement","innerCell","colspan","innerWidth","gridTemplateColumns","setProperty","setTableColumnWidth","some","columnWidth","setTableHeight","setTableMinWidth","startDrag","drawRowSiblings","prevDragPos","MouseEvent","clientY","targetTouches","preDragScrollPos","endDrag","moveDrag","touchMoveDrag","rowOver","display","zIndex","pointerEvents","TouchEvent","highlightRow","clearDragStyle","prevDragRowOver","draggedRowInfo","rowKey","insert","dragHover","insertRowKey","resetHighlightRow","handleDragOnScroll","changedTouches","clientX","touches","tableCell","elementFromPoint","matches","updateDragIndex","elementClientY","pos","scrollPos","marginTop","distanceTop","getBoundingClientRect","top","isNearBottom","bottom","currentTarget","boundingClientRect","y","handleKeyboardDragStart","handleKeyboardDragEnd","frozenHeaderCells","frozenCells","lastHeaderRow","lastHeaderRowFrozenCells","frozenHeaderCellWidths","headerCell","push","marginLeft","reduce","previousValue","frozenHeader","isHeaderRow","nodeName","cells","headerRowCells","offset","slice","cellInfo","setCellWidths","widthHeaderCells","widthCells","setStickyCells","_catIsStickyCells","left","cellOver","cellElement","cellTitleText","assignedNodes","flatten","tooltipText","tableRow","scrollY","cellElementBoundingClient","hasAttribute","tooltipAlign","cellOut","setSelfFoldableExpandable","tableBodyInner","overflowX","prevShowWidth","selfFoldableRows","isSelfFoldable","isExpandableChild","insertAdjacentHTML","map","cellStyles","getComputedStyle","minWidthStyle","getPropertyValue","initialRow","associatedCells","foldingRow","_catIsExpandable","_catIsExpandableNested","setTableRole","setExpandableRowsFirstCells","setExpandableGroups","setExpandableNestedGroups","firstHeaderCell","isTriggerEventAttached","rowIndex","indexValue","toggleMobileViewModal","KeyboardEvent","_catModal","targetButton","targetRowCells","targetModalBody","_","cellHeading","innerText","modalHeading","modalBody","childNodes","child","append","modalBackButton","restoreChild","startMobileView","endMobileView","_catTableBody","_catTableObjectBody","_catTableElement","_catTableHeaderElement","isExpandableNested","_catIsTableRowsLoading","_customSelfFoldRows","_catIsAnyBulkActions","_catIsAnyBulkActionsMore","_catShowBulkActionSingle","_catShowBulkActionSingleMore","setCellTooltip","observe","renderRoot","handleFrozenChanged","onRowInitialize","onRowPropsChange","removeAttribute","clearSetTimeout","customTableRow","clearSetTimeoutRow","clearSetTimeoutRowProps","propName","trigger","tableObjectBody","tableObjectBodyInner","tableWidth","tableScrollWidth","tableOffScreen","isEnd","isStart","cellTextWrapper","nodes","range","createRange","selectNodeContents","getClientRects","then","offsetHeight","isConnected","indexEl","prevCellItem","prevIndex","insertEl","isEmptySelfFoldable","isExpandableNestedChildActive","isExpandableNestedChild","toggleExpandableRows","parent","group","isAriaExpanded","tableCells","eventValue","isExpandableChildActive","filterUndefinedGroups","expandableGroups","firstCell","acc","curr","arr","splice","expandableGroupsNested","toggleBulkActionActive","isBulkActionActive","rowTableCells","tableHeaderCellsCount","tableCellSize","bulkActionTitle","CatTableObject","onBlTableScrollY","onBlTableScrollYEnd","onBlTableScrollX","onBlTableScrollXEnd","onBlRowExpand","onBlTableResize","onBlRowDragEnd"],"sourceRoot":""}