@webiny/app-record-locking 5.40.0-beta.5 → 6.0.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.
@@ -13,6 +13,7 @@ var _Tooltip = require("@webiny/ui/Tooltip");
13
13
  var _hooks = require("../hooks");
14
14
  var _UseContentEntriesListHookDecorator = require("./decorators/UseContentEntriesListHookDecorator");
15
15
  var _UseSaveEntryDecorator = require("./decorators/UseSaveEntryDecorator");
16
+ var _UseRecordsDecorator = require("./decorators/UseRecordsDecorator");
16
17
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
17
18
  var CenterAlignment = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
18
19
  target: "e1qmlafx0"
@@ -25,7 +26,7 @@ var CenterAlignment = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_EN
25
26
  } : {
26
27
  name: "dmikdp",
27
28
  styles: "display:block;margin:0 auto;width:28px;svg{fill:var(--mdc-theme-text-secondary-on-background);}",
28
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNrQyIsImZpbGUiOiJIZWFkbGVzc0Ntc0FjdGlvbnNBY29DZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbnRlbnRFbnRyeUxpc3RDb25maWcsIHVzZU1vZGVsIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWhlYWRsZXNzLWNtc1wiO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTG9ja2VkSWNvbiB9IGZyb20gXCJAbWF0ZXJpYWwtZGVzaWduLWljb25zL3N2Zy9yb3VuZC9sb2NrLnN2Z1wiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAd2ViaW55L3VpL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHVzZVJlY29yZExvY2tpbmcgfSBmcm9tIFwifi9ob29rc1wiO1xuaW1wb3J0IHsgVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvciB9IGZyb20gXCIuL2RlY29yYXRvcnMvVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvclwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBVc2VTYXZlRW50cnlEZWNvcmF0b3IgfSBmcm9tIFwifi9jb21wb25lbnRzL2RlY29yYXRvcnMvVXNlU2F2ZUVudHJ5RGVjb3JhdG9yXCI7XG5cbmNvbnN0IENlbnRlckFsaWdubWVudCA9IHN0eWxlZC5kaXZgXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgc3ZnIHtcbiAgICAgICAgZmlsbDogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQpO1xuICAgIH1cbmA7XG5cbmNvbnN0IHsgQnJvd3NlciB9ID0gQ29udGVudEVudHJ5TGlzdENvbmZpZztcblxuaW50ZXJmYWNlIEFjdGlvbnNDZWxsUHJvcHMge1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IEFjdGlvbnNDZWxsID0gKHsgY2hpbGRyZW4gfTogQWN0aW9uc0NlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwgfSA9IHVzZU1vZGVsKCk7XG4gICAgY29uc3QgeyBnZXRMb2NrUmVjb3JkRW50cnksIGlzUmVjb3JkTG9ja2VkIH0gPSB1c2VSZWNvcmRMb2NraW5nKCk7XG5cbiAgICBjb25zdCB7IHVzZVRhYmxlUm93LCBpc0ZvbGRlclJvdyB9ID0gQnJvd3Nlci5UYWJsZS5Db2x1bW47XG4gICAgY29uc3QgeyByb3cgfSA9IHVzZVRhYmxlUm93KCk7XG5cbiAgICBpZiAoaXNGb2xkZXJSb3cocm93KSkge1xuICAgICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gZ2V0TG9ja1JlY29yZEVudHJ5KHJvdy5pZCk7XG5cbiAgICBpZiAoIWlzUmVjb3JkTG9ja2VkKGVudHJ5KSB8fCAhZW50cnk/LiRsb2NrZWQpIHtcbiAgICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgPENlbnRlckFsaWdubWVudD5cbiAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtcImxlZnRcIn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtgVGhpcyAke21vZGVsLm5hbWV9IGlzIGN1cnJlbnRseSBsb2NrZWQgYnkgJHtlbnRyeS4kbG9ja2VkLmxvY2tlZEJ5LmRpc3BsYXlOYW1lfS5gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMb2NrZWRJY29uIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvQ2VudGVyQWxpZ25tZW50PlxuICAgICk7XG59O1xuXG5jb25zdCBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMgPSBCcm93c2VyLlRhYmxlLkNvbHVtbi5jcmVhdGVEZWNvcmF0b3IoT3JpZ2luYWwgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMocHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLm5hbWUgPT09IFwiYWN0aW9uc1wiICYmIHByb3BzLmNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiA8T3JpZ2luYWwgey4uLnByb3BzfSBjZWxsPXs8QWN0aW9uc0NlbGw+e3Byb3BzLmNlbGx9PC9BY3Rpb25zQ2VsbD59IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxPcmlnaW5hbCB7Li4ucHJvcHN9IC8+O1xuICAgIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IEhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxVc2VDb250ZW50RW50cmllc0xpc3RIb29rRGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8VXNlU2F2ZUVudHJ5RGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8UmVjb3JkTG9ja2luZ0NlbGxBY3Rpb25zIC8+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuIl19 */",
29
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVrQyIsImZpbGUiOiJIZWFkbGVzc0Ntc0FjdGlvbnNBY29DZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbnRlbnRFbnRyeUxpc3RDb25maWcsIHVzZU1vZGVsIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWhlYWRsZXNzLWNtc1wiO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTG9ja2VkSWNvbiB9IGZyb20gXCJAbWF0ZXJpYWwtZGVzaWduLWljb25zL3N2Zy9yb3VuZC9sb2NrLnN2Z1wiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAd2ViaW55L3VpL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHVzZVJlY29yZExvY2tpbmcgfSBmcm9tIFwifi9ob29rc1wiO1xuaW1wb3J0IHsgVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvciB9IGZyb20gXCIuL2RlY29yYXRvcnMvVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvclwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBVc2VTYXZlRW50cnlEZWNvcmF0b3IgfSBmcm9tIFwifi9jb21wb25lbnRzL2RlY29yYXRvcnMvVXNlU2F2ZUVudHJ5RGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBVc2VSZWNvcmRzRGVjb3JhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9Vc2VSZWNvcmRzRGVjb3JhdG9yXCI7XG5cbmNvbnN0IENlbnRlckFsaWdubWVudCA9IHN0eWxlZC5kaXZgXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgc3ZnIHtcbiAgICAgICAgZmlsbDogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQpO1xuICAgIH1cbmA7XG5cbmNvbnN0IHsgQnJvd3NlciB9ID0gQ29udGVudEVudHJ5TGlzdENvbmZpZztcblxuaW50ZXJmYWNlIEFjdGlvbnNDZWxsUHJvcHMge1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IEFjdGlvbnNDZWxsID0gKHsgY2hpbGRyZW4gfTogQWN0aW9uc0NlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwgfSA9IHVzZU1vZGVsKCk7XG4gICAgY29uc3QgeyBnZXRMb2NrUmVjb3JkRW50cnksIGlzUmVjb3JkTG9ja2VkIH0gPSB1c2VSZWNvcmRMb2NraW5nKCk7XG5cbiAgICBjb25zdCB7IHVzZVRhYmxlUm93LCBpc0ZvbGRlclJvdyB9ID0gQnJvd3Nlci5UYWJsZS5Db2x1bW47XG4gICAgY29uc3QgeyByb3cgfSA9IHVzZVRhYmxlUm93KCk7XG5cbiAgICBpZiAoaXNGb2xkZXJSb3cocm93KSkge1xuICAgICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gZ2V0TG9ja1JlY29yZEVudHJ5KHJvdy5pZCk7XG5cbiAgICBpZiAoIWlzUmVjb3JkTG9ja2VkKGVudHJ5KSB8fCAhZW50cnk/LiRsb2NrZWQpIHtcbiAgICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgPENlbnRlckFsaWdubWVudD5cbiAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtcImxlZnRcIn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtgVGhpcyAke21vZGVsLm5hbWV9IGlzIGN1cnJlbnRseSBsb2NrZWQgYnkgJHtlbnRyeS4kbG9ja2VkLmxvY2tlZEJ5LmRpc3BsYXlOYW1lfS5gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMb2NrZWRJY29uIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvQ2VudGVyQWxpZ25tZW50PlxuICAgICk7XG59O1xuXG5jb25zdCBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMgPSBCcm93c2VyLlRhYmxlLkNvbHVtbi5jcmVhdGVEZWNvcmF0b3IoT3JpZ2luYWwgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMocHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLm5hbWUgPT09IFwiYWN0aW9uc1wiICYmIHByb3BzLmNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiA8T3JpZ2luYWwgey4uLnByb3BzfSBjZWxsPXs8QWN0aW9uc0NlbGw+e3Byb3BzLmNlbGx9PC9BY3Rpb25zQ2VsbD59IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxPcmlnaW5hbCB7Li4ucHJvcHN9IC8+O1xuICAgIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IEhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxVc2VDb250ZW50RW50cmllc0xpc3RIb29rRGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8VXNlU2F2ZUVudHJ5RGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8UmVjb3JkTG9ja2luZ0NlbGxBY3Rpb25zIC8+XG4gICAgICAgICAgICA8VXNlUmVjb3Jkc0RlY29yYXRvciAvPlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcbiJdfQ== */",
29
30
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
30
31
  });
