@webiny/app-headless-cms-workflows 0.0.0-unstable.0d717d18dd → 0.0.0-unstable.33e4fd9647

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/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import React from "react";
2
- export declare const CmsWorkflows: () => React.JSX.Element;
2
+ export declare const CmsWorkflows: () => React.JSX.Element | null;
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import react from "react";
2
- import { RegisterFeature, Wcp } from "@webiny/app-admin";
2
+ import { RegisterFeature, useFeatureFlags } from "@webiny/app-admin";
3
3
  import { CmsWorkflowsEditor } from "./Routes/index.js";
4
4
  import { CmsEntryFormScheduleMenuItemAction, CmsEntryFormTooltipButton, ContentEntryFormWorkflow } from "./Components/ContentEntryForm/index.js";
5
5
  import { CmsEntriesWorkflowStateListFooterMenu } from "./Components/CmsEntriesWorkflowStateList/index.js";
@@ -8,13 +8,17 @@ import { CmsEntryFormCreateNewRevisionButton } from "./Components/ContentEntryFo
8
8
  import { CmsWorkflowsFeature } from "./presentation/feature.js";
9
9
  import { CmsWorkflowsCacheFeature } from "./features/feature.js";
10
10
  import { CmsWorkflowsEditorPresenterFeature } from "./presentation/cmsWorkflowsEditor/feature.js";
11
- const CmsWorkflows = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseWorkflows, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
11
+ const CmsWorkflows = ()=>{
12
+ const featureFlags = useFeatureFlags();
13
+ if (!featureFlags.isEnabled("advancedPublishingWorkflow")) return null;
14
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
12
15
  feature: CmsWorkflowsFeature
13
16
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
14
17
  feature: CmsWorkflowsCacheFeature
15
18
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
16
19
  feature: CmsWorkflowsEditorPresenterFeature
17
20
  }), /*#__PURE__*/ react.createElement(ListOpenInNewWindow, null), /*#__PURE__*/ react.createElement(CmsEntriesWorkflowStateListFooterMenu, null), /*#__PURE__*/ react.createElement(CmsWorkflowsEditor, null), /*#__PURE__*/ react.createElement(ContentEntryFormWorkflow, null), /*#__PURE__*/ react.createElement(CmsEntryFormTooltipButton, null), /*#__PURE__*/ react.createElement(CmsEntryFormScheduleMenuItemAction, null), /*#__PURE__*/ react.createElement(CmsEntryFormCreateNewRevisionButton, null));
21
+ };
18
22
  export { CmsWorkflows };
19
23
 
