@webiny/app-headless-cms-workflows 6.3.0-beta.4 → 6.4.0-beta.0

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 (37) hide show
  1. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +24 -37
  2. package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
  3. package/Components/CmsEntriesWorkflowStateList/index.js +0 -2
  4. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js +74 -112
  5. package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +1 -1
  6. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +44 -58
  7. package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
  8. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +21 -33
  9. package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +1 -1
  10. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +18 -33
  11. package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +1 -1
  12. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +17 -31
  13. package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +1 -1
  14. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +18 -33
  15. package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
  16. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +9 -16
  17. package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
  18. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +31 -64
  19. package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
  20. package/Components/ContentEntryForm/ContentEntryWorkflow.js +16 -28
  21. package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +1 -1
  22. package/Components/ContentEntryForm/index.js +0 -2
  23. package/Components/OptionItem/OpenInNewWindow.js +28 -36
  24. package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
  25. package/Routes/CmsWorkflowsEditor.js +18 -27
  26. package/Routes/CmsWorkflowsEditor.js.map +1 -1
  27. package/Routes/index.js +0 -2
  28. package/index.js +3 -4
  29. package/index.js.map +1 -1
  30. package/package.json +10 -10
  31. package/routes.js +17 -18
  32. package/routes.js.map +1 -1
  33. package/utils/appName.js +9 -12
  34. package/utils/appName.js.map +1 -1
  35. package/Components/CmsEntriesWorkflowStateList/index.js.map +0 -1
  36. package/Components/ContentEntryForm/index.js.map +0 -1
  37. package/Routes/index.js.map +0 -1
@@ -1,39 +1,24 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState } from "@webiny/app-workflows";
3
+ import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
4
4
  import { observer } from "mobx-react-lite";
5
- import { WorkflowStateValue } from "@webiny/app-workflows";
6
5
  import { CmsEntryFormPublishButton } from "./CmsEntryFormPublishButton.js";
7
- const {
8
- Actions
9
- } = ContentEntryEditorConfig;
10
- const {
11
- ButtonAction
12
- } = Actions;
13
- const OverrideSaveAndPublishButton = observer(props => {
14
- const {
15
- presenter
16
- } = useWorkflowState();
17
-
18
- /**
19
- * If there is no workflow state or state is approved, we simply render the original element.
20
- * This is to ensure that no button will be shown if workflow state is active.
21
- */
22
- if (props.name !== "publish" || !presenter.vm.workflow) {
23
- return props.children;
24
- } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {
25
- return /*#__PURE__*/React.createElement(CmsEntryFormPublishButton, null);
26
- }
27
- return null;
28
- });
29
- export const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {
30
- return function WorkflowCmsEntryFormSaveAndPublishButton(props) {
31
- return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
32
- element: /*#__PURE__*/React.createElement(OverrideSaveAndPublishButton, {
33
- name: props.name
34
- }, props.element)
35
- }));
36
- };
6
+ const { Actions: Actions } = ContentEntryEditorConfig;
7
+ const { ButtonAction: ButtonAction } = Actions;
8
+ const OverrideSaveAndPublishButton = observer((props)=>{
9
+ const { presenter } = useWorkflowState();
10
+ if ("publish" !== props.name || !presenter.vm.workflow) return props.children;
11
+ if (presenter.vm.state?.state === WorkflowStateValue.approved) return /*#__PURE__*/ react.createElement(CmsEntryFormPublishButton, null);
12
+ return null;
37
13
  });
14
+ const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator((Original)=>function(props) {
15
+ return /*#__PURE__*/ react.createElement(Original, {
16
+ ...props,
17
+ element: /*#__PURE__*/ react.createElement(OverrideSaveAndPublishButton, {
18
+ name: props.name
19
+ }, props.element)
20
+ });
21
+ });
22
+ export { CmsEntryFormSaveAndPublishButton };
38
23
 
39
24
  //# sourceMappingURL=CmsEntryFormSaveAndPublishButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useWorkflowState","observer","WorkflowStateValue","CmsEntryFormPublishButton","Actions","ButtonAction","OverrideSaveAndPublishButton","props","presenter","name","vm","workflow","children","state","approved","createElement","CmsEntryFormSaveAndPublishButton","createDecorator","Original","WorkflowCmsEntryFormSaveAndPublishButton","Object","assign","element"],"sources":["CmsEntryFormSaveAndPublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { CmsEntryFormPublishButton } from \"./CmsEntryFormPublishButton.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveAndPublishButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveAndPublishButton = observer((props: IOverrideSaveAndPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"publish\" || !presenter.vm.workflow) {\n return props.children;\n } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {\n return <CmsEntryFormPublishButton />;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveAndPublishButton(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideSaveAndPublishButton name={props.name}>\n {props.element}\n </OverrideSaveAndPublishButton>\n }\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,yBAAyB;AAElC,MAAM;EAAEC;AAAQ,CAAC,GAAGL,wBAAwB;AAC5C,MAAM;EAAEM;AAAa,CAAC,GAAGD,OAAO;AAOhC,MAAME,4BAA4B,GAAGL,QAAQ,CAAEM,KAAyC,IAAK;EACzF,MAAM;IAAEC;EAAU,CAAC,GAAGR,gBAAgB,CAAC,CAAC;;EAExC;AACJ;AACA;AACA;EACI,IAAIO,KAAK,CAACE,IAAI,KAAK,SAAS,IAAI,CAACD,SAAS,CAACE,EAAE,CAACC,QAAQ,EAAE;IACpD,OAAOJ,KAAK,CAACK,QAAQ;EACzB,CAAC,MAAM,IAAIJ,SAAS,CAACE,EAAE,CAACG,KAAK,EAAEA,KAAK,KAAKX,kBAAkB,CAACY,QAAQ,EAAE;IAClE,oBAAOhB,KAAA,CAAAiB,aAAA,CAACZ,yBAAyB,MAAE,CAAC;EACxC;EACA,OAAO,IAAI;AACf,CAAC,CAAC;AAEF,OAAO,MAAMa,gCAAgC,GAAGX,YAAY,CAACY,eAAe,CAACC,QAAQ,IAAI;EACrF,OAAO,SAASC,wCAAwCA,CAACZ,KAAK,EAAE;IAC5D,oBACIT,KAAA,CAAAiB,aAAA,CAACG,QAAQ,EAAAE,MAAA,CAAAC,MAAA,KACDd,KAAK;MACTe,OAAO,eACHxB,KAAA,CAAAiB,aAAA,CAACT,4BAA4B;QAACG,IAAI,EAAEF,KAAK,CAACE;MAAK,GAC1CF,KAAK,CAACe,OACmB;IACjC,EACJ,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\nimport { WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { CmsEntryFormPublishButton } from \"./CmsEntryFormPublishButton.js\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveAndPublishButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveAndPublishButton = observer((props: IOverrideSaveAndPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"publish\" || !presenter.vm.workflow) {\n return props.children;\n } else if (presenter.vm.state?.state === WorkflowStateValue.approved) {\n return <CmsEntryFormPublishButton />;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveAndPublishButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveAndPublishButton(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideSaveAndPublishButton name={props.name}>\n {props.element}\n </OverrideSaveAndPublishButton>\n }\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","ButtonAction","OverrideSaveAndPublishButton","observer","props","presenter","useWorkflowState","WorkflowStateValue","CmsEntryFormPublishButton","CmsEntryFormSaveAndPublishButton","Original"],"mappings":";;;;;AAOA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGF;AAOzB,MAAMG,+BAA+BC,SAAS,CAACC;IAC3C,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAMtB,IAAIF,AAAe,cAAfA,MAAM,IAAI,IAAkB,CAACC,UAAU,EAAE,CAAC,QAAQ,EAClD,OAAOD,MAAM,QAAQ;IAClB,IAAIC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAUE,mBAAmB,QAAQ,EAChE,OAAO,WAAP,GAAO,oBAACC,2BAAyBA;IAErC,OAAO;AACX;AAEO,MAAMC,mCAAmCR,aAAa,eAAe,CAACS,CAAAA,WAClE,SAAkDN,KAAK;QAC1D,OAAO,WAAP,GACI,oBAACM,UAAAA;YACI,GAAGN,KAAK;YACT,uBACI,oBAACF,8BAA4BA;gBAAC,MAAME,MAAM,IAAI;eACzCA,MAAM,OAAO;;IAKlC"}