31
32
  var Browser = _appHeadlessCms.ContentEntryListConfig.Browser;
@@ -64,7 +65,7 @@ var RecordLockingCellActions = Browser.Table.Column.createDecorator(function (Or
64
65
  };
65
66
  });
66
67
  var HeadlessCmsActionsAcoCell = exports.HeadlessCmsActionsAcoCell = function HeadlessCmsActionsAcoCell() {
67
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_UseContentEntriesListHookDecorator.UseContentEntriesListHookDecorator, null), /*#__PURE__*/_react.default.createElement(_UseSaveEntryDecorator.UseSaveEntryDecorator, null), /*#__PURE__*/_react.default.createElement(RecordLockingCellActions, null));
68
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_UseContentEntriesListHookDecorator.UseContentEntriesListHookDecorator, null), /*#__PURE__*/_react.default.createElement(_UseSaveEntryDecorator.UseSaveEntryDecorator, null), /*#__PURE__*/_react.default.createElement(RecordLockingCellActions, null), /*#__PURE__*/_react.default.createElement(_UseRecordsDecorator.UseRecordsDecorator, null));
68
69
  };
69
70
 
70
71
  //# sourceMappingURL=HeadlessCmsActionsAcoCell.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_appHeadlessCms","_lock","_Tooltip","_hooks","_UseContentEntriesListHookDecorator","_UseSaveEntryDecorator","_EMOTION_STRINGIFIED_CSS_ERROR__","CenterAlignment","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Browser","ContentEntryListConfig","ActionsCell","_ref","children","_useModel","useModel","model","_useRecordLocking","useRecordLocking","getLockRecordEntry","isRecordLocked","_Browser$Table$Column","Table","Column","useTableRow","isFolderRow","_useTableRow","row","createElement","Fragment","entry","id","$locked","Tooltip","placement","content","concat","lockedBy","displayName","ReactComponent","RecordLockingCellActions","createDecorator","Original","props","cell","Object","assign","HeadlessCmsActionsAcoCell","exports","UseContentEntriesListHookDecorator","UseSaveEntryDecorator"],"sources":["HeadlessCmsActionsAcoCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig, useModel } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as LockedIcon } from \"@material-design-icons/svg/round/lock.svg\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { UseContentEntriesListHookDecorator } from \"./decorators/UseContentEntriesListHookDecorator\";\nimport styled from \"@emotion/styled\";\nimport { UseSaveEntryDecorator } from \"~/components/decorators/UseSaveEntryDecorator\";\n\nconst CenterAlignment = styled.div`\n display: block;\n margin: 0 auto;\n width: 28px;\n svg {\n fill: var(--mdc-theme-text-secondary-on-background);\n }\n`;\n\nconst { Browser } = ContentEntryListConfig;\n\ninterface ActionsCellProps {\n children: React.ReactNode;\n}\n\nconst ActionsCell = ({ children }: ActionsCellProps) => {\n const { model } = useModel();\n const { getLockRecordEntry, isRecordLocked } = useRecordLocking();\n\n const { useTableRow, isFolderRow } = Browser.Table.Column;\n const { row } = useTableRow();\n\n if (isFolderRow(row)) {\n return <>{children}</>;\n }\n\n const entry = getLockRecordEntry(row.id);\n\n if (!isRecordLocked(entry) || !entry?.$locked) {\n return <>{children}</>;\n }\n return (\n <CenterAlignment>\n <Tooltip\n placement={\"left\"}\n content={`This ${model.name} is currently locked by ${entry.$locked.lockedBy.displayName}.`}\n >\n <LockedIcon />\n </Tooltip>\n </CenterAlignment>\n );\n};\n\nconst RecordLockingCellActions = Browser.Table.Column.createDecorator(Original => {\n return function RecordLockingCellActions(props) {\n if (props.name === \"actions\" && props.cell) {\n return <Original {...props} cell={<ActionsCell>{props.cell}</ActionsCell>} />;\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const HeadlessCmsActionsAcoCell = () => {\n return (\n <>\n <UseContentEntriesListHookDecorator />\n <UseSaveEntryDecorator />\n <RecordLockingCellActions />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_appHeadlessCms","_lock","_Tooltip","_hooks","_UseContentEntriesListHookDecorator","_UseSaveEntryDecorator","_UseRecordsDecorator","_EMOTION_STRINGIFIED_CSS_ERROR__","CenterAlignment","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Browser","ContentEntryListConfig","ActionsCell","_ref","children","_useModel","useModel","model","_useRecordLocking","useRecordLocking","getLockRecordEntry","isRecordLocked","_Browser$Table$Column","Table","Column","useTableRow","isFolderRow","_useTableRow","row","createElement","Fragment","entry","id","$locked","Tooltip","placement","content","concat","lockedBy","displayName","ReactComponent","RecordLockingCellActions","createDecorator","Original","props","cell","Object","assign","HeadlessCmsActionsAcoCell","exports","UseContentEntriesListHookDecorator","UseSaveEntryDecorator","UseRecordsDecorator"],"sources":["HeadlessCmsActionsAcoCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig, useModel } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as LockedIcon } from \"@material-design-icons/svg/round/lock.svg\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { UseContentEntriesListHookDecorator } from \"./decorators/UseContentEntriesListHookDecorator\";\nimport styled from \"@emotion/styled\";\nimport { UseSaveEntryDecorator } from \"~/components/decorators/UseSaveEntryDecorator\";\nimport { UseRecordsDecorator } from \"./decorators/UseRecordsDecorator\";\n\nconst CenterAlignment = styled.div`\n display: block;\n margin: 0 auto;\n width: 28px;\n svg {\n fill: var(--mdc-theme-text-secondary-on-background);\n }\n`;\n\nconst { Browser } = ContentEntryListConfig;\n\ninterface ActionsCellProps {\n children: React.ReactNode;\n}\n\nconst ActionsCell = ({ children }: ActionsCellProps) => {\n const { model } = useModel();\n const { getLockRecordEntry, isRecordLocked } = useRecordLocking();\n\n const { useTableRow, isFolderRow } = Browser.Table.Column;\n const { row } = useTableRow();\n\n if (isFolderRow(row)) {\n return <>{children}</>;\n }\n\n const entry = getLockRecordEntry(row.id);\n\n if (!isRecordLocked(entry) || !entry?.$locked) {\n return <>{children}</>;\n }\n return (\n <CenterAlignment>\n <Tooltip\n placement={\"left\"}\n content={`This ${model.name} is currently locked by ${entry.$locked.lockedBy.displayName}.`}\n >\n <LockedIcon />\n </Tooltip>\n </CenterAlignment>\n );\n};\n\nconst RecordLockingCellActions = Browser.Table.Column.createDecorator(Original => {\n return function RecordLockingCellActions(props) {\n if (props.name === \"actions\" && props.cell) {\n return <Original {...props} cell={<ActionsCell>{props.cell}</ActionsCell>} />;\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const HeadlessCmsActionsAcoCell = () => {\n return (\n <>\n <UseContentEntriesListHookDecorator />\n <UseSaveEntryDecorator />\n <RecordLockingCellActions />\n <UseRecordsDecorator />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.
