@webiny/app-record-locking 6.6.0-alpha.0 → 6.6.0-alpha.2

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.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import react from "react";
2
- import { RegisterFeature, useWcp } from "@webiny/app-admin";
2
+ import { RegisterFeature, useFeatureFlags } from "@webiny/app-admin";
3
3
  import { RecordLockingFeature } from "./features/feature.js";
4
4
  import { RecordLockingPermissionsFeature } from "./features/permissions/feature.js";
5
5
  import { RecordLockingPresenterFeature } from "./presentation/entryLocking/feature.js";
@@ -7,8 +7,8 @@ import { ListLockRecordsPresenterFeature } from "./presentation/listLocking/feat
7
7
  import { SecurityPermissions } from "./SecurityPermissions.js";
8
8
  import { RecordLockingModule } from "./RecordLockingModule.js";
9
9
  const RecordLocking = ()=>{
10
- const wcp = useWcp();
11
- if (!wcp.canUseRecordLocking()) return null;
10
+ const featureFlags = useFeatureFlags();
11
+ if (!featureFlags.isEnabled("recordLocking")) return null;
12
12
  return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
13
13
  feature: RecordLockingPermissionsFeature
14
14
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature } from \"@webiny/app-admin\";\nimport { useWcp } from \"@webiny/app-admin\";\nimport { RecordLockingFeature } from \"~/features/feature.js\";\nimport { RecordLockingPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { RecordLockingPresenterFeature } from \"~/presentation/entryLocking/feature.js\";\nimport { ListLockRecordsPresenterFeature } from \"~/presentation/listLocking/feature.js\";\nimport { SecurityPermissions } from \"~/SecurityPermissions.js\";\nimport { RecordLockingModule } from \"~/RecordLockingModule.js\";\n\nexport const RecordLocking = () => {\n const wcp = useWcp();\n\n if (!wcp.canUseRecordLocking()) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={RecordLockingPermissionsFeature} />\n <RegisterFeature feature={RecordLockingFeature} />\n <RegisterFeature feature={RecordLockingPresenterFeature} />\n <RegisterFeature feature={ListLockRecordsPresenterFeature} />\n <SecurityPermissions />\n <RecordLockingModule />\n </>\n );\n};\n"],"names":["RecordLocking","wcp","useWcp","RegisterFeature","RecordLockingPermissionsFeature","RecordLockingFeature","RecordLockingPresenterFeature","ListLockRecordsPresenterFeature","SecurityPermissions","RecordLockingModule"],"mappings":";;;;;;;;AAUO,MAAMA,gBAAgB;IACzB,MAAMC,MAAMC;IAEZ,IAAI,CAACD,IAAI,mBAAmB,IACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACH,iBAAeA;QAAC,SAASI;sBAC1B,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,qBAAmBA;AAGhC"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature } from \"@webiny/app-admin\";\nimport { useFeatureFlags } from \"@webiny/app-admin\";\nimport { RecordLockingFeature } from \"~/features/feature.js\";\nimport { RecordLockingPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { RecordLockingPresenterFeature } from \"~/presentation/entryLocking/feature.js\";\nimport { ListLockRecordsPresenterFeature } from \"~/presentation/listLocking/feature.js\";\nimport { SecurityPermissions } from \"~/SecurityPermissions.js\";\nimport { RecordLockingModule } from \"~/RecordLockingModule.js\";\n\nexport const RecordLocking = () => {\n const featureFlags = useFeatureFlags();\n\n if (!featureFlags.isEnabled(\"recordLocking\")) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={RecordLockingPermissionsFeature} />\n <RegisterFeature feature={RecordLockingFeature} />\n <RegisterFeature feature={RecordLockingPresenterFeature} />\n <RegisterFeature feature={ListLockRecordsPresenterFeature} />\n <SecurityPermissions />\n <RecordLockingModule />\n </>\n );\n};\n"],"names":["RecordLocking","featureFlags","useFeatureFlags","RegisterFeature","RecordLockingPermissionsFeature","RecordLockingFeature","RecordLockingPresenterFeature","ListLockRecordsPresenterFeature","SecurityPermissions","RecordLockingModule"],"mappings":";;;;;;;;AAUO,MAAMA,gBAAgB;IACzB,MAAMC,eAAeC;IAErB,IAAI,CAACD,aAAa,SAAS,CAAC,kBACxB,OAAO;IAGX,OAAO,WAAP,GACI,wDACI,oBAACE,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACH,iBAAeA;QAAC,SAASI;sBAC1B,oBAACC,qBAAmBA,OAAAA,WAAAA,GACpB,oBAACC,qBAAmBA;AAGhC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-record-locking",
3
- "version": "6.6.0-alpha.0",
3
+ "version": "6.6.0-alpha.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -17,21 +17,21 @@
17
17
  ],
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@webiny/admin-ui": "6.6.0-alpha.0",
21
- "@webiny/app": "6.6.0-alpha.0",
22
- "@webiny/app-admin": "6.6.0-alpha.0",
23
- "@webiny/app-headless-cms": "6.6.0-alpha.0",
24
- "@webiny/app-websockets": "6.6.0-alpha.0",
25
- "@webiny/feature": "6.6.0-alpha.0",
26
- "@webiny/icons": "6.6.0-alpha.0",
27
- "@webiny/utils": "6.6.0-alpha.0",
28
- "mobx": "6.16.1",
29
- "mobx-react-lite": "4.1.1",
20
+ "@webiny/admin-ui": "6.6.0-alpha.2",
21
+ "@webiny/app": "6.6.0-alpha.2",
22
+ "@webiny/app-admin": "6.6.0-alpha.2",
23
+ "@webiny/app-headless-cms": "6.6.0-alpha.2",
24
+ "@webiny/app-websockets": "6.6.0-alpha.2",
25
+ "@webiny/feature": "6.6.0-alpha.2",
26
+ "@webiny/icons": "6.6.0-alpha.2",
27
+ "@webiny/utils": "6.6.0-alpha.2",
28
+ "mobx": "7.0.3",
29
+ "mobx-react-lite": "5.0.3",
30
30
  "react": "18.3.1",