@@ -1,37 +1,23 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
3
  import { useWorkflowState } from "@webiny/app-workflows";
4
4
  import { observer } from "mobx-react-lite";
5
- const {
6
- Actions
7
- } = ContentEntryEditorConfig;
8
- const {
9
- ButtonAction
10
- } = Actions;
11
- const OverrideSaveButton = observer(props => {
12
- const {
13
- presenter
14
- } = useWorkflowState();
15
-
16
- /**
17
- * If there is no workflow state or state is approved, we simply render the original element.
18
- * This is to ensure that no button will be shown if workflow state is active.
19
- */
20
- if (props.name !== "save") {
21
- return props.children;
22
- } else if (!presenter.vm.state) {
23
- return props.children;
24
- }
25
- return null;
26
- });
27
- export const CmsEntryFormSaveButton = ButtonAction.createDecorator(Original => {
28
- return function WorkflowCmsEntryFormSaveButton(props) {
29
- return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
30
- element: /*#__PURE__*/React.createElement(OverrideSaveButton, {
31
- name: props.name
32
- }, props.element)
33
- }));
34
- };
5
+ const { Actions: Actions } = ContentEntryEditorConfig;
6
+ const { ButtonAction: ButtonAction } = Actions;
7
+ const OverrideSaveButton = observer((props)=>{
8
+ const { presenter } = useWorkflowState();
9
+ if ("save" !== props.name) return props.children;
10
+ if (!presenter.vm.state) return props.children;
11
+ return null;
35
12
  });
13
+ const CmsEntryFormSaveButton = ButtonAction.createDecorator((Original)=>function(props) {
14
+ return /*#__PURE__*/ react.createElement(Original, {
15
+ ...props,
16
+ element: /*#__PURE__*/ react.createElement(OverrideSaveButton, {
17
+ name: props.name
18
+ }, props.element)
19
+ });
20
+ });
21
+ export { CmsEntryFormSaveButton };
36
22
 
37
23
  //# sourceMappingURL=CmsEntryFormSaveButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useWorkflowState","observer","Actions","ButtonAction","OverrideSaveButton","props","presenter","name","children","vm","state","CmsEntryFormSaveButton","createDecorator","Original","WorkflowCmsEntryFormSaveButton","createElement","Object","assign","element"],"sources":["CmsEntryFormSaveButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveButton = observer((props: IOverrideSaveButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"save\") {\n return props.children;\n } else if (!presenter.vm.state) {\n return props.children;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveButton(props) {\n return (\n <Original\n {...props}\n element={<OverrideSaveButton name={props.name}>{props.element}</OverrideSaveButton>}\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,iBAAiB;AAE1C,MAAM;EAAEC;AAAQ,CAAC,GAAGH,wBAAwB;AAC5C,MAAM;EAAEI;AAAa,CAAC,GAAGD,OAAO;AAOhC,MAAME,kBAAkB,GAAGH,QAAQ,CAAEI,KAA+B,IAAK;EACrE,MAAM;IAAEC;EAAU,CAAC,GAAGN,gBAAgB,CAAC,CAAC;;EAExC;AACJ;AACA;AACA;EACI,IAAIK,KAAK,CAACE,IAAI,KAAK,MAAM,EAAE;IACvB,OAAOF,KAAK,CAACG,QAAQ;EACzB,CAAC,MAAM,IAAI,CAACF,SAAS,CAACG,EAAE,CAACC,KAAK,EAAE;IAC5B,OAAOL,KAAK,CAACG,QAAQ;EACzB;EACA,OAAO,IAAI;AACf,CAAC,CAAC;AAEF,OAAO,MAAMG,sBAAsB,GAAGR,YAAY,CAACS,eAAe,CAACC,QAAQ,IAAI;EAC3E,OAAO,SAASC,8BAA8BA,CAACT,KAAK,EAAE;IAClD,oBACIP,KAAA,CAAAiB,aAAA,CAACF,QAAQ,EAAAG,MAAA,CAAAC,MAAA,KACDZ,KAAK;MACTa,OAAO,eAAEpB,KAAA,CAAAiB,aAAA,CAACX,kBAAkB;QAACG,IAAI,EAAEF,KAAK,CAACE;MAAK,GAAEF,KAAK,CAACa,OAA4B;IAAE,EACvF,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormSaveButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormSaveButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { ButtonAction } = Actions;\n\ninterface IOverrideSaveButtonProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideSaveButton = observer((props: IOverrideSaveButtonProps) => {\n const { presenter } = useWorkflowState();\n\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (props.name !== \"save\") {\n return props.children;\n } else if (!presenter.vm.state) {\n return props.children;\n }\n return null;\n});\n\nexport const CmsEntryFormSaveButton = ButtonAction.createDecorator(Original => {\n return function WorkflowCmsEntryFormSaveButton(props) {\n return (\n <Original\n {...props}\n element={<OverrideSaveButton name={props.name}>{props.element}</OverrideSaveButton>}\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","ButtonAction","OverrideSaveButton","observer","props","presenter","useWorkflowState","CmsEntryFormSaveButton","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGF;AAOzB,MAAMG,qBAAqBC,SAAS,CAACC;IACjC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAMtB,IAAIF,AAAe,WAAfA,MAAM,IAAI,EACV,OAAOA,MAAM,QAAQ;IAClB,IAAI,CAACC,UAAU,EAAE,CAAC,KAAK,EAC1B,OAAOD,MAAM,QAAQ;IAEzB,OAAO;AACX;AAEO,MAAMG,yBAAyBN,aAAa,eAAe,CAACO,CAAAA,WACxD,SAAwCJ,KAAK;QAChD,OAAO,WAAP,GACI,oBAACI,UAAAA;YACI,GAAGJ,KAAK;YACT,uBAAS,oBAACF,oBAAkBA;gBAAC,MAAME,MAAM,IAAI;eAAGA,MAAM,OAAO;;IAGzE"}