4
+ * When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might
5
+ * be doing it without the `savedOn`, and that causes record locking to keep its old state.
6
+ *
7
+ * This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.
8
+ */
9
+ export declare const UseRecordsDecorator: () => import("react").JSX.Element;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.UseRecordsDecorator = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _appAco = require("@webiny/app-aco");
10
+ /**
11
+ * When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.
12
+ * When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might
13
+ * be doing it without the `savedOn`, and that causes record locking to keep its old state.
14
+ *
15
+ * This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.
16
+ */
17
+ var UseRecordsDecorator = exports.UseRecordsDecorator = _appAco.useRecords.createDecorator(function (baseHook) {
18
+ return function (folderId) {
19
+ var hook = baseHook(folderId);
20
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, hook), {}, {
21
+ updateRecordInCache: function updateRecordInCache(record) {
22
+ hook.updateRecordInCache((0, _objectSpread2.default)((0, _objectSpread2.default)({}, record), {}, {
23
+ savedOn: new Date().toISOString()
24
+ }));
25
+ }
26
+ });
27
+ };
28
+ });
29
+
30
+ //# sourceMappingURL=UseRecordsDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_appAco","require","UseRecordsDecorator","exports","useRecords","createDecorator","baseHook","folderId","hook","_objectSpread2","default","updateRecordInCache","record","savedOn","Date","toISOString"],"sources":["UseRecordsDecorator.tsx"],"sourcesContent":["import { useRecords } from \"@webiny/app-aco\";\n\n/**\n * When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.\n * When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might\n * be doing it without the `savedOn`, and that causes record locking to keep its old state.\n *\n * This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.\n */\nexport const UseRecordsDecorator = useRecords.createDecorator(baseHook => {\n return (folderId?: string) => {\n const hook = baseHook(folderId);\n\n return {\n ...hook,\n updateRecordInCache(record: any) {\n hook.updateRecordInCache({\n ...record,\n savedOn: new Date().toISOString()\n });\n }\n };\n };\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,kBAAU,CAACC,eAAe,CAAC,UAAAC,QAAQ,EAAI;EACtE,OAAO,UAACC,QAAiB,EAAK;IAC1B,IAAMC,IAAI,GAAGF,QAAQ,CAACC,QAAQ,CAAC;IAE/B,WAAAE,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOF,IAAI;MACPG,mBAAmB,WAAAA,oBAACC,MAAW,EAAE;QAC7BJ,IAAI,CAACG,mBAAmB,KAAAF,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACjBE,MAAM;UACTC,OAAO,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;QAAC,EACpC,CAAC;MACN;IAAC;EAET,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-record-locking",
3
- "version": "5.40.0-beta.5",
3
+ "version": "6.0.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,16 +16,17 @@
16
16
  "@apollo/react-hooks": "3.1.5",
