@webiny/app-aco 5.41.4-beta.6 → 5.42.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.
Files changed (57) hide show
  1. package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
  2. package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
  3. package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
  4. package/components/AdvancedSearch/QueryBuilderDrawer/Footer.js.map +1 -1
  5. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
  6. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
  7. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js.map +1 -1
  8. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
  9. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
  10. package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
  11. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
  12. package/components/AdvancedSearch/domain/Field.js.map +1 -1
  13. package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
  14. package/components/AdvancedSearch/domain/Filter.js.map +1 -1
  15. package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
  16. package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
  17. package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
  18. package/components/AdvancedSearch/domain/Loading.js.map +1 -1
  19. package/components/AdvancedSearch/domain/Sorter.js.map +1 -1
  20. package/components/AdvancedSearch/fields/Boolean.js.map +1 -1
  21. package/components/AdvancedSearch/fields/PredefinedValues.js.map +1 -1
  22. package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
  23. package/components/FolderGrid/Folder.js.map +1 -1
  24. package/components/FolderTree/ButtonCreate/index.js.map +1 -1
  25. package/components/FolderTree/List/index.js +5 -1
  26. package/components/FolderTree/List/index.js.map +1 -1
  27. package/components/FolderTree/List/utils.js +3 -3
  28. package/components/FolderTree/List/utils.js.map +1 -1
  29. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
  30. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
  31. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
  32. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
  33. package/components/Table/components/Table/Columns/Column.js.map +1 -1
  34. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
  35. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
  36. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
  37. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
  38. package/components/Table/components/Table/TableInner.js.map +1 -1
  39. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
  40. package/components/Table/components/Table/gateways/LocalStorage.js.map +1 -1
  41. package/contexts/FoldersApi/FoldersApiProvider.js +3 -3
  42. package/contexts/FoldersApi/FoldersApiProvider.js.map +1 -1
  43. package/contexts/acoList.js.map +1 -1
  44. package/contexts/app.js.map +1 -1
  45. package/contexts/folders.js.map +1 -1
  46. package/contexts/records.js +20 -0
  47. package/contexts/records.js.map +1 -1
  48. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
  49. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +5 -2
  50. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
  51. package/dialogs/useCreateDialog.js.map +1 -1
  52. package/dialogs/useDeleteDialog.js.map +1 -1
  53. package/dialogs/useEditDialog.js.map +1 -1
  54. package/dialogs/useMoveToFolderDialog.js.map +1 -1
  55. package/dialogs/useSetPermissionsDialog.js.map +1 -1
  56. package/hooks/useRecords.js.map +1 -1
  57. package/package.json +19 -25
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_mobxReactLite","_DataTable","_Columns","_","TableInner","exports","observer","props","cellRenderer","useCallback","row","cell","default","createElement","TableRowProvider","columns","useMemo","columnsPresenter","vm","reduce","result","column","_props$nameColumnId","nameColumnId","defaultName","name","ColumnMapper","toDataTable","DataTable","columnVisibility","columnsVisibilityPresenter","columnsVisibility","onColumnVisibilityChange","columnsVisibilityUpdater","update","data","initialSorting","tablePresenter","isRowSelectable","original","$selectable","loadingInitial","loading","onSelectRow","onSortingChange","onToggleRow","selectedRows","filter","selected","find","item","id","sorting","stickyRows"],"sources":["TableInner.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Columns, DataTable, DefaultData, OnSortingChange, Sorting } from \"@webiny/ui/DataTable\";\nimport { ColumnMapper, ColumnsPresenter } from \"./Columns\";\nimport { ColumnsVisibilityPresenter, ColumnsVisibilityUpdater } from \"./ColumnVisibility\";\nimport { TablePresenter } from \"./TablePresenter\";\nimport { TableRowProvider } from \"~/components\";\n\nexport interface TableInnerProps<T> {\n columnsPresenter: ColumnsPresenter;\n columnsVisibilityPresenter: ColumnsVisibilityPresenter;\n columnsVisibilityUpdater: ColumnsVisibilityUpdater;\n data: T[];\n loading?: boolean;\n nameColumnId?: string;\n onSelectRow?: (rows: T[] | []) => void;\n onSortingChange: OnSortingChange;\n onToggleRow?: (row: T) => void;\n selected: DefaultData[];\n sorting: Sorting;\n tablePresenter: TablePresenter;\n}\n\nexport const TableInner = observer(\n <T extends Record<string, any> & DefaultData>(props: TableInnerProps<T>) => {\n const cellRenderer = useCallback(\n (row: T, cell: string | React.ReactElement): string | number | JSX.Element | null => {\n if (typeof cell === \"string\") {\n return cell;\n }\n\n return <TableRowProvider row={row}>{cell}</TableRowProvider>;\n },\n []\n );\n\n const columns = useMemo(() => {\n return props.columnsPresenter.vm.columns.reduce((result, column) => {\n const { nameColumnId = \"name\" } = props;\n const { name: defaultName } = column;\n\n // Determine the column name, using the provided `nameColumnId` if the default is 'name'\n const name = defaultName === \"name\" ? nameColumnId : defaultName;\n\n result[name as keyof Columns<T>] = ColumnMapper.toDataTable(column, cellRenderer);\n\n return result;\n }, {} as Columns<T>);\n }, [props.columnsPresenter.vm.columns]);\n\n return (\n <DataTable\n columns={columns}\n columnVisibility={props.columnsVisibilityPresenter.vm.columnsVisibility}\n onColumnVisibilityChange={props.columnsVisibilityUpdater.update}\n data={props.data}\n initialSorting={props.tablePresenter.vm.initialSorting}\n isRowSelectable={row => row.original.$selectable ?? false}\n loadingInitial={props.loading}\n onSelectRow={props.onSelectRow}\n onSortingChange={props.onSortingChange}\n onToggleRow={props.onToggleRow}\n selectedRows={props.data.filter(row =>\n props.selected.find(item => row.id === item.id)\n )}\n sorting={props.sorting}\n stickyRows={1}\n />\n );\n }\n);\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAGA,IAAAI,CAAA,GAAAJ,OAAA;AAiBO,IAAMK,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,IAAAE,uBAAQ,EAC9B,UAA8CC,KAAyB,EAAK;EACxE,IAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC5B,UAACC,GAAM,EAAEC,IAAiC,EAA2C;IACjF,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MAC1B,OAAOA,IAAI;IACf;IAEA,oBAAOd,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACV,CAAA,CAAAW,gBAAgB;MAACJ,GAAG,EAAEA;IAAI,GAAEC,IAAuB,CAAC;EAChE,CAAC,EACD,EACJ,CAAC;EAED,IAAMI,OAAO,GAAG,IAAAC,cAAO,EAAC,YAAM;IAC1B,OAAOT,KAAK,CAACU,gBAAgB,CAACC,EAAE,CAACH,OAAO,CAACI,MAAM,CAAC,UAACC,MAAM,EAAEC,MAAM,EAAK;MAChE,IAAAC,mBAAA,GAAkCf,KAAK,CAA/BgB,YAAY;QAAZA,YAAY,GAAAD,mBAAA,cAAG,MAAM,GAAAA,mBAAA;MAC7B,IAAcE,WAAW,GAAKH,MAAM,CAA5BI,IAAI;;MAEZ;MACA,IAAMA,IAAI,GAAGD,WAAW,KAAK,MAAM,GAAGD,YAAY,GAAGC,WAAW;MAEhEJ,MAAM,CAACK,IAAI,CAAqB,GAAGC,qBAAY,CAACC,WAAW,CAACN,MAAM,EAAEb,YAAY,CAAC;MAEjF,OAAOY,MAAM;IACjB,CAAC,EAAE,CAAC,CAAe,CAAC;EACxB,CAAC,EAAE,CAACb,KAAK,CAACU,gBAAgB,CAACC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEvC,oBACIlB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACZ,UAAA,CAAA2B,SAAS;IACNb,OAAO,EAAEA,OAAQ;IACjBc,gBAAgB,EAAEtB,KAAK,CAACuB,0BAA0B,CAACZ,EAAE,CAACa,iBAAkB;IACxEC,wBAAwB,EAAEzB,KAAK,CAAC0B,wBAAwB,CAACC,MAAO;IAChEC,IAAI,EAAE5B,KAAK,CAAC4B,IAAK;IACjBC,cAAc,EAAE7B,KAAK,CAAC8B,cAAc,CAACnB,EAAE,CAACkB,cAAe;IACvDE,eAAe,EAAE,SAAAA,gBAAA5B,GAAG;MAAA,OAAIA,GAAG,CAAC6B,QAAQ,CAACC,WAAW,IAAI,KAAK;IAAA,CAAC;IAC1DC,cAAc,EAAElC,KAAK,CAACmC,OAAQ;IAC9BC,WAAW,EAAEpC,KAAK,CAACoC,WAAY;IAC/BC,eAAe,EAAErC,KAAK,CAACqC,eAAgB;IACvCC,WAAW,EAAEtC,KAAK,CAACsC,WAAY;IAC/BC,YAAY,EAAEvC,KAAK,CAAC4B,IAAI,CAACY,MAAM,CAAC,UAAArC,GAAG;MAAA,OAC/BH,KAAK,CAACyC,QAAQ,CAACC,IAAI,CAAC,UAAAC,IAAI;QAAA,OAAIxC,GAAG,CAACyC,EAAE,KAAKD,IAAI,CAACC,EAAE;MAAA,EAAC;IAAA,CACnD,CAAE;IACFC,OAAO,EAAE7C,KAAK,CAAC6C,OAAQ;IACvBC,UAAU,EAAE;EAAE,CACjB,CAAC;AAEV,CACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_mobxReactLite","_DataTable","_Columns","_","TableInner","exports","observer","props","cellRenderer","useCallback","row","cell","default","createElement","TableRowProvider","columns","useMemo","columnsPresenter","vm","reduce","result","column","_props$nameColumnId","nameColumnId","defaultName","name","ColumnMapper","toDataTable","DataTable","columnVisibility","columnsVisibilityPresenter","columnsVisibility","onColumnVisibilityChange","columnsVisibilityUpdater","update","data","initialSorting","tablePresenter","isRowSelectable","original","$selectable","loadingInitial","loading","onSelectRow","onSortingChange","onToggleRow","selectedRows","filter","selected","find","item","id","sorting","stickyRows"],"sources":["TableInner.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Columns, DataTable, DefaultData, OnSortingChange, Sorting } from \"@webiny/ui/DataTable\";\nimport { ColumnMapper, ColumnsPresenter } from \"./Columns\";\nimport { ColumnsVisibilityPresenter, ColumnsVisibilityUpdater } from \"./ColumnVisibility\";\nimport { TablePresenter } from \"./TablePresenter\";\nimport { TableRowProvider } from \"~/components\";\n\nexport interface TableInnerProps<T> {\n columnsPresenter: ColumnsPresenter;\n columnsVisibilityPresenter: ColumnsVisibilityPresenter;\n columnsVisibilityUpdater: ColumnsVisibilityUpdater;\n data: T[];\n loading?: boolean;\n nameColumnId?: string;\n onSelectRow?: (rows: T[] | []) => void;\n onSortingChange: OnSortingChange;\n onToggleRow?: (row: T) => void;\n selected: DefaultData[];\n sorting: Sorting;\n tablePresenter: TablePresenter;\n}\n\nexport const TableInner = observer(\n <T extends Record<string, any> & DefaultData>(props: TableInnerProps<T>) => {\n const cellRenderer = useCallback(\n (row: T, cell: string | React.ReactElement): string | number | JSX.Element | null => {\n if (typeof cell === \"string\") {\n return cell;\n }\n\n return <TableRowProvider row={row}>{cell}</TableRowProvider>;\n },\n []\n );\n\n const columns = useMemo(() => {\n return props.columnsPresenter.vm.columns.reduce((result, column) => {\n const { nameColumnId = \"name\" } = props;\n const { name: defaultName } = column;\n\n // Determine the column name, using the provided `nameColumnId` if the default is 'name'\n const name = defaultName === \"name\" ? nameColumnId : defaultName;\n\n result[name as keyof Columns<T>] = ColumnMapper.toDataTable(column, cellRenderer);\n\n return result;\n }, {} as Columns<T>);\n }, [props.columnsPresenter.vm.columns]);\n\n return (\n <DataTable\n columns={columns}\n columnVisibility={props.columnsVisibilityPresenter.vm.columnsVisibility}\n onColumnVisibilityChange={props.columnsVisibilityUpdater.update}\n data={props.data}\n initialSorting={props.tablePresenter.vm.initialSorting}\n isRowSelectable={row => row.original.$selectable ?? false}\n loadingInitial={props.loading}\n onSelectRow={props.onSelectRow}\n onSortingChange={props.onSortingChange}\n onToggleRow={props.onToggleRow}\n selectedRows={props.data.filter(row =>\n props.selected.find(item => row.id === item.id)\n )}\n sorting={props.sorting}\n stickyRows={1}\n />\n );\n }\n);\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAGA,IAAAI,CAAA,GAAAJ,OAAA;AAiBO,IAAMK,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,IAAAE,uBAAQ,EAC9B,UAA8CC,KAAyB,EAAK;EACxE,IAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC5B,UAACC,GAAM,EAAEC,IAAiC,EAA2C;IACjF,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MAC1B,OAAOA,IAAI;IACf;IAEA,oBAAOd,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACV,CAAA,CAAAW,gBAAgB;MAACJ,GAAG,EAAEA;IAAI,GAAEC,IAAuB,CAAC;EAChE,CAAC,EACD,EACJ,CAAC;EAED,IAAMI,OAAO,GAAG,IAAAC,cAAO,EAAC,YAAM;IAC1B,OAAOT,KAAK,CAACU,gBAAgB,CAACC,EAAE,CAACH,OAAO,CAACI,MAAM,CAAC,UAACC,MAAM,EAAEC,MAAM,EAAK;MAChE,IAAAC,mBAAA,GAAkCf,KAAK,CAA/BgB,YAAY;QAAZA,YAAY,GAAAD,mBAAA,cAAG,MAAM,GAAAA,mBAAA;MAC7B,IAAcE,WAAW,GAAKH,MAAM,CAA5BI,IAAI;;MAEZ;MACA,IAAMA,IAAI,GAAGD,WAAW,KAAK,MAAM,GAAGD,YAAY,GAAGC,WAAW;MAEhEJ,MAAM,CAACK,IAAI,CAAqB,GAAGC,qBAAY,CAACC,WAAW,CAACN,MAAM,EAAEb,YAAY,CAAC;MAEjF,OAAOY,MAAM;IACjB,CAAC,EAAE,CAAC,CAAe,CAAC;EACxB,CAAC,EAAE,CAACb,KAAK,CAACU,gBAAgB,CAACC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEvC,oBACIlB,MAAA,CAAAe,OAAA,CAAAC,aAAA,CAACZ,UAAA,CAAA2B,SAAS;IACNb,OAAO,EAAEA,OAAQ;IACjBc,gBAAgB,EAAEtB,KAAK,CAACuB,0BAA0B,CAACZ,EAAE,CAACa,iBAAkB;IACxEC,wBAAwB,EAAEzB,KAAK,CAAC0B,wBAAwB,CAACC,MAAO;IAChEC,IAAI,EAAE5B,KAAK,CAAC4B,IAAK;IACjBC,cAAc,EAAE7B,KAAK,CAAC8B,cAAc,CAACnB,EAAE,CAACkB,cAAe;IACvDE,eAAe,EAAE,SAAjBA,eAAeA,CAAE5B,GAAG;MAAA,OAAIA,GAAG,CAAC6B,QAAQ,CAACC,WAAW,IAAI,KAAK;IAAA,CAAC;IAC1DC,cAAc,EAAElC,KAAK,CAACmC,OAAQ;IAC9BC,WAAW,EAAEpC,KAAK,CAACoC,WAAY;IAC/BC,eAAe,EAAErC,KAAK,CAACqC,eAAgB;IACvCC,WAAW,EAAEtC,KAAK,CAACsC,WAAY;IAC/BC,YAAY,EAAEvC,KAAK,CAAC4B,IAAI,CAACY,MAAM,CAAC,UAAArC,GAAG;MAAA,OAC/BH,KAAK,CAACyC,QAAQ,CAACC,IAAI,CAAC,UAAAC,IAAI;QAAA,OAAIxC,GAAG,CAACyC,EAAE,KAAKD,IAAI,CAACC,EAAE;MAAA,EAAC;IAAA,CACnD,CAAE;IACFC,OAAO,EAAE7C,KAAK,CAAC6C,OAAQ;IACvBC,UAAU,EAAE;EAAE,CACjB,CAAC;AAEV,CACJ,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_LocalStorage","require","ColumnsVisibilityLocalStorageGateway","exports","namespace","_classCallCheck2","default","localStorage","LocalStorage","concat","_createClass2","key","value","get","Promise","resolve","getFromStorage","set","setToStorage"],"sources":["ColumnsVisibilityLocalStorageGateway.ts"],"sourcesContent":["import { LocalStorage } from \"./LocalStorage\";\nimport { IColumnsVisibilityGateway } from \"./IColumnsVisibilityGateway\";\n\nexport class ColumnsVisibilityLocalStorageGateway implements IColumnsVisibilityGateway {\n private localStorage: LocalStorage<Record<string, boolean>>;\n\n constructor(namespace: string) {\n this.localStorage = new LocalStorage<Record<string, boolean>>(\n `webiny_column_visibility_${namespace}`\n );\n }\n\n get() {\n return Promise.resolve(this.localStorage.getFromStorage());\n }\n\n async set(value: Record<string, boolean>) {\n return this.localStorage.setToStorage(value);\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAA8C,IAGjCC,oCAAoC,GAAAC,OAAA,CAAAD,oCAAA;EAG7C,SAAAA,qCAAYE,SAAiB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,oCAAA;IAC3B,IAAI,CAACK,YAAY,GAAG,IAAIC,0BAAY,6BAAAC,MAAA,CACJL,SAAS,CACzC,CAAC;EACL;EAAC,WAAAM,aAAA,CAAAJ,OAAA,EAAAJ,oCAAA;IAAAS,GAAA;IAAAC,KAAA,EAED,SAAAC,IAAA,EAAM;MACF,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACR,YAAY,CAACS,cAAc,CAAC,CAAC,CAAC;IAC9D;EAAC;IAAAL,GAAA;IAAAC,KAAA,EAED,eAAAK,IAAUL,KAA8B,EAAE;MACtC,OAAO,IAAI,CAACL,YAAY,CAACW,YAAY,CAACN,KAAK,CAAC;IAChD;EAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_LocalStorage","require","ColumnsVisibilityLocalStorageGateway","exports","namespace","_classCallCheck2","default","localStorage","LocalStorage","concat","_createClass2","key","value","get","Promise","resolve","getFromStorage","set","setToStorage"],"sources":["ColumnsVisibilityLocalStorageGateway.ts"],"sourcesContent":["import { LocalStorage } from \"./LocalStorage\";\nimport { IColumnsVisibilityGateway } from \"./IColumnsVisibilityGateway\";\n\nexport class ColumnsVisibilityLocalStorageGateway implements IColumnsVisibilityGateway {\n private localStorage: LocalStorage<Record<string, boolean>>;\n\n constructor(namespace: string) {\n this.localStorage = new LocalStorage<Record<string, boolean>>(\n `webiny_column_visibility_${namespace}`\n );\n }\n\n get() {\n return Promise.resolve(this.localStorage.getFromStorage());\n }\n\n async set(value: Record<string, boolean>) {\n return this.localStorage.setToStorage(value);\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAA8C,IAGjCC,oCAAoC,GAAAC,OAAA,CAAAD,oCAAA;EAG7C,SAAAA,qCAAYE,SAAiB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,oCAAA;IAC3B,IAAI,CAACK,YAAY,GAAG,IAAIC,0BAAY,6BAAAC,MAAA,CACJL,SAAS,CACzC,CAAC;EACL;EAAC,WAAAM,aAAA,CAAAJ,OAAA,EAAAJ,oCAAA;IAAAS,GAAA;IAAAC,KAAA,EAED,SAAAC,GAAGA,CAAA,EAAG;MACF,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAI,CAACR,YAAY,CAACS,cAAc,CAAC,CAAC,CAAC;IAC9D;EAAC;IAAAL,GAAA;IAAAC,KAAA,EAED,eAAMK,GAAGA,CAACL,KAA8B,EAAE;MACtC,OAAO,IAAI,CAACL,YAAY,CAACW,YAAY,CAACN,KAAK,CAAC;IAChD;EAAC;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_store","_interopRequireDefault","require","LocalStorage","exports","key","_classCallCheck2","default","_createClass2","value","getFromStorage","store","get","setToStorage","set"],"sources":["LocalStorage.ts"],"sourcesContent":["import store from \"store\";\n\nexport class LocalStorage<TValue> {\n private key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n\n public getFromStorage(): TValue {\n return store.get(this.key);\n }\n\n public setToStorage(value: TValue): void {\n store.set(this.key, value);\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,IAEbC,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAGrB,SAAAA,aAAYE,GAAW,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,YAAA;IACrB,IAAI,CAACE,GAAG,GAAGA,GAAG;EAClB;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAJ,YAAA;IAAAE,GAAA;IAAAI,KAAA,EAED,SAAAC,eAAA,EAAgC;MAC5B,OAAOC,cAAK,CAACC,GAAG,CAAC,IAAI,CAACP,GAAG,CAAC;IAC9B;EAAC;IAAAA,GAAA;IAAAI,KAAA,EAED,SAAAI,aAAoBJ,KAAa,EAAQ;MACrCE,cAAK,CAACG,GAAG,CAAC,IAAI,CAACT,GAAG,EAAEI,KAAK,CAAC;IAC9B;EAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_store","_interopRequireDefault","require","LocalStorage","exports","key","_classCallCheck2","default","_createClass2","value","getFromStorage","store","get","setToStorage","set"],"sources":["LocalStorage.ts"],"sourcesContent":["import store from \"store\";\n\nexport class LocalStorage<TValue> {\n private key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n\n public getFromStorage(): TValue {\n return store.get(this.key);\n }\n\n public setToStorage(value: TValue): void {\n store.set(this.key, value);\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,IAEbC,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAGrB,SAAAA,aAAYE,GAAW,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,YAAA;IACrB,IAAI,CAACE,GAAG,GAAGA,GAAG;EAClB;EAAC,WAAAG,aAAA,CAAAD,OAAA,EAAAJ,YAAA;IAAAE,GAAA;IAAAI,KAAA,EAED,SAAOC,cAAcA,CAAA,EAAW;MAC5B,OAAOC,cAAK,CAACC,GAAG,CAAC,IAAI,CAACP,GAAG,CAAC;IAC9B;EAAC;IAAAA,GAAA;IAAAI,KAAA,EAED,SAAOI,YAAYA,CAACJ,KAAa,EAAQ;MACrCE,cAAK,CAACG,GAAG,CAAC,IAAI,CAACT,GAAG,EAAEI,KAAK,CAAC;IAC9B;EAAC;AAAA","ignoreList":[]}
@@ -231,7 +231,7 @@ var FoldersApiProvider = exports.FoldersApiProvider = function FoldersApiProvide
231
231
  return [folder.id, folder];