@@ -1,38 +1,23 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
3
- import { useWorkflowState, WorkflowStateValue } from "@webiny/app-workflows";
4
- const {
5
- Actions
6
- } = ContentEntryEditorConfig;
7
- const {
8
- MenuItemAction
9
- } = Actions;
10
- const OverrideScheduleMenuItemAction = props => {
11
- const {
12
- presenter
13
- } = useWorkflowState();
14
- /**
15
- * If there is no workflow state or state is approved, we simply render the original element.
16
- * This is to ensure that no button will be shown if workflow state is active.
17
- */
18
- if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {
3
+ import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
4
+ const { Actions: Actions } = ContentEntryEditorConfig;
5
+ const { MenuItemAction: MenuItemAction } = Actions;
6
+ const OverrideScheduleMenuItemAction = (props)=>{
7
+ const { presenter } = useWorkflowState();
8
+ if (presenter.vm.workflow && presenter.vm.state?.state !== WorkflowStateValue.approved) {
9
+ if ("schedule" === props.name) return null;
10
+ }
19
11
  return props.children;
20
- } else if (props.name === "schedule") {
21
- return null;
22
- }
23
- return props.children;
24
12
  };
25
- /**
26
- * There is a possibility that this decorator will not do anything, because scheduler is not turned on.
27
- */
28
- export const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {
29
- return function WorkflowCmsEntryScheduleMenuItemAction(props) {
30
- return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
31
- element: /*#__PURE__*/React.createElement(OverrideScheduleMenuItemAction, {
32
- name: props.name
33
- }, props.element)
34
- }));
35
- };
36
- });
13
+ const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator((Original)=>function(props) {
14
+ return /*#__PURE__*/ react.createElement(Original, {
15
+ ...props,
16
+ element: /*#__PURE__*/ react.createElement(OverrideScheduleMenuItemAction, {
17
+ name: props.name
18
+ }, props.element)
19
+ });
20
+ });
21
+ export { CmsEntryFormScheduleMenuItemAction };
37
22
 
38
23
  //# sourceMappingURL=CmsEntryFormScheduleMenuItemAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useWorkflowState","WorkflowStateValue","Actions","MenuItemAction","OverrideScheduleMenuItemAction","props","presenter","vm","workflow","state","approved","children","name","CmsEntryFormScheduleMenuItemAction","createDecorator","Original","WorkflowCmsEntryScheduleMenuItemAction","createElement","Object","assign","element"],"sources":["CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState, WorkflowStateValue } from \"@webiny/app-workflows\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { MenuItemAction } = Actions;\n\ninterface IOverrideScheduleMenuItemActionProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideScheduleMenuItemAction = (props: IOverrideScheduleMenuItemActionProps) => {\n const { presenter } = useWorkflowState();\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {\n return props.children;\n } else if (props.name === \"schedule\") {\n return null;\n }\n return props.children;\n};\n/**\n * There is a possibility that this decorator will not do anything, because scheduler is not turned on.\n */\nexport const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {\n return function WorkflowCmsEntryScheduleMenuItemAction(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideScheduleMenuItemAction name={props.name}>\n {props.element}\n </OverrideScheduleMenuItemAction>\n }\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,QAAQ,0BAA0B;AACnE,SAASC,gBAAgB,EAAEC,kBAAkB,QAAQ,uBAAuB;AAE5E,MAAM;EAAEC;AAAQ,CAAC,GAAGH,wBAAwB;AAC5C,MAAM;EAAEI;AAAe,CAAC,GAAGD,OAAO;AAOlC,MAAME,8BAA8B,GAAIC,KAA2C,IAAK;EACpF,MAAM;IAAEC;EAAU,CAAC,GAAGN,gBAAgB,CAAC,CAAC;EACxC;AACJ;AACA;AACA;EACI,IAAI,CAACM,SAAS,CAACC,EAAE,CAACC,QAAQ,IAAIF,SAAS,CAACC,EAAE,CAACE,KAAK,EAAEA,KAAK,KAAKR,kBAAkB,CAACS,QAAQ,EAAE;IACrF,OAAOL,KAAK,CAACM,QAAQ;EACzB,CAAC,MAAM,IAAIN,KAAK,CAACO,IAAI,KAAK,UAAU,EAAE;IAClC,OAAO,IAAI;EACf;EACA,OAAOP,KAAK,CAACM,QAAQ;AACzB,CAAC;AACD;AACA;AACA;AACA,OAAO,MAAME,kCAAkC,GAAGV,cAAc,CAACW,eAAe,CAACC,QAAQ,IAAI;EACzF,OAAO,SAASC,sCAAsCA,CAACX,KAAK,EAAE;IAC1D,oBACIP,KAAA,CAAAmB,aAAA,CAACF,QAAQ,EAAAG,MAAA,CAAAC,MAAA,KACDd,KAAK;MACTe,OAAO,eACHtB,KAAA,CAAAmB,aAAA,CAACb,8BAA8B;QAACQ,IAAI,EAAEP,KAAK,CAACO;MAAK,GAC5CP,KAAK,CAACe,OACqB;IACnC,EACJ,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useWorkflowState, WorkflowStateValue } from \"@webiny/app-workflows\";\n\nconst { Actions } = ContentEntryEditorConfig;\nconst { MenuItemAction } = Actions;\n\ninterface IOverrideScheduleMenuItemActionProps {\n name: string;\n children: React.ReactElement;\n}\n\nconst OverrideScheduleMenuItemAction = (props: IOverrideScheduleMenuItemActionProps) => {\n const { presenter } = useWorkflowState();\n /**\n * If there is no workflow state or state is approved, we simply render the original element.\n * This is to ensure that no button will be shown if workflow state is active.\n */\n if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {\n return props.children;\n } else if (props.name === \"schedule\") {\n return null;\n }\n return props.children;\n};\n/**\n * There is a possibility that this decorator will not do anything, because scheduler is not turned on.\n */\nexport const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator(Original => {\n return function WorkflowCmsEntryScheduleMenuItemAction(props) {\n return (\n <Original\n {...props}\n element={\n <OverrideScheduleMenuItemAction name={props.name}>\n {props.element}\n </OverrideScheduleMenuItemAction>\n }\n />\n );\n };\n});\n"],"names":["Actions","ContentEntryEditorConfig","MenuItemAction","OverrideScheduleMenuItemAction","props","presenter","useWorkflowState","WorkflowStateValue","CmsEntryFormScheduleMenuItemAction","Original"],"mappings":";;;AAIA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAM,EAAEC,gBAAAA,cAAc,EAAE,GAAGF;AAO3B,MAAMG,iCAAiC,CAACC;IACpC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAKtB,IAAI,AAACD,UAAU,EAAE,CAAC,QAAQ,IAAIA,UAAU,EAAE,CAAC,KAAK,EAAE,UAAUE,mBAAmB,QAAQ,EAEhF;QAAA,IAAIH,AAAe,eAAfA,MAAM,IAAI,EACjB,OAAO;IACX;IACA,OAAOA,MAAM,QAAQ;AACzB;AAIO,MAAMI,qCAAqCN,eAAe,eAAe,CAACO,CAAAA,WACtE,SAAgDL,KAAK;QACxD,OAAO,WAAP,GACI,oBAACK,UAAAA;YACI,GAAGL,KAAK;YACT,uBACI,oBAACD,gCAA8BA;gBAAC,MAAMC,MAAM,IAAI;eAC3CA,MAAM,OAAO;;IAKlC"}
@@ -1,20 +1,13 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { Components } from "@webiny/app-workflows";
3
3
  import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
