@dxos/react-ui-mosaic 0.8.4-main.fcfe5033a5 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/browser/{chunk-33NNDFD6.mjs → chunk-I3M5WM6C.mjs} +45 -73
  3. package/dist/lib/browser/chunk-I3M5WM6C.mjs.map +7 -0
  4. package/dist/lib/browser/index.mjs +125 -59
  5. package/dist/lib/browser/index.mjs.map +4 -4
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/playwright/index.mjs +118 -10
  8. package/dist/lib/browser/playwright/index.mjs.map +3 -3
  9. package/dist/lib/browser/testing/index.mjs +10 -19
  10. package/dist/lib/browser/testing/index.mjs.map +3 -3
  11. package/dist/lib/browser/translations.mjs +18 -0
  12. package/dist/lib/browser/translations.mjs.map +7 -0
  13. package/dist/lib/node-esm/{chunk-Y4LG7O67.mjs → chunk-DVJLDZLE.mjs} +45 -73
  14. package/dist/lib/node-esm/chunk-DVJLDZLE.mjs.map +7 -0
  15. package/dist/lib/node-esm/index.mjs +125 -59
  16. package/dist/lib/node-esm/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/meta.json +1 -1
  18. package/dist/lib/node-esm/playwright/index.mjs +118 -10
  19. package/dist/lib/node-esm/playwright/index.mjs.map +3 -3
  20. package/dist/lib/node-esm/testing/index.mjs +10 -19
  21. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  22. package/dist/lib/node-esm/translations.mjs +20 -0
  23. package/dist/lib/node-esm/translations.mjs.map +7 -0
  24. package/dist/types/src/components/Board/Board.d.ts +12 -4
  25. package/dist/types/src/components/Board/Board.d.ts.map +1 -1
  26. package/dist/types/src/components/Board/Board.stories.d.ts +3 -3
  27. package/dist/types/src/components/Board/Board.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Board/Column.d.ts +5 -5
  29. package/dist/types/src/components/Board/Column.d.ts.map +1 -1
  30. package/dist/types/src/components/Board/Item.d.ts +1 -1
  31. package/dist/types/src/components/Board/Item.d.ts.map +1 -1
  32. package/dist/types/src/components/Mosaic/Container.d.ts +9 -1
  33. package/dist/types/src/components/Mosaic/Container.d.ts.map +1 -1
  34. package/dist/types/src/components/Mosaic/Mosaic.d.ts +3 -2
  35. package/dist/types/src/components/Mosaic/Mosaic.d.ts.map +1 -1
  36. package/dist/types/src/components/Mosaic/Placeholder.d.ts +8 -8
  37. package/dist/types/src/components/Mosaic/Placeholder.d.ts.map +1 -1
  38. package/dist/types/src/components/Mosaic/Stack.d.ts +6 -1
  39. package/dist/types/src/components/Mosaic/Stack.d.ts.map +1 -1
  40. package/dist/types/src/components/Mosaic/Stack.stories.d.ts.map +1 -1
  41. package/dist/types/src/components/Mosaic/Tile.d.ts +6 -2
  42. package/dist/types/src/components/Mosaic/Tile.d.ts.map +1 -1
  43. package/dist/types/src/components/Mosaic/extension.d.ts.map +1 -1
  44. package/dist/types/src/components/Mosaic/styles.d.ts.map +1 -1
  45. package/dist/types/src/components/Mosaic/types.d.ts.map +1 -1
  46. package/dist/types/src/components/SearchStack/SearchStack.d.ts +20 -0
  47. package/dist/types/src/components/SearchStack/SearchStack.d.ts.map +1 -0
  48. package/dist/types/src/components/SearchStack/SearchStack.stories.d.ts +10 -0
  49. package/dist/types/src/components/SearchStack/SearchStack.stories.d.ts.map +1 -0
  50. package/dist/types/src/components/SearchStack/index.d.ts +2 -0
  51. package/dist/types/src/components/SearchStack/index.d.ts.map +1 -0
  52. package/dist/types/src/components/index.d.ts +1 -0
  53. package/dist/types/src/components/index.d.ts.map +1 -1
  54. package/dist/types/src/hooks/useContainerDebug.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useDefaultColumnEventHandler.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useEventHandlerAdapter.d.ts +1 -1
  57. package/dist/types/src/hooks/useEventHandlerAdapter.d.ts.map +1 -1
  58. package/dist/types/src/hooks/useVisibleItems.d.ts.map +1 -1
  59. package/dist/types/src/playwright/board-manager.d.ts +20 -5
  60. package/dist/types/src/playwright/board-manager.d.ts.map +1 -1
  61. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  62. package/dist/types/src/testing/CardContainer.d.ts.map +1 -1
  63. package/dist/types/src/testing/DefaultStackTile.d.ts.map +1 -1
  64. package/dist/types/src/testing/types.d.ts +7 -9
  65. package/dist/types/src/testing/types.d.ts.map +1 -1
  66. package/dist/types/src/translations.d.ts +3 -3
  67. package/dist/types/src/translations.d.ts.map +1 -1
  68. package/dist/types/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +42 -40
  70. package/src/components/Board/Board.stories.tsx +11 -10
  71. package/src/components/Board/Board.tsx +4 -3
  72. package/src/components/Board/Column.tsx +22 -18
  73. package/src/components/Board/Item.tsx +14 -10
  74. package/src/components/Mosaic/Container.tsx +18 -2
  75. package/src/components/Mosaic/Placeholder.tsx +6 -0
  76. package/src/components/Mosaic/Stack.tsx +20 -5
  77. package/src/components/Mosaic/Tile.tsx +11 -2
  78. package/src/components/Mosaic/extension.ts +1 -1
  79. package/src/components/SearchStack/SearchStack.stories.tsx +47 -0
  80. package/src/components/SearchStack/SearchStack.tsx +135 -0
  81. package/src/components/SearchStack/index.ts +5 -0
  82. package/src/components/index.ts +1 -0
  83. package/src/hooks/useContainerDebug.tsx +3 -3
  84. package/src/hooks/useEventHandlerAdapter.ts +1 -1
  85. package/src/playwright/board-manager.ts +168 -13
  86. package/src/playwright/smoke.spec.ts +3 -3
  87. package/src/testing/CardContainer.tsx +2 -5
  88. package/src/testing/DefaultStackTile.tsx +11 -5
  89. package/src/testing/types.ts +7 -17
  90. package/dist/lib/browser/chunk-33NNDFD6.mjs.map +0 -7
  91. package/dist/lib/node-esm/chunk-Y4LG7O67.mjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/components/Board/Board.tsx", "../../../src/hooks/useContainerDebug.tsx", "../../../src/hooks/useEventHandlerAdapter.ts", "../../../src/hooks/useDefaultColumnEventHandler.ts", "../../../src/components/Mosaic/extension.ts", "../../../src/components/Board/Column.tsx", "../../../src/translations.ts", "../../../src/components/Board/Item.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type PropsWithChildren,\n type ReactElement,\n type Ref as ReactRef,\n forwardRef,\n useRef,\n useState,\n} from 'react';\n\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { useContainerDebug } from '../../hooks';\nimport { Focus } from '../Focus';\nimport {\n type GetId,\n Mosaic,\n type MosaicEventHandler,\n type MosaicPlaceholderProps,\n type MosaicStackProps,\n mosaicStyles,\n useMosaic,\n} from '../Mosaic';\nimport { BoardColumn, type BoardColumnProps, DefaultBoardColumn, useBoardColumn } from './Column';\nimport { BoardItem, type BoardItemProps } from './Item';\n\n//\n// Model\n//\n\nexport interface BoardModel<TColumn = any, TItem = any> {\n getColumnId: GetId<TColumn>;\n getItemId: GetId<TItem>;\n isColumn: (obj: unknown) => obj is TColumn;\n isItem: (obj: unknown) => obj is TItem;\n columns: Atom.Atom<readonly TColumn[] | TColumn[]>;\n items: (column: TColumn) => Atom.Atom<TItem[]>;\n getColumns: () => TColumn[];\n getItems: (column: TColumn) => TItem[];\n onColumnCreate?: () => Promise<TColumn>;\n onColumnDelete?: (column: TColumn) => void;\n onItemCreate?: (column: TColumn) => Promise<TItem>;\n onItemDelete?: (column: TColumn, item: TItem) => void;\n}\n\n//\n// Context\n//\n\nconst BOARD_NAME = 'Board';\n\ntype BoardContextValue<TColumn = any, TItem = any> = {\n model: BoardModel<TColumn, TItem>;\n};\n\nconst [BoardContextProvider, useBoardContext] = createContext<BoardContextValue>(BOARD_NAME);\n\n/** Hook to read the board model from context (e.g. in custom column tiles). Pass TColumn and TItem for typed model. */\nfunction useBoard<TColumn = any, TItem = any>(displayName?: string): BoardContextValue<TColumn, TItem> {\n return useBoardContext(displayName ?? BOARD_NAME) as BoardContextValue<TColumn, TItem>;\n}\n\n//\n// Root\n//\n\nconst BOARD_ROOT_NAME = 'Board.Root';\n\ntype BoardRootProps<TColumn = any, TItem = any> = PropsWithChildren<BoardContextValue<TColumn, TItem>>;\n\nconst BoardRootInner = ({ model, children }: BoardRootProps) => {\n return <BoardContextProvider model={model}>{children}</BoardContextProvider>;\n};\n\nBoardRootInner.displayName = BOARD_ROOT_NAME;\n\nconst BoardRoot = BoardRootInner as <TColumn = any, TItem = any>(props: BoardRootProps<TColumn, TItem>) => ReactElement;\n\n//\n// Content\n//\n\nconst BOARD_CONTENT_NAME = 'Board.Content';\n\ntype BoardContentProps<TColumn = any> = ThemedClassName<{\n id: string;\n debug?: boolean;\n eventHandler?: MosaicEventHandler<TColumn>;\n Tile?: MosaicStackProps<TColumn>['Tile'];\n}>;\n\nconst BoardContentInner = composable<HTMLDivElement, BoardContentProps>(\n ({ id: _id, debug, eventHandler, Tile = DefaultBoardColumn, ...props }, forwardedRef) => {\n const { model } = useBoardContext(BOARD_CONTENT_NAME);\n const [DebugInfo, debugHandler] = useContainerDebug(debug);\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n\n const items = useAtomValue(model.columns);\n\n return (\n <div {...composableProps(props, { classNames: 'dx-container' })} ref={forwardedRef}>\n <Focus.Group asChild orientation='horizontal'>\n <Mosaic.Container\n asChild\n withFocus\n orientation='horizontal'\n autoScroll={viewport}\n eventHandler={eventHandler}\n debug={debugHandler}\n >\n <ScrollArea.Root orientation='horizontal' centered padding>\n <ScrollArea.Viewport classNames='snap-mandatory snap-x md:snap-none' ref={setViewport}>\n <Mosaic.Stack items={items} getId={model.getColumnId} Tile={Tile} debug={debug} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </Focus.Group>\n <DebugInfo />\n </div>\n );\n },\n);\n\nBoardContentInner.displayName = BOARD_CONTENT_NAME;\n\nconst BoardContent = BoardContentInner as <TColumn = any>(\n props: BoardContentProps<TColumn> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\n//\n// Placeholder\n//\n\nconst BOARD_PLACEHOLDER_NAME = 'Board.Placeholder';\n\nconst BoardPlaceholder = (props: MosaicPlaceholderProps<number>) => {\n return (\n <Mosaic.Placeholder {...props} classNames={mosaicStyles.placeholder.root}>\n <div\n className={mx('flex h-full border border-dashed border-separator rounded-xs', mosaicStyles.placeholder.content)}\n />\n </Mosaic.Placeholder>\n );\n};\n\nBoardPlaceholder.displayName = BOARD_PLACEHOLDER_NAME;\n\n//\n// Debug\n//\n\nconst BOARD_DEBUG_NAME = 'Board.Debug';\n\nexport const BoardDebug = forwardRef<HTMLDivElement, ThemedClassName>(({ classNames }, forwardedRef) => {\n const { containers, dragging } = useMosaic(BOARD_DEBUG_NAME);\n const counter = useRef(0);\n return (\n <Json.Data\n data={{ containers, dragging, count: counter.current++ }}\n classNames={mx('text-xs', classNames)}\n ref={forwardedRef}\n />\n );\n});\n\nBoardDebug.displayName = BOARD_DEBUG_NAME;\n\n//\n// Board\n//\n\nexport const Board = {\n Root: BoardRoot,\n Content: BoardContent,\n Column: BoardColumn,\n Item: BoardItem,\n Placeholder: BoardPlaceholder,\n Debug: BoardDebug,\n};\n\nexport { useBoard, useBoardColumn };\n\nexport type { BoardRootProps, BoardContentProps, BoardColumnProps, BoardItemProps };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, type ReactNode, forwardRef, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useMosaicContainer } from '../components';\n\nexport type UseContainerDebug = [FC<ThemedClassName>, (() => ReactNode) | undefined];\n\n/**\n * Hook that returns a component to be rendered in the container's viewport (within the context),\n * and a component that creates a portal in the container's debug area.\n */\nexport const useContainerDebug = (debug?: boolean): UseContainerDebug => {\n const debugRef = useRef<HTMLDivElement | null>(null);\n return useMemo(() => {\n if (!debug) {\n return [() => null, undefined];\n }\n\n return [\n ({ classNames }) => <div role='none' className={mx('overflow-hidden', classNames)} ref={debugRef} />,\n () => debugRef.current && createPortal(<ContainerInfo />, debugRef.current),\n ];\n }, [debug, debugRef]);\n};\n\nconst CONTAINER_INFO_NAME = 'ContainerInfo';\n\nconst ContainerInfo = forwardRef<HTMLDivElement, ThemedClassName>(({ classNames }, forwardedRef) => {\n const { id, state, activeLocation, scrolling } = useMosaicContainer(CONTAINER_INFO_NAME);\n const counter = useRef(0);\n return (\n <Json.Data\n data={{ id, activeLocation, scrolling, state, count: counter.current++ }}\n classNames={mx('text-xs', classNames)}\n ref={forwardedRef}\n />\n );\n});\n\nContainerInfo.displayName = CONTAINER_INFO_NAME;\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { arrayMove } from '@dxos/util';\n\nimport { type GetId, type MosaicEventHandler } from '../components';\n\nexport type UseEventHandlerProps<TItem = any, TObject extends Obj.Unknown = Obj.Unknown> = Pick<\n MosaicEventHandler<TItem>,\n 'id' | 'canDrop'\n> & {\n /**\n * The items to manage.\n */\n items: TItem[];\n\n /**\n * ID getter.\n */\n getId: GetId<TItem>;\n\n /**\n * Extracts the object from an item.\n */\n get: (item: TItem) => TObject;\n\n /**\n * Creates a new item from the dragged object.\n */\n make: (object: TObject) => TItem;\n\n /**\n * Optional change callback for wrapping mutations in Obj.change style.\n * When provided, all array mutations will be wrapped in this callback.\n * When not provided, mutations happen directly on the items array.\n */\n onChange?: (mutator: (items: TItem[]) => void) => void;\n};\n\n/**\n * Returns a handler for the given items.\n * NOTE: This supports arrays of objects, or arrays of refs to objects.\n */\nexport const useEventHandlerAdapter = <TItem = any, TObject extends Obj.Unknown = Obj.Unknown>({\n items,\n getId,\n get,\n make,\n onChange,\n ...props\n}: UseEventHandlerProps<TItem, TObject>): MosaicEventHandler<TItem> => {\n return useMemo<MosaicEventHandler<TItem>>(\n () => ({\n ...props,\n onTake: ({ source }, cb) => {\n log.info('onTake', { source });\n const mutate = (items: TItem[]) => {\n const from = items.findIndex((item) => getId(item) === source.id);\n if (from !== -1) {\n items.splice(from, 1);\n }\n };\n\n if (onChange) {\n onChange(mutate);\n } else {\n mutate(items);\n }\n\n void cb(source.data);\n },\n onDrop: ({ source, target }) => {\n log.info('onDrop', { source, target });\n\n const mutate = (items: TItem[]) => {\n const to =\n target?.type === 'tile' || target?.type === 'placeholder'\n ? target.location\n : target?.type === 'container'\n ? items.length\n : -1;\n const from = items.findIndex((item) => getId(item) === source.id);\n const insertIndex = typeof to === 'number' && to >= 0 ? Math.floor(to) : -1;\n if (insertIndex !== -1) {\n if (from !== -1) {\n arrayMove(items, from, insertIndex);\n } else {\n // TODO(burdon): This should be the responsibility of the source container.\n items.splice(insertIndex, 0, make(get(source.data)));\n }\n }\n };\n\n if (onChange) {\n onChange(mutate);\n } else {\n mutate(items);\n }\n },\n }),\n [items, onChange],\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Obj } from '@dxos/echo';\n\nimport { type GetId, type MosaicEventHandler } from '../components';\nimport { useEventHandlerAdapter } from './useEventHandlerAdapter';\n\n/**\n * Minimal model shape needed to build the default column handler.\n */\nexport type DefaultColumnEventHandlerModel<TColumn = unknown> = {\n getColumnId: GetId<TColumn>;\n isColumn: (obj: unknown) => obj is TColumn;\n};\n\n/**\n * Returns the default column drag/drop handler (no persistence).\n * Use this when no custom eventHandler is passed to Board.Content.\n */\nexport const useDefaultColumnEventHandler = <TColumn extends Obj.Unknown = Obj.Unknown>(\n id: string,\n model: DefaultColumnEventHandlerModel<TColumn>,\n items: TColumn[],\n): MosaicEventHandler<TColumn> =>\n useEventHandlerAdapter<TColumn, TColumn>({\n id,\n items,\n getId: model.getColumnId,\n get: (data) => data,\n make: (object) => object,\n canDrop: ({ source }) => model.isColumn(source.data),\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nexport type DropHandlerEvent = {\n text: string;\n url: string;\n};\n\nexport type DropHandlerOptions = {\n onDrop?: (view: EditorView, pos: number, event: DropHandlerEvent) => void;\n};\n\nexport type DropHandler = {\n extension: Extension;\n update: (position: { x: number; y: number } | null) => void;\n cancel: () => void;\n drop: (event: DropHandlerEvent) => void;\n};\n\nexport const dropHandler = ({ onDrop = handleDrop }: DropHandlerOptions = {}): DropHandler => {\n const views = new Set<EditorView>();\n let state: { view: EditorView; pos: number } | null = null;\n\n const reset = () => {\n views.forEach((view) => view.dispatch({ effects: setDrop.of(null) }));\n state = null;\n };\n\n const extension: Extension = [\n dropField,\n ViewPlugin.fromClass(\n class {\n constructor(readonly _view: EditorView) {\n views.add(_view);\n }\n\n destroy() {\n views.delete(this._view);\n }\n },\n ),\n ];\n\n return {\n extension,\n update: (position: { x: number; y: number } | null) => {\n if (!position) {\n reset();\n return;\n }\n\n views.forEach((view) => {\n const rect = view.dom.getBoundingClientRect();\n if (\n position.x >= rect.left &&\n position.x <= rect.right &&\n position.y >= rect.top &&\n position.y <= rect.bottom\n ) {\n let pos = view.posAtCoords(position);\n if (pos !== null) {\n const word = view.state.wordAt(pos);\n if (word) {\n const startDist = Math.abs(pos - word.from);\n const endDist = Math.abs(pos - word.to);\n pos = startDist < endDist ? word.from : word.to;\n }\n\n view.dispatch({ effects: setDrop.of(pos) });\n state = { view, pos };\n return;\n }\n }\n\n view.dispatch({ effects: setDrop.of(null) });\n });\n },\n cancel: () => {\n reset();\n },\n drop: ({ text, url }) => {\n if (state) {\n onDrop(state.view, state.pos, { text, url });\n }\n\n reset();\n },\n } satisfies DropHandler;\n};\n\nconst handleDrop = (view: EditorView, pos: number, event: DropHandlerEvent) => {\n const line = view.state.doc.lineAt(pos);\n if (line.text.trim() === '') {\n view.dispatch({\n changes: { from: pos, insert: `\\n![${event.text}](${event.url})\\n` },\n effects: setDrop.of(null),\n });\n } else {\n view.dispatch({\n changes: { from: pos, insert: ` [${event.text}](${event.url})` },\n effects: setDrop.of(null),\n });\n }\n};\n\nconst setDrop = StateEffect.define<number | null>();\n\nconst dropField = StateField.define<DecorationSet>({\n create: () => Decoration.none,\n update: (decorations, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(setDrop)) {\n if (effect.value === null) {\n return Decoration.none;\n }\n return Decoration.set([\n Decoration.widget({\n widget: new (class extends WidgetType {\n toDOM() {\n const dom = document.createElement('span');\n dom.className = 'cm-drop-cursor';\n dom.style.borderLeft = '2px solid var(--color-accent-surface)';\n dom.style.display = 'inline-block';\n dom.style.height = '1em';\n dom.style.verticalAlign = 'middle';\n return dom;\n }\n })(),\n side: 0,\n }).range(effect.value),\n ]);\n }\n }\n return decorations.map(tr.changes);\n },\n provide: (field) => EditorView.decorations.from(field),\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type PropsWithChildren,\n type ReactElement,\n type Ref as ReactRef,\n type RefObject,\n forwardRef,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { Obj, Ref } from '@dxos/echo';\nimport { useObject } from '@dxos/react-client/echo';\nimport { IconButton, ScrollArea, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Menu, createMenuAction } from '@dxos/react-ui-menu';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { useContainerDebug, useEventHandlerAdapter } from '../../hooks';\nimport { translationKey } from '../../translations';\nimport { Focus } from '../Focus';\nimport { Mosaic, type MosaicContainerProps, type MosaicStackProps, type MosaicTileProps } from '../Mosaic';\nimport { useBoard } from './Board';\nimport { BoardItem } from './Item';\n\n//\n// Column context\n//\n\nconst BOARD_COLUMN_CONTEXT_NAME = 'Board.Column';\n\nexport type BoardColumnContextValue<TColumn = unknown> = {\n column: TColumn;\n};\n\nconst [BoardColumnProvider, useBoardColumnContext] = createContext<BoardColumnContextValue | null>(\n BOARD_COLUMN_CONTEXT_NAME,\n null,\n);\n\n/** Returns the current column when rendered inside a board column (e.g., in column header or item tile). */\nexport function useBoardColumn<TColumn = unknown>(): TColumn | undefined {\n const value = useBoardColumnContext(BOARD_COLUMN_CONTEXT_NAME);\n return value?.column as TColumn | undefined;\n}\n\ntype BoardColumnProps<TColumn = any> = Pick<MosaicTileProps<TColumn>, 'classNames' | 'location' | 'data' | 'debug'>;\n\n//\n// Column Root\n//\n\nconst BOARD_COLUMN_ROOT_NAME = 'Board.Column.Root';\n\ntype BoardColumnRootProps<TColumn = any> = PropsWithChildren<BoardColumnProps<TColumn>> & {\n dragHandleRef?: RefObject<HTMLButtonElement | null>;\n};\n\nconst BoardColumnRootInner = composable<HTMLDivElement, BoardColumnRootProps>(\n ({ classNames, children, location, data, debug, dragHandleRef: dragHandleRefProp, ...rest }, forwardedRef) => {\n const { model } = useBoard(BOARD_COLUMN_ROOT_NAME);\n\n // TODO(burdon): Use merge ref hook (see react-hooks).\n const internalRef = useRef<HTMLButtonElement>(null);\n const dragHandleRef = dragHandleRefProp ?? internalRef;\n\n return (\n <Mosaic.Tile\n asChild\n location={location}\n id={model.getColumnId(data)}\n data={data}\n debug={debug}\n dragHandle={dragHandleRef.current}\n >\n <Focus.Group\n {...rest}\n data-testid='board-column'\n border\n classNames={mx(\n 'group/column',\n 'h-full w-full md:w-card-default-width snap-center bg-deck-surface',\n 'overflow-hidden',\n classNames,\n )}\n ref={forwardedRef}\n >\n <BoardColumnProvider column={data}>{children}</BoardColumnProvider>\n </Focus.Group>\n </Mosaic.Tile>\n );\n },\n);\n\nBoardColumnRootInner.displayName = BOARD_COLUMN_ROOT_NAME;\n\nconst BoardColumnRoot = BoardColumnRootInner as <TColumn = unknown>(\n props: BoardColumnRootProps<TColumn> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\n//\n// Column Header\n//\n\nconst BOARD_COLUMN_HEADER_NAME = 'Board.Column.Header';\n\ntype BoardColumnHeaderProps = { label: string; dragHandleRef: ReactRef<HTMLButtonElement> };\n\nconst BoardColumnHeader = composable<HTMLDivElement, BoardColumnHeaderProps>(\n ({ label, dragHandleRef, ...props }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { model } = useBoard(BOARD_COLUMN_HEADER_NAME);\n const column = useBoardColumn();\n const columnMenuItems = useMemo(\n () =>\n column != null && model.onColumnDelete\n ? [\n createMenuAction('delete-column', () => model.onColumnDelete?.(column), {\n label: t('delete-menu.label'),\n icon: 'ph--trash--regular',\n }),\n ]\n : [],\n [column, model.onColumnDelete, t],\n );\n\n return (\n <Menu.Root>\n <Toolbar.Root {...composableProps(props)} data-testid='board-column-header' ref={forwardedRef}>\n <Toolbar.DragHandle ref={dragHandleRef} testId='mosaicBoard.columnDragHandle' />\n <Toolbar.Text data-testid='mosaicBoard.columnTitle'>{label}</Toolbar.Text>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!columnMenuItems?.length}>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('action-menu.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={columnMenuItems} />\n </Toolbar.Root>\n </Menu.Root>\n );\n },\n);\n\nBoardColumnHeader.displayName = BOARD_COLUMN_HEADER_NAME;\n\n//\n// Column Body\n//\n\nconst BOARD_COLUMN_BODY_NAME = 'Board.Column.Body';\n\ntype BoardColumnBodyProps = Pick<BoardColumnProps, 'data'> &\n Pick<MosaicContainerProps, 'eventHandler' | 'debug'> & {\n Tile?: MosaicStackProps<Obj.Unknown>['Tile'];\n };\n\nconst BoardColumnBody = composable<HTMLDivElement, BoardColumnBodyProps>(\n ({ data, eventHandler, Tile = BoardItem, debug, ...props }, forwardedRef) => {\n const { model } = useBoard(BOARD_COLUMN_BODY_NAME);\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n const items = useAtomValue(model.items(data));\n\n return (\n <Mosaic.Container\n {...composableProps(props)}\n asChild\n withFocus\n orientation='vertical'\n autoScroll={viewport}\n eventHandler={eventHandler}\n debug={debug}\n ref={forwardedRef}\n >\n <ScrollArea.Root orientation='vertical' thin centered padding>\n <ScrollArea.Viewport classNames='snap-y md:snap-none' ref={setViewport}>\n <Mosaic.Stack items={items} getId={model.getItemId} Tile={Tile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n );\n },\n);\n\nBoardColumnBody.displayName = BOARD_COLUMN_BODY_NAME;\n\n//\n// Column Footer\n//\n\nconst BOARD_COLUMN_FOOTER_NAME = 'Board.Column.Footer';\n\ntype BoardColumnFooterProps = ThemedClassName & {\n data?: any;\n onAdd?: () => void;\n};\n\nconst BoardColumnFooter = forwardRef<HTMLDivElement, BoardColumnFooterProps>(\n ({ classNames, data, onAdd }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { model } = useBoard(BOARD_COLUMN_FOOTER_NAME);\n\n const handleAdd = onAdd ?? (model.onItemCreate && data ? () => void model.onItemCreate?.(data) : undefined);\n\n return (\n <Toolbar.Root classNames={mx('rounded-b-sm border-t border-separator', classNames)} ref={forwardedRef}>\n {handleAdd && (\n <IconButton\n data-testid='board-column-add-item'\n classNames='group-hover/column:opacity-100 md:opacity-0 transition transition-opacity duration-500'\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label={t('add-item.label')}\n onClick={handleAdd}\n />\n )}\n </Toolbar.Root>\n );\n },\n);\n\nBoardColumnFooter.displayName = BOARD_COLUMN_FOOTER_NAME;\n\n//\n// DefaultBoardColumn\n//\n\nconst BOARD_DEFAULT_COLUMN_NAME = 'Board.DefaultColumn';\n\ntype DefaultBoardColumnProps = BoardColumnProps & Pick<BoardColumnBodyProps, 'Tile'>;\n\nconst DefaultBoardColumn = forwardRef<HTMLDivElement, DefaultBoardColumnProps>(\n ({ classNames, location, data, debug, Tile = BoardItem }, forwardedRef) => {\n const { model } = useBoard(BOARD_DEFAULT_COLUMN_NAME);\n const [DebugInfo, debugHandler] = useContainerDebug(debug);\n const dragHandleRef = useRef<HTMLButtonElement>(null);\n const [column, updateColumn] = useObject(data);\n\n const eventHandler = useEventHandlerAdapter<Ref.Unknown>({\n id: model.getColumnId(data),\n items: column?.items ?? [],\n getId: (ref) => ref.target?.id ?? ref.dxn.toString(),\n get: (refOrObj) => (Ref.isRef(refOrObj) ? refOrObj.target! : refOrObj),\n make: (object) => Ref.make(object),\n canDrop: ({ source }) => {\n const item = Ref.isRef(source.data) ? source.data.target : source.data;\n return item != null && Obj.isObject(item) && model.isItem(item);\n },\n onChange: (mutator) => updateColumn((col) => mutator(col.items)),\n });\n\n return (\n <BoardColumnRootInner\n classNames={mx(\n 'group/column grid',\n debug\n ? 'grid-rows-[var(--dx-rail-action)_1fr_20rem]'\n : 'grid-rows-[var(--dx-rail-action)_1fr_var(--dx-rail-action)]',\n classNames,\n )}\n location={location}\n data={data}\n dragHandleRef={dragHandleRef}\n ref={forwardedRef}\n >\n <BoardColumnHeader label={Obj.getLabel(data) ?? data.id} dragHandleRef={dragHandleRef} />\n <BoardColumnBody data={data} eventHandler={eventHandler} debug={debugHandler} Tile={Tile} />\n <div role='none' className='flex flex-col col-span-full'>\n <BoardColumnFooter data={data} />\n <DebugInfo />\n </div>\n </BoardColumnRootInner>\n );\n },\n);\n\nDefaultBoardColumn.displayName = BOARD_DEFAULT_COLUMN_NAME;\n\n//\n// BoardColumn\n//\n\nexport const BoardColumn = {\n Root: BoardColumnRoot,\n Header: BoardColumnHeader,\n Body: BoardColumnBody,\n Footer: BoardColumnFooter,\n};\n\nexport { DefaultBoardColumn };\n\nexport { type BoardColumnProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = '@dxos/react-ui-mosaic';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'action-menu.label': 'Actions',\n 'add-item.label': 'Add item',\n 'delete-menu.label': 'Delete',\n },\n },\n },\n] as const satisfies Resource[];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, { type ReactElement, type Ref as ReactRef, forwardRef, useMemo, useRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Card, Tag, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Menu, createMenuAction } from '@dxos/react-ui-menu';\nimport { getHashStyles } from '@dxos/ui-theme';\n\nimport { translationKey } from '../../translations';\nimport { Focus } from '../Focus';\nimport { Mosaic, type MosaicTileProps } from '../Mosaic';\nimport { useBoard } from './Board';\nimport { useBoardColumn } from './Column';\n\nconst BOARD_ITEM_NAME = 'Board.Item';\n\ntype BoardItemProps<TItem extends Obj.Unknown = any> = Pick<\n MosaicTileProps<TItem>,\n 'classNames' | 'location' | 'data' | 'debug'\n>;\n\nconst BoardItemInner = forwardRef<HTMLDivElement, BoardItemProps>(\n ({ classNames, data, location, debug }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs<HTMLDivElement>(rootRef, forwardedRef);\n const dragHandleRef = useRef<HTMLButtonElement>(null);\n\n const { model } = useBoard(BOARD_ITEM_NAME);\n const column = useBoardColumn();\n const items = useMemo(\n () =>\n column != null && model.onItemDelete\n ? [\n createMenuAction('delete-item', () => model.onItemDelete?.(column, data), {\n label: t('delete-menu.label'),\n icon: 'ph--trash--regular',\n }),\n ]\n : [],\n [column, data, model.onItemDelete, t],\n );\n\n if (!data) {\n return null;\n }\n\n const label = Obj.getLabel(data);\n const description = Obj.getDescription(data);\n\n return (\n <Menu.Root>\n <Mosaic.Tile\n ref={rootRef}\n asChild\n dragHandle={dragHandleRef.current}\n id={data.id}\n data={data}\n location={location}\n debug={debug}\n >\n <Focus.Item asChild>\n <Card.Root\n classNames={classNames}\n data-testid='board-item'\n ref={composedRef}\n onClick={(event) => event.currentTarget.focus()}\n >\n <Card.Toolbar>\n <Card.DragHandle ref={dragHandleRef} testId='mosaicBoard.cardDragHandle' />\n <Card.Title data-testid='mosaicBoard.cardTitle'>{label}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!items?.length}>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('action-menu.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={items} />\n </Card.Toolbar>\n {/* TODO(burdon): Replace with surface. */}\n <Card.Row icon='ph--note--regular' classNames='text-description'>\n <Card.Text>{description}</Card.Text>\n </Card.Row>\n <Card.Row icon='ph--tag--regular'>\n {label && (\n <div role='none' className='shrink-0 flex gap-1 items-center text-xs'>\n <Tag palette={getHashStyles(label).hue}>{label}</Tag>\n </div>\n )}\n </Card.Row>\n </Card.Root>\n </Focus.Item>\n </Mosaic.Tile>\n </Menu.Root>\n );\n },\n);\n\nBoardItemInner.displayName = BOARD_ITEM_NAME;\n\n/**\n * Default board tile.\n */\nconst BoardItem = BoardItemInner as <TItem extends Obj.Unknown = any>(\n props: BoardItemProps<TItem> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\nexport { BoardItem, type BoardItemProps };\n"],
