@contember/react-board 1.3.0-alpha.9 → 2.0.0-alpha.2

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 (202) hide show
  1. package/dist/development/components/Board.cjs +270 -0
  2. package/dist/development/components/Board.cjs.map +1 -0
  3. package/dist/development/components/Board.js +270 -0
  4. package/dist/development/components/Board.js.map +1 -0
  5. package/dist/development/components/BoardColumn.cjs +7 -0
  6. package/dist/development/components/BoardColumn.cjs.map +1 -0
  7. package/dist/development/components/BoardColumn.js +7 -0
  8. package/dist/development/components/BoardColumn.js.map +1 -0
  9. package/dist/development/components/BoardColumnLabel.cjs +14 -0
  10. package/dist/development/components/BoardColumnLabel.cjs.map +1 -0
  11. package/dist/development/components/BoardColumnLabel.js +14 -0
  12. package/dist/development/components/BoardColumnLabel.js.map +1 -0
  13. package/dist/development/components/BoardEachColumn.cjs +38 -0
  14. package/dist/development/components/BoardEachColumn.cjs.map +1 -0
  15. package/dist/development/components/BoardEachColumn.js +38 -0
  16. package/dist/development/components/BoardEachColumn.js.map +1 -0
  17. package/dist/development/components/BoardEachItem.cjs +56 -0
  18. package/dist/development/components/BoardEachItem.cjs.map +1 -0
  19. package/dist/development/components/BoardEachItem.js +56 -0
  20. package/dist/development/components/BoardEachItem.js.map +1 -0
  21. package/dist/development/components/BoardItem.cjs +8 -0
  22. package/dist/development/components/BoardItem.cjs.map +1 -0
  23. package/dist/development/components/BoardItem.js +8 -0
  24. package/dist/development/components/BoardItem.js.map +1 -0
  25. package/dist/development/components/BoardNullColumn.cjs +18 -0
  26. package/dist/development/components/BoardNullColumn.cjs.map +1 -0
  27. package/dist/development/components/BoardNullColumn.js +18 -0
  28. package/dist/development/components/BoardNullColumn.js.map +1 -0
  29. package/dist/development/contexts.cjs +24 -0
  30. package/dist/development/contexts.cjs.map +1 -0
  31. package/dist/development/contexts.js +24 -0
  32. package/dist/development/contexts.js.map +1 -0
  33. package/dist/development/index.cjs +23 -6
  34. package/dist/development/index.cjs.map +1 -1
  35. package/dist/development/index.js +23 -6
  36. package/dist/development/index.js.map +1 -1
  37. package/dist/development/internal/boardAnalyzer.cjs +16 -0
  38. package/dist/development/internal/boardAnalyzer.cjs.map +1 -0
  39. package/dist/development/internal/boardAnalyzer.js +16 -0
  40. package/dist/development/internal/boardAnalyzer.js.map +1 -0
  41. package/dist/development/internal/useBoardItemsMethods.cjs.map +1 -1
  42. package/dist/development/internal/useBoardItemsMethods.js.map +1 -1
  43. package/dist/development/internal/{useBoardColumns.cjs → useCreateBoardColumns.cjs} +10 -24
  44. package/dist/development/internal/useCreateBoardColumns.cjs.map +1 -0
  45. package/dist/development/internal/{useBoardColumns.js → useCreateBoardColumns.js} +10 -24
  46. package/dist/development/internal/useCreateBoardColumns.js.map +1 -0
  47. package/dist/{production → development/internal}/useDynamicBoard.cjs +14 -18
  48. package/dist/development/internal/useDynamicBoard.cjs.map +1 -0
  49. package/dist/{production → development/internal}/useDynamicBoard.js +14 -18
  50. package/dist/development/internal/useDynamicBoard.js.map +1 -0
  51. package/dist/{production → development/internal}/useStaticBoard.cjs +8 -16
  52. package/dist/development/internal/useStaticBoard.cjs.map +1 -0
  53. package/dist/{production → development/internal}/useStaticBoard.js +9 -17
  54. package/dist/development/internal/useStaticBoard.js.map +1 -0
  55. package/dist/production/components/Board.cjs +118 -0
  56. package/dist/production/components/Board.cjs.map +1 -0
  57. package/dist/production/components/Board.js +118 -0
  58. package/dist/production/components/Board.js.map +1 -0
  59. package/dist/production/components/BoardColumn.cjs +7 -0
  60. package/dist/production/components/BoardColumn.cjs.map +1 -0
  61. package/dist/production/components/BoardColumn.js +7 -0
  62. package/dist/production/components/BoardColumn.js.map +1 -0
  63. package/dist/production/components/BoardColumnLabel.cjs +10 -0
  64. package/dist/production/components/BoardColumnLabel.cjs.map +1 -0
  65. package/dist/production/components/BoardColumnLabel.js +10 -0
  66. package/dist/production/components/BoardColumnLabel.js.map +1 -0
  67. package/dist/production/components/BoardEachColumn.cjs +22 -0
  68. package/dist/production/components/BoardEachColumn.cjs.map +1 -0
  69. package/dist/production/components/BoardEachColumn.js +22 -0
  70. package/dist/production/components/BoardEachColumn.js.map +1 -0
  71. package/dist/production/components/BoardEachItem.cjs +33 -0
  72. package/dist/production/components/BoardEachItem.cjs.map +1 -0
  73. package/dist/production/components/BoardEachItem.js +33 -0
  74. package/dist/production/components/BoardEachItem.js.map +1 -0
  75. package/dist/production/components/BoardItem.cjs +8 -0
  76. package/dist/production/components/BoardItem.cjs.map +1 -0
  77. package/dist/production/components/BoardItem.js +8 -0
  78. package/dist/production/components/BoardItem.js.map +1 -0
  79. package/dist/production/components/BoardNullColumn.cjs +14 -0
  80. package/dist/production/components/BoardNullColumn.cjs.map +1 -0
  81. package/dist/production/components/BoardNullColumn.js +14 -0
  82. package/dist/production/components/BoardNullColumn.js.map +1 -0
  83. package/dist/production/contexts.cjs +24 -0
  84. package/dist/production/contexts.cjs.map +1 -0
  85. package/dist/production/contexts.js +24 -0
  86. package/dist/production/contexts.js.map +1 -0
  87. package/dist/production/index.cjs +23 -6
  88. package/dist/production/index.cjs.map +1 -1
  89. package/dist/production/index.js +23 -6
  90. package/dist/production/index.js.map +1 -1
  91. package/dist/production/internal/boardAnalyzer.cjs +16 -0
  92. package/dist/production/internal/boardAnalyzer.cjs.map +1 -0
  93. package/dist/production/internal/boardAnalyzer.js +16 -0
  94. package/dist/production/internal/boardAnalyzer.js.map +1 -0
  95. package/dist/production/internal/useBoardItemsMethods.cjs.map +1 -1
  96. package/dist/production/internal/useBoardItemsMethods.js.map +1 -1
  97. package/dist/production/internal/{useBoardColumns.cjs → useCreateBoardColumns.cjs} +10 -24
  98. package/dist/production/internal/useCreateBoardColumns.cjs.map +1 -0
  99. package/dist/production/internal/{useBoardColumns.js → useCreateBoardColumns.js} +10 -24
  100. package/dist/production/internal/useCreateBoardColumns.js.map +1 -0
  101. package/dist/{development → production/internal}/useDynamicBoard.cjs +14 -18
  102. package/dist/production/internal/useDynamicBoard.cjs.map +1 -0
  103. package/dist/{development → production/internal}/useDynamicBoard.js +14 -18
  104. package/dist/production/internal/useDynamicBoard.js.map +1 -0
  105. package/dist/{development → production/internal}/useStaticBoard.cjs +8 -16
  106. package/dist/production/internal/useStaticBoard.cjs.map +1 -0
  107. package/dist/{development → production/internal}/useStaticBoard.js +9 -17
  108. package/dist/production/internal/useStaticBoard.js.map +1 -0
  109. package/dist/types/{types.d.ts → components/Board.d.ts} +5 -8
  110. package/dist/types/components/Board.d.ts.map +1 -0
  111. package/dist/types/components/BoardColumn.d.ts +5 -0
  112. package/dist/types/components/BoardColumn.d.ts.map +1 -0
  113. package/dist/types/components/BoardColumnLabel.d.ts +2 -0
  114. package/dist/types/components/BoardColumnLabel.d.ts.map +1 -0
  115. package/dist/types/components/BoardEachColumn.d.ts +10 -0
  116. package/dist/types/components/BoardEachColumn.d.ts.map +1 -0
  117. package/dist/types/components/BoardEachItem.d.ts +10 -0
  118. package/dist/types/components/BoardEachItem.d.ts.map +1 -0
  119. package/dist/types/components/BoardItem.d.ts +8 -0
  120. package/dist/types/components/BoardItem.d.ts.map +1 -0
  121. package/dist/types/components/BoardNullColumn.d.ts +7 -0
  122. package/dist/types/components/BoardNullColumn.d.ts.map +1 -0
  123. package/dist/types/components/index.d.ts +8 -0
  124. package/dist/types/components/index.d.ts.map +1 -0
  125. package/dist/types/contexts.d.ts +18 -0
  126. package/dist/types/contexts.d.ts.map +1 -0
  127. package/dist/types/index.d.ts +2 -4
  128. package/dist/types/index.d.ts.map +1 -1
  129. package/dist/types/internal/boardAnalyzer.d.ts +6 -0
  130. package/dist/types/internal/boardAnalyzer.d.ts.map +1 -0
  131. package/dist/types/internal/useBoardItemsMethods.d.ts +1 -1
  132. package/dist/types/internal/useBoardItemsMethods.d.ts.map +1 -1
  133. package/dist/types/internal/useCreateBoardColumns.d.ts +10 -0
  134. package/dist/types/internal/useCreateBoardColumns.d.ts.map +1 -0
  135. package/dist/types/{useDynamicBoard.d.ts → internal/useDynamicBoard.d.ts} +4 -3
  136. package/dist/types/internal/useDynamicBoard.d.ts.map +1 -0
  137. package/dist/types/internal/useGroupItemsByColumn.d.ts.map +1 -1
  138. package/dist/types/{useStaticBoard.d.ts → internal/useStaticBoard.d.ts} +4 -3
  139. package/dist/types/internal/useStaticBoard.d.ts.map +1 -0
  140. package/dist/types/tsconfig.tsbuildinfo +1 -1
  141. package/dist/types/types/BoardColumnNode.d.ts +15 -0
  142. package/dist/types/types/BoardColumnNode.d.ts.map +1 -0
  143. package/dist/types/types/BoardData.d.ts +5 -0
  144. package/dist/types/types/BoardData.d.ts.map +1 -0
  145. package/dist/types/types/BoardItemNode.d.ts +7 -0
  146. package/dist/types/types/BoardItemNode.d.ts.map +1 -0
  147. package/dist/types/{BoardBindingProps.d.ts → types/BoardMethods.d.ts} +4 -23
  148. package/dist/types/types/BoardMethods.d.ts.map +1 -0
  149. package/dist/types/types/index.d.ts +4 -0
  150. package/dist/types/types/index.d.ts.map +1 -0
  151. package/package.json +10 -7
  152. package/src/components/Board.tsx +219 -0
  153. package/src/components/BoardColumn.tsx +7 -0
  154. package/src/components/BoardColumnLabel.tsx +6 -0
  155. package/src/components/BoardEachColumn.tsx +32 -0
  156. package/src/components/BoardEachItem.tsx +48 -0
  157. package/src/components/BoardItem.tsx +8 -0
  158. package/src/components/BoardNullColumn.tsx +20 -0
  159. package/src/components/index.ts +7 -0
  160. package/src/contexts.ts +23 -0
  161. package/src/index.ts +2 -4
  162. package/src/internal/boardAnalyzer.ts +25 -0
  163. package/src/internal/useBoardItemsMethods.ts +1 -1
  164. package/src/internal/{useBoardColumns.ts → useCreateBoardColumns.ts} +11 -28
  165. package/src/{useDynamicBoard.ts → internal/useDynamicBoard.ts} +21 -18
  166. package/src/{useStaticBoard.ts → internal/useStaticBoard.ts} +13 -18
  167. package/src/tsconfig.json +3 -0
  168. package/src/types/BoardColumnNode.ts +16 -0
  169. package/src/types/BoardData.ts +6 -0
  170. package/src/types/BoardItemNode.ts +7 -0
  171. package/src/{BoardBindingProps.ts → types/BoardMethods.ts} +3 -29
  172. package/src/types/index.ts +3 -0
  173. package/dist/development/Board.cjs +0 -116
  174. package/dist/development/Board.cjs.map +0 -1
  175. package/dist/development/Board.js +0 -116
  176. package/dist/development/Board.js.map +0 -1
  177. package/dist/development/internal/useBoardColumns.cjs.map +0 -1
  178. package/dist/development/internal/useBoardColumns.js.map +0 -1
  179. package/dist/development/useDynamicBoard.cjs.map +0 -1
  180. package/dist/development/useDynamicBoard.js.map +0 -1
  181. package/dist/development/useStaticBoard.cjs.map +0 -1
  182. package/dist/development/useStaticBoard.js.map +0 -1
  183. package/dist/production/Board.cjs +0 -116
  184. package/dist/production/Board.cjs.map +0 -1
  185. package/dist/production/Board.js +0 -116
  186. package/dist/production/Board.js.map +0 -1
  187. package/dist/production/internal/useBoardColumns.cjs.map +0 -1
  188. package/dist/production/internal/useBoardColumns.js.map +0 -1
  189. package/dist/production/useDynamicBoard.cjs.map +0 -1
  190. package/dist/production/useDynamicBoard.js.map +0 -1
  191. package/dist/production/useStaticBoard.cjs.map +0 -1
  192. package/dist/production/useStaticBoard.js.map +0 -1
  193. package/dist/types/Board.d.ts +0 -10
  194. package/dist/types/Board.d.ts.map +0 -1
  195. package/dist/types/BoardBindingProps.d.ts.map +0 -1
  196. package/dist/types/internal/useBoardColumns.d.ts +0 -11
  197. package/dist/types/internal/useBoardColumns.d.ts.map +0 -1
  198. package/dist/types/types.d.ts.map +0 -1
  199. package/dist/types/useDynamicBoard.d.ts.map +0 -1
  200. package/dist/types/useStaticBoard.d.ts.map +0 -1
  201. package/src/Board.tsx +0 -156
  202. package/src/types.ts +0 -64
