@contember/react-board 1.3.0-alpha.8
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/Board.cjs +116 -0
- package/dist/development/Board.cjs.map +1 -0
- package/dist/development/Board.js +116 -0
- package/dist/development/Board.js.map +1 -0
- package/dist/development/const.cjs +5 -0
- package/dist/development/const.cjs.map +1 -0
- package/dist/development/const.js +5 -0
- package/dist/development/const.js.map +1 -0
- package/dist/development/index.cjs +11 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +11 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/internal/useBoardColumns.cjs +44 -0
- package/dist/development/internal/useBoardColumns.cjs.map +1 -0
- package/dist/development/internal/useBoardColumns.js +44 -0
- package/dist/development/internal/useBoardColumns.js.map +1 -0
- package/dist/development/internal/useBoardItemsMethods.cjs +100 -0
- package/dist/development/internal/useBoardItemsMethods.cjs.map +1 -0
- package/dist/development/internal/useBoardItemsMethods.js +100 -0
- package/dist/development/internal/useBoardItemsMethods.js.map +1 -0
- package/dist/development/internal/useGroupItemsByColumn.cjs +19 -0
- package/dist/development/internal/useGroupItemsByColumn.cjs.map +1 -0
- package/dist/development/internal/useGroupItemsByColumn.js +19 -0
- package/dist/development/internal/useGroupItemsByColumn.js.map +1 -0
- package/dist/development/useDynamicBoard.cjs +99 -0
- package/dist/development/useDynamicBoard.cjs.map +1 -0
- package/dist/development/useDynamicBoard.js +99 -0
- package/dist/development/useDynamicBoard.js.map +1 -0
- package/dist/development/useStaticBoard.cjs +51 -0
- package/dist/development/useStaticBoard.cjs.map +1 -0
- package/dist/development/useStaticBoard.js +51 -0
- package/dist/development/useStaticBoard.js.map +1 -0
- package/dist/development/utils/arrayMove.cjs +9 -0
- package/dist/development/utils/arrayMove.cjs.map +1 -0
- package/dist/development/utils/arrayMove.js +9 -0
- package/dist/development/utils/arrayMove.js.map +1 -0
- package/dist/production/Board.cjs +116 -0
- package/dist/production/Board.cjs.map +1 -0
- package/dist/production/Board.js +116 -0
- package/dist/production/Board.js.map +1 -0
- package/dist/production/const.cjs +5 -0
- package/dist/production/const.cjs.map +1 -0
- package/dist/production/const.js +5 -0
- package/dist/production/const.js.map +1 -0
- package/dist/production/index.cjs +11 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +11 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/internal/useBoardColumns.cjs +44 -0
- package/dist/production/internal/useBoardColumns.cjs.map +1 -0
- package/dist/production/internal/useBoardColumns.js +44 -0
- package/dist/production/internal/useBoardColumns.js.map +1 -0
- package/dist/production/internal/useBoardItemsMethods.cjs +100 -0
- package/dist/production/internal/useBoardItemsMethods.cjs.map +1 -0
- package/dist/production/internal/useBoardItemsMethods.js +100 -0
- package/dist/production/internal/useBoardItemsMethods.js.map +1 -0
- package/dist/production/internal/useGroupItemsByColumn.cjs +19 -0
- package/dist/production/internal/useGroupItemsByColumn.cjs.map +1 -0
- package/dist/production/internal/useGroupItemsByColumn.js +19 -0
- package/dist/production/internal/useGroupItemsByColumn.js.map +1 -0
- package/dist/production/useDynamicBoard.cjs +99 -0
- package/dist/production/useDynamicBoard.cjs.map +1 -0
- package/dist/production/useDynamicBoard.js +99 -0
- package/dist/production/useDynamicBoard.js.map +1 -0
- package/dist/production/useStaticBoard.cjs +51 -0
- package/dist/production/useStaticBoard.cjs.map +1 -0
- package/dist/production/useStaticBoard.js +51 -0
- package/dist/production/useStaticBoard.js.map +1 -0
- package/dist/production/utils/arrayMove.cjs +9 -0
- package/dist/production/utils/arrayMove.cjs.map +1 -0
- package/dist/production/utils/arrayMove.js +9 -0
- package/dist/production/utils/arrayMove.js.map +1 -0
- package/dist/types/Board.d.ts +10 -0
- package/dist/types/Board.d.ts.map +1 -0
- package/dist/types/BoardBindingProps.d.ts +36 -0
- package/dist/types/BoardBindingProps.d.ts.map +1 -0
- package/dist/types/const.d.ts +2 -0
- package/dist/types/const.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/internal/useBoardColumns.d.ts +11 -0
- package/dist/types/internal/useBoardColumns.d.ts.map +1 -0
- package/dist/types/internal/useBoardItemsMethods.d.ts +15 -0
- package/dist/types/internal/useBoardItemsMethods.d.ts.map +1 -0
- package/dist/types/internal/useGroupItemsByColumn.d.ts +5 -0
- package/dist/types/internal/useGroupItemsByColumn.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/dist/types/types.d.ts +31 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/useDynamicBoard.d.ts +9 -0
- package/dist/types/useDynamicBoard.d.ts.map +1 -0
- package/dist/types/useStaticBoard.d.ts +8 -0
- package/dist/types/useStaticBoard.d.ts.map +1 -0
- package/dist/types/utils/arrayMove.d.ts +2 -0
- package/dist/types/utils/arrayMove.d.ts.map +1 -0
- package/package.json +48 -0
- package/src/Board.tsx +156 -0
- package/src/BoardBindingProps.ts +45 -0
- package/src/const.ts +1 -0
- package/src/index.ts +6 -0
- package/src/internal/useBoardColumns.ts +57 -0
- package/src/internal/useBoardItemsMethods.ts +141 -0
- package/src/internal/useGroupItemsByColumn.ts +19 -0
- package/src/tsconfig.json +9 -0
- package/src/types.ts +64 -0
- package/src/useDynamicBoard.ts +135 -0
- package/src/useStaticBoard.ts +64 -0
- package/src/utils/arrayMove.ts +5 -0
|
@@ -0,0 +1,116 @@
|
|
|
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 useDynamicBoard = require("./useDynamicBoard.cjs");
|
|
6
|
+
const useStaticBoard = require("./useStaticBoard.cjs");
|
|
7
|
+
const createBoard = ({ Renderer, ItemStaticRender, ColumnStaticRender }) => {
|
|
8
|
+
const TopLevelDynamicBoard = reactBinding.Component(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
9
|
+
const itemsAccessor = reactBinding.useEntityListSubTree({ entities, orderBy, limit, offset });
|
|
10
|
+
const columnsAccessor = reactBinding.useEntityListSubTree({ entities: columns });
|
|
11
|
+
const dynamicBoardProps = useDynamicBoard.useDynamicBoard({
|
|
12
|
+
columnEntities: columnsAccessor,
|
|
13
|
+
itemEntities: itemsAccessor,
|
|
14
|
+
columns,
|
|
15
|
+
sortableBy,
|
|
16
|
+
sortScope,
|
|
17
|
+
columnsSortableBy,
|
|
18
|
+
discriminationField,
|
|
19
|
+
nullColumn,
|
|
20
|
+
nullColumnPlacement
|
|
21
|
+
});
|
|
22
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Renderer, { ...dynamicBoardProps, ...props });
|
|
23
|
+
}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {
|
|
24
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities, orderBy, limit, offset, children: [
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
27
|
+
sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
28
|
+
ItemStaticRender && /* @__PURE__ */ jsxRuntime.jsx(ItemStaticRender, { ...props })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities: columns, children: [
|
|
31
|
+
columnsSortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
|
|
32
|
+
ColumnStaticRender && /* @__PURE__ */ jsxRuntime.jsx(ColumnStaticRender, { ...props })
|
|
33
|
+
] })
|
|
34
|
+
] });
|
|
35
|
+
});
|
|
36
|
+
const RelativeDynamicBoard = reactBinding.Component(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
37
|
+
const itemsAccessor = reactBinding.useEntityList({ field, orderBy, limit, offset });
|
|
38
|
+
const columnsAccessor = reactBinding.useEntityListSubTree({ entities: columns });
|
|
39
|
+
const dynamicBoardProps = useDynamicBoard.useDynamicBoard({
|
|
40
|
+
columnEntities: columnsAccessor,
|
|
41
|
+
itemEntities: itemsAccessor,
|
|
42
|
+
columns,
|
|
43
|
+
sortableBy,
|
|
44
|
+
sortScope,
|
|
45
|
+
columnsSortableBy,
|
|
46
|
+
discriminationField,
|
|
47
|
+
nullColumn,
|
|
48
|
+
nullColumnPlacement
|
|
49
|
+
});
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Renderer, { ...dynamicBoardProps, ...props });
|
|
51
|
+
}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactBinding.HasMany, { field, orderBy, limit, offset, children: [
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
55
|
+
sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
56
|
+
ItemStaticRender && /* @__PURE__ */ jsxRuntime.jsx(ItemStaticRender, { ...props })
|
|
57
|
+
] }),
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactBinding.EntityListSubTree, { entities: columns, children: [
|
|
59
|
+
columnsSortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
|
|
60
|
+
ColumnStaticRender && /* @__PURE__ */ jsxRuntime.jsx(ColumnStaticRender, { ...props })
|
|
61
|
+
] })
|
|
62
|
+
] });
|
|
63
|
+
});
|
|
64
|
+
const staticBoardItemInnerRender = ({ discriminationField, sortableBy, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
66
|
+
sortableBy && /* @__PURE__ */ jsxRuntime.jsx(reactBinding.Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
67
|
+
ItemStaticRender && /* @__PURE__ */ jsxRuntime.jsx(ItemStaticRender, { ...props })
|
|
68
|
+
] });
|
|
69
|
+
const TopLevelStaticBoard = reactBinding.Component(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
70
|
+
const itemsAccessor = reactBinding.useEntityListSubTree({ entities, orderBy, limit, offset });
|
|
71
|
+
const staticBoardProps = useStaticBoard.useStaticBoard({
|
|
72
|
+
itemEntities: itemsAccessor,
|
|
73
|
+
columns,
|
|
74
|
+
sortableBy,
|
|
75
|
+
sortScope,
|
|
76
|
+
discriminationField,
|
|
77
|
+
nullColumn,
|
|
78
|
+
nullColumnPlacement
|
|
79
|
+
});
|
|
80
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Renderer, { ...staticBoardProps, ...props });
|
|
81
|
+
}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {
|
|
82
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(reactBinding.EntityListSubTree, { entities, orderBy, limit, offset, children: staticBoardItemInnerRender({ sortableBy, discriminationField, ...props }) }) });
|
|
83
|
+
});
|
|
84
|
+
const RelativeStaticBoard = reactBinding.Component(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
85
|
+
const itemsAccessor = reactBinding.useEntityList({ field, orderBy, limit, offset });
|
|
86
|
+
const staticBoardProps = useStaticBoard.useStaticBoard({
|
|
87
|
+
itemEntities: itemsAccessor,
|
|
88
|
+
columns,
|
|
89
|
+
sortableBy,
|
|
90
|
+
sortScope,
|
|
91
|
+
discriminationField,
|
|
92
|
+
nullColumn,
|
|
93
|
+
nullColumnPlacement
|
|
94
|
+
});
|
|
95
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Renderer, { ...staticBoardProps, ...props });
|
|
96
|
+
}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {
|
|
97
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(reactBinding.HasMany, { field, orderBy, limit, offset, children: staticBoardItemInnerRender({ sortableBy, discriminationField, ...props }) }) });
|
|
98
|
+
});
|
|
99
|
+
return reactBinding.Component((props) => {
|
|
100
|
+
if ("entities" in props) {
|
|
101
|
+
if (Array.isArray(props.columns)) {
|
|
102
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TopLevelStaticBoard, { ...props });
|
|
103
|
+
} else {
|
|
104
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TopLevelDynamicBoard, { ...props });
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
if (Array.isArray(props.columns)) {
|
|
108
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RelativeStaticBoard, { ...props });
|
|
109
|
+
} else {
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RelativeDynamicBoard, { ...props });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
exports.createBoard = createBoard;
|
|
116
|
+
//# sourceMappingURL=Board.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Board.cjs","sources":["../../src/Board.tsx"],"sourcesContent":["import { Component, EntityListSubTree, Field, HasMany, HasOne, useEntityList, useEntityListSubTree } from '@contember/react-binding'\nimport { ComponentType } from 'react'\nimport { useDynamicBoard } from './useDynamicBoard'\nimport { useStaticBoard } from './useStaticBoard'\nimport { BoardBindingProps } from './BoardBindingProps'\nimport {\n\tBoardBaseProps,\n\tBoardQualifiedDynamicProps,\n\tBoardQualifiedStaticProps,\n\tBoardRelativeDynamicProps,\n\tBoardRelativeStaticProps,\n} from './types'\n\nexport type CreateBoardArgs<T extends {}> = {\n\tRenderer: ComponentType<BoardBindingProps<any> & T>\n\tItemStaticRender?: ComponentType<T>\n\tColumnStaticRender?: ComponentType<T>\n}\n\nexport const createBoard = <RendererExtraProps extends {}>({ Renderer, ItemStaticRender, ColumnStaticRender }: CreateBoardArgs<RendererExtraProps>) => {\n\n\tconst TopLevelDynamicBoard = Component<BoardQualifiedDynamicProps & RendererExtraProps>(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\t\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\t\tconst dynamicBoardProps = useDynamicBoard({\n\t\t\tcolumnEntities: columnsAccessor,\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tcolumnsSortableBy,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...dynamicBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t\t{ItemStaticRender && <ItemStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t\t<EntityListSubTree entities={columns}>\n\t\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t\t{ColumnStaticRender && <ColumnStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\n\tconst RelativeDynamicBoard = Component<BoardRelativeDynamicProps & RendererExtraProps>(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\t\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\t\tconst dynamicBoardProps = useDynamicBoard({\n\t\t\tcolumnEntities: columnsAccessor,\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tcolumnsSortableBy,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...dynamicBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t\t{ItemStaticRender && <ItemStaticRender {...props as RendererExtraProps} />}\n\t\t\t</HasMany>\n\t\t\t<EntityListSubTree entities={columns}>\n\t\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t\t{ColumnStaticRender && <ColumnStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\tconst staticBoardItemInnerRender = ({ discriminationField, sortableBy, ...props }: Pick<BoardQualifiedStaticProps, 'discriminationField' | 'sortableBy'> & RendererExtraProps) => <>\n\t\t<Field {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t{ItemStaticRender && <ItemStaticRender {...props as unknown as RendererExtraProps} />}\n\t</>\n\n\tconst TopLevelStaticBoard = Component<BoardQualifiedStaticProps & RendererExtraProps>(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\t\tconst staticBoardProps = useStaticBoard({\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...staticBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t{staticBoardItemInnerRender({ sortableBy, discriminationField, ...(props as RendererExtraProps) })}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\tconst RelativeStaticBoard = Component<BoardRelativeStaticProps & RendererExtraProps>(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\t\tconst staticBoardProps = useStaticBoard({\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...staticBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t{staticBoardItemInnerRender({ sortableBy, discriminationField, ...(props as RendererExtraProps) })}\n\t\t\t</HasMany>\n\t\t</>)\n\t})\n\n\n\n\treturn Component<BoardBaseProps<RendererExtraProps>>(props => {\n\t\tif ('entities' in props) {\n\t\t\tif (Array.isArray(props.columns)) {\n\t\t\t\treturn <TopLevelStaticBoard {...(props as BoardQualifiedStaticProps & RendererExtraProps)} />\n\t\t\t} else {\n\t\t\t\treturn <TopLevelDynamicBoard {...(props as BoardQualifiedDynamicProps & RendererExtraProps)} />\n\t\t\t}\n\t\t} else {\n\t\t\tif (Array.isArray(props.columns)) {\n\t\t\t\treturn <RelativeStaticBoard {...(props as BoardRelativeStaticProps & RendererExtraProps)} />\n\t\t\t} else {\n\t\t\t\treturn <RelativeDynamicBoard {...(props as BoardRelativeDynamicProps & RendererExtraProps)} />\n\t\t\t}\n\t\t}\n\t})\n\n}\n"],"names":["Component","useEntityListSubTree","useDynamicBoard","jsx","jsxs","Fragment","EntityListSubTree","HasOne","Field","useEntityList","HasMany","useStaticBoard"],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Component, useEntityListSubTree, EntityListSubTree, HasOne, Field, useEntityList, HasMany } from "@contember/react-binding";
|
|
3
|
+
import { useDynamicBoard } from "./useDynamicBoard.js";
|
|
4
|
+
import { useStaticBoard } from "./useStaticBoard.js";
|
|
5
|
+
const createBoard = ({ Renderer, ItemStaticRender, ColumnStaticRender }) => {
|
|
6
|
+
const TopLevelDynamicBoard = Component(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
7
|
+
const itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset });
|
|
8
|
+
const columnsAccessor = useEntityListSubTree({ entities: columns });
|
|
9
|
+
const dynamicBoardProps = useDynamicBoard({
|
|
10
|
+
columnEntities: columnsAccessor,
|
|
11
|
+
itemEntities: itemsAccessor,
|
|
12
|
+
columns,
|
|
13
|
+
sortableBy,
|
|
14
|
+
sortScope,
|
|
15
|
+
columnsSortableBy,
|
|
16
|
+
discriminationField,
|
|
17
|
+
nullColumn,
|
|
18
|
+
nullColumnPlacement
|
|
19
|
+
});
|
|
20
|
+
return /* @__PURE__ */ jsx(Renderer, { ...dynamicBoardProps, ...props });
|
|
21
|
+
}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {
|
|
22
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
+
/* @__PURE__ */ jsxs(EntityListSubTree, { entities, orderBy, limit, offset, children: [
|
|
24
|
+
/* @__PURE__ */ jsx(HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
25
|
+
sortableBy && /* @__PURE__ */ jsx(Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
26
|
+
ItemStaticRender && /* @__PURE__ */ jsx(ItemStaticRender, { ...props })
|
|
27
|
+
] }),
|
|
28
|
+
/* @__PURE__ */ jsxs(EntityListSubTree, { entities: columns, children: [
|
|
29
|
+
columnsSortableBy && /* @__PURE__ */ jsx(Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
|
|
30
|
+
ColumnStaticRender && /* @__PURE__ */ jsx(ColumnStaticRender, { ...props })
|
|
31
|
+
] })
|
|
32
|
+
] });
|
|
33
|
+
});
|
|
34
|
+
const RelativeDynamicBoard = Component(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
35
|
+
const itemsAccessor = useEntityList({ field, orderBy, limit, offset });
|
|
36
|
+
const columnsAccessor = useEntityListSubTree({ entities: columns });
|
|
37
|
+
const dynamicBoardProps = useDynamicBoard({
|
|
38
|
+
columnEntities: columnsAccessor,
|
|
39
|
+
itemEntities: itemsAccessor,
|
|
40
|
+
columns,
|
|
41
|
+
sortableBy,
|
|
42
|
+
sortScope,
|
|
43
|
+
columnsSortableBy,
|
|
44
|
+
discriminationField,
|
|
45
|
+
nullColumn,
|
|
46
|
+
nullColumnPlacement
|
|
47
|
+
});
|
|
48
|
+
return /* @__PURE__ */ jsx(Renderer, { ...dynamicBoardProps, ...props });
|
|
49
|
+
}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {
|
|
50
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51
|
+
/* @__PURE__ */ jsxs(HasMany, { field, orderBy, limit, offset, children: [
|
|
52
|
+
/* @__PURE__ */ jsx(HasOne, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
53
|
+
sortableBy && /* @__PURE__ */ jsx(Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
54
|
+
ItemStaticRender && /* @__PURE__ */ jsx(ItemStaticRender, { ...props })
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ jsxs(EntityListSubTree, { entities: columns, children: [
|
|
57
|
+
columnsSortableBy && /* @__PURE__ */ jsx(Field, { ...typeof columnsSortableBy === "string" ? { field: columnsSortableBy } : columnsSortableBy }),
|
|
58
|
+
ColumnStaticRender && /* @__PURE__ */ jsx(ColumnStaticRender, { ...props })
|
|
59
|
+
] })
|
|
60
|
+
] });
|
|
61
|
+
});
|
|
62
|
+
const staticBoardItemInnerRender = ({ discriminationField, sortableBy, ...props }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
63
|
+
/* @__PURE__ */ jsx(Field, { ...typeof discriminationField === "string" ? { field: discriminationField } : discriminationField }),
|
|
64
|
+
sortableBy && /* @__PURE__ */ jsx(Field, { ...typeof sortableBy === "string" ? { field: sortableBy } : sortableBy }),
|
|
65
|
+
ItemStaticRender && /* @__PURE__ */ jsx(ItemStaticRender, { ...props })
|
|
66
|
+
] });
|
|
67
|
+
const TopLevelStaticBoard = Component(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
68
|
+
const itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset });
|
|
69
|
+
const staticBoardProps = useStaticBoard({
|
|
70
|
+
itemEntities: itemsAccessor,
|
|
71
|
+
columns,
|
|
72
|
+
sortableBy,
|
|
73
|
+
sortScope,
|
|
74
|
+
discriminationField,
|
|
75
|
+
nullColumn,
|
|
76
|
+
nullColumnPlacement
|
|
77
|
+
});
|
|
78
|
+
return /* @__PURE__ */ jsx(Renderer, { ...staticBoardProps, ...props });
|
|
79
|
+
}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {
|
|
80
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(EntityListSubTree, { entities, orderBy, limit, offset, children: staticBoardItemInnerRender({ sortableBy, discriminationField, ...props }) }) });
|
|
81
|
+
});
|
|
82
|
+
const RelativeStaticBoard = Component(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {
|
|
83
|
+
const itemsAccessor = useEntityList({ field, orderBy, limit, offset });
|
|
84
|
+
const staticBoardProps = useStaticBoard({
|
|
85
|
+
itemEntities: itemsAccessor,
|
|
86
|
+
columns,
|
|
87
|
+
sortableBy,
|
|
88
|
+
sortScope,
|
|
89
|
+
discriminationField,
|
|
90
|
+
nullColumn,
|
|
91
|
+
nullColumnPlacement
|
|
92
|
+
});
|
|
93
|
+
return /* @__PURE__ */ jsx(Renderer, { ...staticBoardProps, ...props });
|
|
94
|
+
}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {
|
|
95
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(HasMany, { field, orderBy, limit, offset, children: staticBoardItemInnerRender({ sortableBy, discriminationField, ...props }) }) });
|
|
96
|
+
});
|
|
97
|
+
return Component((props) => {
|
|
98
|
+
if ("entities" in props) {
|
|
99
|
+
if (Array.isArray(props.columns)) {
|
|
100
|
+
return /* @__PURE__ */ jsx(TopLevelStaticBoard, { ...props });
|
|
101
|
+
} else {
|
|
102
|
+
return /* @__PURE__ */ jsx(TopLevelDynamicBoard, { ...props });
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
if (Array.isArray(props.columns)) {
|
|
106
|
+
return /* @__PURE__ */ jsx(RelativeStaticBoard, { ...props });
|
|
107
|
+
} else {
|
|
108
|
+
return /* @__PURE__ */ jsx(RelativeDynamicBoard, { ...props });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
createBoard
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=Board.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Board.js","sources":["../../src/Board.tsx"],"sourcesContent":["import { Component, EntityListSubTree, Field, HasMany, HasOne, useEntityList, useEntityListSubTree } from '@contember/react-binding'\nimport { ComponentType } from 'react'\nimport { useDynamicBoard } from './useDynamicBoard'\nimport { useStaticBoard } from './useStaticBoard'\nimport { BoardBindingProps } from './BoardBindingProps'\nimport {\n\tBoardBaseProps,\n\tBoardQualifiedDynamicProps,\n\tBoardQualifiedStaticProps,\n\tBoardRelativeDynamicProps,\n\tBoardRelativeStaticProps,\n} from './types'\n\nexport type CreateBoardArgs<T extends {}> = {\n\tRenderer: ComponentType<BoardBindingProps<any> & T>\n\tItemStaticRender?: ComponentType<T>\n\tColumnStaticRender?: ComponentType<T>\n}\n\nexport const createBoard = <RendererExtraProps extends {}>({ Renderer, ItemStaticRender, ColumnStaticRender }: CreateBoardArgs<RendererExtraProps>) => {\n\n\tconst TopLevelDynamicBoard = Component<BoardQualifiedDynamicProps & RendererExtraProps>(({ entities, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\t\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\t\tconst dynamicBoardProps = useDynamicBoard({\n\t\t\tcolumnEntities: columnsAccessor,\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tcolumnsSortableBy,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...dynamicBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t\t{ItemStaticRender && <ItemStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t\t<EntityListSubTree entities={columns}>\n\t\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t\t{ColumnStaticRender && <ColumnStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\n\tconst RelativeDynamicBoard = Component<BoardRelativeDynamicProps & RendererExtraProps>(({ field, orderBy, limit, offset, columns, columnsSortableBy, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\t\tconst columnsAccessor = useEntityListSubTree({ entities: columns })\n\t\tconst dynamicBoardProps = useDynamicBoard({\n\t\t\tcolumnEntities: columnsAccessor,\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tcolumnsSortableBy,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...dynamicBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, columnsSortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t<HasOne {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t\t\t{ItemStaticRender && <ItemStaticRender {...props as RendererExtraProps} />}\n\t\t\t</HasMany>\n\t\t\t<EntityListSubTree entities={columns}>\n\t\t\t\t{columnsSortableBy && <Field {...typeof columnsSortableBy === 'string' ? { field: columnsSortableBy } : columnsSortableBy} />}\n\t\t\t\t{ColumnStaticRender && <ColumnStaticRender {...props as RendererExtraProps} />}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\tconst staticBoardItemInnerRender = ({ discriminationField, sortableBy, ...props }: Pick<BoardQualifiedStaticProps, 'discriminationField' | 'sortableBy'> & RendererExtraProps) => <>\n\t\t<Field {...typeof discriminationField === 'string' ? { field: discriminationField } : discriminationField} />\n\t\t{sortableBy && <Field {...typeof sortableBy === 'string' ? { field: sortableBy } : sortableBy} />}\n\t\t{ItemStaticRender && <ItemStaticRender {...props as unknown as RendererExtraProps} />}\n\t</>\n\n\tconst TopLevelStaticBoard = Component<BoardQualifiedStaticProps & RendererExtraProps>(({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityListSubTree({ entities, orderBy, limit, offset })\n\t\tconst staticBoardProps = useStaticBoard({\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...staticBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ entities, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<EntityListSubTree entities={entities} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t{staticBoardItemInnerRender({ sortableBy, discriminationField, ...(props as RendererExtraProps) })}\n\t\t\t</EntityListSubTree>\n\t\t</>)\n\t})\n\n\n\tconst RelativeStaticBoard = Component<BoardRelativeStaticProps & RendererExtraProps>(({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, sortScope, nullColumn, nullColumnPlacement, ...props }) => {\n\t\tconst itemsAccessor = useEntityList({ field, orderBy, limit, offset })\n\t\tconst staticBoardProps = useStaticBoard({\n\t\t\titemEntities: itemsAccessor,\n\t\t\tcolumns,\n\t\t\tsortableBy,\n\t\t\tsortScope,\n\t\t\tdiscriminationField,\n\t\t\tnullColumn,\n\t\t\tnullColumnPlacement,\n\t\t})\n\t\treturn (\n\t\t\t<Renderer {...staticBoardProps} {...props as RendererExtraProps} />\n\t\t)\n\t}, ({ field, orderBy, limit, offset, columns, discriminationField, sortableBy, ...props }) => {\n\t\treturn (<>\n\t\t\t<HasMany field={field} orderBy={orderBy} limit={limit} offset={offset}>\n\t\t\t\t{staticBoardItemInnerRender({ sortableBy, discriminationField, ...(props as RendererExtraProps) })}\n\t\t\t</HasMany>\n\t\t</>)\n\t})\n\n\n\n\treturn Component<BoardBaseProps<RendererExtraProps>>(props => {\n\t\tif ('entities' in props) {\n\t\t\tif (Array.isArray(props.columns)) {\n\t\t\t\treturn <TopLevelStaticBoard {...(props as BoardQualifiedStaticProps & RendererExtraProps)} />\n\t\t\t} else {\n\t\t\t\treturn <TopLevelDynamicBoard {...(props as BoardQualifiedDynamicProps & RendererExtraProps)} />\n\t\t\t}\n\t\t} else {\n\t\t\tif (Array.isArray(props.columns)) {\n\t\t\t\treturn <RelativeStaticBoard {...(props as BoardRelativeStaticProps & RendererExtraProps)} />\n\t\t\t} else {\n\t\t\t\treturn <RelativeDynamicBoard {...(props as BoardRelativeDynamicProps & RendererExtraProps)} />\n\t\t\t}\n\t\t}\n\t})\n\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.cjs","sources":["../../src/const.ts"],"sourcesContent":["export const BoardNullColumnPlaceholder = '__null_column'\n"],"names":[],"mappings":";;AAAO,MAAM,6BAA6B;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sources":["../../src/const.ts"],"sourcesContent":["export const BoardNullColumnPlaceholder = '__null_column'\n"],"names":[],"mappings":"AAAO,MAAM,6BAA6B;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const Board = require("./Board.cjs");
|
|
4
|
+
const _const = require("./const.cjs");
|
|
5
|
+
const useDynamicBoard = require("./useDynamicBoard.cjs");
|
|
6
|
+
const useStaticBoard = require("./useStaticBoard.cjs");
|
|
7
|
+
exports.createBoard = Board.createBoard;
|
|
8
|
+
exports.BoardNullColumnPlaceholder = _const.BoardNullColumnPlaceholder;
|
|
9
|
+
exports.useDynamicBoard = useDynamicBoard.useDynamicBoard;
|
|
10
|
+
exports.useStaticBoard = useStaticBoard.useStaticBoard;
|
|
11
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createBoard } from "./Board.js";
|
|
2
|
+
import { BoardNullColumnPlaceholder } from "./const.js";
|
|
3
|
+
import { useDynamicBoard } from "./useDynamicBoard.js";
|
|
4
|
+
import { useStaticBoard } from "./useStaticBoard.js";
|
|
5
|
+
export {
|
|
6
|
+
BoardNullColumnPlaceholder,
|
|
7
|
+
createBoard,
|
|
8
|
+
useDynamicBoard,
|
|
9
|
+
useStaticBoard
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const _const = require("../const.cjs");
|
|
5
|
+
const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }) => {
|
|
6
|
+
return react.useMemo(() => {
|
|
7
|
+
const itemsByColumn = groupItemsByColumn(items);
|
|
8
|
+
const result = [];
|
|
9
|
+
let index = 0;
|
|
10
|
+
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({
|
|
19
|
+
id: _const.BoardNullColumnPlaceholder,
|
|
20
|
+
index: index++,
|
|
21
|
+
value: null,
|
|
22
|
+
items: nullItems.map((it, index2) => ({ value: it, id: it.id, index: index2 }))
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
if (nullColumnPlacement === "start") {
|
|
26
|
+
index--;
|
|
27
|
+
pushNullColumn();
|
|
28
|
+
}
|
|
29
|
+
for (const column of columns) {
|
|
30
|
+
result.push({
|
|
31
|
+
id: columnIdGetter(column),
|
|
32
|
+
index: index++,
|
|
33
|
+
value: column,
|
|
34
|
+
items: itemsByColumn.get(columnIdGetter(column))?.map((it, index2) => ({ value: it, id: it.id, index: index2 })) ?? []
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (nullColumnPlacement !== "start") {
|
|
38
|
+
pushNullColumn();
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement]);
|
|
42
|
+
};
|
|
43
|
+
exports.useBoardColumns = useBoardColumns;
|
|
44
|
+
//# sourceMappingURL=useBoardColumns.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBoardColumns.cjs","sources":["../../../src/internal/useBoardColumns.ts"],"sourcesContent":["import { BoardColumn, BoardColumnValue } from '../BoardBindingProps'\nimport { useMemo } from 'react'\nimport { UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { EntityListAccessor } from '@contember/react-binding'\nimport { BoardNullColumnPlaceholder } from '../const'\nimport { BoardNullBehaviourProps } from '../types'\n\nexport const useBoardColumns = <ColumnValue extends BoardColumnValue>({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }: {\n\titems: EntityListAccessor\n\tcolumns: Iterable<ColumnValue>\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n} & BoardNullBehaviourProps): BoardColumn<ColumnValue>[] => {\n\n\treturn useMemo(() => {\n\t\tconst itemsByColumn = groupItemsByColumn(items)\n\n\t\tconst result: BoardColumn<ColumnValue>[] = []\n\t\tlet index = 0\n\t\tconst nullItems = itemsByColumn.get(null) ?? []\n\n\t\tconst pushNullColumn = () => {\n\t\t\tif (nullColumn === 'never') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (nullColumn === 'auto' && nullItems.length === 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tresult.push({\n\t\t\t\tid: BoardNullColumnPlaceholder,\n\t\t\t\tindex: index++,\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\n\t\tif (nullColumnPlacement === 'start') {\n\t\t\tindex--\n\t\t\tpushNullColumn()\n\t\t}\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\n\t\tif (nullColumnPlacement !== 'start') {\n\t\t\tpushNullColumn()\n\t\t}\n\t\treturn result\n\t}, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement])\n}\n"],"names":["useMemo","BoardNullColumnPlaceholder","index"],"mappings":";;;;AAOa,MAAA,kBAAkB,CAAuC,EAAE,oBAAoB,OAAO,SAAS,YAAY,qBAAqB,qBAKjF;AAE3D,SAAOA,cAAQ,MAAM;AACd,UAAA,gBAAgB,mBAAmB,KAAK;AAE9C,UAAM,SAAqC,CAAA;AAC3C,QAAI,QAAQ;AACZ,UAAM,YAAY,cAAc,IAAI,IAAI,KAAK,CAAA;AAE7C,UAAM,iBAAiB,MAAM;AAC5B,UAAI,eAAe,SAAS;AAC3B;AAAA,MACD;AACA,UAAI,eAAe,UAAU,UAAU,WAAW,GAAG;AACpD;AAAA,MACD;AAEA,aAAO,KAAK;AAAA,QACX,IAAIC,OAAA;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,UAAU,IAAI,CAAC,IAAIC,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,OAAQ,EAAA;AAAA,MAAA,CACrE;AAAA,IAAA;AAGF,QAAI,wBAAwB,SAAS;AACpC;AACe;IAChB;AAEA,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;AAEA,QAAI,wBAAwB,SAAS;AACrB;IAChB;AACO,WAAA;AAAA,EAAA,GACL,CAAC,gBAAgB,SAAS,oBAAoB,OAAO,YAAY,mBAAmB,CAAC;AACzF;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { BoardNullColumnPlaceholder } from "../const.js";
|
|
3
|
+
const useBoardColumns = ({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }) => {
|
|
4
|
+
return useMemo(() => {
|
|
5
|
+
const itemsByColumn = groupItemsByColumn(items);
|
|
6
|
+
const result = [];
|
|
7
|
+
let index = 0;
|
|
8
|
+
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({
|
|
17
|
+
id: BoardNullColumnPlaceholder,
|
|
18
|
+
index: index++,
|
|
19
|
+
value: null,
|
|
20
|
+
items: nullItems.map((it, index2) => ({ value: it, id: it.id, index: index2 }))
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
if (nullColumnPlacement === "start") {
|
|
24
|
+
index--;
|
|
25
|
+
pushNullColumn();
|
|
26
|
+
}
|
|
27
|
+
for (const column of columns) {
|
|
28
|
+
result.push({
|
|
29
|
+
id: columnIdGetter(column),
|
|
30
|
+
index: index++,
|
|
31
|
+
value: column,
|
|
32
|
+
items: itemsByColumn.get(columnIdGetter(column))?.map((it, index2) => ({ value: it, id: it.id, index: index2 })) ?? []
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (nullColumnPlacement !== "start") {
|
|
36
|
+
pushNullColumn();
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement]);
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
useBoardColumns
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=useBoardColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBoardColumns.js","sources":["../../../src/internal/useBoardColumns.ts"],"sourcesContent":["import { BoardColumn, BoardColumnValue } from '../BoardBindingProps'\nimport { useMemo } from 'react'\nimport { UseGroupItemsByColumn } from './useGroupItemsByColumn'\nimport { EntityListAccessor } from '@contember/react-binding'\nimport { BoardNullColumnPlaceholder } from '../const'\nimport { BoardNullBehaviourProps } from '../types'\n\nexport const useBoardColumns = <ColumnValue extends BoardColumnValue>({ groupItemsByColumn, items, columns, nullColumn, nullColumnPlacement, columnIdGetter }: {\n\titems: EntityListAccessor\n\tcolumns: Iterable<ColumnValue>\n\tcolumnIdGetter: (column: ColumnValue) => string | number\n\tgroupItemsByColumn: UseGroupItemsByColumn,\n} & BoardNullBehaviourProps): BoardColumn<ColumnValue>[] => {\n\n\treturn useMemo(() => {\n\t\tconst itemsByColumn = groupItemsByColumn(items)\n\n\t\tconst result: BoardColumn<ColumnValue>[] = []\n\t\tlet index = 0\n\t\tconst nullItems = itemsByColumn.get(null) ?? []\n\n\t\tconst pushNullColumn = () => {\n\t\t\tif (nullColumn === 'never') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (nullColumn === 'auto' && nullItems.length === 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tresult.push({\n\t\t\t\tid: BoardNullColumnPlaceholder,\n\t\t\t\tindex: index++,\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\n\t\tif (nullColumnPlacement === 'start') {\n\t\t\tindex--\n\t\t\tpushNullColumn()\n\t\t}\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\n\t\tif (nullColumnPlacement !== 'start') {\n\t\t\tpushNullColumn()\n\t\t}\n\t\treturn result\n\t}, [columnIdGetter, columns, groupItemsByColumn, items, nullColumn, nullColumnPlacement])\n}\n"],"names":["index"],"mappings":";;AAOa,MAAA,kBAAkB,CAAuC,EAAE,oBAAoB,OAAO,SAAS,YAAY,qBAAqB,qBAKjF;AAE3D,SAAO,QAAQ,MAAM;AACd,UAAA,gBAAgB,mBAAmB,KAAK;AAE9C,UAAM,SAAqC,CAAA;AAC3C,QAAI,QAAQ;AACZ,UAAM,YAAY,cAAc,IAAI,IAAI,KAAK,CAAA;AAE7C,UAAM,iBAAiB,MAAM;AAC5B,UAAI,eAAe,SAAS;AAC3B;AAAA,MACD;AACA,UAAI,eAAe,UAAU,UAAU,WAAW,GAAG;AACpD;AAAA,MACD;AAEA,aAAO,KAAK;AAAA,QACX,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO,UAAU,IAAI,CAAC,IAAIA,YAAW,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI,OAAAA,OAAQ,EAAA;AAAA,MAAA,CACrE;AAAA,IAAA;AAGF,QAAI,wBAAwB,SAAS;AACpC;AACe;IAChB;AAEA,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;AAEA,QAAI,wBAAwB,SAAS;AACrB;IAChB;AACO,WAAA;AAAA,EAAA,GACL,CAAC,gBAAgB,SAAS,oBAAoB,OAAO,YAAY,mBAAmB,CAAC;AACzF;"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const reactBinding = require("@contember/react-binding");
|
|
5
|
+
const arrayMove = require("../utils/arrayMove.cjs");
|
|
6
|
+
const useBoardItemsMethods = ({
|
|
7
|
+
itemEntities,
|
|
8
|
+
desugaredSortableByField,
|
|
9
|
+
connectItemToColumn,
|
|
10
|
+
groupItemsByColumn,
|
|
11
|
+
getDiscriminatorValue,
|
|
12
|
+
columnIdGetter,
|
|
13
|
+
sortScope = "column"
|
|
14
|
+
}) => {
|
|
15
|
+
const itemEntitiesEntitiesGetter = itemEntities.getAccessor;
|
|
16
|
+
const getSortScopeItems = react.useCallback((column) => {
|
|
17
|
+
const itemEntities2 = itemEntitiesEntitiesGetter();
|
|
18
|
+
return sortScope === "column" ? groupItemsByColumn(itemEntities2).get(column)?.slice() ?? [] : reactBinding.sortEntities(Array.from(itemEntities2), desugaredSortableByField);
|
|
19
|
+
}, [desugaredSortableByField, groupItemsByColumn, itemEntitiesEntitiesGetter, sortScope]);
|
|
20
|
+
const resolveScopedIndex = react.useCallback((column, index) => {
|
|
21
|
+
if (index === void 0) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
if (sortScope === "column") {
|
|
25
|
+
return index;
|
|
26
|
+
}
|
|
27
|
+
const columnItems = groupItemsByColumn(itemEntities).get(column)?.slice() ?? [];
|
|
28
|
+
const columnOnIndex = columnItems[index];
|
|
29
|
+
if (!columnOnIndex) {
|
|
30
|
+
return void 0;
|
|
31
|
+
}
|
|
32
|
+
const sortScopeItems = getSortScopeItems(column);
|
|
33
|
+
return sortScopeItems.findIndex((it) => it.id === columnOnIndex.id) ?? sortScopeItems.length;
|
|
34
|
+
}, [getSortScopeItems, groupItemsByColumn, itemEntities, sortScope]);
|
|
35
|
+
const addItem = react.useCallback((column, index, preprocess) => {
|
|
36
|
+
const itemEntities2 = itemEntitiesEntitiesGetter();
|
|
37
|
+
const resolvedPreprocess = (getAccessor, options) => {
|
|
38
|
+
connectItemToColumn(getAccessor(), column);
|
|
39
|
+
preprocess?.(getAccessor, options);
|
|
40
|
+
};
|
|
41
|
+
if (!desugaredSortableByField) {
|
|
42
|
+
if (index === void 0) {
|
|
43
|
+
return itemEntities2.createNewEntity(resolvedPreprocess);
|
|
44
|
+
}
|
|
45
|
+
throw new reactBinding.BindingError("Cannot add item at specific index without sortableBy field");
|
|
46
|
+
}
|
|
47
|
+
const columnId = column ? columnIdGetter(column) : null;
|
|
48
|
+
const sortScopeItems = getSortScopeItems(columnId);
|
|
49
|
+
const resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length;
|
|
50
|
+
itemEntities2.createNewEntity((getEntity, options) => {
|
|
51
|
+
sortScopeItems.splice(resolvedIndex, 0, getEntity());
|
|
52
|
+
reactBinding.repairEntitiesOrder(desugaredSortableByField, sortScopeItems);
|
|
53
|
+
resolvedPreprocess?.(getEntity, options);
|
|
54
|
+
});
|
|
55
|
+
}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getSortScopeItems, itemEntitiesEntitiesGetter, resolveScopedIndex]);
|
|
56
|
+
const moveItem = react.useMemo(() => {
|
|
57
|
+
if (!desugaredSortableByField) {
|
|
58
|
+
return void 0;
|
|
59
|
+
}
|
|
60
|
+
return (entity, column, index) => {
|
|
61
|
+
const currentColumn = getDiscriminatorValue(entity);
|
|
62
|
+
const columnId = column ? columnIdGetter(column) : null;
|
|
63
|
+
connectItemToColumn(entity, column);
|
|
64
|
+
if (currentColumn === columnId || sortScope === "board") {
|
|
65
|
+
const sortScopeItems = getSortScopeItems(columnId);
|
|
66
|
+
const currentIndex2 = sortScopeItems.findIndex((it) => it.id === entity.id);
|
|
67
|
+
const resolvedIndex = resolveScopedIndex(columnId, index) ?? sortScopeItems.length;
|
|
68
|
+
const resortedItems = arrayMove.arrayMove(sortScopeItems, currentIndex2, resolvedIndex);
|
|
69
|
+
reactBinding.repairEntitiesOrder(desugaredSortableByField, resortedItems);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const itemEntities2 = itemEntitiesEntitiesGetter();
|
|
73
|
+
const groupedItems = groupItemsByColumn(itemEntities2);
|
|
74
|
+
const currentColumnItems = groupedItems.get(currentColumn ?? null)?.slice() ?? [];
|
|
75
|
+
const currentIndex = currentColumnItems.findIndex((it) => it.id === entity.id);
|
|
76
|
+
currentColumnItems.splice(currentIndex, 1);
|
|
77
|
+
reactBinding.repairEntitiesOrder(desugaredSortableByField, currentColumnItems);
|
|
78
|
+
const newColumnItems = groupedItems.get(columnId)?.slice() ?? [];
|
|
79
|
+
newColumnItems.splice(index, 0, entity);
|
|
80
|
+
reactBinding.repairEntitiesOrder(desugaredSortableByField, newColumnItems);
|
|
81
|
+
};
|
|
82
|
+
}, [columnIdGetter, connectItemToColumn, desugaredSortableByField, getDiscriminatorValue, getSortScopeItems, groupItemsByColumn, itemEntitiesEntitiesGetter, resolveScopedIndex, sortScope]);
|
|
83
|
+
const removeItem = react.useCallback((entity) => {
|
|
84
|
+
if (desugaredSortableByField) {
|
|
85
|
+
const currentColumn = getDiscriminatorValue(entity);
|
|
86
|
+
const sortScopeItems = getSortScopeItems(currentColumn);
|
|
87
|
+
const currentIndex = sortScopeItems.findIndex((it) => it.id === entity.id);
|
|
88
|
+
sortScopeItems.splice(currentIndex, 1);
|
|
89
|
+
reactBinding.repairEntitiesOrder(desugaredSortableByField, sortScopeItems);
|
|
90
|
+
}
|
|
91
|
+
entity.deleteEntity();
|
|
92
|
+
}, [desugaredSortableByField, getDiscriminatorValue, getSortScopeItems]);
|
|
93
|
+
return {
|
|
94
|
+
addItem,
|
|
95
|
+
moveItem,
|
|
96
|
+
removeItem
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
exports.useBoardItemsMethods = useBoardItemsMethods;
|
|
100
|
+
//# sourceMappingURL=useBoardItemsMethods.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBoardItemsMethods.cjs","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":["useCallback","itemEntities","sortEntities","BindingError","repairEntitiesOrder","useMemo","currentIndex","arrayMove"],"mappings":"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"}
|