232
232
  }));
233
233
  var result = [];
234
- var findChildren = function findChildren(folderId) {
234
+ var _findChildren = function findChildren(folderId) {
235
235
  var folder = folderMap.get(folderId);
236
236
  if (!folder) {
237
237
  return;
@@ -239,11 +239,11 @@ var FoldersApiProvider = exports.FoldersApiProvider = function FoldersApiProvide
239
239
  result.push(folder);
240
240
  currentFolders.forEach(function (child) {
241
241
  if (child.parentId === folder.id) {
242
- findChildren(child.id);
242
+ _findChildren(child.id);
243
243
  }
244
244
  });
245
245
  };
246
- findChildren(id);
246
+ _findChildren(id);
247
247
  return result;
248
248
  }
249
249
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_folders","_constants","FoldersApiContext","exports","React","createContext","undefined","rootFolder","id","ROOT_FOLDER","title","permissions","parentId","slug","createdOn","createdBy","displayName","type","hasNonInheritedPermissions","canManagePermissions","canManageStructure","canManageContent","savedOn","savedBy","modifiedOn","modifiedBy","FoldersApiProvider","_ref","children","client","useApolloClient","folderObservers","useRef","Map","_useState","useState","_useState2","_slicedToArray2","default","cache","setCache","useEffect","current","forEach","observers","observer","clear","context","onFoldersChanged","cb","has","set","Set","get","add","delete","invalidateCache","folderType","cacheClone","structuredClone","listFolders","options","_await$client$query","query","LIST_FOLDERS","variables","limit","fetchPolicy","response","data","Error","_response$aco$listFol","aco","error","message","foldersWithRoot","concat","_toConsumableArray2","_objectSpread6","_defineProperty2","getFolder","folder","find","_await$client$query2","GET_FOLDER","_response$aco$getFold","createFolder","_await$client$mutate","mutate","mutation","CREATE_FOLDER","_response$aco$createF","updateFolder","_await$client$mutate2","UPDATE_FOLDER","_response$aco$updateF","folderIndex","findIndex","f","slice","deleteFolder","_await$client$mutate3","DELETE_FOLDER","_response$aco$deleteF","filter","getDescendantFolders","currentFolders","length","folderMap","map","result","findChildren","folderId","push","child","createElement","Provider","value"],"sources":["FoldersApiProvider.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport {\n CREATE_FOLDER,\n DELETE_FOLDER,\n GET_FOLDER,\n LIST_FOLDERS,\n UPDATE_FOLDER\n} from \"~/graphql/folders.gql\";\n\nimport {\n CreateFolderResponse,\n CreateFolderVariables,\n DeleteFolderResponse,\n DeleteFolderVariables,\n FolderItem,\n GetFolderQueryVariables,\n GetFolderResponse,\n ListFoldersQueryVariables,\n ListFoldersResponse,\n UpdateFolderResponse,\n UpdateFolderVariables\n} from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ninterface OffCacheUpdate {\n (): void;\n}\n\nexport interface OnCacheUpdate {\n (folders: FolderItem[]): void;\n}\n\nexport interface FoldersApiContext {\n listFolders: (\n type: string,\n options?: Partial<{ invalidateCache: boolean }>\n ) => Promise<FolderItem[]>;\n getFolder: (type: string, id: string) => Promise<FolderItem>;\n createFolder: (type: string, folder: Omit<FolderItem, \"id\" | \"type\">) => Promise<FolderItem>;\n updateFolder: (\n type: string,\n folder: Omit<\n FolderItem,\n | \"type\"\n | \"canManagePermissions\"\n | \"canManageStructure\"\n | \"canManageContent\"\n | \"hasNonInheritedPermissions\"\n | \"createdOn\"\n | \"createdBy\"\n | \"savedOn\"\n | \"savedBy\"\n | \"modifiedOn\"\n | \"modifiedBy\"\n >\n ) => Promise<FolderItem>;\n\n deleteFolder(type: string, id: string): Promise<true>;\n\n invalidateCache(folderType: string): FoldersApiContext;\n\n getDescendantFolders(type: string, id?: string): FolderItem[];\n\n onFoldersChanged(type: string, cb: OnCacheUpdate): OffCacheUpdate;\n}\n\nexport const FoldersApiContext = React.createContext<FoldersApiContext | undefined>(undefined);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst rootFolder: FolderItem = {\n id: ROOT_FOLDER,\n title: \"Home\",\n permissions: [],\n parentId: \"0\",\n slug: \"\",\n createdOn: \"\",\n createdBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n hasNonInheritedPermissions: false,\n canManagePermissions: true,\n canManageStructure: true,\n canManageContent: true,\n savedOn: \"\",\n savedBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n modifiedOn: null,\n modifiedBy: null,\n type: \"$ROOT\"\n};\n\ninterface FoldersByType {\n [type: string]: FolderItem[];\n}\n\nexport const FoldersApiProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const folderObservers = useRef(new Map<string, Set<OnCacheUpdate>>());\n const [cache, setCache] = useState<FoldersByType>({});\n\n useEffect(() => {\n folderObservers.current.forEach((observers, type) => {\n observers.forEach(observer => observer(cache[type]));\n });\n }, [cache]);\n\n useEffect(() => {\n return () => {\n folderObservers.current.clear();\n };\n }, []);\n\n const context: FoldersApiContext = {\n onFoldersChanged: (type, cb) => {\n if (!folderObservers.current.has(type)) {\n folderObservers.current.set(type, new Set());\n }\n\n folderObservers.current.get(type)!.add(cb);\n return () => {\n folderObservers.current.get(type)?.delete(cb);\n };\n },\n invalidateCache: folderType => {\n setCache(cache => {\n const cacheClone = structuredClone(cache);\n delete cacheClone[folderType];\n return cacheClone;\n });\n return context;\n },\n async listFolders(type, options) {\n const invalidateCache = options?.invalidateCache === true;\n if (cache[type] && !invalidateCache) {\n return cache[type];\n }\n\n const { data: response } = await client.query<\n ListFoldersResponse,\n ListFoldersQueryVariables\n >({\n query: LIST_FOLDERS,\n variables: {\n type,\n limit: 10000\n },\n fetchPolicy: \"network-only\"\n });\n\n if (!response) {\n throw new Error(\"Network error while listing folders.\");\n }\n\n const { data, error } = response.aco.listFolders;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch folders\");\n }\n\n const foldersWithRoot = [rootFolder, ...(data || [])];\n\n setCache(cache => ({\n ...cache,\n [type]: foldersWithRoot\n }));\n\n return foldersWithRoot;\n },\n\n async getFolder(type, id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n const folder = cache[type]?.find(folder => folder.id === id);\n if (folder) {\n return folder;\n }\n\n const { data: response } = await client.query<\n GetFolderResponse,\n GetFolderQueryVariables\n >({\n query: GET_FOLDER,\n variables: { id }\n });\n\n if (!response) {\n throw new Error(\"Network error while fetch folder.\");\n }\n\n const { data, error } = response.aco.getFolder;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch folder with id: ${id}`);\n }\n\n return data;\n },\n\n async createFolder(type, folder) {\n const { data: response } = await client.mutate<\n CreateFolderResponse,\n CreateFolderVariables\n >({\n mutation: CREATE_FOLDER,\n variables: {\n data: {\n ...folder,\n type\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while creating folder.\");\n }\n\n const { data, error } = response.aco.createFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create folder\");\n }\n\n setCache(cache => ({\n ...cache,\n [type]: [...cache[type], data]\n }));\n\n return data;\n },\n\n async updateFolder(type, folder) {\n const { id, title, slug, permissions, parentId } = folder;\n\n const { data: response } = await client.mutate<\n UpdateFolderResponse,\n UpdateFolderVariables\n >({\n mutation: UPDATE_FOLDER,\n variables: {\n id,\n data: {\n title,\n slug,\n permissions,\n parentId\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while updating folder.\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n const folderIndex = cache[type]?.findIndex(f => f.id === id);\n if (folderIndex > -1) {\n setCache(cache => ({\n ...cache,\n [type]: [\n ...cache[type].slice(0, folderIndex),\n {\n ...cache[type][folderIndex],\n ...data\n },\n ...cache[type].slice(folderIndex + 1)\n ]\n }));\n }\n\n return data;\n },\n\n async deleteFolder(type, id) {\n const { data: response } = await client.mutate<\n DeleteFolderResponse,\n DeleteFolderVariables\n >({\n mutation: DELETE_FOLDER,\n variables: {\n id\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while deleting folder\");\n }\n\n const { data, error } = response.aco.deleteFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete folder\");\n }\n\n setCache(cache => ({\n ...cache,\n [type]: cache[type].filter(f => f.id !== id)\n }));\n\n return true;\n },\n\n getDescendantFolders(type, id) {\n const currentFolders = cache[type];\n\n if (!id || id === ROOT_FOLDER || !currentFolders?.length) {\n return [];\n }\n\n const folderMap = new Map(currentFolders.map(folder => [folder.id, folder]));\n const result: FolderItem[] = [];\n\n const findChildren = (folderId: string) => {\n const folder = folderMap.get(folderId);\n if (!folder) {\n return;\n }\n\n result.push(folder);\n\n currentFolders.forEach(child => {\n if (child.parentId === folder.id) {\n findChildren(child.id);\n }\n });\n };\n\n findChildren(id);\n\n return result;\n }\n };\n\n return <FoldersApiContext.Provider value={context}>{children}</FoldersApiContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_folders","_constants","FoldersApiContext","exports","React","createContext","undefined","rootFolder","id","ROOT_FOLDER","title","permissions","parentId","slug","createdOn","createdBy","displayName","type","hasNonInheritedPermissions","canManagePermissions","canManageStructure","canManageContent","savedOn","savedBy","modifiedOn","modifiedBy","FoldersApiProvider","_ref","children","client","useApolloClient","folderObservers","useRef","Map","_useState","useState","_useState2","_slicedToArray2","default","cache","setCache","useEffect","current","forEach","observers","observer","clear","context","onFoldersChanged","cb","has","set","Set","get","add","delete","invalidateCache","folderType","cacheClone","structuredClone","listFolders","options","_await$client$query","query","LIST_FOLDERS","variables","limit","fetchPolicy","response","data","Error","_response$aco$listFol","aco","error","message","foldersWithRoot","concat","_toConsumableArray2","_objectSpread6","_defineProperty2","getFolder","folder","find","_await$client$query2","GET_FOLDER","_response$aco$getFold","createFolder","_await$client$mutate","mutate","mutation","CREATE_FOLDER","_response$aco$createF","updateFolder","_await$client$mutate2","UPDATE_FOLDER","_response$aco$updateF","folderIndex","findIndex","f","slice","deleteFolder","_await$client$mutate3","DELETE_FOLDER","_response$aco$deleteF","filter","getDescendantFolders","currentFolders","length","folderMap","map","result","findChildren","folderId","push","child","createElement","Provider","value"],"sources":["FoldersApiProvider.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport {\n CREATE_FOLDER,\n DELETE_FOLDER,\n GET_FOLDER,\n LIST_FOLDERS,\n UPDATE_FOLDER\n} from \"~/graphql/folders.gql\";\n\nimport {\n CreateFolderResponse,\n CreateFolderVariables,\n DeleteFolderResponse,\n DeleteFolderVariables,\n FolderItem,\n GetFolderQueryVariables,\n GetFolderResponse,\n ListFoldersQueryVariables,\n ListFoldersResponse,\n UpdateFolderResponse,\n UpdateFolderVariables\n} from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\ninterface OffCacheUpdate {\n (): void;\n}\n\nexport interface OnCacheUpdate {\n (folders: FolderItem[]): void;\n}\n\nexport interface FoldersApiContext {\n listFolders: (\n type: string,\n options?: Partial<{ invalidateCache: boolean }>\n ) => Promise<FolderItem[]>;\n getFolder: (type: string, id: string) => Promise<FolderItem>;\n createFolder: (type: string, folder: Omit<FolderItem, \"id\" | \"type\">) => Promise<FolderItem>;\n updateFolder: (\n type: string,\n folder: Omit<\n FolderItem,\n | \"type\"\n | \"canManagePermissions\"\n | \"canManageStructure\"\n | \"canManageContent\"\n | \"hasNonInheritedPermissions\"\n | \"createdOn\"\n | \"createdBy\"\n | \"savedOn\"\n | \"savedBy\"\n | \"modifiedOn\"\n | \"modifiedBy\"\n >\n ) => Promise<FolderItem>;\n\n deleteFolder(type: string, id: string): Promise<true>;\n\n invalidateCache(folderType: string): FoldersApiContext;\n\n getDescendantFolders(type: string, id?: string): FolderItem[];\n\n onFoldersChanged(type: string, cb: OnCacheUpdate): OffCacheUpdate;\n}\n\nexport const FoldersApiContext = React.createContext<FoldersApiContext | undefined>(undefined);\n\ninterface Props {\n children: ReactNode;\n}\n\nconst rootFolder: FolderItem = {\n id: ROOT_FOLDER,\n title: \"Home\",\n permissions: [],\n parentId: \"0\",\n slug: \"\",\n createdOn: \"\",\n createdBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n hasNonInheritedPermissions: false,\n canManagePermissions: true,\n canManageStructure: true,\n canManageContent: true,\n savedOn: \"\",\n savedBy: {\n id: \"\",\n displayName: \"\",\n type: \"\"\n },\n modifiedOn: null,\n modifiedBy: null,\n type: \"$ROOT\"\n};\n\ninterface FoldersByType {\n [type: string]: FolderItem[];\n}\n\nexport const FoldersApiProvider = ({ children }: Props) => {\n const client = useApolloClient();\n const folderObservers = useRef(new Map<string, Set<OnCacheUpdate>>());\n const [cache, setCache] = useState<FoldersByType>({});\n\n useEffect(() => {\n folderObservers.current.forEach((observers, type) => {\n observers.forEach(observer => observer(cache[type]));\n });\n }, [cache]);\n\n useEffect(() => {\n return () => {\n folderObservers.current.clear();\n };\n }, []);\n\n const context: FoldersApiContext = {\n onFoldersChanged: (type, cb) => {\n if (!folderObservers.current.has(type)) {\n folderObservers.current.set(type, new Set());\n }\n\n folderObservers.current.get(type)!.add(cb);\n return () => {\n folderObservers.current.get(type)?.delete(cb);\n };\n },\n invalidateCache: folderType => {\n setCache(cache => {\n const cacheClone = structuredClone(cache);\n delete cacheClone[folderType];\n return cacheClone;\n });\n return context;\n },\n async listFolders(type, options) {\n const invalidateCache = options?.invalidateCache === true;\n if (cache[type] && !invalidateCache) {\n return cache[type];\n }\n\n const { data: response } = await client.query<\n ListFoldersResponse,\n ListFoldersQueryVariables\n >({\n query: LIST_FOLDERS,\n variables: {\n type,\n limit: 10000\n },\n fetchPolicy: \"network-only\"\n });\n\n if (!response) {\n throw new Error(\"Network error while listing folders.\");\n }\n\n const { data, error } = response.aco.listFolders;\n\n if (!data) {\n throw new Error(error?.message || \"Could not fetch folders\");\n }\n\n const foldersWithRoot = [rootFolder, ...(data || [])];\n\n setCache(cache => ({\n ...cache,\n [type]: foldersWithRoot\n }));\n\n return foldersWithRoot;\n },\n\n async getFolder(type, id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n const folder = cache[type]?.find(folder => folder.id === id);\n if (folder) {\n return folder;\n }\n\n const { data: response } = await client.query<\n GetFolderResponse,\n GetFolderQueryVariables\n >({\n query: GET_FOLDER,\n variables: { id }\n });\n\n if (!response) {\n throw new Error(\"Network error while fetch folder.\");\n }\n\n const { data, error } = response.aco.getFolder;\n\n if (!data) {\n throw new Error(error?.message || `Could not fetch folder with id: ${id}`);\n }\n\n return data;\n },\n\n async createFolder(type, folder) {\n const { data: response } = await client.mutate<\n CreateFolderResponse,\n CreateFolderVariables\n >({\n mutation: CREATE_FOLDER,\n variables: {\n data: {\n ...folder,\n type\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while creating folder.\");\n }\n\n const { data, error } = response.aco.createFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not create folder\");\n }\n\n setCache(cache => ({\n ...cache,\n [type]: [...cache[type], data]\n }));\n\n return data;\n },\n\n async updateFolder(type, folder) {\n const { id, title, slug, permissions, parentId } = folder;\n\n const { data: response } = await client.mutate<\n UpdateFolderResponse,\n UpdateFolderVariables\n >({\n mutation: UPDATE_FOLDER,\n variables: {\n id,\n data: {\n title,\n slug,\n permissions,\n parentId\n }\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while updating folder.\");\n }\n\n const { data, error } = response.aco.updateFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not update folder\");\n }\n\n const folderIndex = cache[type]?.findIndex(f => f.id === id);\n if (folderIndex > -1) {\n setCache(cache => ({\n ...cache,\n [type]: [\n ...cache[type].slice(0, folderIndex),\n {\n ...cache[type][folderIndex],\n ...data\n },\n ...cache[type].slice(folderIndex + 1)\n ]\n }));\n }\n\n return data;\n },\n\n async deleteFolder(type, id) {\n const { data: response } = await client.mutate<\n DeleteFolderResponse,\n DeleteFolderVariables\n >({\n mutation: DELETE_FOLDER,\n variables: {\n id\n }\n });\n\n if (!response) {\n throw new Error(\"Network error while deleting folder\");\n }\n\n const { data, error } = response.aco.deleteFolder;\n\n if (!data) {\n throw new Error(error?.message || \"Could not delete folder\");\n }\n\n setCache(cache => ({\n ...cache,\n [type]: cache[type].filter(f => f.id !== id)\n }));\n\n return true;\n },\n\n getDescendantFolders(type, id) {\n const currentFolders = cache[type];\n\n if (!id || id === ROOT_FOLDER || !currentFolders?.length) {\n return [];\n }\n\n const folderMap = new Map(currentFolders.map(folder => [folder.id, folder]));\n const result: FolderItem[] = [];\n\n const findChildren = (folderId: string) => {\n const folder = folderMap.get(folderId);\n if (!folder) {\n return;\n }\n\n result.push(folder);\n\n currentFolders.forEach(child => {\n if (child.parentId === folder.id) {\n findChildren(child.id);\n }\n });\n };\n\n findChildren(id);\n\n return result;\n }\n };\n\n return <FoldersApiContext.Provider value={context}>{children}</FoldersApiContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalFolders","foldersLoading","loading","listFolders","getDescendantFolders","originalRecords","recordsLoading","listRecords","meta","useEffect","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","listItems","Boolean","Object","values","length","params","sort","validateOrGetDefaultDbSort","search","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderItem[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const {\n folders: originalFolders,\n loading: foldersLoading,\n listFolders,\n getDescendantFolders\n } = folderContext;\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `listFolders` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n if (!currentFolderId) {\n return;\n }\n\n if (!originalFolders) {\n listFolders();\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity?.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n if (!state.folderId) {\n return;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = getDescendantFolders(folderId);\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST\n ),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalFolders","foldersLoading","loading","listFolders","getDescendantFolders","originalRecords","recordsLoading","listRecords","meta","useEffect","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","listItems","Boolean","Object","values","length","params","sort","validateOrGetDefaultDbSort","search","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderItem[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const {\n folders: originalFolders,\n loading: foldersLoading,\n listFolders,\n getDescendantFolders\n } = folderContext;\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `listFolders` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n if (!currentFolderId) {\n return;\n }\n\n if (!originalFolders) {\n listFolders();\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity?.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n if (!state.folderId) {\n return;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = getDescendantFolders(folderId);\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST\n ),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_Progress","_appAdmin","_app","_folders","_records","_DisplayError","_navigateFolderWithRouter","_acoList","AcoAppContext","exports","React","createContext","undefined","createAppFromModel","data","_objectSpread2","default","getFields","model","fields","createApiApp","console","error","dataField","find","f","fieldId","concat","id","settings","AcoAppProvider","_ref","children","client","inputModel","folderIdQueryString","createNavigateFolderListLink","createNavigateFolderStorageKey","initialFolderIdPath","folderIdPath","own","_useState","useState","loading","app","mode","_useState2","_slicedToArray2","state","setState","folderIdInPath","useEffect","prev","query","createGetAppQuery","variables","then","response","_ref2","aco","message","code","modelId","value","useMemo","createElement","CircularProgress","DisplayError","Provider","FoldersProvider","SearchRecordsProvider","NavigateFolderWithRouterProvider","createListLink","createStorageKey","AcoListProvider","titleFieldId","DialogsProvider"],"sources":["app.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { ApolloClient } from \"apollo-client\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { DialogsProvider } from \"@webiny/app-admin\";\nimport { AcoApp, AcoAppMode, AcoError, AcoModel, AcoModelField } from \"~/types\";\nimport { createGetAppQuery, GetAppResult, GetAppVariables } from \"~/graphql/app.gql\";\nimport { FoldersProvider as FoldersContextProvider } from \"./folders\";\nimport { SearchRecordsProvider as SearchRecordsContextProvider } from \"./records\";\nimport { DisplayError } from \"./DisplayError\";\nimport { NavigateFolderWithRouterProvider } from \"~/contexts/navigateFolderWithRouter\";\nimport { AcoListProvider } from \"~/contexts/acoList\";\n\nexport interface AcoAppProviderContext {\n app: AcoApp;\n folderIdPath: string;\n folderIdInPath: string;\n model: AcoModel;\n client: ApolloClient<any>;\n loading: boolean;\n error?: AcoError | null;\n mode: AcoAppMode;\n}\n\ninterface AcoAppProviderState {\n loading: boolean;\n app?: AcoApp | null;\n model?: AcoModel | null;\n error?: AcoError | null;\n mode: AcoAppMode;\n}\n\nexport const AcoAppContext = React.createContext<AcoAppProviderContext | undefined>(undefined);\n\ninterface BaseAcoAppProviderProps {\n children: React.ReactNode;\n id: string;\n folderIdPath?: string;\n folderIdQueryString?: string;\n client: ApolloClient<any>;\n createNavigateFolderListLink?: () => string;\n createNavigateFolderStorageKey: () => string;\n own?: boolean;\n}\n\nexport interface AcoAppProviderPropsApi extends BaseAcoAppProviderProps {\n model?: never;\n getFields?: never;\n}\n\nexport interface AcoAppProviderPropsManual extends BaseAcoAppProviderProps {\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport type AcoAppProviderProps = AcoAppProviderPropsApi | AcoAppProviderPropsManual;\n\ninterface CreateAppParams {\n id: string;\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport const createAppFromModel = (data: CreateAppParams): AcoApp => {\n return {\n ...data,\n getFields:\n data.getFields ||\n (() => {\n return data.model.fields;\n })\n };\n};\n\ninterface CreateApiAppParams {\n id: string;\n model: AcoModel;\n}\n\nconst createApiApp = (data: CreateApiAppParams | null): AcoApp | null => {\n if (!data) {\n console.error(`The APP could not be created. No data received.`);\n return null;\n }\n const dataField = data.model.fields.find(f => f.fieldId === \"data\");\n if (!dataField) {\n console.error(`The APP \"${data.id}\" does not have the data field.`);\n return null;\n }\n return {\n ...data,\n getFields: () => {\n return dataField?.settings?.fields || [];\n }\n };\n};\n\nexport const AcoAppProvider = ({\n children,\n id,\n client,\n model: inputModel,\n getFields,\n folderIdQueryString,\n createNavigateFolderListLink,\n createNavigateFolderStorageKey,\n folderIdPath: initialFolderIdPath,\n own\n}: AcoAppProviderProps) => {\n const [state, setState] = useState<AcoAppProviderState>({\n loading: false,\n app: null,\n model: null,\n error: null,\n mode: \"aco\"\n });\n const folderIdPath = initialFolderIdPath || \"location.folderId\";\n const folderIdInPath = folderIdPath + \"_in\";\n\n /**\n * The APP Provider can operate in two modes:\n * * `app` - when the `id` is provided, the app is fetched from the API\n * * `model` - when the `model` is provided, the app is created from the model\n */\n useEffect(() => {\n if (!id) {\n return;\n }\n /**\n * In the `model` mode, we don't need to fetch the app from the API.\n * BUT, the input model must be `undefined`. In case it's `null`, just return because there will be a model at a point.\n */\n if (inputModel !== undefined) {\n if (!inputModel) {\n return;\n }\n setState(prev => {\n return {\n ...prev,\n loading: false,\n model: inputModel,\n app: createAppFromModel({\n id,\n model: inputModel,\n getFields\n }),\n mode: \"cms\"\n };\n });\n return;\n }\n if (id === state.app?.id) {\n return;\n }\n setState(prev => {\n return {\n ...prev,\n loading: true\n };\n });\n client\n .query<GetAppResult, GetAppVariables>({\n query: createGetAppQuery(),\n variables: {\n id\n }\n })\n .then(response => {\n const { data, error } = response.data.aco?.app || {};\n\n if (error) {\n setState(prev => {\n return {\n ...prev,\n loading: false,\n app: null,\n model: null,\n error,\n mode: \"aco\"\n };\n });\n return;\n }\n\n setState(prev => {\n const app = createApiApp(data);\n if (!app) {\n return {\n ...prev,\n loading: false,\n app: null,\n model: null,\n mode: \"aco\",\n error: {\n message: `App \"${id}\" not found!`,\n code: \"APP_NOT_FOUND\"\n }\n };\n }\n return {\n ...prev,\n loading: false,\n app,\n model: app.model,\n error: null,\n mode: \"aco\"\n };\n });\n });\n }, [id, inputModel?.modelId]);\n\n const { app, model, error, loading, mode } = state;\n\n const value = useMemo<AcoAppProviderContext>(() => {\n return {\n app: app as AcoApp,\n folderIdPath,\n folderIdInPath,\n loading,\n client,\n model: model as AcoModel,\n error,\n mode\n };\n }, [app?.id, loading, error, model, client, mode]);\n /**\n * Do not render anything yet if there is no application.\n */\n if (error) {\n return <div>Error: {error.message}</div>;\n } else if (loading) {\n return <CircularProgress />;\n } else if (!app) {\n return (\n <DisplayError>\n There is no ACO App: <strong>{id}</strong>!\n </DisplayError>\n );\n } else if (!model) {\n return (\n <DisplayError>\n There is no model for the ACO App: <strong>{id}</strong>!\n </DisplayError>\n );\n }\n\n return (\n <AcoAppContext.Provider value={value}>\n <FoldersContextProvider>\n <SearchRecordsContextProvider>\n <NavigateFolderWithRouterProvider\n folderIdQueryString={folderIdQueryString}\n createListLink={createNavigateFolderListLink}\n createStorageKey={createNavigateFolderStorageKey}\n >\n <AcoListProvider own={own} titleFieldId={model.titleFieldId}>\n <DialogsProvider>{children}</DialogsProvider>\n </AcoListProvider>\n </NavigateFolderWithRouterProvider>\n </SearchRecordsContextProvider>\n </FoldersContextProvider>\n </AcoAppContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_Progress","_appAdmin","_app","_folders","_records","_DisplayError","_navigateFolderWithRouter","_acoList","AcoAppContext","exports","React","createContext","undefined","createAppFromModel","data","_objectSpread2","default","getFields","model","fields","createApiApp","console","error","dataField","find","f","fieldId","concat","id","settings","AcoAppProvider","_ref","children","client","inputModel","folderIdQueryString","createNavigateFolderListLink","createNavigateFolderStorageKey","initialFolderIdPath","folderIdPath","own","_useState","useState","loading","app","mode","_useState2","_slicedToArray2","state","setState","folderIdInPath","useEffect","prev","query","createGetAppQuery","variables","then","response","_ref2","aco","message","code","modelId","value","useMemo","createElement","CircularProgress","DisplayError","Provider","FoldersProvider","SearchRecordsProvider","NavigateFolderWithRouterProvider","createListLink","createStorageKey","AcoListProvider","titleFieldId","DialogsProvider"],"sources":["app.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { ApolloClient } from \"apollo-client\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { DialogsProvider } from \"@webiny/app-admin\";\nimport { AcoApp, AcoAppMode, AcoError, AcoModel, AcoModelField } from \"~/types\";\nimport { createGetAppQuery, GetAppResult, GetAppVariables } from \"~/graphql/app.gql\";\nimport { FoldersProvider as FoldersContextProvider } from \"./folders\";\nimport { SearchRecordsProvider as SearchRecordsContextProvider } from \"./records\";\nimport { DisplayError } from \"./DisplayError\";\nimport { NavigateFolderWithRouterProvider } from \"~/contexts/navigateFolderWithRouter\";\nimport { AcoListProvider } from \"~/contexts/acoList\";\n\nexport interface AcoAppProviderContext {\n app: AcoApp;\n folderIdPath: string;\n folderIdInPath: string;\n model: AcoModel;\n client: ApolloClient<any>;\n loading: boolean;\n error?: AcoError | null;\n mode: AcoAppMode;\n}\n\ninterface AcoAppProviderState {\n loading: boolean;\n app?: AcoApp | null;\n model?: AcoModel | null;\n error?: AcoError | null;\n mode: AcoAppMode;\n}\n\nexport const AcoAppContext = React.createContext<AcoAppProviderContext | undefined>(undefined);\n\ninterface BaseAcoAppProviderProps {\n children: React.ReactNode;\n id: string;\n folderIdPath?: string;\n folderIdQueryString?: string;\n client: ApolloClient<any>;\n createNavigateFolderListLink?: () => string;\n createNavigateFolderStorageKey: () => string;\n own?: boolean;\n}\n\nexport interface AcoAppProviderPropsApi extends BaseAcoAppProviderProps {\n model?: never;\n getFields?: never;\n}\n\nexport interface AcoAppProviderPropsManual extends BaseAcoAppProviderProps {\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport type AcoAppProviderProps = AcoAppProviderPropsApi | AcoAppProviderPropsManual;\n\ninterface CreateAppParams {\n id: string;\n model: AcoModel;\n getFields?: () => AcoModelField[];\n}\n\nexport const createAppFromModel = (data: CreateAppParams): AcoApp => {\n return {\n ...data,\n getFields:\n data.getFields ||\n (() => {\n return data.model.fields;\n })\n };\n};\n\ninterface CreateApiAppParams {\n id: string;\n model: AcoModel;\n}\n\nconst createApiApp = (data: CreateApiAppParams | null): AcoApp | null => {\n if (!data) {\n console.error(`The APP could not be created. No data received.`);\n return null;\n }\n const dataField = data.model.fields.find(f => f.fieldId === \"data\");\n if (!dataField) {\n console.error(`The APP \"${data.id}\" does not have the data field.`);\n return null;\n }\n return {\n ...data,\n getFields: () => {\n return dataField?.settings?.fields || [];\n }\n };\n};\n\nexport const AcoAppProvider = ({\n children,\n id,\n client,\n model: inputModel,\n getFields,\n folderIdQueryString,\n createNavigateFolderListLink,\n createNavigateFolderStorageKey,\n folderIdPath: initialFolderIdPath,\n own\n}: AcoAppProviderProps) => {\n const [state, setState] = useState<AcoAppProviderState>({\n loading: false,\n app: null,\n model: null,\n error: null,\n mode: \"aco\"\n });\n const folderIdPath = initialFolderIdPath || \"location.folderId\";\n const folderIdInPath = folderIdPath + \"_in\";\n\n /**\n * The APP Provider can operate in two modes:\n * * `app` - when the `id` is provided, the app is fetched from the API\n * * `model` - when the `model` is provided, the app is created from the model\n */\n useEffect(() => {\n if (!id) {\n return;\n }\n /**\n * In the `model` mode, we don't need to fetch the app from the API.\n * BUT, the input model must be `undefined`. In case it's `null`, just return because there will be a model at a point.\n */\n if (inputModel !== undefined) {\n if (!inputModel) {\n return;\n }\n setState(prev => {\n return {\n ...prev,\n loading: false,\n model: inputModel,\n app: createAppFromModel({\n id,\n model: inputModel,\n getFields\n }),\n mode: \"cms\"\n };\n });\n return;\n }\n if (id === state.app?.id) {\n return;\n }\n setState(prev => {\n return {\n ...prev,\n loading: true\n };\n });\n client\n .query<GetAppResult, GetAppVariables>({\n query: createGetAppQuery(),\n variables: {\n id\n }\n })\n .then(response => {\n const { data, error } = response.data.aco?.app || {};\n\n if (error) {\n setState(prev => {\n return {\n ...prev,\n loading: false,\n app: null,\n model: null,\n error,\n mode: \"aco\"\n };\n });\n return;\n }\n\n setState(prev => {\n const app = createApiApp(data);\n if (!app) {\n return {\n ...prev,\n loading: false,\n app: null,\n model: null,\n mode: \"aco\",\n error: {\n message: `App \"${id}\" not found!`,\n code: \"APP_NOT_FOUND\"\n }\n };\n }\n return {\n ...prev,\n loading: false,\n app,\n model: app.model,\n error: null,\n mode: \"aco\"\n };\n });\n });\n }, [id, inputModel?.modelId]);\n\n const { app, model, error, loading, mode } = state;\n\n const value = useMemo<AcoAppProviderContext>(() => {\n return {\n app: app as AcoApp,\n folderIdPath,\n folderIdInPath,\n loading,\n client,\n model: model as AcoModel,\n error,\n mode\n };\n }, [app?.id, loading, error, model, client, mode]);\n /**\n * Do not render anything yet if there is no application.\n */\n if (error) {\n return <div>Error: {error.message}</div>;\n } else if (loading) {\n return <CircularProgress />;\n } else if (!app) {\n return (\n <DisplayError>\n There is no ACO App: <strong>{id}</strong>!\n </DisplayError>\n );\n } else if (!model) {\n return (\n <DisplayError>\n There is no model for the ACO App: <strong>{id}</strong>!\n </DisplayError>\n );\n }\n\n return (\n <AcoAppContext.Provider value={value}>\n <FoldersContextProvider>\n <SearchRecordsContextProvider>\n <NavigateFolderWithRouterProvider\n folderIdQueryString={folderIdQueryString}\n createListLink={createNavigateFolderListLink}\n createStorageKey={createNavigateFolderStorageKey}\n >\n <AcoListProvider own={own} titleFieldId={model.titleFieldId}>\n <DialogsProvider>{children}</DialogsProvider>\n </AcoListProvider>\n </NavigateFolderWithRouterProvider>\n </SearchRecordsContextProvider>\n </FoldersContextProvider>\n </AcoAppContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_useWcp2","_appAdmin","_handlers","_app","_hooks","_constants","_excluded","FoldersContext","exports","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","MOVE","CREATE","UPDATE","DELETE","FoldersProvider","_ref","children","props","_objectWithoutProperties2","default","appContext","useContext","AcoAppContext","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","folders","setFolders","_useStateIfMounted3","_useStateIfMounted4","loading","setLoading","foldersApi","useFoldersApi","_useWcp","useWcp","canUseFolderLevelPermissions","app","type","id","Error","useEffect","onFoldersChanged","folderLevelPermissions","useMemo","createCanManage","callback","folderId","ROOT_FOLDER","folder","find","canManageStructure","canManagePermissions","canManageContent","context","listFolders","dataLoader","loadingHandler","prev","_objectSpread2","getFolder","createFolder","updateFolder","options","title","slug","permissions","parentId","filteredPermissions","filter","p","inheritedFrom","response","refetchFoldersList","invalidateCache","then","deleteFolder","getDescendantFolders","createElement","Provider","value"],"sources":["folders.tsx"],"sourcesContent":["import React, { ReactNode, useContext, useEffect, useMemo } from \"react\";\nimport { useWcp } from \"@webiny/app-wcp/hooks/useWcp\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { dataLoader, loadingHandler } from \"~/handlers\";\nimport { FolderItem, Loading, LoadingActions } from \"~/types\";\nimport { AcoAppContext } from \"~/contexts/app\";\nimport { useFoldersApi } from \"~/hooks\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface FoldersContextFolderLevelPermissions {\n canManageStructure(folderId: string): boolean;\n\n canManagePermissions(folderId: string): boolean;\n\n canManageContent(folderId: string): boolean;\n}\n\ninterface FoldersContext {\n folders?: FolderItem[] | null;\n loading: Loading<LoadingActions>;\n listFolders: () => Promise<FolderItem[]>;\n getFolder: (id: string) => Promise<FolderItem>;\n createFolder: (folder: Omit<FolderItem, \"id\" | \"type\">) => Promise<FolderItem>;\n updateFolder: (\n folder: Omit<FolderItem, \"type\">,\n options?: Partial<{\n refetchFoldersList: boolean;\n }>\n ) => Promise<FolderItem>;\n\n deleteFolder(folder: Pick<FolderItem, \"id\">): Promise<true>;\n\n getDescendantFolders(id?: string): FolderItem[];\n\n folderLevelPermissions: FoldersContextFolderLevelPermissions;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n type?: string;\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n MOVE: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const FoldersProvider = ({ children, ...props }: Props) => {\n const appContext = useContext(AcoAppContext);\n const [folders, setFolders] = useStateIfMounted<FolderItem[] | null>(null);\n const [loading, setLoading] = useStateIfMounted<Loading<LoadingActions>>(defaultLoading);\n const foldersApi = useFoldersApi();\n const { canUseFolderLevelPermissions } = useWcp();\n\n const app = appContext ? appContext.app : undefined;\n\n const type = props.type ?? app?.id;\n if (!type) {\n throw Error(`FoldersProvider requires a \"type\" prop or an AcoAppContext to be available!`);\n }\n\n useEffect(() => {\n return foldersApi.onFoldersChanged(type, folders => {\n setFolders(folders);\n });\n }, []);\n\n const folderLevelPermissions: FoldersContextFolderLevelPermissions = useMemo(() => {\n const createCanManage =\n (callback: (folder: FolderItem) => boolean) => (folderId: string) => {\n if (!canUseFolderLevelPermissions() || folderId === ROOT_FOLDER) {\n return true;\n }\n\n const folder = folders?.find(folder => folder.id === folderId);\n if (!folder) {\n return false;\n }\n\n return callback(folder);\n };\n\n return {\n canManageStructure: createCanManage(folder => folder.canManageStructure),\n canManagePermissions: createCanManage(folder => folder.canManagePermissions),\n canManageContent: createCanManage(folder => folder.canManageContent)\n };\n }, [folders]);\n\n const context = useMemo<FoldersContext>(() => {\n return {\n folders,\n loading,\n async listFolders() {\n const folders = await dataLoader(loadingHandler(\"LIST\", setLoading), () =>\n foldersApi.listFolders(type)\n );\n\n setFolders(() => folders);\n\n setLoading(prev => ({\n ...prev,\n INIT: false\n }));\n\n return folders;\n },\n\n async getFolder(id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n return await dataLoader(loadingHandler(\"GET\", setLoading), () =>\n foldersApi.getFolder(type, id)\n );\n },\n\n async createFolder(folder) {\n return await dataLoader(loadingHandler(\"CREATE\", setLoading), () =>\n foldersApi.createFolder(type, folder)\n );\n },\n\n async updateFolder(folder, options) {\n const { id, title, slug, permissions, parentId } = folder;\n\n // We must omit all inherited permissions.\n const filteredPermissions = permissions.filter(p => !p.inheritedFrom);\n\n return await dataLoader(loadingHandler(\"UPDATE\", setLoading), async () => {\n const response = await foldersApi.updateFolder(type, {\n id,\n title,\n slug,\n permissions: filteredPermissions,\n parentId\n });\n\n if (options?.refetchFoldersList) {\n foldersApi.listFolders(type, { invalidateCache: true }).then(setFolders);\n }\n\n return response;\n });\n },\n\n async deleteFolder(folder) {\n const { id } = folder;\n\n return await dataLoader(loadingHandler(\"DELETE\", setLoading), () =>\n foldersApi.deleteFolder(type, id)\n );\n },\n\n getDescendantFolders(id) {\n return foldersApi.getDescendantFolders(type, id);\n },\n\n folderLevelPermissions\n };\n }, [folders, loading, setLoading, setFolders]);\n\n return <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_useWcp2","_appAdmin","_handlers","_app","_hooks","_constants","_excluded","FoldersContext","exports","React","createContext","undefined","defaultLoading","INIT","LIST","LIST_MORE","GET","MOVE","CREATE","UPDATE","DELETE","FoldersProvider","_ref","children","props","_objectWithoutProperties2","default","appContext","useContext","AcoAppContext","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","folders","setFolders","_useStateIfMounted3","_useStateIfMounted4","loading","setLoading","foldersApi","useFoldersApi","_useWcp","useWcp","canUseFolderLevelPermissions","app","type","id","Error","useEffect","onFoldersChanged","folderLevelPermissions","useMemo","createCanManage","callback","folderId","ROOT_FOLDER","folder","find","canManageStructure","canManagePermissions","canManageContent","context","listFolders","dataLoader","loadingHandler","prev","_objectSpread2","getFolder","createFolder","updateFolder","options","title","slug","permissions","parentId","filteredPermissions","filter","p","inheritedFrom","response","refetchFoldersList","invalidateCache","then","deleteFolder","getDescendantFolders","createElement","Provider","value"],"sources":["folders.tsx"],"sourcesContent":["import React, { ReactNode, useContext, useEffect, useMemo } from \"react\";\nimport { useWcp } from \"@webiny/app-wcp/hooks/useWcp\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { dataLoader, loadingHandler } from \"~/handlers\";\nimport { FolderItem, Loading, LoadingActions } from \"~/types\";\nimport { AcoAppContext } from \"~/contexts/app\";\nimport { useFoldersApi } from \"~/hooks\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface FoldersContextFolderLevelPermissions {\n canManageStructure(folderId: string): boolean;\n\n canManagePermissions(folderId: string): boolean;\n\n canManageContent(folderId: string): boolean;\n}\n\ninterface FoldersContext {\n folders?: FolderItem[] | null;\n loading: Loading<LoadingActions>;\n listFolders: () => Promise<FolderItem[]>;\n getFolder: (id: string) => Promise<FolderItem>;\n createFolder: (folder: Omit<FolderItem, \"id\" | \"type\">) => Promise<FolderItem>;\n updateFolder: (\n folder: Omit<FolderItem, \"type\">,\n options?: Partial<{\n refetchFoldersList: boolean;\n }>\n ) => Promise<FolderItem>;\n\n deleteFolder(folder: Pick<FolderItem, \"id\">): Promise<true>;\n\n getDescendantFolders(id?: string): FolderItem[];\n\n folderLevelPermissions: FoldersContextFolderLevelPermissions;\n}\n\nexport const FoldersContext = React.createContext<FoldersContext | undefined>(undefined);\n\ninterface Props {\n type?: string;\n children: ReactNode;\n}\n\nconst defaultLoading: Record<LoadingActions, boolean> = {\n INIT: true,\n LIST: false,\n LIST_MORE: false,\n GET: false,\n MOVE: false,\n CREATE: false,\n UPDATE: false,\n DELETE: false\n};\n\nexport const FoldersProvider = ({ children, ...props }: Props) => {\n const appContext = useContext(AcoAppContext);\n const [folders, setFolders] = useStateIfMounted<FolderItem[] | null>(null);\n const [loading, setLoading] = useStateIfMounted<Loading<LoadingActions>>(defaultLoading);\n const foldersApi = useFoldersApi();\n const { canUseFolderLevelPermissions } = useWcp();\n\n const app = appContext ? appContext.app : undefined;\n\n const type = props.type ?? app?.id;\n if (!type) {\n throw Error(`FoldersProvider requires a \"type\" prop or an AcoAppContext to be available!`);\n }\n\n useEffect(() => {\n return foldersApi.onFoldersChanged(type, folders => {\n setFolders(folders);\n });\n }, []);\n\n const folderLevelPermissions: FoldersContextFolderLevelPermissions = useMemo(() => {\n const createCanManage =\n (callback: (folder: FolderItem) => boolean) => (folderId: string) => {\n if (!canUseFolderLevelPermissions() || folderId === ROOT_FOLDER) {\n return true;\n }\n\n const folder = folders?.find(folder => folder.id === folderId);\n if (!folder) {\n return false;\n }\n\n return callback(folder);\n };\n\n return {\n canManageStructure: createCanManage(folder => folder.canManageStructure),\n canManagePermissions: createCanManage(folder => folder.canManagePermissions),\n canManageContent: createCanManage(folder => folder.canManageContent)\n };\n }, [folders]);\n\n const context = useMemo<FoldersContext>(() => {\n return {\n folders,\n loading,\n async listFolders() {\n const folders = await dataLoader(loadingHandler(\"LIST\", setLoading), () =>\n foldersApi.listFolders(type)\n );\n\n setFolders(() => folders);\n\n setLoading(prev => ({\n ...prev,\n INIT: false\n }));\n\n return folders;\n },\n\n async getFolder(id) {\n if (!id) {\n throw new Error(\"Folder `id` is mandatory\");\n }\n\n return await dataLoader(loadingHandler(\"GET\", setLoading), () =>\n foldersApi.getFolder(type, id)\n );\n },\n\n async createFolder(folder) {\n return await dataLoader(loadingHandler(\"CREATE\", setLoading), () =>\n foldersApi.createFolder(type, folder)\n );\n },\n\n async updateFolder(folder, options) {\n const { id, title, slug, permissions, parentId } = folder;\n\n // We must omit all inherited permissions.\n const filteredPermissions = permissions.filter(p => !p.inheritedFrom);\n\n return await dataLoader(loadingHandler(\"UPDATE\", setLoading), async () => {\n const response = await foldersApi.updateFolder(type, {\n id,\n title,\n slug,\n permissions: filteredPermissions,\n parentId\n });\n\n if (options?.refetchFoldersList) {\n foldersApi.listFolders(type, { invalidateCache: true }).then(setFolders);\n }\n\n return response;\n });\n },\n\n async deleteFolder(folder) {\n const { id } = folder;\n\n return await dataLoader(loadingHandler(\"DELETE\", setLoading), () =>\n foldersApi.deleteFolder(type, id)\n );\n },\n\n getDescendantFolders(id) {\n return foldersApi.getDescendantFolders(type, id);\n },\n\n folderLevelPermissions\n };\n }, [folders, loading, setLoading, setFolders]);\n\n return <FoldersContext.Provider value={context}>{children}</FoldersContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -116,6 +116,11 @@ var SearchRecordsProvider = exports.SearchRecordsProvider = function SearchRecor
116
116
  setRecords(function (prev) {
117
117
  return [record].concat((0, _toConsumableArray2.default)(prev));
118
118
  });
119
+ setMeta(function (meta) {
120
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, meta), {}, {
121
+ totalCount: ++meta.totalCount
122
+ });
123
+ });
119
124
  },