4
- const {
5
- ContentReview: {
6
- WorkflowStateTooltip
7
- }
8
- } = Components;
9
- const {
10
- Actions
11
- } = ContentEntryEditorConfig;
12
- export const CmsEntryFormTooltipButton = () => {
13
- return /*#__PURE__*/React.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/React.createElement(Actions.ButtonAction, {
14
- before: "save",
15
- name: "workflowStateTooltip",
16
- element: /*#__PURE__*/React.createElement(WorkflowStateTooltip, null)
17
- }));
18
- };
4
+ const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
5
+ const { Actions: Actions } = ContentEntryEditorConfig;
6
+ const CmsEntryFormTooltipButton = ()=>/*#__PURE__*/ react.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(Actions.ButtonAction, {
7
+ before: "save",
8
+ name: "workflowStateTooltip",
9
+ element: /*#__PURE__*/ react.createElement(WorkflowStateTooltip, null)
10
+ }));
11
+ export { CmsEntryFormTooltipButton };
19
12
 
20
13
  //# sourceMappingURL=CmsEntryFormTooltipButton.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Components","ContentEntryEditorConfig","ContentReview","WorkflowStateTooltip","Actions","CmsEntryFormTooltipButton","createElement","ButtonAction","before","name","element"],"sources":["CmsEntryFormTooltipButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = ContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <ContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </ContentEntryEditorConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,wBAAwB,QAAQ,0BAA0B;AAEnE,MAAM;EACFC,aAAa,EAAE;IAAEC;EAAqB;AAC1C,CAAC,GAAGH,UAAU;AAEd,MAAM;EAAEI;AAAQ,CAAC,GAAGH,wBAAwB;AAE5C,OAAO,MAAMI,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,oBACIN,KAAA,CAAAO,aAAA,CAACL,wBAAwB,qBACrBF,KAAA,CAAAO,aAAA,CAACF,OAAO,CAACG,YAAY;IACjBC,MAAM,EAAE,MAAO;IACfC,IAAI,EAAE,sBAAuB;IAC7BC,OAAO,eAAEX,KAAA,CAAAO,aAAA,CAACH,oBAAoB,MAAE;EAAE,CACrC,CACqB,CAAC;AAEnC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/CmsEntryFormTooltipButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormTooltipButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = ContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <ContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </ContentEntryEditorConfig>\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Actions","ContentEntryEditorConfig","CmsEntryFormTooltipButton"],"mappings":";;;AAIA,MAAM,EACF,eAAe,EAAEA,sBAAAA,oBAAoB,EAAE,EAC1C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,4BAA4B,IAC9B,WAAP,GACI,oBAACD,0BAAwBA,MAAAA,WAAAA,GACrB,oBAACD,QAAQ,YAAY;QACjB,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACF,sBAAoBA"}
@@ -1,73 +1,40 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryForm, useModel } from "@webiny/app-headless-cms";
3
3
  import { Components } from "@webiny/app-workflows";
4
4
  import { Alert, Grid } from "@webiny/admin-ui";
5
5
  import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
6
- const {
7
- ContentReview: {
8
- WorkflowStateBar,
9
- WorkflowStateOverlay
10
- }
11
- } = Components;
12
-
13
- /**
14
- * To override storing of the entry when in workflow state.
15
- */
16
- // @ts-expect-error
17
- const emptyFunction = async () => {
18
- return void 0;
19
- };
20
- const StoreAlert = ({
21
- state
22
- }) => {
23
- if (!state) {
24
- return null;
25
- }
26
- return /*#__PURE__*/React.createElement(Alert, {
27
- className: "mb-md",
28
- type: "danger"
29
- }, "Any changes you do on the entry will not be stored!");
6
+ const { ContentReview: { WorkflowStateBar: WorkflowStateBar, WorkflowStateOverlay: WorkflowStateOverlay } } = Components;
7
+ const emptyFunction = async ()=>{};
8
+ const StoreAlert = ({ state })=>{
9
+ if (!state) return null;
10
+ return /*#__PURE__*/ react.createElement(Alert, {
11
+ className: "mb-md",
12
+ type: "danger"
13
+ }, "Any changes you do on the entry will not be stored!");
30
14
  };
31
- const shouldShowOriginal = params => {
32
- const {
33
- entry,
34
- model
35
- } = params;
36
- /**
37
- * In case of new entry or no model, show original.
38
- * Also, for singleton models, show original.
39
- */
40
- if (!entry?.id || !model?.tags) {
41
- return true;
42
- }
43
- return model.tags.includes(CMS_MODEL_SINGLETON_TAG);
15
+ const shouldShowOriginal = (params)=>{
16
+ const { entry, model } = params;
17
+ if (!entry?.id || !model?.tags) return true;
18
+ return model.tags.includes(CMS_MODEL_SINGLETON_TAG);
44
19
  };
45
- export const ContentEntryFormWorkflow = ContentEntryForm.createDecorator(Original => {
46
- return function ContentEntryFormWorkflow(props) {
47
- const {
48
- model
49
- } = useModel();
50
- const showOriginal = shouldShowOriginal({
51
- entry: props.entry,
52
- model
20
+ const ContentEntryFormWorkflow_ContentEntryFormWorkflow = ContentEntryForm.createDecorator((Original)=>function(props) {
21
+ const { model } = useModel();
22
+ const showOriginal = shouldShowOriginal({
23
+ entry: props.entry,
24
+ model
25
+ });
26
+ if (showOriginal) return /*#__PURE__*/ react.createElement(Original, props);
27
+ return /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
28
+ span: 12
29
+ }, /*#__PURE__*/ react.createElement(WorkflowStateBar, null)), /*#__PURE__*/ react.createElement(Grid.Column, {
30
+ span: 12
31
+ }, /*#__PURE__*/ react.createElement(WorkflowStateOverlay, null, ({ state })=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(StoreAlert, {
32
+ state: state
33
+ }), /*#__PURE__*/ react.createElement(Original, {
34
+ ...props,
35
+ persistEntry: state ? emptyFunction : props.persistEntry
36
+ })))));
53
37
  });
54
- if (showOriginal) {
55
- return /*#__PURE__*/React.createElement(Original, props);
56
- }
57
- return /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
58
- span: 12
59
- }, /*#__PURE__*/React.createElement(WorkflowStateBar, null)), /*#__PURE__*/React.createElement(Grid.Column, {
60
- span: 12
61
- }, /*#__PURE__*/React.createElement(WorkflowStateOverlay, null, ({
62
- state
63
- }) => {
64
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StoreAlert, {
65
- state: state
66
- }), /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
67
- persistEntry: state ? emptyFunction : props.persistEntry
68
- })));
69
- })));
70
- };
71
- });
38
+ export { ContentEntryFormWorkflow_ContentEntryFormWorkflow as ContentEntryFormWorkflow };
72
39
 
