@valu/block-components 0.1.1 → 0.2.1
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.
- package/LICENSE +359 -0
- package/README.md +7 -0
- package/dist/components/matrix/index.cjs +741 -0
- package/dist/components/matrix/index.cjs.map +1 -0
- package/dist/components/matrix/index.d.cts +208 -0
- package/dist/components/matrix/index.d.ts +208 -0
- package/dist/components/matrix/index.js +731 -0
- package/dist/components/matrix/index.js.map +1 -0
- package/dist/index.cjs +723 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +721 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/content-picker/styles/tokens.ts","../components/content-picker/styles/index.ts","../components/content-picker/utils.ts","../components/content-picker/SearchCombobox.tsx","../components/content-picker/badges/StatusBadge.tsx","../components/content-picker/SuggestionItem.tsx","../components/content-picker/SuggestionList.tsx","../components/content-picker/TypeFilter.tsx","../components/content-picker/api/fetchSearch.ts","../components/content-picker/hooks/useContentSearch.ts","../components/content-picker/hooks/useDebouncedValue.ts","../components/content-picker/hooks/useLiveRegion.ts","../components/content-picker/hooks/useKeyboardNav.ts","../components/content-picker/hooks/useContentPickerController.ts","../components/content-picker/styles/emotionCache.tsx","../components/content-picker/ContentPickerPopover.tsx","../components/content-picker/ContentPickerInline.tsx","../components/content-picker/badges/TypeBadge.tsx","../components/content-picker/SelectedItem.tsx","../components/content-picker/DragChip.tsx","../components/content-picker/hooks/useResolvedItems.ts","../components/content-picker/SelectedList.tsx","../components/content-picker/ContentPicker.tsx"],"names":["uuidv4","__","styled","jsx","jsxs","Icon","useRef","useEffect","useCallback","useState","select","useMemo","groupByType","Pill","sprintf","Button","closeSmall","dragHandle","useSelect","coreStore","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Design tokens — CSS custom-property passthroughs with fallbacks.\n *\n * The picker is designed to render inside the WP admin where these\n * variables are defined by core (Gutenberg/@wordpress/components). When\n * rendered outside WP (tests, Storybook), the fallbacks keep it usable.\n *\n * Variable mapping:\n * - `accent` — primary action / focus ring / highlighted option edge\n * - `accentHover` — translucent accent for hover rows (matches core's\n * 4% color-mix recipe used on tertiary buttons)\n * - `accentActive` — translucent accent for active/highlighted rows\n * (matches core's 8% color-mix recipe, e.g.\n * `.components-button.is-tertiary:active`)\n * - `gray300` — input / popover borders\n * - `gray600` — secondary text (URL, meta)\n * - `gray900` — primary text\n * - `danger*` — trash / missing states\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\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\tdanger: '#cc1818',\n\tdangerSoft: '#fef7f7',\n\tdangerLine: '#f0b7b7',\n\tsuccess: '#007017',\n\twarning: '#bd8600',\n\n\tradiusSm: '2px',\n\tradiusMd: '4px',\n\tradiusLg: '6px',\n\n\trowMinHeight: '40px',\n\tsuggestionMinHeight: '44px',\n\tthumbXs: '20px',\n\tthumbSm: '24px',\n\tthumbMd: '32px',\n\tthumbLg: '40px',\n\n\tshadowPopover: '0 6px 24px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.06)',\n\tshadowRow: '0 1px 0 rgba(0, 0, 0, 0.04)',\n\n\tspaceXs: '4px',\n\tspaceSm: '8px',\n\tspaceMd: '12px',\n\tspaceLg: '16px',\n\n\ttransitionFast: '120ms ease-out',\n\ttransitionMed: '200ms ease-out',\n\n\tfontSizeBody: '13px',\n\tfontSizeSmall: '11px',\n\tfontWeightRegular: 400,\n\tfontWeightMedium: 500,\n\tfontWeightBold: 600,\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 focusRing = css`\n\toutline: 2px solid ${t.accent};\n\toutline-offset: 1px;\n`;\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\nexport const Label = styled.label`\n\tdisplay: block;\n\tmargin-bottom: ${t.spaceXs};\n\tfont-weight: ${t.fontWeightMedium};\n\tfont-size: ${t.fontSizeSmall};\n\ttext-transform: uppercase;\n\tletter-spacing: 0.02em;\n\tcolor: ${t.gray900};\n`;\n\nexport const HelpText = styled.p`\n\tmargin: ${t.spaceXs} 0 0;\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeSmall};\n`;\n\nexport const InputShell = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tbackground: ${t.bg};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tpadding: 6px ${t.spaceMd};\n\tmin-height: 40px;\n\ttransition: border-color ${t.transitionFast}, box-shadow ${t.transitionFast};\n\n\t&:focus-within {\n\t\tborder-color: ${t.accent};\n\t\tbox-shadow: 0 0 0 1px ${t.accent};\n\t}\n`;\n\nexport const Input = styled.input`\n\tflex: 1;\n\tbackground: transparent;\n\tfont: inherit;\n\tcolor: ${t.fg};\n\tmin-width: 0;\n\n\t/*\n\t * WP admin's global input styles (\\`input[type=\"text\"]\\` in various\n\t * editor/sidebar stylesheets) set their own border + box-shadow at a\n\t * higher specificity than our Emotion class. \\`!important\\` is the\n\t * pragmatic reset here — we provide the focus chrome on the enclosing\n\t * \\`InputShell\\`, so every input-level border/outline/box-shadow\n\t * contribution is noise.\n\t */\n\t&,\n\t&:focus,\n\t&:focus-visible,\n\t&:hover {\n\t\tborder: 0 !important;\n\t\toutline: 0 !important;\n\t\tbox-shadow: none !important;\n\t}\n\n\t&::placeholder {\n\t\tcolor: ${t.gray600};\n\t}\n`;\n\nexport const SuggestionsShell = styled.div<{ inline?: boolean }>`\n\tbackground: ${t.bg};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\toverflow: hidden;\n\tmax-height: 380px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t${({ inline }) =>\n\t\tinline\n\t\t\t? css`\n\t\t\t\t\tmargin-top: ${t.spaceSm};\n\t\t\t\t`\n\t\t\t: css`\n\t\t\t\t\tbox-shadow: ${t.shadowPopover};\n\t\t\t\t`}\n`;\n\nexport const ListboxScroll = styled.div`\n\toverflow-y: auto;\n\tflex: 1;\n\tmin-height: 0;\n`;\n\nexport const StickyHeader = styled.div`\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 2;\n\tbackground: ${t.bg};\n`;\n\nexport const Listbox = styled.ul`\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: ${t.spaceXs} 0;\n`;\n\nexport const GroupHeading = styled.div`\n\tpadding: 4px ${t.spaceMd};\n\tfont-size: 10px !important;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.08em;\n\ttext-transform: uppercase !important;\n\tcolor: ${t.gray600};\n\tbackground: ${t.gray100};\n\tline-height: 1.8;\n\n\t[role='group']:not(:first-child) > & {\n\t\tborder-top: 1px solid ${t.gray200};\n\t}\n`;\n\nexport const PrimaryText = styled.span<{ muted?: boolean }>`\n\tfont-size: ${t.fontSizeBody};\n\tfont-weight: ${t.fontWeightMedium};\n\tcolor: ${({ muted }) => (muted ? t.gray600 : t.gray900)};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tdisplay: block;\n\tline-height: 1.3;\n\ttransition: color ${t.transitionFast};\n`;\n\nexport const Option = styled.li<{ highlighted?: boolean; disabled?: boolean }>`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: 4px ${t.spaceMd};\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\topacity: ${({ disabled }) => (disabled ? 0.5 : 1)};\n\tmin-height: ${t.suggestionMinHeight};\n\tbackground: ${({ highlighted }) => (highlighted ? t.accentActive : 'transparent')};\n\tposition: relative;\n\ttransition: background ${t.transitionFast};\n\n\t&:hover {\n\t\tbackground: ${({ highlighted, disabled }) =>\n\t\t\tdisabled ? 'transparent' : highlighted ? t.accentActive : t.accentHover};\n\t}\n\n\t/*\n\t * Target the title via a stable data attribute rather than Emotion's\n\t * generated class — the popover body has its own Emotion cache, so\n\t * class-name interpolation isn't guaranteed to match across caches.\n\t */\n\t&:hover [data-valu-title] {\n\t\tcolor: ${t.accent};\n\t}\n\n\t${({ highlighted }) =>\n\t\thighlighted &&\n\t\tcss`\n\t\t\t[data-valu-title] {\n\t\t\t\tcolor: ${t.accent};\n\t\t\t}\n\t\t\t&::before {\n\t\t\t\tcontent: '';\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 4px;\n\t\t\t\tbottom: 4px;\n\t\t\t\twidth: 2px;\n\t\t\t\tborder-radius: 0 ${t.radiusSm} ${t.radiusSm} 0;\n\t\t\t\tbackground: ${t.accent};\n\t\t\t}\n\t\t`}\n`;\n\nexport const Thumb = styled.div<{\n\tsize?: 'xs' | 'sm' | 'md' | 'lg';\n\tmissing?: boolean;\n\thasImage?: boolean;\n\tavatar?: boolean;\n}>`\n\tflex: 0 0 auto;\n\twidth: ${({ size, hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? '22px'\n\t\t\t: hasImage\n\t\t\t\t? t.thumbMd\n\t\t\t\t: size === 'md'\n\t\t\t\t\t? t.thumbMd\n\t\t\t\t\t: size === 'lg'\n\t\t\t\t\t\t? t.thumbLg\n\t\t\t\t\t\t: size === 'sm'\n\t\t\t\t\t\t\t? t.thumbSm\n\t\t\t\t\t\t\t: '22px'};\n\theight: ${({ size, hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? '22px'\n\t\t\t: hasImage\n\t\t\t\t? t.thumbMd\n\t\t\t\t: size === 'md'\n\t\t\t\t\t? t.thumbMd\n\t\t\t\t\t: size === 'lg'\n\t\t\t\t\t\t? t.thumbLg\n\t\t\t\t\t\t: size === 'sm'\n\t\t\t\t\t\t\t? t.thumbSm\n\t\t\t\t\t\t\t: '22px'};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: ${({ missing }) => (missing ? t.danger : t.gray600)};\n\n\t${({ hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? css`\n\t\t\t\t\tborder-radius: 999px;\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t`\n\t\t\t: hasImage\n\t\t\t\t? css`\n\t\t\t\t\t\tborder: 1px solid ${t.gray200};\n\t\t\t\t\t\tborder-radius: ${t.radiusSm};\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tbackground: ${t.gray100};\n\t\t\t\t\t`\n\t\t\t\t: undefined}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tdisplay: block;\n\t}\n\n\tsvg {\n\t\twidth: 22px;\n\t\theight: 22px;\n\t}\n`;\n\nexport const ItemBody = styled.div`\n\tflex: 1;\n\tmin-width: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0;\n`;\n\nexport const SecondaryText = styled.span`\n\tfont-size: ${t.fontSizeSmall};\n\tcolor: ${t.gray600};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tdisplay: block;\n\tline-height: 1.3;\n`;\n\nexport const BadgeRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tflex-wrap: wrap;\n\tmargin-top: 0;\n`;\n\nexport const TypeHint = styled.span`\n\tflex: 0 0 auto;\n\tfont-size: ${t.fontSizeSmall};\n\tcolor: ${t.gray600};\n\tmargin-left: ${t.spaceSm};\n\twhite-space: nowrap;\n`;\n\nexport const ActionColumn = styled.div`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tmargin-left: auto;\n`;\n\nexport const SelectedListEl = styled.ul`\n\tlist-style: none;\n\tmargin: ${t.spaceSm} 0 0;\n\tpadding: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n`;\n\nexport const SelectedRow = styled.li<{ dragging?: boolean; missing?: boolean }>`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: 2px ${t.spaceSm};\n\tbackground: ${({ missing }) => (missing ? t.dangerSoft : t.bg)};\n\tborder: 1px solid ${({ missing }) => (missing ? t.dangerLine : t.gray300)};\n\tborder-radius: ${t.radiusMd};\n\tmin-height: ${t.rowMinHeight};\n\tbox-shadow: ${({ dragging }) => (dragging ? t.shadowPopover : 'none')};\n\ttransition: box-shadow ${t.transitionFast}, border-color ${t.transitionFast};\n\n\t&:hover {\n\t\tborder-color: ${({ missing }) => (missing ? t.dangerLine : t.gray600)};\n\t}\n`;\n\nexport const DragHandleButton = styled.button`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 0;\n\tbackground: transparent;\n\tcolor: ${t.gray600};\n\tcursor: grab;\n\tborder-radius: ${t.radiusSm};\n\tpadding: 0;\n\n\t&:hover {\n\t\tbackground: ${t.gray100};\n\t\tcolor: ${t.gray900};\n\t}\n\n\t&:focus-visible {\n\t\t${focusRing}\n\t}\n\n\t&:active {\n\t\tcursor: grabbing;\n\t}\n\n\t&[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.4;\n\t}\n\n\tsvg {\n\t\twidth: 14px;\n\t\theight: 14px;\n\t}\n`;\n\nexport const EmptyState = styled.div`\n\tpadding: ${t.spaceLg} ${t.spaceMd};\n\ttext-align: center;\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const LoadingState = styled.div`\n\tpadding: ${t.spaceLg} ${t.spaceMd};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: ${t.spaceSm};\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const ErrorState = styled.div`\n\tpadding: ${t.spaceMd};\n\tbackground: ${t.dangerSoft};\n\tcolor: ${t.danger};\n\tborder: 1px solid ${t.dangerLine};\n\tborder-radius: ${t.radiusMd};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const MaxedOutBanner = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: ${t.spaceSm} ${t.spaceMd};\n\tbackground: ${t.gray100};\n\tcolor: ${t.gray900};\n\tborder: 1px dashed ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tfont-size: ${t.fontSizeSmall};\n`;\n\nexport const CountPill = styled.span`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 2px 8px;\n\tbackground: ${t.gray100};\n\tcolor: ${t.gray900};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n`;\n\nexport const ChipWrap = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tbackground: ${t.gray900};\n\tcolor: #fff;\n\tborder-radius: ${t.radiusMd};\n\tpadding: 6px ${t.spaceMd};\n\tmax-width: 280px;\n\tbox-shadow: ${t.shadowPopover};\n`;\n\nexport const ChipTitle = styled.span`\n\tfont-size: ${t.fontSizeSmall};\n\tfont-weight: ${t.fontWeightMedium};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const LoadMoreRow = styled.li`\n\tlist-style: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding: ${t.spaceSm};\n`;\n\nexport const SearchIconWrap = styled.span`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tcolor: ${t.gray600};\n`;\n\nexport const HeaderRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: ${t.spaceSm};\n\tmargin-top: ${t.spaceSm};\n\tmargin-bottom: ${t.spaceXs};\n`;\n\nexport const HeaderTitle = styled.h3`\n\tmargin: 0;\n\tfont-size: 10px !important;\n\ttext-transform: uppercase !important;\n\tletter-spacing: 0.04em;\n\tfont-weight: ${t.fontWeightBold};\n\tcolor: ${t.gray600};\n\tline-height: 1.8;\n`;\n","import { v4 as uuidv4 } from 'uuid';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';\nimport { __ } from '@wordpress/i18n';\nimport { people } from '@wordpress/icons';\n\nimport type {\n\tContentItem,\n\tContentKind,\n\tContentPickerIcon,\n\tContentPickerIconMap,\n\tContentStatus,\n} from './types';\n\nexport const generateKey = (): string => uuidv4();\n\nexport const decodeTitle = (raw: unknown): string => {\n\tif (typeof raw === 'string') return decodeEntities(raw);\n\tif (raw && typeof raw === 'object' && 'rendered' in raw) {\n\t\tconst rendered = (raw as { rendered?: unknown }).rendered;\n\t\tif (typeof rendered === 'string') return decodeEntities(rendered);\n\t}\n\treturn '';\n};\n\nexport const toDisplayUrl = (url: string | undefined | null): string => {\n\tif (!url) return '';\n\ttry {\n\t\treturn filterURLForDisplay(safeDecodeURI(url)) ?? '';\n\t} catch {\n\t\treturn url;\n\t}\n};\n\nexport const groupByType = (items: ContentItem[]): Array<[string, ContentItem[]]> => {\n\tconst map = new Map<string, ContentItem[]>();\n\tfor (const item of items) {\n\t\tconst bucket = map.get(item.type);\n\t\tif (bucket) bucket.push(item);\n\t\telse map.set(item.type, [item]);\n\t}\n\treturn Array.from(map.entries());\n};\n\nconst postTypeLabels: Record<string, string> = {\n\tpost: 'Post',\n\tpage: 'Page',\n\tattachment: 'Media',\n};\n\nexport const humanizeType = (type: string, kind: ContentKind): string => {\n\tif (kind === 'user') return __('User', 'valu-block-components');\n\tif (postTypeLabels[type]) return postTypeLabels[type];\n\treturn type\n\t\t.replace(/[-_]+/g, ' ')\n\t\t.replace(/\\b\\w/g, (c) => c.toUpperCase());\n};\n\nconst statusLabels: Partial<Record<ContentStatus, string>> = {\n\tdraft: 'Draft',\n\tpending: 'Pending',\n\tprivate: 'Private',\n\tfuture: 'Scheduled',\n\ttrash: 'Trash',\n};\n\nexport const humanizeStatus = (status: ContentStatus | undefined): string | null => {\n\tif (!status || status === 'publish') return null;\n\treturn statusLabels[status] ?? status;\n};\n\n/** Stable id for ARIA references: `${rootId}-option-${index}` etc. */\nexport const aria = (rootId: string, suffix: string): string => `${rootId}-${suffix}`;\n\nexport const isMaxedOut = (value: ContentItem[], maxItems: number): boolean =>\n\tNumber.isFinite(maxItems) && value.length >= maxItems;\n\n/** Filter out items already present in `value` by entity id. */\nexport const dedupeAgainst = <T extends { id: number }>(\n\titems: T[],\n\tvalue: ContentItem[],\n\tenabled: boolean,\n): T[] => {\n\tif (!enabled || value.length === 0) return items;\n\tconst ids = new Set(value.map((v) => v.id));\n\treturn items.filter((i) => !ids.has(i.id));\n};\n\n/**\n * Default icons used when a consumer hasn't provided an override.\n * Only users get one by default — everything else renders without a\n * leading glyph unless the consumer supplies an `icons` map.\n */\nexport const DEFAULT_ITEM_ICONS: ContentPickerIconMap = {\n\tuser: people,\n};\n\n/** Pick the icon for an item: consumer override → built-in default → null. */\nexport const resolveItemIcon = (\n\titem: ContentItem,\n\tuserIcons: ContentPickerIconMap | undefined,\n): ContentPickerIcon | undefined => {\n\tif (userIcons && item.type in userIcons) return userIcons[item.type];\n\tif (item.type in DEFAULT_ITEM_ICONS) return DEFAULT_ITEM_ICONS[item.type];\n\treturn undefined;\n};\n","import { forwardRef, type ChangeEvent, type KeyboardEvent } from 'react';\nimport { Icon, VisuallyHidden } from '@wordpress/components';\nimport { search, closeSmall } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { Input, InputShell, SearchIconWrap } from './styles';\nimport { aria } from './utils';\nimport type { ContentPickerLabels } from './types';\n\nexport interface SearchComboboxProps {\n\trootId: string;\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tonFocus?: () => void;\n\tonBlur?: () => void;\n\tonKeyDown: (event: KeyboardEvent) => void;\n\tplaceholder?: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tdisabled?: boolean;\n\topen: boolean;\n\tlistboxId: string;\n\tactiveOptionId?: string;\n\tlabels: ContentPickerLabels;\n}\n\nexport const SearchCombobox = forwardRef<HTMLInputElement, SearchComboboxProps>(\n\t(\n\t\t{\n\t\t\trootId,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tplaceholder,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tdisabled,\n\t\t\topen,\n\t\t\tlistboxId,\n\t\t\tactiveOptionId,\n\t\t\tlabels,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst inputId = aria(rootId, 'input');\n\t\tconst helpId = help ? aria(rootId, 'help') : undefined;\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{hideLabelFromVision ? (\n\t\t\t\t\t<VisuallyHidden as=\"label\" htmlFor={inputId}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t) : (\n\t\t\t\t\t<label htmlFor={inputId} style={{ display: 'block', marginBottom: 4 }}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t\t<InputShell aria-disabled={disabled || undefined}>\n\t\t\t\t\t<SearchIconWrap aria-hidden=\"true\">\n\t\t\t\t\t\t<Icon icon={search} size={20} />\n\t\t\t\t\t</SearchIconWrap>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\taria-controls={listboxId}\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-activedescendant={activeOptionId}\n\t\t\t\t\t\taria-describedby={helpId}\n\t\t\t\t\t\taria-label={hideLabelFromVision ? label : undefined}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={placeholder ?? labels.input ?? __('Search', 'valu-block-components')}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\tonChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\t\tonKeyDown={onKeyDown}\n\t\t\t\t\t/>\n\t\t\t\t\t{value.length > 0 && !disabled ? (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => onChange('')}\n\t\t\t\t\t\t\taria-label={__('Clear search', 'valu-block-components')}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\tbackground: 'transparent',\n\t\t\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\t\t\tpadding: 2,\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\t\t\tcolor: 'currentColor',\n\t\t\t\t\t\t\t\topacity: 0.6,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={closeSmall} size={18} />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : null}\n\t\t\t\t</InputShell>\n\t\t\t\t{help ? (\n\t\t\t\t\t<p id={helpId} style={{ margin: '4px 0 0', fontSize: 11, opacity: 0.7 }}>\n\t\t\t\t\t\t{help}\n\t\t\t\t\t</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nSearchCombobox.displayName = 'SearchCombobox';\n","import styled from '@emotion/styled';\nimport { __ } from '@wordpress/i18n';\n\nimport { tokens as t } from '../styles/tokens';\nimport type { ContentStatus } from '../types';\nimport { humanizeStatus } from '../utils';\n\ntype Tone = 'neutral' | 'warn' | 'danger' | 'success';\n\nconst tones: Record<Tone, { bg: string; fg: string; border: string }> = {\n\tneutral: { bg: t.gray100, fg: t.gray900, border: t.gray300 },\n\twarn: { bg: '#fef3d0', fg: t.warning, border: '#f3d782' },\n\tdanger: { bg: t.dangerSoft, fg: t.danger, border: t.dangerLine },\n\tsuccess: { bg: '#e6f4ea', fg: t.success, border: '#a7d5b3' },\n};\n\nconst toneFor = (status: ContentStatus): Tone => {\n\tif (status === 'trash') return 'danger';\n\tif (status === 'draft' || status === 'pending' || status === 'future') return 'warn';\n\tif (status === 'private') return 'neutral';\n\treturn 'neutral';\n};\n\nconst Pill = styled.span<{ tone: Tone }>`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 1px 6px;\n\tbackground: ${({ tone }) => tones[tone].bg};\n\tcolor: ${({ tone }) => tones[tone].fg};\n\tborder: 1px solid ${({ tone }) => tones[tone].border};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n\twhite-space: nowrap;\n\tline-height: 1.6;\n`;\n\nexport interface StatusBadgeProps {\n\tstatus: ContentStatus;\n}\n\nexport const StatusBadge = ({ status }: StatusBadgeProps) => {\n\tconst label = humanizeStatus(status);\n\tif (!label) return null;\n\tconst translated =\n\t\tstatus === 'draft'\n\t\t\t? __('Draft', 'valu-block-components')\n\t\t\t: status === 'pending'\n\t\t\t\t? __('Pending', 'valu-block-components')\n\t\t\t\t: status === 'private'\n\t\t\t\t\t? __('Private', 'valu-block-components')\n\t\t\t\t\t: status === 'future'\n\t\t\t\t\t\t? __('Scheduled', 'valu-block-components')\n\t\t\t\t\t\t: status === 'trash'\n\t\t\t\t\t\t\t? __('Trash', 'valu-block-components')\n\t\t\t\t\t\t\t: label;\n\treturn <Pill tone={toneFor(status)}>{translated}</Pill>;\n};\n","import { useCallback, useEffect, useRef, type MouseEvent } from 'react';\nimport { Icon } from '@wordpress/components';\n\nimport {\n\tItemBody,\n\tOption,\n\tPrimaryText,\n\tSecondaryText,\n\tThumb,\n\tTypeHint,\n} from './styles';\nimport { StatusBadge } from './badges/StatusBadge';\nimport { humanizeType, resolveItemIcon, toDisplayUrl } from './utils';\nimport type {\n\tContentItem,\n\tContentPickerIconMap,\n\tSuggestionRenderState,\n} from './types';\n\nexport interface SuggestionItemProps {\n\titem: ContentItem;\n\toptionId: string;\n\thighlighted: boolean;\n\tselected: boolean;\n\tshowTypeHint: boolean;\n\tshowUrl: boolean;\n\ticons?: ContentPickerIconMap;\n\tonHover: () => void;\n\tonSelect: () => void;\n\trender?: (item: ContentItem, state: SuggestionRenderState) => React.ReactNode;\n}\n\nexport const SuggestionItem = ({\n\titem,\n\toptionId,\n\thighlighted,\n\tselected,\n\tshowTypeHint,\n\tshowUrl,\n\ticons,\n\tonHover,\n\tonSelect,\n\trender,\n}: SuggestionItemProps) => {\n\tconst ref = useRef<HTMLLIElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!highlighted || !ref.current) return;\n\t\tref.current.scrollIntoView({ block: 'nearest' });\n\t}, [highlighted]);\n\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tevent.preventDefault();\n\t\t\tonSelect();\n\t\t},\n\t\t[onSelect],\n\t);\n\n\tconst handleMouseDown = useCallback((event: MouseEvent) => {\n\t\t// Keep focus on the input; don't let a mousedown on the option steal it.\n\t\tevent.preventDefault();\n\t}, []);\n\n\tif (render) {\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tref={ref}\n\t\t\t\trole=\"option\"\n\t\t\t\tid={optionId}\n\t\t\t\taria-selected={selected}\n\t\t\t\thighlighted={highlighted}\n\t\t\t\tonMouseEnter={onHover}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={handleClick}\n\t\t\t>\n\t\t\t\t{render(item, { highlighted, selected })}\n\t\t\t</Option>\n\t\t);\n\t}\n\n\tconst displayUrl = toDisplayUrl(item.url);\n\tconst hasAbnormalStatus = item.status && item.status !== 'publish';\n\tconst icon = resolveItemIcon(item, icons);\n\tconst isAvatar = item.kind === 'user' && Boolean(item.thumbnailUrl);\n\tconst hasVisual = Boolean(item.thumbnailUrl) || Boolean(icon);\n\n\treturn (\n\t\t<Option\n\t\t\tref={ref}\n\t\t\trole=\"option\"\n\t\t\tid={optionId}\n\t\t\taria-selected={selected}\n\t\t\thighlighted={highlighted}\n\t\t\tonMouseEnter={onHover}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{hasVisual ? (\n\t\t\t\t<Thumb\n\t\t\t\t\thasImage={Boolean(item.thumbnailUrl) && !isAvatar}\n\t\t\t\t\tavatar={isAvatar}\n\t\t\t\t>\n\t\t\t\t\t{item.thumbnailUrl ? (\n\t\t\t\t\t\t<img src={item.thumbnailUrl} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t) : icon ? (\n\t\t\t\t\t\t<Icon icon={icon} size={22} />\n\t\t\t\t\t) : null}\n\t\t\t\t</Thumb>\n\t\t\t) : null}\n\t\t\t<ItemBody>\n\t\t\t\t<PrimaryText data-valu-title>{item.title}</PrimaryText>\n\t\t\t\t{showUrl && displayUrl ? <SecondaryText>{displayUrl}</SecondaryText> : null}\n\t\t\t</ItemBody>\n\t\t\t{hasAbnormalStatus ? <StatusBadge status={item.status!} /> : null}\n\t\t\t{showTypeHint ? (\n\t\t\t\t<TypeHint>{humanizeType(item.type, item.kind)}</TypeHint>\n\t\t\t) : null}\n\t\t</Option>\n\t);\n};\n","import { useEffect, useRef, type ReactNode } from 'react';\nimport { Button, Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { SuggestionItem } from './SuggestionItem';\nimport {\n\tEmptyState,\n\tErrorState,\n\tGroupHeading,\n\tListbox,\n\tListboxScroll,\n\tLoadMoreRow,\n\tLoadingState,\n\tStickyHeader,\n} from './styles';\nimport { aria, humanizeType } from './utils';\nimport type {\n\tContentItem,\n\tContentKind,\n\tContentPickerIconMap,\n\tContentPickerLabels,\n} from './types';\n\nexport interface SuggestionListProps {\n\tlistboxId: string;\n\trootId: string;\n\tgroups: Array<[string, ContentItem[]]>;\n\tsuggestions: ContentItem[];\n\tkind: ContentKind;\n\tloading: boolean;\n\tfetchingMore: boolean;\n\thasMore: boolean;\n\terror: unknown;\n\tquery: string;\n\thighlightedIndex: number;\n\tselectedKeys: Set<string>;\n\ticons?: ContentPickerIconMap;\n\tlabels: ContentPickerLabels;\n\tshowUrl: boolean;\n\theaderSlot?: ReactNode;\n\trenderSuggestion?: (\n\t\titem: ContentItem,\n\t\tstate: { highlighted: boolean; selected: boolean },\n\t) => ReactNode;\n\trenderGroupHeading?: (type: string, items: ContentItem[]) => ReactNode;\n\tonHover: (index: number) => void;\n\tonSelect: (item: ContentItem) => void;\n\tonLoadMore: () => void;\n}\n\nexport const SuggestionList = ({\n\tlistboxId,\n\trootId,\n\tgroups,\n\tsuggestions,\n\tkind,\n\tloading,\n\tfetchingMore,\n\thasMore,\n\terror,\n\tquery,\n\thighlightedIndex,\n\tselectedKeys,\n\ticons,\n\tlabels,\n\tshowUrl,\n\theaderSlot,\n\trenderSuggestion,\n\trenderGroupHeading,\n\tonHover,\n\tonSelect,\n\tonLoadMore,\n}: SuggestionListProps) => {\n\tconst scrollRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!hasMore || !sentinelRef.current || !scrollRef.current) return;\n\t\tconst io = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tfor (const e of entries) {\n\t\t\t\t\tif (e.isIntersecting) onLoadMore();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ root: scrollRef.current, rootMargin: '120px' },\n\t\t);\n\t\tio.observe(sentinelRef.current);\n\t\treturn () => io.disconnect();\n\t}, [hasMore, onLoadMore]);\n\n\tconst header = headerSlot ? <StickyHeader>{headerSlot}</StickyHeader> : null;\n\n\tif (error) {\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<ErrorState role=\"alert\">\n\t\t\t\t\t{labels.empty ?? __('Search failed. Please try again.', 'valu-block-components')}\n\t\t\t\t</ErrorState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tif (loading && suggestions.length === 0) {\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<LoadingState>\n\t\t\t\t\t<Spinner />\n\t\t\t\t\t{labels.loading ?? __('Searching…', 'valu-block-components')}\n\t\t\t\t</LoadingState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tif (suggestions.length === 0) {\n\t\tconst emptyMessage =\n\t\t\tquery.trim().length > 0\n\t\t\t\t? (labels.empty ?? __('No matches. Try a different search.', 'valu-block-components'))\n\t\t\t\t: __('Type to search.', 'valu-block-components');\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<EmptyState>{emptyMessage}</EmptyState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tlet runningIndex = 0;\n\tconst showGroupHeadings = groups.length > 1 || groups[0]?.[0] !== '__all__';\n\tconst showTypeHint = !showGroupHeadings;\n\n\treturn (\n\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t{header}\n\t\t\t<Listbox\n\t\t\t\trole=\"listbox\"\n\t\t\t\tid={listboxId}\n\t\t\t\taria-label={labels.input ?? __('Suggestions', 'valu-block-components')}\n\t\t\t>\n\t\t\t\t{groups.map(([type, items]) => {\n\t\t\t\t\tconst headingId = aria(rootId, `group-${type}`);\n\t\t\t\t\tconst optionNodes = items.map((item) => {\n\t\t\t\t\t\tconst index = runningIndex++;\n\t\t\t\t\t\tconst optionId = aria(rootId, `option-${index}`);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SuggestionItem\n\t\t\t\t\t\t\t\tkey={item.key}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\toptionId={optionId}\n\t\t\t\t\t\t\t\thighlighted={index === highlightedIndex}\n\t\t\t\t\t\t\t\tselected={selectedKeys.has(item.key)}\n\t\t\t\t\t\t\t\tshowTypeHint={showTypeHint}\n\t\t\t\t\t\t\t\tshowUrl={showUrl}\n\t\t\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\t\t\tonHover={() => onHover(index)}\n\t\t\t\t\t\t\t\tonSelect={() => onSelect(item)}\n\t\t\t\t\t\t\t\trender={renderSuggestion}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!showGroupHeadings) return optionNodes;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div role=\"group\" key={type} aria-labelledby={headingId}>\n\t\t\t\t\t\t\t<GroupHeading id={headingId}>\n\t\t\t\t\t\t\t\t{renderGroupHeading\n\t\t\t\t\t\t\t\t\t? renderGroupHeading(type, items)\n\t\t\t\t\t\t\t\t\t: humanizeType(type, kind)}\n\t\t\t\t\t\t\t</GroupHeading>\n\t\t\t\t\t\t\t{optionNodes}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{hasMore ? (\n\t\t\t\t\t<LoadMoreRow>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={onLoadMore}\n\t\t\t\t\t\t\tdisabled={fetchingMore}\n\t\t\t\t\t\t\tisBusy={fetchingMore}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fetchingMore\n\t\t\t\t\t\t\t\t? __('Loading…', 'valu-block-components')\n\t\t\t\t\t\t\t\t: __('Load more', 'valu-block-components')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</LoadMoreRow>\n\t\t\t\t) : null}\n\t\t\t\t<div ref={sentinelRef} aria-hidden=\"true\" />\n\t\t\t</Listbox>\n\t\t</ListboxScroll>\n\t);\n};\n","import styled from '@emotion/styled';\nimport { __ } from '@wordpress/i18n';\n\nimport { tokens as t } from './styles/tokens';\nimport { humanizeType } from './utils';\nimport type { ContentKind } from './types';\n\nconst Row = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tpadding: 6px ${t.spaceMd};\n\toverflow-x: auto;\n\tborder-bottom: 1px solid ${t.gray200};\n\tbackground: ${t.bg};\n\n\t&::-webkit-scrollbar {\n\t\theight: 4px;\n\t}\n\t&::-webkit-scrollbar-thumb {\n\t\tbackground: ${t.gray300};\n\t\tborder-radius: 2px;\n\t}\n`;\n\nconst Chip = styled.button<{ active?: boolean }>`\n\tflex: 0 0 auto;\n\tpadding: 2px 10px;\n\tfont-size: ${t.fontSizeSmall};\n\tfont-weight: ${t.fontWeightMedium};\n\tline-height: 1.6;\n\tborder-radius: 999px;\n\tborder: 1px solid ${({ active }) => (active ? t.accent : t.gray300)};\n\tbackground: ${({ active }) => (active ? t.accent : 'transparent')};\n\tcolor: ${({ active }) => (active ? '#fff' : t.gray900)};\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background ${t.transitionFast}, border-color ${t.transitionFast};\n\n\t&:hover {\n\t\tborder-color: ${t.accent};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${t.accent};\n\t\toutline-offset: 1px;\n\t}\n`;\n\nexport interface TypeFilterProps {\n\ttypes: string[];\n\tkind: ContentKind;\n\tactive: string | null;\n\tonChange: (type: string | null) => void;\n\tallLabel?: string;\n}\n\nexport const TypeFilter = ({ types, kind, active, onChange, allLabel }: TypeFilterProps) => {\n\tif (types.length < 2) return null;\n\n\treturn (\n\t\t<Row role=\"toolbar\" aria-label={__('Filter by type', 'valu-block-components')}>\n\t\t\t<Chip\n\t\t\t\ttype=\"button\"\n\t\t\t\tactive={active === null}\n\t\t\t\taria-pressed={active === null}\n\t\t\t\tonClick={() => onChange(null)}\n\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t{allLabel ?? __('All', 'valu-block-components')}\n\t\t\t</Chip>\n\t\t\t{types.map((type) => (\n\t\t\t\t<Chip\n\t\t\t\t\tkey={type}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tactive={active === type}\n\t\t\t\t\taria-pressed={active === type}\n\t\t\t\t\tonClick={() => onChange(active === type ? null : type)}\n\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t>\n\t\t\t\t\t{humanizeType(type, kind)}\n\t\t\t\t</Chip>\n\t\t\t))}\n\t\t</Row>\n\t);\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\n\nimport type { ContentItem, ContentKind, ContentStatus, RequestContext } from '../types';\nimport { decodeTitle, generateKey } from '../utils';\n\nexport interface FetchSearchArgs {\n\tquery: string;\n\tkind: ContentKind;\n\ttypes?: string[];\n\tpage: number;\n\tperPage: number;\n\trequest?: (path: string, ctx: RequestContext) => string;\n\tsignal?: AbortSignal;\n}\n\nexport interface FetchSearchPage {\n\titems: ContentItem[];\n\tpage: number;\n\thasMore: boolean;\n\ttotal: number;\n}\n\ninterface WPRestSearchResult {\n\tid: number;\n\ttitle: string;\n\turl?: string;\n\ttype: string;\n\tsubtype: string;\n\t_embedded?: {\n\t\tself?: Array<{\n\t\t\tstatus?: ContentStatus;\n\t\t\tfeatured_media?: number;\n\t\t\t['wp:featuredmedia']?: unknown;\n\t\t}>;\n\t\t'wp:featuredmedia'?: Array<{\n\t\t\tsource_url?: string;\n\t\t\tmedia_details?: {\n\t\t\t\tsizes?: Record<string, { source_url?: string }>;\n\t\t\t};\n\t\t}>;\n\t};\n}\n\ninterface WPUser {\n\tid: number;\n\tname: string;\n\tlink?: string;\n\tavatar_urls?: Record<string, string>;\n}\n\nconst pickThumbnail = (result: WPRestSearchResult): string | undefined => {\n\tconst media = result._embedded?.['wp:featuredmedia']?.[0];\n\tif (!media) return undefined;\n\tconst sizes = media.media_details?.sizes;\n\treturn (\n\t\tsizes?.thumbnail?.source_url ??\n\t\tsizes?.medium?.source_url ??\n\t\tmedia.source_url ??\n\t\tundefined\n\t);\n};\n\nconst pickStatus = (result: WPRestSearchResult): ContentStatus | undefined =>\n\tresult._embedded?.self?.[0]?.status;\n\nconst buildPath = (args: FetchSearchArgs): string => {\n\tconst { kind, types, query, page, perPage } = args;\n\tif (kind === 'user') {\n\t\treturn addQueryArgs('/wp/v2/users', {\n\t\t\tsearch: query,\n\t\t\tper_page: perPage,\n\t\t\tpage,\n\t\t\tcontext: 'view',\n\t\t});\n\t}\n\tconst params: Record<string, string | number> = {\n\t\tsearch: query,\n\t\ttype: kind,\n\t\tper_page: perPage,\n\t\tpage,\n\t\t_embed: 'wp:featuredmedia,self',\n\t};\n\tif (types && types.length > 0) {\n\t\tparams.subtype = types.join(',');\n\t}\n\treturn addQueryArgs('/wp/v2/search', params);\n};\n\nconst parseTotalPages = (response: Response): number => {\n\tconst raw = response.headers.get('x-wp-totalpages');\n\tif (!raw) return 1;\n\tconst parsed = parseInt(raw, 10);\n\treturn Number.isNaN(parsed) ? 1 : parsed;\n};\n\nconst parseTotal = (response: Response): number => {\n\tconst raw = response.headers.get('x-wp-total');\n\tif (!raw) return 0;\n\tconst parsed = parseInt(raw, 10);\n\treturn Number.isNaN(parsed) ? 0 : parsed;\n};\n\nexport const fetchSearch = async (args: FetchSearchArgs): Promise<FetchSearchPage> => {\n\tconst rawPath = buildPath(args);\n\tconst path = args.request\n\t\t? args.request(rawPath, { query: args.query, page: args.page, kind: args.kind })\n\t\t: rawPath;\n\n\tconst response = (await apiFetch({\n\t\tpath,\n\t\tparse: false,\n\t\tsignal: args.signal,\n\t} as Parameters<typeof apiFetch>[0])) as Response;\n\n\tconst data = (await response.json()) as unknown;\n\tconst totalPages = parseTotalPages(response);\n\tconst total = parseTotal(response);\n\n\tlet items: ContentItem[];\n\tif (args.kind === 'user') {\n\t\titems = (data as WPUser[]).map((u) => ({\n\t\t\tkey: generateKey(),\n\t\t\tid: u.id,\n\t\t\ttype: 'user',\n\t\t\tkind: 'user',\n\t\t\ttitle: decodeTitle(u.name),\n\t\t\turl: u.link,\n\t\t\tthumbnailUrl: u.avatar_urls?.['48'] ?? u.avatar_urls?.['96'],\n\t\t\traw: u,\n\t\t}));\n\t} else {\n\t\titems = (data as WPRestSearchResult[]).map((r) => ({\n\t\t\tkey: generateKey(),\n\t\t\tid: r.id,\n\t\t\ttype: r.subtype || r.type,\n\t\t\tkind: args.kind,\n\t\t\ttitle: decodeTitle(r.title),\n\t\t\turl: r.url,\n\t\t\tstatus: pickStatus(r),\n\t\t\tthumbnailUrl: pickThumbnail(r),\n\t\t\traw: r,\n\t\t}));\n\t}\n\n\treturn { items, page: args.page, hasMore: args.page < totalPages, total };\n};\n","import { useInfiniteQuery, keepPreviousData } from '@tanstack/react-query';\n\nimport { fetchSearch } from '../api/fetchSearch';\nimport type { ContentKind, RequestContext } from '../types';\n\nexport interface UseContentSearchArgs {\n\tquery: string;\n\tkind: ContentKind;\n\ttypes?: string[];\n\tperPage: number;\n\tenabled?: boolean;\n\trequest?: (path: string, ctx: RequestContext) => string;\n}\n\nexport const contentSearchKey = (args: UseContentSearchArgs) =>\n\t[\n\t\t'valu/content-search',\n\t\targs.kind,\n\t\t[...(args.types ?? [])].sort().join(','),\n\t\targs.query,\n\t\targs.perPage,\n\t] as const;\n\nexport const useContentSearch = (args: UseContentSearchArgs) =>\n\tuseInfiniteQuery({\n\t\tqueryKey: contentSearchKey(args),\n\t\tqueryFn: ({ pageParam, signal }) =>\n\t\t\tfetchSearch({\n\t\t\t\tquery: args.query,\n\t\t\t\tkind: args.kind,\n\t\t\t\ttypes: args.types,\n\t\t\t\tpage: pageParam,\n\t\t\t\tperPage: args.perPage,\n\t\t\t\trequest: args.request,\n\t\t\t\tsignal,\n\t\t\t}),\n\t\tinitialPageParam: 1,\n\t\tgetNextPageParam: (last) => (last.hasMore ? last.page + 1 : undefined),\n\t\tenabled: args.enabled ?? true,\n\t\tstaleTime: 30_000,\n\t\tplaceholderData: keepPreviousData,\n\t});\n","import { useEffect, useState } from 'react';\n\nexport const useDebouncedValue = <T,>(value: T, delay: number): T => {\n\tconst [debounced, setDebounced] = useState(value);\n\tuseEffect(() => {\n\t\tconst id = setTimeout(() => setDebounced(value), delay);\n\t\treturn () => clearTimeout(id);\n\t}, [value, delay]);\n\treturn debounced;\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Debounced screen-reader announcements. Prevents spam while a user is\n * typing quickly (each keystroke would otherwise trigger a new \"N results\").\n */\nexport const useLiveRegion = (debounceMs = 500) => {\n\tconst timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t},\n\t\t[],\n\t);\n\n\tconst announce = useCallback(\n\t\t(message: string, assertiveness: 'polite' | 'assertive' = 'polite') => {\n\t\t\tif (!message) return;\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t\ttimer.current = setTimeout(() => speak(message, assertiveness), debounceMs);\n\t\t},\n\t\t[debounceMs],\n\t);\n\n\tconst announceImmediate = useCallback(\n\t\t(message: string, assertiveness: 'polite' | 'assertive' = 'polite') => {\n\t\t\tif (!message) return;\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t\tspeak(message, assertiveness);\n\t\t},\n\t\t[],\n\t);\n\n\treturn { announce, announceImmediate };\n};\n","import { useCallback, useState, type KeyboardEvent } from 'react';\n\nexport interface KeyboardNavApi {\n\thighlightedIndex: number;\n\tsetHighlightedIndex: (i: number) => void;\n\treset: () => void;\n\thandleKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport interface UseKeyboardNavArgs {\n\titemCount: number;\n\tonSelect?: (index: number) => void;\n\tonEscape?: () => void;\n\t/** When true, up/down keys wrap at boundaries. */\n\twrap?: boolean;\n}\n\n/**\n * Shared keyboard-navigation state machine for suggestion lists.\n *\n * Arrow Down / Up — move highlight (with optional wrap)\n * Home / End — jump to first / last\n * Enter — onSelect(highlightedIndex) if >= 0\n * Escape — onEscape()\n */\nexport const useKeyboardNav = ({\n\titemCount,\n\tonSelect,\n\tonEscape,\n\twrap = true,\n}: UseKeyboardNavArgs): KeyboardNavApi => {\n\tconst [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n\tconst reset = useCallback(() => setHighlightedIndex(-1), []);\n\n\tconst handleKeyDown = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (itemCount === 0) {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonEscape?.();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowDown': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex((i) => {\n\t\t\t\t\t\tconst next = i + 1;\n\t\t\t\t\t\tif (next >= itemCount) return wrap ? 0 : itemCount - 1;\n\t\t\t\t\t\treturn next;\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'ArrowUp': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex((i) => {\n\t\t\t\t\t\tif (i <= 0) return wrap ? itemCount - 1 : 0;\n\t\t\t\t\t\treturn i - 1;\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Home': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex(0);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'End': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex(itemCount - 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Enter': {\n\t\t\t\t\tif (highlightedIndex >= 0 && highlightedIndex < itemCount) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonSelect?.(highlightedIndex);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Escape': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonEscape?.();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[itemCount, highlightedIndex, onSelect, onEscape, wrap],\n\t);\n\n\treturn { highlightedIndex, setHighlightedIndex, reset, handleKeyDown };\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\n\nimport { useContentSearch } from './useContentSearch';\nimport { useDebouncedValue } from './useDebouncedValue';\nimport { useLiveRegion } from './useLiveRegion';\nimport { useKeyboardNav } from './useKeyboardNav';\nimport { dedupeAgainst, generateKey, groupByType, isMaxedOut } from '../utils';\nimport type { ContentItem, ContentPickerProps } from '../types';\n\nexport interface ContentPickerControllerArgs {\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\t/** Whether the suggestion UI is currently open/visible (controls `enabled`). */\n\tactive: boolean;\n\t/** When true, ignore empty query and fetch anyway (inline variant + fetchOnOpen). */\n\tfetchEmpty: boolean;\n\tonSelectSideEffect?: () => void;\n\tonEscape?: () => void;\n}\n\nexport interface ContentPickerController {\n\tquery: string;\n\tsetQuery: (value: string) => void;\n\tdebouncedQuery: string;\n\tsuggestions: ContentItem[];\n\tgroups: Array<[string, ContentItem[]]>;\n\thighlightedIndex: number;\n\tsetHighlightedIndex: (i: number) => void;\n\thandleKeyDown: (event: React.KeyboardEvent) => void;\n\tloading: boolean;\n\terror: unknown;\n\thasMore: boolean;\n\tloadMore: () => void;\n\tfetchingMore: boolean;\n\tselect: (item: ContentItem) => void;\n\tremove: (key: string) => void;\n\treorder: (from: number, to: number) => void;\n\treplace: (items: ContentItem[]) => void;\n\tmaxedOut: boolean;\n\ttotal: number;\n\tactiveTypeFilter: string | null;\n\tsetActiveTypeFilter: (type: string | null) => void;\n\teffectiveSearchTypes: string[] | undefined;\n}\n\nexport const useContentPickerController = (\n\targs: ContentPickerControllerArgs,\n): ContentPickerController => {\n\tconst {\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType: groupByTypeFlag,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive,\n\t\tfetchEmpty,\n\t\tonSelectSideEffect,\n\t\tonEscape,\n\t} = args;\n\n\tconst [query, setQuery] = useState('');\n\tconst [activeTypeFilter, setActiveTypeFilter] = useState<string | null>(null);\n\tconst debouncedQuery = useDebouncedValue(query, inputDelayMs);\n\n\tconst effectiveSearchTypes = useMemo(() => {\n\t\tif (activeTypeFilter && types && types.includes(activeTypeFilter)) {\n\t\t\treturn [activeTypeFilter];\n\t\t}\n\t\treturn types;\n\t}, [activeTypeFilter, types]);\n\n\tconst currentPostId = useSelect((select) => {\n\t\tif (!excludeCurrentPost || kind !== 'post') return 0;\n\t\tconst editor = select('core/editor' as never) as\n\t\t\t| { getCurrentPostId?: () => number | null }\n\t\t\t| undefined;\n\t\treturn editor?.getCurrentPostId?.() ?? 0;\n\t}, [excludeCurrentPost, kind]);\n\n\tconst enabled = active && (fetchEmpty || debouncedQuery.trim().length > 0);\n\n\tconst query_ = useContentSearch({\n\t\tquery: debouncedQuery,\n\t\tkind,\n\t\ttypes: effectiveSearchTypes,\n\t\tperPage,\n\t\tenabled,\n\t\trequest,\n\t});\n\n\tconst suggestions = useMemo(() => {\n\t\tif (!query_.data) return [];\n\t\tconst flat = query_.data.pages.flatMap((p) => p.items);\n\t\tlet filtered = dedupeAgainst(flat, value, uniqueItems);\n\t\tif (currentPostId) {\n\t\t\tfiltered = filtered.filter((item) => item.id !== currentPostId);\n\t\t}\n\t\tif (filter) {\n\t\t\tfiltered = filter(filtered, { query: debouncedQuery, kind });\n\t\t}\n\t\treturn filtered;\n\t}, [query_.data, value, uniqueItems, currentPostId, filter, debouncedQuery, kind]);\n\n\tconst shouldGroup = groupByTypeFlag && (effectiveSearchTypes?.length ?? 0) > 1;\n\tconst groups = useMemo<Array<[string, ContentItem[]]>>(\n\t\t() => (shouldGroup ? groupByType(suggestions) : [['__all__', suggestions]]),\n\t\t[shouldGroup, suggestions],\n\t);\n\n\tconst { announce, announceImmediate } = useLiveRegion();\n\n\tuseEffect(() => {\n\t\tif (!active) return;\n\t\tif (debouncedQuery.trim().length === 0 && !fetchEmpty) return;\n\t\tif (query_.isFetching) return;\n\t\tif (query_.isError) {\n\t\t\tannounce(__('Search failed. Try again.', 'valu-block-components'));\n\t\t\treturn;\n\t\t}\n\t\tconst count = suggestions.length;\n\t\tannounce(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of search results */\n\t\t\t\t_n('%d result', '%d results', count, 'valu-block-components'),\n\t\t\t\tcount,\n\t\t\t),\n\t\t);\n\t}, [suggestions.length, query_.isFetching, query_.isError, active, debouncedQuery, fetchEmpty, announce]);\n\n\tconst maxedOut = isMaxedOut(value, maxItems);\n\n\tconst replace = useCallback((items: ContentItem[]) => onChange(items), [onChange]);\n\n\tconst select = useCallback(\n\t\t(item: ContentItem) => {\n\t\t\tif (maxedOut) return;\n\t\t\tconst limited = maxItems === 1;\n\t\t\tconst normalized: ContentItem = {\n\t\t\t\t...item,\n\t\t\t\tkey: item.key && item.key.length > 0 ? item.key : generateKey(),\n\t\t\t};\n\t\t\tconst next = limited ? [normalized] : [...value, normalized];\n\t\t\tonChange(next);\n\t\t\tannounceImmediate(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: title, 2: selected count */\n\t\t\t\t\t__('Added %1$s. %2$d selected.', 'valu-block-components'),\n\t\t\t\t\tnormalized.title,\n\t\t\t\t\tnext.length,\n\t\t\t\t),\n\t\t\t);\n\t\t\tonSelectSideEffect?.();\n\t\t},\n\t\t[maxedOut, maxItems, value, onChange, announceImmediate, onSelectSideEffect],\n\t);\n\n\tconst remove = useCallback(\n\t\t(key: string) => {\n\t\t\tconst target = value.find((i) => i.key === key);\n\t\t\tconst next = value.filter((i) => i.key !== key);\n\t\t\tonChange(next);\n\t\t\tif (target) {\n\t\t\t\tannounceImmediate(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: title of the removed item */\n\t\t\t\t\t\t__('Removed %s.', 'valu-block-components'),\n\t\t\t\t\t\ttarget.title,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[value, onChange, announceImmediate],\n\t);\n\n\tconst reorder = useCallback(\n\t\t(from: number, to: number) => {\n\t\t\tif (from === to || from < 0 || to < 0 || from >= value.length || to >= value.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = value.slice();\n\t\t\tconst [moved] = next.splice(from, 1);\n\t\t\tnext.splice(to, 0, moved);\n\t\t\tonChange(next);\n\t\t\tannounceImmediate(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: title, 2: position, 3: total */\n\t\t\t\t\t__('Moved %1$s to position %2$d of %3$d.', 'valu-block-components'),\n\t\t\t\t\tmoved.title,\n\t\t\t\t\tto + 1,\n\t\t\t\t\tnext.length,\n\t\t\t\t),\n\t\t\t);\n\t\t},\n\t\t[value, onChange, announceImmediate],\n\t);\n\n\tconst { highlightedIndex, setHighlightedIndex, reset: resetHighlight, handleKeyDown } =\n\t\tuseKeyboardNav({\n\t\t\titemCount: suggestions.length,\n\t\t\tonSelect: (i) => {\n\t\t\t\tconst item = suggestions[i];\n\t\t\t\tif (item) select(item);\n\t\t\t},\n\t\t\tonEscape,\n\t\t});\n\n\tuseEffect(() => {\n\t\tresetHighlight();\n\t}, [debouncedQuery, activeTypeFilter, resetHighlight]);\n\n\treturn {\n\t\tquery,\n\t\tsetQuery,\n\t\tdebouncedQuery,\n\t\tsuggestions,\n\t\tgroups,\n\t\thighlightedIndex,\n\t\tsetHighlightedIndex,\n\t\thandleKeyDown,\n\t\tloading: query_.isFetching && !query_.data,\n\t\terror: query_.error,\n\t\thasMore: Boolean(query_.hasNextPage),\n\t\tloadMore: () => {\n\t\t\tif (query_.hasNextPage && !query_.isFetchingNextPage) void query_.fetchNextPage();\n\t\t},\n\t\tfetchingMore: query_.isFetchingNextPage,\n\t\tselect,\n\t\tremove,\n\t\treorder,\n\t\treplace,\n\t\tmaxedOut,\n\t\ttotal: query_.data?.pages[0]?.total ?? 0,\n\t\tactiveTypeFilter,\n\t\tsetActiveTypeFilter,\n\t\teffectiveSearchTypes,\n\t};\n};\n\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n/**\n * Creates an Emotion cache scoped to this component.\n *\n * Two reasons this exists:\n *\n * 1. The WordPress site editor renders blocks inside an iframe. The default\n * Emotion cache targets `document.head` of the top frame, so styles\n * never reach the iframe. We capture the owning document via a callback\n * ref and build the cache pointing at the correct `<head>`.\n * 2. A unique cache key per component prevents class-name collisions with\n * a consumer's own Emotion instance.\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-cp', container: head, prepend: true });\n\t}, [head]);\n\n\tif (!cache) {\n\t\t// First render: emit a hidden probe so we can read ownerDocument. No\n\t\t// styled content has a chance to render yet, so nothing ends up in\n\t\t// the wrong head.\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, useEffect, useMemo, useRef, useState } from 'react';\nimport { Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { SearchCombobox } from './SearchCombobox';\nimport { SuggestionList } from './SuggestionList';\nimport { TypeFilter } from './TypeFilter';\nimport { useContentPickerController } from './hooks/useContentPickerController';\nimport { aria } from './utils';\nimport { MaxedOutBanner } from './styles';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport type { ContentItem, ContentPickerLabels, ContentPickerProps } from './types';\n\nexport interface ContentPickerPopoverProps {\n\trootId: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tplaceholder?: string;\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfetchOnOpen: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\trenderSuggestion?: ContentPickerProps['renderSuggestion'];\n\trenderGroupHeading?: ContentPickerProps['renderGroupHeading'];\n\ticons?: ContentPickerProps['icons'];\n\tdisableTypeFilter?: boolean;\n\tshowUrl?: boolean;\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\tlabels: ContentPickerLabels;\n}\n\nexport const ContentPickerPopover = (props: ContentPickerPopoverProps) => {\n\tconst {\n\t\trootId,\n\t\tlabel,\n\t\thideLabelFromVision,\n\t\thelp,\n\t\tplaceholder,\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfetchOnOpen,\n\t\tfilter,\n\t\trequest,\n\t\trenderSuggestion,\n\t\trenderGroupHeading,\n\t\ticons,\n\t\tdisableTypeFilter,\n\t\tshowUrl,\n\t\tvalue,\n\t\tonChange,\n\t\tlabels,\n\t} = props;\n\n\tconst [open, setOpen] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst popoverBodyRef = useRef<HTMLDivElement | null>(null);\n\tconst clearQueryRef = useRef<(() => void) | null>(null);\n\n\tconst controller = useContentPickerController({\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive: open,\n\t\tfetchEmpty: fetchOnOpen,\n\t\tonSelectSideEffect: () => {\n\t\t\tif (maxItems === 1) {\n\t\t\t\tsetOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearQueryRef.current?.();\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t\tonEscape: () => {\n\t\t\tsetOpen(false);\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t});\n\n\tclearQueryRef.current = () => controller.setQuery('');\n\n\tconst listboxId = aria(rootId, 'listbox');\n\n\tconst activeOptionId =\n\t\tcontroller.highlightedIndex >= 0\n\t\t\t? aria(rootId, `option-${controller.highlightedIndex}`)\n\t\t\t: undefined;\n\n\tconst selectedKeys = useMemo(() => new Set(value.map((v) => v.key)), [value]);\n\n\tconst handleFocus = useCallback(() => {\n\t\tif (!controller.maxedOut) setOpen(true);\n\t}, [controller.maxedOut]);\n\n\tuseEffect(() => {\n\t\tif (controller.maxedOut) setOpen(false);\n\t}, [controller.maxedOut]);\n\n\tuseEffect(() => {\n\t\tif (!open) return;\n\n\t\tconst handlePointerDown = (event: MouseEvent) => {\n\t\t\tconst target = event.target as Node | null;\n\t\t\tif (!target) return;\n\n\t\t\tconst input = inputRef.current;\n\t\t\tconst body = popoverBodyRef.current;\n\t\t\tconst anchorContainer = input?.closest('div') ?? input;\n\n\t\t\t// Clicks on the input row or anywhere inside the popover body keep it open.\n\t\t\tif (anchorContainer && anchorContainer.contains(target)) return;\n\t\t\tif (body && body.contains(target)) return;\n\n\t\t\tsetOpen(false);\n\t\t};\n\n\t\t// Use capture so we beat stopPropagation inside descendants; mousedown\n\t\t// fires before the click, which keeps the close snappy and prevents the\n\t\t// focus jump from re-opening the popover.\n\t\tconst docs = new Set<Document>();\n\t\tif (typeof document !== 'undefined') docs.add(document);\n\t\tconst inputDoc = inputRef.current?.ownerDocument;\n\t\tif (inputDoc) docs.add(inputDoc);\n\n\t\tdocs.forEach((d) => d.addEventListener('mousedown', handlePointerDown, true));\n\t\treturn () => {\n\t\t\tdocs.forEach((d) => d.removeEventListener('mousedown', handlePointerDown, true));\n\t\t};\n\t}, [open]);\n\n\tconst disabled = controller.maxedOut;\n\n\treturn (\n\t\t<div style={{ position: 'relative' }}>\n\t\t\t<SearchCombobox\n\t\t\t\tref={inputRef}\n\t\t\t\trootId={rootId}\n\t\t\t\tvalue={controller.query}\n\t\t\t\tonChange={(next) => {\n\t\t\t\t\tcontroller.setQuery(next);\n\t\t\t\t\tif (!open && !disabled) setOpen(true);\n\t\t\t\t}}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\tif (event.key === 'ArrowDown' && !open && !disabled) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcontroller.handleKeyDown(event);\n\t\t\t\t}}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tlabel={label}\n\t\t\t\thideLabelFromVision={hideLabelFromVision}\n\t\t\t\thelp={help}\n\t\t\t\tdisabled={disabled}\n\t\t\t\topen={open && !disabled}\n\t\t\t\tlistboxId={listboxId}\n\t\t\t\tactiveOptionId={activeOptionId}\n\t\t\t\tlabels={labels}\n\t\t\t/>\n\t\t\t{disabled ? (\n\t\t\t\t<MaxedOutBanner role=\"status\" style={{ marginTop: 8 }}>\n\t\t\t\t\t{labels.limitReached ?? __('Selection limit reached.', 'valu-block-components')}\n\t\t\t\t</MaxedOutBanner>\n\t\t\t) : null}\n\t\t\t{open && !disabled && inputRef.current ? (\n\t\t\t\t<Popover\n\t\t\t\t\tanchor={inputRef.current.closest('div') ?? inputRef.current}\n\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\tfocusOnMount={false}\n\t\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t\t\tonFocusOutside={() => setOpen(false)}\n\t\t\t\t\tshift\n\t\t\t\t\tflip\n\t\t\t\t\tresize\n\t\t\t\t\toffset={4}\n\t\t\t\t\tclassName=\"valu-content-picker__popover\"\n\t\t\t\t>\n\t\t\t\t\t<EmotionCacheProvider>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={popoverBodyRef}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tminWidth: inputRef.current.offsetWidth,\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\t\t\trootId={rootId}\n\t\t\t\t\t\t\t\tgroups={controller.groups}\n\t\t\t\t\t\t\t\tsuggestions={controller.suggestions}\n\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\tloading={controller.loading}\n\t\t\t\t\t\t\t\tfetchingMore={controller.fetchingMore}\n\t\t\t\t\t\t\t\thasMore={controller.hasMore}\n\t\t\t\t\t\t\t\terror={controller.error}\n\t\t\t\t\t\t\t\tquery={controller.debouncedQuery}\n\t\t\t\t\t\t\t\thighlightedIndex={controller.highlightedIndex}\n\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\t\tshowUrl={showUrl ?? true}\n\t\t\t\t\t\t\t\theaderSlot={\n\t\t\t\t\t\t\t\t\t!disableTypeFilter && types && types.length > 1 ? (\n\t\t\t\t\t\t\t\t\t\t<TypeFilter\n\t\t\t\t\t\t\t\t\t\t\ttypes={types}\n\t\t\t\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\t\t\t\tactive={controller.activeTypeFilter}\n\t\t\t\t\t\t\t\t\t\t\tonChange={controller.setActiveTypeFilter}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\t\trenderGroupHeading={renderGroupHeading}\n\t\t\t\t\t\t\t\tonHover={(i) => controller.setHighlightedIndex(i)}\n\t\t\t\t\t\t\t\tonSelect={(item) => controller.select(item)}\n\t\t\t\t\t\t\t\tonLoadMore={() => controller.loadMore()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</EmotionCacheProvider>\n\t\t\t\t</Popover>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n","import { useMemo, useRef } from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { SearchCombobox } from './SearchCombobox';\nimport { SuggestionList } from './SuggestionList';\nimport { TypeFilter } from './TypeFilter';\nimport { useContentPickerController } from './hooks/useContentPickerController';\nimport { aria } from './utils';\nimport { MaxedOutBanner, SuggestionsShell } from './styles';\nimport type { ContentItem, ContentPickerLabels, ContentPickerProps } from './types';\n\nexport interface ContentPickerInlineProps {\n\trootId: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tplaceholder?: string;\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfetchOnOpen: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\trenderSuggestion?: ContentPickerProps['renderSuggestion'];\n\trenderGroupHeading?: ContentPickerProps['renderGroupHeading'];\n\ticons?: ContentPickerProps['icons'];\n\tdisableTypeFilter?: boolean;\n\tshowUrl?: boolean;\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\tlabels: ContentPickerLabels;\n}\n\nexport const ContentPickerInline = (props: ContentPickerInlineProps) => {\n\tconst {\n\t\trootId,\n\t\tlabel,\n\t\thideLabelFromVision,\n\t\thelp,\n\t\tplaceholder,\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfetchOnOpen,\n\t\tfilter,\n\t\trequest,\n\t\trenderSuggestion,\n\t\trenderGroupHeading,\n\t\ticons,\n\t\tdisableTypeFilter,\n\t\tshowUrl,\n\t\tvalue,\n\t\tonChange,\n\t\tlabels,\n\t} = props;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst clearQueryRef = useRef<(() => void) | null>(null);\n\n\tconst controller = useContentPickerController({\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive: true,\n\t\tfetchEmpty: fetchOnOpen || value.length === 0,\n\t\tonSelectSideEffect: () => {\n\t\t\tclearQueryRef.current?.();\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t});\n\n\tclearQueryRef.current = () => controller.setQuery('');\n\n\tconst listboxId = aria(rootId, 'listbox');\n\tconst activeOptionId =\n\t\tcontroller.highlightedIndex >= 0\n\t\t\t? aria(rootId, `option-${controller.highlightedIndex}`)\n\t\t\t: undefined;\n\n\tconst selectedKeys = useMemo(() => new Set(value.map((v) => v.key)), [value]);\n\n\tconst disabled = controller.maxedOut;\n\tconst shouldShowList =\n\t\t!disabled &&\n\t\t(controller.debouncedQuery.trim().length > 0 ||\n\t\t\tfetchOnOpen ||\n\t\t\tvalue.length === 0);\n\n\treturn (\n\t\t<div>\n\t\t\t<SearchCombobox\n\t\t\t\tref={inputRef}\n\t\t\t\trootId={rootId}\n\t\t\t\tvalue={controller.query}\n\t\t\t\tonChange={(next) => controller.setQuery(next)}\n\t\t\t\tonKeyDown={controller.handleKeyDown}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tlabel={label}\n\t\t\t\thideLabelFromVision={hideLabelFromVision}\n\t\t\t\thelp={help}\n\t\t\t\tdisabled={disabled}\n\t\t\t\topen={shouldShowList}\n\t\t\t\tlistboxId={listboxId}\n\t\t\t\tactiveOptionId={activeOptionId}\n\t\t\t\tlabels={labels}\n\t\t\t/>\n\t\t\t{disabled ? (\n\t\t\t\t<MaxedOutBanner role=\"status\" style={{ marginTop: 8 }}>\n\t\t\t\t\t{labels.limitReached ?? __('Selection limit reached.', 'valu-block-components')}\n\t\t\t\t</MaxedOutBanner>\n\t\t\t) : null}\n\t\t\t{shouldShowList ? (\n\t\t\t\t<SuggestionsShell inline style={{ marginTop: 8 }}>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\trootId={rootId}\n\t\t\t\t\t\tgroups={controller.groups}\n\t\t\t\t\t\tsuggestions={controller.suggestions}\n\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\tloading={controller.loading}\n\t\t\t\t\t\tfetchingMore={controller.fetchingMore}\n\t\t\t\t\t\thasMore={controller.hasMore}\n\t\t\t\t\t\terror={controller.error}\n\t\t\t\t\t\tquery={controller.debouncedQuery}\n\t\t\t\t\t\thighlightedIndex={controller.highlightedIndex}\n\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\tshowUrl={showUrl ?? true}\n\t\t\t\t\t\theaderSlot={\n\t\t\t\t\t\t\t!disableTypeFilter && types && types.length > 1 ? (\n\t\t\t\t\t\t\t\t<TypeFilter\n\t\t\t\t\t\t\t\t\ttypes={types}\n\t\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\t\tactive={controller.activeTypeFilter}\n\t\t\t\t\t\t\t\t\tonChange={controller.setActiveTypeFilter}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\trenderGroupHeading={renderGroupHeading}\n\t\t\t\t\t\tonHover={(i) => controller.setHighlightedIndex(i)}\n\t\t\t\t\t\tonSelect={(item) => controller.select(item)}\n\t\t\t\t\t\tonLoadMore={() => controller.loadMore()}\n\t\t\t\t\t/>\n\t\t\t\t</SuggestionsShell>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n","import styled from '@emotion/styled';\n\nimport { tokens as t } from '../styles/tokens';\nimport type { ContentKind } from '../types';\nimport { humanizeType } from '../utils';\n\nconst Pill = styled.span`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 1px 6px;\n\tbackground: transparent;\n\tcolor: ${t.gray600};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n\twhite-space: nowrap;\n\tline-height: 1.6;\n`;\n\nexport interface TypeBadgeProps {\n\ttype: string;\n\tkind: ContentKind;\n\t/** Override the displayed label (e.g. from renderItemType). */\n\tlabel?: string;\n}\n\nexport const TypeBadge = ({ type, kind, label }: TypeBadgeProps) => (\n\t<Pill>{label ?? humanizeType(type, kind)}</Pill>\n);\n","import { type CSSProperties, type ReactNode } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Button, Icon } from '@wordpress/components';\nimport {\n\tcaution,\n\tchevronDown,\n\tchevronUp,\n\tcloseSmall,\n\tdragHandle,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport {\n\tActionColumn,\n\tDragHandleButton,\n\tItemBody,\n\tPrimaryText,\n\tSelectedRow,\n\tThumb,\n} from './styles';\nimport { StatusBadge } from './badges/StatusBadge';\nimport { TypeBadge } from './badges/TypeBadge';\nimport { resolveItemIcon } from './utils';\nimport type {\n\tContentPickerIconMap,\n\tContentPickerLabels,\n\tResolvedContentItem,\n} from './types';\n\nexport interface SelectedItemProps {\n\titem: ResolvedContentItem;\n\tindex: number;\n\ttotal: number;\n\torderable: boolean;\n\tshowTypeBadge: boolean;\n\ticons?: ContentPickerIconMap;\n\tlabels: ContentPickerLabels;\n\tonRemove: () => void;\n\tonMoveUp?: () => void;\n\tonMoveDown?: () => void;\n\trender?: (item: ResolvedContentItem) => ReactNode;\n}\n\nexport const SelectedItem = ({\n\titem,\n\tindex,\n\ttotal,\n\torderable,\n\tshowTypeBadge,\n\ticons,\n\tlabels,\n\tonRemove,\n\tonMoveUp,\n\tonMoveDown,\n\trender,\n}: SelectedItemProps) => {\n\tconst { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n\t\tid: item.key,\n\t\tdisabled: !orderable,\n\t});\n\n\tconst style: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0 : 1,\n\t};\n\n\tconst isMissing = item.missing === 'deleted';\n\tconst isTrash = item.missing === 'trash';\n\tconst missingLabel =\n\t\tlabels.missing ?? __('This item is no longer available.', 'valu-block-components');\n\tconst trashLabel =\n\t\tlabels.statusTrash ?? __('This item is in the trash.', 'valu-block-components');\n\n\tconst removeLabel = labels.remove\n\t\t? labels.remove\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Remove %s', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst moveUpLabel = labels.moveUp\n\t\t? labels.moveUp\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Move %s up', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst moveDownLabel = labels.moveDown\n\t\t? labels.moveDown\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Move %s down', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst hasAbnormalStatus = item.status && item.status !== 'publish';\n\tconst resolvedIcon = resolveItemIcon(item, icons);\n\tconst hasThumbImage = Boolean(item.thumbnailUrl) && !isMissing && !isTrash;\n\tconst isAvatar = item.kind === 'user' && hasThumbImage;\n\tconst hasVisual = isMissing || isTrash || hasThumbImage || Boolean(resolvedIcon);\n\n\treturn (\n\t\t<SelectedRow\n\t\t\tref={setNodeRef}\n\t\t\tstyle={style}\n\t\t\tdragging={isDragging}\n\t\t\tmissing={isMissing || isTrash}\n\t\t\taria-setsize={total}\n\t\t\taria-posinset={index + 1}\n\t\t>\n\t\t\t{orderable ? (\n\t\t\t\t<DragHandleButton\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={labels.dragHandle ?? __('Reorder item', 'valu-block-components')}\n\t\t\t\t\t{...attributes}\n\t\t\t\t\t{...listeners}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={dragHandle} size={14} />\n\t\t\t\t</DragHandleButton>\n\t\t\t) : null}\n\t\t\t{hasVisual ? (\n\t\t\t\t<Thumb\n\t\t\t\t\thasImage={hasThumbImage && !isAvatar}\n\t\t\t\t\tavatar={isAvatar}\n\t\t\t\t\tmissing={isMissing || isTrash}\n\t\t\t\t>\n\t\t\t\t\t{isMissing || isTrash ? (\n\t\t\t\t\t\t<Icon icon={caution} size={22} />\n\t\t\t\t\t) : hasThumbImage ? (\n\t\t\t\t\t\t<img src={item.thumbnailUrl} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t) : resolvedIcon ? (\n\t\t\t\t\t\t<Icon icon={resolvedIcon} size={22} />\n\t\t\t\t\t) : null}\n\t\t\t\t</Thumb>\n\t\t\t) : null}\n\t\t\t{render ? (\n\t\t\t\trender(item)\n\t\t\t) : (\n\t\t\t\t<ItemBody>\n\t\t\t\t\t<PrimaryText muted={isMissing || isTrash} title={item.title}>\n\t\t\t\t\t\t{isMissing ? missingLabel : isTrash ? trashLabel : item.title}\n\t\t\t\t\t</PrimaryText>\n\t\t\t\t</ItemBody>\n\t\t\t)}\n\t\t\t{!isMissing && showTypeBadge ? (\n\t\t\t\t<TypeBadge type={item.type} kind={item.kind} />\n\t\t\t) : null}\n\t\t\t{!isMissing && hasAbnormalStatus ? (\n\t\t\t\t<StatusBadge status={item.status!} />\n\t\t\t) : null}\n\t\t\t<ActionColumn>\n\t\t\t\t{orderable ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\ticon={chevronUp}\n\t\t\t\t\t\t\tlabel={moveUpLabel}\n\t\t\t\t\t\t\tonClick={onMoveUp}\n\t\t\t\t\t\t\tdisabled={index === 0 || !onMoveUp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\ticon={chevronDown}\n\t\t\t\t\t\t\tlabel={moveDownLabel}\n\t\t\t\t\t\t\tonClick={onMoveDown}\n\t\t\t\t\t\t\tdisabled={index === total - 1 || !onMoveDown}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) : null}\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon={closeSmall}\n\t\t\t\t\tlabel={removeLabel}\n\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\tisDestructive\n\t\t\t\t/>\n\t\t\t</ActionColumn>\n\t\t</SelectedRow>\n\t);\n};\n","import { Icon } from '@wordpress/components';\nimport { dragHandle } from '@wordpress/icons';\n\nimport { ChipTitle, ChipWrap } from './styles';\n\nexport interface DragChipProps {\n\ttitle: string;\n}\n\nexport const DragChip = ({ title }: DragChipProps) => (\n\t<ChipWrap>\n\t\t<Icon icon={dragHandle} size={16} />\n\t\t<ChipTitle>{title}</ChipTitle>\n\t</ChipWrap>\n);\n","import { useMemo } from 'react';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\nimport type { ContentItem, ContentKind, ContentStatus, ResolvedContentItem } from '../types';\nimport { decodeTitle } from '../utils';\n\ninterface EntityRecord {\n\tid: number;\n\tstatus?: ContentStatus;\n\ttitle?: { rendered?: string } | string;\n\tname?: string;\n\tlink?: string;\n\tfeatured_media?: number;\n}\n\nconst entityKindFor = (kind: ContentKind): 'postType' | 'taxonomy' | 'root' => {\n\tif (kind === 'post') return 'postType';\n\tif (kind === 'term') return 'taxonomy';\n\treturn 'root';\n};\n\nconst entityNameFor = (kind: ContentKind, type: string): string => {\n\tif (kind === 'user') return 'user';\n\treturn type;\n};\n\n/**\n * Hydrate picked items from the core-data store so we can detect trash /\n * deletion and show fresh titles. Batches one call per distinct `type`.\n */\nexport const useResolvedItems = (value: ContentItem[]): ResolvedContentItem[] => {\n\tconst distinctTypes = useMemo(() => {\n\t\tconst map = new Map<string, { kind: ContentKind; ids: number[] }>();\n\t\tfor (const item of value) {\n\t\t\tconst key = `${item.kind}:${item.type}`;\n\t\t\tconst bucket = map.get(key);\n\t\t\tif (bucket) bucket.ids.push(item.id);\n\t\t\telse map.set(key, { kind: item.kind, ids: [item.id] });\n\t\t}\n\t\treturn Array.from(map.entries()).map(([key, v]) => ({ key, ...v }));\n\t}, [value]);\n\n\tconst records = useSelect(\n\t\t(select) => {\n\t\t\tconst core = select(coreStore);\n\t\t\tconst out: Record<string, { record: EntityRecord | null; resolved: boolean }> = {};\n\t\t\tfor (const item of value) {\n\t\t\t\tconst kindKey = entityKindFor(item.kind);\n\t\t\t\tconst nameKey = entityNameFor(item.kind, item.type);\n\t\t\t\tconst record = core.getEntityRecord(kindKey, nameKey, item.id) as\n\t\t\t\t\t| EntityRecord\n\t\t\t\t\t| null\n\t\t\t\t\t| undefined;\n\t\t\t\tconst resolved = core.hasFinishedResolution('getEntityRecord', [\n\t\t\t\t\tkindKey,\n\t\t\t\t\tnameKey,\n\t\t\t\t\titem.id,\n\t\t\t\t]);\n\t\t\t\tout[`${item.kind}:${item.type}:${item.id}`] = {\n\t\t\t\t\trecord: record ?? null,\n\t\t\t\t\tresolved,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\t[value, distinctTypes],\n\t);\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tvalue.map((item): ResolvedContentItem => {\n\t\t\t\tconst resolvedEntry = records[`${item.kind}:${item.type}:${item.id}`];\n\t\t\t\tif (!resolvedEntry) return item;\n\t\t\t\tconst { record, resolved } = resolvedEntry;\n\n\t\t\t\tif (!resolved) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t\tif (!record) {\n\t\t\t\t\treturn { ...item, missing: 'deleted' };\n\t\t\t\t}\n\t\t\t\tif (record.status === 'trash') {\n\t\t\t\t\treturn { ...item, missing: 'trash', status: 'trash' };\n\t\t\t\t}\n\t\t\t\tconst freshTitle =\n\t\t\t\t\tdecodeTitle(record.title) || (record.name ? decodeTitle(record.name) : '');\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\ttitle: freshTitle || item.title,\n\t\t\t\t\tstatus: record.status ?? item.status,\n\t\t\t\t\turl: record.link ?? item.url,\n\t\t\t\t};\n\t\t\t}),\n\t\t[value, records],\n\t);\n};\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport {\n\tDndContext,\n\tDragOverlay,\n\tMouseSensor,\n\tTouchSensor,\n\tKeyboardSensor,\n\tclosestCenter,\n\tuseSensor,\n\tuseSensors,\n\tdefaultDropAnimation,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tarrayMove,\n\tsortableKeyboardCoordinates,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { SelectedItem } from './SelectedItem';\nimport { DragChip } from './DragChip';\nimport { useResolvedItems } from './hooks/useResolvedItems';\nimport {\n\tCountPill,\n\tHeaderRow,\n\tHeaderTitle,\n\tSelectedListEl,\n} from './styles';\nimport type {\n\tContentItem,\n\tContentPickerIconMap,\n\tContentPickerLabels,\n\tResolvedContentItem,\n} from './types';\n\nexport interface SelectedListProps {\n\tvalue: ContentItem[];\n\torderable: boolean;\n\tmaxItems: number;\n\tlabels: ContentPickerLabels;\n\tonChange: (next: ContentItem[]) => void;\n\trenderSelected?: (item: ResolvedContentItem) => ReactNode;\n\tshowHeader?: boolean;\n\tshowTypeBadge: boolean;\n\ticons?: ContentPickerIconMap;\n}\n\nexport const SelectedList = ({\n\tvalue,\n\torderable,\n\tmaxItems,\n\tlabels,\n\tonChange,\n\trenderSelected,\n\tshowHeader = true,\n\tshowTypeBadge,\n\ticons,\n}: SelectedListProps) => {\n\tconst resolved = useResolvedItems(value);\n\tconst [activeKey, setActiveKey] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(MouseSensor, { activationConstraint: { distance: 5 } }),\n\t\tuseSensor(TouchSensor, { activationConstraint: { delay: 200, tolerance: 6 } }),\n\t\tuseSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n\t);\n\n\tconst ids = useMemo(() => resolved.map((i) => i.key), [resolved]);\n\tconst activeItem = activeKey ? resolved.find((i) => i.key === activeKey) : null;\n\n\tconst remove = useCallback(\n\t\t(key: string) => onChange(value.filter((i) => i.key !== key)),\n\t\t[value, onChange],\n\t);\n\n\tconst reorder = useCallback(\n\t\t(from: number, to: number) => {\n\t\t\tif (from === to) return;\n\t\t\tonChange(arrayMove(value, from, to));\n\t\t},\n\t\t[value, onChange],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => setActiveKey(String(event.active.id)),\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveKey(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over || active.id === over.id) return;\n\t\t\tconst from = ids.indexOf(String(active.id));\n\t\t\tconst to = ids.indexOf(String(over.id));\n\t\t\tif (from >= 0 && to >= 0) reorder(from, to);\n\t\t},\n\t\t[ids, reorder],\n\t);\n\n\tif (resolved.length === 0) return null;\n\n\tconst isSingleSelect = maxItems === 1;\n\tconst shouldShowHeader = showHeader && !isSingleSelect;\n\n\tconst header = shouldShowHeader ? (\n\t\t<HeaderRow>\n\t\t\t<HeaderTitle>\n\t\t\t\t{resolved.length === 1\n\t\t\t\t\t? (labels.selectedSingular ?? __('Selected', 'valu-block-components'))\n\t\t\t\t\t: (labels.selectedPlural ?? __('Selected', 'valu-block-components'))}\n\t\t\t</HeaderTitle>\n\t\t\t<CountPill aria-hidden=\"true\">\n\t\t\t\t{Number.isFinite(maxItems)\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: 1: current count, 2: max count */\n\t\t\t\t\t\t\t'%1$d / %2$d',\n\t\t\t\t\t\t\tresolved.length,\n\t\t\t\t\t\t\tmaxItems,\n\t\t\t\t\t\t)\n\t\t\t\t\t: String(resolved.length)}\n\t\t\t</CountPill>\n\t\t</HeaderRow>\n\t) : null;\n\n\tconst rows = resolved.map((item, index) => (\n\t\t<SelectedItem\n\t\t\tkey={item.key}\n\t\t\titem={item}\n\t\t\tindex={index}\n\t\t\ttotal={resolved.length}\n\t\t\torderable={orderable}\n\t\t\tshowTypeBadge={showTypeBadge}\n\t\t\ticons={icons}\n\t\t\tlabels={labels}\n\t\t\tonRemove={() => remove(item.key)}\n\t\t\tonMoveUp={index > 0 ? () => reorder(index, index - 1) : undefined}\n\t\t\tonMoveDown={\n\t\t\t\tindex < resolved.length - 1 ? () => reorder(index, index + 1) : undefined\n\t\t\t}\n\t\t\trender={renderSelected}\n\t\t/>\n\t));\n\n\tif (!orderable) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{header}\n\t\t\t\t<SelectedListEl role=\"list\">{rows}</SelectedListEl>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{header}\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tcollisionDetection={closestCenter}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveKey(null)}\n\t\t\t>\n\t\t\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t\t\t<SelectedListEl role=\"list\">{rows}</SelectedListEl>\n\t\t\t\t</SortableContext>\n\t\t\t\t<DragOverlay dropAnimation={defaultDropAnimation}>\n\t\t\t\t\t{activeItem ? <DragChip title={activeItem.title} /> : null}\n\t\t\t\t</DragOverlay>\n\t\t\t</DndContext>\n\t\t</>\n\t);\n};\n","import { useCallback, useId, useMemo, useRef, useState } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nimport { ContentPickerPopover } from './ContentPickerPopover';\nimport { ContentPickerInline } from './ContentPickerInline';\nimport { SelectedList } from './SelectedList';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport { Root } from './styles';\nimport type {\n\tContentItem,\n\tContentPickerLabels,\n\tContentPickerProps,\n} from './types';\n\nconst DEFAULT_LABELS: ContentPickerLabels = {};\n\nconst defaultTypesFor = (kind: NonNullable<ContentPickerProps['kind']>): string[] => {\n\tif (kind === 'post') return ['post', 'page'];\n\tif (kind === 'term') return ['category', 'post_tag'];\n\treturn [];\n};\n\nconst makeQueryClient = () =>\n\tnew QueryClient({\n\t\tdefaultOptions: {\n\t\t\tqueries: { retry: 1, refetchOnWindowFocus: false },\n\t\t},\n\t});\n\n/**\n * `<ContentPicker />` — search for and attach WordPress posts, pages,\n * custom post types, taxonomy terms, or users to a block.\n *\n * The component is **controlled** when `value` is defined, and\n * **uncontrolled** (with optional `defaultValue`) otherwise. In both modes\n * `onChange` fires with the full next array.\n *\n * @example\n * <ContentPicker\n * label=\"Related posts\"\n * variant=\"popover\"\n * kind=\"post\"\n * types={['post', 'page']}\n * maxItems={5}\n * orderable\n * value={related}\n * onChange={setRelated}\n * />\n */\nexport const ContentPicker = ({\n\tlabel,\n\thideLabelFromVision = false,\n\thelp,\n\tkind = 'post',\n\ttypes,\n\tvariant = 'popover',\n\tvalue: controlledValue,\n\tdefaultValue,\n\tonChange,\n\tmaxItems = Infinity,\n\torderable,\n\tplaceholder,\n\tperPage,\n\tinputDelayMs = 250,\n\tfetchOnOpen = false,\n\texcludeCurrentPost = true,\n\tuniqueItems = true,\n\tgroupByType,\n\tshowTypeBadge,\n\ticons,\n\tdisableTypeFilter,\n\tshowUrl,\n\tfilter,\n\trequest,\n\trenderSuggestion,\n\trenderSelected,\n\trenderGroupHeading,\n\tlabels = DEFAULT_LABELS,\n\tclassName,\n\tid,\n}: ContentPickerProps) => {\n\tconst reactId = useId();\n\tconst rootId = id ?? `valu-cp-${reactId.replace(/:/g, '')}`;\n\n\tconst [uncontrolled, setUncontrolled] = useState<ContentItem[]>(defaultValue ?? []);\n\tconst isControlled = controlledValue !== undefined;\n\tconst value = isControlled ? controlledValue : uncontrolled;\n\n\tconst handleChange = useCallback(\n\t\t(next: ContentItem[]) => {\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 effectiveTypes = types ?? defaultTypesFor(kind);\n\tconst effectivePerPage = perPage ?? (variant === 'popover' ? 10 : 20);\n\tconst effectiveOrderable = orderable ?? (Number.isFinite(maxItems) ? maxItems > 1 : true);\n\tconst effectiveGroupByType = groupByType ?? effectiveTypes.length > 1;\n\tconst effectiveShowTypeBadge = showTypeBadge ?? effectiveTypes.length > 1;\n\n\tconst queryClientRef = useRef<QueryClient | null>(null);\n\tif (!queryClientRef.current) queryClientRef.current = makeQueryClient();\n\n\tconst showInput = !(Number.isFinite(maxItems) && value.length >= maxItems);\n\n\tconst variantProps = useMemo(\n\t\t() => ({\n\t\t\trootId,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tplaceholder,\n\t\t\tkind,\n\t\t\ttypes: effectiveTypes,\n\t\t\tperPage: effectivePerPage,\n\t\t\tinputDelayMs,\n\t\t\texcludeCurrentPost,\n\t\t\tuniqueItems,\n\t\t\tmaxItems,\n\t\t\tgroupByType: effectiveGroupByType,\n\t\t\tfetchOnOpen,\n\t\t\tfilter,\n\t\t\trequest,\n\t\t\trenderSuggestion,\n\t\t\trenderGroupHeading,\n\t\t\ticons,\n\t\t\tdisableTypeFilter,\n\t\t\tshowUrl,\n\t\t\tvalue,\n\t\t\tonChange: handleChange,\n\t\t\tlabels,\n\t\t}),\n\t\t[\n\t\t\trootId,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tplaceholder,\n\t\t\tkind,\n\t\t\teffectiveTypes,\n\t\t\teffectivePerPage,\n\t\t\tinputDelayMs,\n\t\t\texcludeCurrentPost,\n\t\t\tuniqueItems,\n\t\t\tmaxItems,\n\t\t\teffectiveGroupByType,\n\t\t\tfetchOnOpen,\n\t\t\tfilter,\n\t\t\trequest,\n\t\t\trenderSuggestion,\n\t\t\trenderGroupHeading,\n\t\t\ticons,\n\t\t\tdisableTypeFilter,\n\t\t\tshowUrl,\n\t\t\tvalue,\n\t\t\thandleChange,\n\t\t\tlabels,\n\t\t],\n\t);\n\n\treturn (\n\t\t<EmotionCacheProvider>\n\t\t\t<QueryClientProvider client={queryClientRef.current}>\n\t\t\t\t<Root id={rootId} className={className}>\n\t\t\t\t\t{showInput ? (\n\t\t\t\t\t\tvariant === 'popover' ? (\n\t\t\t\t\t\t\t<ContentPickerPopover {...variantProps} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ContentPickerInline {...variantProps} />\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\t\t\t\t\t<SelectedList\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\torderable={effectiveOrderable && value.length > 1}\n\t\t\t\t\t\tmaxItems={maxItems}\n\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\trenderSelected={renderSelected}\n\t\t\t\t\t\tshowHeader={value.length > 0}\n\t\t\t\t\t\tshowTypeBadge={effectiveShowTypeBadge}\n\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t/>\n\t\t\t\t</Root>\n\t\t\t</QueryClientProvider>\n\t\t</EmotionCacheProvider>\n\t);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../components/content-picker/styles/tokens.ts","../components/content-picker/styles/index.ts","../components/content-picker/utils.ts","../components/content-picker/SearchCombobox.tsx","../components/content-picker/badges/StatusBadge.tsx","../components/content-picker/SuggestionItem.tsx","../components/content-picker/SuggestionList.tsx","../components/content-picker/TypeFilter.tsx","../components/content-picker/api/fetchSearch.ts","../components/content-picker/hooks/useContentSearch.ts","../components/content-picker/hooks/useDebouncedValue.ts","../components/content-picker/hooks/useLiveRegion.ts","../components/content-picker/hooks/useKeyboardNav.ts","../components/content-picker/hooks/useContentPickerController.ts","../components/content-picker/styles/emotionCache.tsx","../components/content-picker/ContentPickerPopover.tsx","../components/content-picker/ContentPickerInline.tsx","../components/content-picker/badges/TypeBadge.tsx","../components/content-picker/SelectedItem.tsx","../components/content-picker/DragChip.tsx","../components/content-picker/hooks/useResolvedItems.ts","../components/content-picker/SelectedList.tsx","../components/content-picker/ContentPicker.tsx","../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":["uuidv4","__","styled","jsx","jsxs","Icon","useRef","useEffect","useCallback","useState","select","useMemo","groupByType","Pill","sprintf","Button","closeSmall","dragHandle","useSelect","coreStore","Fragment","tokens","visuallyHiddenCss","css","Root","ToggleControl","EmotionCacheProvider","createCache","CacheProvider","isExpanded","useId"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Design tokens — CSS custom-property passthroughs with fallbacks.\n *\n * The picker is designed to render inside the WP admin where these\n * variables are defined by core (Gutenberg/@wordpress/components). When\n * rendered outside WP (tests, Storybook), the fallbacks keep it usable.\n *\n * Variable mapping:\n * - `accent` — primary action / focus ring / highlighted option edge\n * - `accentHover` — translucent accent for hover rows (matches core's\n * 4% color-mix recipe used on tertiary buttons)\n * - `accentActive` — translucent accent for active/highlighted rows\n * (matches core's 8% color-mix recipe, e.g.\n * `.components-button.is-tertiary:active`)\n * - `gray300` — input / popover borders\n * - `gray600` — secondary text (URL, meta)\n * - `gray900` — primary text\n * - `danger*` — trash / missing states\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\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\tdanger: '#cc1818',\n\tdangerSoft: '#fef7f7',\n\tdangerLine: '#f0b7b7',\n\tsuccess: '#007017',\n\twarning: '#bd8600',\n\n\tradiusSm: '2px',\n\tradiusMd: '4px',\n\tradiusLg: '6px',\n\n\trowMinHeight: '40px',\n\tsuggestionMinHeight: '44px',\n\tthumbXs: '20px',\n\tthumbSm: '24px',\n\tthumbMd: '32px',\n\tthumbLg: '40px',\n\n\tshadowPopover: '0 6px 24px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.06)',\n\tshadowRow: '0 1px 0 rgba(0, 0, 0, 0.04)',\n\n\tspaceXs: '4px',\n\tspaceSm: '8px',\n\tspaceMd: '12px',\n\tspaceLg: '16px',\n\n\ttransitionFast: '120ms ease-out',\n\ttransitionMed: '200ms ease-out',\n\n\tfontSizeBody: '13px',\n\tfontSizeSmall: '11px',\n\tfontWeightRegular: 400,\n\tfontWeightMedium: 500,\n\tfontWeightBold: 600,\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 focusRing = css`\n\toutline: 2px solid ${t.accent};\n\toutline-offset: 1px;\n`;\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\nexport const Label = styled.label`\n\tdisplay: block;\n\tmargin-bottom: ${t.spaceXs};\n\tfont-weight: ${t.fontWeightMedium};\n\tfont-size: ${t.fontSizeSmall};\n\ttext-transform: uppercase;\n\tletter-spacing: 0.02em;\n\tcolor: ${t.gray900};\n`;\n\nexport const HelpText = styled.p`\n\tmargin: ${t.spaceXs} 0 0;\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeSmall};\n`;\n\nexport const InputShell = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tbackground: ${t.bg};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tpadding: 6px ${t.spaceMd};\n\tmin-height: 40px;\n\ttransition: border-color ${t.transitionFast}, box-shadow ${t.transitionFast};\n\n\t&:focus-within {\n\t\tborder-color: ${t.accent};\n\t\tbox-shadow: 0 0 0 1px ${t.accent};\n\t}\n`;\n\nexport const Input = styled.input`\n\tflex: 1;\n\tbackground: transparent;\n\tfont: inherit;\n\tcolor: ${t.fg};\n\tmin-width: 0;\n\n\t/*\n\t * WP admin's global input styles (\\`input[type=\"text\"]\\` in various\n\t * editor/sidebar stylesheets) set their own border + box-shadow at a\n\t * higher specificity than our Emotion class. \\`!important\\` is the\n\t * pragmatic reset here — we provide the focus chrome on the enclosing\n\t * \\`InputShell\\`, so every input-level border/outline/box-shadow\n\t * contribution is noise.\n\t */\n\t&,\n\t&:focus,\n\t&:focus-visible,\n\t&:hover {\n\t\tborder: 0 !important;\n\t\toutline: 0 !important;\n\t\tbox-shadow: none !important;\n\t}\n\n\t&::placeholder {\n\t\tcolor: ${t.gray600};\n\t}\n`;\n\nexport const SuggestionsShell = styled.div<{ inline?: boolean }>`\n\tbackground: ${t.bg};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\toverflow: hidden;\n\tmax-height: 380px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t${({ inline }) =>\n\t\tinline\n\t\t\t? css`\n\t\t\t\t\tmargin-top: ${t.spaceSm};\n\t\t\t\t`\n\t\t\t: css`\n\t\t\t\t\tbox-shadow: ${t.shadowPopover};\n\t\t\t\t`}\n`;\n\nexport const ListboxScroll = styled.div`\n\toverflow-y: auto;\n\tflex: 1;\n\tmin-height: 0;\n`;\n\nexport const StickyHeader = styled.div`\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 2;\n\tbackground: ${t.bg};\n`;\n\nexport const Listbox = styled.ul`\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: ${t.spaceXs} 0;\n`;\n\nexport const GroupHeading = styled.div`\n\tpadding: 4px ${t.spaceMd};\n\tfont-size: 10px !important;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.08em;\n\ttext-transform: uppercase !important;\n\tcolor: ${t.gray600};\n\tbackground: ${t.gray100};\n\tline-height: 1.8;\n\n\t[role='group']:not(:first-child) > & {\n\t\tborder-top: 1px solid ${t.gray200};\n\t}\n`;\n\nexport const PrimaryText = styled.span<{ muted?: boolean }>`\n\tfont-size: ${t.fontSizeBody};\n\tfont-weight: ${t.fontWeightMedium};\n\tcolor: ${({ muted }) => (muted ? t.gray600 : t.gray900)};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tdisplay: block;\n\tline-height: 1.3;\n\ttransition: color ${t.transitionFast};\n`;\n\nexport const Option = styled.li<{ highlighted?: boolean; disabled?: boolean }>`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: 4px ${t.spaceMd};\n\tcursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n\topacity: ${({ disabled }) => (disabled ? 0.5 : 1)};\n\tmin-height: ${t.suggestionMinHeight};\n\tbackground: ${({ highlighted }) => (highlighted ? t.accentActive : 'transparent')};\n\tposition: relative;\n\ttransition: background ${t.transitionFast};\n\n\t&:hover {\n\t\tbackground: ${({ highlighted, disabled }) =>\n\t\t\tdisabled ? 'transparent' : highlighted ? t.accentActive : t.accentHover};\n\t}\n\n\t/*\n\t * Target the title via a stable data attribute rather than Emotion's\n\t * generated class — the popover body has its own Emotion cache, so\n\t * class-name interpolation isn't guaranteed to match across caches.\n\t */\n\t&:hover [data-valu-title] {\n\t\tcolor: ${t.accent};\n\t}\n\n\t${({ highlighted }) =>\n\t\thighlighted &&\n\t\tcss`\n\t\t\t[data-valu-title] {\n\t\t\t\tcolor: ${t.accent};\n\t\t\t}\n\t\t\t&::before {\n\t\t\t\tcontent: '';\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 4px;\n\t\t\t\tbottom: 4px;\n\t\t\t\twidth: 2px;\n\t\t\t\tborder-radius: 0 ${t.radiusSm} ${t.radiusSm} 0;\n\t\t\t\tbackground: ${t.accent};\n\t\t\t}\n\t\t`}\n`;\n\nexport const Thumb = styled.div<{\n\tsize?: 'xs' | 'sm' | 'md' | 'lg';\n\tmissing?: boolean;\n\thasImage?: boolean;\n\tavatar?: boolean;\n}>`\n\tflex: 0 0 auto;\n\twidth: ${({ size, hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? '22px'\n\t\t\t: hasImage\n\t\t\t\t? t.thumbMd\n\t\t\t\t: size === 'md'\n\t\t\t\t\t? t.thumbMd\n\t\t\t\t\t: size === 'lg'\n\t\t\t\t\t\t? t.thumbLg\n\t\t\t\t\t\t: size === 'sm'\n\t\t\t\t\t\t\t? t.thumbSm\n\t\t\t\t\t\t\t: '22px'};\n\theight: ${({ size, hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? '22px'\n\t\t\t: hasImage\n\t\t\t\t? t.thumbMd\n\t\t\t\t: size === 'md'\n\t\t\t\t\t? t.thumbMd\n\t\t\t\t\t: size === 'lg'\n\t\t\t\t\t\t? t.thumbLg\n\t\t\t\t\t\t: size === 'sm'\n\t\t\t\t\t\t\t? t.thumbSm\n\t\t\t\t\t\t\t: '22px'};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcolor: ${({ missing }) => (missing ? t.danger : t.gray600)};\n\n\t${({ hasImage, avatar }) =>\n\t\tavatar\n\t\t\t? css`\n\t\t\t\t\tborder-radius: 999px;\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t`\n\t\t\t: hasImage\n\t\t\t\t? css`\n\t\t\t\t\t\tborder: 1px solid ${t.gray200};\n\t\t\t\t\t\tborder-radius: ${t.radiusSm};\n\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\tbackground: ${t.gray100};\n\t\t\t\t\t`\n\t\t\t\t: undefined}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tdisplay: block;\n\t}\n\n\tsvg {\n\t\twidth: 22px;\n\t\theight: 22px;\n\t}\n`;\n\nexport const ItemBody = styled.div`\n\tflex: 1;\n\tmin-width: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0;\n`;\n\nexport const SecondaryText = styled.span`\n\tfont-size: ${t.fontSizeSmall};\n\tcolor: ${t.gray600};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tdisplay: block;\n\tline-height: 1.3;\n`;\n\nexport const BadgeRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tflex-wrap: wrap;\n\tmargin-top: 0;\n`;\n\nexport const TypeHint = styled.span`\n\tflex: 0 0 auto;\n\tfont-size: ${t.fontSizeSmall};\n\tcolor: ${t.gray600};\n\tmargin-left: ${t.spaceSm};\n\twhite-space: nowrap;\n`;\n\nexport const ActionColumn = styled.div`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tmargin-left: auto;\n`;\n\nexport const SelectedListEl = styled.ul`\n\tlist-style: none;\n\tmargin: ${t.spaceSm} 0 0;\n\tpadding: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n`;\n\nexport const SelectedRow = styled.li<{ dragging?: boolean; missing?: boolean }>`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: 2px ${t.spaceSm};\n\tbackground: ${({ missing }) => (missing ? t.dangerSoft : t.bg)};\n\tborder: 1px solid ${({ missing }) => (missing ? t.dangerLine : t.gray300)};\n\tborder-radius: ${t.radiusMd};\n\tmin-height: ${t.rowMinHeight};\n\tbox-shadow: ${({ dragging }) => (dragging ? t.shadowPopover : 'none')};\n\ttransition: box-shadow ${t.transitionFast}, border-color ${t.transitionFast};\n\n\t&:hover {\n\t\tborder-color: ${({ missing }) => (missing ? t.dangerLine : t.gray600)};\n\t}\n`;\n\nexport const DragHandleButton = styled.button`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 0;\n\tbackground: transparent;\n\tcolor: ${t.gray600};\n\tcursor: grab;\n\tborder-radius: ${t.radiusSm};\n\tpadding: 0;\n\n\t&:hover {\n\t\tbackground: ${t.gray100};\n\t\tcolor: ${t.gray900};\n\t}\n\n\t&:focus-visible {\n\t\t${focusRing}\n\t}\n\n\t&:active {\n\t\tcursor: grabbing;\n\t}\n\n\t&[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.4;\n\t}\n\n\tsvg {\n\t\twidth: 14px;\n\t\theight: 14px;\n\t}\n`;\n\nexport const EmptyState = styled.div`\n\tpadding: ${t.spaceLg} ${t.spaceMd};\n\ttext-align: center;\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const LoadingState = styled.div`\n\tpadding: ${t.spaceLg} ${t.spaceMd};\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: ${t.spaceSm};\n\tcolor: ${t.gray600};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const ErrorState = styled.div`\n\tpadding: ${t.spaceMd};\n\tbackground: ${t.dangerSoft};\n\tcolor: ${t.danger};\n\tborder: 1px solid ${t.dangerLine};\n\tborder-radius: ${t.radiusMd};\n\tfont-size: ${t.fontSizeBody};\n`;\n\nexport const MaxedOutBanner = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tpadding: ${t.spaceSm} ${t.spaceMd};\n\tbackground: ${t.gray100};\n\tcolor: ${t.gray900};\n\tborder: 1px dashed ${t.gray300};\n\tborder-radius: ${t.radiusMd};\n\tfont-size: ${t.fontSizeSmall};\n`;\n\nexport const CountPill = styled.span`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 2px 8px;\n\tbackground: ${t.gray100};\n\tcolor: ${t.gray900};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n`;\n\nexport const ChipWrap = styled.div`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: ${t.spaceSm};\n\tbackground: ${t.gray900};\n\tcolor: #fff;\n\tborder-radius: ${t.radiusMd};\n\tpadding: 6px ${t.spaceMd};\n\tmax-width: 280px;\n\tbox-shadow: ${t.shadowPopover};\n`;\n\nexport const ChipTitle = styled.span`\n\tfont-size: ${t.fontSizeSmall};\n\tfont-weight: ${t.fontWeightMedium};\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n`;\n\nexport const LoadMoreRow = styled.li`\n\tlist-style: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding: ${t.spaceSm};\n`;\n\nexport const SearchIconWrap = styled.span`\n\tflex: 0 0 auto;\n\tdisplay: flex;\n\talign-items: center;\n\tcolor: ${t.gray600};\n`;\n\nexport const HeaderRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: ${t.spaceSm};\n\tmargin-top: ${t.spaceSm};\n\tmargin-bottom: ${t.spaceXs};\n`;\n\nexport const HeaderTitle = styled.h3`\n\tmargin: 0;\n\tfont-size: 10px !important;\n\ttext-transform: uppercase !important;\n\tletter-spacing: 0.04em;\n\tfont-weight: ${t.fontWeightBold};\n\tcolor: ${t.gray600};\n\tline-height: 1.8;\n`;\n","import { v4 as uuidv4 } from 'uuid';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { filterURLForDisplay, safeDecodeURI } from '@wordpress/url';\nimport { __ } from '@wordpress/i18n';\nimport { people } from '@wordpress/icons';\n\nimport type {\n\tContentItem,\n\tContentKind,\n\tContentPickerIcon,\n\tContentPickerIconMap,\n\tContentStatus,\n} from './types';\n\nexport const generateKey = (): string => uuidv4();\n\nexport const decodeTitle = (raw: unknown): string => {\n\tif (typeof raw === 'string') return decodeEntities(raw);\n\tif (raw && typeof raw === 'object' && 'rendered' in raw) {\n\t\tconst rendered = (raw as { rendered?: unknown }).rendered;\n\t\tif (typeof rendered === 'string') return decodeEntities(rendered);\n\t}\n\treturn '';\n};\n\nexport const toDisplayUrl = (url: string | undefined | null): string => {\n\tif (!url) return '';\n\ttry {\n\t\treturn filterURLForDisplay(safeDecodeURI(url)) ?? '';\n\t} catch {\n\t\treturn url;\n\t}\n};\n\nexport const groupByType = (items: ContentItem[]): Array<[string, ContentItem[]]> => {\n\tconst map = new Map<string, ContentItem[]>();\n\tfor (const item of items) {\n\t\tconst bucket = map.get(item.type);\n\t\tif (bucket) bucket.push(item);\n\t\telse map.set(item.type, [item]);\n\t}\n\treturn Array.from(map.entries());\n};\n\nconst postTypeLabels: Record<string, string> = {\n\tpost: 'Post',\n\tpage: 'Page',\n\tattachment: 'Media',\n};\n\nexport const humanizeType = (type: string, kind: ContentKind): string => {\n\tif (kind === 'user') return __('User', 'valu-block-components');\n\tif (postTypeLabels[type]) return postTypeLabels[type];\n\treturn type\n\t\t.replace(/[-_]+/g, ' ')\n\t\t.replace(/\\b\\w/g, (c) => c.toUpperCase());\n};\n\nconst statusLabels: Partial<Record<ContentStatus, string>> = {\n\tdraft: 'Draft',\n\tpending: 'Pending',\n\tprivate: 'Private',\n\tfuture: 'Scheduled',\n\ttrash: 'Trash',\n};\n\nexport const humanizeStatus = (status: ContentStatus | undefined): string | null => {\n\tif (!status || status === 'publish') return null;\n\treturn statusLabels[status] ?? status;\n};\n\n/** Stable id for ARIA references: `${rootId}-option-${index}` etc. */\nexport const aria = (rootId: string, suffix: string): string => `${rootId}-${suffix}`;\n\nexport const isMaxedOut = (value: ContentItem[], maxItems: number): boolean =>\n\tNumber.isFinite(maxItems) && value.length >= maxItems;\n\n/** Filter out items already present in `value` by entity id. */\nexport const dedupeAgainst = <T extends { id: number }>(\n\titems: T[],\n\tvalue: ContentItem[],\n\tenabled: boolean,\n): T[] => {\n\tif (!enabled || value.length === 0) return items;\n\tconst ids = new Set(value.map((v) => v.id));\n\treturn items.filter((i) => !ids.has(i.id));\n};\n\n/**\n * Default icons used when a consumer hasn't provided an override.\n * Only users get one by default — everything else renders without a\n * leading glyph unless the consumer supplies an `icons` map.\n */\nexport const DEFAULT_ITEM_ICONS: ContentPickerIconMap = {\n\tuser: people,\n};\n\n/** Pick the icon for an item: consumer override → built-in default → null. */\nexport const resolveItemIcon = (\n\titem: ContentItem,\n\tuserIcons: ContentPickerIconMap | undefined,\n): ContentPickerIcon | undefined => {\n\tif (userIcons && item.type in userIcons) return userIcons[item.type];\n\tif (item.type in DEFAULT_ITEM_ICONS) return DEFAULT_ITEM_ICONS[item.type];\n\treturn undefined;\n};\n","import { forwardRef, type ChangeEvent, type KeyboardEvent } from 'react';\nimport { Icon, VisuallyHidden } from '@wordpress/components';\nimport { search, closeSmall } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { Input, InputShell, SearchIconWrap } from './styles';\nimport { aria } from './utils';\nimport type { ContentPickerLabels } from './types';\n\nexport interface SearchComboboxProps {\n\trootId: string;\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tonFocus?: () => void;\n\tonBlur?: () => void;\n\tonKeyDown: (event: KeyboardEvent) => void;\n\tplaceholder?: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tdisabled?: boolean;\n\topen: boolean;\n\tlistboxId: string;\n\tactiveOptionId?: string;\n\tlabels: ContentPickerLabels;\n}\n\nexport const SearchCombobox = forwardRef<HTMLInputElement, SearchComboboxProps>(\n\t(\n\t\t{\n\t\t\trootId,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonFocus,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tplaceholder,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tdisabled,\n\t\t\topen,\n\t\t\tlistboxId,\n\t\t\tactiveOptionId,\n\t\t\tlabels,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst inputId = aria(rootId, 'input');\n\t\tconst helpId = help ? aria(rootId, 'help') : undefined;\n\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{hideLabelFromVision ? (\n\t\t\t\t\t<VisuallyHidden as=\"label\" htmlFor={inputId}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t) : (\n\t\t\t\t\t<label htmlFor={inputId} style={{ display: 'block', marginBottom: 4 }}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t\t<InputShell aria-disabled={disabled || undefined}>\n\t\t\t\t\t<SearchIconWrap aria-hidden=\"true\">\n\t\t\t\t\t\t<Icon icon={search} size={20} />\n\t\t\t\t\t</SearchIconWrap>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\taria-controls={listboxId}\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-activedescendant={activeOptionId}\n\t\t\t\t\t\taria-describedby={helpId}\n\t\t\t\t\t\taria-label={hideLabelFromVision ? label : undefined}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={placeholder ?? labels.input ?? __('Search', 'valu-block-components')}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\tonChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n\t\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\t\tonBlur={onBlur}\n\t\t\t\t\t\tonKeyDown={onKeyDown}\n\t\t\t\t\t/>\n\t\t\t\t\t{value.length > 0 && !disabled ? (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => onChange('')}\n\t\t\t\t\t\t\taria-label={__('Clear search', 'valu-block-components')}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\tbackground: 'transparent',\n\t\t\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\t\t\tpadding: 2,\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\t\t\tcolor: 'currentColor',\n\t\t\t\t\t\t\t\topacity: 0.6,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon icon={closeSmall} size={18} />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : null}\n\t\t\t\t</InputShell>\n\t\t\t\t{help ? (\n\t\t\t\t\t<p id={helpId} style={{ margin: '4px 0 0', fontSize: 11, opacity: 0.7 }}>\n\t\t\t\t\t\t{help}\n\t\t\t\t\t</p>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nSearchCombobox.displayName = 'SearchCombobox';\n","import styled from '@emotion/styled';\nimport { __ } from '@wordpress/i18n';\n\nimport { tokens as t } from '../styles/tokens';\nimport type { ContentStatus } from '../types';\nimport { humanizeStatus } from '../utils';\n\ntype Tone = 'neutral' | 'warn' | 'danger' | 'success';\n\nconst tones: Record<Tone, { bg: string; fg: string; border: string }> = {\n\tneutral: { bg: t.gray100, fg: t.gray900, border: t.gray300 },\n\twarn: { bg: '#fef3d0', fg: t.warning, border: '#f3d782' },\n\tdanger: { bg: t.dangerSoft, fg: t.danger, border: t.dangerLine },\n\tsuccess: { bg: '#e6f4ea', fg: t.success, border: '#a7d5b3' },\n};\n\nconst toneFor = (status: ContentStatus): Tone => {\n\tif (status === 'trash') return 'danger';\n\tif (status === 'draft' || status === 'pending' || status === 'future') return 'warn';\n\tif (status === 'private') return 'neutral';\n\treturn 'neutral';\n};\n\nconst Pill = styled.span<{ tone: Tone }>`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 1px 6px;\n\tbackground: ${({ tone }) => tones[tone].bg};\n\tcolor: ${({ tone }) => tones[tone].fg};\n\tborder: 1px solid ${({ tone }) => tones[tone].border};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n\twhite-space: nowrap;\n\tline-height: 1.6;\n`;\n\nexport interface StatusBadgeProps {\n\tstatus: ContentStatus;\n}\n\nexport const StatusBadge = ({ status }: StatusBadgeProps) => {\n\tconst label = humanizeStatus(status);\n\tif (!label) return null;\n\tconst translated =\n\t\tstatus === 'draft'\n\t\t\t? __('Draft', 'valu-block-components')\n\t\t\t: status === 'pending'\n\t\t\t\t? __('Pending', 'valu-block-components')\n\t\t\t\t: status === 'private'\n\t\t\t\t\t? __('Private', 'valu-block-components')\n\t\t\t\t\t: status === 'future'\n\t\t\t\t\t\t? __('Scheduled', 'valu-block-components')\n\t\t\t\t\t\t: status === 'trash'\n\t\t\t\t\t\t\t? __('Trash', 'valu-block-components')\n\t\t\t\t\t\t\t: label;\n\treturn <Pill tone={toneFor(status)}>{translated}</Pill>;\n};\n","import { useCallback, useEffect, useRef, type MouseEvent } from 'react';\nimport { Icon } from '@wordpress/components';\n\nimport {\n\tItemBody,\n\tOption,\n\tPrimaryText,\n\tSecondaryText,\n\tThumb,\n\tTypeHint,\n} from './styles';\nimport { StatusBadge } from './badges/StatusBadge';\nimport { humanizeType, resolveItemIcon, toDisplayUrl } from './utils';\nimport type {\n\tContentItem,\n\tContentPickerIconMap,\n\tSuggestionRenderState,\n} from './types';\n\nexport interface SuggestionItemProps {\n\titem: ContentItem;\n\toptionId: string;\n\thighlighted: boolean;\n\tselected: boolean;\n\tshowTypeHint: boolean;\n\tshowUrl: boolean;\n\ticons?: ContentPickerIconMap;\n\tonHover: () => void;\n\tonSelect: () => void;\n\trender?: (item: ContentItem, state: SuggestionRenderState) => React.ReactNode;\n}\n\nexport const SuggestionItem = ({\n\titem,\n\toptionId,\n\thighlighted,\n\tselected,\n\tshowTypeHint,\n\tshowUrl,\n\ticons,\n\tonHover,\n\tonSelect,\n\trender,\n}: SuggestionItemProps) => {\n\tconst ref = useRef<HTMLLIElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!highlighted || !ref.current) return;\n\t\tref.current.scrollIntoView({ block: 'nearest' });\n\t}, [highlighted]);\n\n\tconst handleClick = useCallback(\n\t\t(event: MouseEvent) => {\n\t\t\tevent.preventDefault();\n\t\t\tonSelect();\n\t\t},\n\t\t[onSelect],\n\t);\n\n\tconst handleMouseDown = useCallback((event: MouseEvent) => {\n\t\t// Keep focus on the input; don't let a mousedown on the option steal it.\n\t\tevent.preventDefault();\n\t}, []);\n\n\tif (render) {\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tref={ref}\n\t\t\t\trole=\"option\"\n\t\t\t\tid={optionId}\n\t\t\t\taria-selected={selected}\n\t\t\t\thighlighted={highlighted}\n\t\t\t\tonMouseEnter={onHover}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonClick={handleClick}\n\t\t\t>\n\t\t\t\t{render(item, { highlighted, selected })}\n\t\t\t</Option>\n\t\t);\n\t}\n\n\tconst displayUrl = toDisplayUrl(item.url);\n\tconst hasAbnormalStatus = item.status && item.status !== 'publish';\n\tconst icon = resolveItemIcon(item, icons);\n\tconst isAvatar = item.kind === 'user' && Boolean(item.thumbnailUrl);\n\tconst hasVisual = Boolean(item.thumbnailUrl) || Boolean(icon);\n\n\treturn (\n\t\t<Option\n\t\t\tref={ref}\n\t\t\trole=\"option\"\n\t\t\tid={optionId}\n\t\t\taria-selected={selected}\n\t\t\thighlighted={highlighted}\n\t\t\tonMouseEnter={onHover}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\tonClick={handleClick}\n\t\t>\n\t\t\t{hasVisual ? (\n\t\t\t\t<Thumb\n\t\t\t\t\thasImage={Boolean(item.thumbnailUrl) && !isAvatar}\n\t\t\t\t\tavatar={isAvatar}\n\t\t\t\t>\n\t\t\t\t\t{item.thumbnailUrl ? (\n\t\t\t\t\t\t<img src={item.thumbnailUrl} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t) : icon ? (\n\t\t\t\t\t\t<Icon icon={icon} size={22} />\n\t\t\t\t\t) : null}\n\t\t\t\t</Thumb>\n\t\t\t) : null}\n\t\t\t<ItemBody>\n\t\t\t\t<PrimaryText data-valu-title>{item.title}</PrimaryText>\n\t\t\t\t{showUrl && displayUrl ? <SecondaryText>{displayUrl}</SecondaryText> : null}\n\t\t\t</ItemBody>\n\t\t\t{hasAbnormalStatus ? <StatusBadge status={item.status!} /> : null}\n\t\t\t{showTypeHint ? (\n\t\t\t\t<TypeHint>{humanizeType(item.type, item.kind)}</TypeHint>\n\t\t\t) : null}\n\t\t</Option>\n\t);\n};\n","import { useEffect, useRef, type ReactNode } from 'react';\nimport { Button, Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { SuggestionItem } from './SuggestionItem';\nimport {\n\tEmptyState,\n\tErrorState,\n\tGroupHeading,\n\tListbox,\n\tListboxScroll,\n\tLoadMoreRow,\n\tLoadingState,\n\tStickyHeader,\n} from './styles';\nimport { aria, humanizeType } from './utils';\nimport type {\n\tContentItem,\n\tContentKind,\n\tContentPickerIconMap,\n\tContentPickerLabels,\n} from './types';\n\nexport interface SuggestionListProps {\n\tlistboxId: string;\n\trootId: string;\n\tgroups: Array<[string, ContentItem[]]>;\n\tsuggestions: ContentItem[];\n\tkind: ContentKind;\n\tloading: boolean;\n\tfetchingMore: boolean;\n\thasMore: boolean;\n\terror: unknown;\n\tquery: string;\n\thighlightedIndex: number;\n\tselectedKeys: Set<string>;\n\ticons?: ContentPickerIconMap;\n\tlabels: ContentPickerLabels;\n\tshowUrl: boolean;\n\theaderSlot?: ReactNode;\n\trenderSuggestion?: (\n\t\titem: ContentItem,\n\t\tstate: { highlighted: boolean; selected: boolean },\n\t) => ReactNode;\n\trenderGroupHeading?: (type: string, items: ContentItem[]) => ReactNode;\n\tonHover: (index: number) => void;\n\tonSelect: (item: ContentItem) => void;\n\tonLoadMore: () => void;\n}\n\nexport const SuggestionList = ({\n\tlistboxId,\n\trootId,\n\tgroups,\n\tsuggestions,\n\tkind,\n\tloading,\n\tfetchingMore,\n\thasMore,\n\terror,\n\tquery,\n\thighlightedIndex,\n\tselectedKeys,\n\ticons,\n\tlabels,\n\tshowUrl,\n\theaderSlot,\n\trenderSuggestion,\n\trenderGroupHeading,\n\tonHover,\n\tonSelect,\n\tonLoadMore,\n}: SuggestionListProps) => {\n\tconst scrollRef = useRef<HTMLDivElement | null>(null);\n\tconst sentinelRef = useRef<HTMLDivElement | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!hasMore || !sentinelRef.current || !scrollRef.current) return;\n\t\tconst io = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tfor (const e of entries) {\n\t\t\t\t\tif (e.isIntersecting) onLoadMore();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ root: scrollRef.current, rootMargin: '120px' },\n\t\t);\n\t\tio.observe(sentinelRef.current);\n\t\treturn () => io.disconnect();\n\t}, [hasMore, onLoadMore]);\n\n\tconst header = headerSlot ? <StickyHeader>{headerSlot}</StickyHeader> : null;\n\n\tif (error) {\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<ErrorState role=\"alert\">\n\t\t\t\t\t{labels.empty ?? __('Search failed. Please try again.', 'valu-block-components')}\n\t\t\t\t</ErrorState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tif (loading && suggestions.length === 0) {\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<LoadingState>\n\t\t\t\t\t<Spinner />\n\t\t\t\t\t{labels.loading ?? __('Searching…', 'valu-block-components')}\n\t\t\t\t</LoadingState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tif (suggestions.length === 0) {\n\t\tconst emptyMessage =\n\t\t\tquery.trim().length > 0\n\t\t\t\t? (labels.empty ?? __('No matches. Try a different search.', 'valu-block-components'))\n\t\t\t\t: __('Type to search.', 'valu-block-components');\n\t\treturn (\n\t\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t\t{header}\n\t\t\t\t<EmptyState>{emptyMessage}</EmptyState>\n\t\t\t</ListboxScroll>\n\t\t);\n\t}\n\n\tlet runningIndex = 0;\n\tconst showGroupHeadings = groups.length > 1 || groups[0]?.[0] !== '__all__';\n\tconst showTypeHint = !showGroupHeadings;\n\n\treturn (\n\t\t<ListboxScroll ref={scrollRef}>\n\t\t\t{header}\n\t\t\t<Listbox\n\t\t\t\trole=\"listbox\"\n\t\t\t\tid={listboxId}\n\t\t\t\taria-label={labels.input ?? __('Suggestions', 'valu-block-components')}\n\t\t\t>\n\t\t\t\t{groups.map(([type, items]) => {\n\t\t\t\t\tconst headingId = aria(rootId, `group-${type}`);\n\t\t\t\t\tconst optionNodes = items.map((item) => {\n\t\t\t\t\t\tconst index = runningIndex++;\n\t\t\t\t\t\tconst optionId = aria(rootId, `option-${index}`);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SuggestionItem\n\t\t\t\t\t\t\t\tkey={item.key}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\toptionId={optionId}\n\t\t\t\t\t\t\t\thighlighted={index === highlightedIndex}\n\t\t\t\t\t\t\t\tselected={selectedKeys.has(item.key)}\n\t\t\t\t\t\t\t\tshowTypeHint={showTypeHint}\n\t\t\t\t\t\t\t\tshowUrl={showUrl}\n\t\t\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\t\t\tonHover={() => onHover(index)}\n\t\t\t\t\t\t\t\tonSelect={() => onSelect(item)}\n\t\t\t\t\t\t\t\trender={renderSuggestion}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!showGroupHeadings) return optionNodes;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div role=\"group\" key={type} aria-labelledby={headingId}>\n\t\t\t\t\t\t\t<GroupHeading id={headingId}>\n\t\t\t\t\t\t\t\t{renderGroupHeading\n\t\t\t\t\t\t\t\t\t? renderGroupHeading(type, items)\n\t\t\t\t\t\t\t\t\t: humanizeType(type, kind)}\n\t\t\t\t\t\t\t</GroupHeading>\n\t\t\t\t\t\t\t{optionNodes}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{hasMore ? (\n\t\t\t\t\t<LoadMoreRow>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={onLoadMore}\n\t\t\t\t\t\t\tdisabled={fetchingMore}\n\t\t\t\t\t\t\tisBusy={fetchingMore}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fetchingMore\n\t\t\t\t\t\t\t\t? __('Loading…', 'valu-block-components')\n\t\t\t\t\t\t\t\t: __('Load more', 'valu-block-components')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</LoadMoreRow>\n\t\t\t\t) : null}\n\t\t\t\t<div ref={sentinelRef} aria-hidden=\"true\" />\n\t\t\t</Listbox>\n\t\t</ListboxScroll>\n\t);\n};\n","import styled from '@emotion/styled';\nimport { __ } from '@wordpress/i18n';\n\nimport { tokens as t } from './styles/tokens';\nimport { humanizeType } from './utils';\nimport type { ContentKind } from './types';\n\nconst Row = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: ${t.spaceXs};\n\tpadding: 6px ${t.spaceMd};\n\toverflow-x: auto;\n\tborder-bottom: 1px solid ${t.gray200};\n\tbackground: ${t.bg};\n\n\t&::-webkit-scrollbar {\n\t\theight: 4px;\n\t}\n\t&::-webkit-scrollbar-thumb {\n\t\tbackground: ${t.gray300};\n\t\tborder-radius: 2px;\n\t}\n`;\n\nconst Chip = styled.button<{ active?: boolean }>`\n\tflex: 0 0 auto;\n\tpadding: 2px 10px;\n\tfont-size: ${t.fontSizeSmall};\n\tfont-weight: ${t.fontWeightMedium};\n\tline-height: 1.6;\n\tborder-radius: 999px;\n\tborder: 1px solid ${({ active }) => (active ? t.accent : t.gray300)};\n\tbackground: ${({ active }) => (active ? t.accent : 'transparent')};\n\tcolor: ${({ active }) => (active ? '#fff' : t.gray900)};\n\tcursor: pointer;\n\twhite-space: nowrap;\n\ttransition: background ${t.transitionFast}, border-color ${t.transitionFast};\n\n\t&:hover {\n\t\tborder-color: ${t.accent};\n\t}\n\n\t&:focus-visible {\n\t\toutline: 2px solid ${t.accent};\n\t\toutline-offset: 1px;\n\t}\n`;\n\nexport interface TypeFilterProps {\n\ttypes: string[];\n\tkind: ContentKind;\n\tactive: string | null;\n\tonChange: (type: string | null) => void;\n\tallLabel?: string;\n}\n\nexport const TypeFilter = ({ types, kind, active, onChange, allLabel }: TypeFilterProps) => {\n\tif (types.length < 2) return null;\n\n\treturn (\n\t\t<Row role=\"toolbar\" aria-label={__('Filter by type', 'valu-block-components')}>\n\t\t\t<Chip\n\t\t\t\ttype=\"button\"\n\t\t\t\tactive={active === null}\n\t\t\t\taria-pressed={active === null}\n\t\t\t\tonClick={() => onChange(null)}\n\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t{allLabel ?? __('All', 'valu-block-components')}\n\t\t\t</Chip>\n\t\t\t{types.map((type) => (\n\t\t\t\t<Chip\n\t\t\t\t\tkey={type}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tactive={active === type}\n\t\t\t\t\taria-pressed={active === type}\n\t\t\t\t\tonClick={() => onChange(active === type ? null : type)}\n\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t>\n\t\t\t\t\t{humanizeType(type, kind)}\n\t\t\t\t</Chip>\n\t\t\t))}\n\t\t</Row>\n\t);\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\n\nimport type { ContentItem, ContentKind, ContentStatus, RequestContext } from '../types';\nimport { decodeTitle, generateKey } from '../utils';\n\nexport interface FetchSearchArgs {\n\tquery: string;\n\tkind: ContentKind;\n\ttypes?: string[];\n\tpage: number;\n\tperPage: number;\n\trequest?: (path: string, ctx: RequestContext) => string;\n\tsignal?: AbortSignal;\n}\n\nexport interface FetchSearchPage {\n\titems: ContentItem[];\n\tpage: number;\n\thasMore: boolean;\n\ttotal: number;\n}\n\ninterface WPRestSearchResult {\n\tid: number;\n\ttitle: string;\n\turl?: string;\n\ttype: string;\n\tsubtype: string;\n\t_embedded?: {\n\t\tself?: Array<{\n\t\t\tstatus?: ContentStatus;\n\t\t\tfeatured_media?: number;\n\t\t\t['wp:featuredmedia']?: unknown;\n\t\t}>;\n\t\t'wp:featuredmedia'?: Array<{\n\t\t\tsource_url?: string;\n\t\t\tmedia_details?: {\n\t\t\t\tsizes?: Record<string, { source_url?: string }>;\n\t\t\t};\n\t\t}>;\n\t};\n}\n\ninterface WPUser {\n\tid: number;\n\tname: string;\n\tlink?: string;\n\tavatar_urls?: Record<string, string>;\n}\n\nconst pickThumbnail = (result: WPRestSearchResult): string | undefined => {\n\tconst media = result._embedded?.['wp:featuredmedia']?.[0];\n\tif (!media) return undefined;\n\tconst sizes = media.media_details?.sizes;\n\treturn (\n\t\tsizes?.thumbnail?.source_url ??\n\t\tsizes?.medium?.source_url ??\n\t\tmedia.source_url ??\n\t\tundefined\n\t);\n};\n\nconst pickStatus = (result: WPRestSearchResult): ContentStatus | undefined =>\n\tresult._embedded?.self?.[0]?.status;\n\nconst buildPath = (args: FetchSearchArgs): string => {\n\tconst { kind, types, query, page, perPage } = args;\n\tif (kind === 'user') {\n\t\treturn addQueryArgs('/wp/v2/users', {\n\t\t\tsearch: query,\n\t\t\tper_page: perPage,\n\t\t\tpage,\n\t\t\tcontext: 'view',\n\t\t});\n\t}\n\tconst params: Record<string, string | number> = {\n\t\tsearch: query,\n\t\ttype: kind,\n\t\tper_page: perPage,\n\t\tpage,\n\t\t_embed: 'wp:featuredmedia,self',\n\t};\n\tif (types && types.length > 0) {\n\t\tparams.subtype = types.join(',');\n\t}\n\treturn addQueryArgs('/wp/v2/search', params);\n};\n\nconst parseTotalPages = (response: Response): number => {\n\tconst raw = response.headers.get('x-wp-totalpages');\n\tif (!raw) return 1;\n\tconst parsed = parseInt(raw, 10);\n\treturn Number.isNaN(parsed) ? 1 : parsed;\n};\n\nconst parseTotal = (response: Response): number => {\n\tconst raw = response.headers.get('x-wp-total');\n\tif (!raw) return 0;\n\tconst parsed = parseInt(raw, 10);\n\treturn Number.isNaN(parsed) ? 0 : parsed;\n};\n\nexport const fetchSearch = async (args: FetchSearchArgs): Promise<FetchSearchPage> => {\n\tconst rawPath = buildPath(args);\n\tconst path = args.request\n\t\t? args.request(rawPath, { query: args.query, page: args.page, kind: args.kind })\n\t\t: rawPath;\n\n\tconst response = (await apiFetch({\n\t\tpath,\n\t\tparse: false,\n\t\tsignal: args.signal,\n\t} as Parameters<typeof apiFetch>[0])) as Response;\n\n\tconst data = (await response.json()) as unknown;\n\tconst totalPages = parseTotalPages(response);\n\tconst total = parseTotal(response);\n\n\tlet items: ContentItem[];\n\tif (args.kind === 'user') {\n\t\titems = (data as WPUser[]).map((u) => ({\n\t\t\tkey: generateKey(),\n\t\t\tid: u.id,\n\t\t\ttype: 'user',\n\t\t\tkind: 'user',\n\t\t\ttitle: decodeTitle(u.name),\n\t\t\turl: u.link,\n\t\t\tthumbnailUrl: u.avatar_urls?.['48'] ?? u.avatar_urls?.['96'],\n\t\t\traw: u,\n\t\t}));\n\t} else {\n\t\titems = (data as WPRestSearchResult[]).map((r) => ({\n\t\t\tkey: generateKey(),\n\t\t\tid: r.id,\n\t\t\ttype: r.subtype || r.type,\n\t\t\tkind: args.kind,\n\t\t\ttitle: decodeTitle(r.title),\n\t\t\turl: r.url,\n\t\t\tstatus: pickStatus(r),\n\t\t\tthumbnailUrl: pickThumbnail(r),\n\t\t\traw: r,\n\t\t}));\n\t}\n\n\treturn { items, page: args.page, hasMore: args.page < totalPages, total };\n};\n","import { useInfiniteQuery, keepPreviousData } from '@tanstack/react-query';\n\nimport { fetchSearch } from '../api/fetchSearch';\nimport type { ContentKind, RequestContext } from '../types';\n\nexport interface UseContentSearchArgs {\n\tquery: string;\n\tkind: ContentKind;\n\ttypes?: string[];\n\tperPage: number;\n\tenabled?: boolean;\n\trequest?: (path: string, ctx: RequestContext) => string;\n}\n\nexport const contentSearchKey = (args: UseContentSearchArgs) =>\n\t[\n\t\t'valu/content-search',\n\t\targs.kind,\n\t\t[...(args.types ?? [])].sort().join(','),\n\t\targs.query,\n\t\targs.perPage,\n\t] as const;\n\nexport const useContentSearch = (args: UseContentSearchArgs) =>\n\tuseInfiniteQuery({\n\t\tqueryKey: contentSearchKey(args),\n\t\tqueryFn: ({ pageParam, signal }) =>\n\t\t\tfetchSearch({\n\t\t\t\tquery: args.query,\n\t\t\t\tkind: args.kind,\n\t\t\t\ttypes: args.types,\n\t\t\t\tpage: pageParam,\n\t\t\t\tperPage: args.perPage,\n\t\t\t\trequest: args.request,\n\t\t\t\tsignal,\n\t\t\t}),\n\t\tinitialPageParam: 1,\n\t\tgetNextPageParam: (last) => (last.hasMore ? last.page + 1 : undefined),\n\t\tenabled: args.enabled ?? true,\n\t\tstaleTime: 30_000,\n\t\tplaceholderData: keepPreviousData,\n\t});\n","import { useEffect, useState } from 'react';\n\nexport const useDebouncedValue = <T,>(value: T, delay: number): T => {\n\tconst [debounced, setDebounced] = useState(value);\n\tuseEffect(() => {\n\t\tconst id = setTimeout(() => setDebounced(value), delay);\n\t\treturn () => clearTimeout(id);\n\t}, [value, delay]);\n\treturn debounced;\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Debounced screen-reader announcements. Prevents spam while a user is\n * typing quickly (each keystroke would otherwise trigger a new \"N results\").\n */\nexport const useLiveRegion = (debounceMs = 500) => {\n\tconst timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t},\n\t\t[],\n\t);\n\n\tconst announce = useCallback(\n\t\t(message: string, assertiveness: 'polite' | 'assertive' = 'polite') => {\n\t\t\tif (!message) return;\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t\ttimer.current = setTimeout(() => speak(message, assertiveness), debounceMs);\n\t\t},\n\t\t[debounceMs],\n\t);\n\n\tconst announceImmediate = useCallback(\n\t\t(message: string, assertiveness: 'polite' | 'assertive' = 'polite') => {\n\t\t\tif (!message) return;\n\t\t\tif (timer.current) clearTimeout(timer.current);\n\t\t\tspeak(message, assertiveness);\n\t\t},\n\t\t[],\n\t);\n\n\treturn { announce, announceImmediate };\n};\n","import { useCallback, useState, type KeyboardEvent } from 'react';\n\nexport interface KeyboardNavApi {\n\thighlightedIndex: number;\n\tsetHighlightedIndex: (i: number) => void;\n\treset: () => void;\n\thandleKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport interface UseKeyboardNavArgs {\n\titemCount: number;\n\tonSelect?: (index: number) => void;\n\tonEscape?: () => void;\n\t/** When true, up/down keys wrap at boundaries. */\n\twrap?: boolean;\n}\n\n/**\n * Shared keyboard-navigation state machine for suggestion lists.\n *\n * Arrow Down / Up — move highlight (with optional wrap)\n * Home / End — jump to first / last\n * Enter — onSelect(highlightedIndex) if >= 0\n * Escape — onEscape()\n */\nexport const useKeyboardNav = ({\n\titemCount,\n\tonSelect,\n\tonEscape,\n\twrap = true,\n}: UseKeyboardNavArgs): KeyboardNavApi => {\n\tconst [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n\tconst reset = useCallback(() => setHighlightedIndex(-1), []);\n\n\tconst handleKeyDown = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (itemCount === 0) {\n\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonEscape?.();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowDown': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex((i) => {\n\t\t\t\t\t\tconst next = i + 1;\n\t\t\t\t\t\tif (next >= itemCount) return wrap ? 0 : itemCount - 1;\n\t\t\t\t\t\treturn next;\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'ArrowUp': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex((i) => {\n\t\t\t\t\t\tif (i <= 0) return wrap ? itemCount - 1 : 0;\n\t\t\t\t\t\treturn i - 1;\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Home': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex(0);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'End': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetHighlightedIndex(itemCount - 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Enter': {\n\t\t\t\t\tif (highlightedIndex >= 0 && highlightedIndex < itemCount) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonSelect?.(highlightedIndex);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'Escape': {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonEscape?.();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[itemCount, highlightedIndex, onSelect, onEscape, wrap],\n\t);\n\n\treturn { highlightedIndex, setHighlightedIndex, reset, handleKeyDown };\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\n\nimport { useContentSearch } from './useContentSearch';\nimport { useDebouncedValue } from './useDebouncedValue';\nimport { useLiveRegion } from './useLiveRegion';\nimport { useKeyboardNav } from './useKeyboardNav';\nimport { dedupeAgainst, generateKey, groupByType, isMaxedOut } from '../utils';\nimport type { ContentItem, ContentPickerProps } from '../types';\n\nexport interface ContentPickerControllerArgs {\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\t/** Whether the suggestion UI is currently open/visible (controls `enabled`). */\n\tactive: boolean;\n\t/** When true, ignore empty query and fetch anyway (inline variant + fetchOnOpen). */\n\tfetchEmpty: boolean;\n\tonSelectSideEffect?: () => void;\n\tonEscape?: () => void;\n}\n\nexport interface ContentPickerController {\n\tquery: string;\n\tsetQuery: (value: string) => void;\n\tdebouncedQuery: string;\n\tsuggestions: ContentItem[];\n\tgroups: Array<[string, ContentItem[]]>;\n\thighlightedIndex: number;\n\tsetHighlightedIndex: (i: number) => void;\n\thandleKeyDown: (event: React.KeyboardEvent) => void;\n\tloading: boolean;\n\terror: unknown;\n\thasMore: boolean;\n\tloadMore: () => void;\n\tfetchingMore: boolean;\n\tselect: (item: ContentItem) => void;\n\tremove: (key: string) => void;\n\treorder: (from: number, to: number) => void;\n\treplace: (items: ContentItem[]) => void;\n\tmaxedOut: boolean;\n\ttotal: number;\n\tactiveTypeFilter: string | null;\n\tsetActiveTypeFilter: (type: string | null) => void;\n\teffectiveSearchTypes: string[] | undefined;\n}\n\nexport const useContentPickerController = (\n\targs: ContentPickerControllerArgs,\n): ContentPickerController => {\n\tconst {\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType: groupByTypeFlag,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive,\n\t\tfetchEmpty,\n\t\tonSelectSideEffect,\n\t\tonEscape,\n\t} = args;\n\n\tconst [query, setQuery] = useState('');\n\tconst [activeTypeFilter, setActiveTypeFilter] = useState<string | null>(null);\n\tconst debouncedQuery = useDebouncedValue(query, inputDelayMs);\n\n\tconst effectiveSearchTypes = useMemo(() => {\n\t\tif (activeTypeFilter && types && types.includes(activeTypeFilter)) {\n\t\t\treturn [activeTypeFilter];\n\t\t}\n\t\treturn types;\n\t}, [activeTypeFilter, types]);\n\n\tconst currentPostId = useSelect((select) => {\n\t\tif (!excludeCurrentPost || kind !== 'post') return 0;\n\t\tconst editor = select('core/editor' as never) as\n\t\t\t| { getCurrentPostId?: () => number | null }\n\t\t\t| undefined;\n\t\treturn editor?.getCurrentPostId?.() ?? 0;\n\t}, [excludeCurrentPost, kind]);\n\n\tconst enabled = active && (fetchEmpty || debouncedQuery.trim().length > 0);\n\n\tconst query_ = useContentSearch({\n\t\tquery: debouncedQuery,\n\t\tkind,\n\t\ttypes: effectiveSearchTypes,\n\t\tperPage,\n\t\tenabled,\n\t\trequest,\n\t});\n\n\tconst suggestions = useMemo(() => {\n\t\tif (!query_.data) return [];\n\t\tconst flat = query_.data.pages.flatMap((p) => p.items);\n\t\tlet filtered = dedupeAgainst(flat, value, uniqueItems);\n\t\tif (currentPostId) {\n\t\t\tfiltered = filtered.filter((item) => item.id !== currentPostId);\n\t\t}\n\t\tif (filter) {\n\t\t\tfiltered = filter(filtered, { query: debouncedQuery, kind });\n\t\t}\n\t\treturn filtered;\n\t}, [query_.data, value, uniqueItems, currentPostId, filter, debouncedQuery, kind]);\n\n\tconst shouldGroup = groupByTypeFlag && (effectiveSearchTypes?.length ?? 0) > 1;\n\tconst groups = useMemo<Array<[string, ContentItem[]]>>(\n\t\t() => (shouldGroup ? groupByType(suggestions) : [['__all__', suggestions]]),\n\t\t[shouldGroup, suggestions],\n\t);\n\n\tconst { announce, announceImmediate } = useLiveRegion();\n\n\tuseEffect(() => {\n\t\tif (!active) return;\n\t\tif (debouncedQuery.trim().length === 0 && !fetchEmpty) return;\n\t\tif (query_.isFetching) return;\n\t\tif (query_.isError) {\n\t\t\tannounce(__('Search failed. Try again.', 'valu-block-components'));\n\t\t\treturn;\n\t\t}\n\t\tconst count = suggestions.length;\n\t\tannounce(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of search results */\n\t\t\t\t_n('%d result', '%d results', count, 'valu-block-components'),\n\t\t\t\tcount,\n\t\t\t),\n\t\t);\n\t}, [suggestions.length, query_.isFetching, query_.isError, active, debouncedQuery, fetchEmpty, announce]);\n\n\tconst maxedOut = isMaxedOut(value, maxItems);\n\n\tconst replace = useCallback((items: ContentItem[]) => onChange(items), [onChange]);\n\n\tconst select = useCallback(\n\t\t(item: ContentItem) => {\n\t\t\tif (maxedOut) return;\n\t\t\tconst limited = maxItems === 1;\n\t\t\tconst normalized: ContentItem = {\n\t\t\t\t...item,\n\t\t\t\tkey: item.key && item.key.length > 0 ? item.key : generateKey(),\n\t\t\t};\n\t\t\tconst next = limited ? [normalized] : [...value, normalized];\n\t\t\tonChange(next);\n\t\t\tannounceImmediate(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: title, 2: selected count */\n\t\t\t\t\t__('Added %1$s. %2$d selected.', 'valu-block-components'),\n\t\t\t\t\tnormalized.title,\n\t\t\t\t\tnext.length,\n\t\t\t\t),\n\t\t\t);\n\t\t\tonSelectSideEffect?.();\n\t\t},\n\t\t[maxedOut, maxItems, value, onChange, announceImmediate, onSelectSideEffect],\n\t);\n\n\tconst remove = useCallback(\n\t\t(key: string) => {\n\t\t\tconst target = value.find((i) => i.key === key);\n\t\t\tconst next = value.filter((i) => i.key !== key);\n\t\t\tonChange(next);\n\t\t\tif (target) {\n\t\t\t\tannounceImmediate(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: title of the removed item */\n\t\t\t\t\t\t__('Removed %s.', 'valu-block-components'),\n\t\t\t\t\t\ttarget.title,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[value, onChange, announceImmediate],\n\t);\n\n\tconst reorder = useCallback(\n\t\t(from: number, to: number) => {\n\t\t\tif (from === to || from < 0 || to < 0 || from >= value.length || to >= value.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = value.slice();\n\t\t\tconst [moved] = next.splice(from, 1);\n\t\t\tnext.splice(to, 0, moved);\n\t\t\tonChange(next);\n\t\t\tannounceImmediate(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: title, 2: position, 3: total */\n\t\t\t\t\t__('Moved %1$s to position %2$d of %3$d.', 'valu-block-components'),\n\t\t\t\t\tmoved.title,\n\t\t\t\t\tto + 1,\n\t\t\t\t\tnext.length,\n\t\t\t\t),\n\t\t\t);\n\t\t},\n\t\t[value, onChange, announceImmediate],\n\t);\n\n\tconst { highlightedIndex, setHighlightedIndex, reset: resetHighlight, handleKeyDown } =\n\t\tuseKeyboardNav({\n\t\t\titemCount: suggestions.length,\n\t\t\tonSelect: (i) => {\n\t\t\t\tconst item = suggestions[i];\n\t\t\t\tif (item) select(item);\n\t\t\t},\n\t\t\tonEscape,\n\t\t});\n\n\tuseEffect(() => {\n\t\tresetHighlight();\n\t}, [debouncedQuery, activeTypeFilter, resetHighlight]);\n\n\treturn {\n\t\tquery,\n\t\tsetQuery,\n\t\tdebouncedQuery,\n\t\tsuggestions,\n\t\tgroups,\n\t\thighlightedIndex,\n\t\tsetHighlightedIndex,\n\t\thandleKeyDown,\n\t\tloading: query_.isFetching && !query_.data,\n\t\terror: query_.error,\n\t\thasMore: Boolean(query_.hasNextPage),\n\t\tloadMore: () => {\n\t\t\tif (query_.hasNextPage && !query_.isFetchingNextPage) void query_.fetchNextPage();\n\t\t},\n\t\tfetchingMore: query_.isFetchingNextPage,\n\t\tselect,\n\t\tremove,\n\t\treorder,\n\t\treplace,\n\t\tmaxedOut,\n\t\ttotal: query_.data?.pages[0]?.total ?? 0,\n\t\tactiveTypeFilter,\n\t\tsetActiveTypeFilter,\n\t\teffectiveSearchTypes,\n\t};\n};\n\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n/**\n * Creates an Emotion cache scoped to this component.\n *\n * Two reasons this exists:\n *\n * 1. The WordPress site editor renders blocks inside an iframe. The default\n * Emotion cache targets `document.head` of the top frame, so styles\n * never reach the iframe. We capture the owning document via a callback\n * ref and build the cache pointing at the correct `<head>`.\n * 2. A unique cache key per component prevents class-name collisions with\n * a consumer's own Emotion instance.\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-cp', container: head, prepend: true });\n\t}, [head]);\n\n\tif (!cache) {\n\t\t// First render: emit a hidden probe so we can read ownerDocument. No\n\t\t// styled content has a chance to render yet, so nothing ends up in\n\t\t// the wrong head.\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, useEffect, useMemo, useRef, useState } from 'react';\nimport { Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { SearchCombobox } from './SearchCombobox';\nimport { SuggestionList } from './SuggestionList';\nimport { TypeFilter } from './TypeFilter';\nimport { useContentPickerController } from './hooks/useContentPickerController';\nimport { aria } from './utils';\nimport { MaxedOutBanner } from './styles';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport type { ContentItem, ContentPickerLabels, ContentPickerProps } from './types';\n\nexport interface ContentPickerPopoverProps {\n\trootId: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tplaceholder?: string;\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfetchOnOpen: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\trenderSuggestion?: ContentPickerProps['renderSuggestion'];\n\trenderGroupHeading?: ContentPickerProps['renderGroupHeading'];\n\ticons?: ContentPickerProps['icons'];\n\tdisableTypeFilter?: boolean;\n\tshowUrl?: boolean;\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\tlabels: ContentPickerLabels;\n}\n\nexport const ContentPickerPopover = (props: ContentPickerPopoverProps) => {\n\tconst {\n\t\trootId,\n\t\tlabel,\n\t\thideLabelFromVision,\n\t\thelp,\n\t\tplaceholder,\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfetchOnOpen,\n\t\tfilter,\n\t\trequest,\n\t\trenderSuggestion,\n\t\trenderGroupHeading,\n\t\ticons,\n\t\tdisableTypeFilter,\n\t\tshowUrl,\n\t\tvalue,\n\t\tonChange,\n\t\tlabels,\n\t} = props;\n\n\tconst [open, setOpen] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst popoverBodyRef = useRef<HTMLDivElement | null>(null);\n\tconst clearQueryRef = useRef<(() => void) | null>(null);\n\n\tconst controller = useContentPickerController({\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive: open,\n\t\tfetchEmpty: fetchOnOpen,\n\t\tonSelectSideEffect: () => {\n\t\t\tif (maxItems === 1) {\n\t\t\t\tsetOpen(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearQueryRef.current?.();\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t\tonEscape: () => {\n\t\t\tsetOpen(false);\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t});\n\n\tclearQueryRef.current = () => controller.setQuery('');\n\n\tconst listboxId = aria(rootId, 'listbox');\n\n\tconst activeOptionId =\n\t\tcontroller.highlightedIndex >= 0\n\t\t\t? aria(rootId, `option-${controller.highlightedIndex}`)\n\t\t\t: undefined;\n\n\tconst selectedKeys = useMemo(() => new Set(value.map((v) => v.key)), [value]);\n\n\tconst handleFocus = useCallback(() => {\n\t\tif (!controller.maxedOut) setOpen(true);\n\t}, [controller.maxedOut]);\n\n\tuseEffect(() => {\n\t\tif (controller.maxedOut) setOpen(false);\n\t}, [controller.maxedOut]);\n\n\tuseEffect(() => {\n\t\tif (!open) return;\n\n\t\tconst handlePointerDown = (event: MouseEvent) => {\n\t\t\tconst target = event.target as Node | null;\n\t\t\tif (!target) return;\n\n\t\t\tconst input = inputRef.current;\n\t\t\tconst body = popoverBodyRef.current;\n\t\t\tconst anchorContainer = input?.closest('div') ?? input;\n\n\t\t\t// Clicks on the input row or anywhere inside the popover body keep it open.\n\t\t\tif (anchorContainer && anchorContainer.contains(target)) return;\n\t\t\tif (body && body.contains(target)) return;\n\n\t\t\tsetOpen(false);\n\t\t};\n\n\t\t// Use capture so we beat stopPropagation inside descendants; mousedown\n\t\t// fires before the click, which keeps the close snappy and prevents the\n\t\t// focus jump from re-opening the popover.\n\t\tconst docs = new Set<Document>();\n\t\tif (typeof document !== 'undefined') docs.add(document);\n\t\tconst inputDoc = inputRef.current?.ownerDocument;\n\t\tif (inputDoc) docs.add(inputDoc);\n\n\t\tdocs.forEach((d) => d.addEventListener('mousedown', handlePointerDown, true));\n\t\treturn () => {\n\t\t\tdocs.forEach((d) => d.removeEventListener('mousedown', handlePointerDown, true));\n\t\t};\n\t}, [open]);\n\n\tconst disabled = controller.maxedOut;\n\n\treturn (\n\t\t<div style={{ position: 'relative' }}>\n\t\t\t<SearchCombobox\n\t\t\t\tref={inputRef}\n\t\t\t\trootId={rootId}\n\t\t\t\tvalue={controller.query}\n\t\t\t\tonChange={(next) => {\n\t\t\t\t\tcontroller.setQuery(next);\n\t\t\t\t\tif (!open && !disabled) setOpen(true);\n\t\t\t\t}}\n\t\t\t\tonFocus={handleFocus}\n\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\tif (event.key === 'ArrowDown' && !open && !disabled) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tsetOpen(true);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcontroller.handleKeyDown(event);\n\t\t\t\t}}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tlabel={label}\n\t\t\t\thideLabelFromVision={hideLabelFromVision}\n\t\t\t\thelp={help}\n\t\t\t\tdisabled={disabled}\n\t\t\t\topen={open && !disabled}\n\t\t\t\tlistboxId={listboxId}\n\t\t\t\tactiveOptionId={activeOptionId}\n\t\t\t\tlabels={labels}\n\t\t\t/>\n\t\t\t{disabled ? (\n\t\t\t\t<MaxedOutBanner role=\"status\" style={{ marginTop: 8 }}>\n\t\t\t\t\t{labels.limitReached ?? __('Selection limit reached.', 'valu-block-components')}\n\t\t\t\t</MaxedOutBanner>\n\t\t\t) : null}\n\t\t\t{open && !disabled && inputRef.current ? (\n\t\t\t\t<Popover\n\t\t\t\t\tanchor={inputRef.current.closest('div') ?? inputRef.current}\n\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\tfocusOnMount={false}\n\t\t\t\t\tonClose={() => setOpen(false)}\n\t\t\t\t\tonFocusOutside={() => setOpen(false)}\n\t\t\t\t\tshift\n\t\t\t\t\tflip\n\t\t\t\t\tresize\n\t\t\t\t\toffset={4}\n\t\t\t\t\tclassName=\"valu-content-picker__popover\"\n\t\t\t\t>\n\t\t\t\t\t<EmotionCacheProvider>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={popoverBodyRef}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tminWidth: inputRef.current.offsetWidth,\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\t\t\trootId={rootId}\n\t\t\t\t\t\t\t\tgroups={controller.groups}\n\t\t\t\t\t\t\t\tsuggestions={controller.suggestions}\n\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\tloading={controller.loading}\n\t\t\t\t\t\t\t\tfetchingMore={controller.fetchingMore}\n\t\t\t\t\t\t\t\thasMore={controller.hasMore}\n\t\t\t\t\t\t\t\terror={controller.error}\n\t\t\t\t\t\t\t\tquery={controller.debouncedQuery}\n\t\t\t\t\t\t\t\thighlightedIndex={controller.highlightedIndex}\n\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\t\t\tshowUrl={showUrl ?? true}\n\t\t\t\t\t\t\t\theaderSlot={\n\t\t\t\t\t\t\t\t\t!disableTypeFilter && types && types.length > 1 ? (\n\t\t\t\t\t\t\t\t\t\t<TypeFilter\n\t\t\t\t\t\t\t\t\t\t\ttypes={types}\n\t\t\t\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\t\t\t\tactive={controller.activeTypeFilter}\n\t\t\t\t\t\t\t\t\t\t\tonChange={controller.setActiveTypeFilter}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\t\t\trenderGroupHeading={renderGroupHeading}\n\t\t\t\t\t\t\t\tonHover={(i) => controller.setHighlightedIndex(i)}\n\t\t\t\t\t\t\t\tonSelect={(item) => controller.select(item)}\n\t\t\t\t\t\t\t\tonLoadMore={() => controller.loadMore()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</EmotionCacheProvider>\n\t\t\t\t</Popover>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n","import { useMemo, useRef } from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { SearchCombobox } from './SearchCombobox';\nimport { SuggestionList } from './SuggestionList';\nimport { TypeFilter } from './TypeFilter';\nimport { useContentPickerController } from './hooks/useContentPickerController';\nimport { aria } from './utils';\nimport { MaxedOutBanner, SuggestionsShell } from './styles';\nimport type { ContentItem, ContentPickerLabels, ContentPickerProps } from './types';\n\nexport interface ContentPickerInlineProps {\n\trootId: string;\n\tlabel: string;\n\thideLabelFromVision: boolean;\n\thelp?: string;\n\tplaceholder?: string;\n\tkind: NonNullable<ContentPickerProps['kind']>;\n\ttypes?: string[];\n\tperPage: number;\n\tinputDelayMs: number;\n\texcludeCurrentPost: boolean;\n\tuniqueItems: boolean;\n\tmaxItems: number;\n\tgroupByType: boolean;\n\tfetchOnOpen: boolean;\n\tfilter?: ContentPickerProps['filter'];\n\trequest?: ContentPickerProps['request'];\n\trenderSuggestion?: ContentPickerProps['renderSuggestion'];\n\trenderGroupHeading?: ContentPickerProps['renderGroupHeading'];\n\ticons?: ContentPickerProps['icons'];\n\tdisableTypeFilter?: boolean;\n\tshowUrl?: boolean;\n\tvalue: ContentItem[];\n\tonChange: (items: ContentItem[]) => void;\n\tlabels: ContentPickerLabels;\n}\n\nexport const ContentPickerInline = (props: ContentPickerInlineProps) => {\n\tconst {\n\t\trootId,\n\t\tlabel,\n\t\thideLabelFromVision,\n\t\thelp,\n\t\tplaceholder,\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfetchOnOpen,\n\t\tfilter,\n\t\trequest,\n\t\trenderSuggestion,\n\t\trenderGroupHeading,\n\t\ticons,\n\t\tdisableTypeFilter,\n\t\tshowUrl,\n\t\tvalue,\n\t\tonChange,\n\t\tlabels,\n\t} = props;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst clearQueryRef = useRef<(() => void) | null>(null);\n\n\tconst controller = useContentPickerController({\n\t\tkind,\n\t\ttypes,\n\t\tperPage,\n\t\tinputDelayMs,\n\t\texcludeCurrentPost,\n\t\tuniqueItems,\n\t\tmaxItems,\n\t\tgroupByType,\n\t\tfilter,\n\t\trequest,\n\t\tvalue,\n\t\tonChange,\n\t\tactive: true,\n\t\tfetchEmpty: fetchOnOpen || value.length === 0,\n\t\tonSelectSideEffect: () => {\n\t\t\tclearQueryRef.current?.();\n\t\t\trequestAnimationFrame(() => inputRef.current?.focus());\n\t\t},\n\t});\n\n\tclearQueryRef.current = () => controller.setQuery('');\n\n\tconst listboxId = aria(rootId, 'listbox');\n\tconst activeOptionId =\n\t\tcontroller.highlightedIndex >= 0\n\t\t\t? aria(rootId, `option-${controller.highlightedIndex}`)\n\t\t\t: undefined;\n\n\tconst selectedKeys = useMemo(() => new Set(value.map((v) => v.key)), [value]);\n\n\tconst disabled = controller.maxedOut;\n\tconst shouldShowList =\n\t\t!disabled &&\n\t\t(controller.debouncedQuery.trim().length > 0 ||\n\t\t\tfetchOnOpen ||\n\t\t\tvalue.length === 0);\n\n\treturn (\n\t\t<div>\n\t\t\t<SearchCombobox\n\t\t\t\tref={inputRef}\n\t\t\t\trootId={rootId}\n\t\t\t\tvalue={controller.query}\n\t\t\t\tonChange={(next) => controller.setQuery(next)}\n\t\t\t\tonKeyDown={controller.handleKeyDown}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tlabel={label}\n\t\t\t\thideLabelFromVision={hideLabelFromVision}\n\t\t\t\thelp={help}\n\t\t\t\tdisabled={disabled}\n\t\t\t\topen={shouldShowList}\n\t\t\t\tlistboxId={listboxId}\n\t\t\t\tactiveOptionId={activeOptionId}\n\t\t\t\tlabels={labels}\n\t\t\t/>\n\t\t\t{disabled ? (\n\t\t\t\t<MaxedOutBanner role=\"status\" style={{ marginTop: 8 }}>\n\t\t\t\t\t{labels.limitReached ?? __('Selection limit reached.', 'valu-block-components')}\n\t\t\t\t</MaxedOutBanner>\n\t\t\t) : null}\n\t\t\t{shouldShowList ? (\n\t\t\t\t<SuggestionsShell inline style={{ marginTop: 8 }}>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tlistboxId={listboxId}\n\t\t\t\t\t\trootId={rootId}\n\t\t\t\t\t\tgroups={controller.groups}\n\t\t\t\t\t\tsuggestions={controller.suggestions}\n\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\tloading={controller.loading}\n\t\t\t\t\t\tfetchingMore={controller.fetchingMore}\n\t\t\t\t\t\thasMore={controller.hasMore}\n\t\t\t\t\t\terror={controller.error}\n\t\t\t\t\t\tquery={controller.debouncedQuery}\n\t\t\t\t\t\thighlightedIndex={controller.highlightedIndex}\n\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\tshowUrl={showUrl ?? true}\n\t\t\t\t\t\theaderSlot={\n\t\t\t\t\t\t\t!disableTypeFilter && types && types.length > 1 ? (\n\t\t\t\t\t\t\t\t<TypeFilter\n\t\t\t\t\t\t\t\t\ttypes={types}\n\t\t\t\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\t\t\t\tactive={controller.activeTypeFilter}\n\t\t\t\t\t\t\t\t\tonChange={controller.setActiveTypeFilter}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderSuggestion={renderSuggestion}\n\t\t\t\t\t\trenderGroupHeading={renderGroupHeading}\n\t\t\t\t\t\tonHover={(i) => controller.setHighlightedIndex(i)}\n\t\t\t\t\t\tonSelect={(item) => controller.select(item)}\n\t\t\t\t\t\tonLoadMore={() => controller.loadMore()}\n\t\t\t\t\t/>\n\t\t\t\t</SuggestionsShell>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n","import styled from '@emotion/styled';\n\nimport { tokens as t } from '../styles/tokens';\nimport type { ContentKind } from '../types';\nimport { humanizeType } from '../utils';\n\nconst Pill = styled.span`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 1px 6px;\n\tbackground: transparent;\n\tcolor: ${t.gray600};\n\tborder: 1px solid ${t.gray300};\n\tborder-radius: 999px;\n\tfont-size: 10px;\n\tfont-weight: ${t.fontWeightBold};\n\tletter-spacing: 0.04em;\n\ttext-transform: uppercase;\n\twhite-space: nowrap;\n\tline-height: 1.6;\n`;\n\nexport interface TypeBadgeProps {\n\ttype: string;\n\tkind: ContentKind;\n\t/** Override the displayed label (e.g. from renderItemType). */\n\tlabel?: string;\n}\n\nexport const TypeBadge = ({ type, kind, label }: TypeBadgeProps) => (\n\t<Pill>{label ?? humanizeType(type, kind)}</Pill>\n);\n","import { type CSSProperties, type ReactNode } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Button, Icon } from '@wordpress/components';\nimport {\n\tcaution,\n\tchevronDown,\n\tchevronUp,\n\tcloseSmall,\n\tdragHandle,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport {\n\tActionColumn,\n\tDragHandleButton,\n\tItemBody,\n\tPrimaryText,\n\tSelectedRow,\n\tThumb,\n} from './styles';\nimport { StatusBadge } from './badges/StatusBadge';\nimport { TypeBadge } from './badges/TypeBadge';\nimport { resolveItemIcon } from './utils';\nimport type {\n\tContentPickerIconMap,\n\tContentPickerLabels,\n\tResolvedContentItem,\n} from './types';\n\nexport interface SelectedItemProps {\n\titem: ResolvedContentItem;\n\tindex: number;\n\ttotal: number;\n\torderable: boolean;\n\tshowTypeBadge: boolean;\n\ticons?: ContentPickerIconMap;\n\tlabels: ContentPickerLabels;\n\tonRemove: () => void;\n\tonMoveUp?: () => void;\n\tonMoveDown?: () => void;\n\trender?: (item: ResolvedContentItem) => ReactNode;\n}\n\nexport const SelectedItem = ({\n\titem,\n\tindex,\n\ttotal,\n\torderable,\n\tshowTypeBadge,\n\ticons,\n\tlabels,\n\tonRemove,\n\tonMoveUp,\n\tonMoveDown,\n\trender,\n}: SelectedItemProps) => {\n\tconst { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n\t\tid: item.key,\n\t\tdisabled: !orderable,\n\t});\n\n\tconst style: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\ttransition,\n\t\topacity: isDragging ? 0 : 1,\n\t};\n\n\tconst isMissing = item.missing === 'deleted';\n\tconst isTrash = item.missing === 'trash';\n\tconst missingLabel =\n\t\tlabels.missing ?? __('This item is no longer available.', 'valu-block-components');\n\tconst trashLabel =\n\t\tlabels.statusTrash ?? __('This item is in the trash.', 'valu-block-components');\n\n\tconst removeLabel = labels.remove\n\t\t? labels.remove\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Remove %s', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst moveUpLabel = labels.moveUp\n\t\t? labels.moveUp\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Move %s up', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst moveDownLabel = labels.moveDown\n\t\t? labels.moveDown\n\t\t: sprintf(\n\t\t\t\t/* translators: %s: item title */\n\t\t\t\t__('Move %s down', 'valu-block-components'),\n\t\t\t\titem.title,\n\t\t\t);\n\tconst hasAbnormalStatus = item.status && item.status !== 'publish';\n\tconst resolvedIcon = resolveItemIcon(item, icons);\n\tconst hasThumbImage = Boolean(item.thumbnailUrl) && !isMissing && !isTrash;\n\tconst isAvatar = item.kind === 'user' && hasThumbImage;\n\tconst hasVisual = isMissing || isTrash || hasThumbImage || Boolean(resolvedIcon);\n\n\treturn (\n\t\t<SelectedRow\n\t\t\tref={setNodeRef}\n\t\t\tstyle={style}\n\t\t\tdragging={isDragging}\n\t\t\tmissing={isMissing || isTrash}\n\t\t\taria-setsize={total}\n\t\t\taria-posinset={index + 1}\n\t\t>\n\t\t\t{orderable ? (\n\t\t\t\t<DragHandleButton\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\taria-label={labels.dragHandle ?? __('Reorder item', 'valu-block-components')}\n\t\t\t\t\t{...attributes}\n\t\t\t\t\t{...listeners}\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={dragHandle} size={14} />\n\t\t\t\t</DragHandleButton>\n\t\t\t) : null}\n\t\t\t{hasVisual ? (\n\t\t\t\t<Thumb\n\t\t\t\t\thasImage={hasThumbImage && !isAvatar}\n\t\t\t\t\tavatar={isAvatar}\n\t\t\t\t\tmissing={isMissing || isTrash}\n\t\t\t\t>\n\t\t\t\t\t{isMissing || isTrash ? (\n\t\t\t\t\t\t<Icon icon={caution} size={22} />\n\t\t\t\t\t) : hasThumbImage ? (\n\t\t\t\t\t\t<img src={item.thumbnailUrl} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t) : resolvedIcon ? (\n\t\t\t\t\t\t<Icon icon={resolvedIcon} size={22} />\n\t\t\t\t\t) : null}\n\t\t\t\t</Thumb>\n\t\t\t) : null}\n\t\t\t{render ? (\n\t\t\t\trender(item)\n\t\t\t) : (\n\t\t\t\t<ItemBody>\n\t\t\t\t\t<PrimaryText muted={isMissing || isTrash} title={item.title}>\n\t\t\t\t\t\t{isMissing ? missingLabel : isTrash ? trashLabel : item.title}\n\t\t\t\t\t</PrimaryText>\n\t\t\t\t</ItemBody>\n\t\t\t)}\n\t\t\t{!isMissing && showTypeBadge ? (\n\t\t\t\t<TypeBadge type={item.type} kind={item.kind} />\n\t\t\t) : null}\n\t\t\t{!isMissing && hasAbnormalStatus ? (\n\t\t\t\t<StatusBadge status={item.status!} />\n\t\t\t) : null}\n\t\t\t<ActionColumn>\n\t\t\t\t{orderable ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\ticon={chevronUp}\n\t\t\t\t\t\t\tlabel={moveUpLabel}\n\t\t\t\t\t\t\tonClick={onMoveUp}\n\t\t\t\t\t\t\tdisabled={index === 0 || !onMoveUp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\ticon={chevronDown}\n\t\t\t\t\t\t\tlabel={moveDownLabel}\n\t\t\t\t\t\t\tonClick={onMoveDown}\n\t\t\t\t\t\t\tdisabled={index === total - 1 || !onMoveDown}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) : null}\n\t\t\t\t<Button\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon={closeSmall}\n\t\t\t\t\tlabel={removeLabel}\n\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\tisDestructive\n\t\t\t\t/>\n\t\t\t</ActionColumn>\n\t\t</SelectedRow>\n\t);\n};\n","import { Icon } from '@wordpress/components';\nimport { dragHandle } from '@wordpress/icons';\n\nimport { ChipTitle, ChipWrap } from './styles';\n\nexport interface DragChipProps {\n\ttitle: string;\n}\n\nexport const DragChip = ({ title }: DragChipProps) => (\n\t<ChipWrap>\n\t\t<Icon icon={dragHandle} size={16} />\n\t\t<ChipTitle>{title}</ChipTitle>\n\t</ChipWrap>\n);\n","import { useMemo } from 'react';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\nimport type { ContentItem, ContentKind, ContentStatus, ResolvedContentItem } from '../types';\nimport { decodeTitle } from '../utils';\n\ninterface EntityRecord {\n\tid: number;\n\tstatus?: ContentStatus;\n\ttitle?: { rendered?: string } | string;\n\tname?: string;\n\tlink?: string;\n\tfeatured_media?: number;\n}\n\nconst entityKindFor = (kind: ContentKind): 'postType' | 'taxonomy' | 'root' => {\n\tif (kind === 'post') return 'postType';\n\tif (kind === 'term') return 'taxonomy';\n\treturn 'root';\n};\n\nconst entityNameFor = (kind: ContentKind, type: string): string => {\n\tif (kind === 'user') return 'user';\n\treturn type;\n};\n\n/**\n * Hydrate picked items from the core-data store so we can detect trash /\n * deletion and show fresh titles. Batches one call per distinct `type`.\n */\nexport const useResolvedItems = (value: ContentItem[]): ResolvedContentItem[] => {\n\tconst distinctTypes = useMemo(() => {\n\t\tconst map = new Map<string, { kind: ContentKind; ids: number[] }>();\n\t\tfor (const item of value) {\n\t\t\tconst key = `${item.kind}:${item.type}`;\n\t\t\tconst bucket = map.get(key);\n\t\t\tif (bucket) bucket.ids.push(item.id);\n\t\t\telse map.set(key, { kind: item.kind, ids: [item.id] });\n\t\t}\n\t\treturn Array.from(map.entries()).map(([key, v]) => ({ key, ...v }));\n\t}, [value]);\n\n\tconst records = useSelect(\n\t\t(select) => {\n\t\t\tconst core = select(coreStore);\n\t\t\tconst out: Record<string, { record: EntityRecord | null; resolved: boolean }> = {};\n\t\t\tfor (const item of value) {\n\t\t\t\tconst kindKey = entityKindFor(item.kind);\n\t\t\t\tconst nameKey = entityNameFor(item.kind, item.type);\n\t\t\t\tconst record = core.getEntityRecord(kindKey, nameKey, item.id) as\n\t\t\t\t\t| EntityRecord\n\t\t\t\t\t| null\n\t\t\t\t\t| undefined;\n\t\t\t\tconst resolved = core.hasFinishedResolution('getEntityRecord', [\n\t\t\t\t\tkindKey,\n\t\t\t\t\tnameKey,\n\t\t\t\t\titem.id,\n\t\t\t\t]);\n\t\t\t\tout[`${item.kind}:${item.type}:${item.id}`] = {\n\t\t\t\t\trecord: record ?? null,\n\t\t\t\t\tresolved,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\t[value, distinctTypes],\n\t);\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tvalue.map((item): ResolvedContentItem => {\n\t\t\t\tconst resolvedEntry = records[`${item.kind}:${item.type}:${item.id}`];\n\t\t\t\tif (!resolvedEntry) return item;\n\t\t\t\tconst { record, resolved } = resolvedEntry;\n\n\t\t\t\tif (!resolved) {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t\tif (!record) {\n\t\t\t\t\treturn { ...item, missing: 'deleted' };\n\t\t\t\t}\n\t\t\t\tif (record.status === 'trash') {\n\t\t\t\t\treturn { ...item, missing: 'trash', status: 'trash' };\n\t\t\t\t}\n\t\t\t\tconst freshTitle =\n\t\t\t\t\tdecodeTitle(record.title) || (record.name ? decodeTitle(record.name) : '');\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\ttitle: freshTitle || item.title,\n\t\t\t\t\tstatus: record.status ?? item.status,\n\t\t\t\t\turl: record.link ?? item.url,\n\t\t\t\t};\n\t\t\t}),\n\t\t[value, records],\n\t);\n};\n","import { useCallback, useMemo, useState, type ReactNode } from 'react';\nimport {\n\tDndContext,\n\tDragOverlay,\n\tMouseSensor,\n\tTouchSensor,\n\tKeyboardSensor,\n\tclosestCenter,\n\tuseSensor,\n\tuseSensors,\n\tdefaultDropAnimation,\n\ttype DragEndEvent,\n\ttype DragStartEvent,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\tarrayMove,\n\tsortableKeyboardCoordinates,\n\tverticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { SelectedItem } from './SelectedItem';\nimport { DragChip } from './DragChip';\nimport { useResolvedItems } from './hooks/useResolvedItems';\nimport {\n\tCountPill,\n\tHeaderRow,\n\tHeaderTitle,\n\tSelectedListEl,\n} from './styles';\nimport type {\n\tContentItem,\n\tContentPickerIconMap,\n\tContentPickerLabels,\n\tResolvedContentItem,\n} from './types';\n\nexport interface SelectedListProps {\n\tvalue: ContentItem[];\n\torderable: boolean;\n\tmaxItems: number;\n\tlabels: ContentPickerLabels;\n\tonChange: (next: ContentItem[]) => void;\n\trenderSelected?: (item: ResolvedContentItem) => ReactNode;\n\tshowHeader?: boolean;\n\tshowTypeBadge: boolean;\n\ticons?: ContentPickerIconMap;\n}\n\nexport const SelectedList = ({\n\tvalue,\n\torderable,\n\tmaxItems,\n\tlabels,\n\tonChange,\n\trenderSelected,\n\tshowHeader = true,\n\tshowTypeBadge,\n\ticons,\n}: SelectedListProps) => {\n\tconst resolved = useResolvedItems(value);\n\tconst [activeKey, setActiveKey] = useState<string | null>(null);\n\n\tconst sensors = useSensors(\n\t\tuseSensor(MouseSensor, { activationConstraint: { distance: 5 } }),\n\t\tuseSensor(TouchSensor, { activationConstraint: { delay: 200, tolerance: 6 } }),\n\t\tuseSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n\t);\n\n\tconst ids = useMemo(() => resolved.map((i) => i.key), [resolved]);\n\tconst activeItem = activeKey ? resolved.find((i) => i.key === activeKey) : null;\n\n\tconst remove = useCallback(\n\t\t(key: string) => onChange(value.filter((i) => i.key !== key)),\n\t\t[value, onChange],\n\t);\n\n\tconst reorder = useCallback(\n\t\t(from: number, to: number) => {\n\t\t\tif (from === to) return;\n\t\t\tonChange(arrayMove(value, from, to));\n\t\t},\n\t\t[value, onChange],\n\t);\n\n\tconst handleDragStart = useCallback(\n\t\t(event: DragStartEvent) => setActiveKey(String(event.active.id)),\n\t\t[],\n\t);\n\n\tconst handleDragEnd = useCallback(\n\t\t(event: DragEndEvent) => {\n\t\t\tsetActiveKey(null);\n\t\t\tconst { active, over } = event;\n\t\t\tif (!over || active.id === over.id) return;\n\t\t\tconst from = ids.indexOf(String(active.id));\n\t\t\tconst to = ids.indexOf(String(over.id));\n\t\t\tif (from >= 0 && to >= 0) reorder(from, to);\n\t\t},\n\t\t[ids, reorder],\n\t);\n\n\tif (resolved.length === 0) return null;\n\n\tconst isSingleSelect = maxItems === 1;\n\tconst shouldShowHeader = showHeader && !isSingleSelect;\n\n\tconst header = shouldShowHeader ? (\n\t\t<HeaderRow>\n\t\t\t<HeaderTitle>\n\t\t\t\t{resolved.length === 1\n\t\t\t\t\t? (labels.selectedSingular ?? __('Selected', 'valu-block-components'))\n\t\t\t\t\t: (labels.selectedPlural ?? __('Selected', 'valu-block-components'))}\n\t\t\t</HeaderTitle>\n\t\t\t<CountPill aria-hidden=\"true\">\n\t\t\t\t{Number.isFinite(maxItems)\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: 1: current count, 2: max count */\n\t\t\t\t\t\t\t'%1$d / %2$d',\n\t\t\t\t\t\t\tresolved.length,\n\t\t\t\t\t\t\tmaxItems,\n\t\t\t\t\t\t)\n\t\t\t\t\t: String(resolved.length)}\n\t\t\t</CountPill>\n\t\t</HeaderRow>\n\t) : null;\n\n\tconst rows = resolved.map((item, index) => (\n\t\t<SelectedItem\n\t\t\tkey={item.key}\n\t\t\titem={item}\n\t\t\tindex={index}\n\t\t\ttotal={resolved.length}\n\t\t\torderable={orderable}\n\t\t\tshowTypeBadge={showTypeBadge}\n\t\t\ticons={icons}\n\t\t\tlabels={labels}\n\t\t\tonRemove={() => remove(item.key)}\n\t\t\tonMoveUp={index > 0 ? () => reorder(index, index - 1) : undefined}\n\t\t\tonMoveDown={\n\t\t\t\tindex < resolved.length - 1 ? () => reorder(index, index + 1) : undefined\n\t\t\t}\n\t\t\trender={renderSelected}\n\t\t/>\n\t));\n\n\tif (!orderable) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{header}\n\t\t\t\t<SelectedListEl role=\"list\">{rows}</SelectedListEl>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{header}\n\t\t\t<DndContext\n\t\t\t\tsensors={sensors}\n\t\t\t\tcollisionDetection={closestCenter}\n\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\tonDragCancel={() => setActiveKey(null)}\n\t\t\t>\n\t\t\t\t<SortableContext items={ids} strategy={verticalListSortingStrategy}>\n\t\t\t\t\t<SelectedListEl role=\"list\">{rows}</SelectedListEl>\n\t\t\t\t</SortableContext>\n\t\t\t\t<DragOverlay dropAnimation={defaultDropAnimation}>\n\t\t\t\t\t{activeItem ? <DragChip title={activeItem.title} /> : null}\n\t\t\t\t</DragOverlay>\n\t\t\t</DndContext>\n\t\t</>\n\t);\n};\n","import { useCallback, useId, useMemo, useRef, useState } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nimport { ContentPickerPopover } from './ContentPickerPopover';\nimport { ContentPickerInline } from './ContentPickerInline';\nimport { SelectedList } from './SelectedList';\nimport { EmotionCacheProvider } from './styles/emotionCache';\nimport { Root } from './styles';\nimport type {\n\tContentItem,\n\tContentPickerLabels,\n\tContentPickerProps,\n} from './types';\n\nconst DEFAULT_LABELS: ContentPickerLabels = {};\n\nconst defaultTypesFor = (kind: NonNullable<ContentPickerProps['kind']>): string[] => {\n\tif (kind === 'post') return ['post', 'page'];\n\tif (kind === 'term') return ['category', 'post_tag'];\n\treturn [];\n};\n\nconst makeQueryClient = () =>\n\tnew QueryClient({\n\t\tdefaultOptions: {\n\t\t\tqueries: { retry: 1, refetchOnWindowFocus: false },\n\t\t},\n\t});\n\n/**\n * `<ContentPicker />` — search for and attach WordPress posts, pages,\n * custom post types, taxonomy terms, or users to a block.\n *\n * The component is **controlled** when `value` is defined, and\n * **uncontrolled** (with optional `defaultValue`) otherwise. In both modes\n * `onChange` fires with the full next array.\n *\n * @example\n * <ContentPicker\n * label=\"Related posts\"\n * variant=\"popover\"\n * kind=\"post\"\n * types={['post', 'page']}\n * maxItems={5}\n * orderable\n * value={related}\n * onChange={setRelated}\n * />\n */\nexport const ContentPicker = ({\n\tlabel,\n\thideLabelFromVision = false,\n\thelp,\n\tkind = 'post',\n\ttypes,\n\tvariant = 'popover',\n\tvalue: controlledValue,\n\tdefaultValue,\n\tonChange,\n\tmaxItems = Infinity,\n\torderable,\n\tplaceholder,\n\tperPage,\n\tinputDelayMs = 250,\n\tfetchOnOpen = false,\n\texcludeCurrentPost = true,\n\tuniqueItems = true,\n\tgroupByType,\n\tshowTypeBadge,\n\ticons,\n\tdisableTypeFilter,\n\tshowUrl,\n\tfilter,\n\trequest,\n\trenderSuggestion,\n\trenderSelected,\n\trenderGroupHeading,\n\tlabels = DEFAULT_LABELS,\n\tclassName,\n\tid,\n}: ContentPickerProps) => {\n\tconst reactId = useId();\n\tconst rootId = id ?? `valu-cp-${reactId.replace(/:/g, '')}`;\n\n\tconst [uncontrolled, setUncontrolled] = useState<ContentItem[]>(defaultValue ?? []);\n\tconst isControlled = controlledValue !== undefined;\n\tconst value = isControlled ? controlledValue : uncontrolled;\n\n\tconst handleChange = useCallback(\n\t\t(next: ContentItem[]) => {\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 effectiveTypes = types ?? defaultTypesFor(kind);\n\tconst effectivePerPage = perPage ?? (variant === 'popover' ? 10 : 20);\n\tconst effectiveOrderable = orderable ?? (Number.isFinite(maxItems) ? maxItems > 1 : true);\n\tconst effectiveGroupByType = groupByType ?? effectiveTypes.length > 1;\n\tconst effectiveShowTypeBadge = showTypeBadge ?? effectiveTypes.length > 1;\n\n\tconst queryClientRef = useRef<QueryClient | null>(null);\n\tif (!queryClientRef.current) queryClientRef.current = makeQueryClient();\n\n\tconst showInput = !(Number.isFinite(maxItems) && value.length >= maxItems);\n\n\tconst variantProps = useMemo(\n\t\t() => ({\n\t\t\trootId,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tplaceholder,\n\t\t\tkind,\n\t\t\ttypes: effectiveTypes,\n\t\t\tperPage: effectivePerPage,\n\t\t\tinputDelayMs,\n\t\t\texcludeCurrentPost,\n\t\t\tuniqueItems,\n\t\t\tmaxItems,\n\t\t\tgroupByType: effectiveGroupByType,\n\t\t\tfetchOnOpen,\n\t\t\tfilter,\n\t\t\trequest,\n\t\t\trenderSuggestion,\n\t\t\trenderGroupHeading,\n\t\t\ticons,\n\t\t\tdisableTypeFilter,\n\t\t\tshowUrl,\n\t\t\tvalue,\n\t\t\tonChange: handleChange,\n\t\t\tlabels,\n\t\t}),\n\t\t[\n\t\t\trootId,\n\t\t\tlabel,\n\t\t\thideLabelFromVision,\n\t\t\thelp,\n\t\t\tplaceholder,\n\t\t\tkind,\n\t\t\teffectiveTypes,\n\t\t\teffectivePerPage,\n\t\t\tinputDelayMs,\n\t\t\texcludeCurrentPost,\n\t\t\tuniqueItems,\n\t\t\tmaxItems,\n\t\t\teffectiveGroupByType,\n\t\t\tfetchOnOpen,\n\t\t\tfilter,\n\t\t\trequest,\n\t\t\trenderSuggestion,\n\t\t\trenderGroupHeading,\n\t\t\ticons,\n\t\t\tdisableTypeFilter,\n\t\t\tshowUrl,\n\t\t\tvalue,\n\t\t\thandleChange,\n\t\t\tlabels,\n\t\t],\n\t);\n\n\treturn (\n\t\t<EmotionCacheProvider>\n\t\t\t<QueryClientProvider client={queryClientRef.current}>\n\t\t\t\t<Root id={rootId} className={className}>\n\t\t\t\t\t{showInput ? (\n\t\t\t\t\t\tvariant === 'popover' ? (\n\t\t\t\t\t\t\t<ContentPickerPopover {...variantProps} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ContentPickerInline {...variantProps} />\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\t\t\t\t\t<SelectedList\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\torderable={effectiveOrderable && value.length > 1}\n\t\t\t\t\t\tmaxItems={maxItems}\n\t\t\t\t\t\tlabels={labels}\n\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\trenderSelected={renderSelected}\n\t\t\t\t\t\tshowHeader={value.length > 0}\n\t\t\t\t\t\tshowTypeBadge={effectiveShowTypeBadge}\n\t\t\t\t\t\ticons={icons}\n\t\t\t\t\t/>\n\t\t\t\t</Root>\n\t\t\t</QueryClientProvider>\n\t\t</EmotionCacheProvider>\n\t);\n};\n","/**\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"]}
|