20
24
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, Wcp } from \"@webiny/app-admin\";\nimport { CmsWorkflowsEditor } from \"~/Routes/index.js\";\nimport {\n CmsEntryFormScheduleMenuItemAction,\n CmsEntryFormTooltipButton,\n ContentEntryFormWorkflow\n} from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntriesWorkflowStateListFooterMenu } from \"~/Components/CmsEntriesWorkflowStateList/index.js\";\nimport { ListOpenInNewWindow } from \"~/Components/OptionItem/OpenInNewWindow.js\";\nimport { CmsEntryFormCreateNewRevisionButton } from \"~/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js\";\nimport { CmsWorkflowsFeature } from \"~/presentation/feature.js\";\nimport { CmsWorkflowsCacheFeature } from \"~/features/feature.js\";\nimport { CmsWorkflowsEditorPresenterFeature } from \"~/presentation/cmsWorkflowsEditor/feature.js\";\n\nexport const CmsWorkflows = () => {\n return (\n <Wcp.CanUseWorkflows>\n <RegisterFeature feature={CmsWorkflowsFeature} />\n <RegisterFeature feature={CmsWorkflowsCacheFeature} />\n <RegisterFeature feature={CmsWorkflowsEditorPresenterFeature} />\n <ListOpenInNewWindow />\n <CmsEntriesWorkflowStateListFooterMenu />\n <CmsWorkflowsEditor />\n <ContentEntryFormWorkflow />\n <CmsEntryFormTooltipButton />\n <CmsEntryFormScheduleMenuItemAction />\n <CmsEntryFormCreateNewRevisionButton />\n </Wcp.CanUseWorkflows>\n );\n};\n"],"names":["CmsWorkflows","Wcp","RegisterFeature","CmsWorkflowsFeature","CmsWorkflowsCacheFeature","CmsWorkflowsEditorPresenterFeature","ListOpenInNewWindow","CmsEntriesWorkflowStateListFooterMenu","CmsWorkflowsEditor","ContentEntryFormWorkflow","CmsEntryFormTooltipButton","CmsEntryFormScheduleMenuItemAction","CmsEntryFormCreateNewRevisionButton"],"mappings":";;;;;;;;;;AAeO,MAAMA,eAAe,IACjB,WAAP,GACI,oBAACC,IAAI,eAAe,sBAChB,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,uCAAqCA,OAAAA,WAAAA,GACtC,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,0BAAwBA,OAAAA,WAAAA,GACzB,oBAACC,2BAAyBA,OAAAA,WAAAA,GAC1B,oBAACC,oCAAkCA,OAAAA,WAAAA,GACnC,oBAACC,qCAAmCA"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature, useFeatureFlags } from \"@webiny/app-admin\";\nimport { CmsWorkflowsEditor } from \"~/Routes/index.js\";\nimport {\n CmsEntryFormScheduleMenuItemAction,\n CmsEntryFormTooltipButton,\n ContentEntryFormWorkflow\n} from \"~/Components/ContentEntryForm/index.js\";\nimport { CmsEntriesWorkflowStateListFooterMenu } from \"~/Components/CmsEntriesWorkflowStateList/index.js\";\nimport { ListOpenInNewWindow } from \"~/Components/OptionItem/OpenInNewWindow.js\";\nimport { CmsEntryFormCreateNewRevisionButton } from \"~/Components/ContentEntryForm/CmsEntryFormCreateNewRevisionButton.js\";\nimport { CmsWorkflowsFeature } from \"~/presentation/feature.js\";\nimport { CmsWorkflowsCacheFeature } from \"~/features/feature.js\";\nimport { CmsWorkflowsEditorPresenterFeature } from \"~/presentation/cmsWorkflowsEditor/feature.js\";\n\nexport const CmsWorkflows = () => {\n const featureFlags = useFeatureFlags();\n\n if (!featureFlags.isEnabled(\"advancedPublishingWorkflow\")) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={CmsWorkflowsFeature} />\n <RegisterFeature feature={CmsWorkflowsCacheFeature} />\n <RegisterFeature feature={CmsWorkflowsEditorPresenterFeature} />\n <ListOpenInNewWindow />\n <CmsEntriesWorkflowStateListFooterMenu />\n <CmsWorkflowsEditor />\n <ContentEntryFormWorkflow />\n <CmsEntryFormTooltipButton />\n <CmsEntryFormScheduleMenuItemAction />\n <CmsEntryFormCreateNewRevisionButton />\n </>\n );\n};\n"],"names":["CmsWorkflows","featureFlags","useFeatureFlags","RegisterFeature","CmsWorkflowsFeature","CmsWorkflowsCacheFeature","CmsWorkflowsEditorPresenterFeature","ListOpenInNewWindow","CmsEntriesWorkflowStateListFooterMenu","CmsWorkflowsEditor","ContentEntryFormWorkflow","CmsEntryFormTooltipButton","CmsEntryFormScheduleMenuItemAction","CmsEntryFormCreateNewRevisionButton"],"mappings":";;;;;;;;;;AAeO,MAAMA,eAAe;IACxB,MAAMC,eAAeC;IAErB,IAAI,CAACD,aAAa,SAAS,CAAC,+BACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,uCAAqCA,OAAAA,WAAAA,GACtC,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACC,0BAAwBA,OAAAA,WAAAA,GACzB,oBAACC,2BAAyBA,OAAAA,WAAAA,GAC1B,oBAACC,oCAAkCA,OAAAA,WAAAA,GACnC,oBAACC,qCAAmCA;AAGhD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-headless-cms-workflows",
3
- "version": "0.0.0-unstable.0d717d18dd",
3
+ "version": "0.0.0-unstable.33e4fd9647",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -14,24 +14,24 @@
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
16
  "@fortawesome/react-fontawesome": "3.5.0",