17
17
  "@emotion/styled": "11.10.6",
18
18
  "@material-design-icons/svg": "0.14.13",
19
- "@webiny/app": "5.40.0-beta.5",
20
- "@webiny/app-admin": "5.40.0-beta.5",
21
- "@webiny/app-headless-cms": "5.40.0-beta.5",
22
- "@webiny/app-security": "5.40.0-beta.5",
23
- "@webiny/app-wcp": "5.40.0-beta.5",
24
- "@webiny/app-websockets": "5.40.0-beta.5",
25
- "@webiny/error": "5.40.0-beta.5",
26
- "@webiny/react-router": "5.40.0-beta.5",
27
- "@webiny/ui": "5.40.0-beta.5",
28
- "@webiny/utils": "5.40.0-beta.5",
19
+ "@webiny/app": "6.0.0-beta.0",
20
+ "@webiny/app-aco": "6.0.0-beta.0",
21
+ "@webiny/app-admin": "6.0.0-beta.0",
22
+ "@webiny/app-headless-cms": "6.0.0-beta.0",
23
+ "@webiny/app-security": "6.0.0-beta.0",
24
+ "@webiny/app-wcp": "6.0.0-beta.0",
25
+ "@webiny/app-websockets": "6.0.0-beta.0",
26
+ "@webiny/error": "6.0.0-beta.0",
27
+ "@webiny/react-router": "6.0.0-beta.0",
28
+ "@webiny/ui": "6.0.0-beta.0",
29
+ "@webiny/utils": "6.0.0-beta.0",
29
30
  "apollo-client": "2.6.10",
30
31
  "apollo-link": "1.2.14",
31
32
  "crypto-hash": "3.0.0",
@@ -40,8 +41,8 @@
40
41
  "@babel/preset-env": "7.24.3",
41
42
  "@babel/preset-react": "7.24.1",
42
43
  "@babel/preset-typescript": "7.24.1",
43
- "@webiny/cli": "5.40.0-beta.5",
44
- "@webiny/project-utils": "5.40.0-beta.5",
44
+ "@webiny/cli": "6.0.0-beta.0",
45
+ "@webiny/project-utils": "6.0.0-beta.0",
45
46
  "rimraf": "5.0.5",
46
47
  "ttypescript": "1.5.15",
47
48
  "typescript": "4.7.4"
@@ -54,5 +55,5 @@
54
55
  "build": "yarn webiny run build",
55
56
  "watch": "yarn webiny run watch"
56
57
  },
57
- "gitHead": "04482b686c63fdadebd4c6c1db7595af1140cfc7"
58
+ "gitHead": "aa8dbfbbd5ad13ec271adba6f2431e02991a300f"
58
59
  }