@@ -1 +1 @@
1
- {"version":3,"file":"useBoardItemsMethods.js","sources":["../../../src/internal/useBoardItemsMethods.ts"],"sourcesContent":["import { BoardAddItemMethod, BoardColumnValue, BoardMethods, BoardMoveItemMethod, BoardRemoveItemMethod } from '../BoardBindingProps'\nimport { useCallback, useMemo } from 'react'\nimport {\n\tBatchUpdatesOptions,\n\tBindingError,\n\tEntityAccessor,\n\tEntityListAccessor,\n\tRelativeSingleField,\n\trepairEntitiesOrder, sortEntities,\n} from '@contember/react-binding'\nimport { BoardColumnKey, UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { arrayMove } from '../utils/arrayMove'\n\n\nexport type UseBoardItemsMethodsProps<ColumnValue extends BoardColumnValue> = {\n\titemEntities: EntityListAccessor\n\tconnectItemToColumn: (item: EntityAccessor, column: ColumnValue | null) => void\n\tdesugaredSortableByField: RelativeSingleField | undefined\n\tsortScope?: 'column' | 'board'\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n\tgetDiscriminatorValue: (entity: EntityAccessor) => BoardColumnKey\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n}\n\nexport type BoardItemsMethods<ColumnValue extends BoardColumnValue> = Pick<BoardMethods<ColumnValue>, 'moveItem' | 'addItem' | 'removeItem'>\n\nexport const useBoardItemsMethods = <ColumnValue extends BoardColumnValue>({\n\titemEntities,\n\tdesugaredSortableByField,\n\tconnectItemToColumn,\n\tgroupItemsByColumn,\n\tgetDiscriminatorValue,\n\tcolumnIdGetter,\n\tsortScope = 'column',\n}: UseBoardItemsMethodsProps<ColumnValue>): BoardItemsMethods<ColumnValue> => {\n\n\tconst itemEntitiesEntitiesGetter = itemEntities.getAccessor\n\n\tconst getSortScopeItems = useCallback((column: string | number | null) => {\n\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\treturn sortScope === 'column'\n\t\t\t? groupItemsByColumn(itemEntities).get(column)?.slice() ?? []\n\t\t\t: sortEntities(Array.from(itemEntities), desugaredSortableByField)\n\t}, [desugaredSortableByField, groupItemsByColumn, itemEntitiesEntitiesGetter, sortScope])\n\n\tconst resolveScopedIndex = useCallback((column: string | number | null, index: number | undefined) => {\n\t\tif (index === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (sortScope === 'column') {\n\t\t\treturn index\n\t\t}\n\t\tconst columnItems = groupItemsByColumn(itemEntities).get(column)?.slice() ?? []\n\t\tconst columnOnIndex = columnItems[index]\n\t\tif (!columnOnIndex) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst sortScopeItems = getSortScopeItems(column)\n\t\treturn sortScopeItems.findIndex(it => it.id === columnOnIndex.id) ?? sortScopeItems.length\n\t}, [getSortScopeItems, groupItemsByColumn, itemEntities, sortScope])\n\n\tconst addItem = useCallback<BoardAddItemMethod<ColumnValue>>((column, index, preprocess) => {\n\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\tconst resolvedPreprocess = (getAccessor: () => EntityAccessor, options: BatchUpdatesOptions) => {\n\t\t\tconnectItemToColumn(getAccessor(), column)\n\t\t\tpreprocess?.(getAccessor, options)\n\t\t}\n\t\tif (!desugaredSortableByField) {\n\t\t\tif (index === undefined) {\n\t\t\t\treturn itemEntities.createNewEntity(resolvedPreprocess)\n\t\t\t}\n\t\t\tthrow new BindingError('Cannot add item at specific index without sortableBy field')\n\t\t}\n\t\tconst columnId = column ? columnIdGetter(column) : null\n\t\tconst sortScopeItems = getSortScopeItems(columnId)\n\n\t\tconst resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length\n\n\n\t\titemEntities.createNewEntity((getEntity, options) => {\n\t\t\tsortScopeItems.splice(resolvedIndex, 0, getEntity())\n\t\t\trepairEntitiesOrder(desugaredSortableByField, sortScopeItems)\n\t\t\tresolvedPreprocess?.(getEntity, options)\n\t\t})\n\t}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getSortScopeItems, itemEntitiesEntitiesGetter, resolveScopedIndex])\n\n\n\tconst moveItem = useMemo<BoardMoveItemMethod<ColumnValue> | undefined>(() => {\n\t\tif (!desugaredSortableByField) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (entity, column, index) => {\n\t\t\tconst currentColumn = getDiscriminatorValue(entity)\n\t\t\tconst columnId = column ? columnIdGetter(column) : null\n\n\t\t\tconnectItemToColumn(entity, column)\n\n\t\t\tif (currentColumn === columnId || sortScope === 'board') {\n\t\t\t\tconst sortScopeItems = getSortScopeItems(columnId)\n\t\t\t\tconst currentIndex = sortScopeItems.findIndex(it => it.id === entity.id)\n\t\t\t\tconst resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length\n\t\t\t\tconst resortedItems = arrayMove(sortScopeItems, currentIndex, resolvedIndex)\n\t\t\t\trepairEntitiesOrder(desugaredSortableByField, resortedItems)\n\t\t\t\treturn\n\t\t\t}\n\n\n\t\t\t// sort scope is column\n\t\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\t\tconst groupedItems = groupItemsByColumn(itemEntities)\n\n\t\t\tconst currentColumnItems = groupedItems.get(currentColumn ?? null)?.slice() ?? []\n\t\t\tconst currentIndex = currentColumnItems.findIndex(it => it.id === entity.id)\n\t\t\tcurrentColumnItems.splice(currentIndex, 1)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, currentColumnItems)\n\n\t\t\tconst newColumnItems = groupedItems.get(columnId)?.slice() ?? []\n\t\t\tnewColumnItems.splice(index, 0, entity)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, newColumnItems)\n\n\t\t}\n\t}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getDiscriminatorValue, getSortScopeItems, groupItemsByColumn, itemEntitiesEntitiesGetter, resolveScopedIndex, sortScope])\n\n\tconst removeItem = useCallback<BoardRemoveItemMethod>(entity => {\n\t\tif (desugaredSortableByField) {\n\t\t\tconst currentColumn = getDiscriminatorValue(entity)\n\t\t\tconst sortScopeItems = getSortScopeItems(currentColumn)\n\t\t\tconst currentIndex = sortScopeItems.findIndex(it => it.id === entity.id)\n\t\t\tsortScopeItems.splice(currentIndex, 1)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, sortScopeItems)\n\t\t}\n\t\tentity.deleteEntity()\n\t}, [desugaredSortableByField, getDiscriminatorValue, getSortScopeItems])\n\n\treturn {\n\t\taddItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t}\n}\n"],"names":["itemEntities","currentIndex"],"mappings":"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"}
1
+ {"version":3,"file":"useBoardItemsMethods.js","sources":["../../../src/internal/useBoardItemsMethods.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n\tBatchUpdatesOptions,\n\tBindingError,\n\tEntityAccessor,\n\tEntityListAccessor,\n\tRelativeSingleField,\n\trepairEntitiesOrder, sortEntities,\n} from '@contember/react-binding'\nimport { BoardColumnKey, UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { arrayMove } from '../utils/arrayMove'\nimport { BoardAddItemMethod, BoardColumnValue, BoardMethods, BoardMoveItemMethod, BoardRemoveItemMethod } from '../types'\n\n\nexport type UseBoardItemsMethodsProps<ColumnValue extends BoardColumnValue> = {\n\titemEntities: EntityListAccessor\n\tconnectItemToColumn: (item: EntityAccessor, column: ColumnValue | null) => void\n\tdesugaredSortableByField: RelativeSingleField | undefined\n\tsortScope?: 'column' | 'board'\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n\tgetDiscriminatorValue: (entity: EntityAccessor) => BoardColumnKey\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n}\n\nexport type BoardItemsMethods<ColumnValue extends BoardColumnValue> = Pick<BoardMethods<ColumnValue>, 'moveItem' | 'addItem' | 'removeItem'>\n\nexport const useBoardItemsMethods = <ColumnValue extends BoardColumnValue>({\n\titemEntities,\n\tdesugaredSortableByField,\n\tconnectItemToColumn,\n\tgroupItemsByColumn,\n\tgetDiscriminatorValue,\n\tcolumnIdGetter,\n\tsortScope = 'column',\n}: UseBoardItemsMethodsProps<ColumnValue>): BoardItemsMethods<ColumnValue> => {\n\n\tconst itemEntitiesEntitiesGetter = itemEntities.getAccessor\n\n\tconst getSortScopeItems = useCallback((column: string | number | null) => {\n\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\treturn sortScope === 'column'\n\t\t\t? groupItemsByColumn(itemEntities).get(column)?.slice() ?? []\n\t\t\t: sortEntities(Array.from(itemEntities), desugaredSortableByField)\n\t}, [desugaredSortableByField, groupItemsByColumn, itemEntitiesEntitiesGetter, sortScope])\n\n\tconst resolveScopedIndex = useCallback((column: string | number | null, index: number | undefined) => {\n\t\tif (index === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (sortScope === 'column') {\n\t\t\treturn index\n\t\t}\n\t\tconst columnItems = groupItemsByColumn(itemEntities).get(column)?.slice() ?? []\n\t\tconst columnOnIndex = columnItems[index]\n\t\tif (!columnOnIndex) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst sortScopeItems = getSortScopeItems(column)\n\t\treturn sortScopeItems.findIndex(it => it.id === columnOnIndex.id) ?? sortScopeItems.length\n\t}, [getSortScopeItems, groupItemsByColumn, itemEntities, sortScope])\n\n\tconst addItem = useCallback<BoardAddItemMethod<ColumnValue>>((column, index, preprocess) => {\n\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\tconst resolvedPreprocess = (getAccessor: () => EntityAccessor, options: BatchUpdatesOptions) => {\n\t\t\tconnectItemToColumn(getAccessor(), column)\n\t\t\tpreprocess?.(getAccessor, options)\n\t\t}\n\t\tif (!desugaredSortableByField) {\n\t\t\tif (index === undefined) {\n\t\t\t\treturn itemEntities.createNewEntity(resolvedPreprocess)\n\t\t\t}\n\t\t\tthrow new BindingError('Cannot add item at specific index without sortableBy field')\n\t\t}\n\t\tconst columnId = column ? columnIdGetter(column) : null\n\t\tconst sortScopeItems = getSortScopeItems(columnId)\n\n\t\tconst resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length\n\n\n\t\titemEntities.createNewEntity((getEntity, options) => {\n\t\t\tsortScopeItems.splice(resolvedIndex, 0, getEntity())\n\t\t\trepairEntitiesOrder(desugaredSortableByField, sortScopeItems)\n\t\t\tresolvedPreprocess?.(getEntity, options)\n\t\t})\n\t}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getSortScopeItems, itemEntitiesEntitiesGetter, resolveScopedIndex])\n\n\n\tconst moveItem = useMemo<BoardMoveItemMethod<ColumnValue> | undefined>(() => {\n\t\tif (!desugaredSortableByField) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (entity, column, index) => {\n\t\t\tconst currentColumn = getDiscriminatorValue(entity)\n\t\t\tconst columnId = column ? columnIdGetter(column) : null\n\n\t\t\tconnectItemToColumn(entity, column)\n\n\t\t\tif (currentColumn === columnId || sortScope === 'board') {\n\t\t\t\tconst sortScopeItems = getSortScopeItems(columnId)\n\t\t\t\tconst currentIndex = sortScopeItems.findIndex(it => it.id === entity.id)\n\t\t\t\tconst resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length\n\t\t\t\tconst resortedItems = arrayMove(sortScopeItems, currentIndex, resolvedIndex)\n\t\t\t\trepairEntitiesOrder(desugaredSortableByField, resortedItems)\n\t\t\t\treturn\n\t\t\t}\n\n\n\t\t\t// sort scope is column\n\t\t\tconst itemEntities = itemEntitiesEntitiesGetter()\n\t\t\tconst groupedItems = groupItemsByColumn(itemEntities)\n\n\t\t\tconst currentColumnItems = groupedItems.get(currentColumn ?? null)?.slice() ?? []\n\t\t\tconst currentIndex = currentColumnItems.findIndex(it => it.id === entity.id)\n\t\t\tcurrentColumnItems.splice(currentIndex, 1)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, currentColumnItems)\n\n\t\t\tconst newColumnItems = groupedItems.get(columnId)?.slice() ?? []\n\t\t\tnewColumnItems.splice(index, 0, entity)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, newColumnItems)\n\n\t\t}\n\t}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getDiscriminatorValue, getSortScopeItems, groupItemsByColumn, itemEntitiesEntitiesGetter, resolveScopedIndex, sortScope])\n\n\tconst removeItem = useCallback<BoardRemoveItemMethod>(entity => {\n\t\tif (desugaredSortableByField) {\n\t\t\tconst currentColumn = getDiscriminatorValue(entity)\n\t\t\tconst sortScopeItems = getSortScopeItems(currentColumn)\n\t\t\tconst currentIndex = sortScopeItems.findIndex(it => it.id === entity.id)\n\t\t\tsortScopeItems.splice(currentIndex, 1)\n\t\t\trepairEntitiesOrder(desugaredSortableByField, sortScopeItems)\n\t\t}\n\t\tentity.deleteEntity()\n\t}, [desugaredSortableByField, getDiscriminatorValue, getSortScopeItems])\n\n\treturn {\n\t\taddItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t}\n}\n"],"names":["itemEntities","currentIndex"],"mappings":";;;AA0BO,MAAM,uBAAuB,CAAuC;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACb,MAA8E;AAE7E,QAAM,6BAA6B,aAAa;AAE1C,QAAA,oBAAoB,YAAY,CAAC,WAAmC;AACzE,UAAMA,gBAAe;AACrB,WAAO,cAAc,WAClB,mBAAmBA,aAAY,EAAE,IAAI,MAAM,GAAG,MAAM,KAAK,CAAA,IACzD,aAAa,MAAM,KAAKA,aAAY,GAAG,wBAAwB;AAAA,KAChE,CAAC,0BAA0B,oBAAoB,4BAA4B,SAAS,CAAC;AAExF,QAAM,qBAAqB,YAAY,CAAC,QAAgC,UAA8B;AACrG,QAAI,UAAU,QAAW;AACjB,aAAA;AAAA,IACR;AACA,QAAI,cAAc,UAAU;AACpB,aAAA;AAAA,IACR;AACM,UAAA,cAAc,mBAAmB,YAAY,EAAE,IAAI,MAAM,GAAG,MAAM,KAAK;AACvE,UAAA,gBAAgB,YAAY,KAAK;AACvC,QAAI,CAAC,eAAe;AACZ,aAAA;AAAA,IACR;AAEM,UAAA,iBAAiB,kBAAkB,MAAM;AACxC,WAAA,eAAe,UAAU,CAAM,OAAA,GAAG,OAAO,cAAc,EAAE,KAAK,eAAe;AAAA,KAClF,CAAC,mBAAmB,oBAAoB,cAAc,SAAS,CAAC;AAEnE,QAAM,UAAU,YAA6C,CAAC,QAAQ,OAAO,eAAe;AAC3F,UAAMA,gBAAe;AACf,UAAA,qBAAqB,CAAC,aAAmC,YAAiC;AAC3E,0BAAA,eAAe,MAAM;AACzC,mBAAa,aAAa,OAAO;AAAA,IAAA;AAElC,QAAI,CAAC,0BAA0B;AAC9B,UAAI,UAAU,QAAW;AACjBA,eAAAA,cAAa,gBAAgB,kBAAkB;AAAA,MACvD;AACM,YAAA,IAAI,aAAa,4DAA4D;AAAA,IACpF;AACA,UAAM,WAAW,SAAS,eAAe,MAAM,IAAI;AAC7C,UAAA,iBAAiB,kBAAkB,QAAQ;AAEjD,UAAM,gBAAgB,mBAAmB,UAAU,KAAK,KAAK,eAAe;AAG5EA,kBAAa,gBAAgB,CAAC,WAAW,YAAY;AACpD,qBAAe,OAAO,eAAe,GAAG,UAAW,CAAA;AACnD,0BAAoB,0BAA0B,cAAc;AAC5D,2BAAqB,WAAW,OAAO;AAAA,IAAA,CACvC;AAAA,EAAA,GACC,CAAC,gBAAgB,qBAAqB,0BAA0B,mBAAmB,4BAA4B,kBAAkB,CAAC;AAG/H,QAAA,WAAW,QAAsD,MAAM;AAC5E,QAAI,CAAC,0BAA0B;AACvB,aAAA;AAAA,IACR;AACO,WAAA,CAAC,QAAQ,QAAQ,UAAU;AAC3B,YAAA,gBAAgB,sBAAsB,MAAM;AAClD,YAAM,WAAW,SAAS,eAAe,MAAM,IAAI;AAEnD,0BAAoB,QAAQ,MAAM;AAE9B,UAAA,kBAAkB,YAAY,cAAc,SAAS;AAClD,cAAA,iBAAiB,kBAAkB,QAAQ;AACjD,cAAMC,gBAAe,eAAe,UAAU,QAAM,GAAG,OAAO,OAAO,EAAE;AACvE,cAAM,gBAAgB,mBAAmB,UAAU,KAAK,KAAK,eAAe;AAC5E,cAAM,gBAAgB,UAAU,gBAAgBA,eAAc,aAAa;AAC3E,4BAAoB,0BAA0B,aAAa;AAC3D;AAAA,MACD;AAIA,YAAMD,gBAAe;AACf,YAAA,eAAe,mBAAmBA,aAAY;AAE9C,YAAA,qBAAqB,aAAa,IAAI,iBAAiB,IAAI,GAAG,WAAW;AAC/E,YAAM,eAAe,mBAAmB,UAAU,QAAM,GAAG,OAAO,OAAO,EAAE;AACxD,yBAAA,OAAO,cAAc,CAAC;AACzC,0BAAoB,0BAA0B,kBAAkB;AAEhE,YAAM,iBAAiB,aAAa,IAAI,QAAQ,GAAG,WAAW;AAC/C,qBAAA,OAAO,OAAO,GAAG,MAAM;AACtC,0BAAoB,0BAA0B,cAAc;AAAA,IAAA;AAAA,EAG9D,GAAG,CAAC,gBAAgB,qBAAqB,0BAA0B,uBAAuB,mBAAmB,oBAAoB,4BAA4B,oBAAoB,SAAS,CAAC;AAErL,QAAA,aAAa,YAAmC,CAAU,WAAA;AAC/D,QAAI,0BAA0B;AACvB,YAAA,gBAAgB,sBAAsB,MAAM;AAC5C,YAAA,iBAAiB,kBAAkB,aAAa;AACtD,YAAM,eAAe,eAAe,UAAU,QAAM,GAAG,OAAO,OAAO,EAAE;AACxD,qBAAA,OAAO,cAAc,CAAC;AACrC,0BAAoB,0BAA0B,cAAc;AAAA,IAC7D;AACA,WAAO,aAAa;AAAA,EAClB,GAAA,CAAC,0BAA0B,uBAAuB,iBAAiB,CAAC;AAEhE,SAAA;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;"}
@@ -2,30 +2,19 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const react = require("react");
4
4
  const _const = require("../const.cjs");
