@contember/react-block-repeater 2.0.0-alpha.5 → 2.0.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/api-extractor.json +3 -0
- package/dist/development/index.cjs +5 -5
- package/dist/development/index.js +5 -5
- package/dist/{production → development/src}/components/Block.cjs +7 -3
- package/dist/development/src/components/Block.cjs.map +1 -0
- package/dist/{production → development/src}/components/Block.js +7 -3
- package/dist/development/src/components/Block.js.map +1 -0
- package/dist/development/src/components/BlockRepeater.cjs +38 -0
- package/dist/development/src/components/BlockRepeater.cjs.map +1 -0
- package/dist/development/src/components/BlockRepeater.js +38 -0
- package/dist/development/src/components/BlockRepeater.js.map +1 -0
- package/dist/development/{components → src/components}/BlockRepeaterAddItemTrigger.cjs +8 -4
- package/dist/development/src/components/BlockRepeaterAddItemTrigger.cjs.map +1 -0
- package/dist/{production → development/src}/components/BlockRepeaterAddItemTrigger.js +6 -2
- package/dist/development/src/components/BlockRepeaterAddItemTrigger.js.map +1 -0
- package/dist/development/src/contexts.cjs.map +1 -0
- package/dist/development/src/contexts.js.map +1 -0
- package/dist/development/src/hooks/useBlockRepeaterCurrentBlock.cjs.map +1 -0
- package/dist/development/src/hooks/useBlockRepeaterCurrentBlock.js.map +1 -0
- package/dist/development/src/internal/helpers/staticAnalyzer.cjs.map +1 -0
- package/dist/development/src/internal/helpers/staticAnalyzer.js.map +1 -0
- package/dist/production/index.cjs +5 -5
- package/dist/production/index.js +5 -5
- package/dist/production/src/components/Block.cjs.map +1 -0
- package/dist/production/src/components/Block.js.map +1 -0
- package/dist/{development → production/src}/components/BlockRepeater.cjs +2 -2
- package/dist/production/src/components/BlockRepeater.cjs.map +1 -0
- package/dist/production/src/components/BlockRepeater.js.map +1 -0
- package/dist/production/{components → src/components}/BlockRepeaterAddItemTrigger.cjs +2 -2
- package/dist/production/src/components/BlockRepeaterAddItemTrigger.cjs.map +1 -0
- package/dist/production/src/components/BlockRepeaterAddItemTrigger.js.map +1 -0
- package/dist/production/src/contexts.cjs.map +1 -0
- package/dist/production/src/contexts.js.map +1 -0
- package/dist/production/src/hooks/useBlockRepeaterCurrentBlock.cjs.map +1 -0
- package/dist/production/src/hooks/useBlockRepeaterCurrentBlock.js.map +1 -0
- package/dist/production/src/internal/helpers/staticAnalyzer.cjs.map +1 -0
- package/dist/production/src/internal/helpers/staticAnalyzer.js.map +1 -0
- package/dist/types/contexts.d.ts +2 -2
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -16
- package/src/components/BlockRepeater.tsx +3 -3
- package/tsconfig.json +7 -0
- package/tsdoc.json +6 -0
- package/dist/development/components/Block.cjs.map +0 -1
- package/dist/development/components/Block.js.map +0 -1
- package/dist/development/components/BlockRepeater.cjs.map +0 -1
- package/dist/development/components/BlockRepeater.js.map +0 -1
- package/dist/development/components/BlockRepeaterAddItemTrigger.cjs.map +0 -1
- package/dist/development/components/BlockRepeaterAddItemTrigger.js.map +0 -1
- package/dist/development/contexts.cjs.map +0 -1
- package/dist/development/contexts.js.map +0 -1
- package/dist/development/hooks/useBlockRepeaterCurrentBlock.cjs.map +0 -1
- package/dist/development/hooks/useBlockRepeaterCurrentBlock.js.map +0 -1
- package/dist/development/internal/helpers/staticAnalyzer.cjs.map +0 -1
- package/dist/development/internal/helpers/staticAnalyzer.js.map +0 -1
- package/dist/production/components/Block.cjs.map +0 -1
- package/dist/production/components/Block.js.map +0 -1
- package/dist/production/components/BlockRepeater.cjs +0 -22
- package/dist/production/components/BlockRepeater.cjs.map +0 -1
- package/dist/production/components/BlockRepeater.js +0 -22
- package/dist/production/components/BlockRepeater.js.map +0 -1
- package/dist/production/components/BlockRepeaterAddItemTrigger.cjs.map +0 -1
- package/dist/production/components/BlockRepeaterAddItemTrigger.js.map +0 -1
- package/dist/production/contexts.cjs.map +0 -1
- package/dist/production/contexts.js.map +0 -1
- package/dist/production/hooks/useBlockRepeaterCurrentBlock.cjs.map +0 -1
- package/dist/production/hooks/useBlockRepeaterCurrentBlock.js.map +0 -1
- package/dist/production/internal/helpers/staticAnalyzer.cjs.map +0 -1
- package/dist/production/internal/helpers/staticAnalyzer.js.map +0 -1
- /package/dist/development/{contexts.cjs → src/contexts.cjs} +0 -0
- /package/dist/development/{contexts.js → src/contexts.js} +0 -0
- /package/dist/development/{hooks → src/hooks}/useBlockRepeaterCurrentBlock.cjs +0 -0
- /package/dist/development/{hooks → src/hooks}/useBlockRepeaterCurrentBlock.js +0 -0
- /package/dist/development/{internal → src/internal}/helpers/staticAnalyzer.cjs +0 -0
- /package/dist/development/{internal → src/internal}/helpers/staticAnalyzer.js +0 -0
- /package/dist/{development → production/src}/components/Block.cjs +0 -0
- /package/dist/{development → production/src}/components/Block.js +0 -0
- /package/dist/{development → production/src}/components/BlockRepeater.js +0 -0
- /package/dist/{development → production/src}/components/BlockRepeaterAddItemTrigger.js +0 -0
- /package/dist/production/{contexts.cjs → src/contexts.cjs} +0 -0
- /package/dist/production/{contexts.js → src/contexts.js} +0 -0
- /package/dist/production/{hooks → src/hooks}/useBlockRepeaterCurrentBlock.cjs +0 -0
- /package/dist/production/{hooks → src/hooks}/useBlockRepeaterCurrentBlock.js +0 -0
- /package/dist/production/{internal → src/internal}/helpers/staticAnalyzer.cjs +0 -0
- /package/dist/production/{internal → src/internal}/helpers/staticAnalyzer.js +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const contexts = require("./contexts.cjs");
|
|
4
|
-
const Block = require("./components/Block.cjs");
|
|
5
|
-
const BlockRepeater = require("./components/BlockRepeater.cjs");
|
|
6
|
-
const BlockRepeaterAddItemTrigger = require("./components/BlockRepeaterAddItemTrigger.cjs");
|
|
7
|
-
const useBlockRepeaterCurrentBlock = require("./hooks/useBlockRepeaterCurrentBlock.cjs");
|
|
3
|
+
const contexts = require("./src/contexts.cjs");
|
|
4
|
+
const Block = require("./src/components/Block.cjs");
|
|
5
|
+
const BlockRepeater = require("./src/components/BlockRepeater.cjs");
|
|
6
|
+
const BlockRepeaterAddItemTrigger = require("./src/components/BlockRepeaterAddItemTrigger.cjs");
|
|
7
|
+
const useBlockRepeaterCurrentBlock = require("./src/hooks/useBlockRepeaterCurrentBlock.cjs");
|
|
8
8
|
exports.BlockRepeaterConfigContext = contexts.BlockRepeaterConfigContext;
|
|
9
9
|
exports.useBlockRepeaterConfig = contexts.useBlockRepeaterConfig;
|
|
10
10
|
exports.Block = Block.Block;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BlockRepeaterConfigContext, useBlockRepeaterConfig } from "./contexts.js";
|
|
2
|
-
import { Block } from "./components/Block.js";
|
|
3
|
-
import { BlockRepeater } from "./components/BlockRepeater.js";
|
|
4
|
-
import { BlockRepeaterAddItemTrigger } from "./components/BlockRepeaterAddItemTrigger.js";
|
|
5
|
-
import { useBlockRepeaterCurrentBlock } from "./hooks/useBlockRepeaterCurrentBlock.js";
|
|
1
|
+
import { BlockRepeaterConfigContext, useBlockRepeaterConfig } from "./src/contexts.js";
|
|
2
|
+
import { Block } from "./src/components/Block.js";
|
|
3
|
+
import { BlockRepeater } from "./src/components/BlockRepeater.js";
|
|
4
|
+
import { BlockRepeaterAddItemTrigger } from "./src/components/BlockRepeaterAddItemTrigger.js";
|
|
5
|
+
import { useBlockRepeaterCurrentBlock } from "./src/hooks/useBlockRepeaterCurrentBlock.js";
|
|
6
6
|
export {
|
|
7
7
|
Block,
|
|
8
8
|
BlockRepeater,
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
4
|
const reactBinding = require("@contember/react-binding");
|
|
5
5
|
const Block = reactBinding.Component((props) => {
|
|
6
6
|
throw new reactBinding.BindingError('"Block" component is not supposed to be rendered.');
|
|
7
7
|
}, ({ label, children, form }) => {
|
|
8
|
-
return /* @__PURE__ */
|
|
8
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children: [
|
|
9
9
|
label,
|
|
10
10
|
children,
|
|
11
11
|
form
|
|
12
|
-
] }
|
|
12
|
+
] }, void 0, true, {
|
|
13
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/Block.tsx",
|
|
14
|
+
lineNumber: 14,
|
|
15
|
+
columnNumber: 9
|
|
16
|
+
}, void 0);
|
|
13
17
|
});
|
|
14
18
|
exports.Block = Block;
|
|
15
19
|
//# sourceMappingURL=Block.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Block.cjs","sources":["../../../../../packages/react-block-repeater/src/components/Block.tsx"],"sourcesContent":["import { BindingError, Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\n\nexport interface BlockProps {\n\tchildren: ReactNode\n\tname: string\n\tlabel?: ReactNode\n\tform?: ReactNode\n}\n\nexport const Block = Component<BlockProps>(props => {\n\tthrow new BindingError('\"Block\" component is not supposed to be rendered.')\n}, ({ label, children, form }) => {\n\treturn <>\n\t\t{label}\n\t\t{children}\n\t\t{form}\n\t</>\n})\n"],"names":["Component","BindingError","jsxDEV","Fragment","this"],"mappings":";;;;AAUa,MAAA,QAAQA,aAAAA,UAAsB,CAAS,UAAA;AAC7C,QAAA,IAAIC,aAAAA,aAAa,mDAAmD;AAC3E,GAAG,CAAC,EAAE,OAAO,UAAU,WAAW;AACjC,SACEC,8BAAA,OAAAC,wBAAA,EAAA,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,KAHK,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAIP,GAAAC,MAAA;AACD,CAAC;;"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
|
|
2
2
|
import { Component, BindingError } from "@contember/react-binding";
|
|
3
3
|
const Block = Component((props) => {
|
|
4
4
|
throw new BindingError('"Block" component is not supposed to be rendered.');
|
|
5
5
|
}, ({ label, children, form }) => {
|
|
6
|
-
return /* @__PURE__ */
|
|
6
|
+
return /* @__PURE__ */ jsxDEV(Fragment, { children: [
|
|
7
7
|
label,
|
|
8
8
|
children,
|
|
9
9
|
form
|
|
10
|
-
] }
|
|
10
|
+
] }, void 0, true, {
|
|
11
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/Block.tsx",
|
|
12
|
+
lineNumber: 14,
|
|
13
|
+
columnNumber: 9
|
|
14
|
+
}, void 0);
|
|
11
15
|
});
|
|
12
16
|
export {
|
|
13
17
|
Block
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Block.js","sources":["../../../../../packages/react-block-repeater/src/components/Block.tsx"],"sourcesContent":["import { BindingError, Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\n\nexport interface BlockProps {\n\tchildren: ReactNode\n\tname: string\n\tlabel?: ReactNode\n\tform?: ReactNode\n}\n\nexport const Block = Component<BlockProps>(props => {\n\tthrow new BindingError('\"Block\" component is not supposed to be rendered.')\n}, ({ label, children, form }) => {\n\treturn <>\n\t\t{label}\n\t\t{children}\n\t\t{form}\n\t</>\n})\n"],"names":["this"],"mappings":";;AAUa,MAAA,QAAQ,UAAsB,CAAS,UAAA;AAC7C,QAAA,IAAI,aAAa,mDAAmD;AAC3E,GAAG,CAAC,EAAE,OAAO,UAAU,WAAW;AACjC,SACE,uBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,KAHK,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAIP,GAAAA,MAAA;AACD,CAAC;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
|
+
const reactBinding = require("@contember/react-binding");
|
|
5
|
+
const reactRepeater = require("@contember/react-repeater");
|
|
6
|
+
const React = require("react");
|
|
7
|
+
const staticAnalyzer = require("../internal/helpers/staticAnalyzer.cjs");
|
|
8
|
+
const contexts = require("../contexts.cjs");
|
|
9
|
+
const BlockRepeater = reactBinding.Component(({ children, ...props }, env) => {
|
|
10
|
+
const [blocks] = React.useState(() => staticAnalyzer.extractBlocks(children, env));
|
|
11
|
+
if (Object.keys(blocks).length === 0) {
|
|
12
|
+
throw new Error("BlockRepeater must have at least one Block child");
|
|
13
|
+
}
|
|
14
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactRepeater.Repeater, { ...props, initialEntityCount: 0, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.BlockRepeaterConfigContext.Provider, { value: { discriminatedBy: props.discriminationField, blocks }, children }, void 0, false, {
|
|
15
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
16
|
+
lineNumber: 21,
|
|
17
|
+
columnNumber: 4
|
|
18
|
+
}, void 0) }, void 0, false, {
|
|
19
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
20
|
+
lineNumber: 20,
|
|
21
|
+
columnNumber: 3
|
|
22
|
+
}, void 0);
|
|
23
|
+
}, (props) => {
|
|
24
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactRepeater.Repeater, { ...props, children: [
|
|
25
|
+
props.children,
|
|
26
|
+
/* @__PURE__ */ jsxDevRuntime.jsxDEV(reactBinding.Field, { field: props.discriminationField }, void 0, false, {
|
|
27
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
28
|
+
lineNumber: 30,
|
|
29
|
+
columnNumber: 4
|
|
30
|
+
}, void 0)
|
|
31
|
+
] }, void 0, true, {
|
|
32
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
33
|
+
lineNumber: 28,
|
|
34
|
+
columnNumber: 3
|
|
35
|
+
}, void 0);
|
|
36
|
+
});
|
|
37
|
+
exports.BlockRepeater = BlockRepeater;
|
|
38
|
+
//# sourceMappingURL=BlockRepeater.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeater.cjs","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeater.tsx"],"sourcesContent":["import { Component, Field, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { Repeater, RepeaterProps } from '@contember/react-repeater'\nimport { useState } from 'react'\nimport { extractBlocks } from '../internal/helpers/staticAnalyzer'\nimport { BlockRepeaterConfigContext } from '../contexts'\n\nexport type BlockRepeaterProps =\n\t& {\n\t\tsortableBy: RepeaterProps['sortableBy']\n\t\tdiscriminationField: SugaredRelativeSingleField['field']\n\t}\n\t& RepeaterProps\n\nexport const BlockRepeater = Component<BlockRepeaterProps>(({ children, ...props }, env) => {\n\tconst [blocks] = useState(() => extractBlocks(children, env))\n\tif (Object.keys(blocks).length === 0) {\n\t\tthrow new Error('BlockRepeater must have at least one Block child')\n\t}\n\treturn (\n\t\t<Repeater {...props} initialEntityCount={0}>\n\t\t\t<BlockRepeaterConfigContext.Provider value={{ discriminatedBy: props.discriminationField, blocks }}>\n\t\t\t\t{children}\n\t\t\t</BlockRepeaterConfigContext.Provider>\n\t\t</Repeater>\n\t)\n}, props => {\n\treturn (\n\t\t<Repeater {...props}>\n\t\t\t{props.children}\n\t\t\t<Field field={props.discriminationField} />\n\t\t</Repeater>\n\t)\n})\n"],"names":["Component","useState","extractBlocks","Repeater","jsxDEV","BlockRepeaterConfigContext","this","Field"],"mappings":";;;;;;;;AAaa,MAAA,gBAAgBA,uBAA8B,CAAC,EAAE,UAAU,GAAG,SAAS,QAAQ;AACrF,QAAA,CAAC,MAAM,IAAIC,MAAA,SAAS,MAAMC,eAAAA,cAAc,UAAU,GAAG,CAAC;AAC5D,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAC/B,UAAA,IAAI,MAAM,kDAAkD;AAAA,EACnE;AACA,8CACEC,wBAAU,EAAA,GAAG,OAAO,oBAAoB,GACxC,UAACC,8BAAA,OAAAC,oCAA2B,UAA3B,EAAoC,OAAO,EAAE,iBAAiB,MAAM,qBAAqB,UACxF,SADF,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAIA,GAAAA,MAAA;AAEF,GAAG,CAAS,UAAA;AAEV,SAAAF,8BAAA,OAACD,cAAU,UAAA,EAAA,GAAG,OACZ,UAAA;AAAA,IAAM,MAAA;AAAA,IACNC,qCAAAG,aAAAA,OAAA,EAAM,OAAO,MAAM,uBAApB,QAAA,OAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAyC,GAAAD,MAAA;AAAA,EAAA,KAF1C,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAGA,GAAAA,MAAA;AAEF,CAAC;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
|
+
import { Component, Field } from "@contember/react-binding";
|
|
3
|
+
import { Repeater } from "@contember/react-repeater";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { extractBlocks } from "../internal/helpers/staticAnalyzer.js";
|
|
6
|
+
import { BlockRepeaterConfigContext } from "../contexts.js";
|
|
7
|
+
const BlockRepeater = Component(({ children, ...props }, env) => {
|
|
8
|
+
const [blocks] = useState(() => extractBlocks(children, env));
|
|
9
|
+
if (Object.keys(blocks).length === 0) {
|
|
10
|
+
throw new Error("BlockRepeater must have at least one Block child");
|
|
11
|
+
}
|
|
12
|
+
return /* @__PURE__ */ jsxDEV(Repeater, { ...props, initialEntityCount: 0, children: /* @__PURE__ */ jsxDEV(BlockRepeaterConfigContext.Provider, { value: { discriminatedBy: props.discriminationField, blocks }, children }, void 0, false, {
|
|
13
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
14
|
+
lineNumber: 21,
|
|
15
|
+
columnNumber: 4
|
|
16
|
+
}, void 0) }, void 0, false, {
|
|
17
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
18
|
+
lineNumber: 20,
|
|
19
|
+
columnNumber: 3
|
|
20
|
+
}, void 0);
|
|
21
|
+
}, (props) => {
|
|
22
|
+
return /* @__PURE__ */ jsxDEV(Repeater, { ...props, children: [
|
|
23
|
+
props.children,
|
|
24
|
+
/* @__PURE__ */ jsxDEV(Field, { field: props.discriminationField }, void 0, false, {
|
|
25
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
26
|
+
lineNumber: 30,
|
|
27
|
+
columnNumber: 4
|
|
28
|
+
}, void 0)
|
|
29
|
+
] }, void 0, true, {
|
|
30
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeater.tsx",
|
|
31
|
+
lineNumber: 28,
|
|
32
|
+
columnNumber: 3
|
|
33
|
+
}, void 0);
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
BlockRepeater
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=BlockRepeater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeater.js","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeater.tsx"],"sourcesContent":["import { Component, Field, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { Repeater, RepeaterProps } from '@contember/react-repeater'\nimport { useState } from 'react'\nimport { extractBlocks } from '../internal/helpers/staticAnalyzer'\nimport { BlockRepeaterConfigContext } from '../contexts'\n\nexport type BlockRepeaterProps =\n\t& {\n\t\tsortableBy: RepeaterProps['sortableBy']\n\t\tdiscriminationField: SugaredRelativeSingleField['field']\n\t}\n\t& RepeaterProps\n\nexport const BlockRepeater = Component<BlockRepeaterProps>(({ children, ...props }, env) => {\n\tconst [blocks] = useState(() => extractBlocks(children, env))\n\tif (Object.keys(blocks).length === 0) {\n\t\tthrow new Error('BlockRepeater must have at least one Block child')\n\t}\n\treturn (\n\t\t<Repeater {...props} initialEntityCount={0}>\n\t\t\t<BlockRepeaterConfigContext.Provider value={{ discriminatedBy: props.discriminationField, blocks }}>\n\t\t\t\t{children}\n\t\t\t</BlockRepeaterConfigContext.Provider>\n\t\t</Repeater>\n\t)\n}, props => {\n\treturn (\n\t\t<Repeater {...props}>\n\t\t\t{props.children}\n\t\t\t<Field field={props.discriminationField} />\n\t\t</Repeater>\n\t)\n})\n"],"names":["this"],"mappings":";;;;;;AAaa,MAAA,gBAAgB,UAA8B,CAAC,EAAE,UAAU,GAAG,SAAS,QAAQ;AACrF,QAAA,CAAC,MAAM,IAAI,SAAS,MAAM,cAAc,UAAU,GAAG,CAAC;AAC5D,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAC/B,UAAA,IAAI,MAAM,kDAAkD;AAAA,EACnE;AACA,gCACE,UAAU,EAAA,GAAG,OAAO,oBAAoB,GACxC,UAAC,uBAAA,2BAA2B,UAA3B,EAAoC,OAAO,EAAE,iBAAiB,MAAM,qBAAqB,UACxF,SADF,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAIA,GAAAA,MAAA;AAEF,GAAG,CAAS,UAAA;AAEV,SAAA,uBAAC,UAAU,EAAA,GAAG,OACZ,UAAA;AAAA,IAAM,MAAA;AAAA,IACN,uBAAA,OAAA,EAAM,OAAO,MAAM,uBAApB,QAAA,OAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAyC,GAAAA,MAAA;AAAA,EAAA,KAF1C,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAGA,GAAAA,MAAA;AAEF,CAAC;"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
4
|
const reactSlot = require("@radix-ui/react-slot");
|
|
5
5
|
const contexts = require("../contexts.cjs");
|
|
6
|
-
const
|
|
6
|
+
const React = require("react");
|
|
7
7
|
const reactRepeater = require("@contember/react-repeater");
|
|
8
8
|
const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }) => {
|
|
9
9
|
const { discriminatedBy } = contexts.useBlockRepeaterConfig();
|
|
10
10
|
const { addItem } = reactRepeater.useRepeaterMethods();
|
|
11
|
-
const onClick =
|
|
11
|
+
const onClick = React.useMemo(() => () => addItem?.(index, (it) => {
|
|
12
12
|
it().getField(discriminatedBy).updateValue(type);
|
|
13
13
|
}), [addItem, discriminatedBy, index, type]);
|
|
14
|
-
return /* @__PURE__ */
|
|
14
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactSlot.Slot, { onClick, ...props }, void 0, false, {
|
|
15
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx",
|
|
16
|
+
lineNumber: 22,
|
|
17
|
+
columnNumber: 9
|
|
18
|
+
}, void 0);
|
|
15
19
|
};
|
|
16
20
|
exports.BlockRepeaterAddItemTrigger = BlockRepeaterAddItemTrigger;
|
|
17
21
|
//# sourceMappingURL=BlockRepeaterAddItemTrigger.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeaterAddItemTrigger.cjs","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx"],"sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { useBlockRepeaterConfig } from '../contexts'\nimport React, { ReactElement, useMemo } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { RepeaterAddItemIndex, useRepeaterMethods } from '@contember/react-repeater'\n\nexport interface BlockRepeaterAddItemTriggerProps {\n\tchildren: ReactElement\n\ttype: string\n\tindex?: RepeaterAddItemIndex\n\tpreprocess?: EntityAccessor.BatchUpdatesHandler\n}\n\nexport const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }: BlockRepeaterAddItemTriggerProps) => {\n\tconst { discriminatedBy } = useBlockRepeaterConfig()\n\n\tconst { addItem } = useRepeaterMethods()\n\tconst onClick = useMemo(() => () => addItem?.(index, it => {\n\t\tit().getField(discriminatedBy).updateValue(type)\n\t}), [addItem, discriminatedBy, index, type])\n\n\treturn <Slot onClick={onClick} {...props} />\n}\n"],"names":["useBlockRepeaterConfig","useRepeaterMethods","useMemo","jsxDEV","Slot","this"],"mappings":";;;;;;;AAaa,MAAA,8BAA8B,CAAC,EAAE,YAAY,OAAO,MAAM,GAAG,YAA8C;AACjH,QAAA,EAAE,oBAAoBA,SAAAA;AAEtB,QAAA,EAAE,YAAYC,cAAAA;AACpB,QAAM,UAAUC,MAAAA,QAAQ,MAAM,MAAM,UAAU,OAAO,CAAM,OAAA;AAC1D,OAAA,EAAK,SAAS,eAAe,EAAE,YAAY,IAAI;AAAA,EAAA,CAC/C,GAAG,CAAC,SAAS,iBAAiB,OAAO,IAAI,CAAC;AAE3C,SAAQC,8BAAA,OAAAC,UAAA,MAAA,EAAK,SAAmB,GAAG,SAA5B,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAmC,GAAAC,MAAA;AAC3C;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
2
|
import { Slot } from "@radix-ui/react-slot";
|
|
3
3
|
import { useBlockRepeaterConfig } from "../contexts.js";
|
|
4
4
|
import { useMemo } from "react";
|
|
@@ -9,7 +9,11 @@ const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }) => {
|
|
|
9
9
|
const onClick = useMemo(() => () => addItem?.(index, (it) => {
|
|
10
10
|
it().getField(discriminatedBy).updateValue(type);
|
|
11
11
|
}), [addItem, discriminatedBy, index, type]);
|
|
12
|
-
return /* @__PURE__ */
|
|
12
|
+
return /* @__PURE__ */ jsxDEV(Slot, { onClick, ...props }, void 0, false, {
|
|
13
|
+
fileName: "/home/runner/work/contember/contember/packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx",
|
|
14
|
+
lineNumber: 22,
|
|
15
|
+
columnNumber: 9
|
|
16
|
+
}, void 0);
|
|
13
17
|
};
|
|
14
18
|
export {
|
|
15
19
|
BlockRepeaterAddItemTrigger
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeaterAddItemTrigger.js","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx"],"sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { useBlockRepeaterConfig } from '../contexts'\nimport React, { ReactElement, useMemo } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { RepeaterAddItemIndex, useRepeaterMethods } from '@contember/react-repeater'\n\nexport interface BlockRepeaterAddItemTriggerProps {\n\tchildren: ReactElement\n\ttype: string\n\tindex?: RepeaterAddItemIndex\n\tpreprocess?: EntityAccessor.BatchUpdatesHandler\n}\n\nexport const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }: BlockRepeaterAddItemTriggerProps) => {\n\tconst { discriminatedBy } = useBlockRepeaterConfig()\n\n\tconst { addItem } = useRepeaterMethods()\n\tconst onClick = useMemo(() => () => addItem?.(index, it => {\n\t\tit().getField(discriminatedBy).updateValue(type)\n\t}), [addItem, discriminatedBy, index, type])\n\n\treturn <Slot onClick={onClick} {...props} />\n}\n"],"names":["this"],"mappings":";;;;;AAaa,MAAA,8BAA8B,CAAC,EAAE,YAAY,OAAO,MAAM,GAAG,YAA8C;AACjH,QAAA,EAAE,oBAAoB;AAEtB,QAAA,EAAE,YAAY;AACpB,QAAM,UAAU,QAAQ,MAAM,MAAM,UAAU,OAAO,CAAM,OAAA;AAC1D,OAAA,EAAK,SAAS,eAAe,EAAE,YAAY,IAAI;AAAA,EAAA,CAC/C,GAAG,CAAC,SAAS,iBAAiB,OAAO,IAAI,CAAC;AAE3C,SAAQ,uBAAA,MAAA,EAAK,SAAmB,GAAG,SAA5B,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAmC,GAAAA,MAAA;AAC3C;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.cjs","sources":["../../../../packages/react-block-repeater/src/contexts.ts"],"sourcesContent":["import { SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createRequiredContext } from '@contember/react-utils'\nimport { BlocksMap } from './types'\n\nconst BlockRepeaterConfigContext_ = createRequiredContext<{\n\tdiscriminatedBy: SugaredRelativeSingleField['field']\n\tblocks: BlocksMap\n}>('BlockRepeaterConfigContext')\n/** @internal */\nexport const BlockRepeaterConfigContext = BlockRepeaterConfigContext_[0]\nexport const useBlockRepeaterConfig = BlockRepeaterConfigContext_[1]\n"],"names":["createRequiredContext"],"mappings":";;;AAIA,MAAM,8BAA8BA,WAAAA,sBAGjC,4BAA4B;AAElB,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sources":["../../../../packages/react-block-repeater/src/contexts.ts"],"sourcesContent":["import { SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createRequiredContext } from '@contember/react-utils'\nimport { BlocksMap } from './types'\n\nconst BlockRepeaterConfigContext_ = createRequiredContext<{\n\tdiscriminatedBy: SugaredRelativeSingleField['field']\n\tblocks: BlocksMap\n}>('BlockRepeaterConfigContext')\n/** @internal */\nexport const BlockRepeaterConfigContext = BlockRepeaterConfigContext_[0]\nexport const useBlockRepeaterConfig = BlockRepeaterConfigContext_[1]\n"],"names":[],"mappings":";AAIA,MAAM,8BAA8B,sBAGjC,4BAA4B;AAElB,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockRepeaterCurrentBlock.cjs","sources":["../../../../../packages/react-block-repeater/src/hooks/useBlockRepeaterCurrentBlock.ts"],"sourcesContent":["import { useEntity } from '@contember/react-binding'\nimport { useBlockRepeaterConfig } from '../contexts'\n\nexport const useBlockRepeaterCurrentBlock = () => {\n\tconst entity = useEntity()\n\tconst { discriminatedBy, blocks } = useBlockRepeaterConfig()\n\tconst field = entity.getField<string>(discriminatedBy).value\n\treturn field ? blocks[field] : undefined\n}\n"],"names":["useEntity","useBlockRepeaterConfig"],"mappings":";;;;AAGO,MAAM,+BAA+B,MAAM;AACjD,QAAM,SAASA,aAAAA;AACf,QAAM,EAAE,iBAAiB,OAAO,IAAIC,SAAuB,uBAAA;AAC3D,QAAM,QAAQ,OAAO,SAAiB,eAAe,EAAE;AAChD,SAAA,QAAQ,OAAO,KAAK,IAAI;AAChC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockRepeaterCurrentBlock.js","sources":["../../../../../packages/react-block-repeater/src/hooks/useBlockRepeaterCurrentBlock.ts"],"sourcesContent":["import { useEntity } from '@contember/react-binding'\nimport { useBlockRepeaterConfig } from '../contexts'\n\nexport const useBlockRepeaterCurrentBlock = () => {\n\tconst entity = useEntity()\n\tconst { discriminatedBy, blocks } = useBlockRepeaterConfig()\n\tconst field = entity.getField<string>(discriminatedBy).value\n\treturn field ? blocks[field] : undefined\n}\n"],"names":[],"mappings":";;AAGO,MAAM,+BAA+B,MAAM;AACjD,QAAM,SAAS;AACf,QAAM,EAAE,iBAAiB,OAAO,IAAI,uBAAuB;AAC3D,QAAM,QAAQ,OAAO,SAAiB,eAAe,EAAE;AAChD,SAAA,QAAQ,OAAO,KAAK,IAAI;AAChC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticAnalyzer.cjs","sources":["../../../../../../packages/react-block-repeater/src/internal/helpers/staticAnalyzer.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Block, BlockProps } from '../../components'\nimport { Environment } from '@contember/react-binding'\nimport { ChildrenAnalyzer, Leaf } from '@contember/react-multipass-rendering'\n\ntype BlocksMap = Record<string, BlockProps>\nexport const extractBlocks = (children: ReactNode, env: Environment): BlocksMap => {\n\tconst blocks = blockAnalyzer.processChildren(children, env)\n\treturn Object.fromEntries(blocks.map(block => [block.name, block]))\n}\n\nconst columnLeaf = new Leaf(node => node.props, Block)\n\nconst blockAnalyzer = new ChildrenAnalyzer<\n\tBlockProps,\n\tnever,\n\tEnvironment\n>([columnLeaf], {\n\tstaticRenderFactoryName: 'staticRender',\n\tstaticContextFactoryName: 'generateEnvironment',\n\tunhandledNodeErrorMessage: 'Only Block children are supported.',\n})\n"],"names":["Leaf","Block","ChildrenAnalyzer"],"mappings":";;;;AAMa,MAAA,gBAAgB,CAAC,UAAqB,QAAgC;AAClF,QAAM,SAAS,cAAc,gBAAgB,UAAU,GAAG;AACnD,SAAA,OAAO,YAAY,OAAO,IAAI,CAAA,UAAS,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACnE;AAEA,MAAM,aAAa,IAAIA,wBAAAA,KAAK,CAAQ,SAAA,KAAK,OAAOC,MAAAA,KAAK;AAErD,MAAM,gBAAgB,IAAIC,wBAAAA,iBAIxB,CAAC,UAAU,GAAG;AAAA,EACf,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,2BAA2B;AAC5B,CAAC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticAnalyzer.js","sources":["../../../../../../packages/react-block-repeater/src/internal/helpers/staticAnalyzer.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Block, BlockProps } from '../../components'\nimport { Environment } from '@contember/react-binding'\nimport { ChildrenAnalyzer, Leaf } from '@contember/react-multipass-rendering'\n\ntype BlocksMap = Record<string, BlockProps>\nexport const extractBlocks = (children: ReactNode, env: Environment): BlocksMap => {\n\tconst blocks = blockAnalyzer.processChildren(children, env)\n\treturn Object.fromEntries(blocks.map(block => [block.name, block]))\n}\n\nconst columnLeaf = new Leaf(node => node.props, Block)\n\nconst blockAnalyzer = new ChildrenAnalyzer<\n\tBlockProps,\n\tnever,\n\tEnvironment\n>([columnLeaf], {\n\tstaticRenderFactoryName: 'staticRender',\n\tstaticContextFactoryName: 'generateEnvironment',\n\tunhandledNodeErrorMessage: 'Only Block children are supported.',\n})\n"],"names":[],"mappings":";;AAMa,MAAA,gBAAgB,CAAC,UAAqB,QAAgC;AAClF,QAAM,SAAS,cAAc,gBAAgB,UAAU,GAAG;AACnD,SAAA,OAAO,YAAY,OAAO,IAAI,CAAA,UAAS,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACnE;AAEA,MAAM,aAAa,IAAI,KAAK,CAAQ,SAAA,KAAK,OAAO,KAAK;AAErD,MAAM,gBAAgB,IAAI,iBAIxB,CAAC,UAAU,GAAG;AAAA,EACf,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,2BAA2B;AAC5B,CAAC;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const contexts = require("./contexts.cjs");
|
|
4
|
-
const Block = require("./components/Block.cjs");
|
|
5
|
-
const BlockRepeater = require("./components/BlockRepeater.cjs");
|
|
6
|
-
const BlockRepeaterAddItemTrigger = require("./components/BlockRepeaterAddItemTrigger.cjs");
|
|
7
|
-
const useBlockRepeaterCurrentBlock = require("./hooks/useBlockRepeaterCurrentBlock.cjs");
|
|
3
|
+
const contexts = require("./src/contexts.cjs");
|
|
4
|
+
const Block = require("./src/components/Block.cjs");
|
|
5
|
+
const BlockRepeater = require("./src/components/BlockRepeater.cjs");
|
|
6
|
+
const BlockRepeaterAddItemTrigger = require("./src/components/BlockRepeaterAddItemTrigger.cjs");
|
|
7
|
+
const useBlockRepeaterCurrentBlock = require("./src/hooks/useBlockRepeaterCurrentBlock.cjs");
|
|
8
8
|
exports.BlockRepeaterConfigContext = contexts.BlockRepeaterConfigContext;
|
|
9
9
|
exports.useBlockRepeaterConfig = contexts.useBlockRepeaterConfig;
|
|
10
10
|
exports.Block = Block.Block;
|
package/dist/production/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BlockRepeaterConfigContext, useBlockRepeaterConfig } from "./contexts.js";
|
|
2
|
-
import { Block } from "./components/Block.js";
|
|
3
|
-
import { BlockRepeater } from "./components/BlockRepeater.js";
|
|
4
|
-
import { BlockRepeaterAddItemTrigger } from "./components/BlockRepeaterAddItemTrigger.js";
|
|
5
|
-
import { useBlockRepeaterCurrentBlock } from "./hooks/useBlockRepeaterCurrentBlock.js";
|
|
1
|
+
import { BlockRepeaterConfigContext, useBlockRepeaterConfig } from "./src/contexts.js";
|
|
2
|
+
import { Block } from "./src/components/Block.js";
|
|
3
|
+
import { BlockRepeater } from "./src/components/BlockRepeater.js";
|
|
4
|
+
import { BlockRepeaterAddItemTrigger } from "./src/components/BlockRepeaterAddItemTrigger.js";
|
|
5
|
+
import { useBlockRepeaterCurrentBlock } from "./src/hooks/useBlockRepeaterCurrentBlock.js";
|
|
6
6
|
export {
|
|
7
7
|
Block,
|
|
8
8
|
BlockRepeater,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Block.cjs","sources":["../../../../../packages/react-block-repeater/src/components/Block.tsx"],"sourcesContent":["import { BindingError, Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\n\nexport interface BlockProps {\n\tchildren: ReactNode\n\tname: string\n\tlabel?: ReactNode\n\tform?: ReactNode\n}\n\nexport const Block = Component<BlockProps>(props => {\n\tthrow new BindingError('\"Block\" component is not supposed to be rendered.')\n}, ({ label, children, form }) => {\n\treturn <>\n\t\t{label}\n\t\t{children}\n\t\t{form}\n\t</>\n})\n"],"names":["Component","BindingError","jsxs","Fragment"],"mappings":";;;;AAUa,MAAA,QAAQA,aAAAA,UAAsB,CAAS,UAAA;AAC7C,QAAA,IAAIC,aAAAA,aAAa,mDAAmD;AAC3E,GAAG,CAAC,EAAE,OAAO,UAAU,WAAW;AACjC,SACEC,2BAAA,KAAAC,qBAAA,EAAA,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAA,CAAA;AACD,CAAC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Block.js","sources":["../../../../../packages/react-block-repeater/src/components/Block.tsx"],"sourcesContent":["import { BindingError, Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\n\nexport interface BlockProps {\n\tchildren: ReactNode\n\tname: string\n\tlabel?: ReactNode\n\tform?: ReactNode\n}\n\nexport const Block = Component<BlockProps>(props => {\n\tthrow new BindingError('\"Block\" component is not supposed to be rendered.')\n}, ({ label, children, form }) => {\n\treturn <>\n\t\t{label}\n\t\t{children}\n\t\t{form}\n\t</>\n})\n"],"names":[],"mappings":";;AAUa,MAAA,QAAQ,UAAsB,CAAS,UAAA;AAC7C,QAAA,IAAI,aAAa,mDAAmD;AAC3E,GAAG,CAAC,EAAE,OAAO,UAAU,WAAW;AACjC,SACE,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAA,CAAA;AACD,CAAC;"}
|
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const reactBinding = require("@contember/react-binding");
|
|
5
5
|
const reactRepeater = require("@contember/react-repeater");
|
|
6
|
-
const
|
|
6
|
+
const React = require("react");
|
|
7
7
|
const staticAnalyzer = require("../internal/helpers/staticAnalyzer.cjs");
|
|
8
8
|
const contexts = require("../contexts.cjs");
|
|
9
9
|
const BlockRepeater = reactBinding.Component(({ children, ...props }, env) => {
|
|
10
|
-
const [blocks] =
|
|
10
|
+
const [blocks] = React.useState(() => staticAnalyzer.extractBlocks(children, env));
|
|
11
11
|
if (Object.keys(blocks).length === 0) {
|
|
12
12
|
throw new Error("BlockRepeater must have at least one Block child");
|
|
13
13
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeater.cjs","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeater.tsx"],"sourcesContent":["import { Component, Field, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { Repeater, RepeaterProps } from '@contember/react-repeater'\nimport { useState } from 'react'\nimport { extractBlocks } from '../internal/helpers/staticAnalyzer'\nimport { BlockRepeaterConfigContext } from '../contexts'\n\nexport type BlockRepeaterProps =\n\t& {\n\t\tsortableBy: RepeaterProps['sortableBy']\n\t\tdiscriminationField: SugaredRelativeSingleField['field']\n\t}\n\t& RepeaterProps\n\nexport const BlockRepeater = Component<BlockRepeaterProps>(({ children, ...props }, env) => {\n\tconst [blocks] = useState(() => extractBlocks(children, env))\n\tif (Object.keys(blocks).length === 0) {\n\t\tthrow new Error('BlockRepeater must have at least one Block child')\n\t}\n\treturn (\n\t\t<Repeater {...props} initialEntityCount={0}>\n\t\t\t<BlockRepeaterConfigContext.Provider value={{ discriminatedBy: props.discriminationField, blocks }}>\n\t\t\t\t{children}\n\t\t\t</BlockRepeaterConfigContext.Provider>\n\t\t</Repeater>\n\t)\n}, props => {\n\treturn (\n\t\t<Repeater {...props}>\n\t\t\t{props.children}\n\t\t\t<Field field={props.discriminationField} />\n\t\t</Repeater>\n\t)\n})\n"],"names":["Component","useState","extractBlocks","Repeater","BlockRepeaterConfigContext","jsxs","jsx","Field"],"mappings":";;;;;;;;AAaa,MAAA,gBAAgBA,uBAA8B,CAAC,EAAE,UAAU,GAAG,SAAS,QAAQ;AACrF,QAAA,CAAC,MAAM,IAAIC,MAAA,SAAS,MAAMC,eAAAA,cAAc,UAAU,GAAG,CAAC;AAC5D,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAC/B,UAAA,IAAI,MAAM,kDAAkD;AAAA,EACnE;AACA,wCACEC,cAAU,UAAA,EAAA,GAAG,OAAO,oBAAoB,GACxC,yCAACC,SAA2B,2BAAA,UAA3B,EAAoC,OAAO,EAAE,iBAAiB,MAAM,qBAAqB,UACxF,UACF,EACD,CAAA;AAEF,GAAG,CAAS,UAAA;AAEV,SAAAC,2BAAA,KAACF,cAAU,UAAA,EAAA,GAAG,OACZ,UAAA;AAAA,IAAM,MAAA;AAAA,IACNG,2BAAAA,IAAAC,aAAAA,OAAA,EAAM,OAAO,MAAM,oBAAqB,CAAA;AAAA,EAC1C,EAAA,CAAA;AAEF,CAAC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeater.js","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeater.tsx"],"sourcesContent":["import { Component, Field, SugaredRelativeSingleField } from '@contember/react-binding'\nimport { Repeater, RepeaterProps } from '@contember/react-repeater'\nimport { useState } from 'react'\nimport { extractBlocks } from '../internal/helpers/staticAnalyzer'\nimport { BlockRepeaterConfigContext } from '../contexts'\n\nexport type BlockRepeaterProps =\n\t& {\n\t\tsortableBy: RepeaterProps['sortableBy']\n\t\tdiscriminationField: SugaredRelativeSingleField['field']\n\t}\n\t& RepeaterProps\n\nexport const BlockRepeater = Component<BlockRepeaterProps>(({ children, ...props }, env) => {\n\tconst [blocks] = useState(() => extractBlocks(children, env))\n\tif (Object.keys(blocks).length === 0) {\n\t\tthrow new Error('BlockRepeater must have at least one Block child')\n\t}\n\treturn (\n\t\t<Repeater {...props} initialEntityCount={0}>\n\t\t\t<BlockRepeaterConfigContext.Provider value={{ discriminatedBy: props.discriminationField, blocks }}>\n\t\t\t\t{children}\n\t\t\t</BlockRepeaterConfigContext.Provider>\n\t\t</Repeater>\n\t)\n}, props => {\n\treturn (\n\t\t<Repeater {...props}>\n\t\t\t{props.children}\n\t\t\t<Field field={props.discriminationField} />\n\t\t</Repeater>\n\t)\n})\n"],"names":[],"mappings":";;;;;;AAaa,MAAA,gBAAgB,UAA8B,CAAC,EAAE,UAAU,GAAG,SAAS,QAAQ;AACrF,QAAA,CAAC,MAAM,IAAI,SAAS,MAAM,cAAc,UAAU,GAAG,CAAC;AAC5D,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAC/B,UAAA,IAAI,MAAM,kDAAkD;AAAA,EACnE;AACA,6BACE,UAAU,EAAA,GAAG,OAAO,oBAAoB,GACxC,8BAAC,2BAA2B,UAA3B,EAAoC,OAAO,EAAE,iBAAiB,MAAM,qBAAqB,UACxF,UACF,EACD,CAAA;AAEF,GAAG,CAAS,UAAA;AAEV,SAAA,qBAAC,UAAU,EAAA,GAAG,OACZ,UAAA;AAAA,IAAM,MAAA;AAAA,IACN,oBAAA,OAAA,EAAM,OAAO,MAAM,oBAAqB,CAAA;AAAA,EAC1C,EAAA,CAAA;AAEF,CAAC;"}
|
|
@@ -3,12 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const reactSlot = require("@radix-ui/react-slot");
|
|
5
5
|
const contexts = require("../contexts.cjs");
|
|
6
|
-
const
|
|
6
|
+
const React = require("react");
|
|
7
7
|
const reactRepeater = require("@contember/react-repeater");
|
|
8
8
|
const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }) => {
|
|
9
9
|
const { discriminatedBy } = contexts.useBlockRepeaterConfig();
|
|
10
10
|
const { addItem } = reactRepeater.useRepeaterMethods();
|
|
11
|
-
const onClick =
|
|
11
|
+
const onClick = React.useMemo(() => () => addItem?.(index, (it) => {
|
|
12
12
|
it().getField(discriminatedBy).updateValue(type);
|
|
13
13
|
}), [addItem, discriminatedBy, index, type]);
|
|
14
14
|
return /* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slot, { onClick, ...props });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeaterAddItemTrigger.cjs","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx"],"sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { useBlockRepeaterConfig } from '../contexts'\nimport React, { ReactElement, useMemo } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { RepeaterAddItemIndex, useRepeaterMethods } from '@contember/react-repeater'\n\nexport interface BlockRepeaterAddItemTriggerProps {\n\tchildren: ReactElement\n\ttype: string\n\tindex?: RepeaterAddItemIndex\n\tpreprocess?: EntityAccessor.BatchUpdatesHandler\n}\n\nexport const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }: BlockRepeaterAddItemTriggerProps) => {\n\tconst { discriminatedBy } = useBlockRepeaterConfig()\n\n\tconst { addItem } = useRepeaterMethods()\n\tconst onClick = useMemo(() => () => addItem?.(index, it => {\n\t\tit().getField(discriminatedBy).updateValue(type)\n\t}), [addItem, discriminatedBy, index, type])\n\n\treturn <Slot onClick={onClick} {...props} />\n}\n"],"names":["useBlockRepeaterConfig","useRepeaterMethods","useMemo","jsx","Slot"],"mappings":";;;;;;;AAaa,MAAA,8BAA8B,CAAC,EAAE,YAAY,OAAO,MAAM,GAAG,YAA8C;AACjH,QAAA,EAAE,oBAAoBA,SAAAA;AAEtB,QAAA,EAAE,YAAYC,cAAAA;AACpB,QAAM,UAAUC,MAAAA,QAAQ,MAAM,MAAM,UAAU,OAAO,CAAM,OAAA;AAC1D,OAAA,EAAK,SAAS,eAAe,EAAE,YAAY,IAAI;AAAA,EAAA,CAC/C,GAAG,CAAC,SAAS,iBAAiB,OAAO,IAAI,CAAC;AAE3C,SAAQC,2BAAAA,IAAAC,UAAAA,MAAA,EAAK,SAAmB,GAAG,MAAO,CAAA;AAC3C;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockRepeaterAddItemTrigger.js","sources":["../../../../../packages/react-block-repeater/src/components/BlockRepeaterAddItemTrigger.tsx"],"sourcesContent":["import { Slot } from '@radix-ui/react-slot'\nimport { useBlockRepeaterConfig } from '../contexts'\nimport React, { ReactElement, useMemo } from 'react'\nimport { EntityAccessor } from '@contember/react-binding'\nimport { RepeaterAddItemIndex, useRepeaterMethods } from '@contember/react-repeater'\n\nexport interface BlockRepeaterAddItemTriggerProps {\n\tchildren: ReactElement\n\ttype: string\n\tindex?: RepeaterAddItemIndex\n\tpreprocess?: EntityAccessor.BatchUpdatesHandler\n}\n\nexport const BlockRepeaterAddItemTrigger = ({ preprocess, index, type, ...props }: BlockRepeaterAddItemTriggerProps) => {\n\tconst { discriminatedBy } = useBlockRepeaterConfig()\n\n\tconst { addItem } = useRepeaterMethods()\n\tconst onClick = useMemo(() => () => addItem?.(index, it => {\n\t\tit().getField(discriminatedBy).updateValue(type)\n\t}), [addItem, discriminatedBy, index, type])\n\n\treturn <Slot onClick={onClick} {...props} />\n}\n"],"names":[],"mappings":";;;;;AAaa,MAAA,8BAA8B,CAAC,EAAE,YAAY,OAAO,MAAM,GAAG,YAA8C;AACjH,QAAA,EAAE,oBAAoB;AAEtB,QAAA,EAAE,YAAY;AACpB,QAAM,UAAU,QAAQ,MAAM,MAAM,UAAU,OAAO,CAAM,OAAA;AAC1D,OAAA,EAAK,SAAS,eAAe,EAAE,YAAY,IAAI;AAAA,EAAA,CAC/C,GAAG,CAAC,SAAS,iBAAiB,OAAO,IAAI,CAAC;AAE3C,SAAQ,oBAAA,MAAA,EAAK,SAAmB,GAAG,MAAO,CAAA;AAC3C;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.cjs","sources":["../../../../packages/react-block-repeater/src/contexts.ts"],"sourcesContent":["import { SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createRequiredContext } from '@contember/react-utils'\nimport { BlocksMap } from './types'\n\nconst BlockRepeaterConfigContext_ = createRequiredContext<{\n\tdiscriminatedBy: SugaredRelativeSingleField['field']\n\tblocks: BlocksMap\n}>('BlockRepeaterConfigContext')\n/** @internal */\nexport const BlockRepeaterConfigContext = BlockRepeaterConfigContext_[0]\nexport const useBlockRepeaterConfig = BlockRepeaterConfigContext_[1]\n"],"names":["createRequiredContext"],"mappings":";;;AAIA,MAAM,8BAA8BA,WAAAA,sBAGjC,4BAA4B;AAElB,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sources":["../../../../packages/react-block-repeater/src/contexts.ts"],"sourcesContent":["import { SugaredRelativeSingleField } from '@contember/react-binding'\nimport { createRequiredContext } from '@contember/react-utils'\nimport { BlocksMap } from './types'\n\nconst BlockRepeaterConfigContext_ = createRequiredContext<{\n\tdiscriminatedBy: SugaredRelativeSingleField['field']\n\tblocks: BlocksMap\n}>('BlockRepeaterConfigContext')\n/** @internal */\nexport const BlockRepeaterConfigContext = BlockRepeaterConfigContext_[0]\nexport const useBlockRepeaterConfig = BlockRepeaterConfigContext_[1]\n"],"names":[],"mappings":";AAIA,MAAM,8BAA8B,sBAGjC,4BAA4B;AAElB,MAAA,6BAA6B,4BAA4B,CAAC;AAC1D,MAAA,yBAAyB,4BAA4B,CAAC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockRepeaterCurrentBlock.cjs","sources":["../../../../../packages/react-block-repeater/src/hooks/useBlockRepeaterCurrentBlock.ts"],"sourcesContent":["import { useEntity } from '@contember/react-binding'\nimport { useBlockRepeaterConfig } from '../contexts'\n\nexport const useBlockRepeaterCurrentBlock = () => {\n\tconst entity = useEntity()\n\tconst { discriminatedBy, blocks } = useBlockRepeaterConfig()\n\tconst field = entity.getField<string>(discriminatedBy).value\n\treturn field ? blocks[field] : undefined\n}\n"],"names":["useEntity","useBlockRepeaterConfig"],"mappings":";;;;AAGO,MAAM,+BAA+B,MAAM;AACjD,QAAM,SAASA,aAAAA;AACf,QAAM,EAAE,iBAAiB,OAAO,IAAIC,SAAuB,uBAAA;AAC3D,QAAM,QAAQ,OAAO,SAAiB,eAAe,EAAE;AAChD,SAAA,QAAQ,OAAO,KAAK,IAAI;AAChC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBlockRepeaterCurrentBlock.js","sources":["../../../../../packages/react-block-repeater/src/hooks/useBlockRepeaterCurrentBlock.ts"],"sourcesContent":["import { useEntity } from '@contember/react-binding'\nimport { useBlockRepeaterConfig } from '../contexts'\n\nexport const useBlockRepeaterCurrentBlock = () => {\n\tconst entity = useEntity()\n\tconst { discriminatedBy, blocks } = useBlockRepeaterConfig()\n\tconst field = entity.getField<string>(discriminatedBy).value\n\treturn field ? blocks[field] : undefined\n}\n"],"names":[],"mappings":";;AAGO,MAAM,+BAA+B,MAAM;AACjD,QAAM,SAAS;AACf,QAAM,EAAE,iBAAiB,OAAO,IAAI,uBAAuB;AAC3D,QAAM,QAAQ,OAAO,SAAiB,eAAe,EAAE;AAChD,SAAA,QAAQ,OAAO,KAAK,IAAI;AAChC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticAnalyzer.cjs","sources":["../../../../../../packages/react-block-repeater/src/internal/helpers/staticAnalyzer.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Block, BlockProps } from '../../components'\nimport { Environment } from '@contember/react-binding'\nimport { ChildrenAnalyzer, Leaf } from '@contember/react-multipass-rendering'\n\ntype BlocksMap = Record<string, BlockProps>\nexport const extractBlocks = (children: ReactNode, env: Environment): BlocksMap => {\n\tconst blocks = blockAnalyzer.processChildren(children, env)\n\treturn Object.fromEntries(blocks.map(block => [block.name, block]))\n}\n\nconst columnLeaf = new Leaf(node => node.props, Block)\n\nconst blockAnalyzer = new ChildrenAnalyzer<\n\tBlockProps,\n\tnever,\n\tEnvironment\n>([columnLeaf], {\n\tstaticRenderFactoryName: 'staticRender',\n\tstaticContextFactoryName: 'generateEnvironment',\n\tunhandledNodeErrorMessage: 'Only Block children are supported.',\n})\n"],"names":["Leaf","Block","ChildrenAnalyzer"],"mappings":";;;;AAMa,MAAA,gBAAgB,CAAC,UAAqB,QAAgC;AAClF,QAAM,SAAS,cAAc,gBAAgB,UAAU,GAAG;AACnD,SAAA,OAAO,YAAY,OAAO,IAAI,CAAA,UAAS,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACnE;AAEA,MAAM,aAAa,IAAIA,wBAAAA,KAAK,CAAQ,SAAA,KAAK,OAAOC,MAAAA,KAAK;AAErD,MAAM,gBAAgB,IAAIC,wBAAAA,iBAIxB,CAAC,UAAU,GAAG;AAAA,EACf,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,2BAA2B;AAC5B,CAAC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticAnalyzer.js","sources":["../../../../../../packages/react-block-repeater/src/internal/helpers/staticAnalyzer.ts"],"sourcesContent":["import { ReactNode } from 'react'\nimport { Block, BlockProps } from '../../components'\nimport { Environment } from '@contember/react-binding'\nimport { ChildrenAnalyzer, Leaf } from '@contember/react-multipass-rendering'\n\ntype BlocksMap = Record<string, BlockProps>\nexport const extractBlocks = (children: ReactNode, env: Environment): BlocksMap => {\n\tconst blocks = blockAnalyzer.processChildren(children, env)\n\treturn Object.fromEntries(blocks.map(block => [block.name, block]))\n}\n\nconst columnLeaf = new Leaf(node => node.props, Block)\n\nconst blockAnalyzer = new ChildrenAnalyzer<\n\tBlockProps,\n\tnever,\n\tEnvironment\n>([columnLeaf], {\n\tstaticRenderFactoryName: 'staticRender',\n\tstaticContextFactoryName: 'generateEnvironment',\n\tunhandledNodeErrorMessage: 'Only Block children are supported.',\n})\n"],"names":[],"mappings":";;AAMa,MAAA,gBAAgB,CAAC,UAAqB,QAAgC;AAClF,QAAM,SAAS,cAAc,gBAAgB,UAAU,GAAG;AACnD,SAAA,OAAO,YAAY,OAAO,IAAI,CAAA,UAAS,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACnE;AAEA,MAAM,aAAa,IAAI,KAAK,CAAQ,SAAA,KAAK,OAAO,KAAK;AAErD,MAAM,gBAAgB,IAAI,iBAIxB,CAAC,UAAU,GAAG;AAAA,EACf,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,2BAA2B;AAC5B,CAAC;"}
|
package/dist/types/contexts.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { SugaredRelativeSingleField } from '@contember/react-binding';
|
|
|
2
2
|
import { BlocksMap } from './types';
|
|
3
3
|
/** @internal */
|
|
4
4
|
export declare const BlockRepeaterConfigContext: import("react").Context<{
|
|
5
|
-
discriminatedBy: SugaredRelativeSingleField[
|
|
5
|
+
discriminatedBy: SugaredRelativeSingleField["field"];
|
|
6
6
|
blocks: BlocksMap;
|
|
7
7
|
}>;
|
|
8
8
|
export declare const useBlockRepeaterConfig: () => {
|
|
9
|
-
discriminatedBy: SugaredRelativeSingleField[
|
|
9
|
+
discriminatedBy: SugaredRelativeSingleField["field"];
|
|
10
10
|
blocks: BlocksMap;
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=contexts.d.ts.map
|