@webiny/app-record-locking 6.0.0-beta.0 → 6.0.0-rc.1

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.
Files changed (149) hide show
  1. package/README.md +8 -9
  2. package/components/HeadlessCmsActionsAcoCell.js +46 -57
  3. package/components/HeadlessCmsActionsAcoCell.js.map +1 -1
  4. package/components/HeadlessCmsContentEntry/ContentEntryGuard.d.ts +4 -0
  5. package/components/HeadlessCmsContentEntry/ContentEntryGuard.js +24 -70
  6. package/components/HeadlessCmsContentEntry/ContentEntryGuard.js.map +1 -1
  7. package/components/HeadlessCmsContentEntry/ContentEntryLocker.d.ts +7 -3
  8. package/components/HeadlessCmsContentEntry/ContentEntryLocker.js +82 -84
  9. package/components/HeadlessCmsContentEntry/ContentEntryLocker.js.map +1 -1
  10. package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js +66 -40
  11. package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js.map +1 -1
  12. package/components/HeadlessCmsContentEntry/index.d.ts +1 -1
  13. package/components/HeadlessCmsContentEntry/index.js +1 -16
  14. package/components/HeadlessCmsContentEntry/index.js.map +1 -1
  15. package/components/LockedRecord/LockedRecord.d.ts +1 -1
  16. package/components/LockedRecord/LockedRecord.js +51 -146
  17. package/components/LockedRecord/LockedRecord.js.map +1 -1
  18. package/components/LockedRecord/LockedRecordForceUnlock.d.ts +1 -1
  19. package/components/LockedRecord/LockedRecordForceUnlock.js +49 -95
  20. package/components/LockedRecord/LockedRecordForceUnlock.js.map +1 -1
  21. package/components/LockedRecord/index.d.ts +1 -1
  22. package/components/LockedRecord/index.js +1 -16
  23. package/components/LockedRecord/index.js.map +1 -1
  24. package/components/RecordLockingProvider.d.ts +1 -1
  25. package/components/RecordLockingProvider.js +63 -68
  26. package/components/RecordLockingProvider.js.map +1 -1
  27. package/components/SecurityPermissions.d.ts +2 -0
  28. package/components/SecurityPermissions.js +23 -0
  29. package/components/SecurityPermissions.js.map +1 -0
  30. package/components/decorators/UseContentEntriesListHookDecorator.d.ts +1 -2
  31. package/components/decorators/UseContentEntriesListHookDecorator.js +13 -18
  32. package/components/decorators/UseContentEntriesListHookDecorator.js.map +1 -1
  33. package/components/decorators/UseRecordsDecorator.d.ts +1 -2
  34. package/components/decorators/UseRecordsDecorator.js +11 -16
  35. package/components/decorators/UseRecordsDecorator.js.map +1 -1
  36. package/components/decorators/UseSaveEntryDecorator.d.ts +1 -2
  37. package/components/decorators/UseSaveEntryDecorator.js +34 -34
  38. package/components/decorators/UseSaveEntryDecorator.js.map +1 -1
  39. package/domain/RecordLocking.d.ts +10 -14
  40. package/domain/RecordLocking.js +272 -330
  41. package/domain/RecordLocking.js.map +1 -1
  42. package/domain/RecordLockingClient.d.ts +3 -3
  43. package/domain/RecordLockingClient.js +15 -29
  44. package/domain/RecordLockingClient.js.map +1 -1
  45. package/domain/RecordLockingGetLockRecord.d.ts +2 -2
  46. package/domain/RecordLockingGetLockRecord.js +16 -29
  47. package/domain/RecordLockingGetLockRecord.js.map +1 -1
  48. package/domain/RecordLockingGetLockedEntryLockRecord.d.ts +2 -2
  49. package/domain/RecordLockingGetLockedEntryLockRecord.js +14 -27
  50. package/domain/RecordLockingGetLockedEntryLockRecord.js.map +1 -1
  51. package/domain/RecordLockingIsEntryLocked.d.ts +2 -2
  52. package/domain/RecordLockingIsEntryLocked.js +14 -27
  53. package/domain/RecordLockingIsEntryLocked.js.map +1 -1
  54. package/domain/RecordLockingListLockRecords.d.ts +3 -3
  55. package/domain/RecordLockingListLockRecords.js +26 -37
  56. package/domain/RecordLockingListLockRecords.js.map +1 -1
  57. package/domain/RecordLockingLockEntry.d.ts +2 -2
  58. package/domain/RecordLockingLockEntry.js +9 -24
  59. package/domain/RecordLockingLockEntry.js.map +1 -1
  60. package/domain/RecordLockingUnlockEntry.d.ts +2 -2
  61. package/domain/RecordLockingUnlockEntry.js +14 -27
  62. package/domain/RecordLockingUnlockEntry.js.map +1 -1
  63. package/domain/RecordLockingUpdateEntryLock.d.ts +2 -2
  64. package/domain/RecordLockingUpdateEntryLock.js +14 -27
  65. package/domain/RecordLockingUpdateEntryLock.js.map +1 -1
  66. package/domain/abstractions/IRecordLocking.d.ts +8 -2
  67. package/domain/abstractions/IRecordLocking.js +1 -5
  68. package/domain/abstractions/IRecordLocking.js.map +1 -1
  69. package/domain/abstractions/IRecordLockingClient.d.ts +2 -2
  70. package/domain/abstractions/IRecordLockingClient.js +1 -5
  71. package/domain/abstractions/IRecordLockingClient.js.map +1 -1
  72. package/domain/abstractions/IRecordLockingGetLockRecord.d.ts +1 -1
  73. package/domain/abstractions/IRecordLockingGetLockRecord.js +1 -5
  74. package/domain/abstractions/IRecordLockingGetLockRecord.js.map +1 -1
  75. package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.d.ts +1 -1
  76. package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.js +1 -5
  77. package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.js.map +1 -1
  78. package/domain/abstractions/IRecordLockingIsEntryLocked.d.ts +1 -1
  79. package/domain/abstractions/IRecordLockingIsEntryLocked.js +1 -5
  80. package/domain/abstractions/IRecordLockingListLockRecords.d.ts +1 -1
  81. package/domain/abstractions/IRecordLockingListLockRecords.js +1 -5
  82. package/domain/abstractions/IRecordLockingListLockRecords.js.map +1 -1
  83. package/domain/abstractions/IRecordLockingLockEntry.d.ts +1 -1
  84. package/domain/abstractions/IRecordLockingLockEntry.js +1 -5
  85. package/domain/abstractions/IRecordLockingLockEntry.js.map +1 -1
  86. package/domain/abstractions/IRecordLockingUnlockEntry.d.ts +1 -1
  87. package/domain/abstractions/IRecordLockingUnlockEntry.js +1 -5
  88. package/domain/abstractions/IRecordLockingUnlockEntry.js.map +1 -1
  89. package/domain/abstractions/IRecordLockingUpdateEntryLock.d.ts +1 -1
  90. package/domain/abstractions/IRecordLockingUpdateEntryLock.js +1 -5
  91. package/domain/abstractions/IRecordLockingUpdateEntryLock.js.map +1 -1
  92. package/domain/graphql/fields.js +28 -8
  93. package/domain/graphql/fields.js.map +1 -1
  94. package/domain/graphql/getLockRecord.d.ts +3 -3
  95. package/domain/graphql/getLockRecord.js +16 -12
  96. package/domain/graphql/getLockRecord.js.map +1 -1
  97. package/domain/graphql/getLockedEntryLockRecord.d.ts +3 -3
  98. package/domain/graphql/getLockedEntryLockRecord.js +16 -12
  99. package/domain/graphql/getLockedEntryLockRecord.js.map +1 -1
  100. package/domain/graphql/isEntryLocked.d.ts +3 -3
  101. package/domain/graphql/isEntryLocked.js +14 -12
  102. package/domain/graphql/isEntryLocked.js.map +1 -1
  103. package/domain/graphql/listLockRecords.d.ts +3 -3
  104. package/domain/graphql/listLockRecords.js +23 -14
  105. package/domain/graphql/listLockRecords.js.map +1 -1
  106. package/domain/graphql/lockEntry.d.ts +3 -3
  107. package/domain/graphql/lockEntry.js +17 -13
  108. package/domain/graphql/lockEntry.js.map +1 -1
  109. package/domain/graphql/unlockEntry.d.ts +3 -3
  110. package/domain/graphql/unlockEntry.js +16 -12
  111. package/domain/graphql/unlockEntry.js.map +1 -1
  112. package/domain/graphql/updateEntryLock.d.ts +3 -3
  113. package/domain/graphql/updateEntryLock.js +16 -12
  114. package/domain/graphql/updateEntryLock.js.map +1 -1
  115. package/domain/utils/createRecordLockingClient.d.ts +1 -1
  116. package/domain/utils/createRecordLockingClient.js +6 -12
  117. package/domain/utils/createRecordLockingClient.js.map +1 -1
  118. package/domain/utils/createRecordLockingError.d.ts +1 -1
  119. package/domain/utils/createRecordLockingError.js +1 -7
  120. package/domain/utils/createRecordLockingError.js.map +1 -1
  121. package/hooks/index.d.ts +2 -2
  122. package/hooks/index.js +2 -27
  123. package/hooks/index.js.map +1 -1
  124. package/hooks/usePermission.d.ts +1 -1
  125. package/hooks/usePermission.js +14 -15
  126. package/hooks/usePermission.js.map +1 -1
  127. package/hooks/useRecordLocking.d.ts +1 -1
  128. package/hooks/useRecordLocking.js +6 -12
  129. package/hooks/useRecordLocking.js.map +1 -1
  130. package/index.d.ts +2 -2
  131. package/index.js +19 -49
  132. package/index.js.map +1 -1
  133. package/package.json +16 -31
  134. package/types.d.ts +32 -12
  135. package/types.js +1 -5
  136. package/types.js.map +1 -1
  137. package/utils/createCacheKey.d.ts +2 -2
  138. package/utils/createCacheKey.js +5 -11
  139. package/utils/createCacheKey.js.map +1 -1
  140. package/components/assets/lock.svg +0 -13
  141. package/domain/RecordLockingUnlockEntryRequest.d.ts +0 -11
  142. package/domain/RecordLockingUnlockEntryRequest.js +0 -28
  143. package/domain/RecordLockingUnlockEntryRequest.js.map +0 -1
  144. package/domain/abstractions/IRecordLockingUnlockEntryRequest.d.ts +0 -12
  145. package/domain/abstractions/IRecordLockingUnlockEntryRequest.js +0 -7
  146. package/domain/abstractions/IRecordLockingUnlockEntryRequest.js.map +0 -1
  147. package/domain/graphql/unlockEntryRequest.d.ts +0 -12
  148. package/domain/graphql/unlockEntryRequest.js +0 -16
  149. package/domain/graphql/unlockEntryRequest.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_Elevation","_hooks","_appHeadlessCms","_LockedRecordForceUnlock","_lock","_EMOTION_STRINGIFIED_CSS_ERROR__","StyledWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","InnerWrapper","Content","IconBox","Bold","Wrapper","_ref","children","createElement","Elevation","z","ReactComponent","StyledTitle","Title","_useContentEntry","useContentEntry","entry","meta","title","Text","BaseElevation","LockedRecord","exports","_ref2","lockRecordEntry","record","_useRecordLocking","useRecordLocking","getLockRecordEntry","id","lockedBy","LockedRecordForceUnlock","type","$lockingType","displayName"],"sources":["LockedRecord.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { Elevation as BaseElevation } from \"@webiny/ui/Elevation\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { useContentEntry } from \"@webiny/app-headless-cms\";\nimport { LockedRecordForceUnlock } from \"./LockedRecordForceUnlock\";\nimport { ReactComponent as LockIcon } from \"@material-design-icons/svg/outlined/lock.svg\";\nimport { IRecordLockingLockRecord } from \"~/types\";\n\nconst StyledWrapper = styled(\"div\")({\n width: \"50%\",\n margin: \"100px auto 0 auto\",\n backgroundColor: \"var(--mdc-theme-surface)\"\n});\n\nconst InnerWrapper = styled(\"div\")({\n display: \"flex\"\n});\n\nconst Content = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\"\n});\n\nconst IconBox = styled(\"div\")({\n width: 250,\n height: 250,\n marginRight: 25,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n backgroundColor: \"var(--mdc-theme-background)\",\n svg: {\n width: 150,\n height: 150,\n lineHeight: \"100%\",\n display: \"block\",\n fill: \"var(--mdc-theme-primary)\"\n }\n});\n\nconst Bold = styled(\"span\")({\n fontWeight: 600\n});\n\ninterface IWrapperProps {\n children: React.ReactNode;\n}\n\nconst Wrapper = ({ children }: IWrapperProps) => {\n return (\n <StyledWrapper>\n <Elevation z={2}>\n <InnerWrapper>\n <IconBox>\n <LockIcon />\n </IconBox>\n <Content>{children}</Content>\n </InnerWrapper>\n </Elevation>\n </StyledWrapper>\n );\n};\n\nconst StyledTitle = styled(\"h3\")({\n fontSize: 24,\n marginBottom: \"10px\",\n fontWeight: \"600\",\n \" > em\": {\n fontStyle: \"italic\"\n }\n});\n\nconst Title = () => {\n const { entry } = useContentEntry();\n return <StyledTitle>Record ({entry.meta.title}) is locked!</StyledTitle>;\n};\n\nconst Text = styled(\"p\")({\n fontSize: 16,\n marginBottom: \"10px\",\n lineHeight: \"125%\"\n});\n\nconst Elevation = styled(BaseElevation)({\n padding: \"20px\"\n});\n\nexport interface ILockedRecordProps {\n record: IRecordLockingLockRecord;\n}\n\nexport const LockedRecord = ({ record: lockRecordEntry }: ILockedRecordProps) => {\n const { getLockRecordEntry } = useRecordLocking();\n\n const record = getLockRecordEntry(lockRecordEntry.id);\n\n if (!record) {\n return (\n <Wrapper>\n <Text>Could not find the lock record. Please refresh the Admin UI.</Text>\n </Wrapper>\n );\n } else if (!lockRecordEntry?.lockedBy) {\n return (\n <Wrapper>\n <Title />\n <Text>\n This record is locked, but the system cannot find the user that created the\n record lock.\n </Text>\n <Text>\n A force-unlock is required to regain editing capabilities for this record.\n </Text>\n <LockedRecordForceUnlock\n id={lockRecordEntry.id}\n type={record.$lockingType}\n title={record.meta.title}\n />\n </Wrapper>\n );\n }\n return (\n <Wrapper>\n <Title />\n <Text>\n It is locked because <Bold>{lockRecordEntry.lockedBy.displayName}</Bold> is\n currently editing this record.\n </Text>\n <Text>\n You can either contact the user and ask them to unlock the record, or you can wait\n for the lock to expire.\n </Text>\n <LockedRecordForceUnlock\n id={lockRecordEntry.id}\n type={record.$lockingType}\n lockedBy={lockRecordEntry.lockedBy}\n title={record.meta.title}\n />\n </Wrapper>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ReactComponent","LockIcon","Grid","Heading","Icon","Text","useRecordLocking","useContentEntry","LockedRecordForceUnlock","Wrapper","children","createElement","Fragment","className","Column","span","style","width","height","icon","label","color","size","Title","entry","level","meta","title","LockedRecord","record","lockRecordEntry","getLockRecordEntry","id","lockedBy","type","$lockingType","displayName"],"sources":["LockedRecord.tsx"],"sourcesContent":["import React from \"react\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/lock.svg\";\nimport { Grid, Heading, Icon, Text } from \"@webiny/admin-ui\";\nimport { useRecordLocking } from \"~/hooks/index.js\";\nimport { useContentEntry } from \"@webiny/app-headless-cms\";\nimport { LockedRecordForceUnlock } from \"./LockedRecordForceUnlock.js\";\nimport type { IRecordLockingLockRecord } from \"~/types.js\";\n\ninterface IWrapperProps {\n children: React.ReactNode;\n}\n\nconst Wrapper = ({ children }: IWrapperProps) => {\n return (\n <>\n <div className=\"w-5/12 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-50\">\n <div\n className={\n \"flex p-lg border-sm border-neutral-dimmed-darker rounded-3xl bg-neutral-base\"\n }\n >\n <Grid>\n <Grid.Column span={3}>\n <div className=\"h-full flex items-center justify-center bg-neutral-dimmed rounded-md p-lg\">\n <Icon\n style={{\n width: \"64px\",\n height: \"64px\"\n }}\n icon={<LockIcon />}\n label={\"Locked Record\"}\n color={\"accent\"}\n size={\"lg\"}\n />\n </div>\n </Grid.Column>\n <Grid.Column span={9}>\n <div className={\"flex flex-col justify-center\"}>{children}</div>\n </Grid.Column>\n </Grid>\n </div>\n </div>\n {/*<div className=\"absolute inset-0 bg-neutral-dark/50 z-45\"></div>*/}\n </>\n );\n};\n\nconst Title = () => {\n const { entry } = useContentEntry();\n return (\n <Heading level={4} className={\"mb-sm\"}>\n Record ({entry.meta.title}) is locked!\n </Heading>\n );\n};\n\nexport interface ILockedRecordProps {\n record: IRecordLockingLockRecord;\n}\n\nexport const LockedRecord = ({ record: lockRecordEntry }: ILockedRecordProps) => {\n const { getLockRecordEntry } = useRecordLocking();\n\n const record = getLockRecordEntry(lockRecordEntry.id);\n\n if (!record) {\n return (\n <Wrapper>\n <Text>Could not find the lock record. Please refresh the Admin UI.</Text>\n </Wrapper>\n );\n } else if (!lockRecordEntry?.lockedBy) {\n return (\n <Wrapper>\n <Title />\n <Text>\n This record is locked, but the system cannot find the user that created the\n record lock. A force-unlock is required to regain editing capabilities for this\n record.\n </Text>\n <LockedRecordForceUnlock\n id={lockRecordEntry.id}\n type={record.$lockingType}\n title={record.meta?.title}\n />\n </Wrapper>\n );\n }\n return (\n <Wrapper>\n <Title />\n <Text>\n It is locked because <strong>{lockRecordEntry.lockedBy.displayName}</strong> is\n currently editing this record. You can either contact the user and ask them to\n unlock the record, or you can wait for the lock to expire.\n </Text>\n <LockedRecordForceUnlock\n id={lockRecordEntry.id}\n type={record.$lockingType}\n lockedBy={lockRecordEntry.lockedBy}\n title={record.meta?.title}\n />\n </Wrapper>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,IAAIC,QAAQ,QAAQ,wBAAwB;AACnE,SAASC,IAAI,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAC5D,SAASC,gBAAgB;AACzB,SAASC,eAAe,QAAQ,0BAA0B;AAC1D,SAASC,uBAAuB;AAOhC,MAAMC,OAAO,GAAGA,CAAC;EAAEC;AAAwB,CAAC,KAAK;EAC7C,oBACIX,KAAA,CAAAY,aAAA,CAAAZ,KAAA,CAAAa,QAAA,qBACIb,KAAA,CAAAY,aAAA;IAAKE,SAAS,EAAC;EAAyE,gBACpFd,KAAA,CAAAY,aAAA;IACIE,SAAS,EACL;EACH,gBAEDd,KAAA,CAAAY,aAAA,CAACT,IAAI,qBACDH,KAAA,CAAAY,aAAA,CAACT,IAAI,CAACY,MAAM;IAACC,IAAI,EAAE;EAAE,gBACjBhB,KAAA,CAAAY,aAAA;IAAKE,SAAS,EAAC;EAA2E,gBACtFd,KAAA,CAAAY,aAAA,CAACP,IAAI;IACDY,KAAK,EAAE;MACHC,KAAK,EAAE,MAAM;MACbC,MAAM,EAAE;IACZ,CAAE;IACFC,IAAI,eAAEpB,KAAA,CAAAY,aAAA,CAACV,QAAQ,MAAE,CAAE;IACnBmB,KAAK,EAAE,eAAgB;IACvBC,KAAK,EAAE,QAAS;IAChBC,IAAI,EAAE;EAAK,CACd,CACA,CACI,CAAC,eACdvB,KAAA,CAAAY,aAAA,CAACT,IAAI,CAACY,MAAM;IAACC,IAAI,EAAE;EAAE,gBACjBhB,KAAA,CAAAY,aAAA;IAAKE,SAAS,EAAE;EAA+B,GAAEH,QAAc,CACtD,CACX,CACL,CACJ,CAEP,CAAC;AAEX,CAAC;AAED,MAAMa,KAAK,GAAGA,CAAA,KAAM;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGjB,eAAe,CAAC,CAAC;EACnC,oBACIR,KAAA,CAAAY,aAAA,CAACR,OAAO;IAACsB,KAAK,EAAE,CAAE;IAACZ,SAAS,EAAE;EAAQ,GAAC,UAC3B,EAACW,KAAK,CAACE,IAAI,CAACC,KAAK,EAAC,cACrB,CAAC;AAElB,CAAC;AAMD,OAAO,MAAMC,YAAY,GAAGA,CAAC;EAAEC,MAAM,EAAEC;AAAoC,CAAC,KAAK;EAC7E,MAAM;IAAEC;EAAmB,CAAC,GAAGzB,gBAAgB,CAAC,CAAC;EAEjD,MAAMuB,MAAM,GAAGE,kBAAkB,CAACD,eAAe,CAACE,EAAE,CAAC;EAErD,IAAI,CAACH,MAAM,EAAE;IACT,oBACI9B,KAAA,CAAAY,aAAA,CAACF,OAAO,qBACJV,KAAA,CAAAY,aAAA,CAACN,IAAI,QAAC,8DAAkE,CACnE,CAAC;EAElB,CAAC,MAAM,IAAI,CAACyB,eAAe,EAAEG,QAAQ,EAAE;IACnC,oBACIlC,KAAA,CAAAY,aAAA,CAACF,OAAO,qBACJV,KAAA,CAAAY,aAAA,CAACY,KAAK,MAAE,CAAC,eACTxB,KAAA,CAAAY,aAAA,CAACN,IAAI,QAAC,qKAIA,CAAC,eACPN,KAAA,CAAAY,aAAA,CAACH,uBAAuB;MACpBwB,EAAE,EAAEF,eAAe,CAACE,EAAG;MACvBE,IAAI,EAAEL,MAAM,CAACM,YAAa;MAC1BR,KAAK,EAAEE,MAAM,CAACH,IAAI,EAAEC;IAAM,CAC7B,CACI,CAAC;EAElB;EACA,oBACI5B,KAAA,CAAAY,aAAA,CAACF,OAAO,qBACJV,KAAA,CAAAY,aAAA,CAACY,KAAK,MAAE,CAAC,eACTxB,KAAA,CAAAY,aAAA,CAACN,IAAI,QAAC,uBACmB,eAAAN,KAAA,CAAAY,aAAA,iBAASmB,eAAe,CAACG,QAAQ,CAACG,WAAoB,CAAC,iJAG1E,CAAC,eACPrC,KAAA,CAAAY,aAAA,CAACH,uBAAuB;IACpBwB,EAAE,EAAEF,eAAe,CAACE,EAAG;IACvBE,IAAI,EAAEL,MAAM,CAACM,YAAa;IAC1BF,QAAQ,EAAEH,eAAe,CAACG,QAAS;IACnCN,KAAK,EAAEE,MAAM,CAACH,IAAI,EAAEC;EAAM,CAC7B,CACI,CAAC;AAElB,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IRecordLockingIdentity } from "../../types";
2
+ import type { IRecordLockingIdentity } from "../../types.js";
3
3
  export interface ILockedRecordForceUnlockProps {
4
4
  id: string;
5
5
  type: string;
@@ -1,99 +1,46 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.LockedRecordForceUnlock = void 0;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _base = _interopRequireDefault(require("@emotion/styled/base"));
11
- var _react = _interopRequireWildcard(require("react"));
12
- var _appAdmin = require("@webiny/app-admin");
13
- var _hooks = require("../../hooks");
14
- var _reactRouter = require("@webiny/react-router");
15
- var _appHeadlessCms = require("@webiny/app-headless-cms");
16
- var _Alert = require("@webiny/ui/Alert");
17
- var _Button = require("@webiny/ui/Button");
18
- 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)."; }
19
- var Wrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
20
- target: "e1yz5d7m2"
21
- } : {
22
- target: "e1yz5d7m2",
23
- label: "Wrapper"
24
- })(process.env.NODE_ENV === "production" ? {
25
- name: "38ejjw",
26
- styles: "padding:0;background-color:white"
27
- } : {
28
- name: "38ejjw",
29
- styles: "padding:0;background-color:white",
30
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvY2tlZFJlY29yZEZvcmNlVW5sb2NrLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVZ0IiLCJmaWxlIjoiTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IElSZWNvcmRMb2NraW5nRXJyb3IsIElSZWNvcmRMb2NraW5nSWRlbnRpdHkgfSBmcm9tIFwifi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlQ29uZmlybWF0aW9uRGlhbG9nLCB1c2VTbmFja2JhciB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pblwiO1xuaW1wb3J0IHsgdXNlUmVjb3JkTG9ja2luZywgdXNlUGVybWlzc2lvbiB9IGZyb20gXCJ+L2hvb2tzXCI7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tIFwiQHdlYmlueS9yZWFjdC1yb3V0ZXJcIjtcbmltcG9ydCB7IHVzZUNvbnRlbnRFbnRyaWVzTGlzdCB9IGZyb20gXCJAd2ViaW55L2FwcC1oZWFkbGVzcy1jbXNcIjtcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSBcIkB3ZWJpbnkvdWkvQWxlcnRcIjtcbmltcG9ydCB7IEJ1dHRvblByaW1hcnkgfSBmcm9tIFwiQHdlYmlueS91aS9CdXR0b25cIjtcblxuY29uc3QgV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgcGFkZGluZzogXCIwXCIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCJcbn0pO1xuXG5jb25zdCBUZXh0ID0gc3R5bGVkKFwicFwiKSh7XG4gICAgbGluZUhlaWdodDogXCIxMjUlXCJcbn0pO1xuXG5jb25zdCBCb2xkID0gc3R5bGVkKFwic3BhblwiKSh7XG4gICAgZm9udFdlaWdodDogNjAwXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2tQcm9wcyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBsb2NrZWRCeT86IElSZWNvcmRMb2NraW5nSWRlbnRpdHk7XG59XG5cbmNvbnN0IEVycm9yTWVzc2FnZSA9IChwcm9wczogSUxvY2tlZFJlY29yZEZvcmNlVW5sb2NrUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRpdGxlLCBsb2NrZWRCeSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxBbGVydCB0eXBlPVwid2FybmluZ1wiIHRpdGxlPVwiV2FybmluZ1wiPlxuICAgICAgICAgICAgICAgIDxCb2xkPntsb2NrZWRCeT8uZGlzcGxheU5hbWUgfHwgXCJVbmtub3duIHVzZXJcIn08L0JvbGQ+IGlzIGN1cnJlbnRseSBlZGl0aW5nIHRoaXNcbiAgICAgICAgICAgICAgICByZWNvcmQuXG4gICAgICAgICAgICAgICAgPGJyIC8+IElmIHlvdSBmb3JjZSB1bmxvY2sgaXQsIHRoZXkgY291bGQgcG90ZW50aWFsbHkgbG9zZSB0aGVpciBjaGFuZ2VzLlxuICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgWW91IGFyZSBhYm91dCB0byBmb3JjZWZ1bGx5IHVubG9jayB0aGUgPEJvbGQ+e3RpdGxlfTwvQm9sZD4gZW50cnkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWU/PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IExvY2tlZFJlY29yZEZvcmNlVW5sb2NrID0gKHByb3BzOiBJTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2tQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdW5sb2NrRW50cnlGb3JjZSB9ID0gdXNlUmVjb3JkTG9ja2luZygpO1xuXG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvIH0gPSB1c2VDb250ZW50RW50cmllc0xpc3QoKTtcbiAgICBjb25zdCB7IHNob3dDb25maXJtYXRpb246IHNob3dGb3JjZVVubG9ja0NvbmZpcm1hdGlvbiB9ID0gdXNlQ29uZmlybWF0aW9uRGlhbG9nKHtcbiAgICAgICAgdGl0bGU6IFwiRm9yY2UgdW5sb2NrIHRoZSBlbnRyeVwiLFxuICAgICAgICBtZXNzYWdlOiA8RXJyb3JNZXNzYWdlIHsuLi5wcm9wc30gLz5cbiAgICB9KTtcbiAgICBjb25zdCB7IHNob3dTbmFja2JhciB9ID0gdXNlU25hY2tiYXIoKTtcblxuICAgIGNvbnN0IHsgaGlzdG9yeSB9ID0gdXNlUm91dGVyKCk7XG5cbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPElSZWNvcmRMb2NraW5nRXJyb3I+KCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHNob3dTbmFja2JhcihlcnJvci5tZXNzYWdlKTtcbiAgICB9LCBbZXJyb3I/Lm1lc3NhZ2VdKTtcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNob3dGb3JjZVVubG9ja0NvbmZpcm1hdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1bmxvY2tFbnRyeUZvcmNlKHtcbiAgICAgICAgICAgICAgICBpZDogcHJvcHMuaWQsXG4gICAgICAgICAgICAgICAgJGxvY2tpbmdUeXBlOiBwcm9wcy50eXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGVUbygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0sIFtwcm9wcy5pZCwgaGlzdG9yeSwgbmF2aWdhdGVUb10pO1xuXG4gICAgY29uc3QgeyBoYXNGdWxsQWNjZXNzIH0gPSB1c2VQZXJtaXNzaW9uKCk7XG4gICAgaWYgKCFoYXNGdWxsQWNjZXNzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxXcmFwcGVyPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgQmVjYXVzZSB5b3UgaGF2ZSBhIGZ1bGwgYWNjZXNzIHRvIHRoZSBzeXN0ZW0sIHlvdSBjYW4gZm9yY2UgdW5sb2NrIHRoZSByZWNvcmQuXG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxCdXR0b25QcmltYXJ5IG9uQ2xpY2s9e29uQ2xpY2t9PlVubG9jayBhbmQgZ28gYmFjazwvQnV0dG9uUHJpbWFyeT5cbiAgICAgICAgPC9XcmFwcGVyPlxuICAgICk7XG59O1xuIl19 */",
31
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
32
- });
33
- var Text = /*#__PURE__*/(0, _base.default)("p", process.env.NODE_ENV === "production" ? {
34
- target: "e1yz5d7m1"
35
- } : {
36
- target: "e1yz5d7m1",
37
- label: "Text"
38
- })(process.env.NODE_ENV === "production" ? {
39
- name: "sqtwzz",
40
- styles: "line-height:125%"
41
- } : {
42
- name: "sqtwzz",
43
- styles: "line-height:125%",
44
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvY2tlZFJlY29yZEZvcmNlVW5sb2NrLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlYSIsImZpbGUiOiJMb2NrZWRSZWNvcmRGb3JjZVVubG9jay50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgSVJlY29yZExvY2tpbmdFcnJvciwgSVJlY29yZExvY2tpbmdJZGVudGl0eSB9IGZyb20gXCJ+L3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VDb25maXJtYXRpb25EaWFsb2csIHVzZVNuYWNrYmFyIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluXCI7XG5pbXBvcnQgeyB1c2VSZWNvcmRMb2NraW5nLCB1c2VQZXJtaXNzaW9uIH0gZnJvbSBcIn4vaG9va3NcIjtcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gXCJAd2ViaW55L3JlYWN0LXJvdXRlclwiO1xuaW1wb3J0IHsgdXNlQ29udGVudEVudHJpZXNMaXN0IH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWhlYWRsZXNzLWNtc1wiO1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tIFwiQHdlYmlueS91aS9BbGVydFwiO1xuaW1wb3J0IHsgQnV0dG9uUHJpbWFyeSB9IGZyb20gXCJAd2ViaW55L3VpL0J1dHRvblwiO1xuXG5jb25zdCBXcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKHtcbiAgICBwYWRkaW5nOiBcIjBcIixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwid2hpdGVcIlxufSk7XG5cbmNvbnN0IFRleHQgPSBzdHlsZWQoXCJwXCIpKHtcbiAgICBsaW5lSGVpZ2h0OiBcIjEyNSVcIlxufSk7XG5cbmNvbnN0IEJvbGQgPSBzdHlsZWQoXCJzcGFuXCIpKHtcbiAgICBmb250V2VpZ2h0OiA2MDBcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMb2NrZWRSZWNvcmRGb3JjZVVubG9ja1Byb3BzIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGxvY2tlZEJ5PzogSVJlY29yZExvY2tpbmdJZGVudGl0eTtcbn1cblxuY29uc3QgRXJyb3JNZXNzYWdlID0gKHByb3BzOiBJTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2tQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdGl0bGUsIGxvY2tlZEJ5IH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEFsZXJ0IHR5cGU9XCJ3YXJuaW5nXCIgdGl0bGU9XCJXYXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgPEJvbGQ+e2xvY2tlZEJ5Py5kaXNwbGF5TmFtZSB8fCBcIlVua25vd24gdXNlclwifTwvQm9sZD4gaXMgY3VycmVudGx5IGVkaXRpbmcgdGhpc1xuICAgICAgICAgICAgICAgIHJlY29yZC5cbiAgICAgICAgICAgICAgICA8YnIgLz4gSWYgeW91IGZvcmNlIHVubG9jayBpdCwgdGhleSBjb3VsZCBwb3RlbnRpYWxseSBsb3NlIHRoZWlyIGNoYW5nZXMuXG4gICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBZb3UgYXJlIGFib3V0IHRvIGZvcmNlZnVsbHkgdW5sb2NrIHRoZSA8Qm9sZD57dGl0bGV9PC9Cb2xkPiBlbnRyeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2sgPSAocHJvcHM6IElMb2NrZWRSZWNvcmRGb3JjZVVubG9ja1Byb3BzKSA9PiB7XG4gICAgY29uc3QgeyB1bmxvY2tFbnRyeUZvcmNlIH0gPSB1c2VSZWNvcmRMb2NraW5nKCk7XG5cbiAgICBjb25zdCB7IG5hdmlnYXRlVG8gfSA9IHVzZUNvbnRlbnRFbnRyaWVzTGlzdCgpO1xuICAgIGNvbnN0IHsgc2hvd0NvbmZpcm1hdGlvbjogc2hvd0ZvcmNlVW5sb2NrQ29uZmlybWF0aW9uIH0gPSB1c2VDb25maXJtYXRpb25EaWFsb2coe1xuICAgICAgICB0aXRsZTogXCJGb3JjZSB1bmxvY2sgdGhlIGVudHJ5XCIsXG4gICAgICAgIG1lc3NhZ2U6IDxFcnJvck1lc3NhZ2Ugey4uLnByb3BzfSAvPlxuICAgIH0pO1xuICAgIGNvbnN0IHsgc2hvd1NuYWNrYmFyIH0gPSB1c2VTbmFja2JhcigpO1xuXG4gICAgY29uc3QgeyBoaXN0b3J5IH0gPSB1c2VSb3V0ZXIoKTtcblxuICAgIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8SVJlY29yZExvY2tpbmdFcnJvcj4oKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgc2hvd1NuYWNrYmFyKGVycm9yLm1lc3NhZ2UpO1xuICAgIH0sIFtlcnJvcj8ubWVzc2FnZV0pO1xuXG4gICAgY29uc3Qgb25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2hvd0ZvcmNlVW5sb2NrQ29uZmlybWF0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVubG9ja0VudHJ5Rm9yY2Uoe1xuICAgICAgICAgICAgICAgIGlkOiBwcm9wcy5pZCxcbiAgICAgICAgICAgICAgICAkbG9ja2luZ1R5cGU6IHByb3BzLnR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0RXJyb3IocmVzdWx0LmVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3Byb3BzLmlkLCBoaXN0b3J5LCBuYXZpZ2F0ZVRvXSk7XG5cbiAgICBjb25zdCB7IGhhc0Z1bGxBY2Nlc3MgfSA9IHVzZVBlcm1pc3Npb24oKTtcbiAgICBpZiAoIWhhc0Z1bGxBY2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFdyYXBwZXI+XG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSBoYXZlIGEgZnVsbCBhY2Nlc3MgdG8gdGhlIHN5c3RlbSwgeW91IGNhbiBmb3JjZSB1bmxvY2sgdGhlIHJlY29yZC5cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPEJ1dHRvblByaW1hcnkgb25DbGljaz17b25DbGlja30+VW5sb2NrIGFuZCBnbyBiYWNrPC9CdXR0b25QcmltYXJ5PlxuICAgICAgICA8L1dyYXBwZXI+XG4gICAgKTtcbn07XG4iXX0= */",
45
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
46
- });
47
- var Bold = /*#__PURE__*/(0, _base.default)("span", process.env.NODE_ENV === "production" ? {
48
- target: "e1yz5d7m0"
49
- } : {
50
- target: "e1yz5d7m0",
51
- label: "Bold"
52
- })(process.env.NODE_ENV === "production" ? {
53
- name: "16ceglb",
54
- styles: "font-weight:600"
55
- } : {
56
- name: "16ceglb",
57
- styles: "font-weight:600",
58
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxvY2tlZFJlY29yZEZvcmNlVW5sb2NrLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQmEiLCJmaWxlIjoiTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcbmltcG9ydCB7IElSZWNvcmRMb2NraW5nRXJyb3IsIElSZWNvcmRMb2NraW5nSWRlbnRpdHkgfSBmcm9tIFwifi90eXBlc1wiO1xuaW1wb3J0IHsgdXNlQ29uZmlybWF0aW9uRGlhbG9nLCB1c2VTbmFja2JhciB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pblwiO1xuaW1wb3J0IHsgdXNlUmVjb3JkTG9ja2luZywgdXNlUGVybWlzc2lvbiB9IGZyb20gXCJ+L2hvb2tzXCI7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tIFwiQHdlYmlueS9yZWFjdC1yb3V0ZXJcIjtcbmltcG9ydCB7IHVzZUNvbnRlbnRFbnRyaWVzTGlzdCB9IGZyb20gXCJAd2ViaW55L2FwcC1oZWFkbGVzcy1jbXNcIjtcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSBcIkB3ZWJpbnkvdWkvQWxlcnRcIjtcbmltcG9ydCB7IEJ1dHRvblByaW1hcnkgfSBmcm9tIFwiQHdlYmlueS91aS9CdXR0b25cIjtcblxuY29uc3QgV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgcGFkZGluZzogXCIwXCIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCJcbn0pO1xuXG5jb25zdCBUZXh0ID0gc3R5bGVkKFwicFwiKSh7XG4gICAgbGluZUhlaWdodDogXCIxMjUlXCJcbn0pO1xuXG5jb25zdCBCb2xkID0gc3R5bGVkKFwic3BhblwiKSh7XG4gICAgZm9udFdlaWdodDogNjAwXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2tQcm9wcyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBsb2NrZWRCeT86IElSZWNvcmRMb2NraW5nSWRlbnRpdHk7XG59XG5cbmNvbnN0IEVycm9yTWVzc2FnZSA9IChwcm9wczogSUxvY2tlZFJlY29yZEZvcmNlVW5sb2NrUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRpdGxlLCBsb2NrZWRCeSB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxBbGVydCB0eXBlPVwid2FybmluZ1wiIHRpdGxlPVwiV2FybmluZ1wiPlxuICAgICAgICAgICAgICAgIDxCb2xkPntsb2NrZWRCeT8uZGlzcGxheU5hbWUgfHwgXCJVbmtub3duIHVzZXJcIn08L0JvbGQ+IGlzIGN1cnJlbnRseSBlZGl0aW5nIHRoaXNcbiAgICAgICAgICAgICAgICByZWNvcmQuXG4gICAgICAgICAgICAgICAgPGJyIC8+IElmIHlvdSBmb3JjZSB1bmxvY2sgaXQsIHRoZXkgY291bGQgcG90ZW50aWFsbHkgbG9zZSB0aGVpciBjaGFuZ2VzLlxuICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgWW91IGFyZSBhYm91dCB0byBmb3JjZWZ1bGx5IHVubG9jayB0aGUgPEJvbGQ+e3RpdGxlfTwvQm9sZD4gZW50cnkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWU/PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IExvY2tlZFJlY29yZEZvcmNlVW5sb2NrID0gKHByb3BzOiBJTG9ja2VkUmVjb3JkRm9yY2VVbmxvY2tQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdW5sb2NrRW50cnlGb3JjZSB9ID0gdXNlUmVjb3JkTG9ja2luZygpO1xuXG4gICAgY29uc3QgeyBuYXZpZ2F0ZVRvIH0gPSB1c2VDb250ZW50RW50cmllc0xpc3QoKTtcbiAgICBjb25zdCB7IHNob3dDb25maXJtYXRpb246IHNob3dGb3JjZVVubG9ja0NvbmZpcm1hdGlvbiB9ID0gdXNlQ29uZmlybWF0aW9uRGlhbG9nKHtcbiAgICAgICAgdGl0bGU6IFwiRm9yY2UgdW5sb2NrIHRoZSBlbnRyeVwiLFxuICAgICAgICBtZXNzYWdlOiA8RXJyb3JNZXNzYWdlIHsuLi5wcm9wc30gLz5cbiAgICB9KTtcbiAgICBjb25zdCB7IHNob3dTbmFja2JhciB9ID0gdXNlU25hY2tiYXIoKTtcblxuICAgIGNvbnN0IHsgaGlzdG9yeSB9ID0gdXNlUm91dGVyKCk7XG5cbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPElSZWNvcmRMb2NraW5nRXJyb3I+KCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHNob3dTbmFja2JhcihlcnJvci5tZXNzYWdlKTtcbiAgICB9LCBbZXJyb3I/Lm1lc3NhZ2VdKTtcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNob3dGb3JjZVVubG9ja0NvbmZpcm1hdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1bmxvY2tFbnRyeUZvcmNlKHtcbiAgICAgICAgICAgICAgICBpZDogcHJvcHMuaWQsXG4gICAgICAgICAgICAgICAgJGxvY2tpbmdUeXBlOiBwcm9wcy50eXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGVUbygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEVycm9yKHJlc3VsdC5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0sIFtwcm9wcy5pZCwgaGlzdG9yeSwgbmF2aWdhdGVUb10pO1xuXG4gICAgY29uc3QgeyBoYXNGdWxsQWNjZXNzIH0gPSB1c2VQZXJtaXNzaW9uKCk7XG4gICAgaWYgKCFoYXNGdWxsQWNjZXNzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxXcmFwcGVyPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgQmVjYXVzZSB5b3UgaGF2ZSBhIGZ1bGwgYWNjZXNzIHRvIHRoZSBzeXN0ZW0sIHlvdSBjYW4gZm9yY2UgdW5sb2NrIHRoZSByZWNvcmQuXG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxCdXR0b25QcmltYXJ5IG9uQ2xpY2s9e29uQ2xpY2t9PlVubG9jayBhbmQgZ28gYmFjazwvQnV0dG9uUHJpbWFyeT5cbiAgICAgICAgPC9XcmFwcGVyPlxuICAgICk7XG59O1xuIl19 */",
59
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
60
- });
61
- var ErrorMessage = function ErrorMessage(props) {
62
- var title = props.title,
63
- lockedBy = props.lockedBy;
64
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import { Alert, Button, Text } from "@webiny/admin-ui";
3
+ import { useConfirmationDialog, useSnackbar } from "@webiny/app-admin";
4
+ import { useContentEntriesList } from "@webiny/app-headless-cms";
5
+ import { useRecordLocking, usePermission } from "../../hooks/index.js";
6
+ const ErrorMessage = props => {
7
+ const {
8
+ title,
9
+ lockedBy
10
+ } = props;
11
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Alert, {
65
12
  type: "warning",
66
- title: "Warning"
67
- }, /*#__PURE__*/_react.default.createElement(Bold, null, lockedBy?.displayName || "Unknown user"), " is currently editing this record.", /*#__PURE__*/_react.default.createElement("br", null), " If you force unlock it, they could potentially lose their changes."), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("p", null, "You are about to forcefully unlock the ", /*#__PURE__*/_react.default.createElement(Bold, null, title), " entry."), /*#__PURE__*/_react.default.createElement("p", null, "Are you sure you want to continue?"));
13
+ title: "Warning",
14
+ className: "mb-md"
15
+ }, /*#__PURE__*/React.createElement("strong", null, lockedBy?.displayName || "Unknown user"), " is currently editing this record.", /*#__PURE__*/React.createElement("br", null), " If you force unlock it, they could potentially lose their changes."), /*#__PURE__*/React.createElement(Text, null, "You are about to forcefully unlock the ", /*#__PURE__*/React.createElement("strong", null, title), " entry. Are you sure you want to continue?"));
68
16
  };
