@webiny/app-website-builder-workflows 6.3.0 → 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.
- package/Components/OptionItem/OpenInNewWindow.js +26 -33
- package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
- package/Components/OptionItem/index.js +0 -2
- package/Components/PageEditor/PageEditorAutoSave.js +16 -27
- package/Components/PageEditor/PageEditorAutoSave.js.map +1 -1
- package/Components/PageEditor/PageEditorConfig.js +4 -5
- package/Components/PageEditor/PageEditorConfig.js.map +1 -1
- package/Components/PageEditor/PageEditorLayout.js +31 -41
- package/Components/PageEditor/PageEditorLayout.js.map +1 -1
- package/Components/PageEditor/PageEditorTopBar.js +20 -24
- package/Components/PageEditor/PageEditorTopBar.js.map +1 -1
- package/Components/PageEditor/PageFormWorkflowState.js +7 -16
- package/Components/PageEditor/PageFormWorkflowState.js.map +1 -1
- package/Components/PageEditor/PageFormWorkflowStatePublishButton.js +17 -28
- package/Components/PageEditor/PageFormWorkflowStatePublishButton.js.map +1 -1
- package/Components/PageEditor/PageFormWorkflowStateTooltip.js +10 -19
- package/Components/PageEditor/PageFormWorkflowStateTooltip.js.map +1 -1
- package/Components/PageEditor/ToggleEditorMode.js +14 -12
- package/Components/PageEditor/ToggleEditorMode.js.map +1 -1
- package/Components/PageWorkflows/PageWorkflowsEditorView.js +44 -50
- package/Components/PageWorkflows/PageWorkflowsEditorView.js.map +1 -1
- package/Components/PageWorkflows/index.js +0 -2
- package/Components/PagesList/PageListChangeStatus.js +17 -25
- package/Components/PagesList/PageListChangeStatus.js.map +1 -1
- package/Components/PagesList/PagesList.js +3 -4
- package/Components/PagesList/PagesList.js.map +1 -1
- package/Components/PagesList/PagesListContentReviews.js +23 -34
- package/Components/PagesList/PagesListContentReviews.js.map +1 -1
- package/Components/PagesList/index.js +0 -2
- package/Components/index.js +0 -2
- package/Routes/WebsiteBuilderWorkflowsMenu.js +17 -26
- package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -1
- package/Routes/index.js +0 -2
- package/constants.js +2 -1
- package/constants.js.map +1 -1
- package/hooks/usePage.js +15 -17
- package/hooks/usePage.js.map +1 -1
- package/index.js +7 -8
- package/index.js.map +1 -1
- package/package.json +11 -11
- package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js +10 -7
- package/presentation/page/PageGet/WorkflowStatesGetPageGraphQLFieldSelection.js.map +1 -1
- package/presentation/page/PageGet/feature.js +6 -5
- package/presentation/page/PageGet/feature.js.map +1 -1
- package/presentation/page/PageList/PageListPresenterDecorator.js +31 -32
- package/presentation/page/PageList/PageListPresenterDecorator.js.map +1 -1
- package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js +10 -7
- package/presentation/page/PageList/WorkflowStateListPagesFieldSelection.js.map +1 -1
- package/presentation/page/PageList/feature.js +7 -6
- package/presentation/page/PageList/feature.js.map +1 -1
- package/routes.js +15 -16
- package/routes.js.map +1 -1
- package/types.js +0 -3
- package/Components/OptionItem/index.js.map +0 -1
- package/Components/PageWorkflows/index.js.map +0 -1
- package/Components/PagesList/index.js.map +0 -1
- package/Components/index.js.map +0 -1
- package/Routes/index.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1,41 +1,34 @@
|
|
|
1
|
-
import
|
|
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
|
|
4
|
+
import { ReactComponent } from "@webiny/icons/open_in_new.svg";
|
|
5
5
|
import { useRouter } from "@webiny/app";
|
|
6
6
|
import { Routes } from "@webiny/app-website-builder/routes.js";
|
|
7
7
|
import { WB_PAGE_APP } from "../../constants.js";
|
|
8
|
-
const {
|
|
9
|
-
|
|
10
|
-
} =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
32
|
-
icon: /*#__PURE__*/React.createElement(OpenInNewIcon, null),
|
|
33
|
-
label: "Open In New Window"
|
|
34
|
-
}),
|
|
35
|
-
text: "Open in New Window",
|
|
36
|
-
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 url = getLink(Routes.Pages.Editor, {
|
|
14
|
+
id: state.targetRevisionId,
|
|
15
|
+
folderId: "root"
|
|
16
|
+
});
|
|
17
|
+
const goTo = `${window.location.origin}${url}`;
|
|
18
|
+
window.open(goTo, "_blank");
|
|
19
|
+
}, [
|
|
20
|
+
state.id
|
|
21
|
+
]);
|
|
22
|
+
if (state.app !== WB_PAGE_APP) return /*#__PURE__*/ react.createElement(Original, props);
|
|
23
|
+
return /*#__PURE__*/ react.createElement(DropdownMenu.Item, {
|
|
24
|
+
icon: /*#__PURE__*/ react.createElement(Icon, {
|
|
25
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
26
|
+
label: "Open In New Window"
|
|
27
|
+
}),
|
|
28
|
+
text: "Open in New Window",
|
|
29
|
+
onClick: onClick
|
|
30
|
+
});
|
|
37
31
|
});
|
|
38
|
-
|
|
39
|
-
});
|
|
32
|
+
export { OpenInNewWindow_ListOpenInNewWindow as ListOpenInNewWindow };
|
|
40
33
|
|
|
41
34
|
//# sourceMappingURL=OpenInNewWindow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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-website-builder/routes.js\";\nimport { WB_PAGE_APP } from \"~/constants.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 url = getLink(Routes.Pages.Editor, {\n id: state.targetRevisionId,\n folderId: \"root\"\n });\n\n const goTo = `${window.location.origin}${url}`;\n\n window.open(goTo, \"_blank\");\n }, [state.id]);\n\n if (state.app !== WB_PAGE_APP) {\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","url","Routes","goTo","window","WB_PAGE_APP","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,MAAMJ,QAAQK,OAAO,KAAK,CAAC,MAAM,EAAE;gBACrC,IAAIN,MAAM,gBAAgB;gBAC1B,UAAU;YACd;YAEA,MAAMO,OAAO,GAAGC,OAAO,QAAQ,CAAC,MAAM,GAAGH,KAAK;YAE9CG,OAAO,IAAI,CAACD,MAAM;QACtB,GAAG;YAACP,MAAM,EAAE;SAAC;QAEb,IAAIA,MAAM,GAAG,KAAKS,aACd,OAAO,WAAP,GAAO,oBAACX,UAAaC;QAGzB,OAAO,WAAP,GACI,oBAACW,aAAa,IAAI;YACd,oBAAM,oBAACC,MAAIA;gBAAC,oBAAM,oBAACC,gBAAaA;gBAAK,OAAO;;YAC5C,MAAM;YACN,SAAST;;IAGrB"}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
3
3
|
import { useWorkflowState } from "@webiny/app-workflows";
|
|
4
4
|
import { observer } from "mobx-react-lite";
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
} =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
presenter
|
|
11
|
-
} = useWorkflowState();
|
|
12
|
-
/**
|
|
13
|
-
* Autosave should work only when the page does not have a workflow state assigned.
|
|
14
|
-
*/
|
|
15
|
-
if (!presenter.vm.state?.state) {
|
|
16
|
-
return props.element;
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
});
|
|
20
|
-
export const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {
|
|
21
|
-
return function PageEditorAutoSaveDecorated(props) {
|
|
22
|
-
if (props.name === "autoSave") {
|
|
23
|
-
return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
|
|
24
|
-
element: /*#__PURE__*/React.createElement(WrappedAutoSave, {
|
|
25
|
-
element: props.element
|
|
26
|
-
})
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
return /*#__PURE__*/React.createElement(Original, props);
|
|
30
|
-
};
|
|
5
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
6
|
+
const WrappedAutoSave = observer((props)=>{
|
|
7
|
+
const { presenter } = useWorkflowState();
|
|
8
|
+
if (!presenter.vm.state?.state) return props.element;
|
|
9
|
+
return null;
|
|
31
10
|
});
|
|
11
|
+
const PageEditorAutoSave = Ui.TopBar.Element.createDecorator((Original)=>function(props) {
|
|
12
|
+
if ("autoSave" === props.name) return /*#__PURE__*/ react.createElement(Original, {
|
|
13
|
+
...props,
|
|
14
|
+
element: /*#__PURE__*/ react.createElement(WrappedAutoSave, {
|
|
15
|
+
element: props.element
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
return /*#__PURE__*/ react.createElement(Original, props);
|
|
19
|
+
});
|
|
20
|
+
export { PageEditorAutoSave };
|
|
32
21
|
|
|
33
22
|
//# sourceMappingURL=PageEditorAutoSave.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageEditorAutoSave.js","sources":["../../../src/Components/PageEditor/PageEditorAutoSave.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedAutoSave {\n element?: React.ReactElement | null;\n}\nconst WrappedAutoSave = observer((props: IWrappedAutoSave) => {\n const { presenter } = useWorkflowState();\n /**\n * Autosave should work only when the page does not have a workflow state assigned.\n */\n if (!presenter.vm.state?.state) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageEditorAutoSave = Ui.TopBar.Element.createDecorator(Original => {\n return function PageEditorAutoSaveDecorated(props) {\n if (props.name === \"autoSave\") {\n return <Original {...props} element={<WrappedAutoSave element={props.element} />} />;\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedAutoSave","observer","props","presenter","useWorkflowState","PageEditorAutoSave","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAKf,MAAMC,kBAAkBC,SAAS,CAACC;IAC9B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,KAAK,EAAE,OACrB,OAAOD,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMG,qBAAqBP,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAACQ,CAAAA,WACzD,SAAqCJ,KAAK;QAC7C,IAAIA,AAAe,eAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GAAO,oBAACI,UAAAA;YAAU,GAAGJ,KAAK;YAAE,uBAAS,oBAACF,iBAAeA;gBAAC,SAASE,MAAM,OAAO;;;QAEhF,OAAO,WAAP,GAAO,oBAACI,UAAaJ;IACzB"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PageEditorConfig
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
3
3
|
import { PageFormWorkflowStateTooltip } from "./PageFormWorkflowStateTooltip.js";
|
|
4
4
|
import { PageFormWorkflowStatePublishButton } from "./PageFormWorkflowStatePublishButton.js";
|
|
5
5
|
import { PageEditorTopBar } from "./PageEditorTopBar.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
6
|
+
const PageEditorConfig_PageEditorConfig = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(PageEditorTopBar, null), /*#__PURE__*/ react.createElement(PageEditorConfig, null, /*#__PURE__*/ react.createElement(PageFormWorkflowStateTooltip, null), /*#__PURE__*/ react.createElement(PageFormWorkflowStatePublishButton, null)));
|
|
7
|
+
export { PageEditorConfig_PageEditorConfig as PageEditorConfig };
|
|
9
8
|
|
|
10
9
|
//# sourceMappingURL=PageEditorConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageEditorConfig.js","sources":["../../../src/Components/PageEditor/PageEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig as BaseConfig } from \"@webiny/app-website-builder\";\nimport { PageFormWorkflowStateTooltip } from \"./PageFormWorkflowStateTooltip.js\";\nimport { PageFormWorkflowStatePublishButton } from \"./PageFormWorkflowStatePublishButton.js\";\nimport { PageEditorTopBar } from \"./PageEditorTopBar.js\";\n\nexport const PageEditorConfig = () => {\n return (\n <>\n {/* Toggle editor \"readonly\" mode, and add workflow alerts */}\n <PageEditorTopBar />\n <BaseConfig>\n {/* Should add a button with list of steps and their states + comment button in each row */}\n <PageFormWorkflowStateTooltip />\n {/* should remove publish button from the form */}\n <PageFormWorkflowStatePublishButton />\n </BaseConfig>\n </>\n );\n};\n"],"names":["PageEditorConfig","PageEditorTopBar","BaseConfig","PageFormWorkflowStateTooltip","PageFormWorkflowStatePublishButton"],"mappings":";;;;;AAMO,MAAMA,oCAAmB,IACrB,WAAP,GACI,wDAEI,oBAACC,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,kBAAUA,MAAAA,WAAAA,GAEP,oBAACC,8BAA4BA,OAAAA,WAAAA,GAE7B,oBAACC,oCAAkCA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react, { useEffect } from "react";
|
|
2
2
|
import { useSelectFromDocument } from "@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js";
|
|
3
3
|
import { useApolloClient } from "@apollo/react-hooks";
|
|
4
4
|
import { useAuthentication } from "@webiny/app-admin";
|
|
@@ -7,47 +7,37 @@ import { WB_PAGE_APP } from "../../constants.js";
|
|
|
7
7
|
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
8
8
|
import { observer } from "mobx-react-lite";
|
|
9
9
|
import { useDocumentEditor } from "@webiny/app-website-builder/DocumentEditor/index.js";
|
|
10
|
-
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
editor.updateEditor(state => {
|
|
26
|
-
state.isReadOnly = hasState;
|
|
27
|
-
});
|
|
28
|
-
}, [hasState]);
|
|
29
|
-
return null;
|
|
10
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
11
|
+
const { ContentReview: { WorkflowStateProvider: WorkflowStateProvider } } = Components;
|
|
12
|
+
const ToggleReadonly = observer(()=>{
|
|
13
|
+
const { presenter } = useWorkflowState();
|
|
14
|
+
const editor = useDocumentEditor();
|
|
15
|
+
const hasState = !!presenter.vm.state?.state;
|
|
16
|
+
useEffect(()=>{
|
|
17
|
+
const options = editor.getEditorOptions();
|
|
18
|
+
editor.updateEditor((state)=>{
|
|
19
|
+
state.isReadOnly = options.isReadOnly || hasState;
|
|
20
|
+
});
|
|
21
|
+
}, [
|
|
22
|
+
hasState
|
|
23
|
+
]);
|
|
24
|
+
return null;
|
|
30
25
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
const PageEditorLayout = Ui.Layout.createDecorator((Original)=>function() {
|
|
27
|
+
const page = useSelectFromDocument((doc)=>({
|
|
28
|
+
id: doc.id,
|
|
29
|
+
title: doc.properties.title || "unknown page"
|
|
30
|
+
}));
|
|
31
|
+
const client = useApolloClient();
|
|
32
|
+
const { identity } = useAuthentication();
|
|
33
|
+
return /*#__PURE__*/ react.createElement(WorkflowStateProvider, {
|
|
34
|
+
app: WB_PAGE_APP,
|
|
35
|
+
id: page.id,
|
|
36
|
+
identity: identity,
|
|
37
|
+
client: client,
|
|
38
|
+
title: `Website Builder: ${page.title}`
|
|
39
|
+
}, /*#__PURE__*/ react.createElement(Original, null), /*#__PURE__*/ react.createElement(ToggleReadonly, null));
|
|
38
40
|
});
|
|
39
|
-
|
|
40
|
-
const {
|
|
41
|
-
identity
|
|
42
|
-
} = useAuthentication();
|
|
43
|
-
return /*#__PURE__*/React.createElement(WorkflowStateProvider, {
|
|
44
|
-
app: WB_PAGE_APP,
|
|
45
|
-
id: page.id,
|
|
46
|
-
identity: identity,
|
|
47
|
-
client: client,
|
|
48
|
-
title: `Website Builder: ${page.title}`
|
|
49
|
-
}, /*#__PURE__*/React.createElement(Original, null), /*#__PURE__*/React.createElement(ToggleReadonly, null));
|
|
50
|
-
};
|
|
51
|
-
});
|
|
41
|
+
export { PageEditorLayout };
|
|
52
42
|
|
|
53
43
|
//# sourceMappingURL=PageEditorLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageEditorLayout.js","sources":["../../../src/Components/PageEditor/PageEditorLayout.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useSelectFromDocument } from \"@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport { Components, useWorkflowState } from \"@webiny/app-workflows\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { observer } from \"mobx-react-lite\";\nimport { useDocumentEditor } from \"@webiny/app-website-builder/DocumentEditor/index.js\";\n\nconst { Ui } = PageEditorConfig;\n\nconst {\n ContentReview: { WorkflowStateProvider }\n} = Components;\n\nconst ToggleReadonly = observer(() => {\n const { presenter } = useWorkflowState();\n const editor = useDocumentEditor();\n\n const hasState = !!presenter.vm.state?.state;\n\n useEffect(() => {\n const options = editor.getEditorOptions();\n editor.updateEditor(state => {\n state.isReadOnly = options.isReadOnly || hasState;\n });\n }, [hasState]);\n\n return null;\n});\n\nexport const PageEditorLayout = Ui.Layout.createDecorator(Original => {\n return function PageEditorTopBarWorkflowsState() {\n const page = useSelectFromDocument(doc => {\n return {\n id: doc.id,\n title: doc.properties.title || \"unknown page\"\n };\n });\n\n const client = useApolloClient();\n const { identity } = useAuthentication();\n\n return (\n <WorkflowStateProvider\n app={WB_PAGE_APP}\n id={page.id}\n identity={identity}\n client={client}\n title={`Website Builder: ${page.title}`}\n >\n <Original />\n <ToggleReadonly />\n </WorkflowStateProvider>\n );\n };\n});\n"],"names":["Ui","PageEditorConfig","WorkflowStateProvider","Components","ToggleReadonly","observer","presenter","useWorkflowState","editor","useDocumentEditor","hasState","useEffect","options","state","PageEditorLayout","Original","page","useSelectFromDocument","doc","client","useApolloClient","identity","useAuthentication","WB_PAGE_APP"],"mappings":";;;;;;;;;AAUA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAEf,MAAM,EACF,eAAe,EAAEC,uBAAAA,qBAAqB,EAAE,EAC3C,GAAGC;AAEJ,MAAMC,iBAAiBC,SAAS;IAC5B,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,SAASC;IAEf,MAAMC,WAAW,CAAC,CAACJ,UAAU,EAAE,CAAC,KAAK,EAAE;IAEvCK,UAAU;QACN,MAAMC,UAAUJ,OAAO,gBAAgB;QACvCA,OAAO,YAAY,CAACK,CAAAA;YAChBA,MAAM,UAAU,GAAGD,QAAQ,UAAU,IAAIF;QAC7C;IACJ,GAAG;QAACA;KAAS;IAEb,OAAO;AACX;AAEO,MAAMI,mBAAmBd,GAAG,MAAM,CAAC,eAAe,CAACe,CAAAA,WAC/C;QACH,MAAMC,OAAOC,sBAAsBC,CAAAA,MACxB;gBACH,IAAIA,IAAI,EAAE;gBACV,OAAOA,IAAI,UAAU,CAAC,KAAK,IAAI;YACnC;QAGJ,MAAMC,SAASC;QACf,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QAErB,OAAO,WAAP,GACI,oBAACpB,uBAAqBA;YAClB,KAAKqB;YACL,IAAIP,KAAK,EAAE;YACX,UAAUK;YACV,QAAQF;YACR,OAAO,CAAC,iBAAiB,EAAEH,KAAK,KAAK,EAAE;yBAEvC,oBAACD,UAAAA,OAAAA,WAAAA,GACD,oBAACX,gBAAcA;IAG3B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { useApolloClient } from "@apollo/react-hooks";
|
|
3
3
|
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
4
4
|
import { useSelectFromDocument } from "@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js";
|
|
@@ -7,29 +7,25 @@ import { WorkflowStateProvider } from "@webiny/app-workflows/Components/Workflow
|
|
|
7
7
|
import { WB_PAGE_APP } from "../../constants.js";
|
|
8
8
|
import { PageFormWorkflowState } from "./PageFormWorkflowState.js";
|
|
9
9
|
import { ToggleEditorMode } from "./ToggleEditorMode.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
import { WbPageStatus } from "@webiny/app-website-builder/constants.js";
|
|
11
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
12
|
+
const PageEditorTopBar = Ui.TopBar.Layout.createDecorator((Original)=>function() {
|
|
13
|
+
const page = useSelectFromDocument((doc)=>({
|
|
14
|
+
id: doc.id,
|
|
15
|
+
title: doc.properties.title || "unknown page",
|
|
16
|
+
status: doc.status || "draft"
|
|
17
|
+
}));
|
|
18
|
+
const client = useApolloClient();
|
|
19
|
+
const { identity } = useAuthentication();
|
|
20
|
+
return /*#__PURE__*/ react.createElement(WorkflowStateProvider, {
|
|
21
|
+
app: WB_PAGE_APP,
|
|
22
|
+
id: page.id,
|
|
23
|
+
disabled: page.status !== WbPageStatus.Draft,
|
|
24
|
+
identity: identity,
|
|
25
|
+
client: client,
|
|
26
|
+
title: `Website Builder: ${page.title}`
|
|
27
|
+
}, /*#__PURE__*/ react.createElement(Original, null), /*#__PURE__*/ react.createElement(ToggleEditorMode, null), /*#__PURE__*/ react.createElement(PageFormWorkflowState, null));
|
|
20
28
|
});
|
|
21
|
-
|
|
22
|
-
const {
|
|
23
|
-
identity
|
|
24
|
-
} = useAuthentication();
|
|
25
|
-
return /*#__PURE__*/React.createElement(WorkflowStateProvider, {
|
|
26
|
-
app: WB_PAGE_APP,
|
|
27
|
-
id: page.id,
|
|
28
|
-
identity: identity,
|
|
29
|
-
client: client,
|
|
30
|
-
title: `Website Builder: ${page.title}`
|
|
31
|
-
}, /*#__PURE__*/React.createElement(Original, null), /*#__PURE__*/React.createElement(ToggleEditorMode, null), /*#__PURE__*/React.createElement(PageFormWorkflowState, null));
|
|
32
|
-
};
|
|
33
|
-
});
|
|
29
|
+
export { PageEditorTopBar };
|
|
34
30
|
|
|
35
31
|
//# sourceMappingURL=PageEditorTopBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageEditorTopBar.js","sources":["../../../src/Components/PageEditor/PageEditorTopBar.tsx"],"sourcesContent":["import React from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport {\n type EditorDocument,\n useSelectFromDocument\n} from \"@webiny/app-website-builder/BaseEditor/hooks/useSelectFromDocument.js\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport { WorkflowStateProvider } from \"@webiny/app-workflows/Components/WorkflowState/index.js\";\nimport { WB_PAGE_APP } from \"~/constants.js\";\nimport { PageFormWorkflowState } from \"~/Components/PageEditor/PageFormWorkflowState.js\";\nimport { ToggleEditorMode } from \"~/Components/PageEditor/ToggleEditorMode.js\";\nimport { WbPageStatus, type WbStatus } from \"@webiny/app-website-builder/constants.js\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface PageEditorTopBarEditorDocument extends EditorDocument {\n status: WbStatus;\n}\n\ninterface ISelectedPage {\n id: string;\n title: string;\n status: WbStatus;\n}\n\nexport const PageEditorTopBar = Ui.TopBar.Layout.createDecorator(Original => {\n return function PageEditorTopBarWorkflowsState() {\n const page = useSelectFromDocument<ISelectedPage, PageEditorTopBarEditorDocument>(doc => {\n return {\n id: doc.id,\n title: doc.properties.title || \"unknown page\",\n status: doc.status || \"draft\"\n };\n });\n\n const client = useApolloClient();\n const { identity } = useAuthentication();\n\n return (\n <WorkflowStateProvider\n app={WB_PAGE_APP}\n id={page.id}\n disabled={page.status !== WbPageStatus.Draft}\n identity={identity}\n client={client}\n title={`Website Builder: ${page.title}`}\n >\n <Original />\n <ToggleEditorMode />\n <PageFormWorkflowState />\n </WorkflowStateProvider>\n );\n };\n});\n"],"names":["Ui","PageEditorConfig","PageEditorTopBar","Original","page","useSelectFromDocument","doc","client","useApolloClient","identity","useAuthentication","WorkflowStateProvider","WB_PAGE_APP","WbPageStatus","ToggleEditorMode","PageFormWorkflowState"],"mappings":";;;;;;;;;;AAcA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAYR,MAAMC,mBAAmBF,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACG,CAAAA,WACtD;QACH,MAAMC,OAAOC,sBAAqEC,CAAAA,MACvE;gBACH,IAAIA,IAAI,EAAE;gBACV,OAAOA,IAAI,UAAU,CAAC,KAAK,IAAI;gBAC/B,QAAQA,IAAI,MAAM,IAAI;YAC1B;QAGJ,MAAMC,SAASC;QACf,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QAErB,OAAO,WAAP,GACI,oBAACC,uBAAqBA;YAClB,KAAKC;YACL,IAAIR,KAAK,EAAE;YACX,UAAUA,KAAK,MAAM,KAAKS,aAAa,KAAK;YAC5C,UAAUJ;YACV,QAAQF;YACR,OAAO,CAAC,iBAAiB,EAAEH,KAAK,KAAK,EAAE;yBAEvC,oBAACD,UAAAA,OAAAA,WAAAA,GACD,oBAACW,kBAAgBA,OAAAA,WAAAA,GACjB,oBAACC,uBAAqBA;IAGlC"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Components } from "@webiny/app-workflows";
|
|
3
|
-
const {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
export
|
|
9
|
-
return /*#__PURE__*/React.createElement(WorkflowStateBar, null, ({
|
|
10
|
-
stateBar
|
|
11
|
-
}) => {
|
|
12
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
13
|
-
className: "max-w-screen bg-white p-sm",
|
|
14
|
-
"data-affects-preview": "height"
|
|
15
|
-
}, stateBar);
|
|
16
|
-
});
|
|
17
|
-
};
|
|
3
|
+
const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
|
|
4
|
+
const PageFormWorkflowState = ()=>/*#__PURE__*/ react.createElement(WorkflowStateBar, null, ({ stateBar })=>/*#__PURE__*/ react.createElement("div", {
|
|
5
|
+
className: "max-w-screen bg-white p-sm",
|
|
6
|
+
"data-affects-preview": "height"
|
|
7
|
+
}, stateBar));
|
|
8
|
+
export { PageFormWorkflowState };
|
|
18
9
|
|
|
19
10
|
//# sourceMappingURL=PageFormWorkflowState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageFormWorkflowState.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowState.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const PageFormWorkflowState = () => {\n return (\n <WorkflowStateBar>\n {({ stateBar }) => {\n return (\n <div className={\"max-w-screen bg-white p-sm\"} data-affects-preview={\"height\"}>\n {stateBar}\n </div>\n );\n }}\n </WorkflowStateBar>\n );\n};\n"],"names":["WorkflowStateBar","Components","PageFormWorkflowState","stateBar"],"mappings":";;AAGA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,wBAAwB,IAC1B,WAAP,GACI,oBAACF,kBAAgBA,MACZ,CAAC,EAAEG,QAAQ,EAAE,GACH,WAAP,GACI,oBAAC;YAAI,WAAW;YAA8B,wBAAsB;WAC/DA"}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
3
|
-
import {
|
|
3
|
+
import { WorkflowStateValue, useWorkflowState } from "@webiny/app-workflows";
|
|
4
4
|
import { observer } from "mobx-react-lite";
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
} =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
presenter
|
|
11
|
-
} = useWorkflowState();
|
|
12
|
-
/**
|
|
13
|
-
* Publish button should be visible only when there is no workflow available and when workflow state is approved.
|
|
14
|
-
*/
|
|
15
|
-
if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {
|
|
16
|
-
return props.element;
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
});
|
|
20
|
-
export const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator(Original => {
|
|
21
|
-
return function AutoSaveDecorator(props) {
|
|
22
|
-
if (props.name === "buttonPublish") {
|
|
23
|
-
return /*#__PURE__*/React.createElement(Original, Object.assign({}, props, {
|
|
24
|
-
element: /*#__PURE__*/React.createElement(WrappedPublishButton, {
|
|
25
|
-
element: props.element
|
|
26
|
-
})
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
return /*#__PURE__*/React.createElement(Original, props);
|
|
30
|
-
};
|
|
5
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
6
|
+
const WrappedPublishButton = observer((props)=>{
|
|
7
|
+
const { presenter } = useWorkflowState();
|
|
8
|
+
if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) return props.element;
|
|
9
|
+
return null;
|
|
31
10
|
});
|
|
11
|
+
const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator((Original)=>function(props) {
|
|
12
|
+
if ("buttonPublish" === props.name) return /*#__PURE__*/ react.createElement(Original, {
|
|
13
|
+
...props,
|
|
14
|
+
element: /*#__PURE__*/ react.createElement(WrappedPublishButton, {
|
|
15
|
+
element: props.element
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
return /*#__PURE__*/ react.createElement(Original, props);
|
|
19
|
+
});
|
|
20
|
+
export { PageFormWorkflowStatePublishButton };
|
|
32
21
|
|
|
33
22
|
//# sourceMappingURL=PageFormWorkflowStatePublishButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageFormWorkflowStatePublishButton.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowStatePublishButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\nimport { useWorkflowState, WorkflowStateValue } from \"@webiny/app-workflows\";\nimport { observer } from \"mobx-react-lite\";\n\nconst { Ui } = PageEditorConfig;\n\ninterface IWrappedPublishButtonProps {\n element?: React.ReactElement | null;\n}\n\nconst WrappedPublishButton = observer((props: IWrappedPublishButtonProps) => {\n const { presenter } = useWorkflowState();\n /**\n * Publish button should be visible only when there is no workflow available and when workflow state is approved.\n */\n if (!presenter.vm.workflow || presenter.vm.state?.state === WorkflowStateValue.approved) {\n return props.element;\n }\n\n return null;\n});\n\nexport const PageFormWorkflowStatePublishButton = Ui.TopBar.Action.createDecorator(Original => {\n return function AutoSaveDecorator(props) {\n if (props.name === \"buttonPublish\") {\n return (\n <Original {...props} element={<WrappedPublishButton element={props.element} />} />\n );\n }\n return <Original {...props} />;\n };\n});\n"],"names":["Ui","PageEditorConfig","WrappedPublishButton","observer","props","presenter","useWorkflowState","WorkflowStateValue","PageFormWorkflowStatePublishButton","Original"],"mappings":";;;;AAKA,MAAM,EAAEA,IAAAA,EAAE,EAAE,GAAGC;AAMf,MAAMC,uBAAuBC,SAAS,CAACC;IACnC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IAItB,IAAI,CAACD,UAAU,EAAE,CAAC,QAAQ,IAAIA,UAAU,EAAE,CAAC,KAAK,EAAE,UAAUE,mBAAmB,QAAQ,EACnF,OAAOH,MAAM,OAAO;IAGxB,OAAO;AACX;AAEO,MAAMI,qCAAqCR,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAACS,CAAAA,WACxE,SAA2BL,KAAK;QACnC,IAAIA,AAAe,oBAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACK,UAAAA;YAAU,GAAGL,KAAK;YAAE,uBAAS,oBAACF,sBAAoBA;gBAAC,SAASE,MAAM,OAAO;;;QAGlF,OAAO,WAAP,GAAO,oBAACK,UAAaL;IACzB"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Components } from "@webiny/app-workflows";
|
|
3
3
|
import { PageEditorConfig } from "@webiny/app-website-builder";
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return /*#__PURE__*/React.createElement(WorkflowStateTooltip, null);
|
|
14
|
-
};
|
|
15
|
-
export const PageFormWorkflowStateTooltip = () => {
|
|
16
|
-
return /*#__PURE__*/React.createElement(Ui.TopBar.Action, {
|
|
17
|
-
before: "buttonPublish",
|
|
18
|
-
name: "buttonWorkflowStateTooltip",
|
|
19
|
-
element: /*#__PURE__*/React.createElement(TooltipButton, null)
|
|
20
|
-
});
|
|
21
|
-
};
|
|
4
|
+
const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
|
|
5
|
+
const { Ui: Ui } = PageEditorConfig;
|
|
6
|
+
const TooltipButton = ()=>/*#__PURE__*/ react.createElement(WorkflowStateTooltip, null);
|
|
7
|
+
const PageFormWorkflowStateTooltip = ()=>/*#__PURE__*/ react.createElement(Ui.TopBar.Action, {
|
|
8
|
+
before: "buttonPublish",
|
|
9
|
+
name: "buttonWorkflowStateTooltip",
|
|
10
|
+
element: /*#__PURE__*/ react.createElement(TooltipButton, null)
|
|
11
|
+
});
|
|
12
|
+
export { PageFormWorkflowStateTooltip };
|
|
22
13
|
|
|
23
14
|
//# sourceMappingURL=PageFormWorkflowStateTooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/PageFormWorkflowStateTooltip.js","sources":["../../../src/Components/PageEditor/PageFormWorkflowStateTooltip.tsx"],"sourcesContent":["import React from \"react\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { PageEditorConfig } from \"@webiny/app-website-builder\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Ui } = PageEditorConfig;\n\nconst TooltipButton = () => {\n return <WorkflowStateTooltip />;\n};\n\nexport const PageFormWorkflowStateTooltip = () => {\n return (\n <Ui.TopBar.Action\n before={\"buttonPublish\"}\n name={\"buttonWorkflowStateTooltip\"}\n element={<TooltipButton />}\n />\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Ui","PageEditorConfig","TooltipButton","PageFormWorkflowStateTooltip"],"mappings":";;;AAIA,MAAM,EACF,eAAe,EAAEA,sBAAAA,oBAAoB,EAAE,EAC1C,GAAGC;AAEJ,MAAM,EAAEC,IAAAA,EAAE,EAAE,GAAGC;AAEf,MAAMC,gBAAgB,IACX,WAAP,GAAO,oBAACJ,sBAAoBA;AAGzB,MAAMK,+BAA+B,IACjC,WAAP,GACI,oBAACH,GAAG,MAAM,CAAC,MAAM;QACb,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACE,eAAaA"}
|
|
@@ -2,18 +2,20 @@ import { useEffect } from "react";
|
|
|
2
2
|
import { observer } from "mobx-react-lite";
|
|
3
3
|
import { useWorkflowState } from "@webiny/app-workflows";
|
|
4
4
|
import { useDocumentEditor } from "@webiny/app-website-builder/DocumentEditor/index.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
const ToggleEditorMode = observer(()=>{
|
|
6
|
+
const { presenter } = useWorkflowState();
|
|
7
|
+
const editor = useDocumentEditor();
|
|
8
|
+
const hasState = !!presenter.vm.state?.state;
|
|
9
|
+
useEffect(()=>{
|
|
10
|
+
const options = editor.getEditorOptions();
|
|
11
|
+
editor.updateEditor((state)=>{
|
|
12
|
+
state.isReadOnly = options.isReadOnly || hasState;
|
|
13
|
+
});
|
|
14
|
+
}, [
|
|
15
|
+
hasState
|
|
16
|
+
]);
|
|
17
|
+
return null;
|
|
17
18
|
});
|
|
19
|
+
export { ToggleEditorMode };
|
|
18
20
|
|
|
19
21
|
//# sourceMappingURL=ToggleEditorMode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/PageEditor/ToggleEditorMode.js","sources":["../../../src/Components/PageEditor/ToggleEditorMode.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { useDocumentEditor } from \"@webiny/app-website-builder/DocumentEditor/index.js\";\n\nexport const ToggleEditorMode = observer(() => {\n const { presenter } = useWorkflowState();\n const editor = useDocumentEditor();\n\n const hasState = !!presenter.vm.state?.state;\n\n useEffect(() => {\n const options = editor.getEditorOptions();\n editor.updateEditor(state => {\n state.isReadOnly = options.isReadOnly || hasState;\n });\n }, [hasState]);\n\n return null;\n});\n"],"names":["ToggleEditorMode","observer","presenter","useWorkflowState","editor","useDocumentEditor","hasState","useEffect","options","state"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,SAAS;IACrC,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,SAASC;IAEf,MAAMC,WAAW,CAAC,CAACJ,UAAU,EAAE,CAAC,KAAK,EAAE;IAEvCK,UAAU;QACN,MAAMC,UAAUJ,OAAO,gBAAgB;QACvCA,OAAO,YAAY,CAACK,CAAAA;YAChBA,MAAM,UAAU,GAAGD,QAAQ,UAAU,IAAIF;QAC7C;IACJ,GAAG;QAACA;KAAS;IAEb,OAAO;AACX"}
|