17
- "@webiny/admin-ui": "0.0.0-unstable.0d717d18dd",
18
- "@webiny/app": "0.0.0-unstable.0d717d18dd",
19
- "@webiny/app-admin": "0.0.0-unstable.0d717d18dd",
20
- "@webiny/app-headless-cms": "0.0.0-unstable.0d717d18dd",
21
- "@webiny/app-headless-cms-common": "0.0.0-unstable.0d717d18dd",
22
- "@webiny/app-workflows": "0.0.0-unstable.0d717d18dd",
23
- "@webiny/feature": "0.0.0-unstable.0d717d18dd",
24
- "@webiny/icons": "0.0.0-unstable.0d717d18dd",
25
- "@webiny/utils": "0.0.0-unstable.0d717d18dd",
26
- "mobx": "7.0.0",
27
- "mobx-react-lite": "5.0.0",
17
+ "@webiny/admin-ui": "0.0.0-unstable.33e4fd9647",
18
+ "@webiny/app": "0.0.0-unstable.33e4fd9647",
19
+ "@webiny/app-admin": "0.0.0-unstable.33e4fd9647",
20
+ "@webiny/app-headless-cms": "0.0.0-unstable.33e4fd9647",
21
+ "@webiny/app-headless-cms-common": "0.0.0-unstable.33e4fd9647",
22
+ "@webiny/app-workflows": "0.0.0-unstable.33e4fd9647",
23
+ "@webiny/feature": "0.0.0-unstable.33e4fd9647",
24
+ "@webiny/icons": "0.0.0-unstable.33e4fd9647",
25
+ "@webiny/utils": "0.0.0-unstable.33e4fd9647",
26
+ "mobx": "7.0.3",
27
+ "mobx-react-lite": "5.0.3",
28
28
  "react": "18.3.1",
29
29
  "react-dom": "18.3.1",
30
30
  "react-helmet": "6.1.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "18.3.31",
34
- "@webiny/build-tools": "0.0.0-unstable.0d717d18dd",
34
+ "@webiny/build-tools": "0.0.0-unstable.33e4fd9647",
35
35
  "rimraf": "6.1.3",
36
36
  "typescript": "7.0.2"
37
37
  },
@@ -16,6 +16,7 @@ declare class ContentEntryFormPresenterWithWorkflow implements IContentEntryForm
16
16
  deleteEntry(): Promise<boolean>;
17
17
  setFolderId(folderId: string | null): void;
18
18
  newEntry(initialValues?: Record<string, unknown>): void;
19
+ patchEntryMeta(...args: Parameters<IContentEntryFormPresenter["patchEntryMeta"]>): void;
19
20
  reset(): void;
20
21
  }
