@contember/interface 2.0.0-alpha.14 → 2.0.0-alpha.16

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.
Files changed (30) hide show
  1. package/dist/development/index.cjs +2 -0
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +2 -0
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/bootstrap/ApplicationEntrypoint.cjs.map +1 -1
  6. package/dist/development/src/bootstrap/ApplicationEntrypoint.js.map +1 -1
  7. package/dist/development/src/hooks/useBlockNavigationOnDirtyState.cjs +36 -0
  8. package/dist/development/src/hooks/useBlockNavigationOnDirtyState.cjs.map +1 -0
  9. package/dist/development/src/hooks/useBlockNavigationOnDirtyState.js +36 -0
  10. package/dist/development/src/hooks/useBlockNavigationOnDirtyState.js.map +1 -0
  11. package/dist/production/index.cjs +2 -0
  12. package/dist/production/index.cjs.map +1 -1
  13. package/dist/production/index.js +2 -0
  14. package/dist/production/index.js.map +1 -1
  15. package/dist/production/src/bootstrap/ApplicationEntrypoint.cjs.map +1 -1
  16. package/dist/production/src/bootstrap/ApplicationEntrypoint.js.map +1 -1
  17. package/dist/production/src/hooks/useBlockNavigationOnDirtyState.cjs +36 -0
  18. package/dist/production/src/hooks/useBlockNavigationOnDirtyState.cjs.map +1 -0
  19. package/dist/production/src/hooks/useBlockNavigationOnDirtyState.js +36 -0
  20. package/dist/production/src/hooks/useBlockNavigationOnDirtyState.js.map +1 -0
  21. package/dist/types/bootstrap/ApplicationEntrypoint.d.ts.map +1 -1
  22. package/dist/types/hooks/index.d.ts +1 -0
  23. package/dist/types/hooks/index.d.ts.map +1 -1
  24. package/dist/types/hooks/useBlockNavigationOnDirtyState.d.ts +7 -0
  25. package/dist/types/hooks/useBlockNavigationOnDirtyState.d.ts.map +1 -0
  26. package/dist/types/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +9 -9
  28. package/src/bootstrap/ApplicationEntrypoint.tsx +1 -1
  29. package/src/hooks/index.ts +1 -0
  30. package/src/hooks/useBlockNavigationOnDirtyState.ts +40 -0
@@ -12,6 +12,7 @@ const PersistTrigger = require("./src/components/binding/PersistTrigger.cjs");
12
12
  const EntityBeforePersist = require("./src/components/binding/EntityBeforePersist.cjs");
13
13
  const RedirectOnPersist = require("./src/components/binding/RedirectOnPersist.cjs");
14
14
  const useIsApplicationOutdated = require("./src/hooks/useIsApplicationOutdated.cjs");