31
31
  "react-dom": "18.3.1"
32
32
  },
33
33
  "devDependencies": {
34
- "@webiny/build-tools": "6.6.0-alpha.0",
34
+ "@webiny/build-tools": "6.6.0-alpha.2",
35
35
  "rimraf": "6.1.3",
36
36
  "typescript": "7.0.2"
37
37
  },
@@ -6,7 +6,7 @@ interface RecordLockingGuardProps {
6
6
  onNavigateBack: () => void;
7
7
  children: React.ReactNode;
8
8
  }
9
- export declare const RecordLockingGuard: (({ entryId, modelId, entryTitle, onNavigateBack, children }: RecordLockingGuardProps) => React.JSX.Element) & {
10
- displayName: string;
9
+ export declare const RecordLockingGuard: (({ entryId, modelId, entryTitle, onNavigateBack, children }: RecordLockingGuardProps) => React.JSX.Element) & React.NamedExoticComponent<RecordLockingGuardProps> & {
10
+ readonly type: ({ entryId, modelId, entryTitle, onNavigateBack, children }: RecordLockingGuardProps) => React.JSX.Element;
11
11
  };
12
12
  export {};
@@ -1,4 +1,4 @@
1
- import { comparer, reaction } from "mobx";
1
+ import { compareStructural, reaction } from "mobx";
2
2
  import { ContentEntriesPresenter } from "@webiny/app-headless-cms/presentation/contentEntries/list/abstractions.js";
3
3
  import { ListLockRecordsPresenter } from "./abstractions.js";
4
4
  class ContentEntriesPresenterWithLocking {
@@ -23,7 +23,7 @@ class ContentEntriesPresenterWithLocking {
23
23
  this.lockRecordsPresenter.fetchForEntries(entryIds, this.original.vm.model.modelId);
24
24
  }, {
25
25
  fireImmediately: true,
26
- equals: comparer.structural
26
+ equals: compareStructural
27
27
  });
28
28
  }
