@contember/react-board 1.3.0-alpha.8 → 1.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/components/Board.cjs +270 -0
- package/dist/development/components/Board.cjs.map +1 -0
- package/dist/development/components/Board.js +270 -0
- package/dist/development/components/Board.js.map +1 -0
- package/dist/development/components/BoardColumn.cjs +7 -0
- package/dist/development/components/BoardColumn.cjs.map +1 -0
- package/dist/development/components/BoardColumn.js +7 -0
- package/dist/development/components/BoardColumn.js.map +1 -0
- package/dist/development/components/BoardColumnLabel.cjs +14 -0
- package/dist/development/components/BoardColumnLabel.cjs.map +1 -0
- package/dist/development/components/BoardColumnLabel.js +14 -0
- package/dist/development/components/BoardColumnLabel.js.map +1 -0
- package/dist/development/components/BoardEachColumn.cjs +38 -0
- package/dist/development/components/BoardEachColumn.cjs.map +1 -0
- package/dist/development/components/BoardEachColumn.js +38 -0
- package/dist/development/components/BoardEachColumn.js.map +1 -0
- package/dist/development/components/BoardEachItem.cjs +56 -0
- package/dist/development/components/BoardEachItem.cjs.map +1 -0
- package/dist/development/components/BoardEachItem.js +56 -0
- package/dist/development/components/BoardEachItem.js.map +1 -0
- package/dist/development/components/BoardItem.cjs +8 -0
- package/dist/development/components/BoardItem.cjs.map +1 -0
- package/dist/development/components/BoardItem.js +8 -0
- package/dist/development/components/BoardItem.js.map +1 -0
- package/dist/development/components/BoardNullColumn.cjs +18 -0
- package/dist/development/components/BoardNullColumn.cjs.map +1 -0
- package/dist/development/components/BoardNullColumn.js +18 -0
- package/dist/development/components/BoardNullColumn.js.map +1 -0
- package/dist/development/contexts.cjs +24 -0
- package/dist/development/contexts.cjs.map +1 -0
- package/dist/development/contexts.js +24 -0
- package/dist/development/contexts.js.map +1 -0
- package/dist/development/index.cjs +23 -6
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +23 -6
- package/dist/development/index.js.map +1 -1
- package/dist/development/internal/boardAnalyzer.cjs +16 -0
- package/dist/development/internal/boardAnalyzer.cjs.map +1 -0
- package/dist/development/internal/boardAnalyzer.js +16 -0
- package/dist/development/internal/boardAnalyzer.js.map +1 -0
- package/dist/development/internal/useBoardItemsMethods.cjs.map +1 -1
- package/dist/development/internal/useBoardItemsMethods.js.map +1 -1
- package/dist/development/internal/{useBoardColumns.cjs → useCreateBoardColumns.cjs} +10 -24
- package/dist/development/internal/useCreateBoardColumns.cjs.map +1 -0
- package/dist/development/internal/{useBoardColumns.js → useCreateBoardColumns.js} +10 -24
- package/dist/development/internal/useCreateBoardColumns.js.map +1 -0
- package/dist/{production → development/internal}/useDynamicBoard.cjs +14 -18
- package/dist/development/internal/useDynamicBoard.cjs.map +1 -0
- package/dist/{production → development/internal}/useDynamicBoard.js +14 -18
- package/dist/development/internal/useDynamicBoard.js.map +1 -0
- package/dist/{production → development/internal}/useStaticBoard.cjs +8 -16
- package/dist/development/internal/useStaticBoard.cjs.map +1 -0
- package/dist/{production → development/internal}/useStaticBoard.js +9 -17
- package/dist/development/internal/useStaticBoard.js.map +1 -0
- package/dist/production/components/Board.cjs +118 -0
- package/dist/production/components/Board.cjs.map +1 -0
- package/dist/production/components/Board.js +118 -0
- package/dist/production/components/Board.js.map +1 -0
- package/dist/production/components/BoardColumn.cjs +7 -0
- package/dist/production/components/BoardColumn.cjs.map +1 -0
- package/dist/production/components/BoardColumn.js +7 -0
- package/dist/production/components/BoardColumn.js.map +1 -0
- package/dist/production/components/BoardColumnLabel.cjs +10 -0
- package/dist/production/components/BoardColumnLabel.cjs.map +1 -0
- package/dist/production/components/BoardColumnLabel.js +10 -0
- package/dist/production/components/BoardColumnLabel.js.map +1 -0
- package/dist/production/components/BoardEachColumn.cjs +22 -0
- package/dist/production/components/BoardEachColumn.cjs.map +1 -0
- package/dist/production/components/BoardEachColumn.js +22 -0
- package/dist/production/components/BoardEachColumn.js.map +1 -0
- package/dist/production/components/BoardEachItem.cjs +33 -0
- package/dist/production/components/BoardEachItem.cjs.map +1 -0
- package/dist/production/components/BoardEachItem.js +33 -0
- package/dist/production/components/BoardEachItem.js.map +1 -0
- package/dist/production/components/BoardItem.cjs +8 -0
- package/dist/production/components/BoardItem.cjs.map +1 -0
- package/dist/production/components/BoardItem.js +8 -0
- package/dist/production/components/BoardItem.js.map +1 -0
- package/dist/production/components/BoardNullColumn.cjs +14 -0
- package/dist/production/components/BoardNullColumn.cjs.map +1 -0
- package/dist/production/components/BoardNullColumn.js +14 -0
- package/dist/production/components/BoardNullColumn.js.map +1 -0
- package/dist/production/contexts.cjs +24 -0
- package/dist/production/contexts.cjs.map +1 -0
- package/dist/production/contexts.js +24 -0
- package/dist/production/contexts.js.map +1 -0
- package/dist/production/index.cjs +23 -6
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +23 -6
- package/dist/production/index.js.map +1 -1
- package/dist/production/internal/boardAnalyzer.cjs +16 -0
- package/dist/production/internal/boardAnalyzer.cjs.map +1 -0
- package/dist/production/internal/boardAnalyzer.js +16 -0
- package/dist/production/internal/boardAnalyzer.js.map +1 -0
- package/dist/production/internal/useBoardItemsMethods.cjs.map +1 -1
- package/dist/production/internal/useBoardItemsMethods.js.map +1 -1
- package/dist/production/internal/{useBoardColumns.cjs → useCreateBoardColumns.cjs} +10 -24
- package/dist/production/internal/useCreateBoardColumns.cjs.map +1 -0
- package/dist/production/internal/{useBoardColumns.js → useCreateBoardColumns.js} +10 -24
- package/dist/production/internal/useCreateBoardColumns.js.map +1 -0
- package/dist/{development → production/internal}/useDynamicBoard.cjs +14 -18
- package/dist/production/internal/useDynamicBoard.cjs.map +1 -0
- package/dist/{development → production/internal}/useDynamicBoard.js +14 -18
- package/dist/production/internal/useDynamicBoard.js.map +1 -0
- package/dist/{development → production/internal}/useStaticBoard.cjs +8 -16
- package/dist/production/internal/useStaticBoard.cjs.map +1 -0
- package/dist/{development → production/internal}/useStaticBoard.js +9 -17
- package/dist/production/internal/useStaticBoard.js.map +1 -0
- package/dist/types/{types.d.ts → components/Board.d.ts} +5 -8
- package/dist/types/components/Board.d.ts.map +1 -0
- package/dist/types/components/BoardColumn.d.ts +5 -0
- package/dist/types/components/BoardColumn.d.ts.map +1 -0
- package/dist/types/components/BoardColumnLabel.d.ts +2 -0
- package/dist/types/components/BoardColumnLabel.d.ts.map +1 -0
- package/dist/types/components/BoardEachColumn.d.ts +10 -0
- package/dist/types/components/BoardEachColumn.d.ts.map +1 -0
- package/dist/types/components/BoardEachItem.d.ts +10 -0
- package/dist/types/components/BoardEachItem.d.ts.map +1 -0
- package/dist/types/components/BoardItem.d.ts +8 -0
- package/dist/types/components/BoardItem.d.ts.map +1 -0
- package/dist/types/components/BoardNullColumn.d.ts +7 -0
- package/dist/types/components/BoardNullColumn.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +8 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/contexts.d.ts +18 -0
- package/dist/types/contexts.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/internal/boardAnalyzer.d.ts +6 -0
- package/dist/types/internal/boardAnalyzer.d.ts.map +1 -0
- package/dist/types/internal/useBoardItemsMethods.d.ts +1 -1
- package/dist/types/internal/useBoardItemsMethods.d.ts.map +1 -1
- package/dist/types/internal/useCreateBoardColumns.d.ts +10 -0
- package/dist/types/internal/useCreateBoardColumns.d.ts.map +1 -0
- package/dist/types/{useDynamicBoard.d.ts → internal/useDynamicBoard.d.ts} +4 -3
- package/dist/types/internal/useDynamicBoard.d.ts.map +1 -0
- package/dist/types/internal/useGroupItemsByColumn.d.ts.map +1 -1
- package/dist/types/{useStaticBoard.d.ts → internal/useStaticBoard.d.ts} +4 -3
- package/dist/types/internal/useStaticBoard.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types/BoardColumnNode.d.ts +15 -0
- package/dist/types/types/BoardColumnNode.d.ts.map +1 -0
- package/dist/types/types/BoardData.d.ts +5 -0
- package/dist/types/types/BoardData.d.ts.map +1 -0
- package/dist/types/types/BoardItemNode.d.ts +7 -0
- package/dist/types/types/BoardItemNode.d.ts.map +1 -0
- package/dist/types/{BoardBindingProps.d.ts → types/BoardMethods.d.ts} +4 -23
- package/dist/types/types/BoardMethods.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +4 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/package.json +10 -7
- package/src/components/Board.tsx +219 -0
- package/src/components/BoardColumn.tsx +7 -0
- package/src/components/BoardColumnLabel.tsx +6 -0
- package/src/components/BoardEachColumn.tsx +32 -0
- package/src/components/BoardEachItem.tsx +48 -0
- package/src/components/BoardItem.tsx +8 -0
- package/src/components/BoardNullColumn.tsx +20 -0
- package/src/components/index.ts +7 -0
- package/src/contexts.ts +23 -0
- package/src/index.ts +2 -4
- package/src/internal/boardAnalyzer.ts +25 -0
- package/src/internal/useBoardItemsMethods.ts +1 -1
- package/src/internal/{useBoardColumns.ts → useCreateBoardColumns.ts} +11 -28
- package/src/{useDynamicBoard.ts → internal/useDynamicBoard.ts} +21 -18
- package/src/{useStaticBoard.ts → internal/useStaticBoard.ts} +13 -18
- package/src/tsconfig.json +3 -0
- package/src/types/BoardColumnNode.ts +16 -0
- package/src/types/BoardData.ts +6 -0
- package/src/types/BoardItemNode.ts +7 -0
- package/src/{BoardBindingProps.ts → types/BoardMethods.ts} +3 -29
- package/src/types/index.ts +3 -0
- package/dist/development/Board.cjs +0 -116
- package/dist/development/Board.cjs.map +0 -1
- package/dist/development/Board.js +0 -116
- package/dist/development/Board.js.map +0 -1
- package/dist/development/internal/useBoardColumns.cjs.map +0 -1
- package/dist/development/internal/useBoardColumns.js.map +0 -1
- package/dist/development/useDynamicBoard.cjs.map +0 -1
- package/dist/development/useDynamicBoard.js.map +0 -1
- package/dist/development/useStaticBoard.cjs.map +0 -1
- package/dist/development/useStaticBoard.js.map +0 -1
- package/dist/production/Board.cjs +0 -116
- package/dist/production/Board.cjs.map +0 -1
- package/dist/production/Board.js +0 -116
- package/dist/production/Board.js.map +0 -1
- package/dist/production/internal/useBoardColumns.cjs.map +0 -1
- package/dist/production/internal/useBoardColumns.js.map +0 -1
- package/dist/production/useDynamicBoard.cjs.map +0 -1
- package/dist/production/useDynamicBoard.js.map +0 -1
- package/dist/production/useStaticBoard.cjs.map +0 -1
- package/dist/production/useStaticBoard.js.map +0 -1
- package/dist/types/Board.d.ts +0 -10
- package/dist/types/Board.d.ts.map +0 -1
- package/dist/types/BoardBindingProps.d.ts.map +0 -1
- package/dist/types/internal/useBoardColumns.d.ts +0 -11
- package/dist/types/internal/useBoardColumns.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/useDynamicBoard.d.ts.map +0 -1
- package/dist/types/useStaticBoard.d.ts.map +0 -1
- package/src/Board.tsx +0 -156
- package/src/types.ts +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBoardItemsMethods.js","sources":["../../../src/internal/useBoardItemsMethods.ts"],"sourcesContent":["import {
|
|
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":"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"}
|
|
@@ -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
|
|
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
|
|
12
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
27
|
+
}, [columnIdGetter, columns, groupItemsByColumn, items]);
|
|
42
28
|
};
|
|
43
|
-
exports.
|
|
44
|
-
//# sourceMappingURL=
|
|
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
|
|
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
|
|
10
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
25
|
+
}, [columnIdGetter, columns, groupItemsByColumn, items]);
|
|
40
26
|
};
|
|
41
27
|
export {
|
|
42
|
-
|
|
28
|
+
useCreateBoardColumns
|
|
43
29
|
};
|
|
44
|
-
//# sourceMappingURL=
|
|
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("./
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
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 =
|
|
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
|
-
|
|
89
|
-
columns: columnsResult,
|
|
90
|
-
addColumn,
|
|
84
|
+
const methods = react.useMemo(() => ({
|
|
91
85
|
addItem,
|
|
92
|
-
moveColumn,
|
|
93
86
|
moveItem,
|
|
94
|
-
|
|
95
|
-
|
|
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 "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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 =
|
|
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
|
-
|
|
87
|
-
columns: columnsResult,
|
|
88
|
-
addColumn,
|
|
82
|
+
const methods = useMemo(() => ({
|
|
89
83
|
addItem,
|
|
90
|
-
moveColumn,
|
|
91
84
|
moveItem,
|
|
92
|
-
|
|
93
|
-
|
|
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("./
|
|
6
|
-
const
|
|
7
|
-
const useBoardItemsMethods = require("./
|
|
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 =
|
|
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
|
-
|
|
44
|
-
|
|
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 "./
|
|
4
|
-
import {
|
|
5
|
-
import { useBoardItemsMethods } from "./
|
|
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 =
|
|
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
|
-
|
|
42
|
-
|
|
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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"}
|