73
40
  //# sourceMappingURL=ContentEntryFormWorkflow.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryForm","useModel","Components","Alert","Grid","CMS_MODEL_SINGLETON_TAG","ContentReview","WorkflowStateBar","WorkflowStateOverlay","emptyFunction","StoreAlert","state","createElement","className","type","shouldShowOriginal","params","entry","model","id","tags","includes","ContentEntryFormWorkflow","createDecorator","Original","props","showOriginal","Column","span","Fragment","Object","assign","persistEntry"],"sources":["ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryForm, useModel } from \"@webiny/app-headless-cms\";\nimport type { IWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Alert, Grid } from \"@webiny/admin-ui\";\nimport type { PersistEntry } from \"@webiny/app-headless-cms/admin/components/ContentEntryForm/ContentEntryFormProvider.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\nimport type { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nconst {\n ContentReview: { WorkflowStateBar, WorkflowStateOverlay }\n} = Components;\n\n/**\n * To override storing of the entry when in workflow state.\n */\n// @ts-expect-error\nconst emptyFunction: PersistEntry = async () => {\n return void 0;\n};\n\ninterface IStoreAlertProps {\n state: IWorkflowState | undefined;\n}\n\nconst StoreAlert = ({ state }: IStoreAlertProps) => {\n if (!state) {\n return null;\n }\n return (\n <Alert className={\"mb-md\"} type=\"danger\">\n Any changes you do on the entry will not be stored!\n </Alert>\n );\n};\n\ninterface IShouldShowOriginalParams {\n entry: Partial<Pick<CmsContentEntry, \"id\">>;\n model: Partial<Pick<CmsModel, \"tags\">>;\n}\nconst shouldShowOriginal = (params: IShouldShowOriginalParams): boolean => {\n const { entry, model } = params;\n /**\n * In case of new entry or no model, show original.\n * Also, for singleton models, show original.\n */\n if (!entry?.id || !model?.tags) {\n return true;\n }\n return model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n};\n\nexport const ContentEntryFormWorkflow = ContentEntryForm.createDecorator(Original => {\n return function ContentEntryFormWorkflow(props) {\n const { model } = useModel();\n\n const showOriginal = shouldShowOriginal({\n entry: props.entry,\n model\n });\n\n if (showOriginal) {\n return <Original {...props} />;\n }\n\n return (\n <Grid>\n <Grid.Column span={12}>\n <WorkflowStateBar />\n </Grid.Column>\n <Grid.Column span={12}>\n <WorkflowStateOverlay>\n {({ state }) => {\n return (\n <>\n <StoreAlert state={state} />\n <Original\n {...props}\n persistEntry={state ? emptyFunction : props.persistEntry}\n />\n </>\n );\n }}\n </WorkflowStateOverlay>\n </Grid.Column>\n </Grid>\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,EAAEC,QAAQ,QAAQ,0BAA0B;AAErE,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,KAAK,EAAEC,IAAI,QAAQ,kBAAkB;AAE9C,SAASC,uBAAuB,QAAQ,iCAAiC;AAGzE,MAAM;EACFC,aAAa,EAAE;IAAEC,gBAAgB;IAAEC;EAAqB;AAC5D,CAAC,GAAGN,UAAU;;AAEd;AACA;AACA;AACA;AACA,MAAMO,aAA2B,GAAG,MAAAA,CAAA,KAAY;EAC5C,OAAO,KAAK,CAAC;AACjB,CAAC;AAMD,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAwB,CAAC,KAAK;EAChD,IAAI,CAACA,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EACA,oBACIZ,KAAA,CAAAa,aAAA,CAACT,KAAK;IAACU,SAAS,EAAE,OAAQ;IAACC,IAAI,EAAC;EAAQ,GAAC,qDAElC,CAAC;AAEhB,CAAC;AAMD,MAAMC,kBAAkB,GAAIC,MAAiC,IAAc;EACvE,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGF,MAAM;EAC/B;AACJ;AACA;AACA;EACI,IAAI,CAACC,KAAK,EAAEE,EAAE,IAAI,CAACD,KAAK,EAAEE,IAAI,EAAE;IAC5B,OAAO,IAAI;EACf;EACA,OAAOF,KAAK,CAACE,IAAI,CAACC,QAAQ,CAAChB,uBAAuB,CAAC;AACvD,CAAC;AAED,OAAO,MAAMiB,wBAAwB,GAAGtB,gBAAgB,CAACuB,eAAe,CAACC,QAAQ,IAAI;EACjF,OAAO,SAASF,wBAAwBA,CAACG,KAAK,EAAE;IAC5C,MAAM;MAAEP;IAAM,CAAC,GAAGjB,QAAQ,CAAC,CAAC;IAE5B,MAAMyB,YAAY,GAAGX,kBAAkB,CAAC;MACpCE,KAAK,EAAEQ,KAAK,CAACR,KAAK;MAClBC;IACJ,CAAC,CAAC;IAEF,IAAIQ,YAAY,EAAE;MACd,oBAAO3B,KAAA,CAAAa,aAAA,CAACY,QAAQ,EAAKC,KAAQ,CAAC;IAClC;IAEA,oBACI1B,KAAA,CAAAa,aAAA,CAACR,IAAI,qBACDL,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACuB,MAAM;MAACC,IAAI,EAAE;IAAG,gBAClB7B,KAAA,CAAAa,aAAA,CAACL,gBAAgB,MAAE,CACV,CAAC,eACdR,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACuB,MAAM;MAACC,IAAI,EAAE;IAAG,gBAClB7B,KAAA,CAAAa,aAAA,CAACJ,oBAAoB,QAChB,CAAC;MAAEG;IAAM,CAAC,KAAK;MACZ,oBACIZ,KAAA,CAAAa,aAAA,CAAAb,KAAA,CAAA8B,QAAA,qBACI9B,KAAA,CAAAa,aAAA,CAACF,UAAU;QAACC,KAAK,EAAEA;MAAM,CAAE,CAAC,eAC5BZ,KAAA,CAAAa,aAAA,CAACY,QAAQ,EAAAM,MAAA,CAAAC,MAAA,KACDN,KAAK;QACTO,YAAY,EAAErB,KAAK,GAAGF,aAAa,GAAGgB,KAAK,CAACO;MAAa,EAC5D,CACH,CAAC;IAEX,CACkB,CACb,CACX,CAAC;EAEf,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/ContentEntryFormWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryForm, useModel } from \"@webiny/app-headless-cms\";\nimport type { IWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { Alert, Grid } from \"@webiny/admin-ui\";\nimport type { PersistEntry } from \"@webiny/app-headless-cms/admin/components/ContentEntryForm/ContentEntryFormProvider.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\nimport type { CmsContentEntry, CmsModel } from \"@webiny/app-headless-cms-common/types/index.js\";\n\nconst {\n ContentReview: { WorkflowStateBar, WorkflowStateOverlay }\n} = Components;\n\n/**\n * To override storing of the entry when in workflow state.\n */\n// @ts-expect-error\nconst emptyFunction: PersistEntry = async () => {\n return void 0;\n};\n\ninterface IStoreAlertProps {\n state: IWorkflowState | undefined;\n}\n\nconst StoreAlert = ({ state }: IStoreAlertProps) => {\n if (!state) {\n return null;\n }\n return (\n <Alert className={\"mb-md\"} type=\"danger\">\n Any changes you do on the entry will not be stored!\n </Alert>\n );\n};\n\ninterface IShouldShowOriginalParams {\n entry: Partial<Pick<CmsContentEntry, \"id\">>;\n model: Partial<Pick<CmsModel, \"tags\">>;\n}\nconst shouldShowOriginal = (params: IShouldShowOriginalParams): boolean => {\n const { entry, model } = params;\n /**\n * In case of new entry or no model, show original.\n * Also, for singleton models, show original.\n */\n if (!entry?.id || !model?.tags) {\n return true;\n }\n return model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n};\n\nexport const ContentEntryFormWorkflow = ContentEntryForm.createDecorator(Original => {\n return function ContentEntryFormWorkflow(props) {\n const { model } = useModel();\n\n const showOriginal = shouldShowOriginal({\n entry: props.entry,\n model\n });\n\n if (showOriginal) {\n return <Original {...props} />;\n }\n\n return (\n <Grid>\n <Grid.Column span={12}>\n <WorkflowStateBar />\n </Grid.Column>\n <Grid.Column span={12}>\n <WorkflowStateOverlay>\n {({ state }) => {\n return (\n <>\n <StoreAlert state={state} />\n <Original\n {...props}\n persistEntry={state ? emptyFunction : props.persistEntry}\n />\n </>\n );\n }}\n </WorkflowStateOverlay>\n </Grid.Column>\n </Grid>\n );\n };\n});\n"],"names":["WorkflowStateBar","WorkflowStateOverlay","Components","emptyFunction","StoreAlert","state","Alert","shouldShowOriginal","params","entry","model","CMS_MODEL_SINGLETON_TAG","ContentEntryFormWorkflow","ContentEntryForm","Original","props","useModel","showOriginal","Grid"],"mappings":";;;;;AASA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAEC,sBAAAA,oBAAoB,EAAE,EAC5D,GAAGC;AAMJ,MAAMC,gBAA8B,WAEpC;AAMA,MAAMC,aAAa,CAAC,EAAEC,KAAK,EAAoB;IAC3C,IAAI,CAACA,OACD,OAAO;IAEX,OAAO,WAAP,GACI,oBAACC,OAAKA;QAAC,WAAW;QAAS,MAAK;OAAS;AAIjD;AAMA,MAAMC,qBAAqB,CAACC;IACxB,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGF;IAKzB,IAAI,CAACC,OAAO,MAAM,CAACC,OAAO,MACtB,OAAO;IAEX,OAAOA,MAAM,IAAI,CAAC,QAAQ,CAACC;AAC/B;AAEO,MAAMC,oDAA2BC,iBAAiB,eAAe,CAACC,CAAAA,WAC9D,SAAkCC,KAAK;QAC1C,MAAM,EAAEL,KAAK,EAAE,GAAGM;QAElB,MAAMC,eAAeV,mBAAmB;YACpC,OAAOQ,MAAM,KAAK;YAClBL;QACJ;QAEA,IAAIO,cACA,OAAO,WAAP,GAAO,oBAACH,UAAaC;QAGzB,OAAO,WAAP,GACI,oBAACG,MAAIA,MAAAA,WAAAA,GACD,oBAACA,KAAK,MAAM;YAAC,MAAM;yBACf,oBAAClB,kBAAgBA,QAAAA,WAAAA,GAErB,oBAACkB,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACjB,sBAAoBA,MAChB,CAAC,EAAEI,KAAK,EAAE,GACA,WAAP,GACI,wDACI,oBAACD,YAAUA;gBAAC,OAAOC;8BACnB,oBAACS,UAAAA;gBACI,GAAGC,KAAK;gBACT,cAAcV,QAAQF,gBAAgBY,MAAM,YAAY;;IAS5F"}
