@dxos/react-ui-mosaic 0.8.4-main.bc674ce → 0.8.4-main.c85a9c8dae

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 (186) hide show
  1. package/dist/lib/browser/chunk-7S4PIFKU.mjs +953 -0
  2. package/dist/lib/browser/chunk-7S4PIFKU.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +596 -70
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/playwright/index.mjs +138 -0
  7. package/dist/lib/browser/playwright/index.mjs.map +7 -0
  8. package/dist/lib/browser/testing/index.mjs +61 -232
  9. package/dist/lib/browser/testing/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/chunk-MK6KU66S.mjs +955 -0
  11. package/dist/lib/node-esm/chunk-MK6KU66S.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +596 -70
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/playwright/index.mjs +140 -0
  16. package/dist/lib/node-esm/playwright/index.mjs.map +7 -0
  17. package/dist/lib/node-esm/testing/index.mjs +61 -232
  18. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  19. package/dist/types/src/components/Board/Board.d.ts +81 -0
  20. package/dist/types/src/components/Board/Board.d.ts.map +1 -0
  21. package/dist/types/src/components/{Mosaic/Mosaic.stories.d.ts → Board/Board.stories.d.ts} +15 -1
  22. package/dist/types/src/components/Board/Board.stories.d.ts.map +1 -0
  23. package/dist/types/src/components/Board/Column.d.ts +40 -0
  24. package/dist/types/src/components/Board/Column.d.ts.map +1 -0
  25. package/dist/types/src/components/Board/Item.d.ts +9 -0
  26. package/dist/types/src/components/Board/Item.d.ts.map +1 -0
  27. package/dist/types/src/components/Board/index.d.ts +2 -0
  28. package/dist/types/src/components/Board/index.d.ts.map +1 -0
  29. package/dist/types/src/components/Focus/Focus.d.ts +5 -4
  30. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -1
  31. package/dist/types/src/components/Focus/index.d.ts +0 -1
  32. package/dist/types/src/components/Focus/index.d.ts.map +1 -1
  33. package/dist/types/src/components/Mosaic/Container.d.ts +42 -0
  34. package/dist/types/src/components/Mosaic/Container.d.ts.map +1 -0
  35. package/dist/types/src/components/Mosaic/Mosaic.d.ts +35 -118
  36. package/dist/types/src/components/Mosaic/Mosaic.d.ts.map +1 -1
  37. package/dist/types/src/components/Mosaic/Placeholder.d.ts +21 -0
  38. package/dist/types/src/components/Mosaic/Placeholder.d.ts.map +1 -0
  39. package/dist/types/src/components/Mosaic/Root.d.ts +36 -0
  40. package/dist/types/src/components/Mosaic/Root.d.ts.map +1 -0
  41. package/dist/types/src/components/Mosaic/Stack.d.ts +23 -0
  42. package/dist/types/src/components/Mosaic/Stack.d.ts.map +1 -0
  43. package/dist/types/src/components/{Stack → Mosaic}/Stack.stories.d.ts +2 -2
  44. package/dist/types/src/components/Mosaic/Stack.stories.d.ts.map +1 -0
  45. package/dist/types/src/components/Mosaic/Tile.d.ts +48 -0
  46. package/dist/types/src/components/Mosaic/Tile.d.ts.map +1 -0
  47. package/dist/types/src/components/Mosaic/styles.d.ts.map +1 -1
  48. package/dist/types/src/components/Mosaic/types.d.ts +9 -2
  49. package/dist/types/src/components/Mosaic/types.d.ts.map +1 -1
  50. package/dist/types/src/components/index.d.ts +1 -4
  51. package/dist/types/src/components/index.d.ts.map +1 -1
  52. package/dist/types/src/hooks/index.d.ts +1 -0
  53. package/dist/types/src/hooks/index.d.ts.map +1 -1
  54. package/dist/types/src/hooks/useDefaultColumnEventHandler.d.ts +15 -0
  55. package/dist/types/src/hooks/useDefaultColumnEventHandler.d.ts.map +1 -0
  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 +2 -2
  59. package/dist/types/src/hooks/useVisibleItems.d.ts.map +1 -1
  60. package/dist/types/src/playwright/board-manager.d.ts +45 -0
  61. package/dist/types/src/playwright/board-manager.d.ts.map +1 -0
  62. package/dist/types/src/playwright/index.d.ts +9 -0
  63. package/dist/types/src/playwright/index.d.ts.map +1 -0
  64. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  65. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  66. package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
  67. package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
  68. package/dist/types/src/testing/CardContainer.d.ts +5 -4
  69. package/dist/types/src/testing/CardContainer.d.ts.map +1 -1
  70. package/dist/types/src/testing/DefaultStackTile.d.ts +2 -2
  71. package/dist/types/src/testing/DefaultStackTile.d.ts.map +1 -1
  72. package/dist/types/src/testing/index.d.ts +1 -1
  73. package/dist/types/src/testing/index.d.ts.map +1 -1
  74. package/dist/types/src/testing/types.d.ts +21 -0
  75. package/dist/types/src/testing/types.d.ts.map +1 -0
  76. package/dist/types/src/translations.d.ts +5 -1
  77. package/dist/types/src/translations.d.ts.map +1 -1
  78. package/dist/types/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +43 -28
  80. package/src/components/Board/Board.stories.tsx +273 -0
  81. package/src/components/Board/Board.tsx +191 -0
  82. package/src/components/Board/Column.tsx +300 -0
  83. package/src/components/Board/Item.tsx +116 -0
  84. package/src/components/{Layout → Board}/index.ts +1 -1
  85. package/src/components/Focus/Focus.tsx +26 -17
  86. package/src/components/Focus/index.ts +0 -2
  87. package/src/components/Mosaic/Container.tsx +289 -0
  88. package/src/components/Mosaic/Mosaic.tsx +35 -913
  89. package/src/components/Mosaic/Placeholder.tsx +133 -0
  90. package/src/components/Mosaic/Root.tsx +292 -0
  91. package/src/components/{Stack → Mosaic}/Stack.stories.tsx +30 -26
  92. package/src/components/Mosaic/Stack.tsx +246 -0
  93. package/src/components/Mosaic/Tile.tsx +242 -0
  94. package/src/components/Mosaic/extension.ts +1 -1
  95. package/src/components/Mosaic/styles.ts +9 -8
  96. package/src/components/Mosaic/types.ts +15 -3
  97. package/src/components/index.ts +1 -4
  98. package/src/hooks/index.ts +1 -0
  99. package/src/hooks/useContainerDebug.tsx +4 -2
  100. package/src/hooks/useDefaultColumnEventHandler.ts +35 -0
  101. package/src/hooks/useEventHandlerAdapter.ts +15 -6
  102. package/src/hooks/useVisibleItems.ts +7 -2
  103. package/src/playwright/board-manager.ts +154 -0
  104. package/src/playwright/index.ts +13 -0
  105. package/src/playwright/playwright.config.ts +17 -0
  106. package/src/playwright/smoke.spec.ts +138 -0
  107. package/src/testing/CardContainer.tsx +30 -18
  108. package/src/testing/DefaultStackTile.tsx +27 -16
  109. package/src/testing/index.ts +1 -1
  110. package/src/testing/types.ts +38 -0
  111. package/src/translations.ts +5 -1
  112. package/dist/lib/browser/chunk-UMBPEG4F.mjs +0 -1637
  113. package/dist/lib/browser/chunk-UMBPEG4F.mjs.map +0 -7
  114. package/dist/lib/browser/index.css +0 -13
  115. package/dist/lib/browser/index.css.map +0 -7
  116. package/dist/lib/browser/testing/index.css +0 -13
  117. package/dist/lib/browser/testing/index.css.map +0 -7
  118. package/dist/lib/node-esm/chunk-X6GV7SMK.mjs +0 -1639
  119. package/dist/lib/node-esm/chunk-X6GV7SMK.mjs.map +0 -7
  120. package/dist/lib/node-esm/index.css +0 -13
  121. package/dist/lib/node-esm/index.css.map +0 -7
  122. package/dist/lib/node-esm/testing/index.css +0 -13
  123. package/dist/lib/node-esm/testing/index.css.map +0 -7
  124. package/dist/types/src/components/Card/Card.d.ts +0 -121
  125. package/dist/types/src/components/Card/Card.d.ts.map +0 -1
  126. package/dist/types/src/components/Card/Card.stories.d.ts +0 -21
  127. package/dist/types/src/components/Card/Card.stories.d.ts.map +0 -1
  128. package/dist/types/src/components/Card/CardDragPreview.d.ts +0 -6
  129. package/dist/types/src/components/Card/CardDragPreview.d.ts.map +0 -1
  130. package/dist/types/src/components/Card/index.d.ts +0 -4
  131. package/dist/types/src/components/Card/index.d.ts.map +0 -1
  132. package/dist/types/src/components/Card/styles.d.ts +0 -13
  133. package/dist/types/src/components/Card/styles.d.ts.map +0 -1
  134. package/dist/types/src/components/Focus/styles.d.ts +0 -6
  135. package/dist/types/src/components/Focus/styles.d.ts.map +0 -1
  136. package/dist/types/src/components/Image/Image.d.ts +0 -14
  137. package/dist/types/src/components/Image/Image.d.ts.map +0 -1
  138. package/dist/types/src/components/Image/Image.stories.d.ts +0 -33
  139. package/dist/types/src/components/Image/Image.stories.d.ts.map +0 -1
  140. package/dist/types/src/components/Image/index.d.ts +0 -2
  141. package/dist/types/src/components/Image/index.d.ts.map +0 -1
  142. package/dist/types/src/components/Layout/Layout.d.ts +0 -33
  143. package/dist/types/src/components/Layout/Layout.d.ts.map +0 -1
  144. package/dist/types/src/components/Layout/Layout.stories.d.ts +0 -10
  145. package/dist/types/src/components/Layout/Layout.stories.d.ts.map +0 -1
  146. package/dist/types/src/components/Layout/index.d.ts +0 -2
  147. package/dist/types/src/components/Layout/index.d.ts.map +0 -1
  148. package/dist/types/src/components/Mosaic/Mosaic.stories.d.ts.map +0 -1
  149. package/dist/types/src/components/Scrollable/Scrollable.d.ts +0 -24
  150. package/dist/types/src/components/Scrollable/Scrollable.d.ts.map +0 -1
  151. package/dist/types/src/components/Scrollable/Scrollable.stories.d.ts +0 -10
  152. package/dist/types/src/components/Scrollable/Scrollable.stories.d.ts.map +0 -1
  153. package/dist/types/src/components/Scrollable/index.d.ts +0 -2
  154. package/dist/types/src/components/Scrollable/index.d.ts.map +0 -1
  155. package/dist/types/src/components/Stack/Stack.d.ts +0 -22
  156. package/dist/types/src/components/Stack/Stack.d.ts.map +0 -1
  157. package/dist/types/src/components/Stack/Stack.stories.d.ts.map +0 -1
  158. package/dist/types/src/components/Stack/index.d.ts +0 -2
  159. package/dist/types/src/components/Stack/index.d.ts.map +0 -1
  160. package/dist/types/src/testing/Board.d.ts +0 -45
  161. package/dist/types/src/testing/Board.d.ts.map +0 -1
  162. package/dist/types/src/testing/Slot.stories.d.ts +0 -14
  163. package/dist/types/src/testing/Slot.stories.d.ts.map +0 -1
  164. package/dist/types/src/testing/Virtualizer.stories.d.ts +0 -12
  165. package/dist/types/src/testing/Virtualizer.stories.d.ts.map +0 -1
  166. package/src/components/Card/Card.stories.tsx +0 -148
  167. package/src/components/Card/Card.tsx +0 -458
  168. package/src/components/Card/CardDragPreview.tsx +0 -23
  169. package/src/components/Card/index.ts +0 -8
  170. package/src/components/Card/styles.ts +0 -23
  171. package/src/components/Focus/styles.ts +0 -24
  172. package/src/components/Image/Image.stories.tsx +0 -86
  173. package/src/components/Image/Image.tsx +0 -223
  174. package/src/components/Image/index.ts +0 -5
  175. package/src/components/Layout/Layout.stories.tsx +0 -59
  176. package/src/components/Layout/Layout.tsx +0 -108
  177. package/src/components/Mosaic/Mosaic.stories.tsx +0 -113
  178. package/src/components/Scrollable/Scrollable.stories.tsx +0 -59
  179. package/src/components/Scrollable/Scrollable.tsx +0 -88
  180. package/src/components/Scrollable/index.ts +0 -5
  181. package/src/components/Scrollable/scrollable.css +0 -20
  182. package/src/components/Stack/Stack.tsx +0 -210
  183. package/src/components/Stack/index.ts +0 -5
  184. package/src/testing/Board.tsx +0 -278
  185. package/src/testing/Slot.stories.tsx +0 -101
  186. package/src/testing/Virtualizer.stories.tsx +0 -133
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/components/Card/CardDragPreview.tsx", "../../../src/components/Layout/Layout.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { mx } from '@dxos/ui-theme';\n\nimport { styles } from './styles';\n\n// TODO(burdon): Why p-2?\nconst CardDragPreviewRoot = ({ children }: PropsWithChildren<{}>) => {\n return <div className='p-2'>{children}</div>;\n};\n\nconst CardDragPreviewContent = ({ children }: PropsWithChildren<{}>) => {\n return <div className={mx(styles.root, 'ring-focusLine ring-neutralFocusIndicator')}>{children}</div>;\n};\n\nexport const CardDragPreview = {\n Root: CardDragPreviewRoot,\n Content: CardDragPreviewContent,\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { type HTMLAttributes, type PropsWithChildren, forwardRef, useMemo } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\n//\n// Main\n//\n\ntype MainProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n toolbar?: boolean;\n statusbar?: boolean;\n }>\n>;\n\n// TODO(burdon): Borders.\nconst Main = forwardRef<HTMLDivElement, MainProps>(\n ({ classNames, children, role, toolbar, statusbar }, forwardedRef) => {\n const style = useMemo(\n () => ({\n gridTemplateRows: [toolbar && 'var(--toolbar-size)', '1fr', statusbar && 'var(--statusbar-size)']\n .filter(Boolean)\n .join(' '),\n }),\n [toolbar, statusbar],\n );\n\n return (\n <div\n ref={forwardedRef}\n role={role ?? 'none'}\n style={style}\n className={mx(\n 'bs-full is-full grid grid-cols-[100%] overflow-hidden',\n toolbar && '[&>.dx-toolbar]:relative [&>.dx-toolbar]:border-be [&>.dx-toolbar]:border-subduedSeparator',\n classNames,\n )}\n >\n {children}\n </div>\n );\n },\n);\n\n//\n// Container\n//\n\ntype ContainerProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n scrollable?: boolean;\n }>\n>;\n\nconst Container = forwardRef<HTMLDivElement, ContainerProps>(\n ({ classNames, children, role, scrollable }, forwardedRef) => {\n return (\n <div\n ref={forwardedRef}\n role={role ?? 'none'}\n className={mx('grid bs-full', scrollable ? 'overflow-y-auto' : 'overflow-hidden', classNames)}\n >\n {children}\n </div>\n );\n },\n);\n\n//\n// Flex\n//\n\ntype FlexProps = ThemedClassName<\n HTMLAttributes<HTMLDivElement> & {\n column?: boolean;\n grow?: boolean;\n }\n>;\n\nconst Flex = ({ children, classNames, role, column, grow }: FlexProps) => {\n return (\n <div\n role={role ?? 'none'}\n className={mx('flex', column && 'flex-col', grow && 'flex-1 overflow-hidden', classNames)}\n >\n {children}\n </div>\n );\n};\n\n//\n// Layout\n//\n\nexport const Layout = {\n Main,\n Container,\n Flex,\n};\n\nexport type { MainProps as LayoutMainProps, ContainerProps as LayoutContainerProps, FlexProps as LayoutFlexProps };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAuC;AAE9C,SAASC,UAAU;AAKnB,IAAMC,sBAAsB,CAAC,EAAEC,SAAQ,MAAyB;AAC9D,SAAO,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KAAOF,QAAAA;AAC/B;AAEA,IAAMG,yBAAyB,CAAC,EAAEH,SAAQ,MAAyB;AACjE,SAAO,sBAAA,cAACC,OAAAA;IAAIC,WAAWE,GAAGC,OAAOC,MAAM,2CAAA;KAA+CN,QAAAA;AACxF;AAEO,IAAMO,kBAAkB;EAC7BC,MAAMT;EACNU,SAASN;AACX;;;AClBA,OAAOO,UAAsDC,YAAYC,eAAe;AAGxF,SAASC,MAAAA,WAAU;AAenB,IAAMC,OAAOC,2BACX,CAAC,EAAEC,YAAYC,UAAUC,MAAMC,SAASC,UAAS,GAAIC,iBAAAA;AACnD,QAAMC,QAAQC,QACZ,OAAO;IACLC,kBAAkB;MAACL,WAAW;MAAuB;MAAOC,aAAa;MACtEK,OAAOC,OAAAA,EACPC,KAAK,GAAA;EACV,IACA;IAACR;IAASC;GAAU;AAGtB,SACE,gBAAAQ,OAAA,cAACC,OAAAA;IACCC,KAAKT;IACLH,MAAMA,QAAQ;IACdI;IACAS,WAAWC,IACT,yDACAb,WAAW,8FACXH,UAAAA;KAGDC,QAAAA;AAGP,CAAA;AAcF,IAAMgB,YAAYlB,2BAChB,CAAC,EAAEC,YAAYC,UAAUC,MAAMgB,WAAU,GAAIb,iBAAAA;AAC3C,SACE,gBAAAO,OAAA,cAACC,OAAAA;IACCC,KAAKT;IACLH,MAAMA,QAAQ;IACda,WAAWC,IAAG,gBAAgBE,aAAa,oBAAoB,mBAAmBlB,UAAAA;KAEjFC,QAAAA;AAGP,CAAA;AAcF,IAAMkB,OAAO,CAAC,EAAElB,UAAUD,YAAYE,MAAMkB,QAAQC,KAAI,MAAa;AACnE,SACE,gBAAAT,OAAA,cAACC,OAAAA;IACCX,MAAMA,QAAQ;IACda,WAAWC,IAAG,QAAQI,UAAU,YAAYC,QAAQ,0BAA0BrB,UAAAA;KAE7EC,QAAAA;AAGP;AAMO,IAAMqB,SAAS;EACpBxB;EACAmB;EACAE;AACF;",
6
- "names": ["React", "mx", "CardDragPreviewRoot", "children", "div", "className", "CardDragPreviewContent", "mx", "styles", "root", "CardDragPreview", "Root", "Content", "React", "forwardRef", "useMemo", "mx", "Main", "forwardRef", "classNames", "children", "role", "toolbar", "statusbar", "forwardedRef", "style", "useMemo", "gridTemplateRows", "filter", "Boolean", "join", "React", "div", "ref", "className", "mx", "Container", "scrollable", "Flex", "column", "grow", "Layout"]
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 { 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';\n\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 = forwardRef<HTMLDivElement, BoardContentProps>(\n ({ classNames, id: _id, debug, eventHandler, Tile = DefaultBoardColumn }, 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 ref={forwardedRef} className={mx('flex h-full w-full overflow-hidden', classNames)}>\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' classNames='md:pt-3' margin 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\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\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';\n\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 { 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';\n\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 = forwardRef<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 classNames={mx(\n // NOTE: Reserves 2px for outer Focus.Group border.\n 'group/column h-full overflow-hidden w-[calc(100vw-2px)] md:w-card-default-width snap-center bg-deck-surface',\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 = ThemedClassName<{ label: string; dragHandleRef: ReactRef<HTMLButtonElement> }>;\n\nconst BoardColumnHeader = forwardRef<HTMLDivElement, BoardColumnHeaderProps>(\n ({ classNames, label, dragHandleRef }, 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\n classNames={mx('border-b border-separator', classNames)}\n data-testid='board-column-header'\n ref={forwardedRef}\n >\n <Toolbar.DragHandle ref={dragHandleRef} />\n <Toolbar.Text>{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 = ({ data, eventHandler, Tile = BoardItem, debug }: BoardColumnBodyProps) => {\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 asChild\n withFocus\n orientation='vertical'\n autoScroll={viewport}\n eventHandler={eventHandler}\n debug={debug}\n >\n <ScrollArea.Root orientation='vertical' thin margin 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\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';\n\nimport { useBoard } from './Board';\nimport { useBoardColumn } from './Column';\n\n//\n// Item\n//\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 <Mosaic.Tile\n asChild\n dragHandle={dragHandleRef.current}\n id={data.id}\n data={data}\n location={location}\n debug={debug}\n >\n <Focus.Group asChild>\n <Menu.Root>\n <Card.Root\n classNames={classNames}\n data-testid='board-item'\n onClick={() => rootRef.current?.focus()}\n ref={composedRef}\n >\n <Card.Toolbar>\n <Card.DragHandle ref={dragHandleRef} />\n <Card.Title>{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 {description}\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 </Menu.Root>\n </Focus.Group>\n </Mosaic.Tile>\n );\n },\n);\n\nBoardItemInner.displayName = BOARD_ITEM_NAME;\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", "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", "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", "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", "Mosaic", "Tile", "asChild", "dragHandle", "current", "id", "Focus", "Group", "Menu", "Root", "Card", "data-testid", "onClick", "focus", "ref", "Toolbar", "DragHandle", "Title", "Trigger", "disabled", "length", "IconButton", "iconOnly", "variant", "Content", "Row", "div", "role", "className", "Tag", "palette", "getHashStyles", "hue", "displayName", "BoardItem", "BOARD_COLUMN_CONTEXT_NAME", "BoardColumnProvider", "useBoardColumnContext", "createContext", "useBoardColumn", "value", "column", "BOARD_COLUMN_ROOT_NAME", "BoardColumnRootInner", "forwardRef", "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", "mx", "ref", "displayName", "BoardColumnRoot", "BOARD_COLUMN_HEADER_NAME", "BoardColumnHeader", "label", "t", "useTranslation", "translationKey", "columnMenuItems", "useMemo", "onColumnDelete", "createMenuAction", "icon", "Menu", "Root", "Toolbar", "DragHandle", "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", "margin", "padding", "Viewport", "Stack", "getId", "getItemId", "BOARD_COLUMN_FOOTER_NAME", "BoardColumnFooter", "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", "forwardRef", "classNames", "id", "_id", "debug", "eventHandler", "Tile", "DefaultBoardColumn", "forwardedRef", "DebugInfo", "debugHandler", "useContainerDebug", "viewport", "setViewport", "useState", "items", "useAtomValue", "columns", "div", "ref", "className", "mx", "Focus", "Group", "asChild", "orientation", "Mosaic", "Container", "withFocus", "autoScroll", "ScrollArea", "Root", "margin", "padding", "Viewport", "Stack", "getId", "getColumnId", "BoardContent", "BOARD_PLACEHOLDER_NAME", "BoardPlaceholder", "props", "Placeholder", "mosaicStyles", "placeholder", "root", "content", "BOARD_DEBUG_NAME", "BoardDebug", "containers", "dragging", "useMosaic", "counter", "useRef", "Json", "data", "count", "current", "Board", "Content", "Column", "BoardColumn", "Item", "BoardItem", "Debug"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/components/Card/styles.ts":{"bytes":2466,"imports":[],"format":"esm"},"src/translations.ts":{"bytes":1059,"imports":[],"format":"esm"},"src/components/Image/Image.tsx":{"bytes":22239,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Image/index.ts":{"bytes":464,"imports":[{"path":"src/components/Image/Image.tsx","kind":"import-statement","original":"./Image"}],"format":"esm"},"src/components/Card/Card.tsx":{"bytes":34464,"imports":[{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","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/translations.ts","kind":"import-statement","original":"../../translations"},{"path":"src/components/Image/index.ts","kind":"import-statement","original":"../Image"},{"path":"src/components/Card/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"src/components/Card/CardDragPreview.tsx":{"bytes":2399,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/components/Card/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"src/components/Card/index.ts":{"bytes":758,"imports":[{"path":"src/components/Card/styles.ts","kind":"import-statement","original":"./styles"},{"path":"src/components/Card/Card.tsx","kind":"import-statement","original":"./Card"},{"path":"src/components/Card/CardDragPreview.tsx","kind":"import-statement","original":"./CardDragPreview"}],"format":"esm"},"src/components/Focus/styles.ts":{"bytes":2242,"imports":[],"format":"esm"},"src/components/Focus/Focus.tsx":{"bytes":8109,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","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/Focus/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"src/components/Focus/index.ts":{"bytes":658,"imports":[{"path":"src/components/Focus/styles.ts","kind":"import-statement","original":"./styles"},{"path":"src/components/Focus/Focus.tsx","kind":"import-statement","original":"./Focus"}],"format":"esm"},"src/components/Layout/Layout.tsx":{"bytes":6547,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Layout/index.ts":{"bytes":470,"imports":[{"path":"src/components/Layout/Layout.tsx","kind":"import-statement","original":"./Layout"}],"format":"esm"},"src/components/Mosaic/styles.ts":{"bytes":4082,"imports":[],"format":"esm"},"src/components/Mosaic/extension.ts":{"bytes":14399,"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":3507,"imports":[],"format":"esm"},"src/components/Scrollable/scrollable.css":{"bytes":736,"imports":[]},"src/components/Scrollable/Scrollable.tsx":{"bytes":7659,"imports":[{"path":"overlayscrollbars-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"overlayscrollbars/styles/overlayscrollbars.css","kind":"import-statement","external":true},{"path":"src/components/Scrollable/scrollable.css","kind":"import-statement","original":"./scrollable.css"}],"format":"esm"},"src/components/Scrollable/index.ts":{"bytes":482,"imports":[{"path":"src/components/Scrollable/Scrollable.tsx","kind":"import-statement","original":"./Scrollable"}],"format":"esm"},"src/hooks/useContainerDebug.tsx":{"bytes":5641,"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":8069,"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/useVisibleItems.ts":{"bytes":3168,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/index.ts":{"bytes":714,"imports":[{"path":"src/hooks/useContainerDebug.tsx","kind":"import-statement","original":"./useContainerDebug"},{"path":"src/hooks/useEventHandlerAdapter.ts","kind":"import-statement","original":"./useEventHandlerAdapter"},{"path":"src/hooks/useVisibleItems.ts","kind":"import-statement","original":"./useVisibleItems"}],"format":"esm"},"src/components/Stack/Stack.tsx":{"bytes":17785,"imports":[{"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/index.ts","kind":"import-statement","original":"../Mosaic"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"../Mosaic"}],"format":"esm"},"src/components/Stack/index.ts":{"bytes":464,"imports":[{"path":"src/components/Stack/Stack.tsx","kind":"import-statement","original":"./Stack"}],"format":"esm"},"src/components/Mosaic/Mosaic.tsx":{"bytes":85824,"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":"@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":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","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-react-drop-indicator/box","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":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/log","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/Scrollable/index.ts","kind":"import-statement","original":"../Scrollable"},{"path":"src/components/Stack/index.ts","kind":"import-statement","original":"../Stack"}],"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/components/index.ts":{"bytes":868,"imports":[{"path":"src/components/Card/index.ts","kind":"import-statement","original":"./Card"},{"path":"src/components/Focus/index.ts","kind":"import-statement","original":"./Focus"},{"path":"src/components/Image/index.ts","kind":"import-statement","original":"./Image"},{"path":"src/components/Layout/index.ts","kind":"import-statement","original":"./Layout"},{"path":"src/components/Mosaic/index.ts","kind":"import-statement","original":"./Mosaic"},{"path":"src/components/Stack/index.ts","kind":"import-statement","original":"./Stack"}],"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/Board.tsx":{"bytes":27666,"imports":[{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","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-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"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"src/testing/CardContainer.tsx":{"bytes":7835,"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":4268,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","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/Board.tsx","kind":"import-statement","original":"./Board"},{"path":"src/testing/CardContainer.tsx","kind":"import-statement","original":"./CardContainer"},{"path":"src/testing/DefaultStackTile.tsx","kind":"import-statement","original":"./DefaultStackTile"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4810},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UMBPEG4F.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["Card","CardDragPreview","Focus","Image","Layout","Mosaic","Stack","VirtualStack","cardStyles","dropHandler","focusStyles","mosaicStyles","useContainerDebug","useEventHandlerAdapter","useFocus","useMosaic","useMosaicContainer","useMosaicTile","useVisibleItems"],"entryPoint":"src/index.ts","cssBundle":"dist/lib/browser/index.css","inputs":{"src/components/Card/index.ts":{"bytesInOutput":0},"src/components/Card/CardDragPreview.tsx":{"bytesInOutput":492},"src/components/Layout/Layout.tsx":{"bytesInOutput":1395},"src/index.ts":{"bytesInOutput":0}},"bytes":2669},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":21659},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-UMBPEG4F.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","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-syntax-highlighter","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","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-syntax-highlighter","kind":"import-statement","external":true}],"exports":["Board","CardContainer","Debug","DefaultStackTile","IntrinsicCardContainer","PopoverCardContainer","TestColumn","TestItem","withMosaic"],"entryPoint":"src/testing/index.ts","cssBundle":"dist/lib/browser/testing/index.css","inputs":{"src/testing/decorator.tsx":{"bytesInOutput":181},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/Board.tsx":{"bytesInOutput":7192},"src/testing/CardContainer.tsx":{"bytesInOutput":1961},"src/testing/DefaultStackTile.tsx":{"bytesInOutput":1100}},"bytes":10905},"dist/lib/browser/chunk-UMBPEG4F.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":111159},"dist/lib/browser/chunk-UMBPEG4F.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@radix-ui/react-slot","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","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":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","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":"@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":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","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-react-drop-indicator/box","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":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"overlayscrollbars-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"overlayscrollbars/styles/overlayscrollbars.css","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":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Card","Focus","Image","Mosaic","Stack","VirtualStack","dropHandler","styles","styles2","styles3","useContainerContext","useContainerDebug","useEventHandlerAdapter","useFocus","useRootContext","useTileContext","useVisibleItems"],"inputs":{"src/components/Card/styles.ts":{"bytesInOutput":695},"src/components/Image/Image.tsx":{"bytesInOutput":4776},"src/components/Card/Card.tsx":{"bytesInOutput":8779},"src/translations.ts":{"bytesInOutput":126},"src/components/Focus/styles.ts":{"bytesInOutput":532},"src/components/Focus/Focus.tsx":{"bytesInOutput":1677},"src/components/Focus/index.ts":{"bytesInOutput":0},"src/components/Mosaic/styles.ts":{"bytesInOutput":1303},"src/components/Mosaic/extension.ts":{"bytesInOutput":3256},"src/hooks/useContainerDebug.tsx":{"bytesInOutput":1322},"src/components/Mosaic/index.ts":{"bytesInOutput":0},"src/components/Mosaic/Mosaic.tsx":{"bytesInOutput":20600},"src/components/Scrollable/Scrollable.tsx":{"bytesInOutput":1634},"src/components/Scrollable/scrollable.css":{"bytesInOutput":0},"src/components/Stack/Stack.tsx":{"bytesInOutput":4183},"src/hooks/useEventHandlerAdapter.ts":{"bytesInOutput":1620},"src/hooks/useVisibleItems.ts":{"bytesInOutput":542}},"bytes":51983},"dist/lib/browser/index.css.map":{"imports":[],"exports":[],"inputs":{},"bytes":1137},"dist/lib/browser/index.css":{"imports":[],"inputs":{"src/components/Scrollable/scrollable.css":{"bytesInOutput":354}},"bytes":439},"dist/lib/browser/testing/index.css.map":{"imports":[],"exports":[],"inputs":{},"bytes":1140},"dist/lib/browser/testing/index.css":{"imports":[],"inputs":{"src/components/Scrollable/scrollable.css":{"bytesInOutput":354}},"bytes":439}}}
1
+ {"inputs":{"src/hooks/useContainerDebug.tsx":{"bytes":5788,"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":2792,"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":9073,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","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}],"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":31647,"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},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Mosaic/Container.tsx":{"bytes":26806,"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":"@atlaskit/pragmatic-drag-and-drop-auto-scroll/element","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":23212,"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":"@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":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","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":22173,"imports":[{"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":12046,"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":29653,"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":16234,"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":8675,"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":6177,"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":18342,"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/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":48194},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-7S4PIFKU.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":3375},"src/hooks/useContainerDebug.tsx":{"bytesInOutput":1294},"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":7203},"src/translations.ts":{"bytesInOutput":249},"src/components/Board/Item.tsx":{"bytesInOutput":2782},"src/index.ts":{"bytesInOutput":0}},"bytes":21136},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10073},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-7S4PIFKU.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":2261},"src/testing/DefaultStackTile.tsx":{"bytesInOutput":1625}},"bytes":4974},"dist/lib/browser/chunk-7S4PIFKU.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":71534},"dist/lib/browser/chunk-7S4PIFKU.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-compose-refs","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":"@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":"@dxos/ui-theme","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-auto-scroll/element","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/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":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","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/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator/box","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":"@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":1959},"src/components/Mosaic/styles.ts":{"bytesInOutput":1417},"src/components/Mosaic/types.ts":{"bytesInOutput":96},"src/components/Mosaic/Root.tsx":{"bytesInOutput":7870},"src/components/Mosaic/Container.tsx":{"bytesInOutput":6390},"src/components/Mosaic/Tile.tsx":{"bytesInOutput":5607},"src/components/Mosaic/Placeholder.tsx":{"bytesInOutput":2587},"src/components/Mosaic/Stack.tsx":{"bytesInOutput":4790},"src/components/Mosaic/Mosaic.tsx":{"bytesInOutput":217}},"bytes":32035},"dist/lib/browser/playwright/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8812},"dist/lib/browser/playwright/index.mjs":{"imports":[],"exports":["BoardManager","ColumnManager","ItemManager"],"entryPoint":"src/playwright/index.ts","inputs":{"src/playwright/board-manager.ts":{"bytesInOutput":3803},"src/playwright/index.ts":{"bytesInOutput":0}},"bytes":3932}}}
@@ -0,0 +1,138 @@
1
+ // src/playwright/board-manager.ts
2
+ var BoardManager = class {
3
+ locator;
4
+ _page;
5
+ constructor(locator) {
6
+ this.locator = locator;
7
+ this._page = locator.page();
8
+ }
9
+ columns() {
10
+ return this.locator.getByTestId("board-column");
11
+ }
12
+ column(index) {
13
+ return new ColumnManager(this.locator.getByTestId("board-column").nth(index));
14
+ }
15
+ };
16
+ var ColumnManager = class {
17
+ locator;
18
+ _page;
19
+ constructor(locator) {
20
+ this.locator = locator;
21
+ this._page = locator.page();
22
+ }
23
+ items() {
24
+ return this.locator.getByTestId("board-item");
25
+ }
26
+ item(index) {
27
+ return new ItemManager(this.locator.getByTestId("board-item").nth(index));
28
+ }
29
+ async addItem() {
30
+ await this.locator.getByTestId("board-column-add-item").click();
31
+ }
32
+ header() {
33
+ return this.locator.getByTestId("board-column-header");
34
+ }
35
+ title() {
36
+ return this.header().getByRole("heading");
37
+ }
38
+ async dragTo(target, offset = {
39
+ x: 0,
40
+ y: 0
41
+ }) {
42
+ const handle = this.header().getByTestId("card-drag-handle");
43
+ const handleBox = await handle.boundingBox();
44
+ if (!handleBox) {
45
+ return;
46
+ }
47
+ await handle.hover();
48
+ await this._page.mouse.down();
49
+ await this._page.mouse.move(handleBox.x + handleBox.width / 2 + 1, handleBox.y + handleBox.height / 2, {
50
+ steps: 1
51
+ });
52
+ await this._page.waitForTimeout(200);
53
+ const box = await target.boundingBox();
54
+ if (box) {
55
+ await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, {
56
+ steps: 4
57
+ });
58
+ await this._page.waitForTimeout(100);
59
+ await this._page.mouse.up();
60
+ }
61
+ }
62
+ };
63
+ var ItemManager = class {
64
+ locator;
65
+ _page;
66
+ constructor(locator) {
67
+ this.locator = locator;
68
+ this._page = locator.page();
69
+ }
70
+ title() {
71
+ return this.locator.getByRole("heading").first();
72
+ }
73
+ async dragTo(target, offset = {
74
+ x: 0,
75
+ y: 0
76
+ }) {
77
+ const handle = this.locator.getByTestId("card-drag-handle");
78
+ const box = await target.boundingBox();
79
+ if (box) {
80
+ await handle.hover();
81
+ await this._page.mouse.down();
82
+ await this._page.waitForTimeout(100);
83
+ await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, {
84
+ steps: 4
85
+ });
86
+ await this._page.waitForTimeout(100);
87
+ await this._page.mouse.up();
88
+ }
89
+ }
90
+ /**
91
+ * Drag this item to a column's scroll bottom, hold to trigger auto-scroll,
92
+ * then wait for the drop target to become visible and drop on it.
93
+ *
94
+ * @param holdTarget - The footer element; mouse is held ~20px above it to trigger auto-scroll.
95
+ * @param dropTarget - The element to drop on once it scrolls into view.
96
+ * @param dropOffset - Offset from the drop target center.
97
+ */
98
+ async dragToEndWithAutoScroll(holdTarget, dropTarget, dropOffset = {
99
+ x: 0,
100
+ y: 0
101
+ }) {
102
+ const handle = this.locator.getByTestId("card-drag-handle");
103
+ const holdBox = await holdTarget.boundingBox();
104
+ if (!holdBox) {
105
+ return;
106
+ }
107
+ const holdX = holdBox.x + holdBox.width / 2;
108
+ const holdY = holdBox.y - 20;
109
+ await handle.hover();
110
+ await this._page.mouse.down();
111
+ await this._page.waitForTimeout(100);
112
+ await this._page.mouse.move(holdX, holdY, {
113
+ steps: 4
114
+ });
115
+ for (let i = 0; i < 40; i++) {
116
+ await this._page.waitForTimeout(200);
117
+ await this._page.mouse.move(holdX + i % 2, holdY, {
118
+ steps: 1
119
+ });
120
+ const dropBox = await dropTarget.boundingBox();
121
+ if (dropBox && dropBox.y + dropBox.height < holdY) {
122
+ await this._page.mouse.move(dropOffset.x + dropBox.x + dropBox.width / 2, dropOffset.y + dropBox.y + dropBox.height / 2, {
123
+ steps: 4
124
+ });
125
+ await this._page.waitForTimeout(100);
126
+ await this._page.mouse.up();
127
+ return;
128
+ }
129
+ }
130
+ await this._page.mouse.up();
131
+ }
132
+ };
133
+ export {
134
+ BoardManager,
135
+ ColumnManager,
136
+ ItemManager
137
+ };
138
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/playwright/board-manager.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport type { Locator, Page } from '@playwright/test';\n\nexport class BoardManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n columns(): Locator {\n return this.locator.getByTestId('board-column');\n }\n\n column(index: number): ColumnManager {\n return new ColumnManager(this.locator.getByTestId('board-column').nth(index));\n }\n}\n\nexport class ColumnManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n items(): Locator {\n return this.locator.getByTestId('board-item');\n }\n\n item(index: number): ItemManager {\n return new ItemManager(this.locator.getByTestId('board-item').nth(index));\n }\n\n async addItem(): Promise<void> {\n await this.locator.getByTestId('board-column-add-item').click();\n }\n\n header(): Locator {\n return this.locator.getByTestId('board-column-header');\n }\n\n title(): Locator {\n return this.header().getByRole('heading');\n }\n\n async dragTo(target: Locator, offset = { x: 0, y: 0 }): Promise<void> {\n const handle = this.header().getByTestId('card-drag-handle');\n const handleBox = await handle.boundingBox();\n if (!handleBox) {\n return;\n }\n\n await handle.hover();\n await this._page.mouse.down();\n // Small initial movement to trigger the native drag start.\n await this._page.mouse.move(handleBox.x + handleBox.width / 2 + 1, handleBox.y + handleBox.height / 2, {\n steps: 1,\n });\n // Allow the drag monitor to register and the DOM to settle\n // (the dragged column is removed from visible items, shifting remaining columns).\n await this._page.waitForTimeout(200);\n const box = await target.boundingBox();\n if (box) {\n await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, { steps: 4 });\n // Allow the drop target to process the hover before releasing.\n await this._page.waitForTimeout(100);\n await this._page.mouse.up();\n }\n }\n}\n\nexport class ItemManager {\n private readonly _page: Page;\n\n constructor(readonly locator: Locator) {\n this._page = locator.page();\n }\n\n title(): Locator {\n return this.locator.getByRole('heading').first();\n }\n\n async dragTo(target: Locator, offset = { x: 0, y: 0 }): Promise<void> {\n const handle = this.locator.getByTestId('card-drag-handle');\n const box = await target.boundingBox();\n if (box) {\n await handle.hover();\n await this._page.mouse.down();\n // Allow the drag monitor to register the grab before moving.\n await this._page.waitForTimeout(100);\n await this._page.mouse.move(offset.x + box.x + box.width / 2, offset.y + box.y + box.height / 2, { steps: 4 });\n // Allow the drop target to process the hover before releasing.\n await this._page.waitForTimeout(100);\n await this._page.mouse.up();\n }\n }\n\n /**\n * Drag this item to a column's scroll bottom, hold to trigger auto-scroll,\n * then wait for the drop target to become visible and drop on it.\n *\n * @param holdTarget - The footer element; mouse is held ~20px above it to trigger auto-scroll.\n * @param dropTarget - The element to drop on once it scrolls into view.\n * @param dropOffset - Offset from the drop target center.\n */\n async dragToEndWithAutoScroll(holdTarget: Locator, dropTarget: Locator, dropOffset = { x: 0, y: 0 }): Promise<void> {\n const handle = this.locator.getByTestId('card-drag-handle');\n const holdBox = await holdTarget.boundingBox();\n if (!holdBox) {\n return;\n }\n\n // The hold position is ~20px above the footer to trigger pragmatic auto-scroll.\n const holdX = holdBox.x + holdBox.width / 2;\n const holdY = holdBox.y - 20;\n\n await handle.hover();\n await this._page.mouse.down();\n // Allow the drag monitor to register the grab before moving.\n await this._page.waitForTimeout(100);\n\n // Move to hold position above the footer to trigger auto-scroll.\n await this._page.mouse.move(holdX, holdY, { steps: 4 });\n\n // Hold and nudge mouse periodically to keep auto-scroll active until drop target is visible.\n for (let i = 0; i < 40; i++) {\n // Wait between nudges to give auto-scroll time to advance.\n await this._page.waitForTimeout(200);\n // Small nudge to keep drag events firing (auto-scroll stalls without movement).\n await this._page.mouse.move(holdX + (i % 2), holdY, { steps: 1 });\n\n const dropBox = await dropTarget.boundingBox();\n if (dropBox && dropBox.y + dropBox.height < holdY) {\n // Drop target has scrolled into view, move to it and drop.\n await this._page.mouse.move(\n dropOffset.x + dropBox.x + dropBox.width / 2,\n dropOffset.y + dropBox.y + dropBox.height / 2,\n { steps: 4 },\n );\n // Allow the drop target to process the hover before releasing.\n await this._page.waitForTimeout(100);\n await this._page.mouse.up();\n return;\n }\n }\n\n // Fallback: drop wherever we are.\n await this._page.mouse.up();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["BoardManager", "_page", "locator", "page", "columns", "getByTestId", "column", "index", "ColumnManager", "nth", "items", "item", "ItemManager", "addItem", "click", "header", "title", "getByRole", "dragTo", "target", "offset", "x", "y", "handle", "handleBox", "boundingBox", "hover", "mouse", "down", "move", "width", "height", "steps", "waitForTimeout", "box", "up", "first", "dragToEndWithAutoScroll", "holdTarget", "dropTarget", "dropOffset", "holdBox", "holdX", "holdY", "i", "dropBox"]
7
+ }