69
- var LockedRecordForceUnlock = exports.LockedRecordForceUnlock = function LockedRecordForceUnlock(props) {
70
- var _useRecordLocking = (0, _hooks.useRecordLocking)(),
71
- unlockEntryForce = _useRecordLocking.unlockEntryForce;
72
- var _useContentEntriesLis = (0, _appHeadlessCms.useContentEntriesList)(),
73
- navigateTo = _useContentEntriesLis.navigateTo;
74
- var _useConfirmationDialo = (0, _appAdmin.useConfirmationDialog)({
75
- title: "Force unlock the entry",
76
- message: /*#__PURE__*/_react.default.createElement(ErrorMessage, props)
77
- }),
78
- showForceUnlockConfirmation = _useConfirmationDialo.showConfirmation;
79
- var _useSnackbar = (0, _appAdmin.useSnackbar)(),
80
- showSnackbar = _useSnackbar.showSnackbar;
81
- var _useRouter = (0, _reactRouter.useRouter)(),
82
- history = _useRouter.history;
83
- var _useState = (0, _react.useState)(),
84
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
- error = _useState2[0],
86
- setError = _useState2[1];
87
- (0, _react.useEffect)(function () {
17
+ export const LockedRecordForceUnlock = props => {
18
+ const {
19
+ unlockEntryForce
20
+ } = useRecordLocking();
21
+ const {
22
+ navigateTo
23
+ } = useContentEntriesList();
24
+ const {
25
+ showConfirmation: showForceUnlockConfirmation
26
+ } = useConfirmationDialog({
27
+ title: "Force unlock the entry",
28
+ message: /*#__PURE__*/React.createElement(ErrorMessage, props)
29
+ });
30
+ const {
31
+ showSnackbar
32
+ } = useSnackbar();
33
+ const [error, setError] = useState();
34
+ useEffect(() => {
88
35
  if (!error?.message) {
89
36
  return;
90
37
  }
91
38
  console.error(error);
92
39
  showSnackbar(error.message);
93
40
  }, [error?.message]);
94
- var onClick = (0, _react.useCallback)(function () {
95
- showForceUnlockConfirmation(async function () {
96
- var result = await unlockEntryForce({
41
+ const onClick = useCallback(() => {
42
+ showForceUnlockConfirmation(async () => {
43
+ const result = await unlockEntryForce({
97
44
  id: props.id,
98
45
  $lockingType: props.type
99
46
  });
@@ -103,15 +50,22 @@ var LockedRecordForceUnlock = exports.LockedRecordForceUnlock = function LockedR
103
50
  }
104
51
  setError(result.error);
105
52
  });
106
- }, [props.id, history, navigateTo]);
107
- var _usePermission = (0, _hooks.usePermission)(),
108
- hasFullAccess = _usePermission.hasFullAccess;
109
- if (!hasFullAccess) {
53
+ }, [props.id, navigateTo]);
54
+ const {
55
+ canForceUnlock
56
+ } = usePermission();
57
+ if (!canForceUnlock) {
110
58
  return null;
111
59
  }
112
- return /*#__PURE__*/_react.default.createElement(Wrapper, null, /*#__PURE__*/_react.default.createElement(Text, null, "Because you have a full access to the system, you can force unlock the record."), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
113
- onClick: onClick
114
- }, "Unlock and go back"));
60
+ return /*#__PURE__*/React.createElement("div", {
61
+ className: "mt-md"
62
+ }, /*#__PURE__*/React.createElement(Text, {
63
+ as: "div",
64
+ className: "mb-md"
65
+ }, "Because you have a full access to the system, you can force unlock the record."), /*#__PURE__*/React.createElement(Button, {
66
+ onClick: onClick,
67
+ text: "Unlock and go back"
68
+ }));
115
69
  };
116
70
 
117
71
  //# sourceMappingURL=LockedRecordForceUnlock.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_appAdmin","_hooks","_reactRouter","_appHeadlessCms","_Alert","_Button","_EMOTION_STRINGIFIED_CSS_ERROR__","Wrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Text","Bold","ErrorMessage","props","title","lockedBy","createElement","Alert","type","displayName","LockedRecordForceUnlock","exports","_useRecordLocking","useRecordLocking","unlockEntryForce","_useContentEntriesLis","useContentEntriesList","navigateTo","_useConfirmationDialo","useConfirmationDialog","message","showForceUnlockConfirmation","showConfirmation","_useSnackbar","useSnackbar","showSnackbar","_useRouter","useRouter","history","_useState","useState","_useState2","_slicedToArray2","error","setError","useEffect","console","onClick","useCallback","result","id","$lockingType","_usePermission","usePermission","hasFullAccess","ButtonPrimary"],"sources":["LockedRecordForceUnlock.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport styled from \"@emotion/styled\";\nimport { IRecordLockingError, IRecordLockingIdentity } from \"~/types\";\nimport { useConfirmationDialog, useSnackbar } from \"@webiny/app-admin\";\nimport { useRecordLocking, usePermission } from \"~/hooks\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useContentEntriesList } from \"@webiny/app-headless-cms\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { ButtonPrimary } from \"@webiny/ui/Button\";\n\nconst Wrapper = styled(\"div\")({\n padding: \"0\",\n backgroundColor: \"white\"\n});\n\nconst Text = styled(\"p\")({\n lineHeight: \"125%\"\n});\n\nconst Bold = styled(\"span\")({\n fontWeight: 600\n});\n\nexport interface ILockedRecordForceUnlockProps {\n id: string;\n type: string;\n title: string;\n lockedBy?: IRecordLockingIdentity;\n}\n\nconst ErrorMessage = (props: ILockedRecordForceUnlockProps) => {\n const { title, lockedBy } = props;\n return (\n <div>\n <Alert type=\"warning\" title=\"Warning\">\n <Bold>{lockedBy?.displayName || \"Unknown user\"}</Bold> is currently editing this\n record.\n <br /> If you force unlock it, they could potentially lose their changes.\n </Alert>\n <br />\n <p>\n You are about to forcefully unlock the <Bold>{title}</Bold> entry.\n </p>\n <p>Are you sure you want to continue?</p>\n </div>\n );\n};\n\nexport const LockedRecordForceUnlock = (props: ILockedRecordForceUnlockProps) => {\n const { unlockEntryForce } = useRecordLocking();\n\n const { navigateTo } = useContentEntriesList();\n const { showConfirmation: showForceUnlockConfirmation } = useConfirmationDialog({\n title: \"Force unlock the entry\",\n message: <ErrorMessage {...props} />\n });\n const { showSnackbar } = useSnackbar();\n\n const { history } = useRouter();\n\n const [error, setError] = useState<IRecordLockingError>();\n\n useEffect(() => {\n if (!error?.message) {\n return;\n }\n console.error(error);\n showSnackbar(error.message);\n }, [error?.message]);\n\n const onClick = useCallback(() => {\n showForceUnlockConfirmation(async () => {\n const result = await unlockEntryForce({\n id: props.id,\n $lockingType: props.type\n });\n if (!result.error) {\n navigateTo();\n return;\n }\n setError(result.error);\n });\n }, [props.id, history, navigateTo]);\n\n const { hasFullAccess } = usePermission();\n if (!hasFullAccess) {\n return null;\n }\n\n return (\n <Wrapper>\n <Text>\n Because you have a full access to the system, you can force unlock the record.\n </Text>\n <br />\n <ButtonPrimary onClick={onClick}>Unlock and go back</ButtonPrimary>\n </Wrapper>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","Alert","Button","Text","useConfirmationDialog","useSnackbar","useContentEntriesList","useRecordLocking","usePermission","ErrorMessage","props","title","lockedBy","createElement","type","className","displayName","LockedRecordForceUnlock","unlockEntryForce","navigateTo","showConfirmation","showForceUnlockConfirmation","message","showSnackbar","error","setError","console","onClick","result","id","$lockingType","canForceUnlock","as","text"],"sources":["LockedRecordForceUnlock.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { Alert, Button, Text } from \"@webiny/admin-ui\";\nimport type { IRecordLockingError, IRecordLockingIdentity } from \"~/types.js\";\nimport { useConfirmationDialog, useSnackbar } from \"@webiny/app-admin\";\nimport { useContentEntriesList } from \"@webiny/app-headless-cms\";\nimport { useRecordLocking, usePermission } from \"~/hooks/index.js\";\n\nexport interface ILockedRecordForceUnlockProps {\n id: string;\n type: string;\n title: string;\n lockedBy?: IRecordLockingIdentity;\n}\n\nconst ErrorMessage = (props: ILockedRecordForceUnlockProps) => {\n const { title, lockedBy } = props;\n return (\n <div>\n <Alert type=\"warning\" title=\"Warning\" className={\"mb-md\"}>\n <strong>{lockedBy?.displayName || \"Unknown user\"}</strong> is currently editing this\n record.\n <br /> If you force unlock it, they could potentially lose their changes.\n </Alert>\n\n <Text>\n You are about to forcefully unlock the <strong>{title}</strong> entry. Are you sure\n you want to continue?\n </Text>\n </div>\n );\n};\n\nexport const LockedRecordForceUnlock = (props: ILockedRecordForceUnlockProps) => {\n const { unlockEntryForce } = useRecordLocking();\n\n const { navigateTo } = useContentEntriesList();\n const { showConfirmation: showForceUnlockConfirmation } = useConfirmationDialog({\n title: \"Force unlock the entry\",\n message: <ErrorMessage {...props} />\n });\n const { showSnackbar } = useSnackbar();\n\n const [error, setError] = useState<IRecordLockingError>();\n\n useEffect(() => {\n if (!error?.message) {\n return;\n }\n console.error(error);\n showSnackbar(error.message);\n }, [error?.message]);\n\n const onClick = useCallback(() => {\n showForceUnlockConfirmation(async () => {\n const result = await unlockEntryForce({\n id: props.id,\n $lockingType: props.type\n });\n if (!result.error) {\n navigateTo();\n return;\n }\n setError(result.error);\n });\n }, [props.id, navigateTo]);\n\n const { canForceUnlock } = usePermission();\n if (!canForceUnlock) {\n return null;\n }\n\n return (\n <div className=\"mt-md\">\n <Text as={\"div\"} className={\"mb-md\"}>\n Because you have a full access to the system, you can force unlock the record.\n </Text>\n <Button onClick={onClick} text={\"Unlock and go back\"} />\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC/D,SAASC,KAAK,EAAEC,MAAM,EAAEC,IAAI,QAAQ,kBAAkB;AAEtD,SAASC,qBAAqB,EAAEC,WAAW,QAAQ,mBAAmB;AACtE,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,gBAAgB,EAAEC,aAAa;AASxC,MAAMC,YAAY,GAAIC,KAAoC,IAAK;EAC3D,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGF,KAAK;EACjC,oBACIb,KAAA,CAAAgB,aAAA,2BACIhB,KAAA,CAAAgB,aAAA,CAACZ,KAAK;IAACa,IAAI,EAAC,SAAS;IAACH,KAAK,EAAC,SAAS;IAACI,SAAS,EAAE;EAAQ,gBACrDlB,KAAA,CAAAgB,aAAA,iBAASD,QAAQ,EAAEI,WAAW,IAAI,cAAuB,CAAC,sCAE1D,eAAAnB,KAAA,CAAAgB,aAAA,WAAK,CAAC,uEACH,CAAC,eAERhB,KAAA,CAAAgB,aAAA,CAACV,IAAI,QAAC,yCACqC,eAAAN,KAAA,CAAAgB,aAAA,iBAASF,KAAc,CAAC,8CAE7D,CACL,CAAC;AAEd,CAAC;AAED,OAAO,MAAMM,uBAAuB,GAAIP,KAAoC,IAAK;EAC7E,MAAM;IAAEQ;EAAiB,CAAC,GAAGX,gBAAgB,CAAC,CAAC;EAE/C,MAAM;IAAEY;EAAW,CAAC,GAAGb,qBAAqB,CAAC,CAAC;EAC9C,MAAM;IAAEc,gBAAgB,EAAEC;EAA4B,CAAC,GAAGjB,qBAAqB,CAAC;IAC5EO,KAAK,EAAE,wBAAwB;IAC/BW,OAAO,eAAEzB,KAAA,CAAAgB,aAAA,CAACJ,YAAY,EAAKC,KAAQ;EACvC,CAAC,CAAC;EACF,MAAM;IAAEa;EAAa,CAAC,GAAGlB,WAAW,CAAC,CAAC;EAEtC,MAAM,CAACmB,KAAK,EAAEC,QAAQ,CAAC,GAAGzB,QAAQ,CAAsB,CAAC;EAEzDD,SAAS,CAAC,MAAM;IACZ,IAAI,CAACyB,KAAK,EAAEF,OAAO,EAAE;MACjB;IACJ;IACAI,OAAO,CAACF,KAAK,CAACA,KAAK,CAAC;IACpBD,YAAY,CAACC,KAAK,CAACF,OAAO,CAAC;EAC/B,CAAC,EAAE,CAACE,KAAK,EAAEF,OAAO,CAAC,CAAC;EAEpB,MAAMK,OAAO,GAAG7B,WAAW,CAAC,MAAM;IAC9BuB,2BAA2B,CAAC,YAAY;MACpC,MAAMO,MAAM,GAAG,MAAMV,gBAAgB,CAAC;QAClCW,EAAE,EAAEnB,KAAK,CAACmB,EAAE;QACZC,YAAY,EAAEpB,KAAK,CAACI;MACxB,CAAC,CAAC;MACF,IAAI,CAACc,MAAM,CAACJ,KAAK,EAAE;QACfL,UAAU,CAAC,CAAC;QACZ;MACJ;MACAM,QAAQ,CAACG,MAAM,CAACJ,KAAK,CAAC;IAC1B,CAAC,CAAC;EACN,CAAC,EAAE,CAACd,KAAK,CAACmB,EAAE,EAAEV,UAAU,CAAC,CAAC;EAE1B,MAAM;IAAEY;EAAe,CAAC,GAAGvB,aAAa,CAAC,CAAC;EAC1C,IAAI,CAACuB,cAAc,EAAE;IACjB,OAAO,IAAI;EACf;EAEA,oBACIlC,KAAA,CAAAgB,aAAA;IAAKE,SAAS,EAAC;EAAO,gBAClBlB,KAAA,CAAAgB,aAAA,CAACV,IAAI;IAAC6B,EAAE,EAAE,KAAM;IAACjB,SAAS,EAAE;EAAQ,GAAC,gFAE/B,CAAC,eACPlB,KAAA,CAAAgB,aAAA,CAACX,MAAM;IAACyB,OAAO,EAAEA,OAAQ;IAACM,IAAI,EAAE;EAAqB,CAAE,CACtD,CAAC;AAEd,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- export * from "./LockedRecord";
1
+ export * from "./LockedRecord.js";
@@ -1,18 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _LockedRecord = require("./LockedRecord");
7
- Object.keys(_LockedRecord).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _LockedRecord[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function get() {
13
- return _LockedRecord[key];
14
- }
15
- });
16
- });
1
+ export * from "./LockedRecord.js";
17
2
 
18
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_LockedRecord","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./LockedRecord\";\n"],"mappings":";;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./LockedRecord.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IPossiblyRecordLockingRecord, IRecordLockingContext } from "../types";
2
+ import type { IPossiblyRecordLockingRecord, IRecordLockingContext } from "../types.js";
3
3
  export interface IRecordLockingProviderProps {
4
4
  children: React.ReactNode;
5
5
  }
@@ -1,103 +1,98 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.RecordLockingProvider = exports.RecordLockingContext = void 0;
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var _react = _interopRequireWildcard(require("react"));
12
- var _reactHooks = require("@apollo/react-hooks");
13
- var _RecordLocking = require("../domain/RecordLocking");
14
- var _appAdmin = require("@webiny/app-admin");
15
- var RecordLockingContext = exports.RecordLockingContext = /*#__PURE__*/_react.default.createContext({});
16
- var isSameArray = function isSameArray(existingRecords, newRecords) {
1
+ import React, { useCallback, useMemo, useState } from "react";
2
+ import { useApolloClient } from "@apollo/react-hooks";
3
+ import { createRecordLocking } from "../domain/RecordLocking.js";
4
+ import { useStateIfMounted } from "@webiny/app-admin";
5
+ export const RecordLockingContext = /*#__PURE__*/React.createContext({});
6
+ const isSameArray = (existingRecords, newRecords) => {
17
7
  if (existingRecords.length !== newRecords.length) {
18
8
  return false;
19
9
  }
20
- return existingRecords.every(function (record) {
21
- return newRecords.some(function (newRecord) {
22
- return newRecord.id === record.id && newRecord.savedOn === record.savedOn;
23
- });
10
+ return existingRecords.every((record, index) => {
11
+ const newRecord = newRecords[index];
12
+ if (!newRecord) {
13
+ return false;
14
+ }
15
+ return newRecord.id === record.id && newRecord.savedOn === record.savedOn;
24
16
  });
25
17
  };
26
- var RecordLockingProvider = exports.RecordLockingProvider = function RecordLockingProvider(props) {
27
- var client = (0, _reactHooks.useApolloClient)();
28
- var _useState = (0, _react.useState)(false),
29
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
30
- loading = _useState2[0],
31
- setLoading = _useState2[1];
32
- var recordLocking = (0, _react.useMemo)(function () {
33
- return (0, _RecordLocking.createRecordLocking)({
34
- client: client,
35
- setLoading: setLoading
18
+ const getData = records => {
19
+ return records.map(record => ({
20
+ id: record.id,
21
+ savedOn: record.savedOn
22
+ }));
23
+ };
24
+ export const RecordLockingProvider = props => {
25
+ const client = useApolloClient();
26
+ const [loading, setLoading] = useState(false);
27
+ const recordLocking = useMemo(() => {
28
+ return createRecordLocking({
29
+ client,
30
+ setLoading
36
31
  });
37
32
  }, []);
38
- var _useStateIfMounted = (0, _appAdmin.useStateIfMounted)(null),
39
- _useStateIfMounted2 = (0, _slicedToArray2.default)(_useStateIfMounted, 2),
40
- error = _useStateIfMounted2[0],
41
- setError = _useStateIfMounted2[1];
42
- var _useStateIfMounted3 = (0, _appAdmin.useStateIfMounted)([]),
43
- _useStateIfMounted4 = (0, _slicedToArray2.default)(_useStateIfMounted3, 2),
44
- records = _useStateIfMounted4[0],
45
- _setRecords = _useStateIfMounted4[1];
46
- var setRecordsIfNeeded = (0, _react.useCallback)(function (newRecords) {
47
- var sameArray = isSameArray(records, newRecords);
33
+ const [error, setError] = useStateIfMounted(null);
34
+ const [records, setRecords] = useStateIfMounted([]);
35
+ const setRecordsIfNeeded = useCallback(newRecords => {
36
+ const sameArray = isSameArray(getData(records), getData(newRecords));
48
37
  if (sameArray) {
49
38
  return;
50
39
  }
51
- _setRecords(newRecords);
40
+ setRecords(newRecords);
52
41
  }, [records]);
53
- var value = {
54
- updateEntryLock: async function updateEntryLock(params) {
55
- var result = await recordLocking.updateEntryLock(params);
42
+ const value = {
43
+ async updateEntryLock(params) {
44
+ const result = await recordLocking.updateEntryLock(params);
56
45
  if (result.error) {
57
46
  setError(result.error);
58
- return;
47
+ return result;
59
48
  }
60
- var target = result.data;
49
+ const target = result.data;
61
50
  if (!target?.id) {
62
- setError({
51
+ const error = {
63
52
  message: "No data returned from server.",
64
53
  code: "NO_DATA"
65
- });
66
- return;
54
+ };
55
+ setError(error);
56
+ return {
57
+ error,
58
+ data: null
59
+ };
67
60
  }
68
- _setRecords(function (prev) {
69
- return prev.map(function (item) {
61
+ setRecords(prev => {
62
+ return prev.map(item => {
70
63
  if (item.entryId === target.id) {
71
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
64
+ return {
65
+ ...item,
72
66
  $locked: result.data
73
- });
67
+ };
74
68
  }
75
69
  return item;
76
70
  });
77
71
  });
72
+ return result;
78
73
  },
79
- unlockEntry: async function unlockEntry(params) {
74
+ async unlockEntry(params) {
80
75
  return await recordLocking.unlockEntry(params);
81
76
  },
82
- unlockEntryForce: async function unlockEntryForce(params) {
77
+ async unlockEntryForce(params) {
83
78
  return await recordLocking.unlockEntry(params, true);
84
79
  },
85
- isLockExpired: function isLockExpired(input) {
80
+ isLockExpired(input) {
86
81
  return recordLocking.isLockExpired(input);
87
82
  },
88
- isRecordLocked: function isRecordLocked(record) {
83
+ isRecordLocked(record) {
89
84
  if (!record) {
90
85
  return false;
91
86
  }
92
87
  return recordLocking.isRecordLocked(record);
93
88
  },
94
- getLockRecordEntry: function getLockRecordEntry(id) {
89
+ getLockRecordEntry(id) {
95
90
  return recordLocking.getLockRecordEntry(id);
96
91
  },
97
- removeEntryLock: function removeEntryLock(params) {
92
+ removeEntryLock(params) {
98
93
  return recordLocking.removeEntryLock(params);
99
94
  },
100
- fetchLockRecord: async function fetchLockRecord(params) {
95
+ async fetchLockRecord(params) {
101
96
  try {
102
97
  return await recordLocking.fetchLockRecord(params);
103
98
  } catch (ex) {
@@ -107,22 +102,22 @@ var RecordLockingProvider = exports.RecordLockingProvider = function RecordLocki
107
102
  };
108
103
  }
109
104
  },
110
- fetchLockedEntryLockRecord: async function fetchLockedEntryLockRecord(params) {
105
+ async fetchLockedEntryLockRecord(params) {
111
106
  return recordLocking.fetchLockedEntryLockRecord(params);
112
107
  },
113
- setRecords: async function setRecords(folderId, type, newRecords) {
108
+ async setRecords(folderId, type, newRecords) {
114
109
  setRecordsIfNeeded(newRecords);
115
- var result = await recordLocking.setRecords(folderId, type, newRecords);
110
+ const result = await recordLocking.setRecords(folderId, type, newRecords);
116
111
  if (!result) {
117
112
  return;
118
113
  }
119
- _setRecords(result);
114
+ setRecords(result);
120
115
  },
121
- error: error,
122
- records: records,
123
- loading: loading
116
+ error,
117
+ records,
118
+ loading
124
119
  };
125
- return /*#__PURE__*/_react.default.createElement(RecordLockingContext.Provider, Object.assign({}, props, {
120
+ return /*#__PURE__*/React.createElement(RecordLockingContext.Provider, Object.assign({}, props, {
126
121
  value: value
127
122
  }));
128
123
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_RecordLocking","_appAdmin","RecordLockingContext","exports","React","createContext","isSameArray","existingRecords","newRecords","length","every","record","some","newRecord","id","savedOn","RecordLockingProvider","props","client","useApolloClient","_useState","useState","_useState2","_slicedToArray2","default","loading","setLoading","recordLocking","useMemo","createRecordLocking","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","error","setError","_useStateIfMounted3","_useStateIfMounted4","records","setRecords","setRecordsIfNeeded","useCallback","sameArray","value","updateEntryLock","params","result","target","data","message","code","prev","map","item","entryId","_objectSpread2","$locked","unlockEntry","unlockEntryForce","isLockExpired","input","isRecordLocked","getLockRecordEntry","removeEntryLock","fetchLockRecord","ex","fetchLockedEntryLockRecord","folderId","type","createElement","Provider","Object","assign"],"sources":["RecordLockingProvider.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createRecordLocking } from \"~/domain/RecordLocking\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingContext,\n IRecordLockingError,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\n\nexport interface IRecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nexport const RecordLockingContext = React.createContext({} as unknown as IRecordLockingContext);\n\nconst isSameArray = (\n existingRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[],\n newRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[]\n): boolean => {\n if (existingRecords.length !== newRecords.length) {\n return false;\n }\n return existingRecords.every(record => {\n return newRecords.some(\n newRecord => newRecord.id === record.id && newRecord.savedOn === record.savedOn\n );\n });\n};\n\nexport const RecordLockingProvider = (props: IRecordLockingProviderProps) => {\n const client = useApolloClient();\n\n const [loading, setLoading] = useState(false);\n\n const recordLocking = useMemo(() => {\n return createRecordLocking({\n client,\n setLoading\n });\n }, []);\n\n const [error, setError] = useStateIfMounted<IRecordLockingError | null>(null);\n\n const [records, setRecords] = useStateIfMounted<IPossiblyRecordLockingRecord[]>([]);\n\n const setRecordsIfNeeded = useCallback(\n (newRecords: IPossiblyRecordLockingRecord[]) => {\n const sameArray = isSameArray(records, newRecords);\n if (sameArray) {\n return;\n }\n setRecords(newRecords);\n },\n [records]\n );\n\n const value: IRecordLockingContext = {\n async updateEntryLock(params: IUpdateEntryLockParams) {\n const result = await recordLocking.updateEntryLock(params);\n if (result.error) {\n setError(result.error);\n return;\n }\n const target = result.data;\n if (!target?.id) {\n setError({\n message: \"No data returned from server.\",\n code: \"NO_DATA\"\n });\n return;\n }\n\n setRecords(prev => {\n return prev.map(item => {\n if (item.entryId === target.id) {\n return {\n ...item,\n $locked: result.data\n };\n }\n return item;\n });\n });\n },\n async unlockEntry(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params);\n },\n async unlockEntryForce(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params, true);\n },\n isLockExpired(input: Date | string): boolean {\n return recordLocking.isLockExpired(input);\n },\n isRecordLocked(record) {\n if (!record) {\n return false;\n }\n return recordLocking.isRecordLocked(record);\n },\n getLockRecordEntry(id: string) {\n return recordLocking.getLockRecordEntry(id);\n },\n removeEntryLock(params: IUnlockEntryParams) {\n return recordLocking.removeEntryLock(params);\n },\n async fetchLockRecord(params: IFetchLockRecordParams) {\n try {\n return await recordLocking.fetchLockRecord(params);\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n },\n async fetchLockedEntryLockRecord(params: IFetchLockedEntryLockRecordParams) {\n return recordLocking.fetchLockedEntryLockRecord(params);\n },\n async setRecords(folderId, type, newRecords) {\n setRecordsIfNeeded(newRecords);\n\n const result = await recordLocking.setRecords(folderId, type, newRecords);\n if (!result) {\n return;\n }\n setRecords(result);\n },\n error,\n records,\n loading\n };\n\n return <RecordLockingContext.Provider {...props} value={value} />;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","useState","useApolloClient","createRecordLocking","useStateIfMounted","RecordLockingContext","createContext","isSameArray","existingRecords","newRecords","length","every","record","index","newRecord","id","savedOn","getData","records","map","RecordLockingProvider","props","client","loading","setLoading","recordLocking","error","setError","setRecords","setRecordsIfNeeded","sameArray","value","updateEntryLock","params","result","target","data","message","code","prev","item","entryId","$locked","unlockEntry","unlockEntryForce","isLockExpired","input","isRecordLocked","getLockRecordEntry","removeEntryLock","fetchLockRecord","ex","fetchLockedEntryLockRecord","folderId","type","createElement","Provider","Object","assign"],"sources":["RecordLockingProvider.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createRecordLocking } from \"~/domain/RecordLocking.js\";\nimport type {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingContext,\n IRecordLockingError,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types.js\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\n\nexport interface IRecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nexport const RecordLockingContext = React.createContext({} as unknown as IRecordLockingContext);\n\nconst isSameArray = (\n existingRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[],\n newRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[]\n): boolean => {\n if (existingRecords.length !== newRecords.length) {\n return false;\n }\n return existingRecords.every((record, index) => {\n const newRecord = newRecords[index];\n if (!newRecord) {\n return false;\n }\n\n return newRecord.id === record.id && newRecord.savedOn === record.savedOn;\n });\n};\n\nconst getData = (records: IPossiblyRecordLockingRecord[]) => {\n return records.map(record => ({\n id: record.id,\n savedOn: record.savedOn\n }));\n};\n\nexport const RecordLockingProvider = (props: IRecordLockingProviderProps) => {\n const client = useApolloClient();\n\n const [loading, setLoading] = useState(false);\n\n const recordLocking = useMemo(() => {\n return createRecordLocking({\n client,\n setLoading\n });\n }, []);\n\n const [error, setError] = useStateIfMounted<IRecordLockingError | null>(null);\n\n const [records, setRecords] = useStateIfMounted<IPossiblyRecordLockingRecord[]>([]);\n\n const setRecordsIfNeeded = useCallback(\n (newRecords: IPossiblyRecordLockingRecord[]) => {\n const sameArray = isSameArray(getData(records), getData(newRecords));\n if (sameArray) {\n return;\n }\n setRecords(newRecords);\n },\n [records]\n );\n\n const value: IRecordLockingContext = {\n async updateEntryLock(params: IUpdateEntryLockParams) {\n const result = await recordLocking.updateEntryLock(params);\n if (result.error) {\n setError(result.error);\n return result;\n }\n const target = result.data;\n if (!target?.id) {\n const error = {\n message: \"No data returned from server.\",\n code: \"NO_DATA\"\n };\n setError(error);\n return {\n error,\n data: null\n };\n }\n\n setRecords(prev => {\n return prev.map(item => {\n if (item.entryId === target.id) {\n return {\n ...item,\n $locked: result.data\n };\n }\n return item;\n });\n });\n return result;\n },\n async unlockEntry(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params);\n },\n async unlockEntryForce(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params, true);\n },\n isLockExpired(input: Date | string): boolean {\n return recordLocking.isLockExpired(input);\n },\n isRecordLocked(record) {\n if (!record) {\n return false;\n }\n return recordLocking.isRecordLocked(record);\n },\n getLockRecordEntry(id: string) {\n return recordLocking.getLockRecordEntry(id);\n },\n removeEntryLock(params: IUnlockEntryParams) {\n return recordLocking.removeEntryLock(params);\n },\n async fetchLockRecord(params: IFetchLockRecordParams) {\n try {\n return await recordLocking.fetchLockRecord(params);\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n },\n async fetchLockedEntryLockRecord(params: IFetchLockedEntryLockRecordParams) {\n return recordLocking.fetchLockedEntryLockRecord(params);\n },\n async setRecords(folderId, type, newRecords) {\n setRecordsIfNeeded(newRecords);\n\n const result = await recordLocking.setRecords(folderId, type, newRecords);\n if (!result) {\n return;\n }\n setRecords(result);\n },\n error,\n records,\n loading\n };\n\n return <RecordLockingContext.Provider {...props} value={value} />;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const SecurityPermissions: () => React.JSX.Element;