@@ -1,35 +1,23 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { ContentEntryEditorConfig, useContentEntry } from "@webiny/app-headless-cms";
3
3
  import { Components } from "@webiny/app-workflows";
4
4
  import { useSecurity } from "@webiny/app-admin";
5
5
  import { useApolloClient } from "@apollo/react-hooks";
6
6
  import { createAppName } from "../../utils/appName.js";
7
- const {
8
- ContentReview: {
9
- WorkflowStateProvider
10
- }
11
- } = Components;
12
- const {
13
- ContentEntry
14
- } = ContentEntryEditorConfig;
15
- export const ContentEntryWorkflow = ContentEntry.createDecorator(Original => {
16
- return function ContentEntryWorkflowSetup() {
17
- const {
18
- entry,
19
- contentModel: model
20
- } = useContentEntry();
21
- const client = useApolloClient();
22
- const {
23
- identity
24
- } = useSecurity();
25
- return /*#__PURE__*/React.createElement(WorkflowStateProvider, {
26
- app: createAppName(model),
27
- id: entry.id,
28
- identity: identity,
29
- client: client,
30
- title: `${model.name}: ${entry.meta?.title || "unknown"}`
31
- }, /*#__PURE__*/React.createElement(Original, null));
32
- };
33
- });
7
+ const { ContentReview: { WorkflowStateProvider: WorkflowStateProvider } } = Components;
8
+ const { ContentEntry: ContentEntry } = ContentEntryEditorConfig;
9
+ const ContentEntryWorkflow = ContentEntry.createDecorator((Original)=>function() {
10
+ const { entry, contentModel: model } = useContentEntry();
11
+ const client = useApolloClient();
12
+ const { identity } = useSecurity();
13
+ return /*#__PURE__*/ react.createElement(WorkflowStateProvider, {
14
+ app: createAppName(model),
15
+ id: entry.id,
16
+ identity: identity,
17
+ client: client,
18
+ title: `${model.name}: ${entry.meta?.title || "unknown"}`
19
+ }, /*#__PURE__*/ react.createElement(Original, null));
20
+ });
21
+ export { ContentEntryWorkflow };
34
22
 