5
- const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }) => {
5
+ const useCreateBoardColumns = ({ groupItemsByColumn, items, columns, columnIdGetter }) => {
6
6
  return react.useMemo(() => {
7
7
  const itemsByColumn = groupItemsByColumn(items);
8
- const result = [];
9
- let index = 0;
10
8
  const nullItems = itemsByColumn.get(null) ?? [];
11
- const pushNullColumn = () => {
12
- if (nullColumn === "never") {
13
- return;
14
- }
15
- if (nullColumn === "auto" && nullItems.length === 0) {
16
- return;
17
- }
18
- result.push({
9
+ const result = [
10
+ {
19
11
  id: _const.BoardNullColumnPlaceholder,
20
- index: index++,
12
+ index: Number.MAX_SAFE_INTEGER,
21
13
  value: null,
22
14
  items: nullItems.map((it, index2) => ({ value: it, id: it.id, index: index2 }))
23
- });
24
- };
25
- if (nullColumnPlacement === "start") {
26
- index--;
27
- pushNullColumn();
28
- }
15
+ }
16
+ ];
17
+ let index = 0;
29
18
  for (const column of columns) {
30
19
  result.push({
31
20
  id: columnIdGetter(column),
@@ -34,11 +23,8 @@ const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullC
34
23
  items: itemsByColumn.get(columnIdGetter(column))?.map((it, index2) => ({ value: it, id: it.id, index: index2 })) ?? []
35
24
  });
36
25
  }
37
- if (nullColumnPlacement !== "start") {
38
- pushNullColumn();
39
- }
40
26
  return result;
41
- }, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement]);
27
+ }, [columnIdGetter, columns, groupItemsByColumn, items]);
42
28
  };
