@contember/interface 1.3.0-alpha.17 → 1.3.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/components/binding/DisconnectEntityTrigger.cjs +52 -0
- package/dist/development/components/binding/DisconnectEntityTrigger.cjs.map +1 -0
- package/dist/development/components/binding/DisconnectEntityTrigger.js +52 -0
- package/dist/development/components/binding/DisconnectEntityTrigger.js.map +1 -0
- package/dist/development/index.cjs +7 -2
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +4 -2
- package/dist/development/index.js.map +1 -1
- package/dist/production/components/binding/DisconnectEntityTrigger.cjs +44 -0
- package/dist/production/components/binding/DisconnectEntityTrigger.cjs.map +1 -0
- package/dist/production/components/binding/DisconnectEntityTrigger.js +44 -0
- package/dist/production/components/binding/DisconnectEntityTrigger.js.map +1 -0
- package/dist/production/index.cjs +7 -2
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +4 -2
- package/dist/production/index.js.map +1 -1
- package/dist/types/bootstrap/index.d.ts +0 -1
- package/dist/types/bootstrap/index.d.ts.map +1 -1
- package/dist/types/components/binding/DisconnectEntityTrigger.d.ts +11 -0
- package/dist/types/components/binding/DisconnectEntityTrigger.d.ts.map +1 -0
- package/dist/types/components/binding/index.d.ts +1 -0
- package/dist/types/components/binding/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/bootstrap/index.ts +0 -1
- package/src/components/binding/DisconnectEntityTrigger.tsx +53 -0
- package/src/components/binding/index.ts +1 -0
- package/src/index.ts +3 -0
- package/dist/development/bootstrap/runReactApp.cjs +0 -11
- package/dist/development/bootstrap/runReactApp.cjs.map +0 -1
- package/dist/development/bootstrap/runReactApp.js +0 -11
- package/dist/development/bootstrap/runReactApp.js.map +0 -1
- package/dist/production/bootstrap/runReactApp.cjs +0 -11
- package/dist/production/bootstrap/runReactApp.cjs.map +0 -1
- package/dist/production/bootstrap/runReactApp.js +0 -11
- package/dist/production/bootstrap/runReactApp.js.map +0 -1
- package/dist/types/bootstrap/runReactApp.d.ts +0 -5
- package/dist/types/bootstrap/runReactApp.d.ts.map +0 -1
- package/src/bootstrap/runReactApp.tsx +0 -16
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const reactSlot = require("@radix-ui/react-slot");
|
|
6
|
+
const reactBinding = require("@contember/react-binding");
|
|
7
|
+
const SlotButton = reactSlot.Slot;
|
|
8
|
+
const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }) => {
|
|
9
|
+
const entity = reactBinding.useEntity();
|
|
10
|
+
const triggerPersist = reactBinding.usePersist();
|
|
11
|
+
const isMutating = reactBinding.useMutationState();
|
|
12
|
+
const onClick = react.useCallback(() => {
|
|
13
|
+
if (field) {
|
|
14
|
+
entity.disconnectEntityAtField({ field });
|
|
15
|
+
} else {
|
|
16
|
+
const parent = entity.getParent();
|
|
17
|
+
if (!parent) {
|
|
18
|
+
throw new reactBinding.BindingError("Cannot disconnect root entity");
|
|
19
|
+
}
|
|
20
|
+
if (parent instanceof reactBinding.EntityListAccessor) {
|
|
21
|
+
parent.disconnectEntity(entity);
|
|
22
|
+
} else {
|
|
23
|
+
const subTreeNode = entity.environment.getSubTreeNode();
|
|
24
|
+
if (subTreeNode.type !== "entity") {
|
|
25
|
+
throw new reactBinding.BindingError("Cannot disconnect root entity");
|
|
26
|
+
}
|
|
27
|
+
parent.disconnectEntityAtField({ field: subTreeNode.field.name });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (immediatePersist) {
|
|
31
|
+
triggerPersist().then(onPersistSuccess).catch(onPersistError);
|
|
32
|
+
}
|
|
33
|
+
}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError]);
|
|
34
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(
|
|
35
|
+
SlotButton,
|
|
36
|
+
{
|
|
37
|
+
onClick,
|
|
38
|
+
disabled: isMutating ? true : void 0,
|
|
39
|
+
...props
|
|
40
|
+
},
|
|
41
|
+
void 0,
|
|
42
|
+
false,
|
|
43
|
+
{
|
|
44
|
+
fileName: "/__w/interface/interface/packages/interface/src/components/binding/DisconnectEntityTrigger.tsx",
|
|
45
|
+
lineNumber: 47,
|
|
46
|
+
columnNumber: 3
|
|
47
|
+
},
|
|
48
|
+
void 0
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
exports.DisconnectEntityTrigger = DisconnectEntityTrigger;
|
|
52
|
+
//# sourceMappingURL=DisconnectEntityTrigger.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectEntityTrigger.cjs","sources":["../../../../src/components/binding/DisconnectEntityTrigger.tsx"],"sourcesContent":["import { ComponentType, ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { BindingError, EntityListAccessor, ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity, useEntity, useMutationState, usePersist } from '@contember/react-binding'\n\n\nconst SlotButton = Slot as ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>\n\nexport interface DisconnectEntityTriggerProps {\n\timmediatePersist?: true\n\tchildren: ReactNode\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n\tfield?: SugaredRelativeSingleEntity['field']\n}\n\nexport const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => {\n\tconst entity = useEntity()\n\tconst triggerPersist = usePersist()\n\tconst isMutating = useMutationState()\n\tconst onClick = useCallback(() => {\n\t\tif (field) {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t} else {\n\t\t\tconst parent = entity.getParent()\n\t\t\tif (!parent) {\n\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t}\n\t\t\tif (parent instanceof EntityListAccessor) {\n\t\t\t\tparent.disconnectEntity(entity)\n\t\t\t} else {\n\t\t\t\tconst subTreeNode = entity.environment.getSubTreeNode()\n\t\t\t\tif (subTreeNode.type !== 'entity') {\n\t\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t\t}\n\t\t\t\tparent.disconnectEntityAtField({ field: subTreeNode.field.name })\n\t\t\t}\n\t\t}\n\n\t\tif (immediatePersist) {\n\t\t\ttriggerPersist()\n\t\t\t\t.then(onPersistSuccess)\n\t\t\t\t.catch(onPersistError)\n\t\t}\n\t}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError])\n\n\treturn (\n\t\t<SlotButton\n\t\t\tonClick={onClick}\n\t\t\tdisabled={isMutating ? true : undefined}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":["Slot","useEntity","usePersist","useMutationState","useCallback","BindingError","EntityListAccessor","jsxDEV","this"],"mappings":";;;;;;AAKA,MAAM,aAAaA,UAAAA;AAUN,MAAA,0BAA0B,CAAC,EAAE,kBAAkB,gBAAgB,kBAAkB,OAAO,GAAG,YAA0C;AACjJ,QAAM,SAASC,aAAAA;AACf,QAAM,iBAAiBC,aAAAA;AACvB,QAAM,aAAaC,aAAAA;AACb,QAAA,UAAUC,MAAAA,YAAY,MAAM;AACjC,QAAI,OAAO;AACH,aAAA,wBAAwB,EAAE,MAAA,CAAO;AAAA,IAAA,OAClC;AACA,YAAA,SAAS,OAAO;AACtB,UAAI,CAAC,QAAQ;AACN,cAAA,IAAIC,aAAAA,aAAa,+BAA+B;AAAA,MACvD;AACA,UAAI,kBAAkBC,aAAAA,oBAAoB;AACzC,eAAO,iBAAiB,MAAM;AAAA,MAAA,OACxB;AACA,cAAA,cAAc,OAAO,YAAY,eAAe;AAClD,YAAA,YAAY,SAAS,UAAU;AAC5B,gBAAA,IAAID,aAAAA,aAAa,+BAA+B;AAAA,QACvD;AACA,eAAO,wBAAwB,EAAE,OAAO,YAAY,MAAM,MAAM;AAAA,MACjE;AAAA,IACD;AAEA,QAAI,kBAAkB;AACrB,qBAAA,EACE,KAAK,gBAAgB,EACrB,MAAM,cAAc;AAAA,IACvB;AAAA,EAAA,GACE,CAAC,OAAO,kBAAkB,QAAQ,gBAAgB,kBAAkB,cAAc,CAAC;AAGrF,SAAAE,8BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,UAAU,aAAa,OAAO;AAAA,MAC7B,GAAG;AAAA,IAAA;AAAA,IAHL;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAC;AAAAA,EAAA;AAMF;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
4
|
+
import { useEntity, usePersist, useMutationState, BindingError, EntityListAccessor } from "@contember/react-binding";
|
|
5
|
+
const SlotButton = Slot;
|
|
6
|
+
const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }) => {
|
|
7
|
+
const entity = useEntity();
|
|
8
|
+
const triggerPersist = usePersist();
|
|
9
|
+
const isMutating = useMutationState();
|
|
10
|
+
const onClick = useCallback(() => {
|
|
11
|
+
if (field) {
|
|
12
|
+
entity.disconnectEntityAtField({ field });
|
|
13
|
+
} else {
|
|
14
|
+
const parent = entity.getParent();
|
|
15
|
+
if (!parent) {
|
|
16
|
+
throw new BindingError("Cannot disconnect root entity");
|
|
17
|
+
}
|
|
18
|
+
if (parent instanceof EntityListAccessor) {
|
|
19
|
+
parent.disconnectEntity(entity);
|
|
20
|
+
} else {
|
|
21
|
+
const subTreeNode = entity.environment.getSubTreeNode();
|
|
22
|
+
if (subTreeNode.type !== "entity") {
|
|
23
|
+
throw new BindingError("Cannot disconnect root entity");
|
|
24
|
+
}
|
|
25
|
+
parent.disconnectEntityAtField({ field: subTreeNode.field.name });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (immediatePersist) {
|
|
29
|
+
triggerPersist().then(onPersistSuccess).catch(onPersistError);
|
|
30
|
+
}
|
|
31
|
+
}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError]);
|
|
32
|
+
return /* @__PURE__ */ jsxDEV(
|
|
33
|
+
SlotButton,
|
|
34
|
+
{
|
|
35
|
+
onClick,
|
|
36
|
+
disabled: isMutating ? true : void 0,
|
|
37
|
+
...props
|
|
38
|
+
},
|
|
39
|
+
void 0,
|
|
40
|
+
false,
|
|
41
|
+
{
|
|
42
|
+
fileName: "/__w/interface/interface/packages/interface/src/components/binding/DisconnectEntityTrigger.tsx",
|
|
43
|
+
lineNumber: 47,
|
|
44
|
+
columnNumber: 3
|
|
45
|
+
},
|
|
46
|
+
void 0
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
DisconnectEntityTrigger
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=DisconnectEntityTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectEntityTrigger.js","sources":["../../../../src/components/binding/DisconnectEntityTrigger.tsx"],"sourcesContent":["import { ComponentType, ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { BindingError, EntityListAccessor, ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity, useEntity, useMutationState, usePersist } from '@contember/react-binding'\n\n\nconst SlotButton = Slot as ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>\n\nexport interface DisconnectEntityTriggerProps {\n\timmediatePersist?: true\n\tchildren: ReactNode\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n\tfield?: SugaredRelativeSingleEntity['field']\n}\n\nexport const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => {\n\tconst entity = useEntity()\n\tconst triggerPersist = usePersist()\n\tconst isMutating = useMutationState()\n\tconst onClick = useCallback(() => {\n\t\tif (field) {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t} else {\n\t\t\tconst parent = entity.getParent()\n\t\t\tif (!parent) {\n\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t}\n\t\t\tif (parent instanceof EntityListAccessor) {\n\t\t\t\tparent.disconnectEntity(entity)\n\t\t\t} else {\n\t\t\t\tconst subTreeNode = entity.environment.getSubTreeNode()\n\t\t\t\tif (subTreeNode.type !== 'entity') {\n\t\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t\t}\n\t\t\t\tparent.disconnectEntityAtField({ field: subTreeNode.field.name })\n\t\t\t}\n\t\t}\n\n\t\tif (immediatePersist) {\n\t\t\ttriggerPersist()\n\t\t\t\t.then(onPersistSuccess)\n\t\t\t\t.catch(onPersistError)\n\t\t}\n\t}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError])\n\n\treturn (\n\t\t<SlotButton\n\t\t\tonClick={onClick}\n\t\t\tdisabled={isMutating ? true : undefined}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":["this"],"mappings":";;;;AAKA,MAAM,aAAa;AAUN,MAAA,0BAA0B,CAAC,EAAE,kBAAkB,gBAAgB,kBAAkB,OAAO,GAAG,YAA0C;AACjJ,QAAM,SAAS;AACf,QAAM,iBAAiB;AACvB,QAAM,aAAa;AACb,QAAA,UAAU,YAAY,MAAM;AACjC,QAAI,OAAO;AACH,aAAA,wBAAwB,EAAE,MAAA,CAAO;AAAA,IAAA,OAClC;AACA,YAAA,SAAS,OAAO;AACtB,UAAI,CAAC,QAAQ;AACN,cAAA,IAAI,aAAa,+BAA+B;AAAA,MACvD;AACA,UAAI,kBAAkB,oBAAoB;AACzC,eAAO,iBAAiB,MAAM;AAAA,MAAA,OACxB;AACA,cAAA,cAAc,OAAO,YAAY,eAAe;AAClD,YAAA,YAAY,SAAS,UAAU;AAC5B,gBAAA,IAAI,aAAa,+BAA+B;AAAA,QACvD;AACA,eAAO,wBAAwB,EAAE,OAAO,YAAY,MAAM,MAAM;AAAA,MACjE;AAAA,IACD;AAEA,QAAI,kBAAkB;AACrB,qBAAA,EACE,KAAK,gBAAgB,EACrB,MAAM,cAAc;AAAA,IACvB;AAAA,EAAA,GACE,CAAC,OAAO,kBAAkB,QAAQ,gBAAgB,kBAAkB,cAAc,CAAC;AAGrF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,UAAU,aAAa,OAAO;AAAA,MAC7B,GAAG;AAAA,IAAA;AAAA,IAHL;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAA;AAAAA,EAAA;AAMF;"}
|
|
@@ -3,17 +3,22 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const reactRouting = require("@contember/react-routing");
|
|
4
4
|
const reactBinding = require("@contember/react-binding");
|
|
5
5
|
const reactIdentity = require("@contember/react-identity");
|
|
6
|
+
const reactDevbar = require("@contember/react-devbar");
|
|
6
7
|
const ApplicationEntrypoint = require("./bootstrap/ApplicationEntrypoint.cjs");
|
|
7
|
-
const runReactApp = require("./bootstrap/runReactApp.cjs");
|
|
8
8
|
const ClearFieldTrigger = require("./components/binding/ClearFieldTrigger.cjs");
|
|
9
9
|
const DeleteEntityTrigger = require("./components/binding/DeleteEntityTrigger.cjs");
|
|
10
|
+
const DisconnectEntityTrigger = require("./components/binding/DisconnectEntityTrigger.cjs");
|
|
10
11
|
const PersistTrigger = require("./components/binding/PersistTrigger.cjs");
|
|
11
12
|
const EntityBeforePersist = require("./components/binding/EntityBeforePersist.cjs");
|
|
12
13
|
const RedirectOnPersist = require("./components/binding/RedirectOnPersist.cjs");
|
|
14
|
+
Object.defineProperty(exports, "createErrorHandler", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: () => reactDevbar.createErrorHandler
|
|
17
|
+
});
|
|
13
18
|
exports.ApplicationEntrypoint = ApplicationEntrypoint.ApplicationEntrypoint;
|
|
14
|
-
exports.runReactApp = runReactApp.runReactApp;
|
|
15
19
|
exports.ClearFieldTrigger = ClearFieldTrigger.ClearFieldTrigger;
|
|
16
20
|
exports.DeleteEntityTrigger = DeleteEntityTrigger.DeleteEntityTrigger;
|
|
21
|
+
exports.DisconnectEntityTrigger = DisconnectEntityTrigger.DisconnectEntityTrigger;
|
|
17
22
|
exports.PersistTrigger = PersistTrigger.PersistTrigger;
|
|
18
23
|
exports.EntityBeforePersist = EntityBeforePersist.EntityBeforePersist;
|
|
19
24
|
exports.RedirectOnPersist = RedirectOnPersist.RedirectOnPersist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from "@contember/react-routing";
|
|
2
2
|
export * from "@contember/react-binding";
|
|
3
3
|
export * from "@contember/react-identity";
|
|
4
|
+
import { createErrorHandler } from "@contember/react-devbar";
|
|
4
5
|
import { ApplicationEntrypoint } from "./bootstrap/ApplicationEntrypoint.js";
|
|
5
|
-
import { runReactApp } from "./bootstrap/runReactApp.js";
|
|
6
6
|
import { ClearFieldTrigger } from "./components/binding/ClearFieldTrigger.js";
|
|
7
7
|
import { DeleteEntityTrigger } from "./components/binding/DeleteEntityTrigger.js";
|
|
8
|
+
import { DisconnectEntityTrigger } from "./components/binding/DisconnectEntityTrigger.js";
|
|
8
9
|
import { PersistTrigger } from "./components/binding/PersistTrigger.js";
|
|
9
10
|
import { EntityBeforePersist } from "./components/binding/EntityBeforePersist.js";
|
|
10
11
|
import { RedirectOnPersist } from "./components/binding/RedirectOnPersist.js";
|
|
@@ -12,9 +13,10 @@ export {
|
|
|
12
13
|
ApplicationEntrypoint,
|
|
13
14
|
ClearFieldTrigger,
|
|
14
15
|
DeleteEntityTrigger,
|
|
16
|
+
DisconnectEntityTrigger,
|
|
15
17
|
EntityBeforePersist,
|
|
16
18
|
PersistTrigger,
|
|
17
19
|
RedirectOnPersist,
|
|
18
|
-
|
|
20
|
+
createErrorHandler
|
|
19
21
|
};
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const reactSlot = require("@radix-ui/react-slot");
|
|
6
|
+
const reactBinding = require("@contember/react-binding");
|
|
7
|
+
const SlotButton = reactSlot.Slot;
|
|
8
|
+
const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }) => {
|
|
9
|
+
const entity = reactBinding.useEntity();
|
|
10
|
+
const triggerPersist = reactBinding.usePersist();
|
|
11
|
+
const isMutating = reactBinding.useMutationState();
|
|
12
|
+
const onClick = react.useCallback(() => {
|
|
13
|
+
if (field) {
|
|
14
|
+
entity.disconnectEntityAtField({ field });
|
|
15
|
+
} else {
|
|
16
|
+
const parent = entity.getParent();
|
|
17
|
+
if (!parent) {
|
|
18
|
+
throw new reactBinding.BindingError("Cannot disconnect root entity");
|
|
19
|
+
}
|
|
20
|
+
if (parent instanceof reactBinding.EntityListAccessor) {
|
|
21
|
+
parent.disconnectEntity(entity);
|
|
22
|
+
} else {
|
|
23
|
+
const subTreeNode = entity.environment.getSubTreeNode();
|
|
24
|
+
if (subTreeNode.type !== "entity") {
|
|
25
|
+
throw new reactBinding.BindingError("Cannot disconnect root entity");
|
|
26
|
+
}
|
|
27
|
+
parent.disconnectEntityAtField({ field: subTreeNode.field.name });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (immediatePersist) {
|
|
31
|
+
triggerPersist().then(onPersistSuccess).catch(onPersistError);
|
|
32
|
+
}
|
|
33
|
+
}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError]);
|
|
34
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
|
+
SlotButton,
|
|
36
|
+
{
|
|
37
|
+
onClick,
|
|
38
|
+
disabled: isMutating ? true : void 0,
|
|
39
|
+
...props
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
exports.DisconnectEntityTrigger = DisconnectEntityTrigger;
|
|
44
|
+
//# sourceMappingURL=DisconnectEntityTrigger.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectEntityTrigger.cjs","sources":["../../../../src/components/binding/DisconnectEntityTrigger.tsx"],"sourcesContent":["import { ComponentType, ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { BindingError, EntityListAccessor, ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity, useEntity, useMutationState, usePersist } from '@contember/react-binding'\n\n\nconst SlotButton = Slot as ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>\n\nexport interface DisconnectEntityTriggerProps {\n\timmediatePersist?: true\n\tchildren: ReactNode\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n\tfield?: SugaredRelativeSingleEntity['field']\n}\n\nexport const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => {\n\tconst entity = useEntity()\n\tconst triggerPersist = usePersist()\n\tconst isMutating = useMutationState()\n\tconst onClick = useCallback(() => {\n\t\tif (field) {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t} else {\n\t\t\tconst parent = entity.getParent()\n\t\t\tif (!parent) {\n\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t}\n\t\t\tif (parent instanceof EntityListAccessor) {\n\t\t\t\tparent.disconnectEntity(entity)\n\t\t\t} else {\n\t\t\t\tconst subTreeNode = entity.environment.getSubTreeNode()\n\t\t\t\tif (subTreeNode.type !== 'entity') {\n\t\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t\t}\n\t\t\t\tparent.disconnectEntityAtField({ field: subTreeNode.field.name })\n\t\t\t}\n\t\t}\n\n\t\tif (immediatePersist) {\n\t\t\ttriggerPersist()\n\t\t\t\t.then(onPersistSuccess)\n\t\t\t\t.catch(onPersistError)\n\t\t}\n\t}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError])\n\n\treturn (\n\t\t<SlotButton\n\t\t\tonClick={onClick}\n\t\t\tdisabled={isMutating ? true : undefined}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":["Slot","useEntity","usePersist","useMutationState","useCallback","BindingError","EntityListAccessor","jsx"],"mappings":";;;;;;AAKA,MAAM,aAAaA,UAAAA;AAUN,MAAA,0BAA0B,CAAC,EAAE,kBAAkB,gBAAgB,kBAAkB,OAAO,GAAG,YAA0C;AACjJ,QAAM,SAASC,aAAAA;AACf,QAAM,iBAAiBC,aAAAA;AACvB,QAAM,aAAaC,aAAAA;AACb,QAAA,UAAUC,MAAAA,YAAY,MAAM;AACjC,QAAI,OAAO;AACH,aAAA,wBAAwB,EAAE,MAAA,CAAO;AAAA,IAAA,OAClC;AACA,YAAA,SAAS,OAAO;AACtB,UAAI,CAAC,QAAQ;AACN,cAAA,IAAIC,aAAAA,aAAa,+BAA+B;AAAA,MACvD;AACA,UAAI,kBAAkBC,aAAAA,oBAAoB;AACzC,eAAO,iBAAiB,MAAM;AAAA,MAAA,OACxB;AACA,cAAA,cAAc,OAAO,YAAY,eAAe;AAClD,YAAA,YAAY,SAAS,UAAU;AAC5B,gBAAA,IAAID,aAAAA,aAAa,+BAA+B;AAAA,QACvD;AACA,eAAO,wBAAwB,EAAE,OAAO,YAAY,MAAM,MAAM;AAAA,MACjE;AAAA,IACD;AAEA,QAAI,kBAAkB;AACrB,qBAAA,EACE,KAAK,gBAAgB,EACrB,MAAM,cAAc;AAAA,IACvB;AAAA,EAAA,GACE,CAAC,OAAO,kBAAkB,QAAQ,gBAAgB,kBAAkB,cAAc,CAAC;AAGrF,SAAAE,2BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,UAAU,aAAa,OAAO;AAAA,MAC7B,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
4
|
+
import { useEntity, usePersist, useMutationState, BindingError, EntityListAccessor } from "@contember/react-binding";
|
|
5
|
+
const SlotButton = Slot;
|
|
6
|
+
const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }) => {
|
|
7
|
+
const entity = useEntity();
|
|
8
|
+
const triggerPersist = usePersist();
|
|
9
|
+
const isMutating = useMutationState();
|
|
10
|
+
const onClick = useCallback(() => {
|
|
11
|
+
if (field) {
|
|
12
|
+
entity.disconnectEntityAtField({ field });
|
|
13
|
+
} else {
|
|
14
|
+
const parent = entity.getParent();
|
|
15
|
+
if (!parent) {
|
|
16
|
+
throw new BindingError("Cannot disconnect root entity");
|
|
17
|
+
}
|
|
18
|
+
if (parent instanceof EntityListAccessor) {
|
|
19
|
+
parent.disconnectEntity(entity);
|
|
20
|
+
} else {
|
|
21
|
+
const subTreeNode = entity.environment.getSubTreeNode();
|
|
22
|
+
if (subTreeNode.type !== "entity") {
|
|
23
|
+
throw new BindingError("Cannot disconnect root entity");
|
|
24
|
+
}
|
|
25
|
+
parent.disconnectEntityAtField({ field: subTreeNode.field.name });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (immediatePersist) {
|
|
29
|
+
triggerPersist().then(onPersistSuccess).catch(onPersistError);
|
|
30
|
+
}
|
|
31
|
+
}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError]);
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
SlotButton,
|
|
34
|
+
{
|
|
35
|
+
onClick,
|
|
36
|
+
disabled: isMutating ? true : void 0,
|
|
37
|
+
...props
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
DisconnectEntityTrigger
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=DisconnectEntityTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectEntityTrigger.js","sources":["../../../../src/components/binding/DisconnectEntityTrigger.tsx"],"sourcesContent":["import { ComponentType, ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { BindingError, EntityListAccessor, ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity, useEntity, useMutationState, usePersist } from '@contember/react-binding'\n\n\nconst SlotButton = Slot as ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>\n\nexport interface DisconnectEntityTriggerProps {\n\timmediatePersist?: true\n\tchildren: ReactNode\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n\tfield?: SugaredRelativeSingleEntity['field']\n}\n\nexport const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => {\n\tconst entity = useEntity()\n\tconst triggerPersist = usePersist()\n\tconst isMutating = useMutationState()\n\tconst onClick = useCallback(() => {\n\t\tif (field) {\n\t\t\tentity.disconnectEntityAtField({ field })\n\t\t} else {\n\t\t\tconst parent = entity.getParent()\n\t\t\tif (!parent) {\n\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t}\n\t\t\tif (parent instanceof EntityListAccessor) {\n\t\t\t\tparent.disconnectEntity(entity)\n\t\t\t} else {\n\t\t\t\tconst subTreeNode = entity.environment.getSubTreeNode()\n\t\t\t\tif (subTreeNode.type !== 'entity') {\n\t\t\t\t\tthrow new BindingError('Cannot disconnect root entity')\n\t\t\t\t}\n\t\t\t\tparent.disconnectEntityAtField({ field: subTreeNode.field.name })\n\t\t\t}\n\t\t}\n\n\t\tif (immediatePersist) {\n\t\t\ttriggerPersist()\n\t\t\t\t.then(onPersistSuccess)\n\t\t\t\t.catch(onPersistError)\n\t\t}\n\t}, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError])\n\n\treturn (\n\t\t<SlotButton\n\t\t\tonClick={onClick}\n\t\t\tdisabled={isMutating ? true : undefined}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,aAAa;AAUN,MAAA,0BAA0B,CAAC,EAAE,kBAAkB,gBAAgB,kBAAkB,OAAO,GAAG,YAA0C;AACjJ,QAAM,SAAS;AACf,QAAM,iBAAiB;AACvB,QAAM,aAAa;AACb,QAAA,UAAU,YAAY,MAAM;AACjC,QAAI,OAAO;AACH,aAAA,wBAAwB,EAAE,MAAA,CAAO;AAAA,IAAA,OAClC;AACA,YAAA,SAAS,OAAO;AACtB,UAAI,CAAC,QAAQ;AACN,cAAA,IAAI,aAAa,+BAA+B;AAAA,MACvD;AACA,UAAI,kBAAkB,oBAAoB;AACzC,eAAO,iBAAiB,MAAM;AAAA,MAAA,OACxB;AACA,cAAA,cAAc,OAAO,YAAY,eAAe;AAClD,YAAA,YAAY,SAAS,UAAU;AAC5B,gBAAA,IAAI,aAAa,+BAA+B;AAAA,QACvD;AACA,eAAO,wBAAwB,EAAE,OAAO,YAAY,MAAM,MAAM;AAAA,MACjE;AAAA,IACD;AAEA,QAAI,kBAAkB;AACrB,qBAAA,EACE,KAAK,gBAAgB,EACrB,MAAM,cAAc;AAAA,IACvB;AAAA,EAAA,GACE,CAAC,OAAO,kBAAkB,QAAQ,gBAAgB,kBAAkB,cAAc,CAAC;AAGrF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,UAAU,aAAa,OAAO;AAAA,MAC7B,GAAG;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -3,17 +3,22 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const reactRouting = require("@contember/react-routing");
|
|
4
4
|
const reactBinding = require("@contember/react-binding");
|
|
5
5
|
const reactIdentity = require("@contember/react-identity");
|
|
6
|
+
const reactDevbar = require("@contember/react-devbar");
|
|
6
7
|
const ApplicationEntrypoint = require("./bootstrap/ApplicationEntrypoint.cjs");
|
|
7
|
-
const runReactApp = require("./bootstrap/runReactApp.cjs");
|
|
8
8
|
const ClearFieldTrigger = require("./components/binding/ClearFieldTrigger.cjs");
|
|
9
9
|
const DeleteEntityTrigger = require("./components/binding/DeleteEntityTrigger.cjs");
|
|
10
|
+
const DisconnectEntityTrigger = require("./components/binding/DisconnectEntityTrigger.cjs");
|
|
10
11
|
const PersistTrigger = require("./components/binding/PersistTrigger.cjs");
|
|
11
12
|
const EntityBeforePersist = require("./components/binding/EntityBeforePersist.cjs");
|
|
12
13
|
const RedirectOnPersist = require("./components/binding/RedirectOnPersist.cjs");
|
|
14
|
+
Object.defineProperty(exports, "createErrorHandler", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: () => reactDevbar.createErrorHandler
|
|
17
|
+
});
|
|
13
18
|
exports.ApplicationEntrypoint = ApplicationEntrypoint.ApplicationEntrypoint;
|
|
14
|
-
exports.runReactApp = runReactApp.runReactApp;
|
|
15
19
|
exports.ClearFieldTrigger = ClearFieldTrigger.ClearFieldTrigger;
|
|
16
20
|
exports.DeleteEntityTrigger = DeleteEntityTrigger.DeleteEntityTrigger;
|
|
21
|
+
exports.DisconnectEntityTrigger = DisconnectEntityTrigger.DisconnectEntityTrigger;
|
|
17
22
|
exports.PersistTrigger = PersistTrigger.PersistTrigger;
|
|
18
23
|
exports.EntityBeforePersist = EntityBeforePersist.EntityBeforePersist;
|
|
19
24
|
exports.RedirectOnPersist = RedirectOnPersist.RedirectOnPersist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/production/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from "@contember/react-routing";
|
|
2
2
|
export * from "@contember/react-binding";
|
|
3
3
|
export * from "@contember/react-identity";
|
|
4
|
+
import { createErrorHandler } from "@contember/react-devbar";
|
|
4
5
|
import { ApplicationEntrypoint } from "./bootstrap/ApplicationEntrypoint.js";
|
|
5
|
-
import { runReactApp } from "./bootstrap/runReactApp.js";
|
|
6
6
|
import { ClearFieldTrigger } from "./components/binding/ClearFieldTrigger.js";
|
|
7
7
|
import { DeleteEntityTrigger } from "./components/binding/DeleteEntityTrigger.js";
|
|
8
|
+
import { DisconnectEntityTrigger } from "./components/binding/DisconnectEntityTrigger.js";
|
|
8
9
|
import { PersistTrigger } from "./components/binding/PersistTrigger.js";
|
|
9
10
|
import { EntityBeforePersist } from "./components/binding/EntityBeforePersist.js";
|
|
10
11
|
import { RedirectOnPersist } from "./components/binding/RedirectOnPersist.js";
|
|
@@ -12,9 +13,10 @@ export {
|
|
|
12
13
|
ApplicationEntrypoint,
|
|
13
14
|
ClearFieldTrigger,
|
|
14
15
|
DeleteEntityTrigger,
|
|
16
|
+
DisconnectEntityTrigger,
|
|
15
17
|
EntityBeforePersist,
|
|
16
18
|
PersistTrigger,
|
|
17
19
|
RedirectOnPersist,
|
|
18
|
-
|
|
20
|
+
createErrorHandler
|
|
19
21
|
};
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity } from '@contember/react-binding';
|
|
3
|
+
export interface DisconnectEntityTriggerProps {
|
|
4
|
+
immediatePersist?: true;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
onPersistSuccess?: (result: SuccessfulPersistResult) => void;
|
|
7
|
+
onPersistError?: (result: ErrorPersistResult) => void;
|
|
8
|
+
field?: SugaredRelativeSingleEntity['field'];
|
|
9
|
+
}
|
|
10
|
+
export declare const DisconnectEntityTrigger: ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=DisconnectEntityTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisconnectEntityTrigger.d.ts","sourceRoot":"","sources":["../../../../src/components/binding/DisconnectEntityTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAe,MAAM,OAAO,CAAA;AAE7D,OAAO,EAAoC,kBAAkB,EAAE,uBAAuB,EAAE,2BAA2B,EAA2C,MAAM,0BAA0B,CAAA;AAK9L,MAAM,WAAW,4BAA4B;IAC5C,gBAAgB,CAAC,EAAE,IAAI,CAAA;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC5D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;IACrD,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAA;CAC5C;AAED,eAAO,MAAM,uBAAuB,4EAA6E,4BAA4B,4CAqC5I,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/binding/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/binding/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,OAAO,EACN,kBAAkB,GAClB,MAAM,yBAAyB,CAAA"}
|