21
22
  export declare const ContentEntryFormPresenterWorkflowDecorator: typeof ContentEntryFormPresenterWithWorkflow & {
@@ -50,6 +50,9 @@ class ContentEntryFormPresenterWithWorkflow {
50
50
  newEntry(initialValues) {
51
51
  return this.original.newEntry(initialValues);
52
52
  }
53
+ patchEntryMeta(...args) {
54
+ this.original.patchEntryMeta(...args);
55
+ }
53
56
  reset() {
54
57
  this.original.reset();
55
58
  this.workflowPresenter.dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/ContentEntryFormPresenterWorkflowDecorator.js","sources":["../../src/presentation/ContentEntryFormPresenterWorkflowDecorator.ts"],"sourcesContent":["import { computed, makeAutoObservable } from \"mobx\";\nimport {\n ContentEntryFormPresenter,\n type IContentEntryFormPresenter,\n type IContentEntryFormViewModel\n} from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { CmsModelContext } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { WorkflowStatePresenter } from \"@webiny/app-workflows/presentation/workflowState/abstractions.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\n\nclass ContentEntryFormPresenterWithWorkflow implements IContentEntryFormPresenter {\n constructor(\n private workflowPresenter: WorkflowStatePresenter.Interface,\n private modelAccessor: CmsModelContext.Interface,\n private original: IContentEntryFormPresenter\n ) {\n makeAutoObservable<\n ContentEntryFormPresenterWithWorkflow,\n \"workflowPresenter\" | \"modelAccessor\" | \"original\"\n >(this, {\n workflowPresenter: false,\n modelAccessor: false,\n original: false,\n vm: computed\n });\n }\n\n get vm(): IContentEntryFormViewModel {\n const base = this.original.vm;\n const wfVm = this.workflowPresenter.vm;\n\n return {\n ...base,\n canSave: base.canSave && !wfVm.hasState,\n canPublish: base.canPublish && (!wfVm.hasWorkflow || wfVm.isApproved)\n };\n }\n\n async loadRevision(id: string): Promise<void> {\n await this.original.loadRevision(id);\n\n const model = this.modelAccessor.getModel();\n if (model.tags.includes(CMS_MODEL_SINGLETON_TAG)) {\n return;\n }\n\n const title = `${model.name}: ${this.original.vm.entry?.meta?.title || \"unknown\"}`;\n await this.workflowPresenter.init(`cms.${model.modelId}`, id, title);\n }\n\n async saveRevision(options?: { skipValidation?: boolean }): Promise<boolean> {\n if (this.workflowPresenter.vm.hasState) {\n return false;\n }\n return this.original.saveRevision(options);\n }\n\n publishRevision(): Promise<boolean> {\n return this.original.publishRevision();\n }\n\n unpublishRevision(): Promise<boolean> {\n return this.original.unpublishRevision();\n }\n\n deleteEntry(): Promise<boolean> {\n return this.original.deleteEntry();\n }\n\n setFolderId(folderId: string | null): void {\n this.original.setFolderId(folderId);\n }\n\n newEntry(initialValues?: Record<string, unknown>): void {\n return this.original.newEntry(initialValues);\n }\n\n reset(): void {\n this.original.reset();\n this.workflowPresenter.dispose();\n }\n}\n\nexport const ContentEntryFormPresenterWorkflowDecorator = ContentEntryFormPresenter.createDecorator(\n {\n decorator: ContentEntryFormPresenterWithWorkflow,\n dependencies: [WorkflowStatePresenter, CmsModelContext]\n }\n);\n"],"names":["ContentEntryFormPresenterWithWorkflow","workflowPresenter","modelAccessor","original","makeAutoObservable","computed","base","wfVm","id","model","CMS_MODEL_SINGLETON_TAG","title","options","folderId","initialValues","ContentEntryFormPresenterWorkflowDecorator","ContentEntryFormPresenter","WorkflowStatePresenter","CmsModelContext"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,iBAAmD,EACnDC,aAAwC,EACxCC,QAAoC,CAC9C;aAHUF,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,QAAQ,GAARA;QAERC,mBAGE,IAAI,EAAE;YACJ,mBAAmB;YACnB,eAAe;YACf,UAAU;YACV,IAAIC;QACR;IACJ;IAEA,IAAI,KAAiC;QACjC,MAAMC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC7B,MAAMC,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE;QAEtC,OAAO;YACH,GAAGD,IAAI;YACP,SAASA,KAAK,OAAO,IAAI,CAACC,KAAK,QAAQ;YACvC,YAAYD,KAAK,UAAU,IAAK,EAACC,KAAK,WAAW,IAAIA,KAAK,UAAS;QACvE;IACJ;IAEA,MAAM,aAAaC,EAAU,EAAiB;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;QAEjC,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ;QACzC,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAACC,0BACpB;QAGJ,MAAMC,QAAQ,GAAGF,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,SAAS,WAAW;QAClF,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAEA,MAAM,OAAO,EAAE,EAAED,IAAIG;IAClE;IAEA,MAAM,aAAaC,OAAsC,EAAoB;QACzE,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAClC,OAAO;QAEX,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;IACtC;IAEA,kBAAoC;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe;IACxC;IAEA,oBAAsC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB;IAC1C;IAEA,cAAgC;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW;IACpC;IAEA,YAAYC,QAAuB,EAAQ;QACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IAC9B;IAEA,SAASC,aAAuC,EAAQ;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAACA;IAClC;IAEA,QAAc;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK;QACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO;IAClC;AACJ;AAEO,MAAMC,6CAA6CC,0BAA0B,eAAe,CAC/F;IACI,WAAWhB;IACX,cAAc;QAACiB;QAAwBC;KAAgB;AAC3D"}
1
+ {"version":3,"file":"presentation/ContentEntryFormPresenterWorkflowDecorator.js","sources":["../../src/presentation/ContentEntryFormPresenterWorkflowDecorator.ts"],"sourcesContent":["import { computed, makeAutoObservable } from \"mobx\";\nimport {\n ContentEntryFormPresenter,\n type IContentEntryFormPresenter,\n type IContentEntryFormViewModel\n} from \"@webiny/app-headless-cms/presentation/contentEntries/form/abstractions.js\";\nimport { CmsModelContext } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { WorkflowStatePresenter } from \"@webiny/app-workflows/presentation/workflowState/abstractions.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/app-headless-cms-common\";\n\nclass ContentEntryFormPresenterWithWorkflow implements IContentEntryFormPresenter {\n constructor(\n private workflowPresenter: WorkflowStatePresenter.Interface,\n private modelAccessor: CmsModelContext.Interface,\n private original: IContentEntryFormPresenter\n ) {\n makeAutoObservable<\n ContentEntryFormPresenterWithWorkflow,\n \"workflowPresenter\" | \"modelAccessor\" | \"original\"\n >(this, {\n workflowPresenter: false,\n modelAccessor: false,\n original: false,\n vm: computed\n });\n }\n\n get vm(): IContentEntryFormViewModel {\n const base = this.original.vm;\n const wfVm = this.workflowPresenter.vm;\n\n return {\n ...base,\n canSave: base.canSave && !wfVm.hasState,\n canPublish: base.canPublish && (!wfVm.hasWorkflow || wfVm.isApproved)\n };\n }\n\n async loadRevision(id: string): Promise<void> {\n await this.original.loadRevision(id);\n\n const model = this.modelAccessor.getModel();\n if (model.tags.includes(CMS_MODEL_SINGLETON_TAG)) {\n return;\n }\n\n const title = `${model.name}: ${this.original.vm.entry?.meta?.title || \"unknown\"}`;\n await this.workflowPresenter.init(`cms.${model.modelId}`, id, title);\n }\n\n async saveRevision(options?: { skipValidation?: boolean }): Promise<boolean> {\n if (this.workflowPresenter.vm.hasState) {\n return false;\n }\n return this.original.saveRevision(options);\n }\n\n publishRevision(): Promise<boolean> {\n return this.original.publishRevision();\n }\n\n unpublishRevision(): Promise<boolean> {\n return this.original.unpublishRevision();\n }\n\n deleteEntry(): Promise<boolean> {\n return this.original.deleteEntry();\n }\n\n setFolderId(folderId: string | null): void {\n this.original.setFolderId(folderId);\n }\n\n newEntry(initialValues?: Record<string, unknown>): void {\n return this.original.newEntry(initialValues);\n }\n\n patchEntryMeta(...args: Parameters<IContentEntryFormPresenter[\"patchEntryMeta\"]>): void {\n this.original.patchEntryMeta(...args);\n }\n\n reset(): void {\n this.original.reset();\n this.workflowPresenter.dispose();\n }\n}\n\nexport const ContentEntryFormPresenterWorkflowDecorator = ContentEntryFormPresenter.createDecorator(\n {\n decorator: ContentEntryFormPresenterWithWorkflow,\n dependencies: [WorkflowStatePresenter, CmsModelContext]\n }\n);\n"],"names":["ContentEntryFormPresenterWithWorkflow","workflowPresenter","modelAccessor","original","makeAutoObservable","computed","base","wfVm","id","model","CMS_MODEL_SINGLETON_TAG","title","options","folderId","initialValues","args","ContentEntryFormPresenterWorkflowDecorator","ContentEntryFormPresenter","WorkflowStatePresenter","CmsModelContext"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,iBAAmD,EACnDC,aAAwC,EACxCC,QAAoC,CAC9C;aAHUF,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,QAAQ,GAARA;QAERC,mBAGE,IAAI,EAAE;YACJ,mBAAmB;YACnB,eAAe;YACf,UAAU;YACV,IAAIC;QACR;IACJ;IAEA,IAAI,KAAiC;QACjC,MAAMC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC7B,MAAMC,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE;QAEtC,OAAO;YACH,GAAGD,IAAI;YACP,SAASA,KAAK,OAAO,IAAI,CAACC,KAAK,QAAQ;YACvC,YAAYD,KAAK,UAAU,IAAK,EAACC,KAAK,WAAW,IAAIA,KAAK,UAAS;QACvE;IACJ;IAEA,MAAM,aAAaC,EAAU,EAAiB;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;QAEjC,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ;QACzC,IAAIA,MAAM,IAAI,CAAC,QAAQ,CAACC,0BACpB;QAGJ,MAAMC,QAAQ,GAAGF,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,SAAS,WAAW;QAClF,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAEA,MAAM,OAAO,EAAE,EAAED,IAAIG;IAClE;IAEA,MAAM,aAAaC,OAAsC,EAAoB;QACzE,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAClC,OAAO;QAEX,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;IACtC;IAEA,kBAAoC;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe;IACxC;IAEA,oBAAsC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB;IAC1C;IAEA,cAAgC;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW;IACpC;IAEA,YAAYC,QAAuB,EAAQ;QACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IAC9B;IAEA,SAASC,aAAuC,EAAQ;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAACA;IAClC;IAEA,eAAe,GAAGC,IAA8D,EAAQ;QACpF,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAIA;IACpC;IAEA,QAAc;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK;QACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO;IAClC;AACJ;AAEO,MAAMC,6CAA6CC,0BAA0B,eAAe,CAC/F;IACI,WAAWjB;IACX,cAAc;QAACkB;QAAwBC;KAAgB;AAC3D"}