29
29
  dispose() {
@@ -1 +1 @@
1
- {"version":3,"file":"presentation/listLocking/ContentEntriesPresenterDecorator.js","sources":["../../../src/presentation/listLocking/ContentEntriesPresenterDecorator.ts"],"sourcesContent":["import { comparer, reaction } from \"mobx\";\nimport type { IReactionDisposer } from \"mobx\";\nimport {\n ContentEntriesPresenter,\n type IContentEntriesPresenter,\n type IContentEntriesInitConfig\n} from \"@webiny/app-headless-cms/presentation/contentEntries/list/abstractions.js\";\nimport { ListLockRecordsPresenter } from \"./abstractions.js\";\n\nclass ContentEntriesPresenterWithLocking implements IContentEntriesPresenter {\n private _disposeReaction: IReactionDisposer | null = null;\n\n constructor(\n private lockRecordsPresenter: ListLockRecordsPresenter.Interface,\n private original: IContentEntriesPresenter\n ) {}\n\n get vm() {\n return this.original.vm;\n }\n\n get list() {\n return this.original.list;\n }\n\n get folders() {\n return this.original.folders;\n }\n\n init(config?: IContentEntriesInitConfig): void {\n this.original.init(config);\n\n this._disposeReaction = reaction(\n () => this.original.list.vm.rows.map(r => r.id),\n entryIds => {\n if (entryIds.length === 0) {\n return;\n }\n this.lockRecordsPresenter.fetchForEntries(entryIds, this.original.vm.model.modelId);\n },\n { fireImmediately: true, equals: comparer.structural }\n );\n }\n\n dispose(): void {\n if (this._disposeReaction) {\n this._disposeReaction();\n this._disposeReaction = null;\n }\n this.lockRecordsPresenter.dispose();\n this.original.dispose();\n }\n\n selectEntry(id: string) {\n this.original.selectEntry(id);\n }\n\n deselectEntry() {\n this.original.deselectEntry();\n }\n\n createEntry() {\n this.original.createEntry();\n }\n\n deleteEntry(id: string) {\n return this.original.deleteEntry(id);\n }\n\n publishEntry(id: string) {\n return this.original.publishEntry(id);\n }\n\n unpublishEntry(id: string) {\n return this.original.unpublishEntry(id);\n }\n\n moveEntry(id: string, folderId: string) {\n return this.original.moveEntry(id, folderId);\n }\n}\n\nexport const ContentEntriesPresenterLockingDecorator = ContentEntriesPresenter.createDecorator({\n decorator: ContentEntriesPresenterWithLocking,\n dependencies: [ListLockRecordsPresenter]\n});\n"],"names":["ContentEntriesPresenterWithLocking","lockRecordsPresenter","original","config","reaction","r","entryIds","comparer","id","folderId","ContentEntriesPresenterLockingDecorator","ContentEntriesPresenter","ListLockRecordsPresenter"],"mappings":";;;AASA,MAAMA;IAGF,YACYC,oBAAwD,EACxDC,QAAkC,CAC5C;aAFUD,oBAAoB,GAApBA;aACAC,QAAQ,GAARA;aAJJ,gBAAgB,GAA6B;IAKlD;IAEH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC3B;IAEA,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC7B;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;IAChC;IAEA,KAAKC,MAAkC,EAAQ;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA;QAEnB,IAAI,CAAC,gBAAgB,GAAGC,SACpB,IAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAACC,CAAAA,IAAKA,EAAE,EAAE,GAC9CC,CAAAA;YACI,IAAIA,AAAoB,MAApBA,SAAS,MAAM,EACf;YAEJ,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAACA,UAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;QACtF,GACA;YAAE,iBAAiB;YAAM,QAAQC,SAAS,UAAU;QAAC;IAE7D;IAEA,UAAgB;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,gBAAgB,GAAG;QAC5B;QACA,IAAI,CAAC,oBAAoB,CAAC,OAAO;QACjC,IAAI,CAAC,QAAQ,CAAC,OAAO;IACzB;IAEA,YAAYC,EAAU,EAAE;QACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IAC9B;IAEA,gBAAgB;QACZ,IAAI,CAAC,QAAQ,CAAC,aAAa;IAC/B;IAEA,cAAc;QACV,IAAI,CAAC,QAAQ,CAAC,WAAW;IAC7B;IAEA,YAAYA,EAAU,EAAE;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IACrC;IAEA,aAAaA,EAAU,EAAE;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;IACtC;IAEA,eAAeA,EAAU,EAAE;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAACA;IACxC;IAEA,UAAUA,EAAU,EAAEC,QAAgB,EAAE;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAACD,IAAIC;IACvC;AACJ;AAEO,MAAMC,0CAA0CC,wBAAwB,eAAe,CAAC;IAC3F,WAAWX;IACX,cAAc;QAACY;KAAyB;AAC5C"}
1
+ {"version":3,"file":"presentation/listLocking/ContentEntriesPresenterDecorator.js","sources":["../../../src/presentation/listLocking/ContentEntriesPresenterDecorator.ts"],"sourcesContent":["import { compareStructural, reaction } from \"mobx\";\nimport type { IReactionDisposer } from \"mobx\";\nimport {\n ContentEntriesPresenter,\n type IContentEntriesPresenter,\n type IContentEntriesInitConfig\n} from \"@webiny/app-headless-cms/presentation/contentEntries/list/abstractions.js\";\nimport { ListLockRecordsPresenter } from \"./abstractions.js\";\n\nclass ContentEntriesPresenterWithLocking implements IContentEntriesPresenter {\n private _disposeReaction: IReactionDisposer | null = null;\n\n constructor(\n private lockRecordsPresenter: ListLockRecordsPresenter.Interface,\n private original: IContentEntriesPresenter\n ) {}\n\n get vm() {\n return this.original.vm;\n }\n\n get list() {\n return this.original.list;\n }\n\n get folders() {\n return this.original.folders;\n }\n\n init(config?: IContentEntriesInitConfig): void {\n this.original.init(config);\n\n this._disposeReaction = reaction(\n () => this.original.list.vm.rows.map(r => r.id),\n entryIds => {\n if (entryIds.length === 0) {\n return;\n }\n this.lockRecordsPresenter.fetchForEntries(entryIds, this.original.vm.model.modelId);\n },\n { fireImmediately: true, equals: compareStructural }\n );\n }\n\n dispose(): void {\n if (this._disposeReaction) {\n this._disposeReaction();\n this._disposeReaction = null;\n }\n this.lockRecordsPresenter.dispose();\n this.original.dispose();\n }\n\n selectEntry(id: string) {\n this.original.selectEntry(id);\n }\n\n deselectEntry() {\n this.original.deselectEntry();\n }\n\n createEntry() {\n this.original.createEntry();\n }\n\n deleteEntry(id: string) {\n return this.original.deleteEntry(id);\n }\n\n publishEntry(id: string) {\n return this.original.publishEntry(id);\n }\n\n unpublishEntry(id: string) {\n return this.original.unpublishEntry(id);\n }\n\n moveEntry(id: string, folderId: string) {\n return this.original.moveEntry(id, folderId);\n }\n}\n\nexport const ContentEntriesPresenterLockingDecorator = ContentEntriesPresenter.createDecorator({\n decorator: ContentEntriesPresenterWithLocking,\n dependencies: [ListLockRecordsPresenter]\n});\n"],"names":["ContentEntriesPresenterWithLocking","lockRecordsPresenter","original","config","reaction","r","entryIds","compareStructural","id","folderId","ContentEntriesPresenterLockingDecorator","ContentEntriesPresenter","ListLockRecordsPresenter"],"mappings":";;;AASA,MAAMA;IAGF,YACYC,oBAAwD,EACxDC,QAAkC,CAC5C;aAFUD,oBAAoB,GAApBA;aACAC,QAAQ,GAARA;aAJJ,gBAAgB,GAA6B;IAKlD;IAEH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAC3B;IAEA,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC7B;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;IAChC;IAEA,KAAKC,MAAkC,EAAQ;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAACA;QAEnB,IAAI,CAAC,gBAAgB,GAAGC,SACpB,IAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAACC,CAAAA,IAAKA,EAAE,EAAE,GAC9CC,CAAAA;YACI,IAAIA,AAAoB,MAApBA,SAAS,MAAM,EACf;YAEJ,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAACA,UAAU,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;QACtF,GACA;YAAE,iBAAiB;YAAM,QAAQC;QAAkB;IAE3D;IAEA,UAAgB;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,gBAAgB,GAAG;QAC5B;QACA,IAAI,CAAC,oBAAoB,CAAC,OAAO;QACjC,IAAI,CAAC,QAAQ,CAAC,OAAO;IACzB;IAEA,YAAYC,EAAU,EAAE;QACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IAC9B;IAEA,gBAAgB;QACZ,IAAI,CAAC,QAAQ,CAAC,aAAa;IAC/B;IAEA,cAAc;QACV,IAAI,CAAC,QAAQ,CAAC,WAAW;IAC7B;IAEA,YAAYA,EAAU,EAAE;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA;IACrC;IAEA,aAAaA,EAAU,EAAE;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAACA;IACtC;IAEA,eAAeA,EAAU,EAAE;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAACA;IACxC;IAEA,UAAUA,EAAU,EAAEC,QAAgB,EAAE;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAACD,IAAIC;IACvC;AACJ;AAEO,MAAMC,0CAA0CC,wBAAwB,eAAe,CAAC;IAC3F,WAAWX;IACX,cAAc;QAACY;KAAyB;AAC5C"}
@@ -1,3 +1,4 @@
1
- export declare const ListLockRecordsSync: (() => null) & {
2
- displayName: string;
1
+ import React from "react";
2
+ export declare const ListLockRecordsSync: (() => null) & React.NamedExoticComponent<unknown> & {
3
+ readonly type: () => null;
3
4
  };