43
- exports.useBoardColumns = useBoardColumns;
44
- //# sourceMappingURL=useBoardColumns.cjs.map
29
+ exports.useCreateBoardColumns = useCreateBoardColumns;
30
+ //# sourceMappingURL=useCreateBoardColumns.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateBoardColumns.cjs","sources":["../../../src/internal/useCreateBoardColumns.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { EntityListAccessor } from '@contember/react-binding'\nimport { BoardNullColumnPlaceholder } from '../const'\nimport { BoardColumnNode, BoardColumnValue } from '../types'\n\nexport const useCreateBoardColumns = <ColumnValue extends BoardColumnValue>({ groupItemsByColumn, items, columns, columnIdGetter }: {\n\titems: EntityListAccessor\n\tcolumns: Iterable<ColumnValue>\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n}): BoardColumnNode<ColumnValue>[] => {\n\n\treturn useMemo(() => {\n\t\tconst itemsByColumn = groupItemsByColumn(items)\n\n\t\tconst nullItems = itemsByColumn.get(null) ?? []\n\t\tconst result: BoardColumnNode<ColumnValue>[] = [\n\t\t\t{\n\t\t\t\tid: BoardNullColumnPlaceholder,\n\t\t\t\tindex: Number.MAX_SAFE_INTEGER,\n\t\t\t\tvalue: null,\n\t\t\t\titems: nullItems.map((it, index) => ({ value: it, id: it.id, index })),\n\t\t\t},\n\t\t]\n\t\tlet index = 0\n\n\n\t\tfor (const column of columns) {\n\t\t\tresult.push({\n\t\t\t\tid: columnIdGetter(column),\n\t\t\t\tindex: index++,\n\t\t\t\tvalue: column,\n\t\t\t\titems: itemsByColumn.get(columnIdGetter(column))?.map((it, index) => ({ value: it, id: it.id, index })) ?? [],\n\t\t\t})\n\t\t}\n\t\treturn result\n\n\t}, [columnIdGetter, columns, groupItemsByColumn, items])\n}\n"],"names":["useMemo","BoardNullColumnPlaceholder","index"],"mappings":";;;;AAMO,MAAM,wBAAwB,CAAuC,EAAE,oBAAoB,OAAO,SAAS,qBAK5E;AAErC,SAAOA,cAAQ,MAAM;AACd,UAAA,gBAAgB,mBAAmB,KAAK;AAE9C,UAAM,YAAY,cAAc,IAAI,IAAI,KAAK,CAAA;AAC7C,UAAM,SAAyC;AAAA,MAC9C;AAAA,QACC,IAAIC,OAAA;AAAA,QACJ,OAAO,OAAO;AAAA,QACd,OAAO;AAAA,QACP,OAAO,UAAU,IAAI,CAAC,IAAIC,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,OAAQ,EAAA;AAAA,MACtE;AAAA,IAAA;AAED,QAAI,QAAQ;AAGZ,eAAW,UAAU,SAAS;AAC7B,aAAO,KAAK;AAAA,QACX,IAAI,eAAe,MAAM;AAAA,QACzB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,cAAc,IAAI,eAAe,MAAM,CAAC,GAAG,IAAI,CAAC,IAAIA,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,SAAQ,KAAK,CAAC;AAAA,MAAA,CAC5G;AAAA,IACF;AACO,WAAA;AAAA,KAEL,CAAC,gBAAgB,SAAS,oBAAoB,KAAK,CAAC;AACxD;;"}
@@ -1,29 +1,18 @@
1
1
  import { useMemo } from "react";
2
2
  import { BoardNullColumnPlaceholder } from "../const.js";
3
- const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }) => {
3
+ const useCreateBoardColumns = ({ groupItemsByColumn, items, columns, columnIdGetter }) => {
4
4
  return useMemo(() => {
5
5
  const itemsByColumn = groupItemsByColumn(items);
6
- const result = [];
7
- let index = 0;
8
6
  const nullItems = itemsByColumn.get(null) ?? [];
9
- const pushNullColumn = () => {
10
- if (nullColumn === "never") {
11
- return;
12
- }
13
- if (nullColumn === "auto" && nullItems.length === 0) {
14
- return;
15
- }
16
- result.push({
7
+ const result = [
8
+ {
17
9
  id: BoardNullColumnPlaceholder,
18
- index: index++,
10
+ index: Number.MAX_SAFE_INTEGER,
19
11
  value: null,
20
12
  items: nullItems.map((it, index2) => ({ value: it, id: it.id, index: index2 }))
21
- });
22
- };
23
- if (nullColumnPlacement === "start") {
24
- index--;
25
- pushNullColumn();
26
- }
13
+ }
14
+ ];
15
+ let index = 0;
27
16
  for (const column of columns) {
28
17
  result.push({
29
18
  id: columnIdGetter(column),
@@ -32,13 +21,10 @@ const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullC
32
21
  items: itemsByColumn.get(columnIdGetter(column))?.map((it, index2) => ({ value: it, id: it.id, index: index2 })) ?? []
33
22
  });
34
23
  }
35
- if (nullColumnPlacement !== "start") {
36
- pushNullColumn();
37
- }
38
24
  return result;
39
- }, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement]);
25
+ }, [columnIdGetter, columns, groupItemsByColumn, items]);
40
26
  };
41
27
  export {
42
- useBoardColumns
28
+ useCreateBoardColumns
43
29
  };
44
- //# sourceMappingURL=useBoardColumns.js.map
30
+ //# sourceMappingURL=useCreateBoardColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateBoardColumns.js","sources":["../../../src/internal/useCreateBoardColumns.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { EntityListAccessor } from '@contember/react-binding'\nimport { BoardNullColumnPlaceholder } from '../const'\nimport { BoardColumnNode, BoardColumnValue } from '../types'\n\nexport const useCreateBoardColumns = <ColumnValue extends BoardColumnValue>({ groupItemsByColumn, items, columns, columnIdGetter }: {\n\titems: EntityListAccessor\n\tcolumns: Iterable<ColumnValue>\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n}): BoardColumnNode<ColumnValue>[] => {\n\n\treturn useMemo(() => {\n\t\tconst itemsByColumn = groupItemsByColumn(items)\n\n\t\tconst nullItems = itemsByColumn.get(null) ?? []\n\t\tconst result: BoardColumnNode<ColumnValue>[] = [\n\t\t\t{\n\t\t\t\tid: BoardNullColumnPlaceholder,\n\t\t\t\tindex: Number.MAX_SAFE_INTEGER,\n\t\t\t\tvalue: null,\n\t\t\t\titems: nullItems.map((it, index) => ({ value: it, id: it.id, index })),\n\t\t\t},\n\t\t]\n\t\tlet index = 0\n\n\n\t\tfor (const column of columns) {\n\t\t\tresult.push({\n\t\t\t\tid: columnIdGetter(column),\n\t\t\t\tindex: index++,\n\t\t\t\tvalue: column,\n\t\t\t\titems: itemsByColumn.get(columnIdGetter(column))?.map((it, index) => ({ value: it, id: it.id, index })) ?? [],\n\t\t\t})\n\t\t}\n\t\treturn result\n\n\t}, [columnIdGetter, columns, groupItemsByColumn, items])\n}\n"],"names":["index"],"mappings":";;AAMO,MAAM,wBAAwB,CAAuC,EAAE,oBAAoB,OAAO,SAAS,qBAK5E;AAErC,SAAO,QAAQ,MAAM;AACd,UAAA,gBAAgB,mBAAmB,KAAK;AAE9C,UAAM,YAAY,cAAc,IAAI,IAAI,KAAK,CAAA;AAC7C,UAAM,SAAyC;AAAA,MAC9C;AAAA,QACC,IAAI;AAAA,QACJ,OAAO,OAAO;AAAA,QACd,OAAO;AAAA,QACP,OAAO,UAAU,IAAI,CAAC,IAAIA,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,OAAQ,EAAA;AAAA,MACtE;AAAA,IAAA;AAED,QAAI,QAAQ;AAGZ,eAAW,UAAU,SAAS;AAC7B,aAAO,KAAK;AAAA,QACX,IAAI,eAAe,MAAM;AAAA,QACzB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,cAAc,IAAI,eAAe,MAAM,CAAC,GAAG,IAAI,CAAC,IAAIA,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,SAAQ,KAAK,CAAC;AAAA,MAAA,CAC5G;AAAA,IACF;AACO,WAAA;AAAA,KAEL,CAAC,gBAAgB,SAAS,oBAAoB,KAAK,CAAC;AACxD;"}
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const react = require("react");
4
4
  const reactBinding = require("@contember/react-binding");