5
- "mappings": "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",
6
- "names": ["useAtomValue", "createContext", "React", "forwardRef", "useRef", "useState", "ScrollArea", "Json", "composable", "composableProps", "mx", "React", "forwardRef", "useMemo", "useRef", "createPortal", "Json", "mx", "useContainerDebug", "debug", "debugRef", "useRef", "useMemo", "undefined", "classNames", "div", "role", "className", "mx", "ref", "current", "createPortal", "ContainerInfo", "CONTAINER_INFO_NAME", "forwardRef", "forwardedRef", "id", "state", "activeLocation", "scrolling", "useMosaicContainer", "counter", "Json", "Data", "data", "count", "displayName", "useMemo", "log", "arrayMove", "useEventHandlerAdapter", "items", "getId", "get", "make", "onChange", "props", "onTake", "source", "cb", "info", "mutate", "from", "findIndex", "item", "id", "splice", "data", "onDrop", "target", "to", "type", "location", "length", "insertIndex", "Math", "floor", "useDefaultColumnEventHandler", "id", "model", "items", "useEventHandlerAdapter", "getId", "getColumnId", "get", "data", "make", "object", "canDrop", "source", "isColumn", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "dropHandler", "onDrop", "handleDrop", "views", "Set", "state", "reset", "forEach", "view", "dispatch", "effects", "setDrop", "of", "extension", "dropField", "ViewPlugin", "fromClass", "_view", "add", "destroy", "delete", "update", "position", "rect", "dom", "getBoundingClientRect", "x", "left", "right", "y", "top", "bottom", "pos", "posAtCoords", "word", "wordAt", "startDist", "Math", "abs", "from", "endDist", "to", "cancel", "drop", "text", "url", "event", "line", "doc", "lineAt", "trim", "changes", "insert", "StateEffect", "define", "StateField", "create", "Decoration", "none", "decorations", "tr", "effect", "is", "value", "set", "widget", "WidgetType", "toDOM", "document", "createElement", "className", "style", "borderLeft", "display", "height", "verticalAlign", "side", "range", "map", "provide", "field", "EditorView", "useAtomValue", "createContext", "React", "forwardRef", "useMemo", "useRef", "useState", "Obj", "Ref", "useObject", "IconButton", "ScrollArea", "Toolbar", "useTranslation", "Menu", "createMenuAction", "composable", "composableProps", "mx", "translationKey", "translations", "useComposedRefs", "React", "forwardRef", "useMemo", "useRef", "Obj", "Card", "Tag", "Toolbar", "useTranslation", "Menu", "createMenuAction", "getHashStyles", "BOARD_ITEM_NAME", "BoardItemInner", "forwardRef", "classNames", "data", "location", "debug", "forwardedRef", "t", "useTranslation", "translationKey", "rootRef", "useRef", "composedRef", "useComposedRefs", "dragHandleRef", "model", "useBoard", "column", "useBoardColumn", "items", "useMemo", "onItemDelete", "createMenuAction", "label", "icon", "Obj", "getLabel", "description", "getDescription", "React", "Menu", "Root", "Mosaic", "Tile", "ref", "asChild", "dragHandle", "current", "id", "Focus", "Item", "Card", "data-testid", "onClick", "event", "currentTarget", "focus", "Toolbar", "DragHandle", "testId", "Title", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "Content", "Row", "Text", "div", "role", "className", "Tag", "palette", "getHashStyles", "hue", "displayName", "BoardItem", "BOARD_COLUMN_CONTEXT_NAME", "BoardColumnProvider", "useBoardColumnContext", "createContext", "useBoardColumn", "value", "column", "BOARD_COLUMN_ROOT_NAME", "BoardColumnRootInner", "composable", "classNames", "children", "location", "data", "debug", "dragHandleRef", "dragHandleRefProp", "rest", "forwardedRef", "model", "useBoard", "internalRef", "useRef", "React", "Mosaic", "Tile", "asChild", "id", "getColumnId", "dragHandle", "current", "Focus", "Group", "data-testid", "border", "mx", "ref", "displayName", "BoardColumnRoot", "BOARD_COLUMN_HEADER_NAME", "BoardColumnHeader", "label", "props", "t", "useTranslation", "translationKey", "columnMenuItems", "useMemo", "onColumnDelete", "createMenuAction", "icon", "Menu", "Root", "Toolbar", "composableProps", "DragHandle", "testId", "Text", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "Content", "items", "BOARD_COLUMN_BODY_NAME", "BoardColumnBody", "eventHandler", "BoardItem", "viewport", "setViewport", "useState", "useAtomValue", "Container", "withFocus", "orientation", "autoScroll", "ScrollArea", "thin", "centered", "padding", "Viewport", "Stack", "getId", "getItemId", "BOARD_COLUMN_FOOTER_NAME", "BoardColumnFooter", "forwardRef", "onAdd", "handleAdd", "onItemCreate", "undefined", "onClick", "BOARD_DEFAULT_COLUMN_NAME", "DefaultBoardColumn", "DebugInfo", "debugHandler", "useContainerDebug", "updateColumn", "useObject", "useEventHandlerAdapter", "target", "dxn", "toString", "get", "refOrObj", "Ref", "isRef", "make", "object", "canDrop", "source", "item", "Obj", "isObject", "isItem", "onChange", "mutator", "col", "getLabel", "div", "role", "className", "BoardColumn", "Header", "Body", "Footer", "BOARD_NAME", "BoardContextProvider", "useBoardContext", "createContext", "useBoard", "displayName", "BOARD_ROOT_NAME", "BoardRootInner", "model", "children", "React", "BoardRoot", "BOARD_CONTENT_NAME", "BoardContentInner", "composable", "id", "_id", "debug", "eventHandler", "Tile", "DefaultBoardColumn", "props", "forwardedRef", "DebugInfo", "debugHandler", "useContainerDebug", "viewport", "setViewport", "useState", "items", "useAtomValue", "columns", "div", "composableProps", "classNames", "ref", "Focus", "Group", "asChild", "orientation", "Mosaic", "Container", "withFocus", "autoScroll", "ScrollArea", "Root", "centered", "padding", "Viewport", "Stack", "getId", "getColumnId", "BoardContent", "BOARD_PLACEHOLDER_NAME", "BoardPlaceholder", "Placeholder", "mosaicStyles", "placeholder", "root", "className", "mx", "content", "BOARD_DEBUG_NAME", "BoardDebug", "forwardRef", "containers", "dragging", "useMosaic", "counter", "useRef", "Json", "Data", "data", "count", "current", "Board", "Content", "Column", "BoardColumn", "Item", "BoardItem", "Debug"]
3
+ "sources": ["../../../src/components/Board/Board.tsx", "../../../src/hooks/useContainerDebug.tsx", "../../../src/hooks/useEventHandlerAdapter.ts", "../../../src/hooks/useDefaultColumnEventHandler.ts", "../../../src/components/Mosaic/extension.ts", "../../../src/components/Board/Column.tsx", "../../../src/components/Board/Item.tsx", "../../../src/components/SearchStack/SearchStack.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type PropsWithChildren,\n type ReactElement,\n type Ref as ReactRef,\n forwardRef,\n useRef,\n useState,\n} from 'react';\n\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useContainerDebug } from '../../hooks';\nimport { Focus } from '../Focus';\nimport {\n type GetId,\n Mosaic,\n type MosaicEventHandler,\n type MosaicPlaceholderProps,\n type MosaicStackProps,\n mosaicStyles,\n useMosaic,\n} from '../Mosaic';\nimport { BoardColumn, type BoardColumnProps, DefaultBoardColumn, useBoardColumn } from './Column';\nimport { BoardItem, type BoardItemProps } from './Item';\n\n//\n// Model\n//\n\nexport interface BoardModel<TColumn = any, TItem = any> {\n getColumnId: GetId<TColumn>;\n getItemId: GetId<TItem>;\n isColumn: (obj: unknown) => obj is TColumn;\n isItem: (obj: unknown) => obj is TItem;\n columns: Atom.Atom<readonly TColumn[] | TColumn[]>;\n items: (column: TColumn) => Atom.Atom<TItem[]>;\n getColumns: () => TColumn[];\n getItems: (column: TColumn) => TItem[];\n onColumnCreate?: () => Promise<TColumn>;\n onColumnDelete?: (column: TColumn) => void;\n onItemCreate?: (column: TColumn) => Promise<TItem>;\n onItemDelete?: (column: TColumn, item: TItem) => void;\n}\n\n//\n// Context\n//\n\nconst BOARD_NAME = 'Board';\n\ntype BoardContextValue<TColumn = any, TItem = any> = {\n model: BoardModel<TColumn, TItem>;\n};\n\nconst [BoardContextProvider, useBoardContext] = createContext<BoardContextValue>(BOARD_NAME);\n\n/** Hook to read the board model from context (e.g. in custom column tiles). Pass TColumn and TItem for typed model. */\nfunction useBoard<TColumn = any, TItem = any>(displayName?: string): BoardContextValue<TColumn, TItem> {\n return useBoardContext(displayName ?? BOARD_NAME) as BoardContextValue<TColumn, TItem>;\n}\n\n//\n// Root\n//\n\nconst BOARD_ROOT_NAME = 'Board.Root';\n\ntype BoardRootProps<TColumn = any, TItem = any> = PropsWithChildren<BoardContextValue<TColumn, TItem>>;\n\nconst BoardRootInner = ({ model, children }: BoardRootProps) => {\n return <BoardContextProvider model={model}>{children}</BoardContextProvider>;\n};\n\nBoardRootInner.displayName = BOARD_ROOT_NAME;\n\nconst BoardRoot = BoardRootInner as <TColumn = any, TItem = any>(props: BoardRootProps<TColumn, TItem>) => ReactElement;\n\n//\n// Content\n//\n\nconst BOARD_CONTENT_NAME = 'Board.Content';\n\ntype BoardContentProps<TColumn = any> = ThemedClassName<{\n id: string;\n debug?: boolean;\n eventHandler?: MosaicEventHandler<TColumn>;\n Tile?: MosaicStackProps<TColumn>['Tile'];\n}>;\n\nconst BoardContentInner = composable<HTMLDivElement, BoardContentProps>(\n ({ id: _id, debug, eventHandler, Tile = DefaultBoardColumn, ...props }, forwardedRef) => {\n const { model } = useBoardContext(BOARD_CONTENT_NAME);\n const [DebugInfo, debugHandler] = useContainerDebug(debug);\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n\n const items = useAtomValue(model.columns);\n\n return (\n <div {...composableProps(props, { classNames: 'dx-container' })} ref={forwardedRef}>\n <Focus.Group asChild orientation='horizontal'>\n <Mosaic.Container\n asChild\n withFocus\n orientation='horizontal'\n autoScroll={viewport}\n eventHandler={eventHandler}\n debug={debugHandler}\n >\n <ScrollArea.Root orientation='horizontal' centered padding>\n <ScrollArea.Viewport classNames='snap-mandatory snap-x md:snap-none' ref={setViewport}>\n <Mosaic.Stack items={items} getId={model.getColumnId} Tile={Tile} debug={debug} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </Focus.Group>\n <DebugInfo />\n </div>\n );\n },\n);\n\nBoardContentInner.displayName = BOARD_CONTENT_NAME;\n\nconst BoardContent = BoardContentInner as <TColumn = any>(\n props: BoardContentProps<TColumn> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\n//\n// Placeholder\n//\n\nconst BOARD_PLACEHOLDER_NAME = 'Board.Placeholder';\n\nconst BoardPlaceholder = (props: MosaicPlaceholderProps<number>) => {\n return (\n <Mosaic.Placeholder {...props} classNames={mosaicStyles.placeholder.root}>\n <div\n className={mx('flex h-full border border-dashed border-separator rounded-xs', mosaicStyles.placeholder.content)}\n />\n </Mosaic.Placeholder>\n );\n};\n\nBoardPlaceholder.displayName = BOARD_PLACEHOLDER_NAME;\n\n//\n// Debug\n//\n\nconst BOARD_DEBUG_NAME = 'Board.Debug';\n\nexport const BoardDebug = forwardRef<HTMLDivElement, ThemedClassName>(({ classNames }, forwardedRef) => {\n const { containers, dragging } = useMosaic(BOARD_DEBUG_NAME);\n const counter = useRef(0);\n return (\n <JsonHighlighter\n data={{ containers, dragging, count: counter.current++ }}\n classNames={mx('text-xs', classNames)}\n ref={forwardedRef}\n />\n );\n});\n\nBoardDebug.displayName = BOARD_DEBUG_NAME;\n\n//\n// Board\n//\n\nexport const Board = {\n Root: BoardRoot,\n Content: BoardContent,\n Column: BoardColumn,\n Item: BoardItem,\n Placeholder: BoardPlaceholder,\n Debug: BoardDebug,\n};\n\nexport { useBoard, useBoardColumn };\n\nexport type { BoardRootProps, BoardContentProps, BoardColumnProps, BoardItemProps };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, type ReactNode, forwardRef, useMemo, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useMosaicContainer } from '../components';\n\nexport type UseContainerDebug = [FC<ThemedClassName>, (() => ReactNode) | undefined];\n\n/**\n * Hook that returns a component to be rendered in the container's viewport (within the context),\n * and a component that creates a portal in the container's debug area.\n */\nexport const useContainerDebug = (debug?: boolean): UseContainerDebug => {\n const debugRef = useRef<HTMLDivElement | null>(null);\n return useMemo(() => {\n if (!debug) {\n return [() => null, undefined];\n }\n\n return [\n ({ classNames }) => <div className={mx('overflow-hidden', classNames)} ref={debugRef} />,\n () => debugRef.current && createPortal(<ContainerInfo />, debugRef.current),\n ];\n }, [debug, debugRef]);\n};\n\nconst CONTAINER_INFO_NAME = 'ContainerInfo';\n\nconst ContainerInfo = forwardRef<HTMLDivElement, ThemedClassName>(({ classNames }, forwardedRef) => {\n const { id, state, activeLocation, scrolling } = useMosaicContainer(CONTAINER_INFO_NAME);\n const counter = useRef(0);\n return (\n <JsonHighlighter\n data={{ id, activeLocation, scrolling, state, count: counter.current++ }}\n classNames={mx('text-xs', classNames)}\n ref={forwardedRef}\n />\n );\n});\n\nContainerInfo.displayName = CONTAINER_INFO_NAME;\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { arrayMove } from '@dxos/util';\n\nimport { type GetId, type MosaicEventHandler } from '../components';\n\nexport type UseEventHandlerProps<TItem = any, TObject extends Obj.Unknown = Obj.Unknown> = Pick<\n MosaicEventHandler<TItem>,\n 'id' | 'canDrop'\n> & {\n /**\n * The items to manage.\n */\n items: TItem[];\n\n /**\n * ID getter.\n */\n getId: GetId<TItem>;\n\n /**\n * Extracts the object from an item.\n */\n get: (item: TItem) => TObject;\n\n /**\n * Creates a new item from the dragged object.\n */\n make: (object: TObject) => TItem;\n\n /**\n * Optional change callback for wrapping mutations in Obj.update style.\n * When provided, all array mutations will be wrapped in this callback.\n * When not provided, mutations happen directly on the items array.\n */\n onChange?: (mutator: (items: TItem[]) => void) => void;\n};\n\n/**\n * Returns a handler for the given items.\n * NOTE: This supports arrays of objects, or arrays of refs to objects.\n */\nexport const useEventHandlerAdapter = <TItem = any, TObject extends Obj.Unknown = Obj.Unknown>({\n items,\n getId,\n get,\n make,\n onChange,\n ...props\n}: UseEventHandlerProps<TItem, TObject>): MosaicEventHandler<TItem> => {\n return useMemo<MosaicEventHandler<TItem>>(\n () => ({\n ...props,\n onTake: ({ source }, cb) => {\n log.info('onTake', { source });\n const mutate = (items: TItem[]) => {\n const from = items.findIndex((item) => getId(item) === source.id);\n if (from !== -1) {\n items.splice(from, 1);\n }\n };\n\n if (onChange) {\n onChange(mutate);\n } else {\n mutate(items);\n }\n\n void cb(source.data);\n },\n onDrop: ({ source, target }) => {\n log.info('onDrop', { source, target });\n\n const mutate = (items: TItem[]) => {\n const to =\n target?.type === 'tile' || target?.type === 'placeholder'\n ? target.location\n : target?.type === 'container'\n ? items.length\n : -1;\n const from = items.findIndex((item) => getId(item) === source.id);\n const insertIndex = typeof to === 'number' && to >= 0 ? Math.floor(to) : -1;\n if (insertIndex !== -1) {\n if (from !== -1) {\n arrayMove(items, from, insertIndex);\n } else {\n // TODO(burdon): This should be the responsibility of the source container.\n items.splice(insertIndex, 0, make(get(source.data)));\n }\n }\n };\n\n if (onChange) {\n onChange(mutate);\n } else {\n mutate(items);\n }\n },\n }),\n [items, onChange],\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Obj } from '@dxos/echo';\n\nimport { type GetId, type MosaicEventHandler } from '../components';\nimport { useEventHandlerAdapter } from './useEventHandlerAdapter';\n\n/**\n * Minimal model shape needed to build the default column handler.\n */\nexport type DefaultColumnEventHandlerModel<TColumn = unknown> = {\n getColumnId: GetId<TColumn>;\n isColumn: (obj: unknown) => obj is TColumn;\n};\n\n/**\n * Returns the default column drag/drop handler (no persistence).\n * Use this when no custom eventHandler is passed to Board.Content.\n */\nexport const useDefaultColumnEventHandler = <TColumn extends Obj.Unknown = Obj.Unknown>(\n id: string,\n model: DefaultColumnEventHandlerModel<TColumn>,\n items: TColumn[],\n): MosaicEventHandler<TColumn> =>\n useEventHandlerAdapter<TColumn, TColumn>({\n id,\n items,\n getId: model.getColumnId,\n get: (data) => data,\n make: (object) => object,\n canDrop: ({ source }) => model.isColumn(source.data),\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nexport type DropHandlerEvent = {\n text: string;\n url: string;\n};\n\nexport type DropHandlerOptions = {\n onDrop?: (view: EditorView, pos: number, event: DropHandlerEvent) => void;\n};\n\nexport type DropHandler = {\n extension: Extension;\n update: (position: { x: number; y: number } | null) => void;\n cancel: () => void;\n drop: (event: DropHandlerEvent) => void;\n};\n\nexport const dropHandler = ({ onDrop = handleDrop }: DropHandlerOptions = {}): DropHandler => {\n const views = new Set<EditorView>();\n let state: { view: EditorView; pos: number } | null = null;\n\n const reset = () => {\n views.forEach((view) => view.dispatch({ effects: setDrop.of(null) }));\n state = null;\n };\n\n const extension: Extension = [\n dropField,\n ViewPlugin.fromClass(\n class {\n constructor(readonly _view: EditorView) {\n views.add(_view);\n }\n\n destroy() {\n views.delete(this._view);\n }\n },\n ),\n ];\n\n return {\n extension,\n update: (position: { x: number; y: number } | null) => {\n if (!position) {\n reset();\n return;\n }\n\n views.forEach((view) => {\n const rect = view.dom.getBoundingClientRect();\n if (\n position.x >= rect.left &&\n position.x <= rect.right &&\n position.y >= rect.top &&\n position.y <= rect.bottom\n ) {\n let pos = view.posAtCoords(position);\n if (pos !== null) {\n const word = view.state.wordAt(pos);\n if (word) {\n const startDist = Math.abs(pos - word.from);\n const endDist = Math.abs(pos - word.to);\n pos = startDist < endDist ? word.from : word.to;\n }\n\n view.dispatch({ effects: setDrop.of(pos) });\n state = { view, pos };\n return;\n }\n }\n\n view.dispatch({ effects: setDrop.of(null) });\n });\n },\n cancel: () => {\n reset();\n },\n drop: ({ text, url }) => {\n if (state) {\n onDrop(state.view, state.pos, { text, url });\n }\n\n reset();\n },\n } satisfies DropHandler;\n};\n\nconst handleDrop = (view: EditorView, pos: number, event: DropHandlerEvent) => {\n const line = view.state.doc.lineAt(pos);\n if (line.text.trim() === '') {\n view.dispatch({\n changes: { from: pos, insert: `\\n![${event.text}](${event.url})\\n` },\n effects: setDrop.of(null),\n });\n } else {\n view.dispatch({\n changes: { from: pos, insert: ` [${event.text}](${event.url})` },\n effects: setDrop.of(null),\n });\n }\n};\n\nconst setDrop = StateEffect.define<number | null>();\n\nconst dropField = StateField.define<DecorationSet>({\n create: () => Decoration.none,\n update: (decorations, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(setDrop)) {\n if (effect.value === null) {\n return Decoration.none;\n }\n return Decoration.set([\n Decoration.widget({\n widget: new (class extends WidgetType {\n toDOM() {\n const dom = document.createElement('span');\n dom.className = 'cm-drop-cursor';\n dom.style.borderLeft = '2px solid var(--color-accent-bg)';\n dom.style.display = 'inline-block';\n dom.style.height = '1em';\n dom.style.verticalAlign = 'middle';\n return dom;\n }\n })(),\n side: 0,\n }).range(effect.value),\n ]);\n }\n }\n return decorations.map(tr.changes);\n },\n provide: (field) => EditorView.decorations.from(field),\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type PropsWithChildren,\n type ReactElement,\n type Ref as ReactRef,\n forwardRef,\n useMemo,\n useState,\n} from 'react';\n\nimport { Obj, Ref } from '@dxos/echo';\nimport { useObject } from '@dxos/react-client/echo';\nimport { IconButton, ScrollArea, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { Menu, createMenuAction } from '@dxos/react-ui-menu';\nimport { mx } from '@dxos/ui-theme';\n\nimport { translationKey } from '#translations';\n\nimport { useContainerDebug, useEventHandlerAdapter } from '../../hooks';\nimport { Focus } from '../Focus';\nimport { Mosaic, type MosaicContainerProps, type MosaicStackProps, type MosaicTileProps } from '../Mosaic';\nimport { useBoard } from './Board';\nimport { BoardItem } from './Item';\n\n//\n// Column context\n//\n\nconst BOARD_COLUMN_CONTEXT_NAME = 'Board.Column';\n\nexport type BoardColumnContextValue<TColumn = unknown> = {\n column: TColumn;\n};\n\nconst [BoardColumnProvider, useBoardColumnContext] = createContext<BoardColumnContextValue | null>(\n BOARD_COLUMN_CONTEXT_NAME,\n null,\n);\n\n/** Returns the current column when rendered inside a board column (e.g., in column header or item tile). */\nexport function useBoardColumn<TColumn = unknown>(): TColumn | undefined {\n const value = useBoardColumnContext(BOARD_COLUMN_CONTEXT_NAME);\n return value?.column as TColumn | undefined;\n}\n\ntype BoardColumnProps<TColumn = any> = Pick<\n MosaicTileProps<TColumn>,\n 'classNames' | 'location' | 'data' | 'debug' | 'draggable'\n>;\n\n//\n// Column Root\n//\n\nconst BOARD_COLUMN_ROOT_NAME = 'Board.Column.Root';\n\ntype BoardColumnRootProps<TColumn = any> = PropsWithChildren<BoardColumnProps<TColumn>> & {\n // Pass the actual button element (not a ref). Refs don't trigger re-renders, so reading\n // `ref.current` at render time leaves Mosaic.Tile's `dragHandle` prop null forever.\n // Consumers should track this with `useState` and a callback ref on `Board.Column.Header`.\n dragHandle?: HTMLButtonElement | null;\n};\n\nconst BoardColumnRootInner = composable<HTMLDivElement, BoardColumnRootProps>(\n ({ classNames, children, location, data, debug, draggable, dragHandle, ...rest }, forwardedRef) => {\n const { model } = useBoard(BOARD_COLUMN_ROOT_NAME);\n\n return (\n <Mosaic.Tile\n asChild\n location={location}\n id={model.getColumnId(data)}\n data={data}\n debug={debug}\n draggable={draggable}\n dragHandle={dragHandle}\n >\n <Focus.Group\n {...rest}\n data-testid='board-column'\n border\n classNames={mx(\n 'group/column',\n 'h-full w-full md:w-card-default-width snap-center bg-deck-surface',\n 'overflow-hidden',\n classNames,\n )}\n ref={forwardedRef}\n >\n <BoardColumnProvider column={data}>{children}</BoardColumnProvider>\n </Focus.Group>\n </Mosaic.Tile>\n );\n },\n);\n\nBoardColumnRootInner.displayName = BOARD_COLUMN_ROOT_NAME;\n\nconst BoardColumnRoot = BoardColumnRootInner as <TColumn = unknown>(\n props: BoardColumnRootProps<TColumn> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\n//\n// Column Header\n//\n\nconst BOARD_COLUMN_HEADER_NAME = 'Board.Column.Header';\n\ntype BoardColumnHeaderProps = { label: string; dragHandleRef: ReactRef<HTMLButtonElement> };\n\nconst BoardColumnHeader = composable<HTMLDivElement, BoardColumnHeaderProps>(\n ({ label, dragHandleRef, ...props }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { model } = useBoard(BOARD_COLUMN_HEADER_NAME);\n const column = useBoardColumn();\n const columnMenuItems = useMemo(\n () =>\n column != null && model.onColumnDelete\n ? [\n createMenuAction('delete-column', () => model.onColumnDelete?.(column), {\n label: t('delete-menu.label'),\n icon: 'ph--trash--regular',\n }),\n ]\n : [],\n [column, model.onColumnDelete, t],\n );\n\n return (\n <Menu.Root>\n <Toolbar.Root {...composableProps(props)} data-testid='board-column-header' ref={forwardedRef}>\n <Toolbar.DragHandle ref={dragHandleRef} testId='mosaicBoard.columnDragHandle' />\n <Toolbar.Text data-testid='mosaicBoard.columnTitle'>{label}</Toolbar.Text>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!columnMenuItems?.length}>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('action-menu.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={columnMenuItems} />\n </Toolbar.Root>\n </Menu.Root>\n );\n },\n);\n\nBoardColumnHeader.displayName = BOARD_COLUMN_HEADER_NAME;\n\n//\n// Column Body\n//\n\nconst BOARD_COLUMN_BODY_NAME = 'Board.Column.Body';\n\ntype BoardColumnBodyProps = Pick<BoardColumnProps, 'data'> &\n Pick<MosaicContainerProps, 'eventHandler' | 'debug'> & {\n Tile?: MosaicStackProps<Obj.Unknown>['Tile'];\n };\n\nconst BoardColumnBody = composable<HTMLDivElement, BoardColumnBodyProps>(\n ({ data, eventHandler, Tile = BoardItem, debug, ...props }, forwardedRef) => {\n const { model } = useBoard(BOARD_COLUMN_BODY_NAME);\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n const items = useAtomValue(model.items(data));\n\n return (\n <Mosaic.Container\n {...composableProps(props)}\n asChild\n withFocus\n orientation='vertical'\n autoScroll={viewport}\n eventHandler={eventHandler}\n debug={debug}\n ref={forwardedRef}\n >\n <ScrollArea.Root orientation='vertical' thin centered padding>\n <ScrollArea.Viewport classNames='snap-y md:snap-none' ref={setViewport}>\n <Mosaic.Stack items={items} getId={model.getItemId} Tile={Tile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n );\n },\n);\n\nBoardColumnBody.displayName = BOARD_COLUMN_BODY_NAME;\n\n//\n// Column Footer\n//\n\nconst BOARD_COLUMN_FOOTER_NAME = 'Board.Column.Footer';\n\ntype BoardColumnFooterProps = ThemedClassName & {\n data?: any;\n onAdd?: () => void;\n};\n\nconst BoardColumnFooter = forwardRef<HTMLDivElement, BoardColumnFooterProps>(\n ({ classNames, data, onAdd }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const { model } = useBoard(BOARD_COLUMN_FOOTER_NAME);\n\n const handleAdd = onAdd ?? (model.onItemCreate && data ? () => void model.onItemCreate?.(data) : undefined);\n\n return (\n <Toolbar.Root classNames={mx('rounded-b-sm border-t border-separator', classNames)} ref={forwardedRef}>\n {handleAdd && (\n <IconButton\n data-testid='board-column-add-item'\n classNames='group-hover/column:opacity-100 md:opacity-0 transition transition-opacity duration-500'\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label={t('add-item.label')}\n onClick={handleAdd}\n />\n )}\n </Toolbar.Root>\n );\n },\n);\n\nBoardColumnFooter.displayName = BOARD_COLUMN_FOOTER_NAME;\n\n//\n// DefaultBoardColumn\n//\n\nconst BOARD_DEFAULT_COLUMN_NAME = 'Board.DefaultColumn';\n\ntype DefaultBoardColumnProps = BoardColumnProps & Pick<BoardColumnBodyProps, 'Tile'>;\n\nconst DefaultBoardColumn = forwardRef<HTMLDivElement, DefaultBoardColumnProps>(\n ({ classNames, location, data, debug, draggable, Tile = BoardItem }, forwardedRef) => {\n const { model } = useBoard(BOARD_DEFAULT_COLUMN_NAME);\n const [DebugInfo, debugHandler] = useContainerDebug(debug);\n const [dragHandle, setDragHandle] = useState<HTMLButtonElement | null>(null);\n const [column, updateColumn] = useObject(data);\n\n const eventHandler = useEventHandlerAdapter<Ref.Unknown>({\n id: model.getColumnId(data),\n items: column?.items ?? [],\n getId: (ref) => ref.target?.id ?? ref.uri,\n get: (refOrObj) => (Ref.isRef(refOrObj) ? refOrObj.target! : refOrObj),\n make: (object) => Ref.make(object),\n canDrop: ({ source }) => {\n const item = Ref.isRef(source.data) ? source.data.target : source.data;\n return item != null && Obj.isObject(item) && model.isItem(item);\n },\n onChange: (mutator) => updateColumn((col) => mutator(col.items)),\n });\n\n return (\n <BoardColumnRootInner\n classNames={mx(\n 'group/column grid',\n debug\n ? 'grid-rows-[var(--dx-rail-action)_1fr_20rem]'\n : 'grid-rows-[var(--dx-rail-action)_1fr_var(--dx-rail-action)]',\n classNames,\n )}\n location={location}\n data={data}\n draggable={draggable}\n dragHandle={dragHandle}\n ref={forwardedRef}\n >\n <BoardColumnHeader label={Obj.getLabel(data) ?? data.id} dragHandleRef={setDragHandle} />\n <BoardColumnBody data={data} eventHandler={eventHandler} debug={debugHandler} Tile={Tile} />\n <div className='flex flex-col col-span-full'>\n <BoardColumnFooter data={data} />\n <DebugInfo />\n </div>\n </BoardColumnRootInner>\n );\n },\n);\n\nDefaultBoardColumn.displayName = BOARD_DEFAULT_COLUMN_NAME;\n\n//\n// BoardColumn\n//\n\nexport const BoardColumn = {\n Root: BoardColumnRoot,\n Header: BoardColumnHeader,\n Body: BoardColumnBody,\n Footer: BoardColumnFooter,\n};\n\nexport { DefaultBoardColumn };\n\nexport { type BoardColumnProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport React, { type ReactElement, type Ref as ReactRef, forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Card, Tag, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Menu, createMenuAction } from '@dxos/react-ui-menu';\nimport { getHashStyles } from '@dxos/ui-theme';\n\nimport { translationKey } from '#translations';\n\nimport { Focus } from '../Focus';\nimport { Mosaic, type MosaicTileProps } from '../Mosaic';\nimport { useBoard } from './Board';\nimport { useBoardColumn } from './Column';\n\nconst BOARD_ITEM_NAME = 'Board.Item';\n\ntype BoardItemProps<TItem extends Obj.Unknown = any> = Pick<\n MosaicTileProps<TItem>,\n 'classNames' | 'location' | 'data' | 'debug' | 'draggable'\n>;\n\nconst BoardItemInner = forwardRef<HTMLDivElement, BoardItemProps>(\n ({ classNames, data, location, debug, draggable }, forwardedRef) => {\n const { t } = useTranslation(translationKey);\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = useComposedRefs<HTMLDivElement>(rootRef, forwardedRef);\n // Use state (callback ref) so the dragHandle prop updates when the button mounts.\n // Refs don't trigger re-renders, so reading `.current` at render time leaves the prop null.\n const [dragHandle, setDragHandle] = useState<HTMLButtonElement | null>(null);\n\n const { model } = useBoard(BOARD_ITEM_NAME);\n const column = useBoardColumn();\n const items = useMemo(\n () =>\n column != null && model.onItemDelete\n ? [\n createMenuAction('delete-item', () => model.onItemDelete?.(column, data), {\n label: t('delete-menu.label'),\n icon: 'ph--trash--regular',\n }),\n ]\n : [],\n [column, data, model.onItemDelete, t],\n );\n\n if (!data) {\n return null;\n }\n\n const label = Obj.getLabel(data);\n const description = Obj.getDescription(data);\n\n return (\n <Menu.Root>\n <Mosaic.Tile\n ref={rootRef}\n asChild\n draggable={draggable}\n dragHandle={dragHandle}\n id={data.id}\n data={data}\n location={location}\n debug={debug}\n >\n <Focus.Item asChild>\n <Card.Root\n classNames={classNames}\n data-testid='board-item'\n ref={composedRef}\n onClick={(event) => event.currentTarget.focus()}\n >\n <Card.Header>\n <Card.DragHandle ref={setDragHandle} testId='mosaicBoard.cardDragHandle' />\n <Card.Title data-testid='mosaicBoard.cardTitle'>{label}</Card.Title>\n {/* TODO(wittjosiah): Reconcile with Card.Menu. */}\n <Menu.Trigger asChild disabled={!items?.length}>\n <Toolbar.IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('action-menu.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={items} />\n </Card.Header>\n {/* TODO(burdon): Replace with surface. */}\n <Card.Row icon='ph--note--regular' classNames='text-description'>\n <Card.Text>{description}</Card.Text>\n </Card.Row>\n <Card.Row icon='ph--tag--regular'>\n {label && (\n <div className='shrink-0 flex gap-1 items-center text-xs'>\n <Tag palette={getHashStyles(label).hue}>{label}</Tag>\n </div>\n )}\n </Card.Row>\n </Card.Root>\n </Focus.Item>\n </Mosaic.Tile>\n </Menu.Root>\n );\n },\n);\n\nBoardItemInner.displayName = BOARD_ITEM_NAME;\n\n/**\n * Default board tile.\n */\nconst BoardItem = BoardItemInner as <TItem extends Obj.Unknown = any>(\n props: BoardItemProps<TItem> & { ref?: ReactRef<HTMLDivElement> },\n) => ReactElement;\n\nexport { BoardItem, type BoardItemProps };\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { type KeyboardEvent, forwardRef, useCallback, useMemo, useState } from 'react';\n\nimport { Card, ScrollArea } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { type SearchResult } from '@dxos/react-ui-search';\n\nimport { Focus, Mosaic, type MosaicTileProps, useMosaicContainer } from '../..';\n\nexport type SearchStackAction = {\n type: 'select';\n resultId: string;\n};\n\nexport type SearchStackActionHandler = (action: SearchStackAction) => void;\n\n//\n// SearchStack\n//\n\nexport type SearchStackProps = {\n id: string;\n results?: SearchResult[];\n currentId?: string;\n onAction?: SearchStackActionHandler;\n};\n\n/**\n * Card-based search result stack component using mosaic layout.\n */\nexport const SearchStack = composable<HTMLDivElement, SearchStackProps>(\n ({ results = [], currentId, onAction, ...props }, forwardedRef) => {\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n const items = useMemo(() => results.map((result) => ({ result, onAction })), [results, onAction]);\n\n const handleCurrentChange = useCallback(\n (id: string | undefined) => {\n if (id) {\n onAction?.({ type: 'select', resultId: id });\n }\n },\n [onAction],\n );\n\n const handleKeyDown = useCallback((event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n (document.activeElement as HTMLElement | null)?.click();\n }\n }, []);\n\n return (\n <Focus.Group asChild {...composableProps(props)} onKeyDown={handleKeyDown} ref={forwardedRef}>\n <Mosaic.Container asChild withFocus currentId={currentId} onCurrentChange={handleCurrentChange}>\n <ScrollArea.Root orientation='vertical' padding centered thin>\n <ScrollArea.Viewport ref={setViewport}>\n <Mosaic.VirtualStack\n Tile={SearchTile}\n classNames='my-2'\n gap={8}\n items={items}\n draggable={false}\n getId={(item) => item.result.id}\n getScrollElement={() => viewport}\n estimateSize={() => 100}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </Focus.Group>\n );\n },\n);\n\nSearchStack.displayName = 'SearchStack';\n\n//\n// SearchTile\n//\n\ntype SearchTileData = {\n result: SearchResult;\n onAction?: SearchStackActionHandler;\n};\n\ntype SearchTileProps = Pick<MosaicTileProps<SearchTileData>, 'location' | 'data' | 'current'>;\n\n/**\n * Default search result tile with a simple Card header.\n */\nconst SearchTile = forwardRef<HTMLDivElement, SearchTileProps>(({ data, location, current }, forwardedRef) => {\n const { result } = data;\n const { setCurrentId } = useMosaicContainer('SearchTile');\n\n const handleCurrentChange = useCallback(() => {\n setCurrentId(result.id);\n }, [result.id, setCurrentId]);\n\n // Navigation / current pattern: clicking a result navigates to its\n // detail. `dx-current` pairs with the `aria-current` attribute that\n // `Mosaic.Tile` now sets from the `current` prop. `dx-selected`\n // (master/detail option pattern) would be the wrong grammar here.\n // See `ui-theme/src/css/components/selected.md`.\n return (\n <Mosaic.Tile\n asChild\n classNames='dx-hover dx-current'\n id={result.id}\n data={data}\n location={location}\n current={current}\n >\n <Focus.Item asChild current={current} onCurrentChange={handleCurrentChange}>\n <Card.Root fullWidth ref={forwardedRef}>\n <Card.Header>\n <Card.IconBlock />\n <Card.Title>{result.label}</Card.Title>\n </Card.Header>\n {result.snippet && (\n <Card.Body>\n <Card.Row>\n <Card.Text variant='description'>{result.snippet}</Card.Text>\n </Card.Row>\n </Card.Body>\n )}\n </Card.Root>\n </Focus.Item>\n </Mosaic.Tile>\n );\n});\n\nSearchTile.displayName = 'SearchTile';\n"],
5
+ "mappings": "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",
6
+ "names": ["useAtomValue", "createContext", "React", "forwardRef", "useRef", "useState", "ScrollArea", "composable", "composableProps", "JsonHighlighter", "mx", "React", "forwardRef", "useMemo", "useRef", "createPortal", "JsonHighlighter", "mx", "useContainerDebug", "debug", "debugRef", "useRef", "useMemo", "undefined", "classNames", "div", "className", "mx", "ref", "current", "createPortal", "ContainerInfo", "CONTAINER_INFO_NAME", "forwardRef", "forwardedRef", "id", "state", "activeLocation", "scrolling", "useMosaicContainer", "counter", "JsonHighlighter", "data", "count", "displayName", "useMemo", "log", "arrayMove", "props", "onTake", "source", "from", "findIndex", "item", "getId", "items", "splice", "onChange", "mutate", "data", "onDrop", "target", "to", "type", "insertIndex", "useDefaultColumnEventHandler", "id", "model", "items", "useEventHandlerAdapter", "getId", "getColumnId", "get", "data", "make", "object", "canDrop", "source", "isColumn", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "dropHandler", "onDrop", "handleDrop", "views", "Set", "state", "reset", "forEach", "view", "dispatch", "effects", "setDrop", "of", "extension", "dropField", "fromClass", "_view", "add", "destroy", "delete", "update", "position", "rect", "dom", "getBoundingClientRect", "x", "left", "right", "y", "top", "bottom", "pos", "posAtCoords", "word", "wordAt", "startDist", "Math", "abs", "from", "endDist", "to", "cancel", "drop", "text", "url", "event", "line", "doc", "lineAt", "trim", "changes", "insert", "define", "create", "none", "decorations", "tr", "effect", "is", "value", "set", "widget", "toDOM", "document", "createElement", "className", "style", "borderLeft", "display", "height", "verticalAlign", "side", "range", "map", "provide", "field", "useAtomValue", "createContext", "React", "forwardRef", "useMemo", "useState", "Obj", "Ref", "useObject", "IconButton", "ScrollArea", "Toolbar", "useTranslation", "composable", "composableProps", "Menu", "createMenuAction", "mx", "translationKey", "useComposedRefs", "React", "forwardRef", "useMemo", "useRef", "useState", "Obj", "Card", "Tag", "Toolbar", "useTranslation", "Menu", "createMenuAction", "getHashStyles", "translationKey", "BOARD_ITEM_NAME", "BoardItemInner", "forwardRef", "classNames", "data", "location", "debug", "draggable", "forwardedRef", "t", "useTranslation", "translationKey", "rootRef", "useRef", "composedRef", "useComposedRefs", "dragHandle", "setDragHandle", "useState", "model", "useBoard", "column", "useBoardColumn", "items", "useMemo", "onItemDelete", "createMenuAction", "label", "icon", "Obj", "getLabel", "description", "getDescription", "React", "Menu", "Root", "Mosaic", "Tile", "ref", "asChild", "id", "Focus", "Item", "Card", "data-testid", "onClick", "event", "currentTarget", "focus", "Header", "DragHandle", "testId", "Title", "Trigger", "disabled", "length", "Toolbar", "IconButton", "iconOnly", "variant", "Content", "Row", "Text", "div", "className", "Tag", "palette", "getHashStyles", "hue", "displayName", "BoardItem", "BOARD_COLUMN_CONTEXT_NAME", "BoardColumnProvider", "useBoardColumnContext", "createContext", "useBoardColumn", "value", "column", "BOARD_COLUMN_ROOT_NAME", "BoardColumnRootInner", "composable", "classNames", "children", "location", "data", "debug", "draggable", "dragHandle", "rest", "forwardedRef", "model", "useBoard", "React", "Mosaic", "Tile", "asChild", "id", "getColumnId", "Focus", "Group", "data-testid", "border", "mx", "ref", "displayName", "BoardColumnRoot", "BOARD_COLUMN_HEADER_NAME", "BoardColumnHeader", "label", "dragHandleRef", "props", "t", "useTranslation", "translationKey", "columnMenuItems", "useMemo", "onColumnDelete", "createMenuAction", "icon", "Menu", "Root", "Toolbar", "composableProps", "DragHandle", "testId", "Text", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "Content", "items", "BOARD_COLUMN_BODY_NAME", "BoardColumnBody", "eventHandler", "BoardItem", "viewport", "setViewport", "useState", "useAtomValue", "Container", "withFocus", "orientation", "autoScroll", "ScrollArea", "thin", "centered", "padding", "Viewport", "Stack", "getId", "getItemId", "BOARD_COLUMN_FOOTER_NAME", "BoardColumnFooter", "forwardRef", "onAdd", "handleAdd", "onItemCreate", "undefined", "onClick", "BOARD_DEFAULT_COLUMN_NAME", "DefaultBoardColumn", "DebugInfo", "debugHandler", "useContainerDebug", "setDragHandle", "updateColumn", "useObject", "useEventHandlerAdapter", "target", "uri", "get", "refOrObj", "Ref", "isRef", "make", "object", "canDrop", "source", "item", "Obj", "isObject", "isItem", "onChange", "mutator", "col", "getLabel", "div", "className", "BoardColumn", "Header", "Body", "Footer", "BOARD_NAME", "BoardContextProvider", "useBoardContext", "createContext", "useBoard", "displayName", "BOARD_ROOT_NAME", "BoardRootInner", "model", "children", "React", "BoardRoot", "BOARD_CONTENT_NAME", "BoardContentInner", "composable", "id", "_id", "debug", "eventHandler", "Tile", "DefaultBoardColumn", "props", "forwardedRef", "DebugInfo", "debugHandler", "useContainerDebug", "viewport", "setViewport", "useState", "items", "useAtomValue", "columns", "div", "composableProps", "classNames", "ref", "Focus", "Group", "asChild", "orientation", "Mosaic", "Container", "withFocus", "autoScroll", "ScrollArea", "Root", "centered", "padding", "Viewport", "Stack", "getId", "getColumnId", "BoardContent", "BOARD_PLACEHOLDER_NAME", "BoardPlaceholder", "Placeholder", "mosaicStyles", "placeholder", "root", "className", "mx", "content", "BOARD_DEBUG_NAME", "BoardDebug", "forwardRef", "containers", "dragging", "useMosaic", "counter", "useRef", "JsonHighlighter", "data", "count", "current", "Board", "Content", "Column", "BoardColumn", "Item", "BoardItem", "Debug", "React", "forwardRef", "useCallback", "useMemo", "useState", "Card", "ScrollArea", "composable", "composableProps", "SearchStack", "composable", "results", "currentId", "onAction", "props", "forwardedRef", "viewport", "setViewport", "useState", "items", "useMemo", "map", "result", "handleCurrentChange", "useCallback", "id", "type", "resultId", "handleKeyDown", "event", "key", "preventDefault", "document", "activeElement", "click", "React", "Focus", "Group", "asChild", "composableProps", "onKeyDown", "ref", "Mosaic", "Container", "withFocus", "onCurrentChange", "ScrollArea", "Root", "orientation", "padding", "centered", "thin", "Viewport", "VirtualStack", "Tile", "SearchTile", "classNames", "gap", "draggable", "getId", "item", "getScrollElement", "estimateSize", "displayName", "forwardRef", "data", "location", "current", "setCurrentId", "useMosaicContainer", "Item", "Card", "fullWidth", "Header", "IconBlock", "Title", "label", "snippet", "Body", "Row", "Text", "variant"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/hooks/useContainerDebug.tsx":{"bytes":5821,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/hooks/useEventHandlerAdapter.ts":{"bytes":8775,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useDefaultColumnEventHandler.ts":{"bytes":2788,"imports":[{"path":"src/hooks/useEventHandlerAdapter.ts","kind":"import-statement","original":"./useEventHandlerAdapter"}],"format":"esm"},"src/hooks/useVisibleItems.ts":{"bytes":3240,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/index.ts":{"bytes":854,"imports":[{"path":"src/hooks/useContainerDebug.tsx","kind":"import-statement","original":"./useContainerDebug"},{"path":"src/hooks/useDefaultColumnEventHandler.ts","kind":"import-statement","original":"./useDefaultColumnEventHandler"},{"path":"src/hooks/useEventHandlerAdapter.ts","kind":"import-statement","original":"./useEventHandlerAdapter"},{"path":"src/hooks/useVisibleItems.ts","kind":"import-statement","original":"./useVisibleItems"}],"format":"esm"},"src/components/Focus/Focus.tsx":{"bytes":740,"imports":[{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/Focus/index.ts":{"bytes":464,"imports":[{"path":"src/components/Focus/Focus.tsx","kind":"import-statement","original":"./Focus"}],"format":"esm"},"src/components/Mosaic/styles.ts":{"bytes":4399,"imports":[],"format":"esm"},"src/components/Mosaic/extension.ts":{"bytes":14407,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true}],"format":"esm"},"src/components/Mosaic/types.ts":{"bytes":4115,"imports":[],"format":"esm"},"src/components/Mosaic/Root.tsx":{"bytes":30747,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/components/Mosaic/Container.tsx":{"bytes":29641,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"bind-event-listener","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/Root.tsx","kind":"import-statement","original":"./Root"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Tile.tsx":{"bytes":23686,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Placeholder.tsx":{"bytes":11917,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Tile.tsx","kind":"import-statement","original":"./Tile"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Stack.tsx":{"bytes":33232,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Placeholder.tsx","kind":"import-statement","original":"./Placeholder"},{"path":"src/components/Mosaic/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"src/components/Mosaic/Mosaic.tsx":{"bytes":3763,"imports":[{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Placeholder.tsx","kind":"import-statement","original":"./Placeholder"},{"path":"src/components/Mosaic/Root.tsx","kind":"import-statement","original":"./Root"},{"path":"src/components/Mosaic/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"src/components/Mosaic/Tile.tsx","kind":"import-statement","original":"./Tile"}],"format":"esm"},"src/components/Mosaic/index.ts":{"bytes":839,"imports":[{"path":"src/components/Mosaic/styles.ts","kind":"import-statement","original":"./styles"},{"path":"src/components/Mosaic/extension.ts","kind":"import-statement","original":"./extension"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"},{"path":"src/components/Mosaic/Mosaic.tsx","kind":"import-statement","original":"./Mosaic"}],"format":"esm"},"src/translations.ts":{"bytes":1440,"imports":[],"format":"esm"},"src/components/Board/Item.tsx":{"bytes":12564,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/translations.ts","kind":"import-statement","original":"../../translations"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"},{"path":"src/components/Board/Column.tsx","kind":"import-statement","original":"./Column"}],"format":"esm"},"src/components/Board/Column.tsx":{"bytes":30221,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/translations.ts","kind":"import-statement","original":"../../translations"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"},{"path":"src/components/Board/Item.tsx","kind":"import-statement","original":"./Item"}],"format":"esm"},"src/components/Board/Board.tsx":{"bytes":16353,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Column.tsx","kind":"import-statement","original":"./Column"},{"path":"src/components/Board/Item.tsx","kind":"import-statement","original":"./Item"}],"format":"esm"},"src/components/Board/index.ts":{"bytes":464,"imports":[{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"}],"format":"esm"},"src/components/index.ts":{"bytes":625,"imports":[{"path":"src/components/Board/index.ts","kind":"import-statement","original":"./Board"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"./Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"./Mosaic"}],"format":"esm"},"src/index.ts":{"bytes":541,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"},"src/testing/decorator.tsx":{"bytes":1207,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/testing/types.ts":{"bytes":3045,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/CardContainer.tsx":{"bytes":8593,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true}],"format":"esm"},"src/testing/DefaultStackTile.tsx":{"bytes":6615,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/testing/index.ts":{"bytes":761,"imports":[{"path":"src/testing/decorator.tsx","kind":"import-statement","original":"./decorator"},{"path":"src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"src/testing/CardContainer.tsx","kind":"import-statement","original":"./CardContainer"},{"path":"src/testing/DefaultStackTile.tsx","kind":"import-statement","original":"./DefaultStackTile"}],"format":"esm"},"src/playwright/board-manager.ts":{"bytes":19629,"imports":[],"format":"esm"},"src/playwright/index.ts":{"bytes":1343,"imports":[{"path":"src/playwright/board-manager.ts","kind":"import-statement","original":"./board-manager"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":48977},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-Y4LG7O67.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["Board","BoardDebug","Focus","Mosaic","dropHandler","getSourceData","mosaicStyles","useBoard","useBoardColumn","useContainerDebug","useDefaultColumnEventHandler","useEventHandlerAdapter","useFocus","useMosaic","useMosaicContainer","useMosaicTile","useVisibleItems"],"entryPoint":"src/index.ts","inputs":{"src/components/Board/Board.tsx":{"bytesInOutput":3405},"src/hooks/useContainerDebug.tsx":{"bytesInOutput":1299},"src/hooks/useEventHandlerAdapter.ts":{"bytesInOutput":1769},"src/hooks/useDefaultColumnEventHandler.ts":{"bytesInOutput":235},"src/components/Mosaic/index.ts":{"bytesInOutput":0},"src/components/Mosaic/extension.ts":{"bytesInOutput":3260},"src/components/Board/Column.tsx":{"bytesInOutput":7282},"src/translations.ts":{"bytesInOutput":249},"src/components/Board/Item.tsx":{"bytesInOutput":2948},"src/index.ts":{"bytesInOutput":0}},"bytes":21508},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10255},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-Y4LG7O67.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true}],"exports":["CardContainer","DefaultStackTile","IntrinsicCardContainer","PopoverCardContainer","TestColumn","TestItem","withMosaic"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/decorator.tsx":{"bytesInOutput":181},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/types.ts":{"bytesInOutput":558},"src/testing/CardContainer.tsx":{"bytesInOutput":2231},"src/testing/DefaultStackTile.tsx":{"bytesInOutput":1754}},"bytes":5174},"dist/lib/node-esm/chunk-Y4LG7O67.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":73827},"dist/lib/node-esm/chunk-Y4LG7O67.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"bind-event-listener","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["Focus","Mosaic","getSourceData","styles","useFocus","useMosaicContainerContext","useMosaicRootContext","useMosaicTileContext","useVisibleItems"],"inputs":{"src/hooks/useVisibleItems.ts":{"bytesInOutput":529},"src/components/Focus/Focus.tsx":{"bytesInOutput":50},"src/components/Mosaic/styles.ts":{"bytesInOutput":1417},"src/components/Mosaic/types.ts":{"bytesInOutput":96},"src/components/Mosaic/Root.tsx":{"bytesInOutput":7695},"src/components/Mosaic/Container.tsx":{"bytesInOutput":6800},"src/components/Mosaic/Tile.tsx":{"bytesInOutput":5677},"src/components/Mosaic/Placeholder.tsx":{"bytesInOutput":2579},"src/components/Mosaic/Stack.tsx":{"bytesInOutput":7586},"src/components/Mosaic/Mosaic.tsx":{"bytesInOutput":217}},"bytes":33312},"dist/lib/node-esm/playwright/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9376},"dist/lib/node-esm/playwright/index.mjs":{"imports":[],"exports":["BoardManager","ColumnManager","ItemManager"],"entryPoint":"src/playwright/index.ts","inputs":{"src/playwright/board-manager.ts":{"bytesInOutput":4145},"src/playwright/index.ts":{"bytesInOutput":0}},"bytes":4367}}}
1
+ {"inputs":{"src/hooks/useContainerDebug.tsx":{"bytes":5679,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/hooks/useEventHandlerAdapter.ts":{"bytes":8554,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useDefaultColumnEventHandler.ts":{"bytes":2681,"imports":[{"path":"src/hooks/useEventHandlerAdapter.ts","kind":"import-statement","original":"./useEventHandlerAdapter"}],"format":"esm"},"src/hooks/useVisibleItems.ts":{"bytes":3142,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/index.ts":{"bytes":766,"imports":[{"path":"src/hooks/useContainerDebug.tsx","kind":"import-statement","original":"./useContainerDebug"},{"path":"src/hooks/useDefaultColumnEventHandler.ts","kind":"import-statement","original":"./useDefaultColumnEventHandler"},{"path":"src/hooks/useEventHandlerAdapter.ts","kind":"import-statement","original":"./useEventHandlerAdapter"},{"path":"src/hooks/useVisibleItems.ts","kind":"import-statement","original":"./useVisibleItems"}],"format":"esm"},"src/components/Focus/Focus.tsx":{"bytes":640,"imports":[{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/Focus/index.ts":{"bytes":369,"imports":[{"path":"src/components/Focus/Focus.tsx","kind":"import-statement","original":"./Focus"}],"format":"esm"},"src/components/Mosaic/styles.ts":{"bytes":4298,"imports":[],"format":"esm"},"src/components/Mosaic/extension.ts":{"bytes":14294,"imports":[{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true}],"format":"esm"},"src/components/Mosaic/types.ts":{"bytes":4019,"imports":[],"format":"esm"},"src/components/Mosaic/Root.tsx":{"bytes":29782,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/components/Mosaic/Container.tsx":{"bytes":30903,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"bind-event-listener","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/Root.tsx","kind":"import-statement","original":"./Root"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Tile.tsx":{"bytes":24909,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Placeholder.tsx":{"bytes":12921,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Tile.tsx","kind":"import-statement","original":"./Tile"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/components/Mosaic/Stack.tsx":{"bytes":35604,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Placeholder.tsx","kind":"import-statement","original":"./Placeholder"},{"path":"src/components/Mosaic/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"src/components/Mosaic/Mosaic.tsx":{"bytes":3665,"imports":[{"path":"src/components/Mosaic/Container.tsx","kind":"import-statement","original":"./Container"},{"path":"src/components/Mosaic/Placeholder.tsx","kind":"import-statement","original":"./Placeholder"},{"path":"src/components/Mosaic/Root.tsx","kind":"import-statement","original":"./Root"},{"path":"src/components/Mosaic/Stack.tsx","kind":"import-statement","original":"./Stack"},{"path":"src/components/Mosaic/Tile.tsx","kind":"import-statement","original":"./Tile"}],"format":"esm"},"src/components/Mosaic/index.ts":{"bytes":743,"imports":[{"path":"src/components/Mosaic/styles.ts","kind":"import-statement","original":"./styles"},{"path":"src/components/Mosaic/extension.ts","kind":"import-statement","original":"./extension"},{"path":"src/components/Mosaic/types.ts","kind":"import-statement","original":"./types"},{"path":"src/components/Mosaic/Mosaic.tsx","kind":"import-statement","original":"./Mosaic"}],"format":"esm"},"src/components/Board/Item.tsx":{"bytes":13109,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"},{"path":"src/components/Board/Column.tsx","kind":"import-statement","original":"./Column"}],"format":"esm"},"src/components/Board/Column.tsx":{"bytes":30085,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"},{"path":"src/components/Board/Item.tsx","kind":"import-statement","original":"./Item"}],"format":"esm"},"src/components/Board/Board.tsx":{"bytes":16391,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"../Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Board/Column.tsx","kind":"import-statement","original":"./Column"},{"path":"src/components/Board/Item.tsx","kind":"import-statement","original":"./Item"}],"format":"esm"},"src/components/Board/index.ts":{"bytes":369,"imports":[{"path":"src/components/Board/Board.tsx","kind":"import-statement","original":"./Board"}],"format":"esm"},"src/components/SearchStack/SearchStack.tsx":{"bytes":13262,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/index.ts","kind":"import-statement","original":"../.."}],"format":"esm"},"src/components/SearchStack/index.ts":{"bytes":387,"imports":[{"path":"src/components/SearchStack/SearchStack.tsx","kind":"import-statement","original":"./SearchStack"}],"format":"esm"},"src/components/index.ts":{"bytes":631,"imports":[{"path":"src/components/Board/index.ts","kind":"import-statement","original":"./Board"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"./Focus"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"./Mosaic"},{"path":"src/components/SearchStack/index.ts","kind":"import-statement","original":"./SearchStack"}],"format":"esm"},"src/index.ts":{"bytes":463,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"},"src/testing/decorator.tsx":{"bytes":1112,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/testing/types.ts":{"bytes":2822,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/CardContainer.tsx":{"bytes":8296,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true}],"format":"esm"},"src/testing/DefaultStackTile.tsx":{"bytes":6987,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"}],"format":"esm"},"src/testing/index.ts":{"bytes":675,"imports":[{"path":"src/testing/decorator.tsx","kind":"import-statement","original":"./decorator"},{"path":"src/testing/types.ts","kind":"import-statement","original":"./types"},{"path":"src/testing/CardContainer.tsx","kind":"import-statement","original":"./CardContainer"},{"path":"src/testing/DefaultStackTile.tsx","kind":"import-statement","original":"./DefaultStackTile"}],"format":"esm"},"src/playwright/board-manager.ts":{"bytes":42565,"imports":[{"path":"@playwright/test","kind":"import-statement","external":true}],"format":"esm"},"src/playwright/index.ts":{"bytes":1254,"imports":[{"path":"src/playwright/board-manager.ts","kind":"import-statement","original":"./board-manager"}],"format":"esm"},"src/translations.ts":{"bytes":1355,"imports":[],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":55831},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-DVJLDZLE.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["Board","BoardDebug","Focus","Mosaic","SearchStack","dropHandler","getSourceData","mosaicStyles","useBoard","useBoardColumn","useContainerDebug","useDefaultColumnEventHandler","useEventHandlerAdapter","useFocus","useMosaic","useMosaicContainer","useMosaicTile","useVisibleItems"],"entryPoint":"src/index.ts","inputs":{"src/components/Board/Board.tsx":{"bytesInOutput":3466},"src/hooks/useContainerDebug.tsx":{"bytesInOutput":1294},"src/hooks/useEventHandlerAdapter.ts":{"bytesInOutput":1697},"src/hooks/useDefaultColumnEventHandler.ts":{"bytesInOutput":235},"src/components/Mosaic/index.ts":{"bytesInOutput":0},"src/components/Mosaic/extension.ts":{"bytesInOutput":3255},"src/components/Board/Column.tsx":{"bytesInOutput":7290},"src/components/Board/Item.tsx":{"bytesInOutput":3005},"src/components/SearchStack/SearchStack.tsx":{"bytesInOutput":2954},"src/index.ts":{"bytesInOutput":0}},"bytes":24295},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10321},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-DVJLDZLE.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-dnd","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-syntax-highlighter","kind":"import-statement","external":true}],"exports":["CardContainer","DefaultStackTile","IntrinsicCardContainer","PopoverCardContainer","TestColumn","TestItem","withMosaic"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/decorator.tsx":{"bytesInOutput":181},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/types.ts":{"bytesInOutput":537},"src/testing/CardContainer.tsx":{"bytesInOutput":2173},"src/testing/DefaultStackTile.tsx":{"bytesInOutput":1772}},"bytes":5113},"dist/lib/node-esm/chunk-DVJLDZLE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":75138},"dist/lib/node-esm/chunk-DVJLDZLE.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"bind-event-listener","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@radix-ui/react-primitive","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"@tanstack/react-virtual","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["Focus","Mosaic","getSourceData","styles","useFocus","useMosaicContainerContext","useMosaicRootContext","useMosaicTileContext","useVisibleItems"],"inputs":{"src/hooks/useVisibleItems.ts":{"bytesInOutput":529},"src/components/Focus/Focus.tsx":{"bytesInOutput":50},"src/components/Mosaic/styles.ts":{"bytesInOutput":1417},"src/components/Mosaic/types.ts":{"bytesInOutput":96},"src/components/Mosaic/Root.tsx":{"bytesInOutput":7272},"src/components/Mosaic/Container.tsx":{"bytesInOutput":6984},"src/components/Mosaic/Tile.tsx":{"bytesInOutput":6070},"src/components/Mosaic/Placeholder.tsx":{"bytesInOutput":2717},"src/components/Mosaic/Stack.tsx":{"bytesInOutput":8085},"src/components/Mosaic/Mosaic.tsx":{"bytesInOutput":217}},"bytes":34103},"dist/lib/node-esm/playwright/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":20211},"dist/lib/node-esm/playwright/index.mjs":{"imports":[{"path":"@playwright/test","kind":"import-statement","external":true}],"exports":["BoardManager","ColumnManager","ItemManager"],"entryPoint":"src/playwright/index.ts","inputs":{"src/playwright/board-manager.ts":{"bytesInOutput":8385},"src/playwright/index.ts":{"bytesInOutput":0}},"bytes":8607},"dist/lib/node-esm/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":694},"dist/lib/node-esm/translations.mjs":{"imports":[],"exports":["translationKey","translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":249}},"bytes":452}}}