@webiny/app-headless-cms-workflows 0.0.0-unstable.81ae05e56b → 0.0.0-unstable.a4f3e4ea8b
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/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js +28 -39
- package/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js.map +1 -1
- package/Components/CmsEntriesWorkflowStateList/index.js +0 -2
- package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js +41 -63
- package/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js.map +1 -1
- package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js +17 -33
- package/Components/ContentEntryForm/CmsEntryFormScheduleMenuItemAction.js.map +1 -1
- package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js +10 -17
- package/Components/ContentEntryForm/CmsEntryFormTooltipButton.js.map +1 -1
- package/Components/ContentEntryForm/ContentEntryFormWorkflow.js +21 -70
- package/Components/ContentEntryForm/ContentEntryFormWorkflow.js.map +1 -1
- package/Components/ContentEntryForm/index.d.ts +0 -3
- package/Components/ContentEntryForm/index.js +0 -5
- package/Components/OptionItem/OpenInNewWindow.js +28 -36
- package/Components/OptionItem/OpenInNewWindow.js.map +1 -1
- package/Routes/CmsWorkflowsEditor.js +18 -27
- package/Routes/CmsWorkflowsEditor.js.map +1 -1
- package/Routes/index.js +0 -2
- package/features/WorkflowStateCacheHandler.d.ts +11 -0
- package/features/WorkflowStateCacheHandler.js +50 -0
- package/features/WorkflowStateCacheHandler.js.map +1 -0
- package/features/feature.d.ts +1 -0
- package/features/feature.js +11 -0
- package/features/feature.js.map +1 -0
- package/index.js +14 -6
- package/index.js.map +1 -1
- package/package.json +24 -17
- package/presentation/CmsWorkflowsEditorView.d.ts +5 -0
- package/presentation/CmsWorkflowsEditorView.js +90 -0
- package/presentation/CmsWorkflowsEditorView.js.map +1 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.d.ts +25 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.js +70 -0
- package/presentation/ContentEntryFormPresenterWorkflowDecorator.js.map +1 -0
- package/presentation/TableRowMapperWorkflowDecorator.d.ts +11 -0
- package/presentation/TableRowMapperWorkflowDecorator.js +25 -0
- package/presentation/TableRowMapperWorkflowDecorator.js.map +1 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.d.ts +8 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.js +24 -0
- package/presentation/WorkflowStateGetEntryFieldSelection.js.map +1 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.d.ts +8 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.js +24 -0
- package/presentation/WorkflowStateListEntriesFieldSelection.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.d.ts +15 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js +50 -0
- package/presentation/cmsWorkflowsEditor/CmsWorkflowsEditorPresenter.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/abstractions.d.ts +19 -0
- package/presentation/cmsWorkflowsEditor/abstractions.js +5 -0
- package/presentation/cmsWorkflowsEditor/abstractions.js.map +1 -0
- package/presentation/cmsWorkflowsEditor/feature.d.ts +3 -0
- package/presentation/cmsWorkflowsEditor/feature.js +17 -0
- package/presentation/cmsWorkflowsEditor/feature.js.map +1 -0
- package/presentation/feature.d.ts +1 -0
- package/presentation/feature.js +21 -0
- package/presentation/feature.js.map +1 -0
- package/routes.js +17 -18
- package/routes.js.map +1 -1
- package/types.d.ts +10 -0
- package/types.js +0 -0
- package/utils/appName.js +9 -12
- package/utils/appName.js.map +1 -1
- package/Components/CmsEntriesWorkflowStateList/index.js.map +0 -1
- package/Components/CmsWorkflows/CmsWorkflowsEditorView.d.ts +0 -3
- package/Components/CmsWorkflows/CmsWorkflowsEditorView.js +0 -128
- package/Components/CmsWorkflows/CmsWorkflowsEditorView.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.js +0 -38
- package/Components/ContentEntryForm/CmsEntryFormPublishButton.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js +0 -39
- package/Components/ContentEntryForm/CmsEntryFormSaveAndPublishButton.js.map +0 -1
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.d.ts +0 -2
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.js +0 -37
- package/Components/ContentEntryForm/CmsEntryFormSaveButton.js.map +0 -1
- package/Components/ContentEntryForm/ContentEntryWorkflow.d.ts +0 -2
- package/Components/ContentEntryForm/ContentEntryWorkflow.js +0 -35
- package/Components/ContentEntryForm/ContentEntryWorkflow.js.map +0 -1
- package/Components/ContentEntryForm/index.js.map +0 -1
- package/Routes/index.js.map +0 -1
|
@@ -1,45 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Components } from "@webiny/app-headless-cms";
|
|
1
|
+
import react from "react";
|
|
3
2
|
import { Sidebar } from "@webiny/admin-ui";
|
|
4
|
-
import { ReactComponent
|
|
5
|
-
import { Components
|
|
6
|
-
import {
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/flowchart.svg";
|
|
4
|
+
import { Components } from "@webiny/app-workflows";
|
|
5
|
+
import { ContentEntryListConfig } from "@webiny/app-headless-cms/admin/config/contentEntries/index.js";
|
|
7
6
|
import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
7
|
+
import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
8
8
|
import { createAppName } from "../../utils/appName.js";
|
|
9
|
-
|
|
10
|
-
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} = WorkflowsComponents;
|
|
15
|
-
const {
|
|
16
|
-
Footer
|
|
17
|
-
} = Components.Sidebar;
|
|
18
|
-
export const CmsEntriesWorkflowStateListFooterMenu = Footer.createDecorator(Original => {
|
|
19
|
-
return function CmsEntriesWorkflowStateListFooterMenu(props) {
|
|
20
|
-
const {
|
|
21
|
-
contentModel: model
|
|
22
|
-
} = useContentEntries();
|
|
23
|
-
const client = useApolloClient();
|
|
9
|
+
const { Overlay: { WorkflowStateListAppOverlay: WorkflowStateListAppOverlay } } = Components;
|
|
10
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
11
|
+
const ContentReviewsMenuItem = ()=>{
|
|
12
|
+
const presenter = useContentEntriesPresenter();
|
|
13
|
+
const model = presenter.vm.model;
|
|
24
14
|
const app = createAppName(model);
|
|
25
|
-
return /*#__PURE__*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}))
|
|
42
|
-
|
|
43
|
-
});
|
|
15
|
+
return /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(WorkflowStateListAppOverlay, {
|
|
16
|
+
app: app
|
|
17
|
+
}, ({ showOverlay })=>/*#__PURE__*/ react.createElement("div", {
|
|
18
|
+
className: "list-none"
|
|
19
|
+
}, /*#__PURE__*/ react.createElement(Sidebar.Item, {
|
|
20
|
+
onClick: showOverlay,
|
|
21
|
+
text: "Content Reviews",
|
|
22
|
+
icon: /*#__PURE__*/ react.createElement(Sidebar.Item.Icon, {
|
|
23
|
+
element: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
24
|
+
label: "Content Reviews"
|
|
25
|
+
})
|
|
26
|
+
}))));
|
|
27
|
+
};
|
|
28
|
+
const CmsEntriesWorkflowStateListFooterMenu = ()=>/*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
|
|
29
|
+
name: "content-reviews",
|
|
30
|
+
element: /*#__PURE__*/ react.createElement(ContentReviewsMenuItem, null)
|
|
31
|
+
}));
|
|
32
|
+
export { CmsEntriesWorkflowStateListFooterMenu };
|
|
44
33
|
|
|
45
34
|
//# sourceMappingURL=CmsEntriesWorkflowStateListFooterMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.js","sources":["../../../src/Components/CmsEntriesWorkflowStateList/CmsEntriesWorkflowStateListFooterMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { ReactComponent as WorkflowStateListIcon } from \"@webiny/icons/flowchart.svg\";\nimport { Components as WorkflowsComponents } from \"@webiny/app-workflows\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/admin/config/contentEntries/index.js\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { createAppName } from \"~/utils/appName.js\";\n\nconst {\n Overlay: { WorkflowStateListAppOverlay }\n} = WorkflowsComponents;\n\nconst { Browser } = ContentEntryListConfig;\n\nconst ContentReviewsMenuItem = () => {\n const presenter = useContentEntriesPresenter();\n\n const model = presenter.vm.model;\n const app = createAppName(model);\n\n return (\n <IsModelPublishable>\n <WorkflowStateListAppOverlay app={app}>\n {({ showOverlay }) => {\n return (\n <div className={\"list-none\"}>\n <Sidebar.Item\n onClick={showOverlay}\n text={\"Content Reviews\"}\n icon={\n <Sidebar.Item.Icon\n element={<WorkflowStateListIcon />}\n label={\"Content Reviews\"}\n />\n }\n />\n </div>\n );\n }}\n </WorkflowStateListAppOverlay>\n </IsModelPublishable>\n );\n};\n\nexport const CmsEntriesWorkflowStateListFooterMenu = () => {\n return (\n <ContentEntryListConfig>\n <Browser.Sidebar.Footer name={\"content-reviews\"} element={<ContentReviewsMenuItem />} />\n </ContentEntryListConfig>\n );\n};\n"],"names":["WorkflowStateListAppOverlay","WorkflowsComponents","Browser","ContentEntryListConfig","ContentReviewsMenuItem","presenter","useContentEntriesPresenter","model","app","createAppName","IsModelPublishable","showOverlay","Sidebar","WorkflowStateListIcon","CmsEntriesWorkflowStateListFooterMenu"],"mappings":";;;;;;;;AASA,MAAM,EACF,SAAS,EAAEA,6BAAAA,2BAA2B,EAAE,EAC3C,GAAGC;AAEJ,MAAM,EAAEC,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,yBAAyB;IAC3B,MAAMC,YAAYC;IAElB,MAAMC,QAAQF,UAAU,EAAE,CAAC,KAAK;IAChC,MAAMG,MAAMC,cAAcF;IAE1B,OAAO,WAAP,GACI,oBAACG,oBAAkBA,MAAAA,WAAAA,GACf,oBAACV,6BAA2BA;QAAC,KAAKQ;OAC7B,CAAC,EAAEG,WAAW,EAAE,GACN,WAAP,GACI,oBAAC;YAAI,WAAW;yBACZ,oBAACC,QAAQ,IAAI;YACT,SAASD;YACT,MAAM;YACN,oBACI,oBAACC,QAAQ,IAAI,CAAC,IAAI;gBACd,uBAAS,oBAACC,gBAAqBA;gBAC/B,OAAO;;;AAU/C;AAEO,MAAMC,wCAAwC,IAC1C,WAAP,GACI,oBAACX,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,OAAO,CAAC,MAAM;QAAC,MAAM;QAAmB,uBAAS,oBAACE,wBAAsBA"}
|
|
@@ -1,69 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useRoute } from "@webiny/app";
|
|
1
|
+
import react, { useCallback } from "react";
|
|
2
|
+
import { useFeature, useRoute } from "@webiny/app";
|
|
3
3
|
import { useToast } from "@webiny/admin-ui";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ReactComponent
|
|
4
|
+
import { InternalContentEntryEditorConfig, usePermission } from "@webiny/app-headless-cms";
|
|
5
|
+
import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js";
|
|
6
|
+
import { RevisionsListFeature } from "@webiny/app-headless-cms/presentation/contentEntries/revisionsList/feature.js";
|
|
7
|
+
import { ReactComponent } from "@webiny/icons/new_releases.svg";
|
|
8
8
|
import { IsModelPublishable } from "@webiny/app-headless-cms/exports/admin/cms.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
9
|
+
import { OptionsMenuItem } from "@webiny/app-admin";
|
|
10
|
+
const { Actions: Actions } = InternalContentEntryEditorConfig;
|
|
11
|
+
const CreateNewRevisionMenuItem = ()=>{
|
|
12
|
+
const toast = useToast();
|
|
13
|
+
const { setRouteParams } = useRoute();
|
|
14
|
+
const { canEdit } = usePermission();
|
|
15
|
+
const formPresenter = useContentEntryFormPresenter();
|
|
16
|
+
const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);
|
|
17
|
+
const entry = formPresenter.vm.entry;
|
|
18
|
+
const onClick = useCallback(async ()=>{
|
|
19
|
+
if (!entry) return;
|
|
20
|
+
const newEntry = await revisionsPresenter.createRevision(entry.id);
|
|
21
|
+
if (!newEntry) return void toast.showWarningToast({
|
|
22
|
+
title: "Could not create a new revision."
|
|
23
|
+
});
|
|
24
|
+
setRouteParams((params)=>({
|
|
25
|
+
...params,
|
|
26
|
+
id: newEntry.id
|
|
27
|
+
}));
|
|
28
|
+
}, [
|
|
29
|
+
entry,
|
|
30
|
+
revisionsPresenter
|
|
31
|
+
]);
|
|
32
|
+
if (!entry || !canEdit(entry, "cms.contentEntry")) return null;
|
|
33
|
+
return /*#__PURE__*/ react.createElement(OptionsMenuItem, {
|
|
34
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
35
|
+
disabled: !entry.id,
|
|
36
|
+
label: "Create New Revision",
|
|
37
|
+
onAction: onClick,
|
|
38
|
+
"data-testid": "cms.content-form.header.createNewRevision"
|
|
37
39
|
});
|
|
38
|
-
if (newRevision.error) {
|
|
39
|
-
toast.showWarningToast({
|
|
40
|
-
title: "Could not create a new revision.",
|
|
41
|
-
description: newRevision.error.message
|
|
42
|
-
});
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
setRouteParams(params => {
|
|
46
|
-
return {
|
|
47
|
-
...params,
|
|
48
|
-
id: newRevision.entry.id
|
|
49
|
-
};
|
|
50
|
-
});
|
|
51
|
-
}, [entry, persistEntry]);
|
|
52
|
-
if (!canEdit(entry, "cms.contentEntry")) {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
return /*#__PURE__*/React.createElement(OptionsMenuItem, {
|
|
56
|
-
icon: /*#__PURE__*/React.createElement(NewReleaseIcon, null),
|
|
57
|
-
label: `Create New Revision`,
|
|
58
|
-
onAction: onClick,
|
|
59
|
-
"data-testid": "cms.content-form.header.createNewRevision"
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
export const CmsEntryFormCreateNewRevisionButton = () => {
|
|
63
|
-
return /*#__PURE__*/React.createElement(ContentEntryEditorConfig, null, /*#__PURE__*/React.createElement(IsModelPublishable, null, /*#__PURE__*/React.createElement(Actions.MenuItemAction, {
|
|
64
|
-
name: "createNewRevision",
|
|
65
|
-
element: /*#__PURE__*/React.createElement(CreateNewRevisionMenuItem, null)
|
|
66
|
-
})));
|
|
67
40
|
};
|
|
41
|
+
const CmsEntryFormCreateNewRevisionButton = ()=>/*#__PURE__*/ react.createElement(InternalContentEntryEditorConfig, null, /*#__PURE__*/ react.createElement(IsModelPublishable, null, /*#__PURE__*/ react.createElement(Actions.MenuItemAction, {
|
|
42
|
+
name: "createNewRevision",
|
|
43
|
+
element: /*#__PURE__*/ react.createElement(CreateNewRevisionMenuItem, null)
|
|
44
|
+
})));
|
|
45
|
+
export { CmsEntryFormCreateNewRevisionButton };
|
|
68
46
|
|
|
69
47
|
//# sourceMappingURL=CmsEntryFormCreateNewRevisionButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js","sources":["../../../src/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app\";\nimport { useRoute } from \"@webiny/app\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { InternalContentEntryEditorConfig, usePermission } from \"@webiny/app-headless-cms\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { RevisionsListFeature } from \"@webiny/app-headless-cms/presentation/contentEntries/revisionsList/feature.js\";\nimport { ReactComponent as NewReleaseIcon } from \"@webiny/icons/new_releases.svg\";\nimport { IsModelPublishable } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { OptionsMenuItem } from \"@webiny/app-admin\";\n\nconst { Actions } = InternalContentEntryEditorConfig;\n\nconst CreateNewRevisionMenuItem = () => {\n const toast = useToast();\n const { setRouteParams } = useRoute();\n const { canEdit } = usePermission();\n const formPresenter = useContentEntryFormPresenter();\n const { presenter: revisionsPresenter } = useFeature(RevisionsListFeature);\n\n const entry = formPresenter.vm.entry;\n\n const onClick = useCallback(async () => {\n if (!entry) {\n return;\n }\n\n const newEntry = await revisionsPresenter.createRevision(entry.id);\n\n if (!newEntry) {\n toast.showWarningToast({\n title: \"Could not create a new revision.\"\n });\n return;\n }\n\n setRouteParams(params => {\n return { ...params, id: newEntry.id };\n });\n }, [entry, revisionsPresenter]);\n\n if (!entry || !canEdit(entry, \"cms.contentEntry\")) {\n return null;\n }\n\n return (\n <OptionsMenuItem\n icon={<NewReleaseIcon />}\n disabled={!entry.id}\n label={`Create New Revision`}\n onAction={onClick}\n data-testid={\"cms.content-form.header.createNewRevision\"}\n />\n );\n};\n\nexport const CmsEntryFormCreateNewRevisionButton = () => {\n return (\n <InternalContentEntryEditorConfig>\n <IsModelPublishable>\n <Actions.MenuItemAction\n name={\"createNewRevision\"}\n element={<CreateNewRevisionMenuItem />}\n />\n </IsModelPublishable>\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["Actions","InternalContentEntryEditorConfig","CreateNewRevisionMenuItem","toast","useToast","setRouteParams","useRoute","canEdit","usePermission","formPresenter","useContentEntryFormPresenter","revisionsPresenter","useFeature","RevisionsListFeature","entry","onClick","useCallback","newEntry","params","OptionsMenuItem","NewReleaseIcon","CmsEntryFormCreateNewRevisionButton","IsModelPublishable"],"mappings":";;;;;;;;;AAWA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEpB,MAAMC,4BAA4B;IAC9B,MAAMC,QAAQC;IACd,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAC3B,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAMC,gBAAgBC;IACtB,MAAM,EAAE,WAAWC,kBAAkB,EAAE,GAAGC,WAAWC;IAErD,MAAMC,QAAQL,cAAc,EAAE,CAAC,KAAK;IAEpC,MAAMM,UAAUC,YAAY;QACxB,IAAI,CAACF,OACD;QAGJ,MAAMG,WAAW,MAAMN,mBAAmB,cAAc,CAACG,MAAM,EAAE;QAEjE,IAAI,CAACG,UAAU,YACXd,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;QAIJE,eAAea,CAAAA,SACJ;gBAAE,GAAGA,MAAM;gBAAE,IAAID,SAAS,EAAE;YAAC;IAE5C,GAAG;QAACH;QAAOH;KAAmB;IAE9B,IAAI,CAACG,SAAS,CAACP,QAAQO,OAAO,qBAC1B,OAAO;IAGX,OAAO,WAAP,GACI,oBAACK,iBAAeA;QACZ,oBAAM,oBAACC,gBAAcA;QACrB,UAAU,CAACN,MAAM,EAAE;QACnB,OAAO;QACP,UAAUC;QACV,eAAa;;AAGzB;AAEO,MAAMM,sCAAsC,IACxC,WAAP,GACI,oBAACpB,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACqB,oBAAkBA,MAAAA,WAAAA,GACf,oBAACtB,QAAQ,cAAc;QACnB,MAAM;QACN,uBAAS,oBAACE,2BAAyBA"}
|
|
@@ -1,38 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { ContentEntryEditorConfig } from "@webiny/app-headless-cms";
|
|
3
|
-
import { useWorkflowState
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const {
|
|
8
|
-
|
|
9
|
-
|
|
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 { 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.hasWorkflow || presenter.vm.isApproved) ;
|
|
9
|
+
else if ("schedule" === props.name) return null;
|
|
19
10
|
return props.children;
|
|
20
|
-
} else if (props.name === "schedule") {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
return props.children;
|
|
24
11
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}));
|
|
35
|
-
};
|
|
36
|
-
});
|
|
12
|
+
const CmsEntryFormScheduleMenuItemAction = MenuItemAction.createDecorator((Original)=>function(props) {
|
|
13
|
+
return /*#__PURE__*/ react.createElement(Original, {
|
|
14
|
+
...props,
|
|
15
|
+
element: /*#__PURE__*/ react.createElement(OverrideScheduleMenuItemAction, {
|
|
16
|
+
name: props.name
|
|
17
|
+
}, props.element)
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
export { CmsEntryFormScheduleMenuItemAction };
|
|
37
21
|
|
|
38
22
|
//# sourceMappingURL=CmsEntryFormScheduleMenuItemAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 } 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.hasWorkflow || presenter.vm.isApproved) {\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","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,CAACD,UAAU,EAAE,CAAC,WAAW,IAAIA,UAAU,EAAE,CAAC,UAAU;SAEjD,IAAID,AAAe,eAAfA,MAAM,IAAI,EACjB,OAAO;IAEX,OAAOA,MAAM,QAAQ;AACzB;AAIO,MAAMG,qCAAqCL,eAAe,eAAe,CAACM,CAAAA,WACtE,SAAgDJ,KAAK;QACxD,OAAO,WAAP,GACI,oBAACI,UAAAA;YACI,GAAGJ,KAAK;YACT,uBACI,oBAACD,gCAA8BA;gBAAC,MAAMC,MAAM,IAAI;eAC3CA,MAAM,OAAO;;IAKlC"}
|
|
@@ -1,20 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Components } from "@webiny/app-workflows";
|
|
3
|
-
import {
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
};
|
|
3
|
+
import { InternalContentEntryEditorConfig } from "@webiny/app-headless-cms";
|
|
4
|
+
const { ContentReview: { WorkflowStateTooltip: WorkflowStateTooltip } } = Components;
|
|
5
|
+
const { Actions: Actions } = InternalContentEntryEditorConfig;
|
|
6
|
+
const CmsEntryFormTooltipButton = ()=>/*#__PURE__*/ react.createElement(InternalContentEntryEditorConfig, 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,"
|
|
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 { InternalContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\n\nconst {\n ContentReview: { WorkflowStateTooltip }\n} = Components;\n\nconst { Actions } = InternalContentEntryEditorConfig;\n\nexport const CmsEntryFormTooltipButton = () => {\n return (\n <InternalContentEntryEditorConfig>\n <Actions.ButtonAction\n before={\"save\"}\n name={\"workflowStateTooltip\"}\n element={<WorkflowStateTooltip />}\n />\n </InternalContentEntryEditorConfig>\n );\n};\n"],"names":["WorkflowStateTooltip","Components","Actions","InternalContentEntryEditorConfig","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,kCAAgCA,MAAAA,WAAAA,GAC7B,oBAACD,QAAQ,YAAY;QACjB,QAAQ;QACR,MAAM;QACN,uBAAS,oBAACF,sBAAoBA"}
|
|
@@ -1,73 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { observer } from "mobx-react-lite";
|
|
3
|
+
import { Alert } from "@webiny/admin-ui";
|
|
4
|
+
import { ContentEntryFormContent } from "@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js";
|
|
5
|
+
import { useContentEntryFormPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js";
|
|
6
|
+
import { Components, useWorkflowState } from "@webiny/app-workflows";
|
|
5
7
|
import { CMS_MODEL_SINGLETON_TAG } from "@webiny/app-headless-cms-common";
|
|
6
|
-
const {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
|
|
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!");
|
|
30
|
-
};
|
|
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);
|
|
44
|
-
};
|
|
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
|
|
53
|
-
});
|
|
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
|
-
});
|
|
8
|
+
const { ContentReview: { WorkflowStateBar: WorkflowStateBar } } = Components;
|
|
9
|
+
const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator((Original)=>observer(function(props) {
|
|
10
|
+
const formPresenter = useContentEntryFormPresenter();
|
|
11
|
+
const { presenter } = useWorkflowState();
|
|
12
|
+
const model = formPresenter.vm.model;
|
|
13
|
+
const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);
|
|
14
|
+
if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) return /*#__PURE__*/ react.createElement(Original, props);
|
|
15
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement("div", {
|
|
16
|
+
className: "max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed"
|
|
17
|
+
}, /*#__PURE__*/ react.createElement(WorkflowStateBar, null), presenter.vm.hasState ? /*#__PURE__*/ react.createElement(Alert, {
|
|
18
|
+
type: "danger",
|
|
19
|
+
className: "mt-sm"
|
|
20
|
+
}, "Any changes you do on the entry will not be stored!") : null), /*#__PURE__*/ react.createElement(Original, props));
|
|
21
|
+
}));
|
|
22
|
+
export { ContentEntryFormWorkflow };
|
|
72
23
|
|
|
73
24
|
//# sourceMappingURL=ContentEntryFormWorkflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Components/ContentEntryForm/ContentEntryFormWorkflow.js","sources":["../../../src/Components/ContentEntryForm/ContentEntryFormWorkflow.tsx"],"sourcesContent":["import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Alert } from \"@webiny/admin-ui\";\nimport { ContentEntryFormContent } from \"@webiny/app-headless-cms/presentation/contentEntries/views/layout/index.js\";\nimport { useContentEntryFormPresenter } from \"@webiny/app-headless-cms/presentation/contentEntries/form/useContentEntryFormPresenter.js\";\nimport { useWorkflowState } from \"@webiny/app-workflows\";\nimport { Components } from \"@webiny/app-workflows\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\n\nconst {\n ContentReview: { WorkflowStateBar }\n} = Components;\n\nexport const ContentEntryFormWorkflow = ContentEntryFormContent.createDecorator(Original => {\n return observer(function ContentEntryFormWorkflowDecorator(props) {\n const formPresenter = useContentEntryFormPresenter();\n const { presenter } = useWorkflowState();\n const model = formPresenter.vm.model;\n\n const isSingleton = model.tags.includes(CMS_MODEL_SINGLETON_TAG);\n\n if (isSingleton || formPresenter.vm.isNewEntry || !presenter.vm.hasWorkflow) {\n return <Original {...props} />;\n }\n\n return (\n <>\n <div\n className={\n \"max-w-screen bg-white p-sm border-solid border-b-sm border-neutral-dimmed\"\n }\n >\n <WorkflowStateBar />\n {presenter.vm.hasState ? (\n <Alert type=\"danger\" className={\"mt-sm\"}>\n Any changes you do on the entry will not be stored!\n </Alert>\n ) : null}\n </div>\n <Original {...props} />\n </>\n );\n });\n});\n"],"names":["WorkflowStateBar","Components","ContentEntryFormWorkflow","ContentEntryFormContent","Original","observer","props","formPresenter","useContentEntryFormPresenter","presenter","useWorkflowState","model","isSingleton","CMS_MODEL_SINGLETON_TAG","Alert"],"mappings":";;;;;;;AASA,MAAM,EACF,eAAe,EAAEA,kBAAAA,gBAAgB,EAAE,EACtC,GAAGC;AAEG,MAAMC,2BAA2BC,wBAAwB,eAAe,CAACC,CAAAA,WACrEC,SAAS,SAA2CC,KAAK;QAC5D,MAAMC,gBAAgBC;QACtB,MAAM,EAAEC,SAAS,EAAE,GAAGC;QACtB,MAAMC,QAAQJ,cAAc,EAAE,CAAC,KAAK;QAEpC,MAAMK,cAAcD,MAAM,IAAI,CAAC,QAAQ,CAACE;QAExC,IAAID,eAAeL,cAAc,EAAE,CAAC,UAAU,IAAI,CAACE,UAAU,EAAE,CAAC,WAAW,EACvE,OAAO,WAAP,GAAO,oBAACL,UAAaE;QAGzB,OAAO,WAAP,GACI,wDACI,oBAAC;YACG,WACI;yBAGJ,oBAACN,kBAAgBA,OAChBS,UAAU,EAAE,CAAC,QAAQ,GAAG,WAAH,GAClB,oBAACK,OAAKA;YAAC,MAAK;YAAS,WAAW;WAAS,yDAGzC,qBAER,oBAACV,UAAaE;IAG1B"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { ContentEntryFormWorkflow } from "./ContentEntryFormWorkflow.js";
|
|
2
|
-
export { ContentEntryWorkflow } from "./ContentEntryWorkflow.js";
|
|
3
2
|
export { CmsEntryFormTooltipButton } from "./CmsEntryFormTooltipButton.js";
|
|
4
3
|
export { CmsEntryFormScheduleMenuItemAction } from "./CmsEntryFormScheduleMenuItemAction.js";
|
|
5
|
-
export { CmsEntryFormSaveAndPublishButton } from "./CmsEntryFormSaveAndPublishButton.js";
|
|
6
|
-
export { CmsEntryFormSaveButton } from "./CmsEntryFormSaveButton.js";
|
|
7
4
|
export { CmsEntryFormCreateNewRevisionButton } from "./CmsEntryFormCreateNewRevisionButton.js";
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
export { ContentEntryFormWorkflow } from "./ContentEntryFormWorkflow.js";
|
|
2
|
-
export { ContentEntryWorkflow } from "./ContentEntryWorkflow.js";
|
|
3
2
|
export { CmsEntryFormTooltipButton } from "./CmsEntryFormTooltipButton.js";
|
|
4
3
|
export { CmsEntryFormScheduleMenuItemAction } from "./CmsEntryFormScheduleMenuItemAction.js";
|
|
5
|
-
export { CmsEntryFormSaveAndPublishButton } from "./CmsEntryFormSaveAndPublishButton.js";
|
|
6
|
-
export { CmsEntryFormSaveButton } from "./CmsEntryFormSaveButton.js";
|
|
7
4
|
export { CmsEntryFormCreateNewRevisionButton } from "./CmsEntryFormCreateNewRevisionButton.js";
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,44 +1,36 @@
|
|
|
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-headless-cms/routes.js";
|
|
7
7
|
import { isCmsAppName, parseAppName } from "../../utils/appName.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
|
-
|
|
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
|