5
- const useGroupItemsByColumn = require("./internal/useGroupItemsByColumn.cjs");
6
- const useBoardColumns = require("./internal/useBoardColumns.cjs");
7
- const useBoardItemsMethods = require("./internal/useBoardItemsMethods.cjs");
8
- const arrayMove = require("./utils/arrayMove.cjs");
5
+ const useGroupItemsByColumn = require("./useGroupItemsByColumn.cjs");
6
+ const useCreateBoardColumns = require("./useCreateBoardColumns.cjs");
7
+ const arrayMove = require("../utils/arrayMove.cjs");
8
+ const useBoardItemsMethods = require("./useBoardItemsMethods.cjs");
9
9
  const useGetSortedColumns = (desugaredColumnSortableByField) => {
10
10
  return react.useCallback((columnEntities) => {
11
11
  return reactBinding.sortEntities(Array.from(columnEntities), desugaredColumnSortableByField);
@@ -17,9 +17,7 @@ const useDynamicBoard = ({
17
17
  columnsSortableBy,
18
18
  discriminationField,
19
19
  columnEntities,
20
- itemEntities,
21
- nullColumnPlacement = "end",
22
- nullColumn = "auto"
20
+ itemEntities
23
21
  }) => {
24
22
  const desugaredSortableByField = reactBinding.useDesugaredRelativeSingleField(sortableBy);
25
23
  const desugaredColumnSortableByField = reactBinding.useDesugaredRelativeSingleField(columnsSortableBy);
@@ -32,13 +30,11 @@ const useDynamicBoard = ({
32
30
  }, [desugaredDiscriminationField, exitingColumnIds]);
33
31
  const groupItemsByColumn = useGroupItemsByColumn.useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField);
34
32
  const getSortedColumns = useGetSortedColumns(desugaredColumnSortableByField);
35
- const columnsResult = useBoardColumns.useBoardColumns({
33
+ const columnsResult = useCreateBoardColumns.useCreateBoardColumns({
36
34
  columns: getSortedColumns(columnEntities),
37
35
  columnIdGetter: (it) => it.id,
38
36
  groupItemsByColumn,
39
- items: itemEntities,
40
- nullColumn,
41
- nullColumnPlacement
37
+ items: itemEntities
42
38
  });
43
39
  const addColumn = react.useCallback((index, preprocess) => {
44
40
  const columnEntities2 = columnEntitiesGetter();
@@ -85,15 +81,15 @@ const useDynamicBoard = ({
85
81
  groupItemsByColumn,
86
82
  itemEntities
87
83
  });
88
- return {
89
- columns: columnsResult,
90
- addColumn,
84
+ const methods = react.useMemo(() => ({
91
85
  addItem,
92
- moveColumn,
93
86
  moveItem,
94
- removeColumn,
95
- removeItem
96
- };
87
+ removeItem,
88
+ moveColumn,
89
+ addColumn,
90
+ removeColumn
91
+ }), [addItem, moveItem, removeItem, moveColumn, addColumn, removeColumn]);
92
+ return [{ columns: columnsResult }, methods];
97
93
  };
98
94
  exports.useDynamicBoard = useDynamicBoard;
99
95
  //# sourceMappingURL=useDynamicBoard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicBoard.cjs","sources":["../../../src/internal/useDynamicBoard.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n\taddEntityAtIndex,\n\tBindingError,\n\tEntityAccessor,\n\tEntityListAccessor,\n\tRelativeSingleField,\n\trepairEntitiesOrder,\n\tsortEntities,\n\tuseDesugaredRelativeSingleEntity,\n\tuseDesugaredRelativeSingleField,\n} from '@contember/react-binding'\nimport {\n\tBoardAddColumnMethod,\n\tBoardMethods,\n\tBoardMoveColumnMethod,\n\tBoardRemoveColumnMethod,\n} from '../types'\nimport { useGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { useCreateBoardColumns } from './useCreateBoardColumns'\nimport { arrayMove } from '../utils/arrayMove'\nimport { useBoardItemsMethods } from './useBoardItemsMethods'\nimport { BoardData } from '../types/BoardData'\nimport { BoardCommonProps, BoardDynamicColumnsBindingProps } from '../components'\n\n\nexport type UseDynamicBoardBindingProps =\n\t& Omit<BoardCommonProps, 'children'>\n\t& BoardDynamicColumnsBindingProps\n\t& {\n\t\tcolumnEntities: EntityListAccessor\n\t\titemEntities: EntityListAccessor\n\t}\n\nconst useGetSortedColumns = (desugaredColumnSortableByField: RelativeSingleField | undefined) => {\n\treturn useCallback((columnEntities: EntityListAccessor) => {\n\t\treturn sortEntities(Array.from(columnEntities), desugaredColumnSortableByField)\n\t}, [desugaredColumnSortableByField])\n}\n\nexport const useDynamicBoard = ({\n\tsortableBy,\n\tsortScope,\n\tcolumnsSortableBy,\n\tdiscriminationField,\n\tcolumnEntities,\n\titemEntities,\n}: UseDynamicBoardBindingProps): [BoardData<EntityAccessor>, BoardMethods<EntityAccessor>] => {\n\n\tconst desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy)\n\tconst desugaredColumnSortableByField = useDesugaredRelativeSingleField(columnsSortableBy)\n\tconst desugaredDiscriminationField = useDesugaredRelativeSingleEntity(discriminationField)\n\n\tconst columnEntitiesGetter = columnEntities.getAccessor\n\n\n\tconst exitingColumnIds = useMemo(() => new Set(Array.from(columnEntities).map(it => it.id)), [columnEntities])\n\n\tconst getDiscriminatorValue = useCallback((entity: EntityAccessor) => {\n\t\tconst entityId = entity.getRelativeSingleEntity(desugaredDiscriminationField).id\n\t\treturn exitingColumnIds.has(entityId) ? entityId : null\n\t}, [desugaredDiscriminationField, exitingColumnIds])\n\n\tconst groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField)\n\n\tconst getSortedColumns = useGetSortedColumns(desugaredColumnSortableByField)\n\n\tconst columnsResult = useCreateBoardColumns<EntityAccessor>({\n\t\tcolumns: getSortedColumns(columnEntities),\n\t\tcolumnIdGetter: it => it.id,\n\t\tgroupItemsByColumn,\n\t\titems: itemEntities,\n\t})\n\n\tconst addColumn = useCallback<BoardAddColumnMethod>((index, preprocess) => {\n\t\tconst columnEntities = columnEntitiesGetter()\n\t\tif (!desugaredColumnSortableByField) {\n\t\t\tif (index === undefined) {\n\t\t\t\treturn columnEntities.createNewEntity(preprocess)\n\t\t\t}\n\t\t\tthrow new BindingError('Cannot add column at specific index without sortableBy field')\n\t\t}\n\t\taddEntityAtIndex(columnEntities, desugaredColumnSortableByField, columnEntities.length, preprocess)\n\t}, [columnEntitiesGetter, desugaredColumnSortableByField])\n\n\tconst connectItemToColumn = useCallback((item: EntityAccessor, column: EntityAccessor | null) => {\n\t\tconst hasOne = desugaredDiscriminationField.hasOneRelationPath\n\t\tconst parentEntity = item.getRelativeSingleEntity({ hasOneRelationPath: hasOne.slice(0, -1) })\n\t\tif (column) {\n\t\t\tparentEntity.connectEntityAtField(hasOne[hasOne.length - 1].field, column)\n\t\t} else {\n\t\t\tparentEntity.disconnectEntityAtField(hasOne[hasOne.length - 1].field)\n\t\t}\n\n\t}, [desugaredDiscriminationField.hasOneRelationPath])\n\n\n\tconst moveColumn = useMemo<BoardMoveColumnMethod | undefined>(() => {\n\t\tif (!desugaredColumnSortableByField) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (entity, index) => {\n\t\t\tconst sortedColumns = getSortedColumns(columnEntitiesGetter())\n\t\t\tconst currentIndex = sortedColumns.findIndex(it => it.id === entity.id)\n\t\t\tconst resortedItems = arrayMove(sortedColumns, currentIndex, index)\n\t\t\trepairEntitiesOrder(desugaredColumnSortableByField, resortedItems)\n\t\t}\n\t}, [columnEntitiesGetter, desugaredColumnSortableByField, getSortedColumns])\n\n\n\tconst removeColumn = useCallback<BoardRemoveColumnMethod>(entity => {\n\t\tentity.deleteEntity()\n\t\tif (desugaredSortableByField) {\n\t\t\trepairEntitiesOrder(desugaredSortableByField, Array.from(columnEntitiesGetter()))\n\t\t}\n\t}, [columnEntitiesGetter, desugaredSortableByField])\n\n\tconst { addItem, moveItem, removeItem } = useBoardItemsMethods({\n\t\tcolumnIdGetter: it => it.id,\n\t\tconnectItemToColumn,\n\t\tdesugaredSortableByField,\n\t\tsortScope,\n\t\tgetDiscriminatorValue,\n\t\tgroupItemsByColumn,\n\t\titemEntities,\n\t})\n\n\tconst methods = useMemo(() => ({\n\t\taddItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t\tmoveColumn,\n\t\taddColumn,\n\t\tremoveColumn,\n\t}), [addItem, moveItem, removeItem, moveColumn, addColumn, removeColumn])\n\n\treturn [{ columns: columnsResult }, methods]\n}\n"],"names":["useCallback","sortEntities","useDesugaredRelativeSingleField","useDesugaredRelativeSingleEntity","useMemo","useGroupItemsByColumn","useCreateBoardColumns","columnEntities","BindingError","addEntityAtIndex","arrayMove","repairEntitiesOrder","useBoardItemsMethods"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { useMemo, useCallback } from "react";
2
2
  import { useDesugaredRelativeSingleField, useDesugaredRelativeSingleEntity, BindingError, addEntityAtIndex, repairEntitiesOrder, sortEntities } from "@contember/react-binding";
3
- import { useGroupItemsByColumn } from "./internal/useGroupItemsByColumn.js";
4
- import { useBoardColumns } from "./internal/useBoardColumns.js";
5
- import { useBoardItemsMethods } from "./internal/useBoardItemsMethods.js";
6
- import { arrayMove } from "./utils/arrayMove.js";
3
+ import { useGroupItemsByColumn } from "./useGroupItemsByColumn.js";
4
+ import { useCreateBoardColumns } from "./useCreateBoardColumns.js";
5
+ import { arrayMove } from "../utils/arrayMove.js";
6
+ import { useBoardItemsMethods } from "./useBoardItemsMethods.js";
7
7
  const useGetSortedColumns = (desugaredColumnSortableByField) => {
8
8
  return useCallback((columnEntities) => {
9
9
  return sortEntities(Array.from(columnEntities), desugaredColumnSortableByField);
@@ -15,9 +15,7 @@ const useDynamicBoard = ({
15
15
  columnsSortableBy,
16
16
  discriminationField,
17
17
  columnEntities,
18
- itemEntities,
19
- nullColumnPlacement = "end",
20
- nullColumn = "auto"
18
+ itemEntities
21
19
  }) => {
22
20
  const desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy);
23
21
  const desugaredColumnSortableByField = useDesugaredRelativeSingleField(columnsSortableBy);
@@ -30,13 +28,11 @@ const useDynamicBoard = ({
30
28
  }, [desugaredDiscriminationField, exitingColumnIds]);
31
29
  const groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField);
32
30
  const getSortedColumns = useGetSortedColumns(desugaredColumnSortableByField);
33
- const columnsResult = useBoardColumns({
31
+ const columnsResult = useCreateBoardColumns({
34
32
  columns: getSortedColumns(columnEntities),
35
33
  columnIdGetter: (it) => it.id,
36
34
  groupItemsByColumn,
37
- items: itemEntities,
38
- nullColumn,
39
- nullColumnPlacement
35
+ items: itemEntities
40
36
  });
41
37
  const addColumn = useCallback((index, preprocess) => {
42
38
  const columnEntities2 = columnEntitiesGetter();
@@ -83,15 +79,15 @@ const useDynamicBoard = ({
83
79
  groupItemsByColumn,
84
80
  itemEntities
85
81
  });
86
- return {
87
- columns: columnsResult,
88
- addColumn,
82
+ const methods = useMemo(() => ({
89
83
  addItem,
90
- moveColumn,
91
84
  moveItem,
92
- removeColumn,
93
- removeItem
94
- };
85
+ removeItem,
86
+ moveColumn,
87
+ addColumn,
88
+ removeColumn
89
+ }), [addItem, moveItem, removeItem, moveColumn, addColumn, removeColumn]);
90
+ return [{ columns: columnsResult }, methods];
95
91
  };
96
92
  export {
97
93
  useDynamicBoard
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicBoard.js","sources":["../../../src/internal/useDynamicBoard.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport {\n\taddEntityAtIndex,\n\tBindingError,\n\tEntityAccessor,\n\tEntityListAccessor,\n\tRelativeSingleField,\n\trepairEntitiesOrder,\n\tsortEntities,\n\tuseDesugaredRelativeSingleEntity,\n\tuseDesugaredRelativeSingleField,\n} from '@contember/react-binding'\nimport {\n\tBoardAddColumnMethod,\n\tBoardMethods,\n\tBoardMoveColumnMethod,\n\tBoardRemoveColumnMethod,\n} from '../types'\nimport { useGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { useCreateBoardColumns } from './useCreateBoardColumns'\nimport { arrayMove } from '../utils/arrayMove'\nimport { useBoardItemsMethods } from './useBoardItemsMethods'\nimport { BoardData } from '../types/BoardData'\nimport { BoardCommonProps, BoardDynamicColumnsBindingProps } from '../components'\n\n\nexport type UseDynamicBoardBindingProps =\n\t& Omit<BoardCommonProps, 'children'>\n\t& BoardDynamicColumnsBindingProps\n\t& {\n\t\tcolumnEntities: EntityListAccessor\n\t\titemEntities: EntityListAccessor\n\t}\n\nconst useGetSortedColumns = (desugaredColumnSortableByField: RelativeSingleField | undefined) => {\n\treturn useCallback((columnEntities: EntityListAccessor) => {\n\t\treturn sortEntities(Array.from(columnEntities), desugaredColumnSortableByField)\n\t}, [desugaredColumnSortableByField])\n}\n\nexport const useDynamicBoard = ({\n\tsortableBy,\n\tsortScope,\n\tcolumnsSortableBy,\n\tdiscriminationField,\n\tcolumnEntities,\n\titemEntities,\n}: UseDynamicBoardBindingProps): [BoardData<EntityAccessor>, BoardMethods<EntityAccessor>] => {\n\n\tconst desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy)\n\tconst desugaredColumnSortableByField = useDesugaredRelativeSingleField(columnsSortableBy)\n\tconst desugaredDiscriminationField = useDesugaredRelativeSingleEntity(discriminationField)\n\n\tconst columnEntitiesGetter = columnEntities.getAccessor\n\n\n\tconst exitingColumnIds = useMemo(() => new Set(Array.from(columnEntities).map(it => it.id)), [columnEntities])\n\n\tconst getDiscriminatorValue = useCallback((entity: EntityAccessor) => {\n\t\tconst entityId = entity.getRelativeSingleEntity(desugaredDiscriminationField).id\n\t\treturn exitingColumnIds.has(entityId) ? entityId : null\n\t}, [desugaredDiscriminationField, exitingColumnIds])\n\n\tconst groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField)\n\n\tconst getSortedColumns = useGetSortedColumns(desugaredColumnSortableByField)\n\n\tconst columnsResult = useCreateBoardColumns<EntityAccessor>({\n\t\tcolumns: getSortedColumns(columnEntities),\n\t\tcolumnIdGetter: it => it.id,\n\t\tgroupItemsByColumn,\n\t\titems: itemEntities,\n\t})\n\n\tconst addColumn = useCallback<BoardAddColumnMethod>((index, preprocess) => {\n\t\tconst columnEntities = columnEntitiesGetter()\n\t\tif (!desugaredColumnSortableByField) {\n\t\t\tif (index === undefined) {\n\t\t\t\treturn columnEntities.createNewEntity(preprocess)\n\t\t\t}\n\t\t\tthrow new BindingError('Cannot add column at specific index without sortableBy field')\n\t\t}\n\t\taddEntityAtIndex(columnEntities, desugaredColumnSortableByField, columnEntities.length, preprocess)\n\t}, [columnEntitiesGetter, desugaredColumnSortableByField])\n\n\tconst connectItemToColumn = useCallback((item: EntityAccessor, column: EntityAccessor | null) => {\n\t\tconst hasOne = desugaredDiscriminationField.hasOneRelationPath\n\t\tconst parentEntity = item.getRelativeSingleEntity({ hasOneRelationPath: hasOne.slice(0, -1) })\n\t\tif (column) {\n\t\t\tparentEntity.connectEntityAtField(hasOne[hasOne.length - 1].field, column)\n\t\t} else {\n\t\t\tparentEntity.disconnectEntityAtField(hasOne[hasOne.length - 1].field)\n\t\t}\n\n\t}, [desugaredDiscriminationField.hasOneRelationPath])\n\n\n\tconst moveColumn = useMemo<BoardMoveColumnMethod | undefined>(() => {\n\t\tif (!desugaredColumnSortableByField) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (entity, index) => {\n\t\t\tconst sortedColumns = getSortedColumns(columnEntitiesGetter())\n\t\t\tconst currentIndex = sortedColumns.findIndex(it => it.id === entity.id)\n\t\t\tconst resortedItems = arrayMove(sortedColumns, currentIndex, index)\n\t\t\trepairEntitiesOrder(desugaredColumnSortableByField, resortedItems)\n\t\t}\n\t}, [columnEntitiesGetter, desugaredColumnSortableByField, getSortedColumns])\n\n\n\tconst removeColumn = useCallback<BoardRemoveColumnMethod>(entity => {\n\t\tentity.deleteEntity()\n\t\tif (desugaredSortableByField) {\n\t\t\trepairEntitiesOrder(desugaredSortableByField, Array.from(columnEntitiesGetter()))\n\t\t}\n\t}, [columnEntitiesGetter, desugaredSortableByField])\n\n\tconst { addItem, moveItem, removeItem } = useBoardItemsMethods({\n\t\tcolumnIdGetter: it => it.id,\n\t\tconnectItemToColumn,\n\t\tdesugaredSortableByField,\n\t\tsortScope,\n\t\tgetDiscriminatorValue,\n\t\tgroupItemsByColumn,\n\t\titemEntities,\n\t})\n\n\tconst methods = useMemo(() => ({\n\t\taddItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t\tmoveColumn,\n\t\taddColumn,\n\t\tremoveColumn,\n\t}), [addItem, moveItem, removeItem, moveColumn, addColumn, removeColumn])\n\n\treturn [{ columns: columnsResult }, methods]\n}\n"],"names":["columnEntities"],"mappings":"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"}
@@ -2,17 +2,15 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const react = require("react");
4
4
  const reactBinding = require("@contember/react-binding");
5
- const useGroupItemsByColumn = require("./internal/useGroupItemsByColumn.cjs");
6
- const useBoardColumns = require("./internal/useBoardColumns.cjs");
7
- const useBoardItemsMethods = require("./internal/useBoardItemsMethods.cjs");
5
+ const useGroupItemsByColumn = require("./useGroupItemsByColumn.cjs");
6
+ const useCreateBoardColumns = require("./useCreateBoardColumns.cjs");
7
+ const useBoardItemsMethods = require("./useBoardItemsMethods.cjs");
8
8
  const useStaticBoard = ({
9
9
  sortableBy,
10
10
  sortScope,
11
11
  columns,
12
12
  discriminationField,
13
- itemEntities,
14
- nullColumnPlacement = "end",
15
- nullColumn = "auto"
13
+ itemEntities
16
14
  }) => {
17
15
  const desugaredSortableByField = reactBinding.useDesugaredRelativeSingleField(sortableBy);
18
16
  const desugaredDiscriminationField = reactBinding.useDesugaredRelativeSingleField(discriminationField);
@@ -20,13 +18,11 @@ const useStaticBoard = ({
20
18
  return entity.getRelativeSingleField(desugaredDiscriminationField).value;
21
19
  }, [desugaredDiscriminationField]);
22
20
  const groupItemsByColumn = useGroupItemsByColumn.useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField);
23
- const columnsResult = useBoardColumns.useBoardColumns({
21
+ const columnsResult = useCreateBoardColumns.useCreateBoardColumns({
24
22
  columns,
25
23
  columnIdGetter: (it) => it.value,
26
24
  groupItemsByColumn,
27
- items: itemEntities,
28
- nullColumn,
29
- nullColumnPlacement
25
+ items: itemEntities
30
26
  });
31
27
  const connectItemToColumn = react.useCallback((item, column) => {
32
28
  item.getRelativeSingleField(desugaredDiscriminationField).updateValue(column?.value ?? null);
@@ -40,12 +36,8 @@ const useStaticBoard = ({
40
36
  sortScope,
41
37
  getDiscriminatorValue
42
38
  });
43
- return {
44
- columns: columnsResult,
45
- addItem,
46
- moveItem,
47
- removeItem
48
- };
39
+ const methods = react.useMemo(() => ({ addItem, moveItem, removeItem }), [addItem, moveItem, removeItem]);
40
+ return [{ columns: columnsResult }, methods];
49
41
  };
50
42
  exports.useStaticBoard = useStaticBoard;
51
43
  //# sourceMappingURL=useStaticBoard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStaticBoard.cjs","sources":["../../../src/internal/useStaticBoard.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { EntityAccessor, EntityListAccessor, useDesugaredRelativeSingleField } from '@contember/react-binding'\nimport { BoardMethods, BoardStaticColumnValue } from '../types'\nimport { useGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { useCreateBoardColumns } from './useCreateBoardColumns'\nimport { useBoardItemsMethods } from './useBoardItemsMethods'\nimport { BoardData } from '../types/BoardData'\nimport { BoardCommonProps, BoardStaticColumnsBindingProps } from '../components'\n\n\nexport type UseStaticBoardBindingProps =\n\t& Omit<BoardCommonProps, 'children'>\n\t& BoardStaticColumnsBindingProps\n\t& {\n\t\titemEntities: EntityListAccessor\n\t}\n\nexport const useStaticBoard = ({\n\tsortableBy,\n\tsortScope,\n\tcolumns,\n\tdiscriminationField,\n\titemEntities,\n}: UseStaticBoardBindingProps): [BoardData<BoardStaticColumnValue>, BoardMethods<BoardStaticColumnValue>] => {\n\n\tconst desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy)\n\tconst desugaredDiscriminationField = useDesugaredRelativeSingleField(discriminationField)\n\n\tconst getDiscriminatorValue = useCallback((entity: EntityAccessor) => {\n\t\treturn entity.getRelativeSingleField<string>(desugaredDiscriminationField).value\n\t}, [desugaredDiscriminationField])\n\n\tconst groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField)\n\n\tconst columnsResult = useCreateBoardColumns({\n\t\tcolumns,\n\t\tcolumnIdGetter: it => it.value,\n\t\tgroupItemsByColumn,\n\t\titems: itemEntities,\n\t})\n\n\tconst connectItemToColumn = useCallback((item: EntityAccessor, column: BoardStaticColumnValue | null) => {\n\t\titem.getRelativeSingleField(desugaredDiscriminationField).updateValue(column?.value ?? null)\n\t}, [desugaredDiscriminationField])\n\n\tconst { addItem, moveItem, removeItem } = useBoardItemsMethods({\n\t\tcolumnIdGetter: it => it.value,\n\t\tconnectItemToColumn,\n\t\tgroupItemsByColumn,\n\t\titemEntities,\n\t\tdesugaredSortableByField,\n\t\tsortScope,\n\t\tgetDiscriminatorValue,\n\t})\n\n\tconst methods = useMemo(() => ({ addItem, moveItem, removeItem }), [addItem, moveItem, removeItem])\n\n\treturn [{ columns: columnsResult }, methods]\n}\n"],"names":["useDesugaredRelativeSingleField","useCallback","useGroupItemsByColumn","useCreateBoardColumns","useBoardItemsMethods","useMemo"],"mappings":";;;;;;;AAiBO,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAA6G;AAEtG,QAAA,2BAA2BA,6CAAgC,UAAU;AACrE,QAAA,+BAA+BA,6CAAgC,mBAAmB;AAElF,QAAA,wBAAwBC,kBAAY,CAAC,WAA2B;AAC9D,WAAA,OAAO,uBAA+B,4BAA4B,EAAE;AAAA,EAAA,GACzE,CAAC,4BAA4B,CAAC;AAE3B,QAAA,qBAAqBC,sBAAAA,sBAAsB,uBAAuB,wBAAwB;AAEhG,QAAM,gBAAgBC,sBAAAA,sBAAsB;AAAA,IAC3C;AAAA,IACA,gBAAgB,QAAM,GAAG;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,EAAA,CACP;AAED,QAAM,sBAAsBF,MAAAA,YAAY,CAAC,MAAsB,WAA0C;AACxG,SAAK,uBAAuB,4BAA4B,EAAE,YAAY,QAAQ,SAAS,IAAI;AAAA,EAAA,GACzF,CAAC,4BAA4B,CAAC;AAEjC,QAAM,EAAE,SAAS,UAAU,WAAA,IAAeG,qBAAAA,qBAAqB;AAAA,IAC9D,gBAAgB,QAAM,GAAG;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,UAAUC,MAAAA,QAAQ,OAAO,EAAE,SAAS,UAAU,WAAW,IAAI,CAAC,SAAS,UAAU,UAAU,CAAC;AAElG,SAAO,CAAC,EAAE,SAAS,iBAAiB,OAAO;AAC5C;;"}
@@ -1,16 +1,14 @@
1
- import { useCallback } from "react";
1
+ import { useCallback, useMemo } from "react";
2
2
  import { useDesugaredRelativeSingleField } from "@contember/react-binding";
3
- import { useGroupItemsByColumn } from "./internal/useGroupItemsByColumn.js";
4
- import { useBoardColumns } from "./internal/useBoardColumns.js";
5
- import { useBoardItemsMethods } from "./internal/useBoardItemsMethods.js";
3
+ import { useGroupItemsByColumn } from "./useGroupItemsByColumn.js";
4
+ import { useCreateBoardColumns } from "./useCreateBoardColumns.js";
5
+ import { useBoardItemsMethods } from "./useBoardItemsMethods.js";
6
6
  const useStaticBoard = ({
7
7
  sortableBy,
8
8
  sortScope,
9
9
  columns,
10
10
  discriminationField,
11
- itemEntities,
12
- nullColumnPlacement = "end",
13
- nullColumn = "auto"
11
+ itemEntities
14
12
  }) => {
15
13
  const desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy);
16
14
  const desugaredDiscriminationField = useDesugaredRelativeSingleField(discriminationField);
@@ -18,13 +16,11 @@ const useStaticBoard = ({
18
16
  return entity.getRelativeSingleField(desugaredDiscriminationField).value;
19
17
  }, [desugaredDiscriminationField]);
20
18
  const groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField);
21
- const columnsResult = useBoardColumns({
19
+ const columnsResult = useCreateBoardColumns({
22
20
  columns,
23
21
  columnIdGetter: (it) => it.value,
24
22
  groupItemsByColumn,
25
- items: itemEntities,
26
- nullColumn,
27
- nullColumnPlacement
23
+ items: itemEntities
28
24
  });
29
25
  const connectItemToColumn = useCallback((item, column) => {
30
26
  item.getRelativeSingleField(desugaredDiscriminationField).updateValue(column?.value ?? null);
@@ -38,12 +34,8 @@ const useStaticBoard = ({
38
34
  sortScope,
39
35
  getDiscriminatorValue
40
36
  });
41
- return {
42
- columns: columnsResult,
43
- addItem,
44
- moveItem,
45
- removeItem
46
- };
37
+ const methods = useMemo(() => ({ addItem, moveItem, removeItem }), [addItem, moveItem, removeItem]);
38
+ return [{ columns: columnsResult }, methods];
47
39
  };
48
40
  export {
49
41
  useStaticBoard
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStaticBoard.js","sources":["../../../src/internal/useStaticBoard.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { EntityAccessor, EntityListAccessor, useDesugaredRelativeSingleField } from '@contember/react-binding'\nimport { BoardMethods, BoardStaticColumnValue } from '../types'\nimport { useGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { useCreateBoardColumns } from './useCreateBoardColumns'\nimport { useBoardItemsMethods } from './useBoardItemsMethods'\nimport { BoardData } from '../types/BoardData'\nimport { BoardCommonProps, BoardStaticColumnsBindingProps } from '../components'\n\n\nexport type UseStaticBoardBindingProps =\n\t& Omit<BoardCommonProps, 'children'>\n\t& BoardStaticColumnsBindingProps\n\t& {\n\t\titemEntities: EntityListAccessor\n\t}\n\nexport const useStaticBoard = ({\n\tsortableBy,\n\tsortScope,\n\tcolumns,\n\tdiscriminationField,\n\titemEntities,\n}: UseStaticBoardBindingProps): [BoardData<BoardStaticColumnValue>, BoardMethods<BoardStaticColumnValue>] => {\n\n\tconst desugaredSortableByField = useDesugaredRelativeSingleField(sortableBy)\n\tconst desugaredDiscriminationField = useDesugaredRelativeSingleField(discriminationField)\n\n\tconst getDiscriminatorValue = useCallback((entity: EntityAccessor) => {\n\t\treturn entity.getRelativeSingleField<string>(desugaredDiscriminationField).value\n\t}, [desugaredDiscriminationField])\n\n\tconst groupItemsByColumn = useGroupItemsByColumn(getDiscriminatorValue, desugaredSortableByField)\n\n\tconst columnsResult = useCreateBoardColumns({\n\t\tcolumns,\n\t\tcolumnIdGetter: it => it.value,\n\t\tgroupItemsByColumn,\n\t\titems: itemEntities,\n\t})\n\n\tconst connectItemToColumn = useCallback((item: EntityAccessor, column: BoardStaticColumnValue | null) => {\n\t\titem.getRelativeSingleField(desugaredDiscriminationField).updateValue(column?.value ?? null)\n\t}, [desugaredDiscriminationField])\n\n\tconst { addItem, moveItem, removeItem } = useBoardItemsMethods({\n\t\tcolumnIdGetter: it => it.value,\n\t\tconnectItemToColumn,\n\t\tgroupItemsByColumn,\n\t\titemEntities,\n\t\tdesugaredSortableByField,\n\t\tsortScope,\n\t\tgetDiscriminatorValue,\n\t})\n\n\tconst methods = useMemo(() => ({ addItem, moveItem, removeItem }), [addItem, moveItem, removeItem])\n\n\treturn [{ columns: columnsResult }, methods]\n}\n"],"names":[],"mappings":";;;;;AAiBO,MAAM,iBAAiB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAA6G;AAEtG,QAAA,2BAA2B,gCAAgC,UAAU;AACrE,QAAA,+BAA+B,gCAAgC,mBAAmB;AAElF,QAAA,wBAAwB,YAAY,CAAC,WAA2B;AAC9D,WAAA,OAAO,uBAA+B,4BAA4B,EAAE;AAAA,EAAA,GACzE,CAAC,4BAA4B,CAAC;AAE3B,QAAA,qBAAqB,sBAAsB,uBAAuB,wBAAwB;AAEhG,QAAM,gBAAgB,sBAAsB;AAAA,IAC3C;AAAA,IACA,gBAAgB,QAAM,GAAG;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,EAAA,CACP;AAED,QAAM,sBAAsB,YAAY,CAAC,MAAsB,WAA0C;AACxG,SAAK,uBAAuB,4BAA4B,EAAE,YAAY,QAAQ,SAAS,IAAI;AAAA,EAAA,GACzF,CAAC,4BAA4B,CAAC;AAEjC,QAAM,EAAE,SAAS,UAAU,WAAA,IAAe,qBAAqB;AAAA,IAC9D,gBAAgB,QAAM,GAAG;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,UAAU,QAAQ,OAAO,EAAE,SAAS,UAAU,WAAW,IAAI,CAAC,SAAS,UAAU,UAAU,CAAC;AAElG,SAAO,CAAC,EAAE,SAAS,iBAAiB,OAAO;AAC5C;"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const boardAnalyzer = require("../internal/boardAnalyzer.cjs");
6
+ const react = require("react");
7
+ const useDynamicBoard = require("../internal/useDynamicBoard.cjs");
8
+ const useStaticBoard = require("../internal/useStaticBoard.cjs");
9
+ const contexts = require("../contexts.cjs");
10
+ const Board = reactBinding.Component((props) => {
11
+ if ("entities" in props) {
12
+ if (Array.isArray(props.columns)) {
13
+ return /* @__PURE__ */ jsxRuntime.jsx(BoardQualifiedStatic, { ...props });
14
+ } else {
15
+ return /* @__PURE__ */ jsxRuntime.jsx(BoardQualifiedDynamic, { ...props });
16
+ }
17
+ } else {
18
+ if (Array.isArray(props.columns)) {
19
+ return /* @__PURE__ */ jsxRuntime.jsx(RelativeStaticBoard, { ...props });
20
+ } else {
21
+ return /* @__PURE__ */ jsxRuntime.jsx(RelativeDynamicBoard, { ...props });
22
+ }
23
+ }
24
+ });
25
+ const BoardQualifiedDynamic = reactBinding.Component(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, children }) => {
26
+ const itemsAccessor = reactBinding.useEntityListSubTree({ entities, orderBy, limit, offset });
27
+ const columnsAccessor = reactBinding.useEntityListSubTree({ entities: columns });
28
+ const [data, methods] = useDynamicBoard.useDynamicBoard({
29
+ columnEntities: columnsAccessor,
30
+ itemEntities: itemsAccessor,
31
+ columns,
32
+ sortableBy,
33
+ sortScope,
34
+ columnsSortableBy,
35
+ discriminationField
36
+ });
37
+ return /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardColumnsContext.Provider, { value: data.columns, children }) });
38
+ }, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, children }, env) => {
39
+ const columnChildren = boardAnalyzer.boardColumnsAnalyzer.processChildren(children, env);
40
+ const itemChildren = boardAnalyzer.boardItemsAnalyzer.processChildren(children, env);
41
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
42
+ /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities, orderBy, limit, offset, children: [
43
+ /* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
44
+ sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
45
+ itemChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
46
+ ] }),
47
+ /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities: columns, children: [
48
+ columnsSortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
49
+ columnChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
50
+ ] })
51
+ ] });
52
+ });
53
+ const RelativeDynamicBoard = reactBinding.Component(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, children }) => {
54
+ const itemsAccessor = reactBinding.useEntityList({ field, orderBy, limit, offset });
55
+ const columnsAccessor = reactBinding.useEntityListSubTree({ entities: columns });
56
+ const [data, methods] = useDynamicBoard.useDynamicBoard({
57
+ columnEntities: columnsAccessor,
58
+ itemEntities: itemsAccessor,
59
+ columns,
60
+ sortableBy,
61
+ sortScope,
62
+ columnsSortableBy,
63
+ discriminationField
64
+ });
65
+ return /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardColumnsContext.Provider, { value: data.columns, children }) });
66
+ }, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, children }, env) => {
67
+ const columnChildren = boardAnalyzer.boardColumnsAnalyzer.processChildren(children, env);
68
+ const itemChildren = boardAnalyzer.boardItemsAnalyzer.processChildren(children, env);
69
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
70
+ /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.HasMany, { field, orderBy, limit, offset, children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
72
+ sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
73
+ itemChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
74
+ ] }),
75
+ /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities: columns, children: [
76
+ columnsSortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
77
+ columnChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
78
+ ] })
79
+ ] });
80
+ });
81
+ const BoardQualifiedStatic = reactBinding.Component(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, children }) => {
82
+ const itemsAccessor = reactBinding.useEntityListSubTree({ entities, orderBy, limit, offset });
83
+ const [data, methods] = useStaticBoard.useStaticBoard({
84
+ itemEntities: itemsAccessor,
85
+ columns,
86
+ sortableBy,
87
+ sortScope,
88
+ discriminationField
89
+ });
90
+ return /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardColumnsContext.Provider, { value: data.columns, children }) });
91
+ }, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, children }, env) => {
92
+ const itemChildren = boardAnalyzer.boardItemsAnalyzer.processChildren(children, env);
93
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities, orderBy, limit, offset, children: [
94
+ /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
95
+ sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
96
+ itemChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
97
+ ] }) });
98
+ });
99
+ const RelativeStaticBoard = reactBinding.Component(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, children }) => {
100
+ const itemsAccessor = reactBinding.useEntityList({ field, orderBy, limit, offset });
101
+ const [data, methods] = useStaticBoard.useStaticBoard({
102
+ itemEntities: itemsAccessor,
103
+ columns,
104
+ sortableBy,
105
+ sortScope,
106
+ discriminationField
107
+ });
108
+ return /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxRuntime.jsx(contexts.BoardColumnsContext.Provider, { value: data.columns, children }) });
109
+ }, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, children }, env) => {
110
+ const itemChildren = boardAnalyzer.boardItemsAnalyzer.processChildren(children, env);
111
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactBinding.HasMany, { field, orderBy, limit, offset, children: [
112
+ /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
113
+ sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
114
+ itemChildren.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: it }, index))
115
+ ] }) });
116
+ });
117
+ exports.Board = Board;
118
+ //# sourceMappingURL=Board.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Board.cjs","sources":["../../../src/components/Board.tsx"],"sourcesContent":["import {\n\tComponent,\n\tEntityListSubTree,\n\tField,\n\tHasMany,\n\tHasOne,\n\tSugaredQualifiedEntityList,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tuseEntityList,\n\tuseEntityListSubTree,\n} from '@contember/react-binding'\nimport { boardColumnsAnalyzer, boardItemsAnalyzer } from '../internal/boardAnalyzer'\nimport { Fragment, ReactNode } from 'react'\nimport { useDynamicBoard } from '../internal/useDynamicBoard'\nimport { useStaticBoard } from '../internal/useStaticBoard'\nimport { BoardColumnsContext, BoardMethodsContext } from '../contexts'\n\nexport type BoardProps =\n\t| BoardQualifiedDynamicProps\n\t| BoardRelativeDynamicProps\n\t| BoardQualifiedStaticProps\n\t| BoardRelativeStaticProps\n\n\nexport const Board = Component<BoardProps>(props => {\n\tif ('entities' in props) {\n\t\tif (Array.isArray(props.columns)) {\n\t\t\treturn <BoardQualifiedStatic {...(props as BoardQualifiedStaticProps)} />\n\t\t} else {\n\t\t\treturn <BoardQualifiedDynamic {...(props as BoardQualifiedDynamicProps)} />\n\t\t}\n\t} else {\n\t\tif (Array.isArray(props.columns)) {\n\t\t\treturn <RelativeStaticBoard {...(props as BoardRelativeStaticProps)} />\n\t\t} else {\n\t\t\treturn <RelativeDynamicBoard {...(props as BoardRelativeDynamicProps)} />\n\t\t}\n\t}\n})\n\nexport type BoardDynamicColumnsBindingProps = {\n\tcolumns: SugaredQualifiedEntityList['entities']\n\tcolumnsSortableBy?: string | SugaredRelativeSingleField\n\tdiscriminationField: string | SugaredRelativeSingleEntity\n}\n\nexport type BoardStaticColumnsBindingProps = {\n\tcolumns: {\n\t\tvalue: string,\n\t\tlabel: ReactNode\n\t}[]\n\tdiscriminationField: string | SugaredRelativeSingleField\n}\n\nexport type BoardCommonProps =\n\t& {\n\tchildren: ReactNode\n\tsortableBy?: string | SugaredRelativeSingleField\n\tsortScope?: 'column' | 'board'\n}\n\nexport type BoardQualifiedItemsProps =\n\t& Pick<SugaredQualifiedEntityList, 'entities' | 'orderBy' | 'limit' | 'offset'>\n\n\nexport type BoardRelativeItemsProps =\n\t& Pick<SugaredRelativeEntityList, 'field' | 'orderBy' | 'limit' | 'offset'>\n\n\nexport type BoardQualifiedDynamicProps =\n\t& BoardCommonProps\n\t& BoardDynamicColumnsBindingProps\n\t& BoardQualifiedItemsProps\n\nconst BoardQualifiedDynamic = Component<BoardQualifiedDynamicProps>(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, children }) => {\n\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\tconst [data, methods] = useDynamicBoard({\n\t\tcolumnEntities: columnsAccessor,\n\t\titemEntities: itemsAccessor,\n\t\tcolumns,\n\t\tsortableBy,\n\t\tsortScope,\n\t\tcolumnsSortableBy,\n\t\tdiscriminationField,\n\t})\n\treturn (\n\t\t<BoardMethodsContext.Provider value={methods}>\n\t\t\t<BoardColumnsContext.Provider value={data.columns}>\n\t\t\t\t{children}\n\t\t\t</BoardColumnsContext.Provider>\n\t\t</BoardMethodsContext.Provider>\n\t)\n}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, children }, env) => {\n\n\tconst columnChildren = boardColumnsAnalyzer.processChildren(children, env)\n\tconst itemChildren = boardItemsAnalyzer.processChildren(children, env)\n\n\treturn (<>\n\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t{itemChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</EntityListSubTree>\n\t\t<EntityListSubTree entities={columns}>\n\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t{columnChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</EntityListSubTree>\n\t</>)\n})\n\n\nexport type BoardRelativeDynamicProps =\n\t& BoardCommonProps\n\t& BoardDynamicColumnsBindingProps\n\t& BoardRelativeItemsProps\n\n\nconst RelativeDynamicBoard = Component<BoardRelativeDynamicProps>(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, children }) => {\n\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\tconst [data, methods] = useDynamicBoard({\n\t\tcolumnEntities: columnsAccessor,\n\t\titemEntities: itemsAccessor,\n\t\tcolumns,\n\t\tsortableBy,\n\t\tsortScope,\n\t\tcolumnsSortableBy,\n\t\tdiscriminationField,\n\t})\n\treturn (\n\t\t<BoardMethodsContext.Provider value={methods}>\n\t\t\t<BoardColumnsContext.Provider value={data.columns}>\n\t\t\t\t{children}\n\t\t\t</BoardColumnsContext.Provider>\n\t\t</BoardMethodsContext.Provider>\n\t)\n}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, children }, env) => {\n\tconst columnChildren = boardColumnsAnalyzer.processChildren(children, env)\n\tconst itemChildren = boardItemsAnalyzer.processChildren(children, env)\n\treturn (<>\n\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t{itemChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</HasMany>\n\t\t<EntityListSubTree entities={columns}>\n\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t{columnChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</EntityListSubTree>\n\t</>)\n})\nexport type BoardQualifiedStaticProps =\n\t& BoardCommonProps\n\t& BoardStaticColumnsBindingProps\n\t& BoardQualifiedItemsProps\n\n\nconst BoardQualifiedStatic = Component<BoardQualifiedStaticProps>(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, children }) => {\n\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\tconst [data, methods] = useStaticBoard({\n\t\titemEntities: itemsAccessor,\n\t\tcolumns,\n\t\tsortableBy,\n\t\tsortScope,\n\t\tdiscriminationField,\n\t})\n\treturn (\n\t\t<BoardMethodsContext.Provider value={methods}>\n\t\t\t<BoardColumnsContext.Provider value={data.columns}>\n\t\t\t\t{children}\n\t\t\t</BoardColumnsContext.Provider>\n\t\t</BoardMethodsContext.Provider>\n\t)\n}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, children }, env) => {\n\tconst itemChildren = boardItemsAnalyzer.processChildren(children, env)\n\treturn (<>\n\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t<Field {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t{itemChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</EntityListSubTree>\n\t</>)\n})\n\n\nexport type BoardRelativeStaticProps =\n\t& BoardCommonProps\n\t& BoardStaticColumnsBindingProps\n\t& BoardRelativeItemsProps\n\nconst RelativeStaticBoard = Component<BoardRelativeStaticProps>(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, children }) => {\n\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\tconst [data, methods] = useStaticBoard({\n\t\titemEntities: itemsAccessor,\n\t\tcolumns,\n\t\tsortableBy,\n\t\tsortScope,\n\t\tdiscriminationField,\n\t})\n\treturn (\n\t\t<BoardMethodsContext.Provider value={methods}>\n\t\t\t<BoardColumnsContext.Provider value={data.columns}>\n\t\t\t\t{children}\n\t\t\t</BoardColumnsContext.Provider>\n\t\t</BoardMethodsContext.Provider>\n\t)\n}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, children }, env) => {\n\tconst itemChildren = boardItemsAnalyzer.processChildren(children, env)\n\treturn (<>\n\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t<Field {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t{itemChildren.map((it, index) => <Fragment key={index}>{it}</Fragment>)}\n\t\t</HasMany>\n\t</>)\n})\n"],"names":["Component","jsx","useEntityListSubTree","useDynamicBoard","BoardMethodsContext","BoardColumnsContext","boardColumnsAnalyzer","boardItemsAnalyzer","jsxs","Fragment","EntityListSubTree","HasOne","Field","useEntityList","HasMany","useStaticBoard"],"mappings":"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"}