120
125
  updateRecordInCache: function updateRecordInCache(record) {
121
126
  var _parseIdentifier = (0, _utils.parseIdentifier)(record.id),
@@ -140,6 +145,11 @@ var SearchRecordsProvider = exports.SearchRecordsProvider = function SearchRecor
140
145
  return record.id !== id && !record.id.startsWith("".concat(id, "#"));
141
146
  });
142
147
  });
148
+ setMeta(function (meta) {
149
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, meta), {}, {
150
+ totalCount: --meta.totalCount
151
+ });
152
+ });
143
153
  },
144
154
  listRecords: async function listRecords(params) {
145
155
  var after = params.after,
@@ -232,6 +242,11 @@ var SearchRecordsProvider = exports.SearchRecordsProvider = function SearchRecor
232
242
  return record.id !== recordId;
233
243
  });
234
244
  });
245
+ setMeta(function (meta) {
246
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, meta), {}, {
247
+ totalCount: --meta.totalCount
248
+ });
249
+ });
235
250
  return data;
236
251
  }
237
252
  setRecords(function (prev) {
@@ -247,6 +262,11 @@ var SearchRecordsProvider = exports.SearchRecordsProvider = function SearchRecor
247
262
  next[index] = data;
248
263
  return next;
249
264
  });
265
+ setMeta(function (meta) {
266
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, meta), {}, {
267
+ totalCount: ++meta.totalCount
268
+ });
269
+ });
250
270
  setTags(function (tags) {
251
271
  if (!data.tags || data.tags.length === 0) {
252
272
  return tags;