15
+ const useBlockNavigationOnDirtyState = require("./src/hooks/useBlockNavigationOnDirtyState.cjs");
15
16
  Object.defineProperty(exports, "createErrorHandler", {
16
17
  enumerable: true,
17
18
  get: () => reactDevbar.createErrorHandler
@@ -24,6 +25,7 @@ exports.PersistTrigger = PersistTrigger.PersistTrigger;
24
25
  exports.EntityBeforePersist = EntityBeforePersist.EntityBeforePersist;
25
26
  exports.RedirectOnPersist = RedirectOnPersist.RedirectOnPersist;
26
27
  exports.useIsApplicationOutdated = useIsApplicationOutdated.useIsApplicationOutdated;
28
+ exports.useBlockNavigationOnDirtyState = useBlockNavigationOnDirtyState.useBlockNavigationOnDirtyState;
27
29
  Object.keys(reactRouting).forEach((k) => {
28
30
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
29
31
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,6 +10,7 @@ import { PersistTrigger } from "./src/components/binding/PersistTrigger.js";
10
10
  import { EntityBeforePersist } from "./src/components/binding/EntityBeforePersist.js";
11
11
  import { RedirectOnPersist } from "./src/components/binding/RedirectOnPersist.js";
12
12
  import { useIsApplicationOutdated } from "./src/hooks/useIsApplicationOutdated.js";
13
+ import { useBlockNavigationOnDirtyState } from "./src/hooks/useBlockNavigationOnDirtyState.js";
13
14
  export {
14
15
  ApplicationEntrypoint,
15
16
  ClearFieldTrigger,
@@ -19,6 +20,7 @@ export {
19
20
  PersistTrigger,
20
21
  RedirectOnPersist,
21
22
  createErrorHandler,
23
+ useBlockNavigationOnDirtyState,
22
24
  useIsApplicationOutdated
23
25
  };
24
26
  //# 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":"ApplicationEntrypoint.cjs","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RequestProvider, RouteMap, RoutingContext, RoutingContextValue, RoutingProvider, SelectedDimension } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["Environment","jsxDEV","EnvironmentContext","RoutingProvider","ContemberClient","EnvironmentExtensionProvider","projectEnvironmentExtension","DataViewPageNameKeyProvider","IdentityProvider","IdentityEnvironmentProvider","this"],"mappings":";;;;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAeA,aAAA,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAAC,8BAAA,OAACC,gCAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAAD,8BAAAA,OAACE,aAAAA,iBAAiB,EAAA,GAAG,SACpB,UAAAF,8BAAA;AAAA,IAACG,YAAA;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,UAACH,8BAAA,OAAAI,2CAAA,EAA6B,WAAWC,cAAA,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAAL,8BAAA,OAACM,2DACA,UAACN,8BAAA,OAAAO,cAAA,kBAAA,EACA,UAACP,8BAAA,OAAAQ,cAAA,6BAAA,EACC,gBAAM,SADR,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAC,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAQA,GAAAA,MAAA;AAAA,IAAA;AAAA,IAfD;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAA;AAAAA,EAAA,KADD,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAkBA,EAnBD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAoBA,GAAAA,MAAA;AAEF;;"}
1
+ {"version":3,"file":"ApplicationEntrypoint.cjs","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RouteMap, RoutingContextValue, RoutingProvider } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["Environment","jsxDEV","EnvironmentContext","RoutingProvider","ContemberClient","EnvironmentExtensionProvider","projectEnvironmentExtension","DataViewPageNameKeyProvider","IdentityProvider","IdentityEnvironmentProvider","this"],"mappings":";;;;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAeA,aAAA,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAAC,8BAAA,OAACC,gCAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAAD,8BAAAA,OAACE,aAAAA,iBAAiB,EAAA,GAAG,SACpB,UAAAF,8BAAA;AAAA,IAACG,YAAA;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,UAACH,8BAAA,OAAAI,2CAAA,EAA6B,WAAWC,cAAA,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAAL,8BAAA,OAACM,2DACA,UAACN,8BAAA,OAAAO,cAAA,kBAAA,EACA,UAACP,8BAAA,OAAAQ,cAAA,6BAAA,EACC,gBAAM,SADR,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAC,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAQA,GAAAA,MAAA;AAAA,IAAA;AAAA,IAfD;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAA;AAAAA,EAAA,KADD,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAkBA,EAnBD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAoBA,GAAAA,MAAA;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationEntrypoint.js","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RequestProvider, RouteMap, RoutingContext, RoutingContextValue, RoutingProvider, SelectedDimension } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["this"],"mappings":";;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAe,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAA,uBAAC,mBAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAA,uBAAC,iBAAiB,EAAA,GAAG,SACpB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,UAAC,uBAAA,8BAAA,EAA6B,WAAW,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAA,uBAAC,+BACA,UAAC,uBAAA,kBAAA,EACA,UAAC,uBAAA,6BAAA,EACC,gBAAM,SADR,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAQA,GAAAA,MAAA;AAAA,IAAA;AAAA,IAfD;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAA;AAAAA,EAAA,KADD,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAkBA,EAnBD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAoBA,GAAAA,MAAA;AAEF;"}
1
+ {"version":3,"file":"ApplicationEntrypoint.js","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RouteMap, RoutingContextValue, RoutingProvider } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["this"],"mappings":";;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAe,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAA,uBAAC,mBAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAA,uBAAC,iBAAiB,EAAA,GAAG,SACpB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,UAAC,uBAAA,8BAAA,EAA6B,WAAW,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAA,uBAAC,+BACA,UAAC,uBAAA,kBAAA,EACA,UAAC,uBAAA,6BAAA,EACC,gBAAM,SADR,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAQA,GAAAA,MAAA;AAAA,IAAA;AAAA,IAfD;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAAA;AAAAA,EAAA,KADD,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAkBA,EAnBD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAoBA,GAAAA,MAAA;AAEF;"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const React = require("react");
5
+ const reactRouting = require("@contember/react-routing");
6
+ const useBlockNavigationOnDirtyState = (handler, options) => {
7
+ const isDirty = reactBinding.useDirtinessState();
8
+ const isDirtyRef = React.useRef(isDirty);
9
+ isDirtyRef.current = isDirty;
10
+ const isMutating = reactBinding.useMutationState();
11
+ const isMutatingRef = React.useRef(isMutating);
12
+ isMutatingRef.current = isMutating;
13
+ const persist = reactBinding.usePersist();
14
+ reactRouting.useRegisterRequestChangeListener(React.useCallback(async (event) => {
15
+ if (!isDirtyRef.current || isMutatingRef.current) {
16
+ return;
17
+ }
18
+ const result = await handler();
19
+ if (result === "cancel") {
20
+ event.abortNavigation();
21
+ return;
22
+ }
23
+ if (result === "save") {
24
+ try {
25
+ const result2 = await persist();
26
+ options?.onPersistSuccess?.(result2);
27
+ } catch (e) {
28
+ options?.onPersistError?.(e);
29
+ event.abortNavigation();
30
+ return;
31
+ }
32
+ }
33
+ }, [handler, options, persist]));
34
+ };
35
+ exports.useBlockNavigationOnDirtyState = useBlockNavigationOnDirtyState;
36
+ //# sourceMappingURL=useBlockNavigationOnDirtyState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockNavigationOnDirtyState.cjs","sources":["../../../../../packages/interface/src/hooks/useBlockNavigationOnDirtyState.ts"],"sourcesContent":["import { ErrorPersistResult, SuccessfulPersistResult, useDirtinessState, useMutationState, usePersist } from '@contember/react-binding'\nimport { useCallback, useRef } from 'react'\nimport { useRegisterRequestChangeListener } from '@contember/react-routing'\n\nexport type BlockNavigationOnDirtyStateResult = 'save' | 'discard' | 'cancel'\n\nexport const useBlockNavigationOnDirtyState = (handler: () => Promise<BlockNavigationOnDirtyStateResult>, options?: {\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n}) => {\n\tconst isDirty = useDirtinessState()\n\tconst isDirtyRef = useRef(isDirty)\n\tisDirtyRef.current = isDirty\n\tconst isMutating = useMutationState()\n\tconst isMutatingRef = useRef(isMutating)\n\tisMutatingRef.current = isMutating\n\tconst persist = usePersist()\n\n\tuseRegisterRequestChangeListener(useCallback(async event => {\n\t\tif (!isDirtyRef.current || isMutatingRef.current) {\n\t\t\treturn\n\t\t}\n\t\tconst result = await handler()\n\t\tif (result === 'cancel') {\n\t\t\tevent.abortNavigation()\n\t\t\treturn\n\t\t}\n\n\t\tif (result === 'save') {\n\t\t\ttry {\n\t\t\t\tconst result = await persist()\n\t\t\t\toptions?.onPersistSuccess?.(result)\n\t\t\t} catch (e: any) {\n\t\t\t\toptions?.onPersistError?.(e)\n\t\t\t\tevent.abortNavigation()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}, [handler, options, persist]))\n}\n"],"names":["useDirtinessState","useRef","useMutationState","usePersist","useRegisterRequestChangeListener","useCallback","result"],"mappings":";;;;;AAMa,MAAA,iCAAiC,CAAC,SAA2D,YAGpG;AACL,QAAM,UAAUA,aAAAA;AACV,QAAA,aAAaC,aAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,aAAaC,aAAAA;AACb,QAAA,gBAAgBD,aAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,UAAUE,aAAAA;AAEiBC,gDAAAC,MAAAA,YAAY,OAAM,UAAS;AAC3D,QAAI,CAAC,WAAW,WAAW,cAAc,SAAS;AACjD;AAAA,IACD;AACM,UAAA,SAAS,MAAM;AACrB,QAAI,WAAW,UAAU;AACxB,YAAM,gBAAgB;AACtB;AAAA,IACD;AAEA,QAAI,WAAW,QAAQ;AAClB,UAAA;AACGC,cAAAA,UAAS,MAAM;AACrB,iBAAS,mBAAmBA,OAAM;AAAA,eAC1B,GAAQ;AAChB,iBAAS,iBAAiB,CAAC;AAC3B,cAAM,gBAAgB;AACtB;AAAA,MACD;AAAA,IACD;AAAA,KACE,CAAC,SAAS,SAAS,OAAO,CAAC,CAAC;AAChC;;"}
@@ -0,0 +1,36 @@
1
+ import { useDirtinessState, useMutationState, usePersist } from "@contember/react-binding";
2
+ import { useRef, useCallback } from "react";
3
+ import { useRegisterRequestChangeListener } from "@contember/react-routing";
4
+ const useBlockNavigationOnDirtyState = (handler, options) => {
5
+ const isDirty = useDirtinessState();
6
+ const isDirtyRef = useRef(isDirty);
7
+ isDirtyRef.current = isDirty;
8
+ const isMutating = useMutationState();
9
+ const isMutatingRef = useRef(isMutating);
10
+ isMutatingRef.current = isMutating;
11
+ const persist = usePersist();
12
+ useRegisterRequestChangeListener(useCallback(async (event) => {
13
+ if (!isDirtyRef.current || isMutatingRef.current) {
14
+ return;
15
+ }
16
+ const result = await handler();
17
+ if (result === "cancel") {
18
+ event.abortNavigation();
19
+ return;
20
+ }
21
+ if (result === "save") {
22
+ try {
23
+ const result2 = await persist();
24
+ options?.onPersistSuccess?.(result2);
25
+ } catch (e) {
26
+ options?.onPersistError?.(e);
27
+ event.abortNavigation();
28
+ return;
29
+ }
30
+ }
31
+ }, [handler, options, persist]));
32
+ };
33
+ export {
34
+ useBlockNavigationOnDirtyState
35
+ };
36
+ //# sourceMappingURL=useBlockNavigationOnDirtyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockNavigationOnDirtyState.js","sources":["../../../../../packages/interface/src/hooks/useBlockNavigationOnDirtyState.ts"],"sourcesContent":["import { ErrorPersistResult, SuccessfulPersistResult, useDirtinessState, useMutationState, usePersist } from '@contember/react-binding'\nimport { useCallback, useRef } from 'react'\nimport { useRegisterRequestChangeListener } from '@contember/react-routing'\n\nexport type BlockNavigationOnDirtyStateResult = 'save' | 'discard' | 'cancel'\n\nexport const useBlockNavigationOnDirtyState = (handler: () => Promise<BlockNavigationOnDirtyStateResult>, options?: {\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n}) => {\n\tconst isDirty = useDirtinessState()\n\tconst isDirtyRef = useRef(isDirty)\n\tisDirtyRef.current = isDirty\n\tconst isMutating = useMutationState()\n\tconst isMutatingRef = useRef(isMutating)\n\tisMutatingRef.current = isMutating\n\tconst persist = usePersist()\n\n\tuseRegisterRequestChangeListener(useCallback(async event => {\n\t\tif (!isDirtyRef.current || isMutatingRef.current) {\n\t\t\treturn\n\t\t}\n\t\tconst result = await handler()\n\t\tif (result === 'cancel') {\n\t\t\tevent.abortNavigation()\n\t\t\treturn\n\t\t}\n\n\t\tif (result === 'save') {\n\t\t\ttry {\n\t\t\t\tconst result = await persist()\n\t\t\t\toptions?.onPersistSuccess?.(result)\n\t\t\t} catch (e: any) {\n\t\t\t\toptions?.onPersistError?.(e)\n\t\t\t\tevent.abortNavigation()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}, [handler, options, persist]))\n}\n"],"names":["result"],"mappings":";;;AAMa,MAAA,iCAAiC,CAAC,SAA2D,YAGpG;AACL,QAAM,UAAU;AACV,QAAA,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,aAAa;AACb,QAAA,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,UAAU;AAEiB,mCAAA,YAAY,OAAM,UAAS;AAC3D,QAAI,CAAC,WAAW,WAAW,cAAc,SAAS;AACjD;AAAA,IACD;AACM,UAAA,SAAS,MAAM;AACrB,QAAI,WAAW,UAAU;AACxB,YAAM,gBAAgB;AACtB;AAAA,IACD;AAEA,QAAI,WAAW,QAAQ;AAClB,UAAA;AACGA,cAAAA,UAAS,MAAM;AACrB,iBAAS,mBAAmBA,OAAM;AAAA,eAC1B,GAAQ;AAChB,iBAAS,iBAAiB,CAAC;AAC3B,cAAM,gBAAgB;AACtB;AAAA,MACD;AAAA,IACD;AAAA,KACE,CAAC,SAAS,SAAS,OAAO,CAAC,CAAC;AAChC;"}
@@ -12,6 +12,7 @@ const PersistTrigger = require("./src/components/binding/PersistTrigger.cjs");
12
12
  const EntityBeforePersist = require("./src/components/binding/EntityBeforePersist.cjs");
13
13
  const RedirectOnPersist = require("./src/components/binding/RedirectOnPersist.cjs");
14
14
  const useIsApplicationOutdated = require("./src/hooks/useIsApplicationOutdated.cjs");
15
+ const useBlockNavigationOnDirtyState = require("./src/hooks/useBlockNavigationOnDirtyState.cjs");
15
16
  Object.defineProperty(exports, "createErrorHandler", {
16
17
  enumerable: true,
17
18
  get: () => reactDevbar.createErrorHandler
@@ -24,6 +25,7 @@ exports.PersistTrigger = PersistTrigger.PersistTrigger;
24
25
  exports.EntityBeforePersist = EntityBeforePersist.EntityBeforePersist;
25
26
  exports.RedirectOnPersist = RedirectOnPersist.RedirectOnPersist;
26
27
  exports.useIsApplicationOutdated = useIsApplicationOutdated.useIsApplicationOutdated;
28
+ exports.useBlockNavigationOnDirtyState = useBlockNavigationOnDirtyState.useBlockNavigationOnDirtyState;
27
29
  Object.keys(reactRouting).forEach((k) => {
28
30
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
29
31
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,6 +10,7 @@ import { PersistTrigger } from "./src/components/binding/PersistTrigger.js";
10
10
  import { EntityBeforePersist } from "./src/components/binding/EntityBeforePersist.js";
11
11
  import { RedirectOnPersist } from "./src/components/binding/RedirectOnPersist.js";
12
12
  import { useIsApplicationOutdated } from "./src/hooks/useIsApplicationOutdated.js";
13
+ import { useBlockNavigationOnDirtyState } from "./src/hooks/useBlockNavigationOnDirtyState.js";
13
14
  export {
14
15
  ApplicationEntrypoint,
15
16
  ClearFieldTrigger,
@@ -19,6 +20,7 @@ export {
19
20
  PersistTrigger,
20
21
  RedirectOnPersist,
21
22
  createErrorHandler,
23
+ useBlockNavigationOnDirtyState,
22
24
  useIsApplicationOutdated
23
25
  };
24
26
  //# 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":"ApplicationEntrypoint.cjs","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RequestProvider, RouteMap, RoutingContext, RoutingContextValue, RoutingProvider, SelectedDimension } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["Environment","jsx","EnvironmentContext","RoutingProvider","ContemberClient","EnvironmentExtensionProvider","projectEnvironmentExtension","DataViewPageNameKeyProvider","IdentityProvider","IdentityEnvironmentProvider"],"mappings":";;;;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAeA,aAAA,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAAC,2BAAA,IAACC,gCAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAAD,2BAAAA,IAACE,aAAAA,iBAAiB,EAAA,GAAG,SACpB,UAAAF,2BAAA;AAAA,IAACG,YAAA;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,yCAACC,aAAAA,8BAA6B,EAAA,WAAWC,cAAAA,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAAL,2BAAAA,IAACM,4BAAAA,6BACA,EAAA,UAAAN,2BAAAA,IAACO,cAAAA,oBACA,UAACP,2BAAAA,IAAAQ,cAAAA,6BAAA,EACC,gBAAM,SACR,CAAA,GACD,GACD,EACD,CAAA;AAAA,IAAA;AAAA,EAAA,EAEF,CAAA,EACD,CAAA;AAEF;;"}
1
+ {"version":3,"file":"ApplicationEntrypoint.cjs","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RouteMap, RoutingContextValue, RoutingProvider } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":["Environment","jsx","EnvironmentContext","RoutingProvider","ContemberClient","EnvironmentExtensionProvider","projectEnvironmentExtension","DataViewPageNameKeyProvider","IdentityProvider","IdentityEnvironmentProvider"],"mappings":";;;;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAeA,aAAA,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAAC,2BAAA,IAACC,gCAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAAD,2BAAAA,IAACE,aAAAA,iBAAiB,EAAA,GAAG,SACpB,UAAAF,2BAAA;AAAA,IAACG,YAAA;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,yCAACC,aAAAA,8BAA6B,EAAA,WAAWC,cAAAA,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAAL,2BAAAA,IAACM,4BAAAA,6BACA,EAAA,UAAAN,2BAAAA,IAACO,cAAAA,oBACA,UAACP,2BAAAA,IAAAQ,cAAAA,6BAAA,EACC,gBAAM,SACR,CAAA,GACD,GACD,EACD,CAAA;AAAA,IAAA;AAAA,EAAA,EAEF,CAAA,EACD,CAAA;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationEntrypoint.js","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RequestProvider, RouteMap, RoutingContext, RoutingContextValue, RoutingProvider, SelectedDimension } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":[],"mappings":";;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAe,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAA,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAA,oBAAC,iBAAiB,EAAA,GAAG,SACpB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,8BAAC,8BAA6B,EAAA,WAAW,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAA,oBAAC,6BACA,EAAA,UAAA,oBAAC,oBACA,UAAC,oBAAA,6BAAA,EACC,gBAAM,SACR,CAAA,GACD,GACD,EACD,CAAA;AAAA,IAAA;AAAA,EAAA,EAEF,CAAA,EACD,CAAA;AAEF;"}
1
+ {"version":3,"file":"ApplicationEntrypoint.js","sources":["../../../../../packages/interface/src/bootstrap/ApplicationEntrypoint.tsx"],"sourcesContent":["import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { ContemberClient, ContemberClientProps } from '@contember/react-client'\nimport { ReactNode } from 'react'\nimport { RouteMap, RoutingContextValue, RoutingProvider } from '@contember/react-routing'\nimport { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'\nimport { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'\n\nexport interface ApplicationEntrypointProps extends ContemberClientProps {\n\tbasePath: string\n\tsessionToken?: string\n\troutes?: RouteMap\n\tchildren: ReactNode\n\tenvironment?: Environment\n}\n\nconst validateProps = (props: Partial<ApplicationEntrypointProps>) => {\n\tif (typeof props.apiBaseUrl !== 'string') {\n\t\tthrow new Error(`The ENV variables haven't been set. Check your \\`.env.development.local\\` file.`) // TODO: better message\n\t}\n}\n\n/**\n * @group Entrypoints\n */\nexport const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {\n\tvalidateProps(props)\n\n\tconst rootEnv = props.environment ?? Environment.create()\n\n\tconst routing: RoutingContextValue = {\n\t\tbasePath: props.basePath,\n\t\troutes: props.routes ?? { index: { path: '/' } },\n\t\tdefaultDimensions: rootEnv.getAllDimensions(),\n\t}\n\n\n\treturn (\n\t\t<EnvironmentContext.Provider value={rootEnv}>\n\t\t\t<RoutingProvider {...routing}>\n\t\t\t\t<ContemberClient\n\t\t\t\t\tapiBaseUrl={props.apiBaseUrl}\n\t\t\t\t\tsessionToken={props.sessionToken}\n\t\t\t\t\tloginToken={props.loginToken}\n\t\t\t\t\tproject={props.project}\n\t\t\t\t\tstage={props.stage}\n\t\t\t\t>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>\n\t\t\t\t\t\t<DataViewPageNameKeyProvider>\n\t\t\t\t\t\t\t<IdentityProvider>\n\t\t\t\t\t\t\t\t<IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t\t\t{props.children}\n\t\t\t\t\t\t\t\t</IdentityEnvironmentProvider>\n\t\t\t\t\t\t\t</IdentityProvider>\n\t\t\t\t\t\t</DataViewPageNameKeyProvider>\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</ContemberClient>\n\t\t\t</RoutingProvider>\n\t\t</EnvironmentContext.Provider>\n\t)\n}\n"],"names":[],"mappings":";;;;;;AAeA,MAAM,gBAAgB,CAAC,UAA+C;AACjE,MAAA,OAAO,MAAM,eAAe,UAAU;AACnC,UAAA,IAAI,MAAM,iFAAiF;AAAA,EAClG;AACD;AAKa,MAAA,wBAAwB,CAAC,UAAsC;AAC3E,gBAAc,KAAK;AAEnB,QAAM,UAAU,MAAM,eAAe,YAAY,OAAO;AAExD,QAAM,UAA+B;AAAA,IACpC,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM,UAAU,EAAE,OAAO,EAAE,MAAM,MAAM;AAAA,IAC/C,mBAAmB,QAAQ,iBAAiB;AAAA,EAAA;AAK5C,SAAA,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,SACnC,UAAA,oBAAC,iBAAiB,EAAA,GAAG,SACpB,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,cAAc,MAAM;AAAA,MACpB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MAEb,8BAAC,8BAA6B,EAAA,WAAW,6BAA6B,OAAO,MAAM,WAAW,MAC7F,UAAA,oBAAC,6BACA,EAAA,UAAA,oBAAC,oBACA,UAAC,oBAAA,6BAAA,EACC,gBAAM,SACR,CAAA,GACD,GACD,EACD,CAAA;AAAA,IAAA;AAAA,EAAA,EAEF,CAAA,EACD,CAAA;AAEF;"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const React = require("react");
5
+ const reactRouting = require("@contember/react-routing");
6
+ const useBlockNavigationOnDirtyState = (handler, options) => {
7
+ const isDirty = reactBinding.useDirtinessState();
8
+ const isDirtyRef = React.useRef(isDirty);
9
+ isDirtyRef.current = isDirty;
10
+ const isMutating = reactBinding.useMutationState();
11
+ const isMutatingRef = React.useRef(isMutating);
12
+ isMutatingRef.current = isMutating;
13
+ const persist = reactBinding.usePersist();
14
+ reactRouting.useRegisterRequestChangeListener(React.useCallback(async (event) => {
15
+ if (!isDirtyRef.current || isMutatingRef.current) {
16
+ return;
17
+ }
18
+ const result = await handler();
19
+ if (result === "cancel") {
20
+ event.abortNavigation();
21
+ return;
22
+ }
23
+ if (result === "save") {
24
+ try {
25
+ const result2 = await persist();
26
+ options?.onPersistSuccess?.(result2);
27
+ } catch (e) {
28
+ options?.onPersistError?.(e);
29
+ event.abortNavigation();
30
+ return;
31
+ }
32
+ }
33
+ }, [handler, options, persist]));
34
+ };
35
+ exports.useBlockNavigationOnDirtyState = useBlockNavigationOnDirtyState;
36
+ //# sourceMappingURL=useBlockNavigationOnDirtyState.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockNavigationOnDirtyState.cjs","sources":["../../../../../packages/interface/src/hooks/useBlockNavigationOnDirtyState.ts"],"sourcesContent":["import { ErrorPersistResult, SuccessfulPersistResult, useDirtinessState, useMutationState, usePersist } from '@contember/react-binding'\nimport { useCallback, useRef } from 'react'\nimport { useRegisterRequestChangeListener } from '@contember/react-routing'\n\nexport type BlockNavigationOnDirtyStateResult = 'save' | 'discard' | 'cancel'\n\nexport const useBlockNavigationOnDirtyState = (handler: () => Promise<BlockNavigationOnDirtyStateResult>, options?: {\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n}) => {\n\tconst isDirty = useDirtinessState()\n\tconst isDirtyRef = useRef(isDirty)\n\tisDirtyRef.current = isDirty\n\tconst isMutating = useMutationState()\n\tconst isMutatingRef = useRef(isMutating)\n\tisMutatingRef.current = isMutating\n\tconst persist = usePersist()\n\n\tuseRegisterRequestChangeListener(useCallback(async event => {\n\t\tif (!isDirtyRef.current || isMutatingRef.current) {\n\t\t\treturn\n\t\t}\n\t\tconst result = await handler()\n\t\tif (result === 'cancel') {\n\t\t\tevent.abortNavigation()\n\t\t\treturn\n\t\t}\n\n\t\tif (result === 'save') {\n\t\t\ttry {\n\t\t\t\tconst result = await persist()\n\t\t\t\toptions?.onPersistSuccess?.(result)\n\t\t\t} catch (e: any) {\n\t\t\t\toptions?.onPersistError?.(e)\n\t\t\t\tevent.abortNavigation()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}, [handler, options, persist]))\n}\n"],"names":["useDirtinessState","useRef","useMutationState","usePersist","useRegisterRequestChangeListener","useCallback","result"],"mappings":";;;;;AAMa,MAAA,iCAAiC,CAAC,SAA2D,YAGpG;AACL,QAAM,UAAUA,aAAAA;AACV,QAAA,aAAaC,aAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,aAAaC,aAAAA;AACb,QAAA,gBAAgBD,aAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,UAAUE,aAAAA;AAEiBC,gDAAAC,MAAAA,YAAY,OAAM,UAAS;AAC3D,QAAI,CAAC,WAAW,WAAW,cAAc,SAAS;AACjD;AAAA,IACD;AACM,UAAA,SAAS,MAAM;AACrB,QAAI,WAAW,UAAU;AACxB,YAAM,gBAAgB;AACtB;AAAA,IACD;AAEA,QAAI,WAAW,QAAQ;AAClB,UAAA;AACGC,cAAAA,UAAS,MAAM;AACrB,iBAAS,mBAAmBA,OAAM;AAAA,eAC1B,GAAQ;AAChB,iBAAS,iBAAiB,CAAC;AAC3B,cAAM,gBAAgB;AACtB;AAAA,MACD;AAAA,IACD;AAAA,KACE,CAAC,SAAS,SAAS,OAAO,CAAC,CAAC;AAChC;;"}
@@ -0,0 +1,36 @@
1
+ import { useDirtinessState, useMutationState, usePersist } from "@contember/react-binding";
2
+ import { useRef, useCallback } from "react";
3
+ import { useRegisterRequestChangeListener } from "@contember/react-routing";
4
+ const useBlockNavigationOnDirtyState = (handler, options) => {
5
+ const isDirty = useDirtinessState();
6
+ const isDirtyRef = useRef(isDirty);
7
+ isDirtyRef.current = isDirty;
8
+ const isMutating = useMutationState();
9
+ const isMutatingRef = useRef(isMutating);
10
+ isMutatingRef.current = isMutating;
11
+ const persist = usePersist();
12
+ useRegisterRequestChangeListener(useCallback(async (event) => {
13
+ if (!isDirtyRef.current || isMutatingRef.current) {
14
+ return;
15
+ }
16
+ const result = await handler();
17
+ if (result === "cancel") {
18
+ event.abortNavigation();
19
+ return;
20
+ }
21
+ if (result === "save") {
22
+ try {
23
+ const result2 = await persist();
24
+ options?.onPersistSuccess?.(result2);
25
+ } catch (e) {
26
+ options?.onPersistError?.(e);
27
+ event.abortNavigation();
28
+ return;
29
+ }
30
+ }
31
+ }, [handler, options, persist]));
32
+ };
33
+ export {
34
+ useBlockNavigationOnDirtyState
35
+ };
36
+ //# sourceMappingURL=useBlockNavigationOnDirtyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockNavigationOnDirtyState.js","sources":["../../../../../packages/interface/src/hooks/useBlockNavigationOnDirtyState.ts"],"sourcesContent":["import { ErrorPersistResult, SuccessfulPersistResult, useDirtinessState, useMutationState, usePersist } from '@contember/react-binding'\nimport { useCallback, useRef } from 'react'\nimport { useRegisterRequestChangeListener } from '@contember/react-routing'\n\nexport type BlockNavigationOnDirtyStateResult = 'save' | 'discard' | 'cancel'\n\nexport const useBlockNavigationOnDirtyState = (handler: () => Promise<BlockNavigationOnDirtyStateResult>, options?: {\n\tonPersistSuccess?: (result: SuccessfulPersistResult) => void\n\tonPersistError?: (result: ErrorPersistResult) => void\n}) => {\n\tconst isDirty = useDirtinessState()\n\tconst isDirtyRef = useRef(isDirty)\n\tisDirtyRef.current = isDirty\n\tconst isMutating = useMutationState()\n\tconst isMutatingRef = useRef(isMutating)\n\tisMutatingRef.current = isMutating\n\tconst persist = usePersist()\n\n\tuseRegisterRequestChangeListener(useCallback(async event => {\n\t\tif (!isDirtyRef.current || isMutatingRef.current) {\n\t\t\treturn\n\t\t}\n\t\tconst result = await handler()\n\t\tif (result === 'cancel') {\n\t\t\tevent.abortNavigation()\n\t\t\treturn\n\t\t}\n\n\t\tif (result === 'save') {\n\t\t\ttry {\n\t\t\t\tconst result = await persist()\n\t\t\t\toptions?.onPersistSuccess?.(result)\n\t\t\t} catch (e: any) {\n\t\t\t\toptions?.onPersistError?.(e)\n\t\t\t\tevent.abortNavigation()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}, [handler, options, persist]))\n}\n"],"names":["result"],"mappings":";;;AAMa,MAAA,iCAAiC,CAAC,SAA2D,YAGpG;AACL,QAAM,UAAU;AACV,QAAA,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,aAAa;AACb,QAAA,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,UAAU;AAEiB,mCAAA,YAAY,OAAM,UAAS;AAC3D,QAAI,CAAC,WAAW,WAAW,cAAc,SAAS;AACjD;AAAA,IACD;AACM,UAAA,SAAS,MAAM;AACrB,QAAI,WAAW,UAAU;AACxB,YAAM,gBAAgB;AACtB;AAAA,IACD;AAEA,QAAI,WAAW,QAAQ;AAClB,UAAA;AACGA,cAAAA,UAAS,MAAM;AACrB,iBAAS,mBAAmBA,OAAM;AAAA,eAC1B,GAAQ;AAChB,iBAAS,iBAAiB,CAAC;AAC3B,cAAM,gBAAgB;AACtB;AAAA,MACD;AAAA,IACD;AAAA,KACE,CAAC,SAAS,SAAS,OAAO,CAAC,CAAC;AAChC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationEntrypoint.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/ApplicationEntrypoint.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoD,MAAM,0BAA0B,CAAA;AACxG,OAAO,EAAmB,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAmB,QAAQ,EAA2E,MAAM,0BAA0B,CAAA;AAI7I,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CACzB;AAQD;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAAW,0BAA0B,4CAmCtE,CAAA"}
1
+ {"version":3,"file":"ApplicationEntrypoint.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/ApplicationEntrypoint.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoD,MAAM,0BAA0B,CAAA;AACxG,OAAO,EAAmB,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAwC,MAAM,0BAA0B,CAAA;AAIzF,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;CACzB;AAQD;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAAW,0BAA0B,4CAmCtE,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './useIsApplicationOutdated';
2
+ export * from './useBlockNavigationOnDirtyState';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ErrorPersistResult, SuccessfulPersistResult } from '@contember/react-binding';
2
+ export type BlockNavigationOnDirtyStateResult = 'save' | 'discard' | 'cancel';
3
+ export declare const useBlockNavigationOnDirtyState: (handler: () => Promise<BlockNavigationOnDirtyStateResult>, options?: {
4
+ onPersistSuccess?: (result: SuccessfulPersistResult) => void;
5
+ onPersistError?: (result: ErrorPersistResult) => void;
6
+ }) => void;
7
+ //# sourceMappingURL=useBlockNavigationOnDirtyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockNavigationOnDirtyState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBlockNavigationOnDirtyState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAmD,MAAM,0BAA0B,CAAA;AAIvI,MAAM,MAAM,iCAAiC,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE7E,eAAO,MAAM,8BAA8B,YAAa,MAAM,OAAO,CAAC,iCAAiC,CAAC,YAAY;IACnH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC5D,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACrD,SA8BA,CAAA"}