35
23
  //# sourceMappingURL=ContentEntryWorkflow.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ContentEntryEditorConfig","useContentEntry","Components","useSecurity","useApolloClient","createAppName","ContentReview","WorkflowStateProvider","ContentEntry","ContentEntryWorkflow","createDecorator","Original","ContentEntryWorkflowSetup","entry","contentModel","model","client","identity","createElement","app","id","title","name","meta"],"sources":["ContentEntryWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig, useContentEntry } from \"@webiny/app-headless-cms\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n ContentReview: { WorkflowStateProvider }\n} = Components;\n\nconst { ContentEntry } = ContentEntryEditorConfig;\n\nexport const ContentEntryWorkflow = ContentEntry.createDecorator(Original => {\n return function ContentEntryWorkflowSetup() {\n const { entry, contentModel: model } = useContentEntry();\n const client = useApolloClient();\n\n const { identity } = useSecurity();\n\n return (\n <WorkflowStateProvider\n app={createAppName(model)}\n id={entry.id}\n identity={identity}\n client={client}\n title={`${model.name}: ${entry.meta?.title || \"unknown\"}`}\n >\n <Original />\n </WorkflowStateProvider>\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,wBAAwB,EAAEC,eAAe,QAAQ,0BAA0B;AACpF,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,aAAa;AAEtB,MAAM;EACFC,aAAa,EAAE;IAAEC;EAAsB;AAC3C,CAAC,GAAGL,UAAU;AAEd,MAAM;EAAEM;AAAa,CAAC,GAAGR,wBAAwB;AAEjD,OAAO,MAAMS,oBAAoB,GAAGD,YAAY,CAACE,eAAe,CAACC,QAAQ,IAAI;EACzE,OAAO,SAASC,yBAAyBA,CAAA,EAAG;IACxC,MAAM;MAAEC,KAAK;MAAEC,YAAY,EAAEC;IAAM,CAAC,GAAGd,eAAe,CAAC,CAAC;IACxD,MAAMe,MAAM,GAAGZ,eAAe,CAAC,CAAC;IAEhC,MAAM;MAAEa;IAAS,CAAC,GAAGd,WAAW,CAAC,CAAC;IAElC,oBACIJ,KAAA,CAAAmB,aAAA,CAACX,qBAAqB;MAClBY,GAAG,EAAEd,aAAa,CAACU,KAAK,CAAE;MAC1BK,EAAE,EAAEP,KAAK,CAACO,EAAG;MACbH,QAAQ,EAAEA,QAAS;MACnBD,MAAM,EAAEA,MAAO;MACfK,KAAK,EAAE,GAAGN,KAAK,CAACO,IAAI,KAAKT,KAAK,CAACU,IAAI,EAAEF,KAAK,IAAI,SAAS;IAAG,gBAE1DtB,KAAA,CAAAmB,aAAA,CAACP,QAAQ,MAAE,CACQ,CAAC;EAEhC,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/ContentEntryForm/ContentEntryWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryEditorConfig, useContentEntry } from \"@webiny/app-headless-cms\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { useSecurity } from \"@webiny/app-admin\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n ContentReview: { WorkflowStateProvider }\n} = Components;\n\nconst { ContentEntry } = ContentEntryEditorConfig;\n\nexport const ContentEntryWorkflow = ContentEntry.createDecorator(Original => {\n return function ContentEntryWorkflowSetup() {\n const { entry, contentModel: model } = useContentEntry();\n const client = useApolloClient();\n\n const { identity } = useSecurity();\n\n return (\n <WorkflowStateProvider\n app={createAppName(model)}\n id={entry.id}\n identity={identity}\n client={client}\n title={`${model.name}: ${entry.meta?.title || \"unknown\"}`}\n >\n <Original />\n </WorkflowStateProvider>\n );\n };\n});\n"],"names":["WorkflowStateProvider","Components","ContentEntry","ContentEntryEditorConfig","ContentEntryWorkflow","Original","entry","model","useContentEntry","client","useApolloClient","identity","useSecurity","createAppName"],"mappings":";;;;;;AAOA,MAAM,EACF,eAAe,EAAEA,uBAAAA,qBAAqB,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,cAAAA,YAAY,EAAE,GAAGC;AAElB,MAAMC,uBAAuBF,aAAa,eAAe,CAACG,CAAAA,WACtD;QACH,MAAM,EAAEC,KAAK,EAAE,cAAcC,KAAK,EAAE,GAAGC;QACvC,MAAMC,SAASC;QAEf,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QAErB,OAAO,WAAP,GACI,oBAACZ,uBAAqBA;YAClB,KAAKa,cAAcN;YACnB,IAAID,MAAM,EAAE;YACZ,UAAUK;YACV,QAAQF;YACR,OAAO,GAAGF,MAAM,IAAI,CAAC,EAAE,EAAED,MAAM,IAAI,EAAE,SAAS,WAAW;yBAEzD,oBAACD,UAAAA;IAGb"}
@@ -5,5 +5,3 @@ export { CmsEntryFormScheduleMenuItemAction } from "./CmsEntryFormScheduleMenuIt
5
5
  export { CmsEntryFormSaveAndPublishButton } from "./CmsEntryFormSaveAndPublishButton.js";
6
6
  export { CmsEntryFormSaveButton } from "./CmsEntryFormSaveButton.js";
7
7
  export { CmsEntryFormCreateNewRevisionButton } from "./CmsEntryFormCreateNewRevisionButton.js";
8
-
9
- //# sourceMappingURL=index.js.map
@@ -1,44 +1,36 @@
1
- import React, { useCallback } from "react";
1
+ import react, { useCallback } from "react";
2
2
  import { DropdownMenu, Icon } from "@webiny/admin-ui";
3
3
  import { Components } from "@webiny/app-workflows";
4
- import { ReactComponent as OpenInNewIcon } from "@webiny/icons/open_in_new.svg";
4
+ import { ReactComponent } from "@webiny/icons/open_in_new.svg";
5
5
  import { useRouter } from "@webiny/app";
6
6
  import { Routes } from "@webiny/app-headless-cms/routes.js";
7
7
  import { isCmsAppName, parseAppName } from "../../utils/appName.js";
8
- const {
9
- OpenInNewWindow
10
- } = Components.List.Options;
11
- export const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {
12
- return function ListOpenInNewWindow(props) {
13
- const {
14
- state
15
- } = props;
16
- const {
17
- getLink
18
- } = useRouter();
19
- const onClick = useCallback(() => {
20
- const modelId = parseAppName(state.app);
21
- const url = getLink(Routes.ContentEntries.List, {
22
- modelId,
23
- id: state.targetRevisionId,
24
- // TODO figure out how to load folderId
25
- folderId: "root"
26
- });
27
- const goTo = `${window.location.origin}${url}`;
28
- window.open(goTo, "_blank");
29
- }, [state.id]);
30
- if (isCmsAppName(state.app) === false) {
31
- return /*#__PURE__*/React.createElement(Original, props);
32
- }
33
- return /*#__PURE__*/React.createElement(DropdownMenu.Item, {
34
- icon: /*#__PURE__*/React.createElement(Icon, {
35
- icon: /*#__PURE__*/React.createElement(OpenInNewIcon, null),
36
- label: "Open In New Window"
37
- }),
38
- text: "Open in New Window",
39
- onClick: onClick
8
+ const { OpenInNewWindow: OpenInNewWindow } = Components.List.Options;
9
+ const OpenInNewWindow_ListOpenInNewWindow = OpenInNewWindow.createDecorator((Original)=>function(props) {
10
+ const { state } = props;
11
+ const { getLink } = useRouter();
12
+ const onClick = useCallback(()=>{
13
+ const modelId = parseAppName(state.app);
14
+ const url = getLink(Routes.ContentEntries.List, {
15
+ modelId,
16
+ id: state.targetRevisionId,
17
+ folderId: "root"
18
+ });
19
+ const goTo = `${window.location.origin}${url}`;
20
+ window.open(goTo, "_blank");
21
+ }, [
22
+ state.id
23
+ ]);
24
+ if (false === isCmsAppName(state.app)) return /*#__PURE__*/ react.createElement(Original, props);
25
+ return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
26
+ icon: /*#__PURE__*/ react.createElement(Icon, {
27
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
28
+ label: "Open In New Window"
29
+ }),
30
+ text: "Open in New Window",
31
+ onClick: onClick
32
+ });
40
33
  });
41
- };
42
- });
34
+ export { OpenInNewWindow_ListOpenInNewWindow as ListOpenInNewWindow };
43
35
 
