@contember/react-select 2.1.0-alpha.9 → 2.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +20 -0
- package/dist/development/index.cjs +2 -2
- package/dist/development/index.js +1 -1
- package/dist/development/src/components/MultiSelect.cjs.map +1 -1
- package/dist/development/src/components/MultiSelect.js.map +1 -1
- package/dist/development/src/components/Select.cjs.map +1 -1
- package/dist/development/src/components/Select.js.map +1 -1
- package/dist/development/src/components/SelectDataView.cjs.map +1 -1
- package/dist/development/src/components/SelectDataView.js.map +1 -1
- package/dist/development/src/components/SelectEachItem.cjs +1 -1
- package/dist/development/src/components/SelectEachItem.cjs.map +1 -1
- package/dist/development/src/components/SelectEachItem.js +1 -1
- package/dist/development/src/components/SelectEachItem.js.map +1 -1
- package/dist/development/src/components/SelectItemTrigger.cjs.map +1 -1
- package/dist/development/src/components/SelectItemTrigger.js.map +1 -1
- package/dist/development/src/components/SelectNewItem.cjs +29 -14
- package/dist/development/src/components/SelectNewItem.cjs.map +1 -1
- package/dist/development/src/components/SelectNewItem.js +29 -14
- package/dist/development/src/components/SelectNewItem.js.map +1 -1
- package/dist/development/src/components/SelectOption.cjs.map +1 -1
- package/dist/development/src/components/SelectOption.js.map +1 -1
- package/dist/development/src/components/SelectPlaceholder.cjs.map +1 -1
- package/dist/development/src/components/SelectPlaceholder.js.map +1 -1
- package/dist/development/src/components/SortableMultiSelect.cjs +70 -67
- package/dist/development/src/components/SortableMultiSelect.cjs.map +1 -1
- package/dist/development/src/components/SortableMultiSelect.js +70 -67
- package/dist/development/src/components/SortableMultiSelect.js.map +1 -1
- package/dist/development/src/contexts.cjs.map +1 -1
- package/dist/development/src/contexts.js.map +1 -1
- package/dist/production/index.cjs +2 -2
- package/dist/production/index.js +1 -1
- package/dist/production/src/components/MultiSelect.cjs.map +1 -1
- package/dist/production/src/components/MultiSelect.js.map +1 -1
- package/dist/production/src/components/Select.cjs.map +1 -1
- package/dist/production/src/components/Select.js.map +1 -1
- package/dist/production/src/components/SelectDataView.cjs.map +1 -1
- package/dist/production/src/components/SelectDataView.js.map +1 -1
- package/dist/production/src/components/SelectEachItem.cjs.map +1 -1
- package/dist/production/src/components/SelectEachItem.js.map +1 -1
- package/dist/production/src/components/SelectItemTrigger.cjs.map +1 -1
- package/dist/production/src/components/SelectItemTrigger.js.map +1 -1
- package/dist/production/src/components/SelectNewItem.cjs +14 -3
- package/dist/production/src/components/SelectNewItem.cjs.map +1 -1
- package/dist/production/src/components/SelectNewItem.js +14 -3
- package/dist/production/src/components/SelectNewItem.js.map +1 -1
- package/dist/production/src/components/SelectOption.cjs.map +1 -1
- package/dist/production/src/components/SelectOption.js.map +1 -1
- package/dist/production/src/components/SelectPlaceholder.cjs.map +1 -1
- package/dist/production/src/components/SelectPlaceholder.js.map +1 -1
- package/dist/production/src/components/SortableMultiSelect.cjs +42 -39
- package/dist/production/src/components/SortableMultiSelect.cjs.map +1 -1
- package/dist/production/src/components/SortableMultiSelect.js +42 -39
- package/dist/production/src/components/SortableMultiSelect.js.map +1 -1
- package/dist/production/src/contexts.cjs.map +1 -1
- package/dist/production/src/contexts.js.map +1 -1
- package/dist/types/components/SelectDataView.d.ts.map +1 -1
- package/dist/types/components/SelectEachItem.d.ts.map +1 -1
- package/dist/types/components/SelectNewItem.d.ts.map +1 -1
- package/dist/types/components/SortableMultiSelect.d.ts.map +1 -1
- package/dist/types/contexts.d.ts +6 -6
- package/dist/types/contexts.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
- package/src/components/MultiSelect.tsx +1 -2
- package/src/components/Select.tsx +0 -1
- package/src/components/SelectDataView.tsx +1 -1
- package/src/components/SelectEachItem.tsx +0 -1
- package/src/components/SelectItemTrigger.tsx +1 -1
- package/src/components/SelectNewItem.tsx +27 -10
- package/src/components/SortableMultiSelect.tsx +64 -60
- package/src/contexts.ts +0 -2
|
@@ -6,73 +6,76 @@ const contexts = require("../contexts.cjs");
|
|
|
6
6
|
const reactBinding = require("@contember/react-binding");
|
|
7
7
|
const reactUtils = require("@contember/react-utils");
|
|
8
8
|
const reactRepeater = require("@contember/react-repeater");
|
|
9
|
-
const SortableMultiSelect = reactBinding.Component(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
const SortableMultiSelect = reactBinding.Component(
|
|
10
|
+
({ field, children, sortableBy, connectAt, options, onSelect, onUnselect }) => {
|
|
11
|
+
const list = reactBinding.useEntityList({ field });
|
|
12
|
+
const entitiesArr = React.useMemo(() => Array.from(list), [list]);
|
|
13
|
+
const optionsMarker = React.useMemo(() => {
|
|
14
|
+
const desugared = reactBinding.QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment);
|
|
15
|
+
let marker = list.getMarker();
|
|
16
|
+
for (let relation of desugared.hasOneRelationPath) {
|
|
17
|
+
const placeholder = reactBinding.PlaceholderGenerator.getHasOneRelationPlaceholder(relation);
|
|
18
|
+
const relationMarker = marker.fields.markers.get(placeholder);
|
|
19
|
+
if (!relationMarker || relationMarker instanceof reactBinding.FieldMarker) {
|
|
20
|
+
throw new Error("Invalid marker");
|
|
21
|
+
}
|
|
22
|
+
marker = relationMarker;
|
|
20
23
|
}
|
|
21
|
-
marker
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
action
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
24
|
+
return marker;
|
|
25
|
+
}, [connectAt, list]);
|
|
26
|
+
options ?? (options = optionsMarker.environment.getSubTreeNode().entity.name);
|
|
27
|
+
const selectedEntities = React.useMemo(() => Array.from(list).map((it) => it.getEntity({ field: connectAt }).id), [connectAt, list]);
|
|
28
|
+
const handler = reactUtils.useReferentiallyStableCallback((entity, action = "toggle") => {
|
|
29
|
+
const isSelected2 = selectedEntities.includes(entity.id);
|
|
30
|
+
if (action === "toggle") {
|
|
31
|
+
action = isSelected2 ? "unselect" : "select";
|
|
32
|
+
}
|
|
33
|
+
if (action === "unselect" && isSelected2) {
|
|
34
|
+
Array.from(list).find((it) => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity();
|
|
35
|
+
onUnselect?.(entity);
|
|
36
|
+
} else if (action === "select" && !isSelected2) {
|
|
37
|
+
list.createNewEntity((getEntity) => {
|
|
38
|
+
getEntity().connectEntityAtField({ field: connectAt }, entity);
|
|
39
|
+
onSelect?.(entity);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const isSelected = React.useCallback((entity) => {
|
|
44
|
+
return selectedEntities.includes(entity.id);
|
|
45
|
+
}, [selectedEntities]);
|
|
46
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.SelectOptionsContext.Provider, { value: options, children }, void 0, false, {
|
|
47
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
48
|
+
lineNumber: 81,
|
|
49
|
+
columnNumber: 8
|
|
50
|
+
}, void 0) }, void 0, false, {
|
|
51
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
52
|
+
lineNumber: 80,
|
|
53
|
+
columnNumber: 7
|
|
54
|
+
}, void 0) }, void 0, false, {
|
|
55
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
56
|
+
lineNumber: 79,
|
|
57
|
+
columnNumber: 6
|
|
58
|
+
}, void 0) }, void 0, false, {
|
|
59
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
60
|
+
lineNumber: 78,
|
|
61
|
+
columnNumber: 5
|
|
62
|
+
}, void 0) }, void 0, false, {
|
|
63
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
64
|
+
lineNumber: 77,
|
|
65
|
+
columnNumber: 4
|
|
66
|
+
}, void 0);
|
|
67
|
+
},
|
|
68
|
+
({ children, field, sortableBy, connectAt }) => {
|
|
69
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactRepeater.Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactBinding.HasOne, { field: connectAt, expectedMutation: "connectOrDisconnect", children }, void 0, false, {
|
|
70
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
71
|
+
lineNumber: 93,
|
|
72
|
+
columnNumber: 5
|
|
73
|
+
}, void 0) }, void 0, false, {
|
|
74
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
75
|
+
lineNumber: 92,
|
|
76
|
+
columnNumber: 4
|
|
77
|
+
}, void 0);
|
|
78
|
+
}
|
|
79
|
+
);
|
|
77
80
|
exports.SortableMultiSelect = SortableMultiSelect;
|
|
78
81
|
//# sourceMappingURL=SortableMultiSelect.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableMultiSelect.cjs","sources":["../../../../../packages/react-select/src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tFieldMarker,\n\tHasOne,\n\
|
|
1
|
+
{"version":3,"file":"SortableMultiSelect.cjs","sources":["../../../../../packages/react-select/src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tFieldMarker,\n\tHasManyRelationMarker,\n\tHasOne,\n\tHasOneRelationMarker,\n\tPlaceholderGenerator,\n\tQueryLanguage,\n\tSugaredQualifiedEntityList,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tuseEntityList,\n} from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { Repeater } from '@contember/react-repeater'\nimport { SelectEvents } from '../types'\n\nexport type SortableMultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tsortableBy: SugaredRelativeSingleField['field']\n\t\tconnectAt: SugaredRelativeSingleEntity['field']\n\t}\n\t& SelectEvents\n\nexport const SortableMultiSelect = Component(\n\t({ field, children, sortableBy, connectAt, options, onSelect, onUnselect }: SortableMultiSelectProps) => {\n\t\tconst list = useEntityList({ field })\n\t\tconst entitiesArr = useMemo(() => Array.from(list), [list])\n\n\t\tconst optionsMarker = useMemo(() => {\n\t\t\tconst desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment)\n\t\t\tlet marker: HasOneRelationMarker | HasManyRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker = list.getMarker()\n\t\t\tfor (let relation of desugared.hasOneRelationPath) {\n\t\t\t\tconst placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation)\n\t\t\t\tconst relationMarker = marker.fields.markers.get(placeholder)\n\t\t\t\tif (!relationMarker || relationMarker instanceof FieldMarker) {\n\t\t\t\t\tthrow new Error('Invalid marker')\n\t\t\t\t}\n\t\t\t\tmarker = relationMarker\n\t\t\t}\n\t\t\treturn marker\n\t\t}, [connectAt, list])\n\n\t\toptions ??= optionsMarker.environment.getSubTreeNode().entity.name\n\n\t\tconst selectedEntities = useMemo(() => Array.from(list).map((it: EntityAccessor) => it.getEntity({ field: connectAt }).id), [connectAt, list])\n\n\t\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\t\tif (action === 'toggle') {\n\t\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t\t}\n\t\t\tif (action === 'unselect' && isSelected) {\n\t\t\t\tArray.from(list).find((it: EntityAccessor) => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity()\n\t\t\t\tonUnselect?.(entity)\n\t\t\t} else if (action === 'select' && !isSelected) {\n\t\t\t\tlist.createNewEntity(getEntity => {\n\t\t\t\t\tgetEntity().connectEntityAtField({ field: connectAt }, entity)\n\t\t\t\t\tonSelect?.(entity)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\t\treturn selectedEntities.includes(entity.id)\n\t\t}, [selectedEntities])\n\n\t\treturn (\n\t\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t\t\t</SelectIsSelectedContext.Provider>\n\t\t\t\t</SelectCurrentEntitiesContext.Provider>\n\t\t\t</Repeater>\n\t\t)\n\t},\n\t({ children, field, sortableBy, connectAt }) => {\n\t\treturn (\n\t\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t\t<HasOne field={connectAt} expectedMutation=\"connectOrDisconnect\">\n\t\t\t\t\t{children}\n\t\t\t\t</HasOne>\n\t\t\t</Repeater>\n\t\t)\n\t},\n)\n"],"names":["Component","useEntityList","useMemo","QueryLanguage","PlaceholderGenerator","FieldMarker","useReferentiallyStableCallback","isSelected","useCallback","jsxDEV","Repeater","SelectCurrentEntitiesContext","SelectIsSelectedContext","SelectHandleSelectContext","SelectOptionsContext","this","HasOne"],"mappings":"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"}
|
|
@@ -4,74 +4,77 @@ import { SelectCurrentEntitiesContext, SelectIsSelectedContext, SelectHandleSele
|
|
|
4
4
|
import { Component, useEntityList, QueryLanguage, PlaceholderGenerator, FieldMarker, HasOne } from "@contember/react-binding";
|
|
5
5
|
import { useReferentiallyStableCallback } from "@contember/react-utils";
|
|
6
6
|
import { Repeater } from "@contember/react-repeater";
|
|
7
|
-
const SortableMultiSelect = Component(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
const SortableMultiSelect = Component(
|
|
8
|
+
({ field, children, sortableBy, connectAt, options, onSelect, onUnselect }) => {
|
|
9
|
+
const list = useEntityList({ field });
|
|
10
|
+
const entitiesArr = useMemo(() => Array.from(list), [list]);
|
|
11
|
+
const optionsMarker = useMemo(() => {
|
|
12
|
+
const desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment);
|
|
13
|
+
let marker = list.getMarker();
|
|
14
|
+
for (let relation of desugared.hasOneRelationPath) {
|
|
15
|
+
const placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation);
|
|
16
|
+
const relationMarker = marker.fields.markers.get(placeholder);
|
|
17
|
+
if (!relationMarker || relationMarker instanceof FieldMarker) {
|
|
18
|
+
throw new Error("Invalid marker");
|
|
19
|
+
}
|
|
20
|
+
marker = relationMarker;
|
|
18
21
|
}
|
|
19
|
-
marker
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
action
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
22
|
+
return marker;
|
|
23
|
+
}, [connectAt, list]);
|
|
24
|
+
options ?? (options = optionsMarker.environment.getSubTreeNode().entity.name);
|
|
25
|
+
const selectedEntities = useMemo(() => Array.from(list).map((it) => it.getEntity({ field: connectAt }).id), [connectAt, list]);
|
|
26
|
+
const handler = useReferentiallyStableCallback((entity, action = "toggle") => {
|
|
27
|
+
const isSelected2 = selectedEntities.includes(entity.id);
|
|
28
|
+
if (action === "toggle") {
|
|
29
|
+
action = isSelected2 ? "unselect" : "select";
|
|
30
|
+
}
|
|
31
|
+
if (action === "unselect" && isSelected2) {
|
|
32
|
+
Array.from(list).find((it) => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity();
|
|
33
|
+
onUnselect?.(entity);
|
|
34
|
+
} else if (action === "select" && !isSelected2) {
|
|
35
|
+
list.createNewEntity((getEntity) => {
|
|
36
|
+
getEntity().connectEntityAtField({ field: connectAt }, entity);
|
|
37
|
+
onSelect?.(entity);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const isSelected = useCallback((entity) => {
|
|
42
|
+
return selectedEntities.includes(entity.id);
|
|
43
|
+
}, [selectedEntities]);
|
|
44
|
+
return /* @__PURE__ */ jsxDEV(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxDEV(SelectCurrentEntitiesContext.Provider, { value: entitiesArr, children: /* @__PURE__ */ jsxDEV(SelectIsSelectedContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsxDEV(SelectHandleSelectContext.Provider, { value: handler, children: /* @__PURE__ */ jsxDEV(SelectOptionsContext.Provider, { value: options, children }, void 0, false, {
|
|
45
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
46
|
+
lineNumber: 81,
|
|
47
|
+
columnNumber: 8
|
|
48
|
+
}, void 0) }, void 0, false, {
|
|
49
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
50
|
+
lineNumber: 80,
|
|
51
|
+
columnNumber: 7
|
|
52
|
+
}, void 0) }, void 0, false, {
|
|
53
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
54
|
+
lineNumber: 79,
|
|
55
|
+
columnNumber: 6
|
|
56
|
+
}, void 0) }, void 0, false, {
|
|
57
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
58
|
+
lineNumber: 78,
|
|
59
|
+
columnNumber: 5
|
|
60
|
+
}, void 0) }, void 0, false, {
|
|
61
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
62
|
+
lineNumber: 77,
|
|
63
|
+
columnNumber: 4
|
|
64
|
+
}, void 0);
|
|
65
|
+
},
|
|
66
|
+
({ children, field, sortableBy, connectAt }) => {
|
|
67
|
+
return /* @__PURE__ */ jsxDEV(Repeater, { field, sortableBy, initialEntityCount: 0, children: /* @__PURE__ */ jsxDEV(HasOne, { field: connectAt, expectedMutation: "connectOrDisconnect", children }, void 0, false, {
|
|
68
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
69
|
+
lineNumber: 93,
|
|
70
|
+
columnNumber: 5
|
|
71
|
+
}, void 0) }, void 0, false, {
|
|
72
|
+
fileName: "/home/runner/work/contember/contember/packages/react-select/src/components/SortableMultiSelect.tsx",
|
|
73
|
+
lineNumber: 92,
|
|
74
|
+
columnNumber: 4
|
|
75
|
+
}, void 0);
|
|
76
|
+
}
|
|
77
|
+
);
|
|
75
78
|
export {
|
|
76
79
|
SortableMultiSelect
|
|
77
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortableMultiSelect.js","sources":["../../../../../packages/react-select/src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tFieldMarker,\n\tHasOne,\n\
|
|
1
|
+
{"version":3,"file":"SortableMultiSelect.js","sources":["../../../../../packages/react-select/src/components/SortableMultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport {\n\tComponent,\n\tEntityAccessor,\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tFieldMarker,\n\tHasManyRelationMarker,\n\tHasOne,\n\tHasOneRelationMarker,\n\tPlaceholderGenerator,\n\tQueryLanguage,\n\tSugaredQualifiedEntityList,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tuseEntityList,\n} from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { Repeater } from '@contember/react-repeater'\nimport { SelectEvents } from '../types'\n\nexport type SortableMultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tsortableBy: SugaredRelativeSingleField['field']\n\t\tconnectAt: SugaredRelativeSingleEntity['field']\n\t}\n\t& SelectEvents\n\nexport const SortableMultiSelect = Component(\n\t({ field, children, sortableBy, connectAt, options, onSelect, onUnselect }: SortableMultiSelectProps) => {\n\t\tconst list = useEntityList({ field })\n\t\tconst entitiesArr = useMemo(() => Array.from(list), [list])\n\n\t\tconst optionsMarker = useMemo(() => {\n\t\t\tconst desugared = QueryLanguage.desugarRelativeSingleEntity({ field: connectAt }, list.environment)\n\t\t\tlet marker: HasOneRelationMarker | HasManyRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker = list.getMarker()\n\t\t\tfor (let relation of desugared.hasOneRelationPath) {\n\t\t\t\tconst placeholder = PlaceholderGenerator.getHasOneRelationPlaceholder(relation)\n\t\t\t\tconst relationMarker = marker.fields.markers.get(placeholder)\n\t\t\t\tif (!relationMarker || relationMarker instanceof FieldMarker) {\n\t\t\t\t\tthrow new Error('Invalid marker')\n\t\t\t\t}\n\t\t\t\tmarker = relationMarker\n\t\t\t}\n\t\t\treturn marker\n\t\t}, [connectAt, list])\n\n\t\toptions ??= optionsMarker.environment.getSubTreeNode().entity.name\n\n\t\tconst selectedEntities = useMemo(() => Array.from(list).map((it: EntityAccessor) => it.getEntity({ field: connectAt }).id), [connectAt, list])\n\n\t\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\t\tif (action === 'toggle') {\n\t\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t\t}\n\t\t\tif (action === 'unselect' && isSelected) {\n\t\t\t\tArray.from(list).find((it: EntityAccessor) => it.getEntity({ field: connectAt }).id === entity.id)?.deleteEntity()\n\t\t\t\tonUnselect?.(entity)\n\t\t\t} else if (action === 'select' && !isSelected) {\n\t\t\t\tlist.createNewEntity(getEntity => {\n\t\t\t\t\tgetEntity().connectEntityAtField({ field: connectAt }, entity)\n\t\t\t\t\tonSelect?.(entity)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\t\treturn selectedEntities.includes(entity.id)\n\t\t}, [selectedEntities])\n\n\t\treturn (\n\t\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t\t\t</SelectIsSelectedContext.Provider>\n\t\t\t\t</SelectCurrentEntitiesContext.Provider>\n\t\t\t</Repeater>\n\t\t)\n\t},\n\t({ children, field, sortableBy, connectAt }) => {\n\t\treturn (\n\t\t\t<Repeater field={field} sortableBy={sortableBy} initialEntityCount={0}>\n\t\t\t\t<HasOne field={connectAt} expectedMutation=\"connectOrDisconnect\">\n\t\t\t\t\t{children}\n\t\t\t\t</HasOne>\n\t\t\t</Repeater>\n\t\t)\n\t},\n)\n"],"names":["isSelected","this"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.cjs","sources":["../../../../packages/react-select/src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\
|
|
1
|
+
{"version":3,"file":"contexts.cjs","sources":["../../../../packages/react-select/src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n"],"names":["createRequiredContext"],"mappings":";;;AAIA,MAAM,gCAAgCA,WAAAA,sBAAwC,8BAA8B;AAErG,MAAM,+BAA+B,8BAA8B,CAAC;AACpE,MAAM,2BAA2B,8BAA8B,CAAC;AAEvE,MAAM,2BAA2BA,WAAAA,sBAA2D,yBAAyB;AAE9G,MAAM,0BAA0B,yBAAyB,CAAC;AAC1D,MAAM,sBAAsB,yBAAyB,CAAC;AAG7D,MAAM,6BAA6BA,WAAAA,sBAAqC,2BAA2B;AAE5F,MAAM,4BAA4B,2BAA2B,CAAC;AAC9D,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,wBAAwBA,WAAAA,sBAA8D,sBAAsB;AAE3G,MAAM,uBAAuB,sBAAsB,CAAC;AACpD,MAAM,mBAAmB,sBAAsB,CAAC;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.js","sources":["../../../../packages/react-select/src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\
|
|
1
|
+
{"version":3,"file":"contexts.js","sources":["../../../../packages/react-select/src/contexts.ts"],"sourcesContent":["import { createRequiredContext } from '@contember/react-utils'\nimport { EntityAccessor, SugaredQualifiedEntityList } from '@contember/react-binding'\nimport { DataViewFilterHandler, TextFilterArtifacts } from '@contember/react-dataview'\n\nconst _SelectCurrentEntitiesContext = createRequiredContext<EntityAccessor[]>('SelectCurrentEntitiesContext')\n/** @internal */\nexport const SelectCurrentEntitiesContext = _SelectCurrentEntitiesContext[0]\nexport const useSelectCurrentEntities = _SelectCurrentEntitiesContext[1]\n\nconst _SelectIsSelectedContext = createRequiredContext<(entity: EntityAccessor) => boolean>('SelectIsSelectedContext')\n/** @internal */\nexport const SelectIsSelectedContext = _SelectIsSelectedContext[0]\nexport const useSelectIsSelected = _SelectIsSelectedContext[1]\n\nexport type SelectHandler = (entity: EntityAccessor, action?: 'select' | 'unselect' | 'toggle') => void\nconst _SelectHandleSelectContext = createRequiredContext<SelectHandler>('SelectHandleSelectContext')\n/** @internal */\nexport const SelectHandleSelectContext = _SelectHandleSelectContext[0]\nexport const useSelectHandleSelect = _SelectHandleSelectContext[1]\n\nconst _SelectOptionsContext = createRequiredContext<SugaredQualifiedEntityList['entities']>('SelectOptionsContext')\n/** @internal */\nexport const SelectOptionsContext = _SelectOptionsContext[0]\nexport const useSelectOptions = _SelectOptionsContext[1]\n"],"names":[],"mappings":";AAIA,MAAM,gCAAgC,sBAAwC,8BAA8B;AAErG,MAAM,+BAA+B,8BAA8B,CAAC;AACpE,MAAM,2BAA2B,8BAA8B,CAAC;AAEvE,MAAM,2BAA2B,sBAA2D,yBAAyB;AAE9G,MAAM,0BAA0B,yBAAyB,CAAC;AAC1D,MAAM,sBAAsB,yBAAyB,CAAC;AAG7D,MAAM,6BAA6B,sBAAqC,2BAA2B;AAE5F,MAAM,4BAA4B,2BAA2B,CAAC;AAC9D,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,wBAAwB,sBAA8D,sBAAsB;AAE3G,MAAM,uBAAuB,sBAAsB,CAAC;AACpD,MAAM,mBAAmB,sBAAsB,CAAC;"}
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const contexts = require("./src/contexts.cjs");
|
|
4
4
|
const MultiSelect = require("./src/components/MultiSelect.cjs");
|
|
5
5
|
const Select = require("./src/components/Select.cjs");
|
|
6
|
-
const SelectNewItem = require("./src/components/SelectNewItem.cjs");
|
|
7
6
|
const SelectDataView = require("./src/components/SelectDataView.cjs");
|
|
8
7
|
const SelectEachItem = require("./src/components/SelectEachItem.cjs");
|
|
9
8
|
const SelectItemTrigger = require("./src/components/SelectItemTrigger.cjs");
|
|
9
|
+
const SelectNewItem = require("./src/components/SelectNewItem.cjs");
|
|
10
10
|
const SelectOption = require("./src/components/SelectOption.cjs");
|
|
11
11
|
const SelectPlaceholder = require("./src/components/SelectPlaceholder.cjs");
|
|
12
12
|
const SortableMultiSelect = require("./src/components/SortableMultiSelect.cjs");
|
|
@@ -20,10 +20,10 @@ exports.useSelectIsSelected = contexts.useSelectIsSelected;
|
|
|
20
20
|
exports.useSelectOptions = contexts.useSelectOptions;
|
|
21
21
|
exports.MultiSelect = MultiSelect.MultiSelect;
|
|
22
22
|
exports.Select = Select.Select;
|
|
23
|
-
exports.SelectNewItem = SelectNewItem.SelectNewItem;
|
|
24
23
|
exports.SelectDataView = SelectDataView.SelectDataView;
|
|
25
24
|
exports.SelectEachValue = SelectEachItem.SelectEachValue;
|
|
26
25
|
exports.SelectItemTrigger = SelectItemTrigger.SelectItemTrigger;
|
|
26
|
+
exports.SelectNewItem = SelectNewItem.SelectNewItem;
|
|
27
27
|
exports.SelectOption = SelectOption.SelectOption;
|
|
28
28
|
exports.SelectPlaceholder = SelectPlaceholder.SelectPlaceholder;
|
|
29
29
|
exports.SortableMultiSelect = SortableMultiSelect.SortableMultiSelect;
|
package/dist/production/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { SelectCurrentEntitiesContext, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext, useSelectCurrentEntities, useSelectHandleSelect, useSelectIsSelected, useSelectOptions } from "./src/contexts.js";
|
|
2
2
|
import { MultiSelect } from "./src/components/MultiSelect.js";
|
|
3
3
|
import { Select } from "./src/components/Select.js";
|
|
4
|
-
import { SelectNewItem } from "./src/components/SelectNewItem.js";
|
|
5
4
|
import { SelectDataView } from "./src/components/SelectDataView.js";
|
|
6
5
|
import { SelectEachValue } from "./src/components/SelectEachItem.js";
|
|
7
6
|
import { SelectItemTrigger } from "./src/components/SelectItemTrigger.js";
|
|
7
|
+
import { SelectNewItem } from "./src/components/SelectNewItem.js";
|
|
8
8
|
import { SelectOption } from "./src/components/SelectOption.js";
|
|
9
9
|
import { SelectPlaceholder } from "./src/components/SelectPlaceholder.js";
|
|
10
10
|
import { SortableMultiSelect } from "./src/components/SortableMultiSelect.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.cjs","sources":["../../../../../packages/react-select/src/components/MultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasMany, SugaredQualifiedEntityList, SugaredRelativeEntityList, useEntityList } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type MultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t}\n\t& SelectEvents\n\nexport const MultiSelect = Component(({ field, children, options, onSelect, onUnselect }: MultiSelectProps) => {\n\tconst entities = useEntityList({ field })\n\toptions ??= entities.name\n\tconst entitiesArr = useMemo(() => Array.from(entities), [entities])\n\tconst selectedEntities = useMemo(() => Array.from(entities).map(it => it.id), [entities])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tentities.disconnectEntity(entity)\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tentities.connectEntity(entity)\n\t\t\tonSelect?.(entity)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children }) => {\n\treturn (\n\t\t<HasMany field={field} expectedMutation=\"connectOrDisconnect\">\n\t\t\t{children}\n\t\t</HasMany>\n\t)\n})\n
|
|
1
|
+
{"version":3,"file":"MultiSelect.cjs","sources":["../../../../../packages/react-select/src/components/MultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasMany, SugaredQualifiedEntityList, SugaredRelativeEntityList, useEntityList } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type MultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t}\n\t& SelectEvents\n\nexport const MultiSelect = Component(({ field, children, options, onSelect, onUnselect }: MultiSelectProps) => {\n\tconst entities = useEntityList({ field })\n\toptions ??= entities.name\n\tconst entitiesArr = useMemo(() => Array.from(entities), [entities])\n\tconst selectedEntities = useMemo(() => Array.from(entities).map((it: EntityAccessor) => it.id), [entities])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tentities.disconnectEntity(entity)\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tentities.connectEntity(entity)\n\t\t\tonSelect?.(entity)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children }) => {\n\treturn (\n\t\t<HasMany field={field} expectedMutation=\"connectOrDisconnect\">\n\t\t\t{children}\n\t\t</HasMany>\n\t)\n})\n"],"names":["Component","useEntityList","useMemo","useReferentiallyStableCallback","isSelected","useCallback","jsx","SelectCurrentEntitiesContext","SelectIsSelectedContext","SelectHandleSelectContext","SelectOptionsContext","HasMany"],"mappings":";;;;;;;AAcO,MAAM,cAAcA,aAAAA,UAAU,CAAC,EAAE,OAAO,UAAU,SAAS,UAAU,iBAAmC;AAC9G,QAAM,WAAWC,aAAAA,cAAc,EAAE,OAAO;AACxC,cAAA,UAAY,SAAS;AACrB,QAAM,cAAcC,MAAAA,QAAQ,MAAM,MAAM,KAAK,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAClE,QAAM,mBAAmBA,MAAAA,QAAQ,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,OAAuB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;AAE1G,QAAM,UAAUC,WAAAA,+BAA8C,CAAC,QAAQ,SAAS,aAAa;AAC5F,UAAMC,cAAa,iBAAiB,SAAS,OAAO,EAAE;AACtD,QAAI,WAAW,UAAU;AACxB,eAASA,cAAa,aAAa;AAAA,IACpC;AACA,QAAI,WAAW,cAAcA,aAAY;AACxC,eAAS,iBAAiB,MAAM;AAChC,mBAAa,MAAM;AAAA,IACpB,WAAW,WAAW,YAAY,CAACA,aAAY;AAC9C,eAAS,cAAc,MAAM;AAC7B,iBAAW,MAAM;AAAA,IAClB;AAAA,EACD,CAAC;AACD,QAAM,aAAaC,kBAAY,CAAC,WAA2B;AAC1D,WAAO,iBAAiB,SAAS,OAAO,EAAE;AAAA,EAC3C,GAAG,CAAC,gBAAgB,CAAC;AAErB,SACCC,2BAAAA,IAACC,SAAAA,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAAAD,2BAAAA,IAACE,SAAAA,wBAAwB,UAAxB,EAAiC,OAAO,YACxC,UAAAF,2BAAAA,IAACG,SAAAA,0BAA0B,UAA1B,EAAmC,OAAO,SAC1C,UAAAH,2BAAAA,IAACI,SAAAA,qBAAqB,UAArB,EAA8B,OAAO,SACpC,SAAA,CACF,EAAA,CACD,EAAA,CACD,EAAA,CACD;AAEF,GAAG,CAAC,EAAE,OAAO,eAAe;AAC3B,SACCJ,2BAAAA,IAACK,aAAAA,SAAA,EAAQ,OAAc,kBAAiB,uBACtC,UACF;AAEF,CAAC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.js","sources":["../../../../../packages/react-select/src/components/MultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasMany, SugaredQualifiedEntityList, SugaredRelativeEntityList, useEntityList } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type MultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t}\n\t& SelectEvents\n\nexport const MultiSelect = Component(({ field, children, options, onSelect, onUnselect }: MultiSelectProps) => {\n\tconst entities = useEntityList({ field })\n\toptions ??= entities.name\n\tconst entitiesArr = useMemo(() => Array.from(entities), [entities])\n\tconst selectedEntities = useMemo(() => Array.from(entities).map(it => it.id), [entities])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tentities.disconnectEntity(entity)\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tentities.connectEntity(entity)\n\t\t\tonSelect?.(entity)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children }) => {\n\treturn (\n\t\t<HasMany field={field} expectedMutation=\"connectOrDisconnect\">\n\t\t\t{children}\n\t\t</HasMany>\n\t)\n})\n
|
|
1
|
+
{"version":3,"file":"MultiSelect.js","sources":["../../../../../packages/react-select/src/components/MultiSelect.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasMany, SugaredQualifiedEntityList, SugaredRelativeEntityList, useEntityList } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type MultiSelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeEntityList['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t}\n\t& SelectEvents\n\nexport const MultiSelect = Component(({ field, children, options, onSelect, onUnselect }: MultiSelectProps) => {\n\tconst entities = useEntityList({ field })\n\toptions ??= entities.name\n\tconst entitiesArr = useMemo(() => Array.from(entities), [entities])\n\tconst selectedEntities = useMemo(() => Array.from(entities).map((it: EntityAccessor) => it.id), [entities])\n\n\tconst handler = useReferentiallyStableCallback<SelectHandler>((entity, action = 'toggle') => {\n\t\tconst isSelected = selectedEntities.includes(entity.id)\n\t\tif (action === 'toggle') {\n\t\t\taction = isSelected ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect' && isSelected) {\n\t\t\tentities.disconnectEntity(entity)\n\t\t\tonUnselect?.(entity)\n\t\t} else if (action === 'select' && !isSelected) {\n\t\t\tentities.connectEntity(entity)\n\t\t\tonSelect?.(entity)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => {\n\t\treturn selectedEntities.includes(entity.id)\n\t}, [selectedEntities])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handler}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children }) => {\n\treturn (\n\t\t<HasMany field={field} expectedMutation=\"connectOrDisconnect\">\n\t\t\t{children}\n\t\t</HasMany>\n\t)\n})\n"],"names":["isSelected"],"mappings":";;;;;AAcO,MAAM,cAAc,UAAU,CAAC,EAAE,OAAO,UAAU,SAAS,UAAU,iBAAmC;AAC9G,QAAM,WAAW,cAAc,EAAE,OAAO;AACxC,cAAA,UAAY,SAAS;AACrB,QAAM,cAAc,QAAQ,MAAM,MAAM,KAAK,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAClE,QAAM,mBAAmB,QAAQ,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,OAAuB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;AAE1G,QAAM,UAAU,+BAA8C,CAAC,QAAQ,SAAS,aAAa;AAC5F,UAAMA,cAAa,iBAAiB,SAAS,OAAO,EAAE;AACtD,QAAI,WAAW,UAAU;AACxB,eAASA,cAAa,aAAa;AAAA,IACpC;AACA,QAAI,WAAW,cAAcA,aAAY;AACxC,eAAS,iBAAiB,MAAM;AAChC,mBAAa,MAAM;AAAA,IACpB,WAAW,WAAW,YAAY,CAACA,aAAY;AAC9C,eAAS,cAAc,MAAM;AAC7B,iBAAW,MAAM;AAAA,IAClB;AAAA,EACD,CAAC;AACD,QAAM,aAAa,YAAY,CAAC,WAA2B;AAC1D,WAAO,iBAAiB,SAAS,OAAO,EAAE;AAAA,EAC3C,GAAG,CAAC,gBAAgB,CAAC;AAErB,SACC,oBAAC,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAAA,oBAAC,wBAAwB,UAAxB,EAAiC,OAAO,YACxC,UAAA,oBAAC,0BAA0B,UAA1B,EAAmC,OAAO,SAC1C,UAAA,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,SACpC,SAAA,CACF,EAAA,CACD,EAAA,CACD,EAAA,CACD;AAEF,GAAG,CAAC,EAAE,OAAO,eAAe;AAC3B,SACC,oBAAC,SAAA,EAAQ,OAAc,kBAAiB,uBACtC,UACF;AAEF,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.cjs","sources":["../../../../../packages/react-select/src/components/Select.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasOne, SugaredQualifiedEntityList, SugaredRelativeSingleEntity, useEntity } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type SelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeSingleEntity['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tisNonbearing?: boolean\n\t}\n\t& SelectEvents\n\nexport const Select = Component(({ field, children, onUnselect, onSelect, options }: SelectProps) => {\n\tconst entity = useEntity()\n\tconst selectedEntity = entity.getEntity({ field })\n\toptions ??= selectedEntity.name\n\n\tconst entityExists = selectedEntity.existsOnServer || selectedEntity.hasUnpersistedChanges\n\tconst entitiesArr = useMemo(() => entityExists ? [selectedEntity] : [], [entityExists, selectedEntity])\n\n\tconst handleSelect = useReferentiallyStableCallback<SelectHandler>((selected, action = 'toggle') => {\n\t\tif (action === 'toggle') {\n\t\t\taction = selected.id === selectedEntity.id ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect') {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t\tonUnselect?.(selected)\n\t\t} else if (action === 'select') {\n\t\t\tentity.connectEntityAtField({ field }, selected)\n\t\t\tonSelect?.(selected)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => entity.id === selectedEntity.id, [selectedEntity.id])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handleSelect}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children, isNonbearing }) => {\n\treturn (\n\t\t<HasOne field={field} expectedMutation=\"connectOrDisconnect\" isNonbearing={isNonbearing}>\n\t\t\t{children}\n\t\t</HasOne>\n\t)\n})\n
|
|
1
|
+
{"version":3,"file":"Select.cjs","sources":["../../../../../packages/react-select/src/components/Select.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasOne, SugaredQualifiedEntityList, SugaredRelativeSingleEntity, useEntity } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type SelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeSingleEntity['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tisNonbearing?: boolean\n\t}\n\t& SelectEvents\n\nexport const Select = Component(({ field, children, onUnselect, onSelect, options }: SelectProps) => {\n\tconst entity = useEntity()\n\tconst selectedEntity = entity.getEntity({ field })\n\toptions ??= selectedEntity.name\n\n\tconst entityExists = selectedEntity.existsOnServer || selectedEntity.hasUnpersistedChanges\n\tconst entitiesArr = useMemo(() => entityExists ? [selectedEntity] : [], [entityExists, selectedEntity])\n\n\tconst handleSelect = useReferentiallyStableCallback<SelectHandler>((selected, action = 'toggle') => {\n\t\tif (action === 'toggle') {\n\t\t\taction = selected.id === selectedEntity.id ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect') {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t\tonUnselect?.(selected)\n\t\t} else if (action === 'select') {\n\t\t\tentity.connectEntityAtField({ field }, selected)\n\t\t\tonSelect?.(selected)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => entity.id === selectedEntity.id, [selectedEntity.id])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handleSelect}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children, isNonbearing }) => {\n\treturn (\n\t\t<HasOne field={field} expectedMutation=\"connectOrDisconnect\" isNonbearing={isNonbearing}>\n\t\t\t{children}\n\t\t</HasOne>\n\t)\n})\n"],"names":["Component","useEntity","useMemo","useReferentiallyStableCallback","useCallback","entity","jsx","SelectCurrentEntitiesContext","SelectIsSelectedContext","SelectHandleSelectContext","SelectOptionsContext","HasOne"],"mappings":";;;;;;;AAeO,MAAM,SAASA,aAAAA,UAAU,CAAC,EAAE,OAAO,UAAU,YAAY,UAAU,cAA2B;AACpG,QAAM,SAASC,aAAAA,UAAA;AACf,QAAM,iBAAiB,OAAO,UAAU,EAAE,OAAO;AACjD,cAAA,UAAY,eAAe;AAE3B,QAAM,eAAe,eAAe,kBAAkB,eAAe;AACrE,QAAM,cAAcC,cAAQ,MAAM,eAAe,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,cAAc,CAAC;AAEtG,QAAM,eAAeC,WAAAA,+BAA8C,CAAC,UAAU,SAAS,aAAa;AACnG,QAAI,WAAW,UAAU;AACxB,eAAS,SAAS,OAAO,eAAe,KAAK,aAAa;AAAA,IAC3D;AACA,QAAI,WAAW,YAAY;AAC1B,aAAO,wBAAwB,EAAE,OAAO;AACxC,mBAAa,QAAQ;AAAA,IACtB,WAAW,WAAW,UAAU;AAC/B,aAAO,qBAAqB,EAAE,MAAA,GAAS,QAAQ;AAC/C,iBAAW,QAAQ;AAAA,IACpB;AAAA,EACD,CAAC;AACD,QAAM,aAAaC,MAAAA,YAAY,CAACC,YAA2BA,QAAO,OAAO,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;AAE/G,SACCC,2BAAAA,IAACC,SAAAA,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAAAD,2BAAAA,IAACE,SAAAA,wBAAwB,UAAxB,EAAiC,OAAO,YACxC,UAAAF,2BAAAA,IAACG,SAAAA,0BAA0B,UAA1B,EAAmC,OAAO,cAC1C,UAAAH,2BAAAA,IAACI,SAAAA,qBAAqB,UAArB,EAA8B,OAAO,SACpC,SAAA,CACF,EAAA,CACD,EAAA,CACD,EAAA,CACD;AAEF,GAAG,CAAC,EAAE,OAAO,UAAU,mBAAmB;AACzC,wCACEC,aAAAA,QAAA,EAAO,OAAc,kBAAiB,uBAAsB,cAC3D,UACF;AAEF,CAAC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../../../../packages/react-select/src/components/Select.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasOne, SugaredQualifiedEntityList, SugaredRelativeSingleEntity, useEntity } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type SelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeSingleEntity['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tisNonbearing?: boolean\n\t}\n\t& SelectEvents\n\nexport const Select = Component(({ field, children, onUnselect, onSelect, options }: SelectProps) => {\n\tconst entity = useEntity()\n\tconst selectedEntity = entity.getEntity({ field })\n\toptions ??= selectedEntity.name\n\n\tconst entityExists = selectedEntity.existsOnServer || selectedEntity.hasUnpersistedChanges\n\tconst entitiesArr = useMemo(() => entityExists ? [selectedEntity] : [], [entityExists, selectedEntity])\n\n\tconst handleSelect = useReferentiallyStableCallback<SelectHandler>((selected, action = 'toggle') => {\n\t\tif (action === 'toggle') {\n\t\t\taction = selected.id === selectedEntity.id ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect') {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t\tonUnselect?.(selected)\n\t\t} else if (action === 'select') {\n\t\t\tentity.connectEntityAtField({ field }, selected)\n\t\t\tonSelect?.(selected)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => entity.id === selectedEntity.id, [selectedEntity.id])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handleSelect}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children, isNonbearing }) => {\n\treturn (\n\t\t<HasOne field={field} expectedMutation=\"connectOrDisconnect\" isNonbearing={isNonbearing}>\n\t\t\t{children}\n\t\t</HasOne>\n\t)\n})\n
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../../packages/react-select/src/components/Select.tsx"],"sourcesContent":["import React, { ReactNode, useCallback, useMemo } from 'react'\nimport { SelectCurrentEntitiesContext, SelectHandler, SelectHandleSelectContext, SelectIsSelectedContext, SelectOptionsContext } from '../contexts'\nimport { Component, EntityAccessor, HasOne, SugaredQualifiedEntityList, SugaredRelativeSingleEntity, useEntity } from '@contember/react-binding'\nimport { useReferentiallyStableCallback } from '@contember/react-utils'\nimport { SelectEvents } from '../types'\n\nexport type SelectProps =\n\t& {\n\t\tchildren: ReactNode\n\t\tfield: SugaredRelativeSingleEntity['field']\n\t\toptions?: SugaredQualifiedEntityList['entities']\n\t\tisNonbearing?: boolean\n\t}\n\t& SelectEvents\n\nexport const Select = Component(({ field, children, onUnselect, onSelect, options }: SelectProps) => {\n\tconst entity = useEntity()\n\tconst selectedEntity = entity.getEntity({ field })\n\toptions ??= selectedEntity.name\n\n\tconst entityExists = selectedEntity.existsOnServer || selectedEntity.hasUnpersistedChanges\n\tconst entitiesArr = useMemo(() => entityExists ? [selectedEntity] : [], [entityExists, selectedEntity])\n\n\tconst handleSelect = useReferentiallyStableCallback<SelectHandler>((selected, action = 'toggle') => {\n\t\tif (action === 'toggle') {\n\t\t\taction = selected.id === selectedEntity.id ? 'unselect' : 'select'\n\t\t}\n\t\tif (action === 'unselect') {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t\tonUnselect?.(selected)\n\t\t} else if (action === 'select') {\n\t\t\tentity.connectEntityAtField({ field }, selected)\n\t\t\tonSelect?.(selected)\n\t\t}\n\t})\n\tconst isSelected = useCallback((entity: EntityAccessor) => entity.id === selectedEntity.id, [selectedEntity.id])\n\n\treturn (\n\t\t<SelectCurrentEntitiesContext.Provider value={entitiesArr}>\n\t\t\t<SelectIsSelectedContext.Provider value={isSelected}>\n\t\t\t\t<SelectHandleSelectContext.Provider value={handleSelect}>\n\t\t\t\t\t<SelectOptionsContext.Provider value={options}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SelectOptionsContext.Provider>\n\t\t\t\t</SelectHandleSelectContext.Provider>\n\t\t\t</SelectIsSelectedContext.Provider>\n\t\t</SelectCurrentEntitiesContext.Provider>\n\t)\n}, ({ field, children, isNonbearing }) => {\n\treturn (\n\t\t<HasOne field={field} expectedMutation=\"connectOrDisconnect\" isNonbearing={isNonbearing}>\n\t\t\t{children}\n\t\t</HasOne>\n\t)\n})\n"],"names":["entity"],"mappings":";;;;;AAeO,MAAM,SAAS,UAAU,CAAC,EAAE,OAAO,UAAU,YAAY,UAAU,cAA2B;AACpG,QAAM,SAAS,UAAA;AACf,QAAM,iBAAiB,OAAO,UAAU,EAAE,OAAO;AACjD,cAAA,UAAY,eAAe;AAE3B,QAAM,eAAe,eAAe,kBAAkB,eAAe;AACrE,QAAM,cAAc,QAAQ,MAAM,eAAe,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,cAAc,CAAC;AAEtG,QAAM,eAAe,+BAA8C,CAAC,UAAU,SAAS,aAAa;AACnG,QAAI,WAAW,UAAU;AACxB,eAAS,SAAS,OAAO,eAAe,KAAK,aAAa;AAAA,IAC3D;AACA,QAAI,WAAW,YAAY;AAC1B,aAAO,wBAAwB,EAAE,OAAO;AACxC,mBAAa,QAAQ;AAAA,IACtB,WAAW,WAAW,UAAU;AAC/B,aAAO,qBAAqB,EAAE,MAAA,GAAS,QAAQ;AAC/C,iBAAW,QAAQ;AAAA,IACpB;AAAA,EACD,CAAC;AACD,QAAM,aAAa,YAAY,CAACA,YAA2BA,QAAO,OAAO,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;AAE/G,SACC,oBAAC,6BAA6B,UAA7B,EAAsC,OAAO,aAC7C,UAAA,oBAAC,wBAAwB,UAAxB,EAAiC,OAAO,YACxC,UAAA,oBAAC,0BAA0B,UAA1B,EAAmC,OAAO,cAC1C,UAAA,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,SACpC,SAAA,CACF,EAAA,CACD,EAAA,CACD,EAAA,CACD;AAEF,GAAG,CAAC,EAAE,OAAO,UAAU,mBAAmB;AACzC,6BACE,QAAA,EAAO,OAAc,kBAAiB,uBAAsB,cAC3D,UACF;AAEF,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDataView.cjs","sources":["../../../../../packages/react-select/src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport { useSelectHandleSelect, useSelectOptions } from '../contexts'\nimport {
|
|
1
|
+
{"version":3,"file":"SelectDataView.cjs","sources":["../../../../../packages/react-select/src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport { useSelectHandleSelect, useSelectOptions } from '../contexts'\nimport { DataView, DataViewFilterHandlerRegistry, DataViewProps } from '@contember/react-dataview'\n\nexport type SelectDataViewProps =\n\t& Omit<DataViewProps, 'entities'>\n\t& {\n\t\tchildren: ReactNode\n\t}\n\nexport const SelectDataView = (props: SelectDataViewProps) => {\n\tconst handleSelect = useSelectHandleSelect()\n\tconst entities = useSelectOptions()\n\n\treturn (\n\t\t<DataView\n\t\t\tonSelectHighlighted={handleSelect}\n\t\t\tentities={entities}\n\t\t\tfilteringStateStorage=\"null\"\n\t\t\tsortingStateStorage=\"null\"\n\t\t\tcurrentPageStateStorage=\"null\"\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":["useSelectHandleSelect","useSelectOptions","jsx","DataView"],"mappings":";;;;;AAUO,MAAM,iBAAiB,CAAC,UAA+B;AAC7D,QAAM,eAAeA,SAAAA,sBAAA;AACrB,QAAM,WAAWC,SAAAA,iBAAA;AAEjB,SACCC,2BAAAA;AAAAA,IAACC,cAAAA;AAAAA,IAAA;AAAA,MACA,qBAAqB;AAAA,MACrB;AAAA,MACA,uBAAsB;AAAA,MACtB,qBAAoB;AAAA,MACpB,yBAAwB;AAAA,MACvB,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDataView.js","sources":["../../../../../packages/react-select/src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport { useSelectHandleSelect, useSelectOptions } from '../contexts'\nimport {
|
|
1
|
+
{"version":3,"file":"SelectDataView.js","sources":["../../../../../packages/react-select/src/components/SelectDataView.tsx"],"sourcesContent":["import React, { ReactNode, useMemo } from 'react'\nimport { useSelectHandleSelect, useSelectOptions } from '../contexts'\nimport { DataView, DataViewFilterHandlerRegistry, DataViewProps } from '@contember/react-dataview'\n\nexport type SelectDataViewProps =\n\t& Omit<DataViewProps, 'entities'>\n\t& {\n\t\tchildren: ReactNode\n\t}\n\nexport const SelectDataView = (props: SelectDataViewProps) => {\n\tconst handleSelect = useSelectHandleSelect()\n\tconst entities = useSelectOptions()\n\n\treturn (\n\t\t<DataView\n\t\t\tonSelectHighlighted={handleSelect}\n\t\t\tentities={entities}\n\t\t\tfilteringStateStorage=\"null\"\n\t\t\tsortingStateStorage=\"null\"\n\t\t\tcurrentPageStateStorage=\"null\"\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,iBAAiB,CAAC,UAA+B;AAC7D,QAAM,eAAe,sBAAA;AACrB,QAAM,WAAW,iBAAA;AAEjB,SACC;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,qBAAqB;AAAA,MACrB;AAAA,MACA,uBAAsB;AAAA,MACtB,qBAAoB;AAAA,MACpB,yBAAwB;AAAA,MACvB,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectEachItem.cjs","sources":["../../../../../packages/react-select/src/components/SelectEachItem.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useSelectCurrentEntities } from '../contexts'\nimport { Entity } from '@contember/react-binding'\n\
|
|
1
|
+
{"version":3,"file":"SelectEachItem.cjs","sources":["../../../../../packages/react-select/src/components/SelectEachItem.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useSelectCurrentEntities } from '../contexts'\nimport { Entity } from '@contember/react-binding'\n\nexport const SelectEachValue = ({ children }: { children: ReactNode }) => {\n\tconst entities = useSelectCurrentEntities()\n\treturn entities.map(entity => (\n\t\t<Entity key={entity.key} accessor={entity}>\n\t\t\t{children}\n\t\t</Entity>\n\t))\n}\n"],"names":["useSelectCurrentEntities","jsx","Entity"],"mappings":";;;;;AAIO,MAAM,kBAAkB,CAAC,EAAE,eAAwC;AACzE,QAAM,WAAWA,SAAAA,yBAAA;AACjB,SAAO,SAAS,IAAI,CAAA,WACnBC,2BAAAA,IAACC,aAAAA,QAAA,EAAwB,UAAU,QACjC,SAAA,GADW,OAAO,GAEpB,CACA;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectEachItem.js","sources":["../../../../../packages/react-select/src/components/SelectEachItem.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useSelectCurrentEntities } from '../contexts'\nimport { Entity } from '@contember/react-binding'\n\
|
|
1
|
+
{"version":3,"file":"SelectEachItem.js","sources":["../../../../../packages/react-select/src/components/SelectEachItem.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useSelectCurrentEntities } from '../contexts'\nimport { Entity } from '@contember/react-binding'\n\nexport const SelectEachValue = ({ children }: { children: ReactNode }) => {\n\tconst entities = useSelectCurrentEntities()\n\treturn entities.map(entity => (\n\t\t<Entity key={entity.key} accessor={entity}>\n\t\t\t{children}\n\t\t</Entity>\n\t))\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,kBAAkB,CAAC,EAAE,eAAwC;AACzE,QAAM,WAAW,yBAAA;AACjB,SAAO,SAAS,IAAI,CAAA,WACnB,oBAAC,QAAA,EAAwB,UAAU,QACjC,SAAA,GADW,OAAO,GAEpB,CACA;AACF;"}
|