@valu/block-components 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/matrix/styles/tokens.ts","../../../components/matrix/styles/index.ts","../../../components/matrix/MatrixHeader.tsx","../../../components/matrix/utils.ts","../../../components/matrix/MatrixCell.tsx","../../../components/matrix/MatrixGroupSummary.tsx","../../../components/matrix/MatrixRow.tsx","../../../components/matrix/styles/emotionCache.tsx","../../../components/matrix/hooks/useExpandedGroups.ts","../../../components/matrix/Matrix.tsx"],"names":["jsx","useCallback","jsxs","ToggleControl","useState","isExpanded","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Design tokens — CSS custom-property passthroughs with fallbacks.\n *\n * These mirror the ContentPicker tokens so the Matrix bundle stays\n * self-contained (no cross-component import). They map to the same\n * WordPress admin variables (`--wp-admin-theme-color`, `--wp-components-color-*`).\n */\nexport const tokens = {\n\taccent: 'var(--wp-admin-theme-color, #3858e9)',\n\taccentHover:\n\t\t'color-mix(in srgb, var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)) 4%, transparent)',\n\taccentActive:\n\t\t'color-mix(in srgb, var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)) 8%, transparent)',\n\tbg: 'var(--wp-components-color-background, #ffffff)',\n\tbgMuted: 'var(--wp-components-color-gray-100, #f0f0f0)',\n\tfg: 'var(--wp-components-color-foreground, #1e1e1e)',\n\tgray100: 'var(--wp-components-color-gray-100, #f0f0f0)',\n\tgray200: 'var(--wp-components-color-gray-200, #ebebeb)',\n\tgray300: 'var(--wp-components-color-gray-300, #dcdcde)',\n\tgray600: 'var(--wp-components-color-gray-600, #757575)',\n\tgray900: 'var(--wp-components-color-gray-900, #1e1e1e)',\n\n\tradiusSm: '2px',\n\tradiusMd: '4px',\n\n\trowMinHeight: '44px',\n\n\tshadowStickyTop: 'inset 0 -1px 0 rgba(0, 0, 0, 0.08)',\n\tshadowStickyLeft: 'inset -1px 0 0 rgba(0, 0, 0, 0.08)',\n\n\tspaceXs: '4px',\n\tspaceSm: '8px',\n\tspaceMd: '12px',\n\tspaceLg: '16px',\n\n\ttransitionFast: '120ms ease-out',\n\n\tfontSizeBody: '13px',\n\tfontSizeSmall: '11px',\n\tfontWeightRegular: 400,\n\tfontWeightMedium: 500,\n\tfontWeightBold: 600,\n\n\t/** Sticky z-index layering. Row-header > master > top headers > leaf cells. */\n\tzRowHeader: 4,\n\tzMaster: 3,\n\tzHeader: 3,\n\tzCell: 1,\n} as const;\n\nexport type Tokens = typeof tokens;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\n\nimport { tokens as t } from './tokens';\n\nexport const visuallyHiddenCss = css`\n\tposition: absolute !important;\n\tclip: rect(1px, 1px, 1px, 1px);\n\twidth: 1px;\n\theight: 1px;\n\toverflow: hidden;\n\twhite-space: nowrap;\n`;\n\nexport const Root = styled.div`\n\tcolor: ${t.fg};\n\tfont-size: ${t.fontSizeBody};\n\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n`;\n\n/** Scroll viewport — owns sticky positioning's containing block. */\nexport const Viewport = styled.div<{ $maxHeight: string }>`\n\tposition: relative;\n\toverflow: auto;\n\tmax-height: ${(p) => p.$maxHeight};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tbackground: ${t.bg};\n`;\n\nexport const Table = styled.table`\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\twidth: 100%;\n\tmin-width: max-content;\n\n\tcaption {\n\t\t${visuallyHiddenCss};\n\t}\n\n\tth,\n\ttd {\n\t\ttext-align: left;\n\t\tpadding: ${t.spaceSm} ${t.spaceMd};\n\t\tborder-bottom: 1px solid ${t.gray200};\n\t\tfont-weight: ${t.fontWeightRegular};\n\t\tvertical-align: middle;\n\t\tbackground: ${t.bg};\n\t}\n\n\ttbody tr:last-of-type th,\n\ttbody tr:last-of-type td {\n\t\tborder-bottom: none;\n\t}\n\n\ttbody tr:hover th,\n\ttbody tr:hover td {\n\t\tbackground: ${t.bgMuted};\n\t}\n`;\n\nexport const HeaderCell = styled.th<{\n\t$sticky?: boolean;\n\t$leftSticky?: boolean;\n\t$leftOffset?: string;\n\t$top?: string;\n\t$z?: number;\n\t$align?: 'left' | 'center';\n}>`\n\tfont-weight: ${t.fontWeightBold};\n\tfont-size: ${t.fontSizeSmall};\n\ttext-transform: uppercase;\n\tletter-spacing: 0.02em;\n\tcolor: ${t.gray900};\n\twhite-space: nowrap;\n\ttext-align: ${(p) => p.$align ?? 'left'};\n\n\t${(p) =>\n\t\tp.$sticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\ttop: ${p.$top ?? '0'};\n\t\t\tz-index: ${p.$z ?? t.zHeader};\n\t\t\tbox-shadow: ${t.shadowStickyTop};\n\t\t`};\n\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: ${p.$leftOffset ?? '0'};\n\t\t\tz-index: ${(p.$z ?? t.zHeader) + 1};\n\t\t\tbox-shadow: ${t.shadowStickyLeft}, ${t.shadowStickyTop};\n\t\t`};\n`;\n\nexport const GroupHeaderButton = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tbackground: transparent;\n\tborder: 1px solid transparent;\n\tborder-radius: ${t.radiusSm};\n\tpadding: 2px ${t.spaceXs};\n\tfont: inherit;\n\tcolor: inherit;\n\tcursor: pointer;\n\ttext-transform: inherit;\n\tletter-spacing: inherit;\n\n\t&:hover {\n\t\tbackground: ${t.accentHover};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${t.accent};\n\t\toutline-offset: 1px;\n\t}\n\n\t&[disabled] {\n\t\tcursor: default;\n\t\t&:hover {\n\t\t\tbackground: transparent;\n\t\t}\n\t}\n`;\n\nexport const Caret = styled.span<{ $open: boolean }>`\n\tdisplay: inline-block;\n\twidth: 0;\n\theight: 0;\n\tborder-left: 4px solid transparent;\n\tborder-right: 4px solid transparent;\n\tborder-top: 5px solid currentColor;\n\ttransition: transform ${t.transitionFast};\n\ttransform: ${(p) => (p.$open ? 'rotate(0deg)' : 'rotate(-90deg)')};\n`;\n\nexport const RowHeaderCell = styled.th<{ $leftSticky: boolean }>`\n\tmin-width: 220px;\n\tmax-width: 320px;\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: 0;\n\t\t\tz-index: ${t.zRowHeader};\n\t\t\tbox-shadow: ${t.shadowStickyLeft};\n\t\t`};\n`;\n\nexport const RowHeaderInner = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceMd};\n\tmin-height: ${t.rowMinHeight};\n`;\n\nexport const RowHeaderText = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tmin-width: 0;\n`;\n\nexport const RowLabel = styled.div`\n\tfont-weight: ${t.fontWeightMedium};\n\tcolor: ${t.gray900};\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const RowSublabel = styled.div`\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeSmall};\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const RowMeta = styled.div`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: ${t.spaceXs};\n\tmargin-left: auto;\n`;\n\nexport const MasterCell = styled.td<{ $leftSticky: boolean; $leftOffset: string }>`\n\tmin-width: 96px;\n\ttext-align: center;\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: ${p.$leftOffset};\n\t\t\tz-index: ${t.zMaster};\n\t\t\tbox-shadow: ${t.shadowStickyLeft};\n\t\t`};\n`;\n\nexport const LeafCell = styled.td`\n\tmin-width: 88px;\n\ttext-align: center;\n\n\t&[data-disabled='true'] {\n\t\topacity: 0.45;\n\t}\n`;\n\nexport const SummaryCell = styled.td`\n\tmin-width: 88px;\n\ttext-align: center;\n\tcolor: ${t.gray600};\n\tfont-variant-numeric: tabular-nums;\n`;\n\nexport const CellControlWrap = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t/* Trim @wordpress/components default vertical margins inside table cells. */\n\t.components-checkbox-control,\n\t.components-toggle-control,\n\t.components-base-control,\n\t.components-base-control__field {\n\t\tmargin: 0;\n\t}\n\n\t.components-checkbox-control__input-container {\n\t\tmargin: 0;\n\t}\n`;\n\nexport const Caption = styled.caption`\n\t${visuallyHiddenCss};\n`;\n","import { GroupHeaderButton, Caret, HeaderCell } from './styles';\nimport type {\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tMatrixMasterColumn,\n} from './types';\n\ninterface MatrixHeaderProps {\n\tgroups: MatrixColumnGroup[];\n\tmaster?: MatrixMasterColumn;\n\tflat: boolean;\n\tstickyHeader: boolean;\n\tstickyFirstColumn: boolean;\n\tmasterLeftOffset: string;\n\texpandedGroups: ReadonlySet<string>;\n\tonToggleGroup: (groupId: string) => void;\n\tlabels: Required<MatrixLabels>;\n\trenderHeader?: (column: MatrixColumn) => React.ReactNode;\n\trowHeaderLabel?: string;\n}\n\nconst isExpanded = (group: MatrixColumnGroup, expanded: ReadonlySet<string>): boolean =>\n\tgroup.collapsible === false ? true : expanded.has(group.id);\n\nexport const MatrixHeader = ({\n\tgroups,\n\tmaster,\n\tflat,\n\tstickyHeader,\n\tstickyFirstColumn,\n\tmasterLeftOffset,\n\texpandedGroups,\n\tonToggleGroup,\n\tlabels,\n\trenderHeader,\n\trowHeaderLabel,\n}: MatrixHeaderProps) => {\n\t// Flat / single-row header.\n\tif (flat) {\n\t\tconst cols = groups[0]?.columns ?? [];\n\t\treturn (\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t$leftOffset=\"0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{rowHeaderLabel ?? ''}\n\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t{master && (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t\t$leftOffset={masterLeftOffset}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{master.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t)}\n\t\t\t\t\t{cols.map((col) => (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t\taria-description={col.description}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderHeader ? renderHeader(col) : col.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t))}\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t);\n\t}\n\n\t// Grouped — two header rows.\n\tconst TOP_ROW_HEIGHT = '36px';\n\n\treturn (\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<HeaderCell\n\t\t\t\t\tscope=\"col\"\n\t\t\t\t\trowSpan={2}\n\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t$leftOffset=\"0\"\n\t\t\t\t>\n\t\t\t\t\t{rowHeaderLabel ?? ''}\n\t\t\t\t</HeaderCell>\n\t\t\t\t{master && (\n\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\trowSpan={2}\n\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t$leftOffset={masterLeftOffset}\n\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{master.label}\n\t\t\t\t\t</HeaderCell>\n\t\t\t\t)}\n\t\t\t\t{groups.map((group) => {\n\t\t\t\t\tconst open = isExpanded(group, expandedGroups);\n\t\t\t\t\tconst span = open ? group.columns.length : 1;\n\t\t\t\t\tconst collapsible = group.collapsible !== false;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={group.id}\n\t\t\t\t\t\t\tscope=\"colgroup\"\n\t\t\t\t\t\t\tcolSpan={span}\n\t\t\t\t\t\t\trowSpan={open ? 1 : 2}\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{collapsible ? (\n\t\t\t\t\t\t\t\t<GroupHeaderButton\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\t\taria-label={open ? labels.collapseGroup : labels.expandGroup}\n\t\t\t\t\t\t\t\t\tonClick={() => onToggleGroup(group.id)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Caret $open={open} aria-hidden />\n\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t</GroupHeaderButton>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span>{group.label}</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t{groups.map((group) => {\n\t\t\t\t\tconst open = isExpanded(group, expandedGroups);\n\t\t\t\t\tif (!open) return null;\n\t\t\t\t\treturn group.columns.map((col) => (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={`${group.id}::${col.id}`}\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$top={TOP_ROW_HEIGHT}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t\taria-description={col.description}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderHeader ? renderHeader(col) : col.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</tr>\n\t\t</thead>\n\t);\n};\n","import type {\n\tColId,\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tRowId,\n} from './types';\n\n/** Selection-set key for a single cell. */\nexport const cellKey = (rowId: RowId, colId: ColId): string => `${rowId}::${colId}`;\n\n/**\n * Returns the column ids selected for a single row.\n *\n * @example\n * selectionByRow(value, 'user-42') // ['create', 'edit']\n */\nexport const selectionByRow = (\n\tvalue: ReadonlySet<string>,\n\trowId: RowId,\n): ColId[] => {\n\tconst prefix = `${rowId}::`;\n\tconst out: ColId[] = [];\n\tfor (const key of value) {\n\t\tif (key.startsWith(prefix)) out.push(key.slice(prefix.length));\n\t}\n\treturn out;\n};\n\n/** Toggle a single cell, returning the next Set (always a new instance). */\nexport const toggleCell = (\n\tvalue: ReadonlySet<string>,\n\trowId: RowId,\n\tcolId: ColId,\n\tchecked: boolean,\n): Set<string> => {\n\tconst next = new Set(value);\n\tif (checked) next.add(cellKey(rowId, colId));\n\telse next.delete(cellKey(rowId, colId));\n\treturn next;\n};\n\n/**\n * Normalize the public `columns | groups` choice into a single internal\n * shape. A flat `columns` list becomes one synthetic, non-collapsible group.\n */\nexport const normalizeGroups = (input: {\n\tcolumns?: MatrixColumn[];\n\tgroups?: MatrixColumnGroup[];\n}): { groups: MatrixColumnGroup[]; flat: boolean } => {\n\tif (input.groups) return { groups: input.groups, flat: false };\n\treturn {\n\t\tgroups: [\n\t\t\t{\n\t\t\t\tid: '__flat__',\n\t\t\t\tlabel: '',\n\t\t\t\tcolumns: input.columns ?? [],\n\t\t\t\tcollapsible: false,\n\t\t\t\tdefaultExpanded: true,\n\t\t\t},\n\t\t],\n\t\tflat: true,\n\t};\n};\n\n/**\n * Default labels — used when a key isn't supplied by the consumer. English\n * only; consumers using `@wordpress/i18n` should pass translated strings.\n */\nexport const defaultLabels = (overrides: MatrixLabels = {}): Required<MatrixLabels> => ({\n\texpandGroup: overrides.expandGroup ?? 'Expand group',\n\tcollapseGroup: overrides.collapseGroup ?? 'Collapse group',\n\tgroupSummary: overrides.groupSummary ?? ((selected, total) => `${selected} / ${total}`),\n\tcellToggled:\n\t\toverrides.cellToggled ??\n\t\t((rowLabel, colLabel, checked) =>\n\t\t\tchecked ? `${colLabel} added to ${rowLabel}` : `${colLabel} removed from ${rowLabel}`),\n});\n\n/** Stringify a ReactNode as best we can for `aria-label`. */\nexport const toPlainText = (node: unknown): string => {\n\tif (node === null || node === undefined || node === false || node === true) return '';\n\tif (typeof node === 'string' || typeof node === 'number') return String(node);\n\tif (Array.isArray(node)) return node.map(toPlainText).join(' ');\n\tif (typeof node === 'object' && 'props' in (node as object)) {\n\t\tconst props = (node as { props?: { children?: unknown } }).props;\n\t\tif (props && 'children' in props) return toPlainText(props.children);\n\t}\n\treturn '';\n};\n","import { useCallback } from 'react';\nimport { CheckboxControl, ToggleControl } from '@wordpress/components';\n\nimport { CellControlWrap, LeafCell } from './styles';\nimport { cellKey, toggleCell, toPlainText } from './utils';\nimport type {\n\tCellContext,\n\tMatrixChange,\n\tMatrixColumn,\n\tMatrixRow,\n\tMatrixVariant,\n} from './types';\n\ninterface MatrixCellProps {\n\trow: MatrixRow;\n\tcolumn: MatrixColumn;\n\tvalue: ReadonlySet<string>;\n\tdisabled: boolean;\n\tvariant: MatrixVariant;\n\tonChange: (next: ReadonlySet<string>, change: MatrixChange) => void;\n\trenderCell?: (ctx: CellContext) => React.ReactNode;\n}\n\nexport const MatrixCell = ({\n\trow,\n\tcolumn,\n\tvalue,\n\tdisabled,\n\tvariant,\n\tonChange,\n\trenderCell,\n}: MatrixCellProps) => {\n\tconst key = cellKey(row.id, column.id);\n\tconst checked = value.has(key);\n\n\tconst toggle = useCallback(\n\t\t(nextChecked: boolean) => {\n\t\t\tif (disabled) return;\n\t\t\tconst next = toggleCell(value, row.id, column.id, nextChecked);\n\t\t\tonChange(next, { rowId: row.id, colId: column.id, checked: nextChecked });\n\t\t},\n\t\t[column.id, disabled, onChange, row.id, value],\n\t);\n\n\tconst ariaLabel = `${toPlainText(row.label)} — ${toPlainText(column.label)}`;\n\n\tconst content = renderCell ? (\n\t\trenderCell({ row, column, checked, disabled, toggle, selectionKey: key })\n\t) : variant === 'toggle' ? (\n\t\t<ToggleControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel=\"\"\n\t\t\tchecked={checked}\n\t\t\tdisabled={disabled}\n\t\t\taria-label={ariaLabel}\n\t\t\tonChange={toggle}\n\t\t/>\n\t) : (\n\t\t<CheckboxControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel=\"\"\n\t\t\tchecked={checked}\n\t\t\tdisabled={disabled}\n\t\t\taria-label={ariaLabel}\n\t\t\tonChange={toggle}\n\t\t/>\n\t);\n\n\treturn (\n\t\t<LeafCell data-disabled={disabled || undefined}>\n\t\t\t<CellControlWrap>{content}</CellControlWrap>\n\t\t</LeafCell>\n\t);\n};\n","import { SummaryCell } from './styles';\nimport type { GroupSummaryContext, MatrixLabels } from './types';\n\ninterface MatrixGroupSummaryProps {\n\tctx: GroupSummaryContext;\n\tlabels: Required<MatrixLabels>;\n\trender?: (ctx: GroupSummaryContext) => React.ReactNode;\n}\n\nexport const MatrixGroupSummary = ({ ctx, labels, render }: MatrixGroupSummaryProps) => {\n\tif (render) return <SummaryCell>{render(ctx)}</SummaryCell>;\n\treturn <SummaryCell>{labels.groupSummary(ctx.selectedCount, ctx.totalCount)}</SummaryCell>;\n};\n","import { useCallback } from 'react';\nimport { ToggleControl } from '@wordpress/components';\n\nimport { MatrixCell } from './MatrixCell';\nimport { MatrixGroupSummary } from './MatrixGroupSummary';\nimport {\n\tCellControlWrap,\n\tMasterCell,\n\tRowHeaderCell,\n\tRowHeaderInner,\n\tRowLabel,\n\tRowMeta,\n\tRowSublabel,\n\tRowHeaderText,\n} from './styles';\nimport { cellKey, toggleCell, toPlainText } from './utils';\nimport type {\n\tCellContext,\n\tGroupSummaryContext,\n\tMatrixChange,\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tMatrixMasterColumn,\n\tMatrixRow as MatrixRowType,\n\tMatrixVariant,\n} from './types';\n\ninterface MatrixRowProps {\n\trow: MatrixRowType;\n\tgroups: MatrixColumnGroup[];\n\tmaster?: MatrixMasterColumn;\n\tflat: boolean;\n\tvalue: ReadonlySet<string>;\n\texpandedGroups: ReadonlySet<string>;\n\tstickyFirstColumn: boolean;\n\tmasterLeftOffset: string;\n\tvariant: MatrixVariant;\n\tonChange: (next: ReadonlySet<string>, change: MatrixChange) => void;\n\tlabels: Required<MatrixLabels>;\n\trenderCell?: (ctx: CellContext) => React.ReactNode;\n\trenderRowHeader?: (row: MatrixRowType) => React.ReactNode;\n\trenderGroupSummary?: (ctx: GroupSummaryContext) => React.ReactNode;\n}\n\nconst isGroupExpanded = (group: MatrixColumnGroup, expanded: ReadonlySet<string>): boolean =>\n\tgroup.collapsible === false ? true : expanded.has(group.id);\n\nconst countSelected = (\n\tvalue: ReadonlySet<string>,\n\trowId: string,\n\tcols: MatrixColumn[],\n): number => {\n\tlet n = 0;\n\tfor (const c of cols) if (value.has(cellKey(rowId, c.id))) n += 1;\n\treturn n;\n};\n\nexport const MatrixRowView = ({\n\trow,\n\tgroups,\n\tmaster,\n\tflat,\n\tvalue,\n\texpandedGroups,\n\tstickyFirstColumn,\n\tmasterLeftOffset,\n\tvariant,\n\tonChange,\n\tlabels,\n\trenderCell,\n\trenderRowHeader,\n\trenderGroupSummary,\n}: MatrixRowProps) => {\n\tconst masterChecked = master ? value.has(cellKey(row.id, master.id)) : true;\n\tconst masterDisablesRow = master ? master.disablesRow !== false : false;\n\tconst rowDisabled = master ? masterDisablesRow && !masterChecked : false;\n\n\tconst toggleMaster = useCallback(\n\t\t(checked: boolean) => {\n\t\t\tif (!master) return;\n\t\t\tconst next = toggleCell(value, row.id, master.id, checked);\n\t\t\tonChange(next, { rowId: row.id, colId: master.id, checked });\n\t\t},\n\t\t[master, onChange, row.id, value],\n\t);\n\n\treturn (\n\t\t<tr>\n\t\t\t<RowHeaderCell scope=\"row\" $leftSticky={stickyFirstColumn}>\n\t\t\t\t{renderRowHeader ? (\n\t\t\t\t\trenderRowHeader(row)\n\t\t\t\t) : (\n\t\t\t\t\t<RowHeaderInner>\n\t\t\t\t\t\t{row.avatar}\n\t\t\t\t\t\t<RowHeaderText>\n\t\t\t\t\t\t\t<RowLabel>{row.label}</RowLabel>\n\t\t\t\t\t\t\t{row.sublabel && <RowSublabel>{row.sublabel}</RowSublabel>}\n\t\t\t\t\t\t</RowHeaderText>\n\t\t\t\t\t\t{row.meta && <RowMeta>{row.meta}</RowMeta>}\n\t\t\t\t\t</RowHeaderInner>\n\t\t\t\t)}\n\t\t\t</RowHeaderCell>\n\n\t\t\t{master && (\n\t\t\t\t<MasterCell $leftSticky={stickyFirstColumn} $leftOffset={masterLeftOffset}>\n\t\t\t\t\t<CellControlWrap>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel=\"\"\n\t\t\t\t\t\t\tchecked={masterChecked}\n\t\t\t\t\t\t\taria-label={`${toPlainText(master.label)} — ${toPlainText(row.label)}`}\n\t\t\t\t\t\t\tonChange={toggleMaster}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CellControlWrap>\n\t\t\t\t</MasterCell>\n\t\t\t)}\n\n\t\t\t{flat\n\t\t\t\t? groups[0]!.columns.map((col) => (\n\t\t\t\t\t\t<MatrixCell\n\t\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\tcolumn={col}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))\n\t\t\t\t: groups.flatMap((group) => {\n\t\t\t\t\t\tconst open = isGroupExpanded(group, expandedGroups);\n\t\t\t\t\t\tif (!open) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t<MatrixGroupSummary\n\t\t\t\t\t\t\t\t\tkey={group.id}\n\t\t\t\t\t\t\t\t\tctx={{\n\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t\t\t\tselectedCount: countSelected(value, row.id, group.columns),\n\t\t\t\t\t\t\t\t\t\ttotalCount: group.columns.length,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\t\t\trender={renderGroupSummary}\n\t\t\t\t\t\t\t\t/>,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn group.columns.map((col) => (\n\t\t\t\t\t\t\t<MatrixCell\n\t\t\t\t\t\t\t\tkey={`${group.id}::${col.id}`}\n\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\tcolumn={col}\n\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t));\n\t\t\t\t\t})}\n\t\t</tr>\n\t);\n};\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n/**\n * Emotion cache scoped to the Matrix component.\n *\n * Same pattern as ContentPicker — captures the owning document via a\n * callback ref so styles reach the iframe head when the component is rendered\n * inside the WordPress site editor.\n */\nexport const EmotionCacheProvider = ({ children }: { children: ReactNode }) => {\n\tconst [head, setHead] = useState<HTMLElement | null>(null);\n\n\tconst captureDocument = useCallback((node: HTMLDivElement | null) => {\n\t\tif (!node) return;\n\t\tconst owner = node.ownerDocument ?? document;\n\t\tsetHead((prev) => (prev === owner.head ? prev : (owner.head as HTMLElement)));\n\t}, []);\n\n\tconst cache = useMemo(() => {\n\t\tif (!head) return null;\n\t\treturn createCache({ key: 'valu-mx', container: head, prepend: true });\n\t}, [head]);\n\n\tif (!cache) {\n\t\treturn <div ref={captureDocument} style={{ display: 'contents' }} />;\n\t}\n\n\treturn (\n\t\t<CacheProvider value={cache}>\n\t\t\t<div ref={captureDocument} style={{ display: 'contents' }}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</CacheProvider>\n\t);\n};\n","import { useCallback, useState } from 'react';\n\n/**\n * Controlled / uncontrolled expanded-group state.\n *\n * - Pass `expanded` to make it controlled. `onChange` fires on every toggle.\n * - Otherwise pass `defaultExpanded` for the initial state.\n */\nexport interface UseExpandedGroupsOptions {\n\texpanded?: ReadonlySet<string>;\n\tdefaultExpanded?: ReadonlySet<string>;\n\tonChange?: (next: ReadonlySet<string>) => void;\n}\n\nexport interface UseExpandedGroupsResult {\n\texpanded: ReadonlySet<string>;\n\tisExpanded: (groupId: string) => boolean;\n\ttoggle: (groupId: string) => void;\n\texpand: (groupId: string) => void;\n\tcollapse: (groupId: string) => void;\n}\n\nexport const useExpandedGroups = ({\n\texpanded: controlled,\n\tdefaultExpanded,\n\tonChange,\n}: UseExpandedGroupsOptions): UseExpandedGroupsResult => {\n\tconst [uncontrolled, setUncontrolled] = useState<ReadonlySet<string>>(\n\t\t() => defaultExpanded ?? new Set<string>(),\n\t);\n\tconst isControlled = controlled !== undefined;\n\tconst expanded = isControlled ? controlled : uncontrolled;\n\n\tconst apply = useCallback(\n\t\t(next: ReadonlySet<string>) => {\n\t\t\tif (!isControlled) setUncontrolled(next);\n\t\t\tonChange?.(next);\n\t\t},\n\t\t[isControlled, onChange],\n\t);\n\n\tconst isExpanded = useCallback((groupId: string) => expanded.has(groupId), [expanded]);\n\n\tconst toggle = useCallback(\n\t\t(groupId: string) => {\n\t\t\tconst next = new Set(expanded);\n\t\t\tif (next.has(groupId)) next.delete(groupId);\n\t\t\telse next.add(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\tconst expand = useCallback(\n\t\t(groupId: string) => {\n\t\t\tif (expanded.has(groupId)) return;\n\t\t\tconst next = new Set(expanded);\n\t\t\tnext.add(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\tconst collapse = useCallback(\n\t\t(groupId: string) => {\n\t\t\tif (!expanded.has(groupId)) return;\n\t\t\tconst next = new Set(expanded);\n\t\t\tnext.delete(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\treturn { expanded, isExpanded, toggle, expand, collapse };\n};\n","import { useId, useMemo } from 'react';\n\nimport { MatrixHeader } from './MatrixHeader';\nimport { MatrixRowView } from './MatrixRow';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport { Caption, Root, Table, Viewport } from './styles';\nimport { useExpandedGroups } from './hooks/useExpandedGroups';\nimport { defaultLabels, normalizeGroups } from './utils';\nimport type { MatrixProps } from './types';\n\nconst DEFAULT_MAX_HEIGHT = 'calc(100vh - 260px)';\n\n/**\n * `<Matrix />` — abstract row × column grid of selectable cells.\n *\n * Rows × columns × cells. Each cell is identified by `${rowId}::${colId}`,\n * and the selection is a flat `Set<string>`. The component is **controlled**:\n * the consumer owns the value and the expanded-group state (or uses the\n * `defaultExpanded` escape hatch for uncontrolled expansion).\n *\n * Pass either `columns` (flat — single header row, no expand/collapse) or\n * `groups` (two header rows, collapsible). Optional sticky `master` column\n * can gate the row.\n *\n * @example flat\n * <Matrix\n * caption=\"Notification preferences\"\n * rows={users}\n * columns={[{ id: 'email', label: 'Email' }, { id: 'push', label: 'Push' }]}\n * value={selection}\n * onChange={setSelection}\n * />\n *\n * @example grouped with master\n * <Matrix\n * caption=\"User permissions\"\n * rows={users}\n * master={{ id: 'enabled', label: 'Enabled' }}\n * groups={categories}\n * value={selection}\n * onChange={setSelection}\n * />\n */\nexport const Matrix = (props: MatrixProps) => {\n\tconst {\n\t\trows,\n\t\tmaster,\n\t\tvalue,\n\t\tonChange,\n\t\texpanded,\n\t\tdefaultExpanded,\n\t\tonExpandedChange,\n\t\tvariant = 'checkbox',\n\t\trenderCell,\n\t\trenderRowHeader,\n\t\trenderGroupSummary,\n\t\trenderHeader,\n\t\tstickyHeader = true,\n\t\tstickyFirstColumn = true,\n\t\tmaxHeight = DEFAULT_MAX_HEIGHT,\n\t\tcaption,\n\t\tlabels,\n\t\tclassName,\n\t\tid,\n\t} = props;\n\n\tconst reactId = useId();\n\tconst rootId = id ?? `valu-mx-${reactId.replace(/:/g, '')}`;\n\n\tconst { groups, flat } = useMemo(\n\t\t() => normalizeGroups({ columns: props.columns, groups: props.groups }),\n\t\t[props.columns, props.groups],\n\t);\n\n\tconst resolvedLabels = useMemo(() => defaultLabels(labels), [labels]);\n\n\tconst { expanded: expandedGroups, toggle: toggleGroup } = useExpandedGroups({\n\t\texpanded,\n\t\tdefaultExpanded,\n\t\tonChange: onExpandedChange,\n\t});\n\n\tconst maxHeightCss = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n\tconst masterLeftOffset = '220px'; // Matches `RowHeaderCell` `min-width`.\n\n\treturn (\n\t\t<EmotionCacheProvider>\n\t\t\t<Root id={rootId} className={className}>\n\t\t\t\t<Viewport $maxHeight={maxHeightCss}>\n\t\t\t\t\t<Table>\n\t\t\t\t\t\t{caption && <Caption>{caption}</Caption>}\n\t\t\t\t\t\t<MatrixHeader\n\t\t\t\t\t\t\tgroups={groups}\n\t\t\t\t\t\t\tmaster={master}\n\t\t\t\t\t\t\tflat={flat}\n\t\t\t\t\t\t\tstickyHeader={stickyHeader}\n\t\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\t\tmasterLeftOffset={masterLeftOffset}\n\t\t\t\t\t\t\texpandedGroups={expandedGroups}\n\t\t\t\t\t\t\tonToggleGroup={toggleGroup}\n\t\t\t\t\t\t\tlabels={resolvedLabels}\n\t\t\t\t\t\t\trenderHeader={renderHeader}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t\t\t<MatrixRowView\n\t\t\t\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\tgroups={groups}\n\t\t\t\t\t\t\t\t\tmaster={master}\n\t\t\t\t\t\t\t\t\tflat={flat}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\texpandedGroups={expandedGroups}\n\t\t\t\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\t\t\t\tmasterLeftOffset={masterLeftOffset}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\tlabels={resolvedLabels}\n\t\t\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t\t\t\trenderRowHeader={renderRowHeader}\n\t\t\t\t\t\t\t\t\trenderGroupSummary={renderGroupSummary}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</Table>\n\t\t\t\t</Viewport>\n\t\t\t</Root>\n\t\t</EmotionCacheProvider>\n\t);\n};\n"]}
1
+ {"version":3,"sources":["../../../components/matrix/styles/tokens.ts","../../../components/matrix/styles/index.ts","../../../components/matrix/MatrixHeader.tsx","../../../components/matrix/utils.ts","../../../components/matrix/MatrixCell.tsx","../../../components/matrix/MatrixGroupSummary.tsx","../../../components/matrix/MatrixRow.tsx","../../../components/matrix/styles/emotionCache.tsx","../../../components/matrix/hooks/useExpandedGroups.ts","../../../components/matrix/Matrix.tsx"],"names":["jsx","useCallback","jsxs","ToggleControl","useState","isExpanded","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Design tokens — CSS custom-property passthroughs with fallbacks.\n *\n * These mirror the ContentPicker tokens so the Matrix bundle stays\n * self-contained (no cross-component import). They map to the same\n * WordPress admin variables (`--wp-admin-theme-color`, `--wp-components-color-*`).\n */\nexport const tokens = {\n\taccent: 'var(--wp-admin-theme-color, #3858e9)',\n\taccentHover:\n\t\t'color-mix(in srgb, var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)) 4%, transparent)',\n\taccentActive:\n\t\t'color-mix(in srgb, var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)) 8%, transparent)',\n\tbg: 'var(--wp-components-color-background, #ffffff)',\n\tbgMuted: 'var(--wp-components-color-gray-100, #f0f0f0)',\n\tfg: 'var(--wp-components-color-foreground, #1e1e1e)',\n\tgray100: 'var(--wp-components-color-gray-100, #f0f0f0)',\n\tgray200: 'var(--wp-components-color-gray-200, #ebebeb)',\n\tgray300: 'var(--wp-components-color-gray-300, #dcdcde)',\n\tgray600: 'var(--wp-components-color-gray-600, #757575)',\n\tgray900: 'var(--wp-components-color-gray-900, #1e1e1e)',\n\n\tradiusSm: '2px',\n\tradiusMd: '4px',\n\n\trowMinHeight: '44px',\n\n\tshadowStickyTop: 'inset 0 -1px 0 rgba(0, 0, 0, 0.08)',\n\tshadowStickyLeft: 'inset -1px 0 0 rgba(0, 0, 0, 0.08)',\n\n\tspaceXs: '4px',\n\tspaceSm: '8px',\n\tspaceMd: '12px',\n\tspaceLg: '16px',\n\n\ttransitionFast: '120ms ease-out',\n\n\tfontSizeBody: '13px',\n\tfontSizeSmall: '11px',\n\tfontWeightRegular: 400,\n\tfontWeightMedium: 500,\n\tfontWeightBold: 600,\n\n\t/** Sticky z-index layering. Row-header > master > top headers > leaf cells. */\n\tzRowHeader: 4,\n\tzMaster: 3,\n\tzHeader: 3,\n\tzCell: 1,\n} as const;\n\nexport type Tokens = typeof tokens;\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\n\nimport { tokens as t } from './tokens';\n\nexport const visuallyHiddenCss = css`\n\tposition: absolute !important;\n\tclip: rect(1px, 1px, 1px, 1px);\n\twidth: 1px;\n\theight: 1px;\n\toverflow: hidden;\n\twhite-space: nowrap;\n`;\n\nexport const Root = styled.div`\n\tcolor: ${t.fg};\n\tfont-size: ${t.fontSizeBody};\n\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n`;\n\n/** Scroll viewport — owns sticky positioning's containing block. */\nexport const Viewport = styled.div<{ $maxHeight: string }>`\n\tposition: relative;\n\toverflow: auto;\n\tmax-height: ${(p) => p.$maxHeight};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tbackground: ${t.bg};\n`;\n\nexport const Table = styled.table`\n\tborder-collapse: separate;\n\tborder-spacing: 0;\n\twidth: 100%;\n\tmin-width: max-content;\n\n\tcaption {\n\t\t${visuallyHiddenCss};\n\t}\n\n\tth,\n\ttd {\n\t\ttext-align: left;\n\t\tpadding: ${t.spaceSm} ${t.spaceMd};\n\t\tborder-bottom: 1px solid ${t.gray200};\n\t\tfont-weight: ${t.fontWeightRegular};\n\t\tvertical-align: middle;\n\t\tbackground: ${t.bg};\n\t}\n\n\ttbody tr:last-of-type th,\n\ttbody tr:last-of-type td {\n\t\tborder-bottom: none;\n\t}\n\n\ttbody tr:hover th,\n\ttbody tr:hover td {\n\t\tbackground: ${t.bgMuted};\n\t}\n`;\n\nexport const HeaderCell = styled.th<{\n\t$sticky?: boolean;\n\t$leftSticky?: boolean;\n\t$leftOffset?: string;\n\t$top?: string;\n\t$z?: number;\n\t$align?: 'left' | 'center';\n}>`\n\tfont-weight: ${t.fontWeightBold};\n\tfont-size: ${t.fontSizeSmall};\n\ttext-transform: uppercase;\n\tletter-spacing: 0.02em;\n\tcolor: ${t.gray900};\n\twhite-space: nowrap;\n\ttext-align: ${(p) => p.$align ?? 'left'};\n\n\t${(p) =>\n\t\tp.$sticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\ttop: ${p.$top ?? '0'};\n\t\t\tz-index: ${p.$z ?? t.zHeader};\n\t\t\tbox-shadow: ${t.shadowStickyTop};\n\t\t`};\n\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: ${p.$leftOffset ?? '0'};\n\t\t\tz-index: ${(p.$z ?? t.zHeader) + 1};\n\t\t\tbox-shadow: ${t.shadowStickyLeft}, ${t.shadowStickyTop};\n\t\t`};\n`;\n\nexport const GroupHeaderButton = styled.button`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tbackground: transparent;\n\tborder: 1px solid transparent;\n\tborder-radius: ${t.radiusSm};\n\tpadding: 2px ${t.spaceXs};\n\tfont: inherit;\n\tcolor: inherit;\n\tcursor: pointer;\n\ttext-transform: inherit;\n\tletter-spacing: inherit;\n\n\t&:hover {\n\t\tbackground: ${t.accentHover};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${t.accent};\n\t\toutline-offset: 1px;\n\t}\n\n\t&[disabled] {\n\t\tcursor: default;\n\t\t&:hover {\n\t\t\tbackground: transparent;\n\t\t}\n\t}\n`;\n\nexport const Caret = styled.span<{ $open: boolean }>`\n\tdisplay: inline-block;\n\twidth: 0;\n\theight: 0;\n\tborder-left: 4px solid transparent;\n\tborder-right: 4px solid transparent;\n\tborder-top: 5px solid currentColor;\n\ttransition: transform ${t.transitionFast};\n\ttransform: ${(p) => (p.$open ? 'rotate(0deg)' : 'rotate(-90deg)')};\n`;\n\nexport const RowHeaderCell = styled.th<{ $leftSticky: boolean }>`\n\tmin-width: 220px;\n\tmax-width: 320px;\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: 0;\n\t\t\tz-index: ${t.zRowHeader};\n\t\t\tbox-shadow: ${t.shadowStickyLeft};\n\t\t`};\n`;\n\nexport const RowHeaderInner = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceMd};\n\tmin-height: ${t.rowMinHeight};\n`;\n\nexport const RowHeaderText = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tmin-width: 0;\n`;\n\nexport const RowLabel = styled.div`\n\tfont-weight: ${t.fontWeightMedium};\n\tcolor: ${t.gray900};\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const RowSublabel = styled.div`\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeSmall};\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const RowMeta = styled.div`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: ${t.spaceXs};\n\tmargin-left: auto;\n`;\n\nexport const MasterCell = styled.td<{ $leftSticky: boolean; $leftOffset: string }>`\n\tmin-width: 96px;\n\ttext-align: center;\n\t${(p) =>\n\t\tp.$leftSticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\tleft: ${p.$leftOffset};\n\t\t\tz-index: ${t.zMaster};\n\t\t\tbox-shadow: ${t.shadowStickyLeft};\n\t\t`};\n`;\n\nexport const LeafCell = styled.td`\n\tmin-width: 88px;\n\ttext-align: center;\n\n\t&[data-disabled='true'] {\n\t\topacity: 0.45;\n\t}\n`;\n\nexport const SummaryCell = styled.td`\n\tmin-width: 88px;\n\ttext-align: center;\n\tcolor: ${t.gray600};\n\tfont-variant-numeric: tabular-nums;\n`;\n\n/**\n * Trailing cell that absorbs leftover horizontal space so leaf/summary\n * cells stay at their content size (rather than auto-stretching). Borders\n * and hover-highlight match the rest of the row, so the row separator\n * still extends across the full table width.\n */\nexport const FillerCell = styled.td`\n\twidth: 100%;\n\tpadding: 0;\n`;\n\n/**\n * Header equivalent of `FillerCell`. Placed at the end of the header row.\n * Sticks to the top with the rest of the header so the empty trailing\n * space stays continuous with the bordered/shadowed header bar.\n */\nexport const FillerHeaderCell = styled.th<{ $sticky?: boolean }>`\n\twidth: 100%;\n\tpadding: 0;\n\n\t${(p) =>\n\t\tp.$sticky &&\n\t\tcss`\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tz-index: ${t.zHeader};\n\t\t\tbackground: ${t.bg};\n\t\t\tbox-shadow: ${t.shadowStickyTop};\n\t\t`};\n`;\n\nexport const CellControlWrap = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t/* Trim @wordpress/components default vertical margins inside table cells. */\n\t.components-checkbox-control,\n\t.components-toggle-control,\n\t.components-base-control,\n\t.components-base-control__field {\n\t\tmargin: 0;\n\t}\n\n\t.components-checkbox-control__input-container {\n\t\tmargin: 0;\n\t}\n`;\n\nexport const Caption = styled.caption`\n\t${visuallyHiddenCss};\n`;\n","import { GroupHeaderButton, Caret, FillerHeaderCell, HeaderCell } from './styles';\nimport type {\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tMatrixMasterColumn,\n} from './types';\n\ninterface MatrixHeaderProps {\n\tgroups: MatrixColumnGroup[];\n\tmaster?: MatrixMasterColumn;\n\tflat: boolean;\n\tstickyHeader: boolean;\n\tstickyFirstColumn: boolean;\n\tmasterLeftOffset: string;\n\texpandedGroups: ReadonlySet<string>;\n\tonToggleGroup: (groupId: string) => void;\n\tlabels: Required<MatrixLabels>;\n\trenderHeader?: (column: MatrixColumn) => React.ReactNode;\n\trowHeaderLabel?: string;\n}\n\nconst isExpanded = (group: MatrixColumnGroup, expanded: ReadonlySet<string>): boolean =>\n\tgroup.collapsible === false ? true : expanded.has(group.id);\n\nexport const MatrixHeader = ({\n\tgroups,\n\tmaster,\n\tflat,\n\tstickyHeader,\n\tstickyFirstColumn,\n\tmasterLeftOffset,\n\texpandedGroups,\n\tonToggleGroup,\n\tlabels,\n\trenderHeader,\n\trowHeaderLabel,\n}: MatrixHeaderProps) => {\n\t// Flat / single-row header.\n\tif (flat) {\n\t\tconst cols = groups[0]?.columns ?? [];\n\t\treturn (\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t$leftOffset=\"0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{rowHeaderLabel ?? ''}\n\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t{master && (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t\t$leftOffset={masterLeftOffset}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{master.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t)}\n\t\t\t\t\t{cols.map((col) => (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t\taria-description={col.description}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderHeader ? renderHeader(col) : col.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t))}\n\t\t\t\t\t<FillerHeaderCell aria-hidden $sticky={stickyHeader} />\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t);\n\t}\n\n\t// Grouped — two header rows.\n\tconst TOP_ROW_HEIGHT = '36px';\n\n\treturn (\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<HeaderCell\n\t\t\t\t\tscope=\"col\"\n\t\t\t\t\trowSpan={2}\n\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t$leftOffset=\"0\"\n\t\t\t\t>\n\t\t\t\t\t{rowHeaderLabel ?? ''}\n\t\t\t\t</HeaderCell>\n\t\t\t\t{master && (\n\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\trowSpan={2}\n\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t$leftSticky={stickyFirstColumn}\n\t\t\t\t\t\t$leftOffset={masterLeftOffset}\n\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{master.label}\n\t\t\t\t\t</HeaderCell>\n\t\t\t\t)}\n\t\t\t\t{groups.map((group) => {\n\t\t\t\t\tconst open = isExpanded(group, expandedGroups);\n\t\t\t\t\tconst span = open ? group.columns.length : 1;\n\t\t\t\t\tconst collapsible = group.collapsible !== false;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={group.id}\n\t\t\t\t\t\t\tscope=\"colgroup\"\n\t\t\t\t\t\t\tcolSpan={span}\n\t\t\t\t\t\t\trowSpan={open ? 1 : 2}\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{collapsible ? (\n\t\t\t\t\t\t\t\t<GroupHeaderButton\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\t\taria-label={open ? labels.collapseGroup : labels.expandGroup}\n\t\t\t\t\t\t\t\t\tonClick={() => onToggleGroup(group.id)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Caret $open={open} aria-hidden />\n\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t</GroupHeaderButton>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span>{group.label}</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t<FillerHeaderCell aria-hidden rowSpan={2} $sticky={stickyHeader} />\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t{groups.map((group) => {\n\t\t\t\t\tconst open = isExpanded(group, expandedGroups);\n\t\t\t\t\tif (!open) return null;\n\t\t\t\t\treturn group.columns.map((col) => (\n\t\t\t\t\t\t<HeaderCell\n\t\t\t\t\t\t\tkey={`${group.id}::${col.id}`}\n\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t$sticky={stickyHeader}\n\t\t\t\t\t\t\t$top={TOP_ROW_HEIGHT}\n\t\t\t\t\t\t\t$align=\"center\"\n\t\t\t\t\t\t\taria-description={col.description}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderHeader ? renderHeader(col) : col.label}\n\t\t\t\t\t\t</HeaderCell>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</tr>\n\t\t</thead>\n\t);\n};\n","import type {\n\tColId,\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tRowId,\n} from './types';\n\n/** Selection-set key for a single cell. */\nexport const cellKey = (rowId: RowId, colId: ColId): string => `${rowId}::${colId}`;\n\n/**\n * Returns the column ids selected for a single row.\n *\n * @example\n * selectionByRow(value, 'user-42') // ['create', 'edit']\n */\nexport const selectionByRow = (\n\tvalue: ReadonlySet<string>,\n\trowId: RowId,\n): ColId[] => {\n\tconst prefix = `${rowId}::`;\n\tconst out: ColId[] = [];\n\tfor (const key of value) {\n\t\tif (key.startsWith(prefix)) out.push(key.slice(prefix.length));\n\t}\n\treturn out;\n};\n\n/** Toggle a single cell, returning the next Set (always a new instance). */\nexport const toggleCell = (\n\tvalue: ReadonlySet<string>,\n\trowId: RowId,\n\tcolId: ColId,\n\tchecked: boolean,\n): Set<string> => {\n\tconst next = new Set(value);\n\tif (checked) next.add(cellKey(rowId, colId));\n\telse next.delete(cellKey(rowId, colId));\n\treturn next;\n};\n\n/**\n * Normalize the public `columns | groups` choice into a single internal\n * shape. A flat `columns` list becomes one synthetic, non-collapsible group.\n */\nexport const normalizeGroups = (input: {\n\tcolumns?: MatrixColumn[];\n\tgroups?: MatrixColumnGroup[];\n}): { groups: MatrixColumnGroup[]; flat: boolean } => {\n\tif (input.groups) return { groups: input.groups, flat: false };\n\treturn {\n\t\tgroups: [\n\t\t\t{\n\t\t\t\tid: '__flat__',\n\t\t\t\tlabel: '',\n\t\t\t\tcolumns: input.columns ?? [],\n\t\t\t\tcollapsible: false,\n\t\t\t\tdefaultExpanded: true,\n\t\t\t},\n\t\t],\n\t\tflat: true,\n\t};\n};\n\n/**\n * Default labels — used when a key isn't supplied by the consumer. English\n * only; consumers using `@wordpress/i18n` should pass translated strings.\n */\nexport const defaultLabels = (overrides: MatrixLabels = {}): Required<MatrixLabels> => ({\n\texpandGroup: overrides.expandGroup ?? 'Expand group',\n\tcollapseGroup: overrides.collapseGroup ?? 'Collapse group',\n\tgroupSummary: overrides.groupSummary ?? ((selected, total) => `${selected} / ${total}`),\n\tcellToggled:\n\t\toverrides.cellToggled ??\n\t\t((rowLabel, colLabel, checked) =>\n\t\t\tchecked ? `${colLabel} added to ${rowLabel}` : `${colLabel} removed from ${rowLabel}`),\n});\n\n/** Stringify a ReactNode as best we can for `aria-label`. */\nexport const toPlainText = (node: unknown): string => {\n\tif (node === null || node === undefined || node === false || node === true) return '';\n\tif (typeof node === 'string' || typeof node === 'number') return String(node);\n\tif (Array.isArray(node)) return node.map(toPlainText).join(' ');\n\tif (typeof node === 'object' && 'props' in (node as object)) {\n\t\tconst props = (node as { props?: { children?: unknown } }).props;\n\t\tif (props && 'children' in props) return toPlainText(props.children);\n\t}\n\treturn '';\n};\n","import { useCallback } from 'react';\nimport { CheckboxControl, ToggleControl } from '@wordpress/components';\n\nimport { CellControlWrap, LeafCell } from './styles';\nimport { cellKey, toggleCell, toPlainText } from './utils';\nimport type {\n\tCellContext,\n\tMatrixChange,\n\tMatrixColumn,\n\tMatrixRow,\n\tMatrixVariant,\n} from './types';\n\ninterface MatrixCellProps {\n\trow: MatrixRow;\n\tcolumn: MatrixColumn;\n\tvalue: ReadonlySet<string>;\n\tdisabled: boolean;\n\tvariant: MatrixVariant;\n\tonChange: (next: ReadonlySet<string>, change: MatrixChange) => void;\n\trenderCell?: (ctx: CellContext) => React.ReactNode;\n}\n\nexport const MatrixCell = ({\n\trow,\n\tcolumn,\n\tvalue,\n\tdisabled,\n\tvariant,\n\tonChange,\n\trenderCell,\n}: MatrixCellProps) => {\n\tconst key = cellKey(row.id, column.id);\n\tconst checked = value.has(key);\n\n\tconst toggle = useCallback(\n\t\t(nextChecked: boolean) => {\n\t\t\tif (disabled) return;\n\t\t\tconst next = toggleCell(value, row.id, column.id, nextChecked);\n\t\t\tonChange(next, { rowId: row.id, colId: column.id, checked: nextChecked });\n\t\t},\n\t\t[column.id, disabled, onChange, row.id, value],\n\t);\n\n\tconst ariaLabel = `${toPlainText(row.label)} — ${toPlainText(column.label)}`;\n\n\tconst content = renderCell ? (\n\t\trenderCell({ row, column, checked, disabled, toggle, selectionKey: key })\n\t) : variant === 'toggle' ? (\n\t\t<ToggleControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel=\"\"\n\t\t\tchecked={checked}\n\t\t\tdisabled={disabled}\n\t\t\taria-label={ariaLabel}\n\t\t\tonChange={toggle}\n\t\t/>\n\t) : (\n\t\t<CheckboxControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel=\"\"\n\t\t\tchecked={checked}\n\t\t\tdisabled={disabled}\n\t\t\taria-label={ariaLabel}\n\t\t\tonChange={toggle}\n\t\t/>\n\t);\n\n\treturn (\n\t\t<LeafCell data-disabled={disabled || undefined}>\n\t\t\t<CellControlWrap>{content}</CellControlWrap>\n\t\t</LeafCell>\n\t);\n};\n","import { SummaryCell } from './styles';\nimport type { GroupSummaryContext, MatrixLabels } from './types';\n\ninterface MatrixGroupSummaryProps {\n\tctx: GroupSummaryContext;\n\tlabels: Required<MatrixLabels>;\n\trender?: (ctx: GroupSummaryContext) => React.ReactNode;\n}\n\nexport const MatrixGroupSummary = ({ ctx, labels, render }: MatrixGroupSummaryProps) => {\n\tif (render) return <SummaryCell>{render(ctx)}</SummaryCell>;\n\treturn <SummaryCell>{labels.groupSummary(ctx.selectedCount, ctx.totalCount)}</SummaryCell>;\n};\n","import { useCallback } from 'react';\nimport { ToggleControl } from '@wordpress/components';\n\nimport { MatrixCell } from './MatrixCell';\nimport { MatrixGroupSummary } from './MatrixGroupSummary';\nimport {\n\tCellControlWrap,\n\tFillerCell,\n\tMasterCell,\n\tRowHeaderCell,\n\tRowHeaderInner,\n\tRowLabel,\n\tRowMeta,\n\tRowSublabel,\n\tRowHeaderText,\n} from './styles';\nimport { cellKey, toggleCell, toPlainText } from './utils';\nimport type {\n\tCellContext,\n\tGroupSummaryContext,\n\tMatrixChange,\n\tMatrixColumn,\n\tMatrixColumnGroup,\n\tMatrixLabels,\n\tMatrixMasterColumn,\n\tMatrixRow as MatrixRowType,\n\tMatrixVariant,\n} from './types';\n\ninterface MatrixRowProps {\n\trow: MatrixRowType;\n\tgroups: MatrixColumnGroup[];\n\tmaster?: MatrixMasterColumn;\n\tflat: boolean;\n\tvalue: ReadonlySet<string>;\n\texpandedGroups: ReadonlySet<string>;\n\tstickyFirstColumn: boolean;\n\tmasterLeftOffset: string;\n\tvariant: MatrixVariant;\n\tonChange: (next: ReadonlySet<string>, change: MatrixChange) => void;\n\tlabels: Required<MatrixLabels>;\n\trenderCell?: (ctx: CellContext) => React.ReactNode;\n\trenderRowHeader?: (row: MatrixRowType) => React.ReactNode;\n\trenderGroupSummary?: (ctx: GroupSummaryContext) => React.ReactNode;\n}\n\nconst isGroupExpanded = (group: MatrixColumnGroup, expanded: ReadonlySet<string>): boolean =>\n\tgroup.collapsible === false ? true : expanded.has(group.id);\n\nconst countSelected = (\n\tvalue: ReadonlySet<string>,\n\trowId: string,\n\tcols: MatrixColumn[],\n): number => {\n\tlet n = 0;\n\tfor (const c of cols) if (value.has(cellKey(rowId, c.id))) n += 1;\n\treturn n;\n};\n\nexport const MatrixRowView = ({\n\trow,\n\tgroups,\n\tmaster,\n\tflat,\n\tvalue,\n\texpandedGroups,\n\tstickyFirstColumn,\n\tmasterLeftOffset,\n\tvariant,\n\tonChange,\n\tlabels,\n\trenderCell,\n\trenderRowHeader,\n\trenderGroupSummary,\n}: MatrixRowProps) => {\n\tconst masterChecked = master ? value.has(cellKey(row.id, master.id)) : true;\n\tconst masterDisablesRow = master ? master.disablesRow !== false : false;\n\tconst rowDisabled = master ? masterDisablesRow && !masterChecked : false;\n\n\tconst toggleMaster = useCallback(\n\t\t(checked: boolean) => {\n\t\t\tif (!master) return;\n\t\t\tconst next = toggleCell(value, row.id, master.id, checked);\n\t\t\tonChange(next, { rowId: row.id, colId: master.id, checked });\n\t\t},\n\t\t[master, onChange, row.id, value],\n\t);\n\n\treturn (\n\t\t<tr>\n\t\t\t<RowHeaderCell scope=\"row\" $leftSticky={stickyFirstColumn}>\n\t\t\t\t{renderRowHeader ? (\n\t\t\t\t\trenderRowHeader(row)\n\t\t\t\t) : (\n\t\t\t\t\t<RowHeaderInner>\n\t\t\t\t\t\t{row.avatar}\n\t\t\t\t\t\t<RowHeaderText>\n\t\t\t\t\t\t\t<RowLabel>{row.label}</RowLabel>\n\t\t\t\t\t\t\t{row.sublabel && <RowSublabel>{row.sublabel}</RowSublabel>}\n\t\t\t\t\t\t</RowHeaderText>\n\t\t\t\t\t\t{row.meta && <RowMeta>{row.meta}</RowMeta>}\n\t\t\t\t\t</RowHeaderInner>\n\t\t\t\t)}\n\t\t\t</RowHeaderCell>\n\n\t\t\t{master && (\n\t\t\t\t<MasterCell $leftSticky={stickyFirstColumn} $leftOffset={masterLeftOffset}>\n\t\t\t\t\t<CellControlWrap>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel=\"\"\n\t\t\t\t\t\t\tchecked={masterChecked}\n\t\t\t\t\t\t\taria-label={`${toPlainText(master.label)} — ${toPlainText(row.label)}`}\n\t\t\t\t\t\t\tonChange={toggleMaster}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CellControlWrap>\n\t\t\t\t</MasterCell>\n\t\t\t)}\n\n\t\t\t{flat\n\t\t\t\t? groups[0]!.columns.map((col) => (\n\t\t\t\t\t\t<MatrixCell\n\t\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\tcolumn={col}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))\n\t\t\t\t: groups.flatMap((group) => {\n\t\t\t\t\t\tconst open = isGroupExpanded(group, expandedGroups);\n\t\t\t\t\t\tif (!open) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t<MatrixGroupSummary\n\t\t\t\t\t\t\t\t\tkey={group.id}\n\t\t\t\t\t\t\t\t\tctx={{\n\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\tgroup,\n\t\t\t\t\t\t\t\t\t\tselectedCount: countSelected(value, row.id, group.columns),\n\t\t\t\t\t\t\t\t\t\ttotalCount: group.columns.length,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\t\t\trender={renderGroupSummary}\n\t\t\t\t\t\t\t\t/>,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn group.columns.map((col) => (\n\t\t\t\t\t\t\t<MatrixCell\n\t\t\t\t\t\t\t\tkey={`${group.id}::${col.id}`}\n\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\tcolumn={col}\n\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\tdisabled={rowDisabled}\n\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t));\n\t\t\t\t\t})}\n\t\t\t<FillerCell aria-hidden />\n\t\t</tr>\n\t);\n};\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n/**\n * Emotion cache scoped to the Matrix component.\n *\n * Same pattern as ContentPicker — captures the owning document via a\n * callback ref so styles reach the iframe head when the component is rendered\n * inside the WordPress site editor.\n */\nexport const EmotionCacheProvider = ({ children }: { children: ReactNode }) => {\n\tconst [head, setHead] = useState<HTMLElement | null>(null);\n\n\tconst captureDocument = useCallback((node: HTMLDivElement | null) => {\n\t\tif (!node) return;\n\t\tconst owner = node.ownerDocument ?? document;\n\t\tsetHead((prev) => (prev === owner.head ? prev : (owner.head as HTMLElement)));\n\t}, []);\n\n\tconst cache = useMemo(() => {\n\t\tif (!head) return null;\n\t\treturn createCache({ key: 'valu-mx', container: head, prepend: true });\n\t}, [head]);\n\n\tif (!cache) {\n\t\treturn <div ref={captureDocument} style={{ display: 'contents' }} />;\n\t}\n\n\treturn (\n\t\t<CacheProvider value={cache}>\n\t\t\t<div ref={captureDocument} style={{ display: 'contents' }}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</CacheProvider>\n\t);\n};\n","import { useCallback, useState } from 'react';\n\n/**\n * Controlled / uncontrolled expanded-group state.\n *\n * - Pass `expanded` to make it controlled. `onChange` fires on every toggle.\n * - Otherwise pass `defaultExpanded` for the initial state.\n */\nexport interface UseExpandedGroupsOptions {\n\texpanded?: ReadonlySet<string>;\n\tdefaultExpanded?: ReadonlySet<string>;\n\tonChange?: (next: ReadonlySet<string>) => void;\n}\n\nexport interface UseExpandedGroupsResult {\n\texpanded: ReadonlySet<string>;\n\tisExpanded: (groupId: string) => boolean;\n\ttoggle: (groupId: string) => void;\n\texpand: (groupId: string) => void;\n\tcollapse: (groupId: string) => void;\n}\n\nexport const useExpandedGroups = ({\n\texpanded: controlled,\n\tdefaultExpanded,\n\tonChange,\n}: UseExpandedGroupsOptions): UseExpandedGroupsResult => {\n\tconst [uncontrolled, setUncontrolled] = useState<ReadonlySet<string>>(\n\t\t() => defaultExpanded ?? new Set<string>(),\n\t);\n\tconst isControlled = controlled !== undefined;\n\tconst expanded = isControlled ? controlled : uncontrolled;\n\n\tconst apply = useCallback(\n\t\t(next: ReadonlySet<string>) => {\n\t\t\tif (!isControlled) setUncontrolled(next);\n\t\t\tonChange?.(next);\n\t\t},\n\t\t[isControlled, onChange],\n\t);\n\n\tconst isExpanded = useCallback((groupId: string) => expanded.has(groupId), [expanded]);\n\n\tconst toggle = useCallback(\n\t\t(groupId: string) => {\n\t\t\tconst next = new Set(expanded);\n\t\t\tif (next.has(groupId)) next.delete(groupId);\n\t\t\telse next.add(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\tconst expand = useCallback(\n\t\t(groupId: string) => {\n\t\t\tif (expanded.has(groupId)) return;\n\t\t\tconst next = new Set(expanded);\n\t\t\tnext.add(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\tconst collapse = useCallback(\n\t\t(groupId: string) => {\n\t\t\tif (!expanded.has(groupId)) return;\n\t\t\tconst next = new Set(expanded);\n\t\t\tnext.delete(groupId);\n\t\t\tapply(next);\n\t\t},\n\t\t[apply, expanded],\n\t);\n\n\treturn { expanded, isExpanded, toggle, expand, collapse };\n};\n","import { useId, useMemo } from 'react';\n\nimport { MatrixHeader } from './MatrixHeader';\nimport { MatrixRowView } from './MatrixRow';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport { Caption, Root, Table, Viewport } from './styles';\nimport { useExpandedGroups } from './hooks/useExpandedGroups';\nimport { defaultLabels, normalizeGroups } from './utils';\nimport type { MatrixProps } from './types';\n\nconst DEFAULT_MAX_HEIGHT = 'calc(100vh - 260px)';\n\n/**\n * `<Matrix />` — abstract row × column grid of selectable cells.\n *\n * Rows × columns × cells. Each cell is identified by `${rowId}::${colId}`,\n * and the selection is a flat `Set<string>`. The component is **controlled**:\n * the consumer owns the value and the expanded-group state (or uses the\n * `defaultExpanded` escape hatch for uncontrolled expansion).\n *\n * Pass either `columns` (flat — single header row, no expand/collapse) or\n * `groups` (two header rows, collapsible). Optional sticky `master` column\n * can gate the row.\n *\n * @example flat\n * <Matrix\n * caption=\"Notification preferences\"\n * rows={users}\n * columns={[{ id: 'email', label: 'Email' }, { id: 'push', label: 'Push' }]}\n * value={selection}\n * onChange={setSelection}\n * />\n *\n * @example grouped with master\n * <Matrix\n * caption=\"User permissions\"\n * rows={users}\n * master={{ id: 'enabled', label: 'Enabled' }}\n * groups={categories}\n * value={selection}\n * onChange={setSelection}\n * />\n */\nexport const Matrix = (props: MatrixProps) => {\n\tconst {\n\t\trows,\n\t\tmaster,\n\t\tvalue,\n\t\tonChange,\n\t\texpanded,\n\t\tdefaultExpanded,\n\t\tonExpandedChange,\n\t\tvariant = 'checkbox',\n\t\trenderCell,\n\t\trenderRowHeader,\n\t\trenderGroupSummary,\n\t\trenderHeader,\n\t\tstickyHeader = true,\n\t\tstickyFirstColumn = true,\n\t\trowHeaderWidth = 220,\n\t\tmaxHeight = DEFAULT_MAX_HEIGHT,\n\t\tcaption,\n\t\tlabels,\n\t\tclassName,\n\t\tid,\n\t} = props;\n\n\tconst reactId = useId();\n\tconst rootId = id ?? `valu-mx-${reactId.replace(/:/g, '')}`;\n\n\tconst { groups, flat } = useMemo(\n\t\t() => normalizeGroups({ columns: props.columns, groups: props.groups }),\n\t\t[props.columns, props.groups],\n\t);\n\n\tconst resolvedLabels = useMemo(() => defaultLabels(labels), [labels]);\n\n\tconst { expanded: expandedGroups, toggle: toggleGroup } = useExpandedGroups({\n\t\texpanded,\n\t\tdefaultExpanded,\n\t\tonChange: onExpandedChange,\n\t});\n\n\tconst maxHeightCss = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n\tconst cssLength = (v: number | string) => (typeof v === 'number' ? `${v}px` : v);\n\tconst rowHeaderWidthCss = cssLength(rowHeaderWidth);\n\tconst masterWidthCss = master ? cssLength(master.width ?? 96) : '0';\n\tconst masterLeftOffset = rowHeaderWidthCss;\n\n\treturn (\n\t\t<EmotionCacheProvider>\n\t\t\t<Root id={rootId} className={className}>\n\t\t\t\t<Viewport $maxHeight={maxHeightCss}>\n\t\t\t\t\t<Table>\n\t\t\t\t\t\t{caption && <Caption>{caption}</Caption>}\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t * Pin the row-header and master column widths so they don't grow\n\t\t\t\t\t\t * when leaf columns are collapsed into group-summary cells. The\n\t\t\t\t\t\t * remaining cols are left without explicit widths so leftover\n\t\t\t\t\t\t * space distributes among them.\n\t\t\t\t\t\t */}\n\t\t\t\t\t\t<colgroup>\n\t\t\t\t\t\t\t<col style={{ width: rowHeaderWidthCss }} />\n\t\t\t\t\t\t\t{master && <col style={{ width: masterWidthCss }} />}\n\t\t\t\t\t\t</colgroup>\n\t\t\t\t\t\t<MatrixHeader\n\t\t\t\t\t\t\tgroups={groups}\n\t\t\t\t\t\t\tmaster={master}\n\t\t\t\t\t\t\tflat={flat}\n\t\t\t\t\t\t\tstickyHeader={stickyHeader}\n\t\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\t\tmasterLeftOffset={masterLeftOffset}\n\t\t\t\t\t\t\texpandedGroups={expandedGroups}\n\t\t\t\t\t\t\tonToggleGroup={toggleGroup}\n\t\t\t\t\t\t\tlabels={resolvedLabels}\n\t\t\t\t\t\t\trenderHeader={renderHeader}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t\t\t<MatrixRowView\n\t\t\t\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\tgroups={groups}\n\t\t\t\t\t\t\t\t\tmaster={master}\n\t\t\t\t\t\t\t\t\tflat={flat}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\texpandedGroups={expandedGroups}\n\t\t\t\t\t\t\t\t\tstickyFirstColumn={stickyFirstColumn}\n\t\t\t\t\t\t\t\t\tmasterLeftOffset={masterLeftOffset}\n\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\t\t\t\tlabels={resolvedLabels}\n\t\t\t\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\t\t\t\trenderRowHeader={renderRowHeader}\n\t\t\t\t\t\t\t\t\trenderGroupSummary={renderGroupSummary}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</Table>\n\t\t\t\t</Viewport>\n\t\t\t</Root>\n\t\t</EmotionCacheProvider>\n\t);\n};\n"]}