44
36
  //# sourceMappingURL=OpenInNewWindow.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","DropdownMenu","Icon","Components","ReactComponent","OpenInNewIcon","useRouter","Routes","isCmsAppName","parseAppName","OpenInNewWindow","List","Options","ListOpenInNewWindow","createDecorator","Original","props","state","getLink","onClick","modelId","app","url","ContentEntries","id","targetRevisionId","folderId","goTo","window","location","origin","open","createElement","Item","icon","label","text"],"sources":["OpenInNewWindow.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { DropdownMenu, Icon } from \"@webiny/admin-ui\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ReactComponent as OpenInNewIcon } from \"@webiny/icons/open_in_new.svg\";\nimport { useRouter } from \"@webiny/app\";\nimport { Routes } from \"@webiny/app-headless-cms/routes.js\";\nimport { isCmsAppName, parseAppName } from \"~/utils/appName.js\";\n\nconst { OpenInNewWindow } = Components.List.Options;\n\nexport const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {\n return function ListOpenInNewWindow(props) {\n const { state } = props;\n\n const { getLink } = useRouter();\n const onClick = useCallback(() => {\n const modelId = parseAppName(state.app);\n const url = getLink(Routes.ContentEntries.List, {\n modelId,\n id: state.targetRevisionId,\n // TODO figure out how to load folderId\n folderId: \"root\"\n });\n\n const goTo = `${window.location.origin}${url}`;\n\n window.open(goTo, \"_blank\");\n }, [state.id]);\n\n if (isCmsAppName(state.app) === false) {\n return <Original {...props} />;\n }\n\n return (\n <DropdownMenu.Item\n icon={<Icon icon={<OpenInNewIcon />} label={\"Open In New Window\"} />}\n text={\"Open in New Window\"}\n onClick={onClick}\n />\n );\n };\n});\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,YAAY,EAAEC,IAAI,QAAQ,kBAAkB;AACrD,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,cAAc,IAAIC,aAAa,QAAQ,+BAA+B;AAC/E,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,MAAM,QAAQ,oCAAoC;AAC3D,SAASC,YAAY,EAAEC,YAAY;AAEnC,MAAM;EAAEC;AAAgB,CAAC,GAAGP,UAAU,CAACQ,IAAI,CAACC,OAAO;AAEnD,OAAO,MAAMC,mBAAmB,GAAGH,eAAe,CAACI,eAAe,CAACC,QAAQ,IAAI;EAC3E,OAAO,SAASF,mBAAmBA,CAACG,KAAK,EAAE;IACvC,MAAM;MAAEC;IAAM,CAAC,GAAGD,KAAK;IAEvB,MAAM;MAAEE;IAAQ,CAAC,GAAGZ,SAAS,CAAC,CAAC;IAC/B,MAAMa,OAAO,GAAGnB,WAAW,CAAC,MAAM;MAC9B,MAAMoB,OAAO,GAAGX,YAAY,CAACQ,KAAK,CAACI,GAAG,CAAC;MACvC,MAAMC,GAAG,GAAGJ,OAAO,CAACX,MAAM,CAACgB,cAAc,CAACZ,IAAI,EAAE;QAC5CS,OAAO;QACPI,EAAE,EAAEP,KAAK,CAACQ,gBAAgB;QAC1B;QACAC,QAAQ,EAAE;MACd,CAAC,CAAC;MAEF,MAAMC,IAAI,GAAG,GAAGC,MAAM,CAACC,QAAQ,CAACC,MAAM,GAAGR,GAAG,EAAE;MAE9CM,MAAM,CAACG,IAAI,CAACJ,IAAI,EAAE,QAAQ,CAAC;IAC/B,CAAC,EAAE,CAACV,KAAK,CAACO,EAAE,CAAC,CAAC;IAEd,IAAIhB,YAAY,CAACS,KAAK,CAACI,GAAG,CAAC,KAAK,KAAK,EAAE;MACnC,oBAAOtB,KAAA,CAAAiC,aAAA,CAACjB,QAAQ,EAAKC,KAAQ,CAAC;IAClC;IAEA,oBACIjB,KAAA,CAAAiC,aAAA,CAAC/B,YAAY,CAACgC,IAAI;MACdC,IAAI,eAAEnC,KAAA,CAAAiC,aAAA,CAAC9B,IAAI;QAACgC,IAAI,eAAEnC,KAAA,CAAAiC,aAAA,CAAC3B,aAAa,MAAE,CAAE;QAAC8B,KAAK,EAAE;MAAqB,CAAE,CAAE;MACrEC,IAAI,EAAE,oBAAqB;MAC3BjB,OAAO,EAAEA;IAAQ,CACpB,CAAC;EAEV,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Components/OptionItem/OpenInNewWindow.js","sources":["../../../src/Components/OptionItem/OpenInNewWindow.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { DropdownMenu, Icon } from \"@webiny/admin-ui\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { ReactComponent as OpenInNewIcon } from \"@webiny/icons/open_in_new.svg\";\nimport { useRouter } from \"@webiny/app\";\nimport { Routes } from \"@webiny/app-headless-cms/routes.js\";\nimport { isCmsAppName, parseAppName } from \"~/utils/appName.js\";\n\nconst { OpenInNewWindow } = Components.List.Options;\n\nexport const ListOpenInNewWindow = OpenInNewWindow.createDecorator(Original => {\n return function ListOpenInNewWindow(props) {\n const { state } = props;\n\n const { getLink } = useRouter();\n const onClick = useCallback(() => {\n const modelId = parseAppName(state.app);\n const url = getLink(Routes.ContentEntries.List, {\n modelId,\n id: state.targetRevisionId,\n // TODO figure out how to load folderId\n folderId: \"root\"\n });\n\n const goTo = `${window.location.origin}${url}`;\n\n window.open(goTo, \"_blank\");\n }, [state.id]);\n\n if (isCmsAppName(state.app) === false) {\n return <Original {...props} />;\n }\n\n return (\n <DropdownMenu.Item\n icon={<Icon icon={<OpenInNewIcon />} label={\"Open In New Window\"} />}\n text={\"Open in New Window\"}\n onClick={onClick}\n />\n );\n };\n});\n"],"names":["OpenInNewWindow","Components","ListOpenInNewWindow","Original","props","state","getLink","useRouter","onClick","useCallback","modelId","parseAppName","url","Routes","goTo","window","isCmsAppName","DropdownMenu","Icon","OpenInNewIcon"],"mappings":";;;;;;;AAQA,MAAM,EAAEA,iBAAAA,eAAe,EAAE,GAAGC,WAAW,IAAI,CAAC,OAAO;AAE5C,MAAMC,sCAAsBF,gBAAgB,eAAe,CAACG,CAAAA,WACxD,SAA6BC,KAAK;QACrC,MAAM,EAAEC,KAAK,EAAE,GAAGD;QAElB,MAAM,EAAEE,OAAO,EAAE,GAAGC;QACpB,MAAMC,UAAUC,YAAY;YACxB,MAAMC,UAAUC,aAAaN,MAAM,GAAG;YACtC,MAAMO,MAAMN,QAAQO,OAAO,cAAc,CAAC,IAAI,EAAE;gBAC5CH;gBACA,IAAIL,MAAM,gBAAgB;gBAE1B,UAAU;YACd;YAEA,MAAMS,OAAO,GAAGC,OAAO,QAAQ,CAAC,MAAM,GAAGH,KAAK;YAE9CG,OAAO,IAAI,CAACD,MAAM;QACtB,GAAG;YAACT,MAAM,EAAE;SAAC;QAEb,IAAIW,AAA4B,UAA5BA,aAAaX,MAAM,GAAG,GACtB,OAAO,WAAP,GAAO,oBAACF,UAAaC;QAGzB,OAAO,WAAP,GACI,oBAACa,aAAa,IAAI;YACd,oBAAM,oBAACC,MAAIA;gBAAC,oBAAM,oBAACC,gBAAaA;gBAAK,OAAO;;YAC5C,MAAM;YACN,SAASX;;IAGrB"}