@refinedev/antd 5.37.5 → 5.38.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.
- package/CHANGELOG.md +58 -0
- package/README.md +109 -17
- package/dist/components/autoSaveIndicator/index.d.cts +4 -0
- package/dist/components/autoSaveIndicator/index.d.cts.map +1 -0
- package/dist/components/autoSaveIndicator/index.d.mts +4 -0
- package/dist/components/autoSaveIndicator/index.d.mts.map +1 -0
- package/dist/components/breadcrumb/index.d.cts +6 -0
- package/dist/components/breadcrumb/index.d.cts.map +1 -0
- package/dist/components/breadcrumb/index.d.mts +6 -0
- package/dist/components/breadcrumb/index.d.mts.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/buttons/clone/index.d.cts +11 -0
- package/dist/components/buttons/clone/index.d.cts.map +1 -0
- package/dist/components/buttons/clone/index.d.mts +11 -0
- package/dist/components/buttons/clone/index.d.mts.map +1 -0
- package/dist/components/buttons/clone/index.d.ts +1 -1
- package/dist/components/buttons/clone/index.d.ts.map +1 -1
- package/dist/components/buttons/create/index.d.cts +11 -0
- package/dist/components/buttons/create/index.d.cts.map +1 -0
- package/dist/components/buttons/create/index.d.mts +11 -0
- package/dist/components/buttons/create/index.d.mts.map +1 -0
- package/dist/components/buttons/create/index.d.ts +1 -1
- package/dist/components/buttons/create/index.d.ts.map +1 -1
- package/dist/components/buttons/delete/index.d.cts +10 -0
- package/dist/components/buttons/delete/index.d.cts.map +1 -0
- package/dist/components/buttons/delete/index.d.mts +10 -0
- package/dist/components/buttons/delete/index.d.mts.map +1 -0
- package/dist/components/buttons/delete/index.d.ts +1 -1
- package/dist/components/buttons/delete/index.d.ts.map +1 -1
- package/dist/components/buttons/edit/index.d.cts +11 -0
- package/dist/components/buttons/edit/index.d.cts.map +1 -0
- package/dist/components/buttons/edit/index.d.mts +11 -0
- package/dist/components/buttons/edit/index.d.mts.map +1 -0
- package/dist/components/buttons/edit/index.d.ts.map +1 -1
- package/dist/components/buttons/export/index.d.cts +10 -0
- package/dist/components/buttons/export/index.d.cts.map +1 -0
- package/dist/components/buttons/export/index.d.mts +10 -0
- package/dist/components/buttons/export/index.d.mts.map +1 -0
- package/dist/components/buttons/import/index.d.cts +11 -0
- package/dist/components/buttons/import/index.d.cts.map +1 -0
- package/dist/components/buttons/import/index.d.mts +11 -0
- package/dist/components/buttons/import/index.d.mts.map +1 -0
- package/dist/components/buttons/import/index.d.ts.map +1 -1
- package/dist/components/buttons/index.d.cts +12 -0
- package/dist/components/buttons/index.d.cts.map +1 -0
- package/dist/components/buttons/index.d.mts +12 -0
- package/dist/components/buttons/index.d.mts.map +1 -0
- package/dist/components/buttons/list/index.d.cts +11 -0
- package/dist/components/buttons/list/index.d.cts.map +1 -0
- package/dist/components/buttons/list/index.d.mts +11 -0
- package/dist/components/buttons/list/index.d.mts.map +1 -0
- package/dist/components/buttons/list/index.d.ts.map +1 -1
- package/dist/components/buttons/refresh/index.d.cts +10 -0
- package/dist/components/buttons/refresh/index.d.cts.map +1 -0
- package/dist/components/buttons/refresh/index.d.mts +10 -0
- package/dist/components/buttons/refresh/index.d.mts.map +1 -0
- package/dist/components/buttons/refresh/index.d.ts.map +1 -1
- package/dist/components/buttons/save/index.d.cts +10 -0
- package/dist/components/buttons/save/index.d.cts.map +1 -0
- package/dist/components/buttons/save/index.d.mts +10 -0
- package/dist/components/buttons/save/index.d.mts.map +1 -0
- package/dist/components/buttons/show/index.d.cts +11 -0
- package/dist/components/buttons/show/index.d.cts.map +1 -0
- package/dist/components/buttons/show/index.d.mts +11 -0
- package/dist/components/buttons/show/index.d.mts.map +1 -0
- package/dist/components/buttons/show/index.d.ts.map +1 -1
- package/dist/components/buttons/types.d.cts +24 -0
- package/dist/components/buttons/types.d.cts.map +1 -0
- package/dist/components/buttons/types.d.mts +24 -0
- package/dist/components/buttons/types.d.mts.map +1 -0
- package/dist/components/buttons/types.d.ts +10 -10
- package/dist/components/buttons/types.d.ts.map +1 -1
- package/dist/components/crud/create/index.d.cts +10 -0
- package/dist/components/crud/create/index.d.cts.map +1 -0
- package/dist/components/crud/create/index.d.mts +10 -0
- package/dist/components/crud/create/index.d.mts.map +1 -0
- package/dist/components/crud/edit/index.d.cts +10 -0
- package/dist/components/crud/edit/index.d.cts.map +1 -0
- package/dist/components/crud/edit/index.d.mts +10 -0
- package/dist/components/crud/edit/index.d.mts.map +1 -0
- package/dist/components/crud/index.d.cts +6 -0
- package/dist/components/crud/index.d.cts.map +1 -0
- package/dist/components/crud/index.d.mts +6 -0
- package/dist/components/crud/index.d.mts.map +1 -0
- package/dist/components/crud/list/index.d.cts +10 -0
- package/dist/components/crud/list/index.d.cts.map +1 -0
- package/dist/components/crud/list/index.d.mts +10 -0
- package/dist/components/crud/list/index.d.mts.map +1 -0
- package/dist/components/crud/show/index.d.cts +10 -0
- package/dist/components/crud/show/index.d.cts.map +1 -0
- package/dist/components/crud/show/index.d.mts +10 -0
- package/dist/components/crud/show/index.d.mts.map +1 -0
- package/dist/components/crud/types.d.cts +10 -0
- package/dist/components/crud/types.d.cts.map +1 -0
- package/dist/components/crud/types.d.mts +10 -0
- package/dist/components/crud/types.d.mts.map +1 -0
- package/dist/components/crud/types.d.ts +4 -4
- package/dist/components/crud/types.d.ts.map +1 -1
- package/dist/components/fields/boolean/index.d.cts +9 -0
- package/dist/components/fields/boolean/index.d.cts.map +1 -0
- package/dist/components/fields/boolean/index.d.mts +9 -0
- package/dist/components/fields/boolean/index.d.mts.map +1 -0
- package/dist/components/fields/date/index.d.cts +9 -0
- package/dist/components/fields/date/index.d.cts.map +1 -0
- package/dist/components/fields/date/index.d.mts +9 -0
- package/dist/components/fields/date/index.d.mts.map +1 -0
- package/dist/components/fields/email/index.d.cts +10 -0
- package/dist/components/fields/email/index.d.cts.map +1 -0
- package/dist/components/fields/email/index.d.mts +10 -0
- package/dist/components/fields/email/index.d.mts.map +1 -0
- package/dist/components/fields/file/index.d.cts +9 -0
- package/dist/components/fields/file/index.d.cts.map +1 -0
- package/dist/components/fields/file/index.d.mts +9 -0
- package/dist/components/fields/file/index.d.mts.map +1 -0
- package/dist/components/fields/image/index.d.cts +9 -0
- package/dist/components/fields/image/index.d.cts.map +1 -0
- package/dist/components/fields/image/index.d.mts +9 -0
- package/dist/components/fields/image/index.d.mts.map +1 -0
- package/dist/components/fields/index.d.cts +12 -0
- package/dist/components/fields/index.d.cts.map +1 -0
- package/dist/components/fields/index.d.mts +12 -0
- package/dist/components/fields/index.d.mts.map +1 -0
- package/dist/components/fields/markdown/index.d.cts +9 -0
- package/dist/components/fields/markdown/index.d.cts.map +1 -0
- package/dist/components/fields/markdown/index.d.mts +9 -0
- package/dist/components/fields/markdown/index.d.mts.map +1 -0
- package/dist/components/fields/number/index.d.cts +9 -0
- package/dist/components/fields/number/index.d.cts.map +1 -0
- package/dist/components/fields/number/index.d.mts +9 -0
- package/dist/components/fields/number/index.d.mts.map +1 -0
- package/dist/components/fields/tag/index.d.cts +9 -0
- package/dist/components/fields/tag/index.d.cts.map +1 -0
- package/dist/components/fields/tag/index.d.mts +9 -0
- package/dist/components/fields/tag/index.d.mts.map +1 -0
- package/dist/components/fields/text/index.d.cts +9 -0
- package/dist/components/fields/text/index.d.cts.map +1 -0
- package/dist/components/fields/text/index.d.mts +9 -0
- package/dist/components/fields/text/index.d.mts.map +1 -0
- package/dist/components/fields/types.d.cts +20 -0
- package/dist/components/fields/types.d.cts.map +1 -0
- package/dist/components/fields/types.d.mts +20 -0
- package/dist/components/fields/types.d.mts.map +1 -0
- package/dist/components/fields/types.d.ts +10 -10
- package/dist/components/fields/types.d.ts.map +1 -1
- package/dist/components/fields/url/index.d.cts +10 -0
- package/dist/components/fields/url/index.d.cts.map +1 -0
- package/dist/components/fields/url/index.d.mts +10 -0
- package/dist/components/fields/url/index.d.mts.map +1 -0
- package/dist/components/index.d.cts +24 -0
- package/dist/components/index.d.cts.map +1 -0
- package/dist/components/index.d.mts +24 -0
- package/dist/components/index.d.mts.map +1 -0
- package/dist/components/layout/header/index.d.cts +4 -0
- package/dist/components/layout/header/index.d.cts.map +1 -0
- package/dist/components/layout/header/index.d.mts +4 -0
- package/dist/components/layout/header/index.d.mts.map +1 -0
- package/dist/components/layout/index.d.cts +8 -0
- package/dist/components/layout/index.d.cts.map +1 -0
- package/dist/components/layout/index.d.mts +8 -0
- package/dist/components/layout/index.d.mts.map +1 -0
- package/dist/components/layout/sider/index.d.cts +4 -0
- package/dist/components/layout/sider/index.d.cts.map +1 -0
- package/dist/components/layout/sider/index.d.mts +4 -0
- package/dist/components/layout/sider/index.d.mts.map +1 -0
- package/dist/components/layout/sider/styles.d.cts +3 -0
- package/dist/components/layout/sider/styles.d.cts.map +1 -0
- package/dist/components/layout/sider/styles.d.mts +3 -0
- package/dist/components/layout/sider/styles.d.mts.map +1 -0
- package/dist/components/layout/title/index.d.cts +4 -0
- package/dist/components/layout/title/index.d.cts.map +1 -0
- package/dist/components/layout/title/index.d.mts +4 -0
- package/dist/components/layout/title/index.d.mts.map +1 -0
- package/dist/components/layout/types.d.cts +3 -0
- package/dist/components/layout/types.d.cts.map +1 -0
- package/dist/components/layout/types.d.mts +3 -0
- package/dist/components/layout/types.d.mts.map +1 -0
- package/dist/components/pageHeader/index.d.cts +5 -0
- package/dist/components/pageHeader/index.d.cts.map +1 -0
- package/dist/components/pageHeader/index.d.mts +5 -0
- package/dist/components/pageHeader/index.d.mts.map +1 -0
- package/dist/components/pageHeader/index.d.ts +1 -1
- package/dist/components/pageHeader/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/forgotPassword/index.d.cts +12 -0
- package/dist/components/pages/auth/components/forgotPassword/index.d.cts.map +1 -0
- package/dist/components/pages/auth/components/forgotPassword/index.d.mts +12 -0
- package/dist/components/pages/auth/components/forgotPassword/index.d.mts.map +1 -0
- package/dist/components/pages/auth/components/forgotPassword/index.d.ts +1 -1
- package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/index.d.cts +5 -0
- package/dist/components/pages/auth/components/index.d.cts.map +1 -0
- package/dist/components/pages/auth/components/index.d.mts +5 -0
- package/dist/components/pages/auth/components/index.d.mts.map +1 -0
- package/dist/components/pages/auth/components/login/index.d.cts +12 -0
- package/dist/components/pages/auth/components/login/index.d.cts.map +1 -0
- package/dist/components/pages/auth/components/login/index.d.mts +12 -0
- package/dist/components/pages/auth/components/login/index.d.mts.map +1 -0
- package/dist/components/pages/auth/components/login/index.d.ts +1 -1
- package/dist/components/pages/auth/components/login/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/register/index.d.cts +12 -0
- package/dist/components/pages/auth/components/register/index.d.cts.map +1 -0
- package/dist/components/pages/auth/components/register/index.d.mts +12 -0
- package/dist/components/pages/auth/components/register/index.d.mts.map +1 -0
- package/dist/components/pages/auth/components/register/index.d.ts +1 -1
- package/dist/components/pages/auth/components/register/index.d.ts.map +1 -1
- package/dist/components/pages/auth/components/styles.d.cts +7 -0
- package/dist/components/pages/auth/components/styles.d.cts.map +1 -0
- package/dist/components/pages/auth/components/styles.d.mts +7 -0
- package/dist/components/pages/auth/components/styles.d.mts.map +1 -0
- package/dist/components/pages/auth/components/updatePassword/index.d.cts +12 -0
- package/dist/components/pages/auth/components/updatePassword/index.d.cts.map +1 -0
- package/dist/components/pages/auth/components/updatePassword/index.d.mts +12 -0
- package/dist/components/pages/auth/components/updatePassword/index.d.mts.map +1 -0
- package/dist/components/pages/auth/components/updatePassword/index.d.ts +1 -1
- package/dist/components/pages/auth/components/updatePassword/index.d.ts.map +1 -1
- package/dist/components/pages/auth/index.d.cts +14 -0
- package/dist/components/pages/auth/index.d.cts.map +1 -0
- package/dist/components/pages/auth/index.d.mts +14 -0
- package/dist/components/pages/auth/index.d.mts.map +1 -0
- package/dist/components/pages/auth/index.d.ts +1 -1
- package/dist/components/pages/auth/index.d.ts.map +1 -1
- package/dist/components/pages/error/index.d.cts +10 -0
- package/dist/components/pages/error/index.d.cts.map +1 -0
- package/dist/components/pages/error/index.d.mts +10 -0
- package/dist/components/pages/error/index.d.mts.map +1 -0
- package/dist/components/pages/index.d.cts +7 -0
- package/dist/components/pages/index.d.cts.map +1 -0
- package/dist/components/pages/index.d.mts +7 -0
- package/dist/components/pages/index.d.mts.map +1 -0
- package/dist/components/pages/login/index.d.cts +15 -0
- package/dist/components/pages/login/index.d.cts.map +1 -0
- package/dist/components/pages/login/index.d.mts +15 -0
- package/dist/components/pages/login/index.d.mts.map +1 -0
- package/dist/components/pages/login/styles.d.cts +6 -0
- package/dist/components/pages/login/styles.d.cts.map +1 -0
- package/dist/components/pages/login/styles.d.mts +6 -0
- package/dist/components/pages/login/styles.d.mts.map +1 -0
- package/dist/components/pages/ready/index.d.cts +9 -0
- package/dist/components/pages/ready/index.d.cts.map +1 -0
- package/dist/components/pages/ready/index.d.mts +9 -0
- package/dist/components/pages/ready/index.d.mts.map +1 -0
- package/dist/components/pages/welcome/index.d.cts +7 -0
- package/dist/components/pages/welcome/index.d.cts.map +1 -0
- package/dist/components/pages/welcome/index.d.mts +7 -0
- package/dist/components/pages/welcome/index.d.mts.map +1 -0
- package/dist/components/table/components/filterDropdown/index.d.cts +13 -0
- package/dist/components/table/components/filterDropdown/index.d.cts.map +1 -0
- package/dist/components/table/components/filterDropdown/index.d.mts +13 -0
- package/dist/components/table/components/filterDropdown/index.d.mts.map +1 -0
- package/dist/components/table/components/filterDropdown/index.d.ts +2 -2
- package/dist/components/table/components/filterDropdown/index.d.ts.map +1 -1
- package/dist/components/table/components/index.d.cts +2 -0
- package/dist/components/table/components/index.d.cts.map +1 -0
- package/dist/components/table/components/index.d.mts +2 -0
- package/dist/components/table/components/index.d.mts.map +1 -0
- package/dist/components/table/index.d.cts +2 -0
- package/dist/components/table/index.d.cts.map +1 -0
- package/dist/components/table/index.d.mts +2 -0
- package/dist/components/table/index.d.mts.map +1 -0
- package/dist/components/themedLayout/header/index.d.cts +7 -0
- package/dist/components/themedLayout/header/index.d.cts.map +1 -0
- package/dist/components/themedLayout/header/index.d.mts +7 -0
- package/dist/components/themedLayout/header/index.d.mts.map +1 -0
- package/dist/components/themedLayout/index.d.cts +7 -0
- package/dist/components/themedLayout/index.d.cts.map +1 -0
- package/dist/components/themedLayout/index.d.mts +7 -0
- package/dist/components/themedLayout/index.d.mts.map +1 -0
- package/dist/components/themedLayout/sider/index.d.cts +7 -0
- package/dist/components/themedLayout/sider/index.d.cts.map +1 -0
- package/dist/components/themedLayout/sider/index.d.mts +7 -0
- package/dist/components/themedLayout/sider/index.d.mts.map +1 -0
- package/dist/components/themedLayout/sider/styles.d.cts +3 -0
- package/dist/components/themedLayout/sider/styles.d.cts.map +1 -0
- package/dist/components/themedLayout/sider/styles.d.mts +3 -0
- package/dist/components/themedLayout/sider/styles.d.mts.map +1 -0
- package/dist/components/themedLayout/title/index.d.cts +7 -0
- package/dist/components/themedLayout/title/index.d.cts.map +1 -0
- package/dist/components/themedLayout/title/index.d.mts +7 -0
- package/dist/components/themedLayout/title/index.d.mts.map +1 -0
- package/dist/components/themedLayout/types.d.cts +3 -0
- package/dist/components/themedLayout/types.d.cts.map +1 -0
- package/dist/components/themedLayout/types.d.mts +3 -0
- package/dist/components/themedLayout/types.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/header/index.d.cts +4 -0
- package/dist/components/themedLayoutV2/header/index.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/header/index.d.mts +4 -0
- package/dist/components/themedLayoutV2/header/index.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/index.d.cts +4 -0
- package/dist/components/themedLayoutV2/index.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/index.d.mts +4 -0
- package/dist/components/themedLayoutV2/index.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/sider/index.d.cts +4 -0
- package/dist/components/themedLayoutV2/sider/index.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/sider/index.d.mts +4 -0
- package/dist/components/themedLayoutV2/sider/index.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/sider/styles.d.cts +3 -0
- package/dist/components/themedLayoutV2/sider/styles.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/sider/styles.d.mts +3 -0
- package/dist/components/themedLayoutV2/sider/styles.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/title/index.d.cts +4 -0
- package/dist/components/themedLayoutV2/title/index.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/title/index.d.mts +4 -0
- package/dist/components/themedLayoutV2/title/index.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/types.d.cts +6 -0
- package/dist/components/themedLayoutV2/types.d.cts.map +1 -0
- package/dist/components/themedLayoutV2/types.d.mts +6 -0
- package/dist/components/themedLayoutV2/types.d.mts.map +1 -0
- package/dist/components/themedLayoutV2/types.d.ts +1 -1
- package/dist/components/themedLayoutV2/types.d.ts.map +1 -1
- package/dist/components/undoableNotification/index.d.cts +10 -0
- package/dist/components/undoableNotification/index.d.cts.map +1 -0
- package/dist/components/undoableNotification/index.d.mts +10 -0
- package/dist/components/undoableNotification/index.d.mts.map +1 -0
- package/dist/components/undoableNotification/index.d.ts +1 -1
- package/dist/components/undoableNotification/index.d.ts.map +1 -1
- package/dist/contexts/index.d.cts +2 -0
- package/dist/contexts/index.d.cts.map +1 -0
- package/dist/contexts/index.d.mts +2 -0
- package/dist/contexts/index.d.mts.map +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts +7 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.cts.map +1 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts +7 -0
- package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.mts.map +1 -0
- package/dist/contexts/themedLayoutContext/index.d.cts +8 -0
- package/dist/contexts/themedLayoutContext/index.d.cts.map +1 -0
- package/dist/contexts/themedLayoutContext/index.d.mts +8 -0
- package/dist/contexts/themedLayoutContext/index.d.mts.map +1 -0
- package/dist/definitions/index.d.cts +4 -0
- package/dist/definitions/index.d.cts.map +1 -0
- package/dist/definitions/index.d.mts +4 -0
- package/dist/definitions/index.d.mts.map +1 -0
- package/dist/definitions/table/index.d.cts +13 -0
- package/dist/definitions/table/index.d.cts.map +1 -0
- package/dist/definitions/table/index.d.mts +13 -0
- package/dist/definitions/table/index.d.mts.map +1 -0
- package/dist/definitions/table/index.d.ts +6 -3
- package/dist/definitions/table/index.d.ts.map +1 -1
- package/dist/definitions/themes/index.d.cts +6 -0
- package/dist/definitions/themes/index.d.cts.map +1 -0
- package/dist/definitions/themes/index.d.mts +6 -0
- package/dist/definitions/themes/index.d.mts.map +1 -0
- package/dist/definitions/themes/index.d.ts +2 -2
- package/dist/definitions/themes/index.d.ts.map +1 -1
- package/dist/definitions/upload/index.d.cts +4 -0
- package/dist/definitions/upload/index.d.cts.map +1 -0
- package/dist/definitions/upload/index.d.mts +4 -0
- package/dist/definitions/upload/index.d.mts.map +1 -0
- package/dist/hooks/fields/index.d.cts +4 -0
- package/dist/hooks/fields/index.d.cts.map +1 -0
- package/dist/hooks/fields/index.d.mts +4 -0
- package/dist/hooks/fields/index.d.mts.map +1 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.cts +29 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.cts.map +1 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.mts +29 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.mts.map +1 -0
- package/dist/hooks/fields/useCheckboxGroup/index.d.ts +2 -2
- package/dist/hooks/fields/useCheckboxGroup/index.d.ts.map +1 -1
- package/dist/hooks/fields/useRadioGroup/index.d.cts +29 -0
- package/dist/hooks/fields/useRadioGroup/index.d.cts.map +1 -0
- package/dist/hooks/fields/useRadioGroup/index.d.mts +29 -0
- package/dist/hooks/fields/useRadioGroup/index.d.mts.map +1 -0
- package/dist/hooks/fields/useRadioGroup/index.d.ts +2 -2
- package/dist/hooks/fields/useRadioGroup/index.d.ts.map +1 -1
- package/dist/hooks/fields/useSelect/index.d.cts +20 -0
- package/dist/hooks/fields/useSelect/index.d.cts.map +1 -0
- package/dist/hooks/fields/useSelect/index.d.mts +20 -0
- package/dist/hooks/fields/useSelect/index.d.mts.map +1 -0
- package/dist/hooks/fields/useSelect/index.d.ts +1 -1
- package/dist/hooks/fields/useSelect/index.d.ts.map +1 -1
- package/dist/hooks/form/index.d.cts +5 -0
- package/dist/hooks/form/index.d.cts.map +1 -0
- package/dist/hooks/form/index.d.mts +5 -0
- package/dist/hooks/form/index.d.mts.map +1 -0
- package/dist/hooks/form/useDrawerForm/index.d.cts +2 -0
- package/dist/hooks/form/useDrawerForm/index.d.cts.map +1 -0
- package/dist/hooks/form/useDrawerForm/index.d.mts +2 -0
- package/dist/hooks/form/useDrawerForm/index.d.mts.map +1 -0
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.cts +37 -0
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.cts.map +1 -0
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.mts +37 -0
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.mts.map +1 -0
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.ts +2 -2
- package/dist/hooks/form/useDrawerForm/useDrawerForm.d.ts.map +1 -1
- package/dist/hooks/form/useForm.d.cts +40 -0
- package/dist/hooks/form/useForm.d.cts.map +1 -0
- package/dist/hooks/form/useForm.d.mts +40 -0
- package/dist/hooks/form/useForm.d.mts.map +1 -0
- package/dist/hooks/form/useForm.d.ts +2 -2
- package/dist/hooks/form/useForm.d.ts.map +1 -1
- package/dist/hooks/form/useModalForm/index.d.cts +2 -0
- package/dist/hooks/form/useModalForm/index.d.cts.map +1 -0
- package/dist/hooks/form/useModalForm/index.d.mts +2 -0
- package/dist/hooks/form/useModalForm/index.d.mts.map +1 -0
- package/dist/hooks/form/useModalForm/useModalForm.d.cts +42 -0
- package/dist/hooks/form/useModalForm/useModalForm.d.cts.map +1 -0
- package/dist/hooks/form/useModalForm/useModalForm.d.mts +42 -0
- package/dist/hooks/form/useModalForm/useModalForm.d.mts.map +1 -0
- package/dist/hooks/form/useModalForm/useModalForm.d.ts +4 -4
- package/dist/hooks/form/useModalForm/useModalForm.d.ts.map +1 -1
- package/dist/hooks/form/useStepsForm/index.d.cts +2 -0
- package/dist/hooks/form/useStepsForm/index.d.cts.map +1 -0
- package/dist/hooks/form/useStepsForm/index.d.mts +2 -0
- package/dist/hooks/form/useStepsForm/index.d.mts.map +1 -0
- package/dist/hooks/form/useStepsForm/useStepsForm.d.cts +35 -0
- package/dist/hooks/form/useStepsForm/useStepsForm.d.cts.map +1 -0
- package/dist/hooks/form/useStepsForm/useStepsForm.d.mts +35 -0
- package/dist/hooks/form/useStepsForm/useStepsForm.d.mts.map +1 -0
- package/dist/hooks/form/useStepsForm/useStepsForm.d.ts +3 -3
- package/dist/hooks/form/useStepsForm/useStepsForm.d.ts.map +1 -1
- package/dist/hooks/import/index.d.cts +18 -0
- package/dist/hooks/import/index.d.cts.map +1 -0
- package/dist/hooks/import/index.d.mts +18 -0
- package/dist/hooks/import/index.d.mts.map +1 -0
- package/dist/hooks/import/index.d.ts.map +1 -1
- package/dist/hooks/index.d.cts +10 -0
- package/dist/hooks/index.d.cts.map +1 -0
- package/dist/hooks/index.d.mts +10 -0
- package/dist/hooks/index.d.mts.map +1 -0
- package/dist/hooks/list/index.d.cts +2 -0
- package/dist/hooks/list/index.d.cts.map +1 -0
- package/dist/hooks/list/index.d.mts +2 -0
- package/dist/hooks/list/index.d.mts.map +1 -0
- package/dist/hooks/list/useSimpleList/index.d.cts +2 -0
- package/dist/hooks/list/useSimpleList/index.d.cts.map +1 -0
- package/dist/hooks/list/useSimpleList/index.d.mts +2 -0
- package/dist/hooks/list/useSimpleList/index.d.mts.map +1 -0
- package/dist/hooks/list/useSimpleList/useSimpleList.d.cts +24 -0
- package/dist/hooks/list/useSimpleList/useSimpleList.d.cts.map +1 -0
- package/dist/hooks/list/useSimpleList/useSimpleList.d.mts +24 -0
- package/dist/hooks/list/useSimpleList/useSimpleList.d.mts.map +1 -0
- package/dist/hooks/list/useSimpleList/useSimpleList.d.ts +3 -3
- package/dist/hooks/list/useSimpleList/useSimpleList.d.ts.map +1 -1
- package/dist/hooks/modal/index.d.cts +2 -0
- package/dist/hooks/modal/index.d.cts.map +1 -0
- package/dist/hooks/modal/index.d.mts +2 -0
- package/dist/hooks/modal/index.d.mts.map +1 -0
- package/dist/hooks/modal/useModal/index.d.cts +18 -0
- package/dist/hooks/modal/useModal/index.d.cts.map +1 -0
- package/dist/hooks/modal/useModal/index.d.mts +18 -0
- package/dist/hooks/modal/useModal/index.d.mts.map +1 -0
- package/dist/hooks/modal/useModal/index.d.ts +2 -2
- package/dist/hooks/modal/useModal/index.d.ts.map +1 -1
- package/dist/hooks/table/index.d.cts +3 -0
- package/dist/hooks/table/index.d.cts.map +1 -0
- package/dist/hooks/table/index.d.mts +3 -0
- package/dist/hooks/table/index.d.mts.map +1 -0
- package/dist/hooks/table/useEditableTable/index.d.cts +2 -0
- package/dist/hooks/table/useEditableTable/index.d.cts.map +1 -0
- package/dist/hooks/table/useEditableTable/index.d.mts +2 -0
- package/dist/hooks/table/useEditableTable/index.d.mts.map +1 -0
- package/dist/hooks/table/useEditableTable/useEditableTable.d.cts +40 -0
- package/dist/hooks/table/useEditableTable/useEditableTable.d.cts.map +1 -0
- package/dist/hooks/table/useEditableTable/useEditableTable.d.mts +40 -0
- package/dist/hooks/table/useEditableTable/useEditableTable.d.mts.map +1 -0
- package/dist/hooks/table/useEditableTable/useEditableTable.d.ts +2 -2
- package/dist/hooks/table/useEditableTable/useEditableTable.d.ts.map +1 -1
- package/dist/hooks/table/useTable/index.d.cts +2 -0
- package/dist/hooks/table/useTable/index.d.cts.map +1 -0
- package/dist/hooks/table/useTable/index.d.mts +2 -0
- package/dist/hooks/table/useTable/index.d.mts.map +1 -0
- package/dist/hooks/table/useTable/paginationLink.d.cts +8 -0
- package/dist/hooks/table/useTable/paginationLink.d.cts.map +1 -0
- package/dist/hooks/table/useTable/paginationLink.d.mts +8 -0
- package/dist/hooks/table/useTable/paginationLink.d.mts.map +1 -0
- package/dist/hooks/table/useTable/useTable.d.cts +24 -0
- package/dist/hooks/table/useTable/useTable.d.cts.map +1 -0
- package/dist/hooks/table/useTable/useTable.d.mts +24 -0
- package/dist/hooks/table/useTable/useTable.d.mts.map +1 -0
- package/dist/hooks/table/useTable/useTable.d.ts +2 -2
- package/dist/hooks/table/useTable/useTable.d.ts.map +1 -1
- package/dist/hooks/useFileUploadState/index.d.cts +7 -0
- package/dist/hooks/useFileUploadState/index.d.cts.map +1 -0
- package/dist/hooks/useFileUploadState/index.d.mts +7 -0
- package/dist/hooks/useFileUploadState/index.d.mts.map +1 -0
- package/dist/hooks/useFileUploadState/index.d.ts +1 -1
- package/dist/hooks/useFileUploadState/index.d.ts.map +1 -1
- package/dist/hooks/useSiderVisible/index.d.cts +11 -0
- package/dist/hooks/useSiderVisible/index.d.cts.map +1 -0
- package/dist/hooks/useSiderVisible/index.d.mts +11 -0
- package/dist/hooks/useSiderVisible/index.d.mts.map +1 -0
- package/dist/hooks/useSiderVisible/index.d.ts +1 -1
- package/dist/hooks/useSiderVisible/index.d.ts.map +1 -1
- package/dist/hooks/useThemedLayoutContext/index.d.cts +4 -0
- package/dist/hooks/useThemedLayoutContext/index.d.cts.map +1 -0
- package/dist/hooks/useThemedLayoutContext/index.d.mts +4 -0
- package/dist/hooks/useThemedLayoutContext/index.d.mts.map +1 -0
- package/dist/hooks/useThemedLayoutContext/index.d.ts +1 -1
- package/dist/hooks/useThemedLayoutContext/index.d.ts.map +1 -1
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/interfaces/field.d.cts +4 -0
- package/dist/interfaces/field.d.cts.map +1 -0
- package/dist/interfaces/field.d.mts +4 -0
- package/dist/interfaces/field.d.mts.map +1 -0
- package/dist/interfaces/field.d.ts +1 -1
- package/dist/interfaces/field.d.ts.map +1 -1
- package/dist/interfaces/index.d.cts +19 -0
- package/dist/interfaces/index.d.cts.map +1 -0
- package/dist/interfaces/index.d.mts +19 -0
- package/dist/interfaces/index.d.mts.map +1 -0
- package/dist/interfaces/index.d.ts +3 -3
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/upload.d.cts +10 -0
- package/dist/interfaces/upload.d.cts.map +1 -0
- package/dist/interfaces/upload.d.mts +10 -0
- package/dist/interfaces/upload.d.mts.map +1 -0
- package/dist/providers/index.d.cts +2 -0
- package/dist/providers/index.d.cts.map +1 -0
- package/dist/providers/index.d.mts +2 -0
- package/dist/providers/index.d.mts.map +1 -0
- package/dist/providers/notificationProvider/index.d.cts +8 -0
- package/dist/providers/notificationProvider/index.d.cts.map +1 -0
- package/dist/providers/notificationProvider/index.d.mts +8 -0
- package/dist/providers/notificationProvider/index.d.mts.map +1 -0
- package/package.json +35 -17
- package/src/components/buttons/clone/index.tsx +16 -67
- package/src/components/buttons/create/index.tsx +17 -66
- package/src/components/buttons/delete/index.tsx +35 -90
- package/src/components/buttons/edit/index.tsx +15 -67
- package/src/components/buttons/export/index.tsx +3 -3
- package/src/components/buttons/import/index.tsx +5 -3
- package/src/components/buttons/list/index.tsx +14 -86
- package/src/components/buttons/refresh/index.tsx +8 -38
- package/src/components/buttons/save/index.tsx +3 -3
- package/src/components/buttons/show/index.tsx +15 -66
- package/src/components/pages/auth/components/forgotPassword/index.tsx +7 -1
- package/src/components/pages/auth/components/login/index.tsx +16 -2
- package/src/components/pages/auth/components/register/index.tsx +16 -2
- package/src/components/pages/auth/components/updatePassword/index.tsx +13 -1
- package/src/components/table/components/filterDropdown/index.tsx +2 -2
- package/src/definitions/table/index.ts +15 -3
- package/src/hooks/form/useForm.ts +3 -1
- package/src/hooks/table/useTable/useTable.ts +3 -7
- package/src/index.tsx +7 -7
- package/tsconfig.json +5 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +0 -1
- package/dist/iife/index.js +0 -72
- package/dist/iife/index.js.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
package/dist/iife/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../devtools-shared/src/index.ts","../../../devtools-shared/src/event-types.ts","../../../devtools-shared/src/scopes.ts","../../../devtools-shared/src/context.tsx","../../../devtools-shared/src/send.ts","../../../devtools-shared/src/receive.ts","../../../devtools-internal/src/index.ts","../../../devtools-internal/src/get-trace.ts","../../../devtools-internal/src/clean-stack.ts","../../../devtools-internal/src/constants.ts","../../../devtools-internal/src/is-refine-stack.ts","../../../devtools-internal/src/get-package-name-from-filename.ts","../../../devtools-internal/src/get-resource-path.ts","../../../devtools-internal/src/get-xray.ts","../../../devtools-internal/src/use-query-subscription.tsx","../../../devtools-internal/src/listeners.ts","../../../devtools-internal/src/create-identifier.ts","../../../core/src/index.tsx","../../../core/src/components/pages/error/index.tsx","../../../core/src/hooks/auth/usePermissions/index.ts","../../../core/src/definitions/table/index.ts","../../../core/src/definitions/helpers/userFriendlySeconds/index.ts","../../../core/src/definitions/helpers/importCSVMapper/index.ts","../../../core/src/definitions/helpers/userFriendlyResourceName/index.ts","../../../core/src/definitions/helpers/handleUseParams/index.tsx","../../../core/src/definitions/helpers/pickNotDeprecated/index.ts","../../../core/src/definitions/helpers/keys/index.ts","../../../core/src/definitions/helpers/queryKeys/index.ts","../../../core/src/definitions/helpers/hasPermission/index.ts","../../../core/src/definitions/helpers/router/is-parameter.ts","../../../core/src/definitions/helpers/router/split-to-segments.ts","../../../core/src/definitions/helpers/router/is-segment-counts-same.ts","../../../core/src/definitions/helpers/router/remove-leading-trailing-slashes.ts","../../../core/src/definitions/helpers/router/check-by-segments.ts","../../../core/src/definitions/helpers/router/get-default-action-path.ts","../../../core/src/definitions/helpers/router/get-parent-resource.ts","../../../core/src/definitions/helpers/router/get-parent-prefix-for-resource.ts","../../../core/src/definitions/helpers/router/get-action-routes-from-resource.ts","../../../core/src/definitions/helpers/router/pick-matched-route.ts","../../../core/src/definitions/helpers/router/match-resource-from-route.ts","../../../core/src/definitions/helpers/routeGenerator/index.ts","../../../core/src/definitions/helpers/treeView/createTreeView/index.ts","../../../core/src/definitions/helpers/humanizeString/index.ts","../../../core/src/contexts/refine/index.tsx","../../../core/src/components/layoutWrapper/defaultLayout/index.tsx","../../../core/src/definitions/helpers/handleRefineOptions/index.ts","../../../core/src/definitions/helpers/redirectPage/index.ts","../../../core/src/definitions/helpers/sequentialPromises/index.ts","../../../core/src/definitions/helpers/pick-resource/index.ts","../../../core/src/definitions/helpers/pickDataProvider/index.ts","../../../core/src/definitions/helpers/handleMultiple/index.ts","../../../core/src/definitions/helpers/useInfinitePagination/index.ts","../../../core/src/definitions/helpers/legacy-resource-transform/index.ts","../../../core/src/definitions/helpers/router/pick-route-params.ts","../../../core/src/definitions/helpers/router/prepare-route-params.ts","../../../core/src/definitions/helpers/router/compose-route.ts","../../../core/src/contexts/auth/index.tsx","../../../core/src/definitions/helpers/useActiveAuthProvider/index.ts","../../../core/src/definitions/helpers/handlePaginationParams/index.ts","../../../core/src/definitions/helpers/useMediaQuery/index.ts","../../../core/src/definitions/helpers/safe-translate/index.ts","../../../core/src/definitions/helpers/generateDocumentTitle/index.ts","../../../core/src/hooks/refine/useMutationMode.ts","../../../core/src/hooks/refine/useWarnAboutChange/index.ts","../../../core/src/contexts/unsavedWarn/index.tsx","../../../core/src/hooks/refine/useSyncWithLocation.ts","../../../core/src/hooks/refine/useTitle.tsx","../../../core/src/hooks/refine/useRefineContext.ts","../../../core/src/definitions/helpers/useUserFriendlyName/index.ts","../../../core/src/definitions/helpers/flatten-object-keys/index.ts","../../../core/src/definitions/helpers/property-path-to-array/index.ts","../../../core/src/definitions/helpers/downloadInBrowser/index.ts","../../../core/src/definitions/upload/file2Base64/index.ts","../../../core/src/hooks/useKeys/index.tsx","../../../core/src/hooks/auth/useGetIdentity/index.ts","../../../core/src/hooks/auth/useLogout/index.ts","../../../core/src/hooks/auth/useInvalidateAuthStore/index.ts","../../../core/src/hooks/auth/useLogin/index.ts","../../../core/src/hooks/auth/useRegister/index.ts","../../../core/src/hooks/auth/useForgotPassword/index.ts","../../../core/src/hooks/auth/useUpdatePassword/index.ts","../../../core/src/hooks/auth/useIsAuthenticated/index.ts","../../../core/src/hooks/auth/useOnError/index.ts","../../../core/src/hooks/auth/useIsExistAuthentication/index.ts","../../../core/src/hooks/data/useList.ts","../../../core/src/hooks/useLoadingOvertime/index.ts","../../../core/src/hooks/data/useOne.ts","../../../core/src/hooks/data/useMany.ts","../../../core/src/hooks/data/useUpdate.ts","../../../core/src/contexts/undoableQueue/undoableQueueContext.tsx","../../../core/src/hooks/data/useCreate.ts","../../../core/src/hooks/data/useDelete.ts","../../../core/src/hooks/data/useCreateMany.ts","../../../core/src/hooks/data/useUpdateMany.ts","../../../core/src/hooks/data/useDeleteMany.ts","../../../core/src/hooks/data/useApiUrl.ts","../../../core/src/hooks/data/useCustom.ts","../../../core/src/hooks/data/useCustomMutation.ts","../../../core/src/hooks/data/useDataProvider.tsx","../../../core/src/contexts/data/index.tsx","../../../core/src/hooks/data/useInfiniteList.ts","../../../core/src/contexts/live/index.tsx","../../../core/src/hooks/invalidate/index.tsx","../../../core/src/hooks/resource/useResource/index.ts","../../../core/src/contexts/resource/index.tsx","../../../core/src/hooks/deepMemo/index.tsx","../../../core/src/hooks/memoized/index.tsx","../../../core/src/contexts/router-picker/index.tsx","../../../core/src/hooks/router/use-parsed/index.tsx","../../../core/src/contexts/router/index.tsx","../../../core/src/hooks/router/use-parse/index.tsx","../../../core/src/hooks/resource/useResourceWithRoute/index.ts","../../../core/src/hooks/live/useResourceSubscription/index.ts","../../../core/src/hooks/live/useLiveMode/index.ts","../../../core/src/hooks/live/useSubscription/index.ts","../../../core/src/hooks/live/usePublish/index.ts","../../../core/src/hooks/notification/useCancelNotification/index.tsx","../../../core/src/hooks/notification/useNotification/index.ts","../../../core/src/contexts/notification/index.tsx","../../../core/src/hooks/notification/useHandleNotification/index.ts","../../../core/src/hooks/translate/useSetLocale.ts","../../../core/src/contexts/translation/index.tsx","../../../core/src/hooks/translate/useTranslate.ts","../../../core/src/hooks/translate/useGetLocale.ts","../../../core/src/hooks/export/index.ts","../../../core/src/hooks/form/useForm.ts","../../../core/src/hooks/redirection/index.ts","../../../core/src/hooks/router/use-go/index.tsx","../../../core/src/hooks/router/use-get-to-path/index.ts","../../../core/src/hooks/router/use-back/index.tsx","../../../core/src/hooks/navigation/index.ts","../../../core/src/hooks/show/useShow.ts","../../../core/src/hooks/import/index.tsx","../../../core/src/hooks/modal/useModal/index.tsx","../../../core/src/hooks/router/use-to-path/index.ts","../../../core/src/hooks/router/use-link/index.tsx","../../../core/src/hooks/legacy-router/useRouterContext.ts","../../../core/src/contexts/legacy-router/index.tsx","../../../core/src/hooks/accessControl/useCan/index.ts","../../../core/src/contexts/accessControl/index.tsx","../../../core/src/definitions/helpers/sanitize-resource/index.ts","../../../core/src/hooks/accessControl/useCanWithoutCache.ts","../../../core/src/hooks/useSelect/index.ts","../../../core/src/hooks/useTable/index.ts","../../../core/src/hooks/auditLog/useLog/index.ts","../../../core/src/contexts/auditLog/index.tsx","../../../core/src/hooks/auditLog/useLogList/index.ts","../../../core/src/hooks/breadcrumb/index.ts","../../../core/src/hooks/menu/useMenu.tsx","../../../core/src/definitions/helpers/menu/create-resource-key.ts","../../../core/src/definitions/helpers/menu/create-tree.ts","../../../core/src/hooks/useMeta/index.ts","../../../core/src/components/pages/login/index.tsx","../../../core/src/components/pages/auth/index.tsx","../../../core/src/components/pages/auth/components/login/index.tsx","../../../core/src/components/pages/auth/components/register/index.tsx","../../../core/src/components/pages/auth/components/forgotPassword/index.tsx","../../../core/src/components/pages/auth/components/updatePassword/index.tsx","../../../core/src/components/pages/ready/index.tsx","../../../core/src/components/pages/welcome/index.tsx","../../../core/src/components/pages/config-success/index.tsx","../../../core/src/components/pages/config-error/index.tsx","../../../core/src/components/containers/refine/index.tsx","../../../core/src/components/telemetry/index.tsx","../../../core/src/hooks/useTelemetryData/index.ts","../../../core/src/definitions/helpers/check-router-prop-misuse/index.ts","../../../core/src/hooks/router/use-router-misuse-warning/index.ts","../../../core/src/components/undoableQueue/index.tsx","../../../core/src/components/layoutWrapper/index.tsx","../../../core/src/components/authenticated/index.tsx","../../../core/src/components/routeChangeHandler/index.tsx","../../../core/src/components/canAccess/index.tsx","../../../core/src/components/gh-banner/index.tsx","../../../core/src/components/gh-banner/styles.ts","../../../core/src/components/autoSaveIndicator/index.tsx","../../../ui-types/src/index.tsx","../../../ui-types/src/ids.tsx","../../../ui-types/src/classNames.ts","../../src/hooks/form/useForm.ts","../../src/hooks/form/useModalForm/useModalForm.ts","../../src/hooks/modal/useModal/index.tsx","../../src/hooks/form/useDrawerForm/useDrawerForm.ts","../../src/hooks/form/useStepsForm/useStepsForm.ts","../../src/hooks/table/useTable/useTable.ts","../../src/definitions/table/index.ts","../../src/hooks/table/useTable/paginationLink.tsx","../../src/hooks/table/useEditableTable/useEditableTable.ts","../../src/hooks/fields/useSelect/index.ts","../../src/hooks/fields/useCheckboxGroup/index.ts","../../src/hooks/fields/useRadioGroup/index.ts","../../src/hooks/import/index.tsx","../../src/hooks/list/useSimpleList/useSimpleList.ts","../../src/hooks/useFileUploadState/index.ts","../../src/hooks/useSiderVisible/index.ts","../../src/contexts/themedLayoutContext/index.tsx","../../src/hooks/useThemedLayoutContext/index.ts","../../src/providers/notificationProvider/index.tsx","../../src/components/undoableNotification/index.tsx","../../src/components/layout/index.tsx","../../src/components/layout/sider/index.tsx","../../src/components/layout/sider/styles.ts","../../src/components/layout/header/index.tsx","../../src/components/layout/title/index.tsx","../../src/components/themedLayout/index.tsx","../../src/components/themedLayout/sider/index.tsx","../../src/components/themedLayout/sider/styles.ts","../../src/components/themedLayout/header/index.tsx","../../src/components/themedLayout/title/index.tsx","../../src/components/themedLayoutV2/index.tsx","../../src/components/themedLayoutV2/sider/index.tsx","../../src/components/themedLayoutV2/sider/styles.ts","../../src/components/themedLayoutV2/header/index.tsx","../../src/components/themedLayoutV2/title/index.tsx","../../src/components/buttons/create/index.tsx","../../src/components/buttons/edit/index.tsx","../../src/components/buttons/delete/index.tsx","../../src/components/buttons/refresh/index.tsx","../../src/components/buttons/show/index.tsx","../../src/components/buttons/list/index.tsx","../../src/components/buttons/export/index.tsx","../../src/components/buttons/save/index.tsx","../../src/components/buttons/clone/index.tsx","../../src/components/buttons/import/index.tsx","../../src/components/crud/list/index.tsx","../../src/components/crud/create/index.tsx","../../src/components/crud/edit/index.tsx","../../src/components/crud/show/index.tsx","../../src/components/fields/text/index.tsx","../../src/components/fields/tag/index.tsx","../../src/components/fields/email/index.tsx","../../src/components/fields/image/index.tsx","../../src/components/fields/boolean/index.tsx","../../src/components/fields/date/index.tsx","../../src/components/fields/file/index.tsx","../../src/components/fields/url/index.tsx","../../src/components/fields/number/index.tsx","../../src/components/fields/markdown/index.tsx","../../src/components/table/components/filterDropdown/index.tsx","../../src/components/pages/error/index.tsx","../../src/components/pages/login/index.tsx","../../src/components/pages/login/styles.ts","../../src/components/pages/ready/index.tsx","../../src/components/pages/welcome/index.tsx","../../src/components/pages/auth/index.tsx","../../src/components/pages/auth/components/login/index.tsx","../../src/components/pages/auth/components/styles.ts","../../src/components/pages/auth/components/register/index.tsx","../../src/components/pages/auth/components/forgotPassword/index.tsx","../../src/components/pages/auth/components/updatePassword/index.tsx","../../src/components/breadcrumb/index.tsx","../../src/components/pageHeader/index.tsx","../../src/components/autoSaveIndicator/index.tsx","../../src/definitions/upload/index.ts","../../src/definitions/themes/index.ts"],"sourcesContent":["export { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\nexport { TraceType } from \"./trace\";\nexport { Feed, FeedSection } from \"./feed\";\nexport {\n PackageType,\n PackageLatestVersionType,\n AvailablePackageType,\n} from \"./package\";\nexport { RefineHook, Scopes, hooksByScope, scopes } from \"./scopes\";\n\nexport { DevToolsContextProvider, DevToolsContext } from \"./context\";\n\nexport { send } from \"./send\";\nexport { receive } from \"./receive\";\n","import {\n Mutation,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryState,\n QueryStatus,\n} from \"@tanstack/react-query\";\nimport { TraceType } from \"./trace\";\n\nexport enum DevtoolsEvent {\n RELOAD = \"devtools:reload\",\n DEVTOOLS_INIT = \"devtools:init\",\n DEVTOOLS_HANDSHAKE = \"devtools:handshake\",\n DEVTOOLS_ALREADY_CONNECTED = \"devtools:already-connected\",\n ACTIVITY = \"devtools:send-activity\",\n DEVTOOLS_ACTIVITY_UPDATE = \"devtools:activity-update\",\n DEVTOOLS_CONNECTED_APP = \"devtools:connected-app\",\n DEVTOOLS_DISCONNECTED_APP = \"devtools:disconnected-app\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR = \"devtools:highlight-in-monitor\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION = \"devtools:highlight-in-monitor-action\",\n DEVTOOLS_LOGIN_SUCCESS = \"devtools:login-success\",\n DEVTOOLS_RELOAD_AFTER_LOGIN = \"devtools:reload-after-login\",\n}\n\ntype Timestamps = {\n createdAt: number;\n updatedAt: number;\n};\n\ntype ActivityPayload =\n | {\n type: \"mutation\";\n identifier: string;\n key?: MutationKey;\n status?: MutationStatus;\n trace?: TraceType[];\n state: Mutation<any, any, any, any>[\"state\"];\n variables?: Mutation<any, any, any, any>[\"state\"][\"variables\"];\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n }\n | {\n type: \"query\";\n identifier: string;\n key?: QueryKey;\n status?: QueryStatus;\n trace?: TraceType[];\n state: QueryState<any, any>;\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n };\n\nexport type DevtoolsEventPayloads = {\n [DevtoolsEvent.RELOAD]: {};\n [DevtoolsEvent.DEVTOOLS_INIT]: { url: string };\n [DevtoolsEvent.DEVTOOLS_HANDSHAKE]: { url: string };\n [DevtoolsEvent.DEVTOOLS_ALREADY_CONNECTED]: { url: string };\n [DevtoolsEvent.ACTIVITY]: ActivityPayload;\n [DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE]: {\n updatedActivities: (ActivityPayload & Timestamps)[];\n };\n [DevtoolsEvent.DEVTOOLS_CONNECTED_APP]: { url: string | null };\n [DevtoolsEvent.DEVTOOLS_DISCONNECTED_APP]: {};\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR]: { name: string };\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION]: { name: string };\n [DevtoolsEvent.DEVTOOLS_LOGIN_SUCCESS]: {};\n [DevtoolsEvent.DEVTOOLS_RELOAD_AFTER_LOGIN]: {};\n};\n","export type RefineHook =\n | \"useCan\"\n | \"useLog\"\n | \"useLogList\"\n | \"useCreate\"\n | \"useCreateMany\"\n | \"useCustom\"\n | \"useCustomMutation\"\n | \"useDelete\"\n | \"useDeleteMany\"\n | \"useInfiniteList\"\n | \"useList\"\n | \"useMany\"\n | \"useOne\"\n | \"useUpdate\"\n | \"useUpdateMany\"\n | \"useForgotPassword\"\n | \"useGetIdentity\"\n | \"useIsAuthenticated\"\n | \"useLogin\"\n | \"useLogout\"\n | \"useOnError\"\n | \"usePermissions\"\n | \"useRegister\"\n | \"useUpdatePassword\";\n\nexport type Scopes = \"data\" | \"audit-log\" | \"access-control\" | \"auth\";\n\nexport const scopes: Record<RefineHook, Scopes> = {\n useCan: \"access-control\",\n useLog: \"audit-log\",\n useLogList: \"audit-log\",\n useCreate: \"data\",\n useCreateMany: \"data\",\n useCustom: \"data\",\n useCustomMutation: \"data\",\n useDelete: \"data\",\n useDeleteMany: \"data\",\n useInfiniteList: \"data\",\n useList: \"data\",\n useMany: \"data\",\n useOne: \"data\",\n useUpdate: \"data\",\n useUpdateMany: \"data\",\n useForgotPassword: \"auth\",\n useGetIdentity: \"auth\",\n useIsAuthenticated: \"auth\",\n useLogin: \"auth\",\n useLogout: \"auth\",\n useOnError: \"auth\",\n usePermissions: \"auth\",\n useRegister: \"auth\",\n useUpdatePassword: \"auth\",\n};\n\nexport const hooksByScope = Object.entries(scopes).reduce(\n (acc, [hook, scope]) => {\n if (!acc[scope]) {\n acc[scope] = [];\n }\n\n acc[scope].push(hook as RefineHook);\n\n return acc;\n },\n {} as Record<Scopes, RefineHook[]>,\n);\n","import React from \"react\";\nimport { DevtoolsEvent } from \"./event-types\";\nimport { send } from \"./send\";\nimport { receive } from \"./receive\";\n\ntype DevToolsContextValue = {\n __devtools: boolean;\n port: number;\n url: string;\n secure: boolean;\n ws: WebSocket | null;\n devtoolsUrl?: string;\n};\n\nexport const DevToolsContext = React.createContext<DevToolsContextValue>({\n __devtools: false,\n port: 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n});\n\ntype Props = React.PropsWithChildren<\n Partial<Pick<DevToolsContextValue, \"port\" | \"__devtools\">>\n>;\n\nexport const DevToolsContextProvider: React.FC<Props> = ({\n __devtools,\n port,\n children,\n}) => {\n const [values, setValues] = React.useState<DevToolsContextValue>({\n __devtools: __devtools ?? false,\n port: port ?? 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n });\n\n const [ws, setWs] = React.useState<WebSocket | null>(null);\n\n React.useEffect(() => {\n const wsInstance = new WebSocket(\n `${values.secure ? \"wss\" : \"ws\"}://localhost:${values.port}`,\n );\n\n const unsubscribe = receive(\n wsInstance,\n DevtoolsEvent.DEVTOOLS_HANDSHAKE,\n (data) => {\n setValues((v) => ({\n ...v,\n devtoolsUrl: data.url,\n }));\n unsubscribe();\n },\n );\n\n wsInstance.addEventListener(\"open\", () => {\n if (!values.__devtools) {\n send(wsInstance, DevtoolsEvent.DEVTOOLS_INIT, {\n url: window.location.origin,\n });\n }\n });\n\n setWs(wsInstance);\n\n return () => {\n unsubscribe();\n\n wsInstance.close(1000, window.location.origin);\n };\n }, []);\n\n const contextValues = React.useMemo<DevToolsContextValue>(\n () => ({\n ...values,\n ws,\n }),\n [values, ws],\n );\n\n return (\n <DevToolsContext.Provider value={contextValues}>\n {children}\n </DevToolsContext.Provider>\n );\n};\n","import { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport async function send<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n payload: DevtoolsEventPayloads[T],\n) {\n // check if the socket is open\n // if not, wait for it to open\n if (ws.readyState !== ws.OPEN) {\n await new Promise<void>((resolve) => {\n const listener = () => {\n ws.send(JSON.stringify({ event, payload }));\n resolve();\n ws.removeEventListener(\"open\", listener);\n };\n\n ws.addEventListener(\"open\", listener);\n });\n return;\n }\n ws.send(JSON.stringify({ event, payload }));\n return;\n}\n","// receive ws message by adding a listener to the ws object\n\nimport { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport function receive<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n callback: (payload: DevtoolsEventPayloads[T]) => void,\n) {\n const listener = (e: MessageEvent) => {\n const { event: receivedEvent, payload } = JSON.parse(e.data);\n if (event === receivedEvent) {\n callback(payload);\n }\n };\n\n ws.addEventListener(\"message\", listener);\n\n return () => {\n ws.removeEventListener(\"message\", listener);\n };\n}\n","export { getTrace } from \"./get-trace\";\nexport { getXRay } from \"./get-xray\";\nexport { useQuerySubscription } from \"./use-query-subscription\";\n","import ErrorStackParser from \"error-stack-parser\";\nimport { cleanStack } from \"./clean-stack\";\nimport { isRefineStack } from \"./is-refine-stack\";\nimport { getPackageNameFromFilename } from \"./get-package-name-from-filename\";\nimport { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n }\n try {\n const error = new Error();\n const stack = ErrorStackParser.parse(error);\n const clean = cleanStack(stack);\n const traces = clean\n .map(\n (frame) =>\n ({\n file: frame.fileName,\n line: frame.lineNumber,\n column: frame.columnNumber,\n function: frame.functionName,\n isRefine: isRefineStack(frame.fileName),\n packageName: getPackageNameFromFilename(frame.fileName),\n }) as TraceType,\n )\n .filter((trace) => trace.function);\n return traces.slice(1);\n } catch (error) {\n return [];\n }\n}\n","import type { StackFrame } from \"error-stack-parser\";\n\nconst unrelatedFunctionName = \"renderWithHooks\";\n\nexport const cleanStack = (stack: StackFrame[]) => {\n const firstUnrelatedIndex = stack.findIndex(\n (frame) => frame.functionName === unrelatedFunctionName,\n );\n\n if (firstUnrelatedIndex !== -1) {\n return stack.slice(0, firstUnrelatedIndex);\n }\n\n return stack;\n};\n","export const REFINE_PACKAGE_FILEPATH_REGEXP =\n __DEV_CONDITION__ !== \"development\"\n ? /node_modules\\/refinedev\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const isRefineStack = (filename?: string) => {\n if (!filename) return false;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n return !!match;\n};\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const getPackageNameFromFilename = (filename?: string) => {\n if (!filename) return;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n const name = match?.groups?.name;\n\n if (!name) return;\n\n return `@refinedev/${name}`;\n};\n","import {\n DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"audit-log\") {\n if (hookName === \"useLog\") {\n return \"variables.resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"data\") {\n if (hookName === \"useCustom\" || hookName === \"useCustomMutation\") {\n return null;\n }\n switch (hookName) {\n case \"useList\":\n case \"useInfiniteList\":\n case \"useOne\":\n case \"useMany\":\n if (legacyKey) {\n return \"key[1]\";\n }\n return \"key[2]\";\n case \"useCreate\":\n case \"useCreateMany\":\n case \"useDelete\":\n case \"useDeleteMany\":\n case \"useUpdate\":\n case \"useUpdateMany\":\n return \"variables.resource\";\n }\n }\n return null;\n};\n","import { RefineHook, TraceType } from \"@refinedev/devtools-shared\";\nimport { getTrace } from \"./get-trace\";\nimport { getResourcePath } from \"./get-resource-path\";\n\nexport type XRayResponse = {\n hookName: string;\n trace: TraceType[];\n resourcePath: string | null;\n legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n }\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const queryCache = queryClient.getQueryCache();\n\n const queryListener = createQueryListener(ws);\n\n queryCache.getAll().forEach(queryListener);\n\n queryCacheSubscription.current = queryCache.subscribe(\n ({ query, type }) =>\n (type === \"added\" || type === \"updated\") && queryListener(query),\n );\n\n return () => {\n queryCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const mutationCache = queryClient.getMutationCache();\n\n const mutationListener = createMutationListener(ws);\n\n mutationCache.getAll().forEach(mutationListener);\n\n mutationCacheSubscription.current = mutationCache.subscribe(\n ({ mutation, type }) =>\n (type === \"added\" || type === \"updated\") &&\n mutationListener(mutation),\n );\n\n return () => {\n mutationCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { XRayResponse } from \"./get-xray\";\n\nexport const createMutationListener =\n (ws: WebSocket) => (mutation?: Mutation) => {\n if (!mutation?.meta?.trace) return;\n\n const meta: XRayResponse = mutation?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"mutation\",\n identifier: createIdentifier(\n mutation?.options.mutationKey,\n mutation?.meta?.trace as any,\n ),\n key: mutation?.options.mutationKey as any,\n status: mutation?.state.status,\n state: mutation?.state,\n variables: mutation?.state?.variables,\n ...meta,\n });\n resolve();\n });\n\n // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\n // });\n };\n\nexport const createQueryListener = (ws: WebSocket) => (query: Query) => {\n if (!query?.meta?.trace) return;\n\n const meta: XRayResponse = query?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"query\",\n identifier: createIdentifier(query.queryKey, query.meta?.trace as any),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n\n // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { MutationKey, QueryKey } from \"@tanstack/react-query\";\n\nexport const createIdentifier = (\n key?: QueryKey | MutationKey,\n trace?: TraceType[],\n) => {\n const simpleTrace = trace?.map(\n (t) =>\n `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${\n t.isRefine ? 1 : 0\n }`,\n );\n const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);\n\n return str;\n};\n","export * from \"./components\";\nexport * from \"./hooks\";\n\nexport {\n Action,\n ActionWithPage,\n AccessControlProvider,\n AuditLogProvider,\n LegacyAuthProvider,\n AuthBindings,\n AuthProvider,\n BaseKey,\n BaseRecord,\n CanParams,\n CanReturnType,\n ConditionalFilter,\n CreateManyResponse,\n CreateResponse,\n CrudFilter,\n CrudFilters,\n CrudOperators,\n CrudSort,\n CrudSorting,\n CustomResponse,\n DeleteManyResponse,\n DeleteOneResponse,\n FormAction,\n GetListResponse,\n GetManyResponse,\n GetOneResponse,\n HttpError,\n LayoutProps,\n LiveEvent,\n LiveModeProps,\n LogicalFilter,\n LogParams,\n MapDataFn,\n MetaQuery,\n MetaDataQuery,\n MutationMode,\n NotificationProvider,\n OpenNotificationParams,\n Option,\n BaseOption,\n Pagination,\n PromptProps,\n RedirectionTypes,\n RedirectAction,\n ResourceErrorRouterParams,\n ResourceProps,\n ResourceRouterParams,\n RouteAction,\n SortOrder,\n SuccessErrorNotification,\n TitleProps,\n TranslationProvider,\n UpdateManyResponse,\n UpdateResponse,\n I18nProvider,\n IAccessControlContext,\n ILegacyAuthContext,\n IDataContextProvider as DataProvider,\n ILiveContext as LiveProvider,\n ILog,\n ILogData,\n ILoginForm,\n INotificationContext,\n IResourceComponents,\n IResourceComponentsProps,\n IResourceContext as ResourceProvider,\n ITranslationContext,\n IResourceItem,\n IRouterProvider,\n ITreeMenu,\n IQueryKeys,\n AccessControlBindings,\n DataBindings,\n i18nBindings,\n LiveBindings,\n NotificationsBindings,\n ResourceBindings,\n RouterBindings,\n ParseResponse,\n ParsedParams,\n GoConfig,\n BackFunction,\n GoFunction,\n ParseFunction,\n Prettify,\n FormWithSyncWithLocationParams,\n AutoSaveIndicatorProps,\n AutoSaveProps,\n GetListParams,\n GetManyParams,\n GetOneParams,\n CreateParams,\n CreateManyParams,\n UpdateParams,\n UpdateManyParams,\n DeleteOneParams,\n DeleteManyParams,\n CustomParams,\n} from \"./interfaces\";\n\n// all auth types\nexport * from \"./interfaces/auth\";\n\nexport {\n getDefaultFilter,\n getDefaultSortOrder,\n parseTableParams,\n parseTableParamsFromQuery,\n setInitialFilters,\n setInitialSorters,\n stringifyTableParams,\n unionFilters,\n unionSorters,\n} from \"./definitions/table\";\nexport {\n createTreeView,\n handleUseParams,\n importCSVMapper,\n routeGenerator,\n userFriendlyResourceName,\n getNextPageParam,\n getPreviousPageParam,\n pickNotDeprecated,\n legacyResourceTransform,\n matchResourceFromRoute,\n useActiveAuthProvider,\n useUserFriendlyName,\n queryKeys,\n pickDataProvider,\n keys,\n KeyBuilder,\n flattenObjectKeys,\n propertyPathToArray,\n} from \"./definitions/helpers\";\nexport { file2Base64 } from \"./definitions/upload\";\nexport { generateDefaultDocumentTitle } from \"./definitions\";\n\nexport { ResourceContext } from \"./contexts/resource/index\";\nexport { TranslationContext } from \"./contexts/translation/index\";\nexport { AccessControlContext } from \"./contexts/accessControl/index\";\n","import React, { useEffect, useState } from \"react\";\n\nimport {\n useNavigation,\n useTranslate,\n useResource,\n useGo,\n useRouterType,\n} from \"@hooks\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC = () => {\n const [errorMessage, setErrorMessage] = useState<string>();\n const translate = useTranslate();\n const { push } = useNavigation();\n const go = useGo();\n const routerType = useRouterType();\n\n const { resource, action } = useResource();\n\n useEffect(() => {\n if (resource && action) {\n setErrorMessage(\n translate(\n \"pages.error.info\",\n {\n action: action,\n resource: resource.name,\n },\n `You may have forgotten to add the \"${action}\" component to \"${resource.name}\" resource.`,\n ),\n );\n }\n }, [resource, action]);\n\n return (\n <>\n <h1>\n {translate(\n \"pages.error.404\",\n undefined,\n \"Sorry, the page you visited does not exist.\",\n )}\n </h1>\n {errorMessage && <p>{errorMessage}</p>}\n <button\n onClick={() => {\n if (routerType === \"legacy\") {\n push(\"/\");\n } else {\n go({ to: \"/\" });\n }\n }}\n >\n {translate(\"pages.error.backHome\", undefined, \"Back Home\")}\n </button>\n </>\n );\n};\n","import {\n useQuery,\n UseQueryResult,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { PermissionResponse } from \"../../../interfaces\";\n\nexport type UsePermissionsLegacyProps<\n TData = any,\n TParams extends Record<string, any> = Record<string, any>,\n> = {\n v3LegacyAuthProviderCompatible: true;\n options?: UseQueryOptions<TData>;\n params?: TParams;\n};\n\nexport type UsePermissionsProps<\n TData = PermissionResponse,\n TParams extends Record<string, any> = Record<string, any>,\n> = {\n v3LegacyAuthProviderCompatible?: false;\n options?: UseQueryOptions<TData>;\n params?: TParams;\n};\n\nexport type UsePermissionsCombinedProps<\n TData = any,\n TParams extends Record<string, any> = Record<string, any>,\n> = {\n v3LegacyAuthProviderCompatible: boolean;\n options?: UseQueryOptions<TData> | UseQueryOptions<PermissionResponse>;\n params?: TParams;\n};\n\nexport type UsePermissionsLegacyReturnType<TData = any> = UseQueryResult<\n TData,\n unknown\n>;\n\nexport type UsePermissionsReturnType<TData = PermissionResponse> =\n UseQueryResult<TData, unknown>;\n\nexport type UsePermissionsCombinedReturnType<TData = any> =\n | UseQueryResult<TData, unknown>\n | UseQueryResult<PermissionResponse, unknown>;\n\nexport function usePermissions<\n TData = any,\n TParams extends Record<string, any> = Record<string, any>,\n>(\n props: UsePermissionsLegacyProps<TData, TParams>,\n): UsePermissionsLegacyReturnType<TData>;\n\nexport function usePermissions<\n TData = PermissionResponse,\n TParams extends Record<string, any> = Record<string, any>,\n>(props?: UsePermissionsProps<TData, TParams>): UsePermissionsReturnType<TData>;\n\nexport function usePermissions<\n TData = any,\n TParams extends Record<string, any> = Record<string, any>,\n>(\n props?: UsePermissionsCombinedProps<TData, TParams>,\n): UsePermissionsCombinedReturnType<TData>;\n\n/**\n * `usePermissions` calls the `getPermissions` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/usePermissions} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n * @typeParam TParams - Params will be passed to the `getPermissions` method of {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`}.\n *\n */\nexport function usePermissions<\n TData = any,\n TParams extends Record<string, any> = Record<string, any>,\n>({\n v3LegacyAuthProviderCompatible = false,\n options,\n params,\n}:\n | UsePermissionsProps<TData, TParams>\n | UsePermissionsLegacyProps<TData, TParams> = {}):\n | UsePermissionsReturnType\n | UsePermissionsLegacyReturnType<TData> {\n const { getPermissions: legacyGetPermission } = useLegacyAuthContext();\n const { getPermissions } = useAuthBindingsContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const queryResponse = useQuery<TData>({\n queryKey: keys().auth().action(\"permissions\").get(preferLegacyKeys),\n // Enabled check for `getPermissions` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n queryFn: (getPermissions\n ? () => getPermissions(params)\n : () => Promise.resolve(undefined)) as (\n params?: unknown,\n ) => Promise<TData>,\n enabled: !v3LegacyAuthProviderCompatible && !!getPermissions,\n ...(v3LegacyAuthProviderCompatible ? {} : options),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? {} : options?.meta),\n ...getXRay(\"usePermissions\", preferLegacyKeys),\n },\n });\n\n const legacyQueryResponse = useQuery<TData>({\n queryKey: [\n ...keys().auth().action(\"permissions\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n // Enabled check for `getPermissions` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n queryFn: (legacyGetPermission\n ? () => legacyGetPermission(params)\n : () => Promise.resolve(undefined)) as (\n params?: unknown,\n ) => Promise<TData>,\n enabled: v3LegacyAuthProviderCompatible && !!legacyGetPermission,\n ...(v3LegacyAuthProviderCompatible ? options : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? options?.meta : {}),\n ...getXRay(\"usePermissions\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n","import qs, { IStringifyOptions } from \"qs\";\nimport unionWith from \"lodash/unionWith\";\nimport differenceWith from \"lodash/differenceWith\";\nimport warnOnce from \"warn-once\";\n\nimport {\n CrudFilters,\n CrudSorting,\n CrudFilter,\n CrudSort,\n CrudOperators,\n SortOrder,\n} from \"../../interfaces\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\n\nexport const parseTableParams = (url: string) => {\n const { current, pageSize, sorter, sorters, filters } = qs.parse(\n url.substring(1), // remove first ? character\n );\n\n return {\n parsedCurrent: current && Number(current),\n parsedPageSize: pageSize && Number(pageSize),\n parsedSorter: (pickNotDeprecated(sorters, sorter) as CrudSorting) ?? [],\n parsedFilters: (filters as CrudFilters) ?? [],\n };\n};\n\nexport const parseTableParamsFromQuery = (params: any) => {\n const url = qs.stringify(params);\n return parseTableParams(`/${url}`);\n};\n\n/**\n * @internal This function is used to stringify table params from the useTable hook.\n */\nexport const stringifyTableParams = (params: {\n pagination?: { current?: number; pageSize?: number };\n sorters: CrudSorting;\n filters: CrudFilters;\n [key: string]: any;\n}): string => {\n const options: IStringifyOptions = {\n skipNulls: true,\n arrayFormat: \"indices\",\n encode: false,\n };\n const { pagination, sorter, sorters, filters, ...rest } = params;\n\n const queryString = qs.stringify(\n {\n ...rest,\n ...(pagination ? pagination : {}),\n sorters: pickNotDeprecated(sorters, sorter),\n filters,\n },\n options,\n );\n\n return queryString;\n};\n\nexport const compareFilters = (\n left: CrudFilter,\n right: CrudFilter,\n): boolean => {\n if (\n left.operator !== \"and\" &&\n left.operator !== \"or\" &&\n right.operator !== \"and\" &&\n right.operator !== \"or\"\n ) {\n return (\n (\"field\" in left ? left.field : undefined) ===\n (\"field\" in right ? right.field : undefined) &&\n left.operator === right.operator\n );\n }\n\n return (\n (\"key\" in left ? left.key : undefined) ===\n (\"key\" in right ? right.key : undefined) &&\n left.operator === right.operator\n );\n};\n\nexport const compareSorters = (left: CrudSort, right: CrudSort): boolean =>\n left.field === right.field;\n// Keep only one CrudFilter per type according to compareFilters\n// Items in the array that is passed first to unionWith have higher priority\n// CrudFilter items with undefined values are necessary to signify no filter\n// After union, don't keep CrudFilter items with undefined value in the result\n// Items in the arrays with higher priority are put at the end.\nexport const unionFilters = (\n permanentFilter: CrudFilters,\n newFilters: CrudFilters,\n prevFilters: CrudFilters = [],\n): CrudFilters => {\n const isKeyRequired = newFilters.filter(\n (f) => (f.operator === \"or\" || f.operator === \"and\") && !f.key,\n );\n\n if (isKeyRequired.length > 1) {\n warnOnce(\n true,\n \"[conditionalFilters]: You have created multiple Conditional Filters at the top level, this requires the key parameter. \\nFor more information, see https://refine.dev/docs/advanced-tutorials/data-provider/handling-filters/#top-level-multiple-conditional-filters-usage\",\n );\n }\n\n return unionWith(\n permanentFilter,\n newFilters,\n prevFilters,\n compareFilters,\n ).filter(\n (crudFilter) =>\n crudFilter.value !== undefined &&\n crudFilter.value !== null &&\n (crudFilter.operator !== \"or\" ||\n (crudFilter.operator === \"or\" && crudFilter.value.length !== 0)) &&\n (crudFilter.operator !== \"and\" ||\n (crudFilter.operator === \"and\" && crudFilter.value.length !== 0)),\n );\n};\n\nexport const unionSorters = (\n permanentSorter: CrudSorting,\n newSorters: CrudSorting,\n): CrudSorting =>\n unionWith(permanentSorter, newSorters, compareSorters).filter(\n (crudSorter) => crudSorter.order !== undefined && crudSorter.order !== null,\n );\n// Prioritize filters in the permanentFilter and put it at the end of result array\nexport const setInitialFilters = (\n permanentFilter: CrudFilters,\n defaultFilter: CrudFilters,\n): CrudFilters => [\n ...differenceWith(defaultFilter, permanentFilter, compareFilters),\n ...permanentFilter,\n];\n\nexport const setInitialSorters = (\n permanentSorter: CrudSorting,\n defaultSorter: CrudSorting,\n): CrudSorting => [\n ...differenceWith(defaultSorter, permanentSorter, compareSorters),\n ...permanentSorter,\n];\n\nexport const getDefaultSortOrder = (\n columnName: string,\n sorter?: CrudSorting,\n): SortOrder | undefined => {\n if (!sorter) {\n return undefined;\n }\n\n const sortItem = sorter.find((item) => item.field === columnName);\n\n if (sortItem) {\n return sortItem.order as SortOrder;\n }\n\n return undefined;\n};\n\nexport const getDefaultFilter = (\n columnName: string,\n filters?: CrudFilters,\n operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n const filter = filters?.find((filter) => {\n if (\n filter.operator !== \"or\" &&\n filter.operator !== \"and\" &&\n \"field\" in filter\n ) {\n const { operator, field } = filter;\n return field === columnName && operator === operatorType;\n }\n return undefined;\n });\n\n if (filter) {\n return filter.value || [];\n }\n\n return undefined;\n};\n","export const userFriendlySecond = (miliseconds: number): number => {\n return miliseconds / 1000; //convert to seconds\n};\n","import zip from \"lodash/zip\";\nimport fromPairs from \"lodash/fromPairs\";\nimport { MapDataFn } from \"../../../interfaces\";\n\nexport const importCSVMapper = <TItem = any, TVariables = any>(\n data: any[][],\n mapData: MapDataFn<TItem, TVariables> = (item) => item as any,\n): TVariables[] => {\n const [headers, ...body] = data;\n return body\n .map((entry) => fromPairs(zip(headers, entry)))\n .map((item: any, index, array: any) =>\n mapData.call(undefined, item, index, array),\n );\n};\n","import pluralize from \"pluralize\";\nimport { humanizeString } from \"@definitions\";\n\n/**\n * A method that the internal uses\n * @internal\n * @deprecated use `useUserFriendlyName` instead.\n */\nexport const userFriendlyResourceName = (\n resource = \"\",\n type: \"singular\" | \"plural\",\n): string => {\n const humanizeResource = humanizeString(resource);\n if (type === \"singular\") {\n return pluralize.singular(humanizeResource);\n }\n return pluralize.plural(humanizeResource);\n};\n","export const handleUseParams = (params: any = {}): any => {\n if (params?.id) {\n return {\n ...params,\n id: decodeURIComponent(params.id),\n };\n }\n return params;\n};\n","/*\n * Returns first value that is not undefined.\n * @internal This is an internal helper function. Please do not use externally.\n */\nexport const pickNotDeprecated = <T extends unknown[]>(\n ...args: T\n): T[never] => {\n return args.find((arg) => typeof arg !== \"undefined\");\n};\n","import { BaseKey } from \"src/interfaces\";\n\ntype ParametrizedDataActions = \"list\" | \"infinite\";\ntype IdRequiredDataActions = \"one\";\ntype IdsRequiredDataActions = \"many\";\ntype DataMutationActions =\n | \"custom\"\n | \"customMutation\"\n | \"create\"\n | \"createMany\"\n | \"update\"\n | \"updateMany\"\n | \"delete\"\n | \"deleteMany\";\n\ntype AuthActionType =\n | \"login\"\n | \"logout\"\n | \"identity\"\n | \"register\"\n | \"forgotPassword\"\n | \"check\"\n | \"onError\"\n | \"permissions\"\n | \"updatePassword\";\n\ntype AuditActionType = \"list\" | \"log\" | \"rename\";\n\ntype IdType = BaseKey;\ntype IdsType = IdType[];\n\ntype ParamsType = any;\n\ntype KeySegment = string | IdType | IdsType | ParamsType;\n\nexport function arrayFindIndex<T>(array: T[], slice: T[]): number {\n return array.findIndex(\n (item, index) =>\n index <= array.length - slice.length &&\n slice.every(\n (sliceItem, sliceIndex) => array[index + sliceIndex] === sliceItem,\n ),\n );\n}\n\nexport function arrayReplace<T>(\n array: T[],\n partToBeReplaced: T[],\n newPart: T[],\n): T[] {\n const newArray: T[] = [...array];\n const startIndex = arrayFindIndex(array, partToBeReplaced);\n\n if (startIndex !== -1) {\n newArray.splice(startIndex, partToBeReplaced.length, ...newPart);\n }\n\n return newArray;\n}\n\nexport function stripUndefined(segments: KeySegment[]) {\n return segments.filter((segment) => segment !== undefined);\n}\n\nfunction convertToLegacy(segments: KeySegment[]) {\n // for `list`, `many` and `one`\n if (segments[0] === \"data\") {\n // [data, dpName, resource, action, ...];\n const newSegments = segments.slice(1);\n\n if (newSegments[2] === \"many\") {\n newSegments[2] = \"getMany\";\n } else if (newSegments[2] === \"infinite\") {\n newSegments[2] = \"list\";\n } else if (newSegments[2] === \"one\") {\n newSegments[2] = \"detail\";\n } else if (newSegments[1] === \"custom\") {\n const newParams = {\n ...newSegments[2],\n };\n delete newParams.method;\n delete newParams.url;\n\n return [\n newSegments[0],\n newSegments[1],\n newSegments[2].method,\n newSegments[2].url,\n newParams,\n ];\n }\n\n return newSegments;\n }\n // for `audit` -> `logList`\n if (segments[0] === \"audit\") {\n // [audit, resource, action, params] (for log and list)\n // or\n // [audit, action, params] (for rename)\n if (segments[2] === \"list\") {\n return [\"logList\", segments[1], segments[3]];\n }\n }\n // for `access` -> `useCan`\n if (segments[0] === \"access\") {\n // [access, resource, action, params]\n if (segments.length === 4) {\n return [\n \"useCan\",\n {\n resource: segments[1],\n action: segments[2],\n ...segments[3], // params: { params, enabled }\n },\n ];\n }\n }\n // for `auth`\n if (segments[0] === \"auth\") {\n if (arrayFindIndex(segments, [\"auth\", \"login\"]) !== -1) {\n return [\"useLogin\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"logout\"]) !== -1) {\n return [\"useLogout\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"identity\"]) !== -1) {\n return [\"getUserIdentity\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"register\"]) !== -1) {\n return [\"useRegister\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"forgotPassword\"]) !== -1) {\n return [\"useForgotPassword\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"check\"]) !== -1) {\n return [\"useAuthenticated\", segments[2]]; // [auth, check, params]\n }\n if (arrayFindIndex(segments, [\"auth\", \"onError\"]) !== -1) {\n return [\"useCheckError\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"permissions\"]) !== -1) {\n return [\"usePermissions\"];\n }\n if (arrayFindIndex(segments, [\"auth\", \"updatePassword\"]) !== -1) {\n return [\"useUpdatePassword\"];\n }\n }\n return segments;\n}\n\nclass BaseKeyBuilder {\n segments: KeySegment[] = [];\n\n constructor(segments: KeySegment[] = []) {\n this.segments = segments;\n }\n\n key() {\n return this.segments;\n }\n\n legacy() {\n return convertToLegacy(this.segments);\n }\n\n get(legacy?: boolean) {\n return legacy ? this.legacy() : this.segments;\n }\n}\n\nclass ParamsKeyBuilder extends BaseKeyBuilder {\n params(paramsValue?: ParamsType) {\n return new BaseKeyBuilder([...this.segments, paramsValue]);\n }\n}\n\nclass DataIdRequiringKeyBuilder extends BaseKeyBuilder {\n id(idValue?: IdType) {\n return new ParamsKeyBuilder([\n ...this.segments,\n idValue ? String(idValue) : undefined,\n ]);\n }\n}\n\nclass DataIdsRequiringKeyBuilder extends BaseKeyBuilder {\n ids(...idsValue: IdsType) {\n return new ParamsKeyBuilder([\n ...this.segments,\n ...(idsValue.length ? [idsValue.map((el) => String(el))] : []),\n ]);\n }\n}\n\nclass DataResourceKeyBuilder extends BaseKeyBuilder {\n action(actionType: ParametrizedDataActions): ParamsKeyBuilder;\n action(actionType: IdRequiredDataActions): DataIdRequiringKeyBuilder;\n action(actionType: IdsRequiredDataActions): DataIdsRequiringKeyBuilder;\n action(\n actionType:\n | ParametrizedDataActions\n | IdRequiredDataActions\n | IdsRequiredDataActions,\n ): ParamsKeyBuilder | DataIdRequiringKeyBuilder | DataIdsRequiringKeyBuilder {\n if (actionType === \"one\") {\n return new DataIdRequiringKeyBuilder([...this.segments, actionType]);\n }\n if (actionType === \"many\") {\n return new DataIdsRequiringKeyBuilder([...this.segments, actionType]);\n }\n if ([\"list\", \"infinite\"].includes(actionType)) {\n return new ParamsKeyBuilder([...this.segments, actionType]);\n }\n throw new Error(\"Invalid action type\");\n }\n}\n\nclass DataKeyBuilder extends BaseKeyBuilder {\n resource(resourceName?: string) {\n return new DataResourceKeyBuilder([...this.segments, resourceName]);\n }\n\n mutation(mutationName: DataMutationActions) {\n return new ParamsKeyBuilder([\n ...(mutationName === \"custom\" ? this.segments : [this.segments[0]]),\n mutationName,\n ]);\n }\n}\n\nclass AuthKeyBuilder extends BaseKeyBuilder {\n action(actionType: AuthActionType) {\n return new ParamsKeyBuilder([...this.segments, actionType]);\n }\n}\n\nclass AccessResourceKeyBuilder extends BaseKeyBuilder {\n action(resourceName: string) {\n return new ParamsKeyBuilder([...this.segments, resourceName]);\n }\n}\n\nclass AccessKeyBuilder extends BaseKeyBuilder {\n resource(resourceName?: string) {\n return new AccessResourceKeyBuilder([...this.segments, resourceName]);\n }\n}\n\nclass AuditActionKeyBuilder extends BaseKeyBuilder {\n action(actionType: Extract<AuditActionType, \"list\">) {\n return new ParamsKeyBuilder([...this.segments, actionType]);\n }\n}\n\nclass AuditKeyBuilder extends BaseKeyBuilder {\n resource(resourceName?: string) {\n return new AuditActionKeyBuilder([...this.segments, resourceName]);\n }\n\n action(actionType: Extract<AuditActionType, \"rename\" | \"log\">) {\n return new ParamsKeyBuilder([...this.segments, actionType]);\n }\n}\n\nexport class KeyBuilder extends BaseKeyBuilder {\n data(name?: string) {\n return new DataKeyBuilder([\"data\", name || \"default\"]);\n }\n\n auth() {\n return new AuthKeyBuilder([\"auth\"]);\n }\n\n access() {\n return new AccessKeyBuilder([\"access\"]);\n }\n\n audit() {\n return new AuditKeyBuilder([\"audit\"]);\n }\n}\n\nexport const keys = () => new KeyBuilder([]);\n","import { IQueryKeys } from \"src/interfaces\";\nimport { QueryKey } from \"@tanstack/react-query\";\n\nimport { MetaQuery } from \"src/interfaces\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\nimport { keys as newKeys } from \"../keys\";\n\n/**\n * @deprecated `queryKeys` is deprecated. Please use `keys` instead.\n */\nexport const queryKeys = (\n resource?: string,\n dataProviderName?: string,\n meta?: MetaQuery,\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery | undefined,\n): IQueryKeys => {\n const providerName = dataProviderName || \"default\";\n const keys: IQueryKeys = {\n all: [providerName],\n resourceAll: [providerName, resource || \"\"],\n list: (config) => [\n ...keys.resourceAll,\n \"list\",\n {\n ...config,\n ...(pickNotDeprecated(meta, metaData) || {}),\n } as QueryKey,\n ],\n many: (ids) =>\n [\n ...keys.resourceAll,\n \"getMany\",\n ids?.map(String) as QueryKey,\n { ...(pickNotDeprecated(meta, metaData) || {}) } as QueryKey,\n ].filter((item) => item !== undefined),\n detail: (id) => [\n ...keys.resourceAll,\n \"detail\",\n id?.toString(),\n { ...(pickNotDeprecated(meta, metaData) || {}) } as QueryKey,\n ],\n logList: (meta) =>\n [\"logList\", resource, meta as any, metaData as QueryKey].filter(\n (item) => item !== undefined,\n ),\n };\n return keys;\n};\n\nexport const queryKeysReplacement = (preferLegacyKeys?: boolean) => {\n return (\n resource?: string,\n dataProviderName?: string,\n meta?: MetaQuery,\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery | undefined,\n ): IQueryKeys => {\n const providerName = dataProviderName || \"default\";\n\n const keys: IQueryKeys = {\n all: newKeys().data(providerName).get(preferLegacyKeys),\n resourceAll: newKeys()\n .data(dataProviderName)\n .resource(resource ?? \"\")\n .get(preferLegacyKeys),\n list: (config) =>\n newKeys()\n .data(dataProviderName)\n .resource(resource ?? \"\")\n .action(\"list\")\n .params({\n ...config,\n ...(pickNotDeprecated(meta, metaData) || {}),\n })\n .get(preferLegacyKeys),\n many: (ids) =>\n newKeys()\n .data(dataProviderName)\n .resource(resource ?? \"\")\n .action(\"many\")\n .ids(...(ids ?? []))\n .params({\n ...(pickNotDeprecated(meta, metaData) || {}),\n })\n .get(preferLegacyKeys),\n detail: (id) =>\n newKeys()\n .data(dataProviderName)\n .resource(resource ?? \"\")\n .action(\"one\")\n .id(id ?? \"\")\n .params({\n ...(pickNotDeprecated(meta, metaData) || {}),\n })\n .get(preferLegacyKeys),\n logList: (meta) =>\n [\n ...newKeys()\n .audit()\n .resource(resource)\n .action(\"list\")\n .params(meta)\n .get(preferLegacyKeys),\n metaData as QueryKey,\n ].filter((item) => item !== undefined),\n };\n\n return keys;\n };\n};\n","export const hasPermission = (\n permissions: string[] | undefined,\n action: string | undefined,\n): boolean => {\n if (!permissions || !action) {\n return false;\n }\n return !!permissions.find((i) => i === action);\n};\n","/**\n * Check if a segment is a parameter. (e.g. :id)\n */\nexport const isParameter = (segment: string) => {\n return segment.startsWith(\":\");\n};\n","/**\n * Split a path to segments.\n */\nexport const splitToSegments = (path: string) => {\n const segments = path.split(\"/\").filter((segment) => segment !== \"\");\n return segments;\n};\n","import { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Checks if the both routes have the same number of segments.\n */\nexport const isSegmentCountsSame = (route: string, resourceRoute: string) => {\n const routeSegments = splitToSegments(route);\n const resourceRouteSegments = splitToSegments(resourceRoute);\n\n return routeSegments.length === resourceRouteSegments.length;\n};\n","/**\n * Remove leading and trailing slashes from a route.\n */\nexport const removeLeadingTrailingSlashes = (route: string) => {\n return route.replace(/^\\/|\\/$/g, \"\");\n};\n","import { isParameter } from \"./is-parameter\";\nimport { isSegmentCountsSame } from \"./is-segment-counts-same\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * This function if the route and resourceRoute match by segments.\n * - First, trailing and leading slashes are removed\n * - Then, the route and resourceRoute are split to segments and checked if they have the same number of segments\n * - Then, each segment is checked if it is a parameter or if it matches the resourceRoute segment\n * - If all segments match, the function returns true, otherwise false\n */\nexport const checkBySegments = (route: string, resourceRoute: string) => {\n const stdRoute = removeLeadingTrailingSlashes(route);\n const stdResourceRoute = removeLeadingTrailingSlashes(resourceRoute);\n // we need to check if the route and resourceRoute have the same number of segments\n // if not, we can't match them\n if (!isSegmentCountsSame(stdRoute, stdResourceRoute)) {\n return false;\n }\n\n const routeSegments = splitToSegments(stdRoute);\n const resourceRouteSegments = splitToSegments(stdResourceRoute);\n\n return resourceRouteSegments.every((segment, index) => {\n return isParameter(segment) || segment === routeSegments[index];\n });\n};\n","import { Action } from \"src/interfaces\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\n\n/**\n * This helper function returns the default path for a given action and resource.\n * It also applies the parentPrefix if provided.\n * This is used by the legacy router and the new router if the resource doesn't provide a custom path.\n */\nexport const getDefaultActionPath = (\n resourceName: string,\n action: Action,\n parentPrefix?: string,\n): string => {\n const cleanParentPrefix = removeLeadingTrailingSlashes(parentPrefix || \"\");\n\n let path = `${cleanParentPrefix}${\n cleanParentPrefix ? \"/\" : \"\"\n }${resourceName}`;\n\n if (action === \"list\") {\n path = `${path}`;\n } else if (action === \"create\") {\n path = `${path}/create`;\n } else if (action === \"edit\") {\n path = `${path}/edit/:id`;\n } else if (action === \"show\") {\n path = `${path}/show/:id`;\n } else if (action === \"clone\") {\n path = `${path}/clone/:id`;\n }\n\n return `/${path.replace(/^\\//, \"\")}`;\n};\n","import { IResourceItem } from \"src/interfaces\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * Returns the parent resource of the given resource.\n * Works both with the deprecated `parentName` and the new `parent` property.\n */\nexport const getParentResource = (\n resource: IResourceItem,\n resources: IResourceItem[],\n): IResourceItem | undefined => {\n const parentName = pickNotDeprecated(\n resource.meta?.parent,\n resource.options?.parent,\n resource.parentName,\n );\n\n if (!parentName) {\n return undefined;\n }\n\n const parentResource = resources.find(\n (resource) => (resource.identifier ?? resource.name) === parentName,\n );\n\n /**\n * If the parent resource is not found, we return a resource object with the name of the parent resource.\n * Because we still want to have nesting and prefixing for the resource even if the parent is not explicitly defined.\n */\n return parentResource ?? { name: parentName };\n};\n","import { ResourceProps } from \"src/interfaces/bindings/resource\";\nimport { getParentResource } from \"./get-parent-resource\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\n\n/**\n * Returns the parent prefix for a resource\n * - If `legacy` is provided, the computation is based on the `route` option of the resource\n */\nexport const getParentPrefixForResource = (\n resource: ResourceProps,\n resources: ResourceProps[],\n /**\n * Uses legacy route if true (`options.route`)\n */\n legacy?: boolean,\n): string | undefined => {\n const parents: ResourceProps[] = [];\n\n let parent = getParentResource(resource, resources);\n\n while (parent) {\n parents.push(parent);\n parent = getParentResource(parent, resources);\n }\n\n if (parents.length === 0) {\n return undefined;\n }\n\n return `/${parents\n .reverse()\n .map((parent) => {\n const v = legacy ? parent.options?.route ?? parent.name : parent.name;\n return removeLeadingTrailingSlashes(v);\n })\n .join(\"/\")}`;\n};\n","import { Action, IResourceItem } from \"src/interfaces\";\nimport { getDefaultActionPath } from \"./get-default-action-path\";\nimport { getParentPrefixForResource } from \"./get-parent-prefix-for-resource\";\n\nexport type ResourceActionRoute = {\n action: Action;\n resource: IResourceItem;\n route: string;\n};\n\n/**\n * This function returns all the routes for available actions for a resource.\n * - If the action is a function, it means we're fallbacking to default path for the action\n * - If the action is a string, it means we don't have the component, but we have the route\n * - If the action is an object, it means we have the component and the route\n * - It will return an array of objects with the action, the resource and the route\n */\nexport const getActionRoutesFromResource = (\n resource: IResourceItem,\n resources: IResourceItem[],\n /**\n * Uses legacy route if true (`options.route`)\n */\n legacy?: boolean,\n) => {\n const actions: ResourceActionRoute[] = [];\n\n const actionList: Action[] = [\"list\", \"show\", \"edit\", \"create\", \"clone\"];\n\n const parentPrefix = getParentPrefixForResource(resource, resources, legacy);\n\n actionList.forEach((action) => {\n const item =\n legacy && action === \"clone\" ? resource.create : resource[action];\n\n let route: string | undefined = undefined;\n\n if (typeof item === \"function\" || legacy) {\n // means we're fallbacking to default path for the action\n route = getDefaultActionPath(\n legacy\n ? resource.meta?.route ?? resource.options?.route ?? resource.name\n : resource.name,\n action,\n legacy ? parentPrefix : undefined,\n );\n } else if (typeof item === \"string\") {\n // means we don't have the component, but we have the route\n route = item;\n } else if (typeof item === \"object\") {\n // means we have the component and the route\n route = item.path;\n }\n\n if (route) {\n actions.push({\n action,\n resource,\n route: `/${route.replace(/^\\//, \"\")}`,\n });\n }\n });\n\n return actions;\n};\n","import { ResourceActionRoute } from \"./get-action-routes-from-resource\";\nimport { isParameter } from \"./is-parameter\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Picks the most eligible route from the given matched routes.\n * - If there's only one route, it returns it.\n * - If there's more than one route, it picks the best non-greedy match.\n */\nexport const pickMatchedRoute = (\n routes: ResourceActionRoute[],\n): ResourceActionRoute | undefined => {\n // these routes are all matched, we should pick the least parametrized one\n\n // no routes, no match\n if (routes.length === 0) {\n return undefined;\n }\n\n // no need to calculate the route segments if there's only one route\n if (routes.length === 1) {\n return routes[0];\n }\n\n // remove trailing and leading slashes\n // split them to segments\n const sanitizedRoutes = routes.map((route) => ({\n ...route,\n splitted: splitToSegments(removeLeadingTrailingSlashes(route.route)),\n }));\n\n // at this point, before calling this function, we already checked for segment lenghts and expect all of them to be the same\n const segmentsCount = sanitizedRoutes[0]?.splitted.length ?? 0;\n\n let eligibleRoutes: Array<(typeof sanitizedRoutes)[number]> = [\n ...sanitizedRoutes,\n ];\n\n // loop through the segments\n for (let i = 0; i < segmentsCount; i++) {\n const nonParametrizedRoutes = eligibleRoutes.filter(\n (route) => !isParameter(route.splitted[i]),\n );\n\n if (nonParametrizedRoutes.length === 0) {\n // keep the eligible routes as they are\n continue;\n }\n if (nonParametrizedRoutes.length === 1) {\n // no need to continue, we found the route\n eligibleRoutes = nonParametrizedRoutes;\n break;\n }\n\n // we have more than one non-parametrized route, we need to check the next segment\n eligibleRoutes = nonParametrizedRoutes;\n }\n\n return eligibleRoutes[0];\n};\n","import { Action, IResourceItem } from \"../../../interfaces\";\nimport { checkBySegments } from \"./check-by-segments\";\nimport { getActionRoutesFromResource } from \"./get-action-routes-from-resource\";\nimport { pickMatchedRoute } from \"./pick-matched-route\";\n\n/**\n * Match the resource from the route\n * - It will calculate all possible routes for resources and their actions\n * - It will check if the route matches any of the possible routes\n * - It will return the most eligible resource and action\n */\nexport const matchResourceFromRoute = (\n route: string,\n resources: IResourceItem[],\n): {\n found: boolean;\n resource?: IResourceItem;\n action?: Action;\n matchedRoute?: string;\n} => {\n const allActionRoutes = resources.flatMap((resource) => {\n return getActionRoutesFromResource(resource, resources);\n });\n\n const allFound = allActionRoutes.filter((actionRoute) => {\n return checkBySegments(route, actionRoute.route);\n });\n\n const mostEligible = pickMatchedRoute(allFound);\n\n return {\n found: !!mostEligible,\n resource: mostEligible?.resource,\n action: mostEligible?.action,\n matchedRoute: mostEligible?.route,\n };\n};\n","import { ResourceProps } from \"src/interfaces/bindings/resource\";\nimport { getParentPrefixForResource } from \"../router\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * generates route for the resource based on parents and custom routes\n * @deprecated this is a **legacy** function and works only with the old resource definition\n */\nexport const routeGenerator = (\n item: ResourceProps,\n resourcesFromProps: ResourceProps[],\n): string | undefined => {\n let route;\n\n const parentPrefix = getParentPrefixForResource(\n item,\n resourcesFromProps,\n true,\n );\n\n if (parentPrefix) {\n const meta = pickNotDeprecated(item.meta, item.options);\n route = `${parentPrefix}/${meta?.route ?? item.name}`;\n } else {\n route = item.options?.route ?? item.name;\n }\n\n return `/${route.replace(/^\\//, \"\")}`;\n};\n","import { pickNotDeprecated } from \"@definitions/helpers/pickNotDeprecated\";\nimport { IResourceItem, ITreeMenu, IMenuItem } from \"src/interfaces\";\n\n/**\n * @deprecated This helper is deprecated. Please use `createTree` instead.\n */\nexport const createTreeView = (\n resources: IResourceItem[] | IMenuItem[],\n): ITreeMenu[] | ITreeMenu[] => {\n const tree = [];\n const resourcesRouteObject: { [key: string]: any } = {};\n const resourcesNameObject: { [key: string]: any } = {};\n let parent: IResourceItem | IMenuItem;\n let child: ITreeMenu;\n\n for (let i = 0; i < resources.length; i++) {\n parent = resources[i];\n\n const route =\n parent.route ??\n pickNotDeprecated(parent?.meta, parent.options)?.route ??\n \"\";\n\n resourcesRouteObject[route] = parent;\n resourcesRouteObject[route][\"children\"] = [];\n\n resourcesNameObject[parent.name] = parent;\n resourcesNameObject[parent.name][\"children\"] = [];\n }\n\n for (const name in resourcesRouteObject) {\n if (Object.hasOwn(resourcesRouteObject, name)) {\n child = resourcesRouteObject[name];\n\n if (child.parentName && resourcesNameObject[child.parentName]) {\n resourcesNameObject[child.parentName][\"children\"].push(child);\n } else {\n tree.push(child);\n }\n }\n }\n\n return tree;\n};\n","export const humanizeString = (text: string): string => {\n text = text.replace(/([a-z]{1})([A-Z]{1})/g, \"$1-$2\");\n text = text.replace(/([A-Z]{1})([A-Z]{1})([a-z]{1})/g, \"$1-$2$3\");\n\n text = text\n .toLowerCase()\n .replace(/[_-]+/g, \" \")\n .replace(/\\s{2,}/g, \" \")\n .trim();\n text = text.charAt(0).toUpperCase() + text.slice(1);\n\n return text;\n};\n// https://www.npmjs.com/package/humanize-string\n","import React from \"react\";\nimport pluralize from \"pluralize\";\nimport { humanizeString } from \"../../definitions/helpers/humanizeString\";\n\nimport {\n IRefineContextOptions,\n IRefineContext,\n IRefineContextProvider,\n} from \"./IRefineContext\";\nimport { DefaultLayout } from \"@components/layoutWrapper/defaultLayout\";\n\nimport { LoginPage as DefaultLoginPage } from \"@components/pages\";\n\nexport const defaultRefineOptions: IRefineContextOptions = {\n mutationMode: \"pessimistic\",\n syncWithLocation: false,\n undoableTimeout: 5000,\n warnWhenUnsavedChanges: false,\n liveMode: \"off\",\n redirect: {\n afterCreate: \"list\",\n afterClone: \"list\",\n afterEdit: \"list\",\n },\n overtime: {\n interval: 1000,\n },\n textTransformers: {\n humanize: humanizeString,\n plural: pluralize.plural,\n singular: pluralize.singular,\n },\n disableServerSideValidation: false,\n};\n\nexport const RefineContext = React.createContext<IRefineContext>({\n hasDashboard: false,\n mutationMode: \"pessimistic\",\n warnWhenUnsavedChanges: false,\n syncWithLocation: false,\n undoableTimeout: 5000,\n Title: undefined,\n Sider: undefined,\n Header: undefined,\n Footer: undefined,\n Layout: DefaultLayout,\n OffLayoutArea: undefined,\n liveMode: \"off\",\n onLiveEvent: undefined,\n options: defaultRefineOptions,\n});\n\nexport const RefineContextProvider: React.FC<IRefineContextProvider> = ({\n hasDashboard,\n mutationMode,\n warnWhenUnsavedChanges,\n syncWithLocation,\n undoableTimeout,\n children,\n DashboardPage,\n Title,\n Layout = DefaultLayout,\n Header,\n Sider,\n Footer,\n OffLayoutArea,\n LoginPage = DefaultLoginPage,\n catchAll,\n liveMode = \"off\",\n onLiveEvent,\n options,\n}) => {\n return (\n <RefineContext.Provider\n value={{\n __initialized: true,\n hasDashboard,\n mutationMode,\n warnWhenUnsavedChanges,\n syncWithLocation,\n Title,\n undoableTimeout,\n Layout,\n Header,\n Sider,\n Footer,\n OffLayoutArea,\n DashboardPage,\n LoginPage,\n catchAll,\n liveMode,\n onLiveEvent,\n options,\n }}\n >\n {children}\n </RefineContext.Provider>\n );\n};\n","import React from \"react\";\n\nimport { LayoutProps } from \"../../../interfaces\";\n\nexport const DefaultLayout: React.FC<LayoutProps> = ({ children }) => {\n return <div>{children}</div>;\n};\n","import { QueryClient, QueryClientConfig } from \"@tanstack/react-query\";\n\nimport { defaultRefineOptions } from \"@contexts/refine\";\nimport {\n IRefineContextOptions,\n IRefineOptions,\n LiveModeProps,\n MutationMode,\n} from \"src/interfaces\";\n\ntype HandleRefineOptionsProps = {\n options?: IRefineOptions;\n mutationMode?: MutationMode;\n syncWithLocation?: boolean;\n warnWhenUnsavedChanges?: boolean;\n undoableTimeout?: number;\n liveMode?: LiveModeProps[\"liveMode\"];\n disableTelemetry?: boolean;\n reactQueryClientConfig?: QueryClientConfig;\n reactQueryDevtoolConfig?: any | false;\n};\n\ntype HandleRefineOptionsReturnValues = {\n optionsWithDefaults: IRefineContextOptions;\n disableTelemetryWithDefault: boolean;\n reactQueryWithDefaults: {\n clientConfig: QueryClientConfig | InstanceType<typeof QueryClient>;\n devtoolConfig: false | any;\n };\n};\n\nexport const handleRefineOptions = ({\n options,\n disableTelemetry,\n liveMode,\n mutationMode,\n reactQueryClientConfig,\n reactQueryDevtoolConfig,\n syncWithLocation,\n undoableTimeout,\n warnWhenUnsavedChanges,\n}: HandleRefineOptionsProps = {}): HandleRefineOptionsReturnValues => {\n const optionsWithDefaults: IRefineContextOptions = {\n breadcrumb: options?.breadcrumb,\n mutationMode:\n options?.mutationMode ??\n mutationMode ??\n defaultRefineOptions.mutationMode,\n undoableTimeout:\n options?.undoableTimeout ??\n undoableTimeout ??\n defaultRefineOptions.undoableTimeout,\n syncWithLocation:\n options?.syncWithLocation ??\n syncWithLocation ??\n defaultRefineOptions.syncWithLocation,\n warnWhenUnsavedChanges:\n options?.warnWhenUnsavedChanges ??\n warnWhenUnsavedChanges ??\n defaultRefineOptions.warnWhenUnsavedChanges,\n liveMode: options?.liveMode ?? liveMode ?? defaultRefineOptions.liveMode,\n redirect: {\n afterCreate:\n options?.redirect?.afterCreate ??\n defaultRefineOptions.redirect.afterCreate,\n afterClone:\n options?.redirect?.afterClone ??\n defaultRefineOptions.redirect.afterClone,\n afterEdit:\n options?.redirect?.afterEdit ?? defaultRefineOptions.redirect.afterEdit,\n },\n overtime: options?.overtime ?? defaultRefineOptions.overtime,\n textTransformers: {\n humanize:\n options?.textTransformers?.humanize ??\n defaultRefineOptions.textTransformers.humanize,\n plural:\n options?.textTransformers?.plural ??\n defaultRefineOptions.textTransformers.plural,\n singular:\n options?.textTransformers?.singular ??\n defaultRefineOptions.textTransformers.singular,\n },\n disableServerSideValidation:\n options?.disableServerSideValidation ??\n defaultRefineOptions.disableServerSideValidation,\n projectId: options?.projectId,\n useNewQueryKeys: options?.useNewQueryKeys,\n };\n\n const disableTelemetryWithDefault =\n options?.disableTelemetry ?? disableTelemetry ?? false;\n\n const reactQueryWithDefaults = {\n clientConfig:\n options?.reactQuery?.clientConfig ?? reactQueryClientConfig ?? {},\n devtoolConfig:\n options?.reactQuery?.devtoolConfig ?? reactQueryDevtoolConfig ?? {},\n };\n\n return {\n optionsWithDefaults,\n disableTelemetryWithDefault,\n reactQueryWithDefaults,\n };\n};\n","import { Action, IRefineContextOptions, RedirectAction } from \"src/interfaces\";\n\ntype RedirectPageProps = {\n redirectFromProps?: RedirectAction;\n action: Action;\n redirectOptions: IRefineContextOptions[\"redirect\"];\n};\n\nexport const redirectPage = ({\n redirectFromProps,\n action,\n redirectOptions,\n}: RedirectPageProps): RedirectAction => {\n if (redirectFromProps || redirectFromProps === false) {\n return redirectFromProps;\n }\n\n switch (action) {\n case \"clone\":\n return redirectOptions.afterClone;\n case \"create\":\n return redirectOptions.afterCreate;\n case \"edit\":\n return redirectOptions.afterEdit;\n default:\n return false;\n }\n};\n","type EachResolve<TResolve, Response> = (\n result: TResolve,\n index: number,\n) => Response;\ntype EachReject<TReject, Response> = (\n error: TReject,\n index: number,\n) => Response;\n\nexport const sequentialPromises = async <\n TResolve = unknown,\n TReject = unknown,\n TResolveResponse = unknown,\n TRejectResponse = unknown,\n>(\n promises: (() => Promise<TResolve>)[],\n onEachResolve: EachResolve<TResolve, TResolveResponse>,\n onEachReject: EachReject<TReject, TRejectResponse>,\n): Promise<(TResolveResponse | TRejectResponse)[]> => {\n const results = [];\n // @ts-expect-error Remove this when we enable `downLevelIterations`\n for (const [index, promise] of promises.entries()) {\n try {\n const result = await promise();\n\n results.push(onEachResolve(result, index));\n } catch (error) {\n results.push(onEachReject(error as TReject, index));\n }\n }\n return results;\n};\n","import { IResourceItem } from \"src/interfaces/bindings/resource\";\nimport { removeLeadingTrailingSlashes } from \"../router/remove-leading-trailing-slashes\";\n\n/**\n * Picks the resource based on the provided identifier.\n * Identifier fallbacks to `name` if `identifier` is not explicitly provided to the resource.\n * If legacy is true, then resource is matched by `route` first and then by `name`.\n */\nexport const pickResource = (\n identifier?: string,\n resources: IResourceItem[] = [],\n /**\n * If true, the identifier will be checked for `route` and `name` properties\n */\n legacy = false,\n): IResourceItem | undefined => {\n if (!identifier) {\n return undefined;\n }\n\n if (legacy) {\n const resourceByRoute = resources.find(\n (r) =>\n removeLeadingTrailingSlashes(r.route ?? \"\") ===\n removeLeadingTrailingSlashes(identifier),\n );\n\n const resource = resourceByRoute\n ? resourceByRoute\n : resources.find((r) => r.name === identifier);\n\n return resource;\n }\n\n let resource = resources.find((r) => r.identifier === identifier);\n if (!resource) {\n resource = resources.find((r) => r.name === identifier);\n }\n\n return resource;\n};\n","import { IResourceItem } from \"src/interfaces/bindings/resource\";\nimport { pickResource } from \"../pick-resource\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * Picks the data provider name based on the provided name or fallbacks to resource definition, or `default`.\n */\nexport const pickDataProvider = (\n resourceName?: string,\n dataProviderName?: string,\n resources?: IResourceItem[],\n) => {\n if (dataProviderName) {\n return dataProviderName;\n }\n\n /**\n * In this helper, we don't do `route` based matching therefore there's no need to check for `legacy` behaviors.\n */\n const resource = pickResource(resourceName, resources);\n\n const meta = pickNotDeprecated(resource?.meta, resource?.options);\n\n if (meta?.dataProviderName) {\n return meta.dataProviderName;\n }\n\n return \"default\";\n};\n","export const handleMultiple = async <TData = unknown>(\n promises: Promise<{ data: TData }>[],\n): Promise<{ data: TData[] }> => {\n return {\n data: (await Promise.all(promises)).map((res) => res.data),\n };\n};\n","import { GetListResponse } from \"../../../interfaces\";\n\nexport const getNextPageParam = (lastPage: GetListResponse) => {\n const { pagination, cursor } = lastPage;\n\n // cursor pagination\n if (cursor?.next) {\n return cursor.next;\n }\n\n const current = pagination?.current || 1;\n\n const pageSize = pagination?.pageSize || 10;\n const totalPages = Math.ceil((lastPage.total || 0) / pageSize);\n\n return current < totalPages ? Number(current) + 1 : undefined;\n};\n\nexport const getPreviousPageParam = (lastPage: GetListResponse) => {\n const { pagination, cursor } = lastPage;\n\n // cursor pagination\n if (cursor?.prev) {\n return cursor.prev;\n }\n\n const current = pagination?.current || 1;\n\n return current === 1 ? undefined : current - 1;\n};\n","import {\n IResourceItem,\n ResourceProps,\n} from \"../../../interfaces/bindings/resource\";\n\nimport { routeGenerator } from \"../routeGenerator\";\n\n/**\n * For the legacy definition of resources, we did a basic transformation for provided resources\n * - This is meant to provide an easier way to access properties.\n * - In the new definition, we don't need to do transformations and properties can be accessed via helpers or manually.\n * This is kept for backward compability\n */\nexport const legacyResourceTransform = (resources: ResourceProps[]) => {\n const _resources: IResourceItem[] = [];\n\n resources.forEach((resource) => {\n _resources.push({\n ...resource,\n label: resource.meta?.label ?? resource.options?.label,\n route: routeGenerator(resource, resources),\n canCreate: !!resource.create,\n canEdit: !!resource.edit,\n canShow: !!resource.show,\n canDelete: resource.canDelete,\n });\n });\n\n return _resources;\n};\n","import { splitToSegments } from \"./split-to-segments\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { isParameter } from \"./is-parameter\";\n\n/**\n * Picks the route parameters from the given route.\n * (e.g. /users/:id/posts/:postId => ['id', 'postId'])\n */\nexport const pickRouteParams = (route: string) => {\n const segments = splitToSegments(removeLeadingTrailingSlashes(route));\n\n return segments.flatMap((s) => {\n if (isParameter(s)) {\n return [s.slice(1)];\n }\n\n return [];\n });\n};\n","/**\n * Prepares the route params by checking the existing params and meta data.\n * Meta data is prioritized over params.\n * Params are prioritized over predetermined id, action and resource.\n * This means, we can use `meta` for user supplied params (both manually or from the query string)\n */\nexport const prepareRouteParams = <\n TRouteParams extends Record<string, unknown> = Record<string, unknown>,\n>(\n routeParams: (keyof TRouteParams)[],\n meta: Record<string, unknown> = {},\n): Partial<TRouteParams> => {\n return routeParams.reduce(\n (acc, key) => {\n const value = meta[key as string];\n if (typeof value !== \"undefined\") {\n acc[key] = value as TRouteParams[keyof TRouteParams];\n }\n return acc;\n },\n {} as Partial<TRouteParams>,\n );\n};\n","import { MetaQuery, ParseResponse } from \"src/interfaces\";\nimport { pickRouteParams } from \"./pick-route-params\";\nimport { prepareRouteParams } from \"./prepare-route-params\";\n\n/**\n * This function will compose a route with the given params and meta.\n * - A route can have parameters like (eg: /users/:id)\n * - First we pick the route params from the route (eg: [id])\n * - Then we prepare the route params with the given params and meta (eg: { id: 1 })\n * - Then we replace the route params with the prepared route params (eg: /users/1)\n */\nexport const composeRoute = (\n designatedRoute: string,\n resourceMeta: MetaQuery = {},\n parsed: ParseResponse = {},\n meta: Record<string, unknown> = {},\n): string => {\n // pickRouteParams (from the route)\n const routeParams = pickRouteParams(designatedRoute);\n // prepareRouteParams (from route params, params and meta)\n const preparedRouteParams = prepareRouteParams(routeParams, {\n ...resourceMeta,\n ...(typeof parsed?.id !== \"undefined\" ? { id: parsed.id } : {}),\n ...(typeof parsed?.action !== \"undefined\" ? { action: parsed.action } : {}),\n ...(typeof parsed?.resource !== \"undefined\"\n ? { resource: parsed.resource }\n : {}),\n ...parsed?.params,\n ...meta,\n });\n // replace route params with prepared route params\n return designatedRoute.replace(/:([^\\/]+)/g, (match, key) => {\n const fromParams = preparedRouteParams[key];\n if (typeof fromParams !== \"undefined\") {\n return `${fromParams}`;\n }\n return match;\n });\n};\n","import React, { PropsWithChildren } from \"react\";\n\nimport { useNavigation } from \"@hooks\";\nimport { ILegacyAuthContext, IAuthBindingsContext } from \"../../interfaces\";\n\n/**\n * @deprecated `LegacyAuthContext` is deprecated with refine@4, use `AuthBindingsContext` instead, however, we still support `LegacyAuthContext` for backward compatibility.\n */\nexport const LegacyAuthContext = React.createContext<ILegacyAuthContext>({});\n\n/**\n * @deprecated `LegacyAuthContextProvider` is deprecated with refine@4, use `AuthBindingsContextProvider` instead, however, we still support `LegacyAuthContextProvider` for backward compatibility.\n */\nexport const LegacyAuthContextProvider: React.FC<\n ILegacyAuthContext & {\n children?: React.ReactNode;\n }\n> = ({ children, isProvided, ...authOperations }) => {\n const { replace } = useNavigation();\n\n const loginFunc = async (params: any) => {\n try {\n const result = await authOperations.login?.(params);\n\n return result;\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const registerFunc = async (params: any) => {\n try {\n const result = await authOperations.register?.(params);\n\n return result;\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const logoutFunc = async (params: any) => {\n try {\n const redirectPath = await authOperations.logout?.(params);\n\n return redirectPath;\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const checkAuthFunc = async (params: any) => {\n try {\n await authOperations.checkAuth?.(params);\n return Promise.resolve();\n } catch (error) {\n if ((error as { redirectPath?: string })?.redirectPath) {\n replace((error as { redirectPath: string }).redirectPath);\n }\n\n return Promise.reject(error);\n }\n };\n\n return (\n <LegacyAuthContext.Provider\n value={{\n ...authOperations,\n login: loginFunc,\n logout: logoutFunc,\n checkAuth: checkAuthFunc,\n register: registerFunc,\n isProvided,\n }}\n >\n {children}\n </LegacyAuthContext.Provider>\n );\n};\n\nexport const AuthBindingsContext = React.createContext<\n Partial<IAuthBindingsContext>\n>({});\n\nexport const AuthBindingsContextProvider: React.FC<\n PropsWithChildren<IAuthBindingsContext>\n> = ({ children, isProvided, ...authBindings }) => {\n const handleLogin = async (params: unknown) => {\n try {\n const result = await authBindings.login?.(params);\n\n return result;\n } catch (error) {\n console.warn(\n \"Unhandled Error in login: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n const handleRegister = async (params: unknown) => {\n try {\n const result = await authBindings.register?.(params);\n\n return result;\n } catch (error) {\n console.warn(\n \"Unhandled Error in register: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n const handleLogout = async (params: unknown) => {\n try {\n const result = await authBindings.logout?.(params);\n\n return result;\n } catch (error) {\n console.warn(\n \"Unhandled Error in logout: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n const handleCheck = async (params: unknown) => {\n try {\n const result = await authBindings.check?.(params);\n\n return Promise.resolve(result);\n } catch (error) {\n console.warn(\n \"Unhandled Error in check: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n const handleForgotPassword = async (params: unknown) => {\n try {\n const result = await authBindings.forgotPassword?.(params);\n\n return Promise.resolve(result);\n } catch (error) {\n console.warn(\n \"Unhandled Error in forgotPassword: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n const handleUpdatePassword = async (params: unknown) => {\n try {\n const result = await authBindings.updatePassword?.(params);\n return Promise.resolve(result);\n } catch (error) {\n console.warn(\n \"Unhandled Error in updatePassword: refine always expects a resolved promise.\",\n error,\n );\n return Promise.reject(error);\n }\n };\n\n return (\n <AuthBindingsContext.Provider\n value={{\n ...authBindings,\n login: handleLogin as IAuthBindingsContext[\"login\"],\n logout: handleLogout as IAuthBindingsContext[\"logout\"],\n check: handleCheck as IAuthBindingsContext[\"check\"],\n register: handleRegister as IAuthBindingsContext[\"register\"],\n forgotPassword:\n handleForgotPassword as IAuthBindingsContext[\"forgotPassword\"],\n updatePassword:\n handleUpdatePassword as IAuthBindingsContext[\"updatePassword\"],\n isProvided,\n }}\n >\n {children}\n </AuthBindingsContext.Provider>\n );\n};\n\n/**\n * @deprecated `useLegacyAuthContext` is deprecated with refine@4, use `useAuthBindingsContext` instead, however, we still support `useLegacyAuthContext` for backward compatibility.\n */\nexport const useLegacyAuthContext = () => {\n const context = React.useContext(LegacyAuthContext);\n\n return context;\n};\n\nexport const useAuthBindingsContext = () => {\n const context = React.useContext(AuthBindingsContext);\n\n return context;\n};\n","import { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\n\n/**\n * @returns authProvider or legacyAuthProvider if provided, otherwise null\n * @internal\n * NOTE: Will be removed in v5\n */\nexport const useActiveAuthProvider = () => {\n const legacyAuthProvider = useLegacyAuthContext();\n const authProvider = useAuthBindingsContext();\n\n if (authProvider.isProvided) {\n return { isLegacy: false, ...authProvider };\n }\n\n if (legacyAuthProvider.isProvided) {\n // legacyAuthProvider interface is different from authProvider interface\n // we need to convert it to authProvider interface for simple usage\n // in the future, we will remove legacyAuthProvider\n return {\n isLegacy: true,\n ...legacyAuthProvider,\n check: legacyAuthProvider.checkAuth,\n onError: legacyAuthProvider.checkError,\n getIdentity: legacyAuthProvider.getUserIdentity,\n };\n }\n\n return null;\n};\n","import { Pagination } from \"../../../interfaces\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\ntype HandlePaginationParamsProps = {\n hasPagination?: boolean;\n pagination?: Pagination;\n configPagination?: Pagination;\n};\n\nexport const handlePaginationParams = ({\n hasPagination,\n pagination,\n configPagination,\n}: HandlePaginationParamsProps = {}): Required<Pagination> => {\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const mode = pagination?.mode ?? hasPaginationString;\n\n const current =\n pickNotDeprecated(pagination?.current, configPagination?.current) ?? 1;\n\n const pageSize =\n pickNotDeprecated(pagination?.pageSize, configPagination?.pageSize) ?? 10;\n\n return {\n current,\n pageSize,\n mode,\n };\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useMediaQuery = (query: string) => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n const listener = () => setMatches(media.matches);\n window.addEventListener(\"resize\", listener);\n return () => window.removeEventListener(\"resize\", listener);\n }, [matches, query]);\n\n return matches;\n};\n","import type { useTranslate } from \"@hooks/translate\";\n\nexport const safeTranslate = (\n translate: ReturnType<typeof useTranslate>,\n key: string,\n defaultMessage?: string,\n options?: any,\n) => {\n const translated = options\n ? translate(key, options, defaultMessage)\n : translate(key, defaultMessage);\n\n const fallback = defaultMessage ?? key;\n\n if (translated === key || typeof translated === \"undefined\") {\n return fallback;\n }\n\n return translated;\n};\n","import { IResourceItem } from \"@contexts/resource\";\nimport { userFriendlyResourceName } from \"../userFriendlyResourceName\";\nimport type { useTranslate } from \"@hooks/translate\";\nimport { safeTranslate } from \"../safe-translate\";\n\n/**\n * Generates document title for the given resource and action.\n */\nexport function generateDefaultDocumentTitle(\n translate: ReturnType<typeof useTranslate>,\n resource?: IResourceItem,\n action?: string,\n id?: string,\n resourceName?: string,\n) {\n const actionPrefixMatcher = {\n create: \"Create new \",\n clone: `#${id ?? \"\"} Clone `,\n edit: `#${id ?? \"\"} Edit `,\n show: `#${id ?? \"\"} Show `,\n list: \"\",\n };\n\n const identifier = resource?.identifier ?? resource?.name;\n\n const resourceNameFallback =\n resource?.label ??\n resource?.meta?.label ??\n userFriendlyResourceName(\n identifier,\n action === \"list\" ? \"plural\" : \"singular\",\n );\n\n const resourceNameWithFallback = resourceName ?? resourceNameFallback;\n\n const defaultTitle = safeTranslate(\n translate,\n \"documentTitle.default\",\n \"refine\",\n );\n const suffix = safeTranslate(translate, \"documentTitle.suffix\", \" | refine\");\n let autoGeneratedTitle = defaultTitle;\n\n if (action && identifier) {\n autoGeneratedTitle = safeTranslate(\n translate,\n `documentTitle.${identifier}.${action}`,\n `${\n actionPrefixMatcher[action as keyof typeof actionPrefixMatcher] ?? \"\"\n }${resourceNameWithFallback}${suffix}`,\n { id },\n );\n }\n\n return autoGeneratedTitle;\n}\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport { IRefineContextOptions } from \"../../interfaces\";\n\ntype UseMutationModeType = () => {\n mutationMode: IRefineContextOptions[\"mutationMode\"];\n undoableTimeout: IRefineContextOptions[\"undoableTimeout\"];\n};\n\n/**\n * Mutation mode determines which mode the mutation runs with.\n * Mutations can run under three different modes: `pessimistic`, `optimistic` and `undoable`.\n * Each mode corresponds to a different type of user experience.\n *\n * @see {@link https://refine.dev/docs/guides-and-concepts/mutation-mode} for more details.\n */\nexport const useMutationMode: UseMutationModeType = () => {\n const { mutationMode, undoableTimeout } = useContext(RefineContext);\n\n return { mutationMode, undoableTimeout };\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport { UnsavedWarnContext } from \"@contexts/unsavedWarn\";\nimport {\n IRefineContextOptions,\n IUnsavedWarnContext,\n} from \"../../../interfaces\";\n\ntype UseWarnAboutChangeType = () => {\n warnWhenUnsavedChanges: IRefineContextOptions[\"warnWhenUnsavedChanges\"];\n warnWhen: NonNullable<IUnsavedWarnContext[\"warnWhen\"]>;\n setWarnWhen: NonNullable<IUnsavedWarnContext[\"setWarnWhen\"]>;\n};\n\n/**\n * When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.\n * To activate this feature, set the `warnWhenUnsavedChanges` to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config#warnwhenunsavedchanges} for more details.\n */\nexport const useWarnAboutChange: UseWarnAboutChangeType = () => {\n const { warnWhenUnsavedChanges } = useContext(RefineContext);\n\n const { warnWhen, setWarnWhen } = useContext(UnsavedWarnContext);\n\n return {\n warnWhenUnsavedChanges,\n warnWhen: Boolean(warnWhen),\n setWarnWhen: setWarnWhen ?? (() => undefined),\n };\n};\n","import React, { ReactNode, useState } from \"react\";\n\nimport { IUnsavedWarnContext } from \"./IUnsavedWarnContext\";\n\nexport const UnsavedWarnContext = React.createContext<IUnsavedWarnContext>({});\n\nexport const UnsavedWarnContextProvider: React.FC<{ children: ReactNode }> = ({\n children,\n}) => {\n const [warnWhen, setWarnWhen] = useState(false);\n\n return (\n <UnsavedWarnContext.Provider value={{ warnWhen, setWarnWhen }}>\n {children}\n </UnsavedWarnContext.Provider>\n );\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport { IRefineContextOptions } from \"../../interfaces\";\n\ntype UseSyncWithLocationType = () => {\n syncWithLocation: IRefineContextOptions[\"syncWithLocation\"];\n};\n\n/**\n * List query parameter values can be edited manually by typing directly in the URL.\n * To activate this feature `syncWithLocation` needs to be set to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#syncwithlocation} for more details.\n */\nexport const useSyncWithLocation: UseSyncWithLocationType = () => {\n const { syncWithLocation } = useContext(RefineContext);\n\n return { syncWithLocation };\n};\n","import { useContext } from \"react\";\nimport { RefineContext } from \"@contexts/refine\";\nimport { TitleProps } from \"../../interfaces\";\n\n/**\n * `useTitle` returns a component that calls the `<Title>` passed to the `<Refine>`.\n * In this way, it becomes easier for us to access this component in various parts of the application.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/refine/useTitle} for more details.\n */\nexport const useTitle: () => React.FC<TitleProps> | undefined = () => {\n const { Title } = useContext(RefineContext);\n\n return Title;\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nexport const useRefineContext = () => {\n const {\n Footer,\n Header,\n Layout,\n OffLayoutArea,\n Sider,\n Title,\n hasDashboard,\n mutationMode,\n syncWithLocation,\n undoableTimeout,\n warnWhenUnsavedChanges,\n DashboardPage,\n LoginPage,\n catchAll,\n options,\n __initialized,\n } = useContext(RefineContext);\n\n return {\n __initialized,\n Footer,\n Header,\n Layout,\n OffLayoutArea,\n Sider,\n Title,\n hasDashboard,\n mutationMode,\n syncWithLocation,\n undoableTimeout,\n warnWhenUnsavedChanges,\n DashboardPage,\n LoginPage,\n catchAll,\n options,\n };\n};\n","import { useRefineContext } from \"@hooks/refine\";\n\n/**\n * A method that the internal uses\n * @internal\n */\nexport const useUserFriendlyName = () => {\n const {\n options: { textTransformers },\n } = useRefineContext();\n\n const getFriendlyName = (name = \"\", type: \"singular\" | \"plural\"): string => {\n const humanizeName = textTransformers.humanize(name);\n if (type === \"singular\") {\n return textTransformers.singular(humanizeName);\n }\n return textTransformers.plural(humanizeName);\n };\n\n return getFriendlyName;\n};\n","const isNested = (obj: any) => typeof obj === \"object\" && obj !== null;\nconst isArray = (obj: any) => Array.isArray(obj);\n\nexport const flattenObjectKeys = (obj: any, prefix = \"\") => {\n if (!isNested(obj)) {\n return {\n [prefix]: obj,\n };\n }\n\n return Object.keys(obj).reduce(\n (acc, key) => {\n const currentPrefix = prefix.length ? `${prefix}.` : \"\";\n\n if (isNested(obj[key]) && Object.keys(obj[key]).length) {\n if (isArray(obj[key]) && obj[key].length) {\n obj[key].forEach((item: unknown[], index: number) => {\n Object.assign(\n acc,\n flattenObjectKeys(item, `${currentPrefix + key}.${index}`),\n );\n });\n } else {\n Object.assign(acc, flattenObjectKeys(obj[key], currentPrefix + key));\n }\n // Even if it's a nested object, it should be treated as a key as well\n acc[currentPrefix + key] = obj[key];\n } else {\n acc[currentPrefix + key] = obj[key];\n }\n return acc;\n },\n {} as Record<string, unknown>,\n );\n};\n","export const propertyPathToArray = (propertyPath: string) => {\n return propertyPath\n .split(\".\")\n .map((item) => (!Number.isNaN(Number(item)) ? Number(item) : item));\n};\n","export const downloadInBrowser = (\n filename: string,\n content: string,\n type?: string,\n) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([content], { type });\n\n const link = document.createElement(\"a\");\n link.setAttribute(\"visibility\", \"hidden\");\n link.download = filename;\n const blobUrl = URL.createObjectURL(blob);\n link.href = blobUrl;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n // As per documentation, call URL.revokeObjectURL to remove the blob from memory.\n setTimeout(() => {\n URL.revokeObjectURL(blobUrl);\n });\n};\n","export const file2Base64 = (file: any): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n const resultHandler = () => {\n if (reader.result) {\n reader.removeEventListener(\"load\", resultHandler, false);\n\n resolve(reader.result as string);\n }\n };\n\n reader.addEventListener(\"load\", resultHandler, false);\n\n reader.readAsDataURL(file.originFileObj as Blob);\n reader.onerror = (error) => {\n reader.removeEventListener(\"load\", resultHandler, false);\n return reject(error);\n };\n });\n};\n","import { useRefineContext } from \"..\";\nimport { keys } from \"@definitions/index\";\n\nexport const useKeys = () => {\n const {\n options: { useNewQueryKeys },\n } = useRefineContext();\n\n return {\n keys,\n preferLegacyKeys: !useNewQueryKeys,\n };\n};\n","import {\n useQuery,\n UseQueryResult,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { IdentityResponse } from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseGetIdentityLegacyProps<TData> = {\n v3LegacyAuthProviderCompatible: true;\n queryOptions?: UseQueryOptions<TData>;\n};\n\nexport type UseGetIdentityProps<TData = IdentityResponse> = {\n v3LegacyAuthProviderCompatible?: false;\n queryOptions?: UseQueryOptions<TData>;\n};\n\nexport type UseGetIdentityCombinedProps<TData = any> = {\n v3LegacyAuthProviderCompatible: boolean;\n queryOptions?: UseQueryOptions<TData> | UseQueryOptions<IdentityResponse>;\n};\n\nexport type UseGetIdentityLegacyReturnType<TData> = UseQueryResult<\n TData,\n unknown\n>;\n\nexport type UseGetIdentityReturnType<TData = IdentityResponse> = UseQueryResult<\n TData,\n unknown\n>;\n\nexport type UsePermissionsCombinedReturnType<TData = any> =\n | UseQueryResult<TData, unknown>\n | UseQueryResult<IdentityResponse, unknown>;\n\nexport function useGetIdentity<TData = any>(\n props: UseGetIdentityLegacyProps<TData>,\n): UseGetIdentityLegacyReturnType<TData>;\n\nexport function useGetIdentity<TData = IdentityResponse>(\n props?: UseGetIdentityProps<TData>,\n): UseGetIdentityReturnType<TData>;\n\nexport function useGetIdentity<TData = any>(\n props?: UseGetIdentityCombinedProps<TData>,\n): UsePermissionsCombinedReturnType<TData>;\n\n/**\n * `useGetIdentity` calls the `getUserIdentity` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useGetIdentity} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n */\nexport function useGetIdentity<TData = any>({\n v3LegacyAuthProviderCompatible = false,\n queryOptions,\n}: UseGetIdentityProps<TData> | UseGetIdentityLegacyProps<TData> = {}):\n | UseGetIdentityReturnType<TData>\n | UseGetIdentityLegacyReturnType<TData> {\n const { getUserIdentity: legacyGetUserIdentity } = useLegacyAuthContext();\n const { getIdentity } = useAuthBindingsContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const queryResponse = useQuery<TData>({\n queryKey: keys().auth().action(\"identity\").get(preferLegacyKeys),\n // Enabled check for `getIdentity` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n queryFn:\n (getIdentity as (params?: unknown) => Promise<TData>) ??\n (() => Promise.resolve({})),\n enabled: !v3LegacyAuthProviderCompatible && !!getIdentity,\n retry: false,\n ...(v3LegacyAuthProviderCompatible === true ? {} : queryOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : queryOptions?.meta),\n ...getXRay(\"useGetIdentity\", preferLegacyKeys),\n },\n });\n\n const legacyQueryResponse = useQuery<TData>({\n queryKey: [\n ...keys().auth().action(\"identity\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n // Enabled check for `getUserIdentity` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n queryFn: legacyGetUserIdentity ?? (() => Promise.resolve({})),\n enabled: v3LegacyAuthProviderCompatible && !!legacyGetUserIdentity,\n retry: false,\n ...(v3LegacyAuthProviderCompatible ? queryOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? queryOptions?.meta : {}),\n ...getXRay(\"useGetIdentity\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n","import {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useGo, useNavigation, useNotification, useRouterType } from \"@hooks\";\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n RefineError,\n OpenNotificationParams,\n TLogoutData,\n} from \"../../../interfaces\";\nimport { AuthActionResponse } from \"src/interfaces/bindings/auth\";\nimport { SuccessNotificationResponse } from \"src/interfaces/bindings/auth\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\nimport { useKeys } from \"@hooks/useKeys\";\n\ntype Variables = {\n redirectPath?: string | false;\n};\n\nexport type UseLogoutLegacyProps<TVariables> = {\n v3LegacyAuthProviderCompatible: true;\n mutationOptions?: Omit<\n UseMutationOptions<\n TLogoutData,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n};\n\nexport type UseLogoutProps<TVariables> = {\n v3LegacyAuthProviderCompatible?: false;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseLogoutCombinedProps<TVariables> = {\n v3LegacyAuthProviderCompatible: boolean;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse | TLogoutData,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseLogoutLegacyReturnType<TVariables> = UseMutationResult<\n TLogoutData,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n>;\n\nexport type UseLogoutReturnType<TVariables> = UseMutationResult<\n AuthActionResponse,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n>;\n\nexport type UseLogoutCombinedReturnType<TVariables> = UseMutationResult<\n AuthActionResponse | TLogoutData,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n>;\n\nexport function useLogout<TVariables = {}>(\n props: UseLogoutLegacyProps<TVariables>,\n): UseLogoutLegacyReturnType<TVariables>;\n\nexport function useLogout<TVariables = {}>(\n props?: UseLogoutProps<TVariables>,\n): UseLogoutReturnType<TVariables>;\n\nexport function useLogout<TVariables = {}>(\n props?: UseLogoutCombinedProps<TVariables>,\n): UseLogoutCombinedReturnType<TVariables>;\n\n/**\n * `useLogout` calls the `logout` method from the {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogout} for more details.\n *\n */\nexport function useLogout<TVariables = {}>({\n v3LegacyAuthProviderCompatible,\n mutationOptions,\n}: UseLogoutProps<TVariables> | UseLogoutLegacyProps<TVariables> = {}):\n | UseLogoutLegacyReturnType<TVariables>\n | UseLogoutReturnType<TVariables> {\n const invalidateAuthStore = useInvalidateAuthStore();\n const routerType = useRouterType();\n const go = useGo();\n const { push } = useNavigation();\n const { open, close } = useNotification();\n const { logout: legacyLogoutFromContext } = useLegacyAuthContext();\n const { logout: logoutFromContext } = useAuthBindingsContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n AuthActionResponse,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n >({\n mutationKey: keys().auth().action(\"logout\").get(preferLegacyKeys),\n mutationFn: logoutFromContext,\n onSuccess: async (data, variables) => {\n const { success, error, redirectTo, successNotification } = data;\n const { redirectPath } = variables ?? {};\n\n const redirect = redirectPath ?? redirectTo;\n\n if (success) {\n close?.(\"useLogout-error\");\n\n if (successNotification) {\n open?.(buildSuccessNotification(successNotification));\n }\n }\n\n if (error || !success) {\n open?.(buildNotification(error));\n }\n\n if (redirect !== false) {\n if (routerType === \"legacy\") {\n push(redirect ?? \"/login\");\n } else {\n if (redirect) {\n go({ to: redirect });\n }\n }\n }\n\n await invalidateAuthStore();\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n ...getXRay(\"useLogout\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation<\n TLogoutData,\n Error | RefineError,\n (TVariables & Variables) | void,\n unknown\n >({\n mutationKey: [\n ...keys().auth().action(\"logout\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: legacyLogoutFromContext,\n onSuccess: async (data, variables) => {\n const redirectPath = variables?.redirectPath ?? data;\n\n if (redirectPath === false) {\n return;\n }\n\n if (redirectPath) {\n if (routerType === \"legacy\") {\n push(redirectPath);\n } else {\n go({ to: redirectPath });\n }\n return;\n }\n\n if (routerType === \"legacy\") {\n push(\"/login\");\n } else {\n go({ to: \"/login\" });\n }\n\n await invalidateAuthStore();\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n ...getXRay(\"useLogout\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\nconst buildNotification = (\n error?: Error | RefineError,\n): OpenNotificationParams => {\n return {\n key: \"useLogout-error\",\n type: \"error\",\n message: error?.name || \"Logout Error\",\n description: error?.message || \"Something went wrong during logout\",\n };\n};\n\nconst buildSuccessNotification = (\n successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n return {\n message: successNotification.message,\n description: successNotification.description,\n key: \"logout-success\",\n type: \"success\",\n };\n};\n","import { useKeys } from \"@hooks/useKeys\";\nimport { useQueryClient } from \"@tanstack/react-query\";\n\nexport const useInvalidateAuthStore = () => {\n const queryClient = useQueryClient();\n const { keys, preferLegacyKeys } = useKeys();\n\n const invalidate = async () => {\n await Promise.all(\n ([\"check\", \"identity\", \"permissions\"] as const).map((action) =>\n queryClient.invalidateQueries(\n keys().auth().action(action).get(preferLegacyKeys),\n ),\n ),\n );\n };\n\n return invalidate;\n};\n","import React from \"react\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport qs from \"qs\";\n\nimport {\n useNavigation,\n useRouterContext,\n useNotification,\n useRouterType,\n useParsed,\n useGo,\n} from \"@hooks\";\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\n\nimport {\n RefineError,\n OpenNotificationParams,\n TLoginData,\n} from \"../../../interfaces\";\nimport { AuthActionResponse } from \"src/interfaces/bindings/auth\";\nimport { SuccessNotificationResponse } from \"src/interfaces/bindings/auth\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseLoginLegacyProps<TVariables> = {\n v3LegacyAuthProviderCompatible: true;\n mutationOptions?: Omit<\n UseMutationOptions<TLoginData, Error | RefineError, TVariables, unknown>,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n};\n\nexport type UseLoginProps<TVariables> = {\n v3LegacyAuthProviderCompatible?: false;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseLoginCombinedProps<TVariables> = {\n v3LegacyAuthProviderCompatible: boolean;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse | TLoginData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseLoginLegacyReturnType<TVariables> = UseMutationResult<\n TLoginData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseLoginReturnType<TVariables> = UseMutationResult<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseLoginCombinedReturnType<TVariables> = UseMutationResult<\n AuthActionResponse | TLoginData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport function useLogin<TVariables = {}>(\n props: UseLoginLegacyProps<TVariables>,\n): UseLoginLegacyReturnType<TVariables>;\n\nexport function useLogin<TVariables = {}>(\n props?: UseLoginProps<TVariables>,\n): UseLoginReturnType<TVariables>;\n\nexport function useLogin<TVariables = {}>(\n props?: UseLoginCombinedProps<TVariables>,\n): UseLoginCombinedReturnType<TVariables>;\n\n/**\n * `useLogin` calls `login` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogin} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useLogin<TVariables = {}>({\n v3LegacyAuthProviderCompatible,\n mutationOptions,\n}: UseLoginProps<TVariables> | UseLoginLegacyProps<TVariables> = {}):\n | UseLoginLegacyReturnType<TVariables>\n | UseLoginReturnType<TVariables> {\n const invalidateAuthStore = useInvalidateAuthStore();\n const routerType = useRouterType();\n\n const go = useGo();\n const { replace } = useNavigation();\n\n const parsed = useParsed();\n\n const { useLocation } = useRouterContext();\n const { search } = useLocation();\n\n const { close, open } = useNotification();\n const { login: legacyLoginFromContext } = useLegacyAuthContext();\n const { login: loginFromContext } = useAuthBindingsContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const to = React.useMemo(() => {\n if (routerType === \"legacy\") {\n const legacySearch = qs.parse(search, {\n ignoreQueryPrefix: true,\n });\n return legacySearch.to;\n }\n return parsed.params?.to;\n }, [routerType, parsed.params, search]);\n\n const mutation = useMutation<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: keys().auth().action(\"login\").get(preferLegacyKeys),\n mutationFn: loginFromContext,\n onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n if (success) {\n close?.(\"login-error\");\n\n if (successNotification) {\n open?.(buildSuccessNotification(successNotification));\n }\n }\n\n if (error || !success) {\n open?.(buildNotification(error));\n }\n\n if (to && success) {\n if (routerType === \"legacy\") {\n replace(to as string);\n } else {\n go({ to: to as string, type: \"replace\" });\n }\n } else if (redirectTo) {\n if (routerType === \"legacy\") {\n replace(redirectTo);\n } else {\n go({ to: redirectTo, type: \"replace\" });\n }\n } else {\n if (routerType === \"legacy\") {\n replace(\"/\");\n }\n }\n\n await invalidateAuthStore();\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n ...getXRay(\"useLogin\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation<\n TLoginData,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: [\n ...keys().auth().action(\"login\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: legacyLoginFromContext,\n onSuccess: async (redirectPathFromAuth) => {\n if (to) {\n replace(to as string);\n }\n\n if (redirectPathFromAuth !== false && !to) {\n if (typeof redirectPathFromAuth === \"string\") {\n if (routerType === \"legacy\") {\n replace(redirectPathFromAuth);\n } else {\n go({ to: redirectPathFromAuth, type: \"replace\" });\n }\n } else {\n if (routerType === \"legacy\") {\n replace(\"/\");\n } else {\n go({ to: \"/\", type: \"replace\" });\n }\n }\n }\n\n await invalidateAuthStore();\n\n close?.(\"login-error\");\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n ...getXRay(\"useLogin\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\nconst buildNotification = (\n error?: Error | RefineError,\n): OpenNotificationParams => {\n return {\n message: error?.name || \"Login Error\",\n description: error?.message || \"Invalid credentials\",\n key: \"login-error\",\n type: \"error\",\n };\n};\n\nconst buildSuccessNotification = (\n successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n return {\n message: successNotification.message,\n description: successNotification.description,\n key: \"login-success\",\n type: \"success\",\n };\n};\n","import {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useNavigation, useRouterType, useGo, useNotification } from \"@hooks\";\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { SuccessNotificationResponse } from \"src/interfaces/bindings/auth\";\n\nimport {\n AuthActionResponse,\n RefineError,\n OpenNotificationParams,\n TLoginData,\n TRegisterData,\n} from \"../../../interfaces\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseRegisterLegacyProps<TVariables> = {\n v3LegacyAuthProviderCompatible: true;\n mutationOptions?: Omit<\n UseMutationOptions<TRegisterData, Error | RefineError, TVariables, unknown>,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n};\n\nexport type UseRegisterProps<TVariables> = {\n v3LegacyAuthProviderCompatible?: false;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseRegisterCombinedProps<TVariables> = {\n v3LegacyAuthProviderCompatible: boolean;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse | TRegisterData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseRegisterLegacyReturnType<TVariables> = UseMutationResult<\n TRegisterData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseRegisterReturnType<TVariables> = UseMutationResult<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseRegisterCombinedReturnType<TVariables> = UseMutationResult<\n AuthActionResponse | TLoginData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport function useRegister<TVariables = {}>(\n props: UseRegisterLegacyProps<TVariables>,\n): UseRegisterLegacyReturnType<TVariables>;\n\nexport function useRegister<TVariables = {}>(\n props?: UseRegisterProps<TVariables>,\n): UseRegisterReturnType<TVariables>;\n\nexport function useRegister<TVariables = {}>(\n props?: UseRegisterCombinedProps<TVariables>,\n): UseRegisterCombinedReturnType<TVariables>;\n\n/**\n * `useRegister` calls `register` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useRegister} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useRegister<TVariables = {}>({\n v3LegacyAuthProviderCompatible,\n mutationOptions,\n}: UseRegisterProps<TVariables> | UseRegisterLegacyProps<TVariables> = {}):\n | UseRegisterReturnType<TVariables>\n | UseRegisterLegacyReturnType<TVariables> {\n const invalidateAuthStore = useInvalidateAuthStore();\n const routerType = useRouterType();\n const go = useGo();\n const { replace } = useNavigation();\n const { register: legacyRegisterFromContext } = useLegacyAuthContext();\n const { register: registerFromContext } = useAuthBindingsContext();\n const { close, open } = useNotification();\n\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: keys().auth().action(\"register\").get(preferLegacyKeys),\n mutationFn: registerFromContext,\n onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n if (success) {\n close?.(\"register-error\");\n\n if (successNotification) {\n open?.(buildSuccessNotification(successNotification));\n }\n }\n\n if (error || !success) {\n open?.(buildNotification(error));\n }\n\n if (redirectTo) {\n if (routerType === \"legacy\") {\n replace(redirectTo);\n } else {\n go({ to: redirectTo, type: \"replace\" });\n }\n } else {\n if (routerType === \"legacy\") {\n replace(\"/\");\n }\n }\n\n await invalidateAuthStore();\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n ...getXRay(\"useRegister\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation<\n TRegisterData,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: [\n ...keys().auth().action(\"register\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: legacyRegisterFromContext,\n onSuccess: async (redirectPathFromAuth) => {\n if (redirectPathFromAuth !== false) {\n if (redirectPathFromAuth) {\n if (routerType === \"legacy\") {\n replace(redirectPathFromAuth);\n } else {\n go({ to: redirectPathFromAuth, type: \"replace\" });\n }\n } else {\n if (routerType === \"legacy\") {\n replace(\"/\");\n } else {\n go({ to: \"/\", type: \"replace\" });\n }\n }\n\n await invalidateAuthStore();\n\n close?.(\"register-error\");\n }\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n ...getXRay(\"useRegister\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\nconst buildNotification = (\n error?: Error | RefineError,\n): OpenNotificationParams => {\n return {\n message: error?.name || \"Register Error\",\n description: error?.message || \"Error while registering\",\n key: \"register-error\",\n type: \"error\",\n };\n};\n\nconst buildSuccessNotification = (\n successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n return {\n message: successNotification.message,\n description: successNotification.description,\n key: \"register-success\",\n type: \"success\",\n };\n};\n","import {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useGo, useNavigation, useNotification, useRouterType } from \"@hooks\";\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { SuccessNotificationResponse } from \"src/interfaces/bindings/auth\";\n\nimport {\n AuthActionResponse,\n RefineError,\n OpenNotificationParams,\n TForgotPasswordData,\n} from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseForgotPasswordLegacyProps<TVariables> = {\n v3LegacyAuthProviderCompatible: true;\n mutationOptions?: Omit<\n UseMutationOptions<\n TForgotPasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n};\n\nexport type UseForgotPasswordProps<TVariables> = {\n v3LegacyAuthProviderCompatible?: false;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseForgotPasswordCombinedProps<TVariables> = {\n v3LegacyAuthProviderCompatible: boolean;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse | TForgotPasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseForgotPasswordLegacyReturnType<TVariables> = UseMutationResult<\n TForgotPasswordData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseForgotPasswordReturnType<TVariables> = UseMutationResult<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseForgotPasswordCombinedReturnType<TVariables> = UseMutationResult<\n AuthActionResponse | TForgotPasswordData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport function useForgotPassword<TVariables = {}>(\n props: UseForgotPasswordLegacyProps<TVariables>,\n): UseForgotPasswordLegacyReturnType<TVariables>;\n\nexport function useForgotPassword<TVariables = {}>(\n props?: UseForgotPasswordProps<TVariables>,\n): UseForgotPasswordReturnType<TVariables>;\n\nexport function useForgotPassword<TVariables = {}>(\n props?: UseForgotPasswordCombinedProps<TVariables>,\n): UseForgotPasswordCombinedReturnType<TVariables>;\n\n/**\n * `useForgotPassword` calls `forgotPassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useForgotPassword} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useForgotPassword<TVariables = {}>({\n v3LegacyAuthProviderCompatible,\n mutationOptions,\n}:\n | UseForgotPasswordProps<TVariables>\n | UseForgotPasswordLegacyProps<TVariables> = {}):\n | UseForgotPasswordReturnType<TVariables>\n | UseForgotPasswordLegacyReturnType<TVariables> {\n const routerType = useRouterType();\n const go = useGo();\n const { replace } = useNavigation();\n const {\n forgotPassword: v3LegacyAuthProviderCompatibleForgotPasswordFromContext,\n } = useLegacyAuthContext();\n const { forgotPassword: forgotPasswordFromContext } =\n useAuthBindingsContext();\n const { close, open } = useNotification();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: keys().auth().action(\"forgotPassword\").get(preferLegacyKeys),\n mutationFn: forgotPasswordFromContext,\n onSuccess: ({ success, redirectTo, error, successNotification }) => {\n if (success) {\n close?.(\"forgot-password-error\");\n\n if (successNotification) {\n open?.(buildSuccessNotification(successNotification));\n }\n }\n\n if (error || !success) {\n open?.(buildNotification(error));\n }\n\n if (redirectTo) {\n if (routerType === \"legacy\") {\n replace(redirectTo);\n } else {\n go({ to: redirectTo, type: \"replace\" });\n }\n }\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n ...getXRay(\"useForgotPassword\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation<\n TForgotPasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: [\n ...keys().auth().action(\"forgotPassword\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: v3LegacyAuthProviderCompatibleForgotPasswordFromContext,\n onSuccess: (redirectPathFromAuth) => {\n if (redirectPathFromAuth !== false) {\n if (redirectPathFromAuth) {\n if (routerType === \"legacy\") {\n replace(redirectPathFromAuth);\n } else {\n go({ to: redirectPathFromAuth, type: \"replace\" });\n }\n }\n }\n close?.(\"forgot-password-error\");\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n ...getXRay(\"useForgotPassword\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\nconst buildNotification = (\n error?: Error | RefineError,\n): OpenNotificationParams => {\n return {\n message: error?.name || \"Forgot Password Error\",\n description: error?.message || \"Error while resetting password\",\n key: \"forgot-password-error\",\n type: \"error\",\n };\n};\n\nconst buildSuccessNotification = (\n successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n return {\n message: successNotification.message,\n description: successNotification.description,\n key: \"forgot-password-success\",\n type: \"success\",\n };\n};\n","import React from \"react\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport qs from \"qs\";\n\nimport {\n useNavigation,\n useRouterType,\n useGo,\n useParsed,\n useNotification,\n useRouterContext,\n} from \"@hooks\";\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { SuccessNotificationResponse } from \"src/interfaces/bindings/auth\";\nimport {\n AuthActionResponse,\n RefineError,\n OpenNotificationParams,\n TUpdatePasswordData,\n UpdatePasswordFormTypes,\n} from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseUpdatePasswordLegacyProps<\n TVariables extends UpdatePasswordFormTypes,\n> = {\n v3LegacyAuthProviderCompatible: true;\n mutationOptions?: Omit<\n UseMutationOptions<\n TUpdatePasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n};\n\nexport type UseUpdatePasswordProps<TVariables extends UpdatePasswordFormTypes> =\n {\n v3LegacyAuthProviderCompatible?: false;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n };\n\nexport type UseUpdatePasswordCombinedProps<\n TVariables extends UpdatePasswordFormTypes,\n> = {\n v3LegacyAuthProviderCompatible: boolean;\n mutationOptions?: Omit<\n UseMutationOptions<\n AuthActionResponse | TUpdatePasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >,\n \"mutationFn\"\n >;\n};\n\nexport type UseUpdatePasswordLegacyReturnType<\n TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n TUpdatePasswordData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseUpdatePasswordReturnType<\n TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n AuthActionResponse,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport type UseUpdatePasswordCombinedReturnType<\n TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n AuthActionResponse | TUpdatePasswordData,\n Error | RefineError,\n TVariables,\n unknown\n>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n props: UseUpdatePasswordLegacyProps<TVariables>,\n): UseUpdatePasswordLegacyReturnType<TVariables>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n props?: UseUpdatePasswordProps<TVariables>,\n): UseUpdatePasswordReturnType<TVariables>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n props?: UseUpdatePasswordCombinedProps<TVariables>,\n): UseUpdatePasswordCombinedReturnType<TVariables>;\n\n/**\n * `useUpdatePassword` calls `updatePassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useUpdatePassword} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useUpdatePassword<\n TVariables extends UpdatePasswordFormTypes = {},\n>({\n v3LegacyAuthProviderCompatible,\n mutationOptions,\n}:\n | UseUpdatePasswordProps<TVariables>\n | UseUpdatePasswordLegacyProps<TVariables> = {}):\n | UseUpdatePasswordReturnType<TVariables>\n | UseUpdatePasswordLegacyReturnType<TVariables> {\n const routerType = useRouterType();\n\n const go = useGo();\n const { replace } = useNavigation();\n const { updatePassword: legacyUpdatePasswordFromContext } =\n useLegacyAuthContext();\n const { updatePassword: updatePasswordFromContext } =\n useAuthBindingsContext();\n const { close, open } = useNotification();\n\n const { keys, preferLegacyKeys } = useKeys();\n\n const parsed = useParsed();\n const { useLocation } = useRouterContext();\n const { search } = useLocation();\n\n const params = React.useMemo(() => {\n if (routerType === \"legacy\") {\n const queryStrings = qs.parse(search, {\n ignoreQueryPrefix: true,\n });\n return queryStrings ?? {};\n }\n return parsed.params ?? {};\n }, [search, parsed, routerType]);\n\n const mutation = useMutation<AuthActionResponse, Error, TVariables, unknown>({\n mutationKey: keys().auth().action(\"updatePassword\").get(preferLegacyKeys),\n mutationFn: async (variables) => {\n return updatePasswordFromContext?.({\n ...params,\n ...variables,\n }) as Promise<AuthActionResponse>;\n },\n onSuccess: ({ success, redirectTo, error, successNotification }) => {\n if (success) {\n close?.(\"update-password-error\");\n\n if (successNotification) {\n open?.(buildSuccessNotification(successNotification));\n }\n }\n\n if (error || !success) {\n open?.(buildNotification(error));\n }\n\n if (redirectTo) {\n if (routerType === \"legacy\") {\n replace(redirectTo);\n } else {\n go({ to: redirectTo, type: \"replace\" });\n }\n }\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n meta: {\n ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n ...getXRay(\"useUpdatePassword\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation<\n TUpdatePasswordData,\n Error | RefineError,\n TVariables,\n unknown\n >({\n mutationKey: [\n ...keys().auth().action(\"updatePassword\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: async (variables) => {\n return legacyUpdatePasswordFromContext?.({\n ...params,\n ...variables,\n });\n },\n onSuccess: (redirectPathFromAuth) => {\n if (redirectPathFromAuth !== false) {\n if (redirectPathFromAuth) {\n if (routerType === \"legacy\") {\n replace(redirectPathFromAuth);\n } else {\n go({ to: redirectPathFromAuth, type: \"replace\" });\n }\n }\n }\n close?.(\"update-password-error\");\n },\n onError: (error: any) => {\n open?.(buildNotification(error));\n },\n ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n meta: {\n ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n ...getXRay(\"useUpdatePassword\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\nconst buildNotification = (\n error?: Error | RefineError,\n): OpenNotificationParams => {\n return {\n message: error?.name || \"Update Password Error\",\n description: error?.message || \"Error while updating password\",\n key: \"update-password-error\",\n type: \"error\",\n };\n};\n\nconst buildSuccessNotification = (\n successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n return {\n message: successNotification.message,\n description: successNotification.description,\n key: \"update-password-success\",\n type: \"success\",\n };\n};\n","import { useQuery, UseQueryResult } from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { CheckResponse } from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseIsAuthenticatedLegacyProps = {\n v3LegacyAuthProviderCompatible: true;\n params?: any;\n};\n\nexport type UseIsAuthenticatedProps = {\n v3LegacyAuthProviderCompatible?: false;\n params?: any;\n};\n\nexport type UseIsAuthenticatedCombinedProps = {\n v3LegacyAuthProviderCompatible: boolean;\n params?: any;\n};\n\nexport type UseIsAuthenticatedLegacyReturnType = UseQueryResult<any, any>;\n\nexport type UseIsAuthenticatedReturnType = UseQueryResult<CheckResponse, any>;\n\nexport type UseIsAuthenticatedCombinedReturnType = UseQueryResult<\n CheckResponse | any,\n any\n>;\n\nexport function useIsAuthenticated(\n props: UseIsAuthenticatedLegacyProps,\n): UseIsAuthenticatedLegacyReturnType;\n\nexport function useIsAuthenticated(\n props?: UseIsAuthenticatedProps,\n): UseIsAuthenticatedReturnType;\n\nexport function useIsAuthenticated(\n props?: UseIsAuthenticatedCombinedProps,\n): UseIsAuthenticatedCombinedReturnType;\n\n/**\n * `useIsAuthenticated` calls the `checkAuth` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated} for more details.\n */\nexport function useIsAuthenticated({\n v3LegacyAuthProviderCompatible = false,\n params,\n}: UseIsAuthenticatedProps | UseIsAuthenticatedLegacyProps = {}):\n | UseIsAuthenticatedReturnType\n | UseIsAuthenticatedLegacyReturnType {\n const { checkAuth } = useLegacyAuthContext();\n const { check } = useAuthBindingsContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const queryResponse = useQuery({\n queryKey: keys()\n .auth()\n .action(\"check\")\n .params(params)\n .get(preferLegacyKeys),\n queryFn: async () => (await check?.(params)) ?? {},\n retry: false,\n enabled: !v3LegacyAuthProviderCompatible,\n meta: {\n ...getXRay(\"useIsAuthenticated\", preferLegacyKeys),\n },\n });\n\n const legacyQueryResponse = useQuery({\n queryKey: [\n ...keys().auth().action(\"check\").params(params).get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n queryFn: async () => (await checkAuth?.(params)) ?? {},\n retry: false,\n enabled: v3LegacyAuthProviderCompatible,\n meta: {\n ...getXRay(\"useIsAuthenticated\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n\n/**\n * @deprecated `useAuthenticated` is deprecated with refine@4, use `useIsAuthenticated` instead, however, we still support `useAuthenticated` for backward compatibility.\n */\nexport const useAuthenticated = useIsAuthenticated;\n","import { useMutation, UseMutationResult } from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { OnErrorResponse } from \"../../../interfaces\";\nimport { useGo, useLogout, useNavigation, useRouterType } from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseOnErrorLegacyProps = {\n v3LegacyAuthProviderCompatible: true;\n};\n\nexport type UseOnErrorProps = {\n v3LegacyAuthProviderCompatible?: false;\n};\n\nexport type UseOnErrorCombinedProps = {\n v3LegacyAuthProviderCompatible: boolean;\n};\n\nexport type UseOnErrorLegacyReturnType = UseMutationResult<\n void,\n string | undefined,\n any,\n unknown\n>;\n\nexport type UseOnErrorReturnType = UseMutationResult<\n OnErrorResponse,\n unknown,\n unknown,\n unknown\n>;\nexport type UseOnErrorCombinedReturnType = UseMutationResult<\n OnErrorResponse | void,\n unknown,\n unknown,\n unknown\n>;\n\nexport function useOnError(\n props: UseOnErrorLegacyProps,\n): UseOnErrorLegacyReturnType;\n\nexport function useOnError(props?: UseOnErrorProps): UseOnErrorReturnType;\n\nexport function useOnError(\n props?: UseOnErrorCombinedProps,\n): UseOnErrorCombinedReturnType;\n\n/**\n * `useOnError` calls the `checkError` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useCheckError} for more details.\n *\n */\nexport function useOnError({\n v3LegacyAuthProviderCompatible = false,\n}: UseOnErrorProps | UseOnErrorLegacyProps = {}):\n | UseOnErrorReturnType\n | UseOnErrorLegacyReturnType {\n const routerType = useRouterType();\n const go = useGo();\n const { replace } = useNavigation();\n\n const { checkError: legacyCheckErrorFromContext } = useLegacyAuthContext();\n const { onError: onErrorFromContext } = useAuthBindingsContext();\n\n const { keys, preferLegacyKeys } = useKeys();\n\n const { mutate: legacyLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(v3LegacyAuthProviderCompatible),\n });\n const { mutate: logout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(v3LegacyAuthProviderCompatible),\n });\n\n const mutation = useMutation({\n mutationKey: keys().auth().action(\"onError\").get(preferLegacyKeys),\n mutationFn: onErrorFromContext,\n onSuccess: ({ logout: shouldLogout, redirectTo }) => {\n if (shouldLogout) {\n logout({ redirectPath: redirectTo });\n return;\n }\n\n if (redirectTo) {\n if (routerType === \"legacy\") {\n replace(redirectTo);\n } else {\n go({ to: redirectTo, type: \"replace\" });\n }\n return;\n }\n },\n meta: {\n ...getXRay(\"useOnError\", preferLegacyKeys),\n },\n });\n\n const v3LegacyAuthProviderCompatibleMutation = useMutation({\n mutationKey: [\n ...keys().auth().action(\"onError\").get(preferLegacyKeys),\n \"v3LegacyAuthProviderCompatible\",\n ],\n mutationFn: legacyCheckErrorFromContext,\n onError: (redirectPath?: string) => {\n legacyLogout({ redirectPath });\n },\n meta: {\n ...getXRay(\"useOnError\", preferLegacyKeys),\n },\n });\n\n return v3LegacyAuthProviderCompatible\n ? v3LegacyAuthProviderCompatibleMutation\n : mutation;\n}\n\n/**\n * @deprecated `useCheckError` is deprecated with refine@4, use `useOnError` instead, however, we still support `useCheckError` for backward compatibility.\n */\nexport const useCheckError = useOnError;\n","import { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\n\n/**\n * A hook that the UI uses\n * @internal\n */\nexport const useIsExistAuthentication = (): boolean => {\n const { isProvided: legacyIsProvided } = useLegacyAuthContext();\n const { isProvided } = useAuthBindingsContext();\n\n return Boolean(isProvided || legacyIsProvided);\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n QueryObserverResult,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\n\nimport {\n handlePaginationParams,\n pickDataProvider,\n pickNotDeprecated,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useDataProvider,\n useHandleNotification,\n useMeta,\n useOnError,\n useResource,\n useResourceSubscription,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseRecord,\n CrudFilters,\n CrudSorting,\n GetListResponse,\n HttpError,\n LiveModeProps,\n MetaQuery,\n Pagination,\n Prettify,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport interface UseListConfig {\n pagination?: Pagination;\n hasPagination?: boolean;\n sort?: CrudSorting;\n filters?: CrudFilters;\n}\n\nexport type BaseListProps = {\n /**\n * Configuration for pagination, sorting and filtering\n * @type [`UseListConfig`](/docs/api-reference/core/hooks/data/useList/#config-parameters)\n * @deprecated `config` property is deprecated. Use `pagination`, `hasPagination`, `sorters` and `filters` instead.\n */\n config?: UseListConfig;\n /**\n * Pagination properties\n */\n pagination?: Pagination;\n /**\n * Whether to use server-side pagination or not\n * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * Sorter parameters\n */\n sorters?: CrudSorting;\n /**\n * Filter parameters\n */\n filters?: CrudFilters;\n /**\n * Meta data query for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Meta data query for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n */\n dataProviderName?: string;\n};\n\nexport type UseListProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n */\n resource?: string;\n\n /**\n * Tanstack Query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >;\n} & BaseListProps &\n SuccessErrorNotification<\n GetListResponse<TData>,\n TError,\n Prettify<BaseListProps>\n > &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useList` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useList = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource: resourceFromProp,\n config,\n filters,\n hasPagination,\n pagination,\n sorters,\n queryOptions,\n successNotification,\n errorNotification,\n meta,\n metaData,\n liveMode,\n onLiveEvent,\n liveParams,\n dataProviderName,\n overtimeOptions,\n}: UseListProps<TQueryFnData, TError, TData> = {}): QueryObserverResult<\n GetListResponse<TData>,\n TError\n> &\n UseLoadingOvertimeReturnType => {\n const { resources, resource, identifier } = useResource(resourceFromProp);\n\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const pickedDataProvider = pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n );\n const preferredMeta = pickNotDeprecated(meta, metaData);\n const prefferedFilters = pickNotDeprecated(filters, config?.filters);\n const prefferedSorters = pickNotDeprecated(sorters, config?.sort);\n const prefferedHasPagination = pickNotDeprecated(\n hasPagination,\n config?.hasPagination,\n );\n const prefferedPagination = handlePaginationParams({\n pagination,\n configPagination: config?.pagination,\n hasPagination: prefferedHasPagination,\n });\n const isServerPagination = prefferedPagination.mode === \"server\";\n\n const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n const notificationValues = {\n meta: combinedMeta,\n metaData: combinedMeta,\n filters: prefferedFilters,\n hasPagination: isServerPagination,\n pagination: prefferedPagination,\n sorters: prefferedSorters,\n config: {\n ...config,\n sort: prefferedSorters,\n },\n };\n\n const isEnabled =\n queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n const { getList } = dataProvider(pickedDataProvider);\n\n useResourceSubscription({\n resource: identifier,\n types: [\"*\"],\n params: {\n meta: combinedMeta,\n metaData: combinedMeta,\n pagination: prefferedPagination,\n hasPagination: isServerPagination,\n sort: prefferedSorters,\n sorters: prefferedSorters,\n filters: prefferedFilters,\n subscriptionType: \"useList\",\n ...liveParams,\n },\n channel: `resources/${resource?.name}`,\n enabled: isEnabled,\n liveMode,\n onLiveEvent,\n dataProviderName: pickedDataProvider,\n meta: {\n ...meta,\n dataProviderName,\n },\n });\n\n const queryResponse = useQuery<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >({\n queryKey: keys()\n .data(pickedDataProvider)\n .resource(identifier ?? \"\")\n .action(\"list\")\n .params({\n ...(preferredMeta || {}),\n filters: prefferedFilters,\n hasPagination: isServerPagination,\n ...(isServerPagination && {\n pagination: prefferedPagination,\n }),\n ...(sorters && {\n sorters,\n }),\n ...(config?.sort && {\n sort: config?.sort,\n }),\n })\n .get(preferLegacyKeys),\n queryFn: ({ queryKey, pageParam, signal }) => {\n return getList<TQueryFnData>({\n resource: resource?.name ?? \"\",\n pagination: prefferedPagination,\n hasPagination: isServerPagination,\n filters: prefferedFilters,\n sort: prefferedSorters,\n sorters: prefferedSorters,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n });\n },\n ...queryOptions,\n enabled:\n typeof queryOptions?.enabled !== \"undefined\"\n ? queryOptions?.enabled\n : !!resource?.name,\n select: (rawData) => {\n let data = rawData;\n\n const { current, mode, pageSize } = prefferedPagination;\n\n if (mode === \"client\") {\n data = {\n ...data,\n data: data.data.slice((current - 1) * pageSize, current * pageSize),\n total: data.total,\n };\n }\n\n if (queryOptions?.select) {\n return queryOptions?.select?.(data);\n }\n\n return data as unknown as GetListResponse<TData>;\n },\n onSuccess: (data) => {\n queryOptions?.onSuccess?.(data);\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, notificationValues, identifier)\n : successNotification;\n\n handleNotification(notificationConfig);\n },\n onError: (err: TError) => {\n checkError(err);\n queryOptions?.onError?.(err);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, notificationValues, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${identifier}-useList-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useList\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResponse.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { useEffect, useState } from \"react\";\nimport { useRefineContext } from \"..\";\n\nexport type UseLoadingOvertimeRefineContext = Omit<\n UseLoadingOvertimeCoreProps,\n \"isLoading\" | \"interval\"\n> &\n Required<Pick<UseLoadingOvertimeCoreProps, \"interval\">>;\n\nexport type UseLoadingOvertimeOptionsProps = {\n overtimeOptions?: UseLoadingOvertimeCoreOptions;\n};\n\nexport type UseLoadingOvertimeReturnType = {\n overtime: {\n elapsedTime?: number;\n };\n};\n\ntype UseLoadingOvertimeCoreOptions = Omit<\n UseLoadingOvertimeCoreProps,\n \"isLoading\"\n>;\n\ntype UseLoadingOvertimeCoreReturnType = {\n elapsedTime?: number;\n};\n\nexport type UseLoadingOvertimeCoreProps = {\n /**\n * The loading state. If true, the elapsed time will be calculated.\n */\n isLoading: boolean;\n\n /**\n * The interval in milliseconds. If the loading time exceeds this time, the `onInterval` callback will be called.\n * If not specified, the `interval` value from the `overtime` option of the `RefineProvider` will be used.\n *\n * @default: 1000 (1 second)\n */\n interval?: number;\n\n /**\n * The callback function that will be called when the loading time exceeds the specified time.\n * If not specified, the `onInterval` value from the `overtime` option of the `RefineProvider` will be used.\n *\n * @param elapsedInterval The elapsed time in milliseconds.\n */\n onInterval?: (elapsedInterval: number) => void;\n};\n\n/**\n * if you need to do something when the loading time exceeds the specified time, refine provides the `useLoadingOvertime` hook.\n * It returns the elapsed time in milliseconds.\n *\n * @example\n * const { elapsedTime } = useLoadingOvertime({\n * isLoading,\n * interval: 1000,\n * onInterval(elapsedInterval) {\n * console.log(\"loading overtime\", elapsedInterval);\n * },\n * });\n */\nexport const useLoadingOvertime = ({\n isLoading,\n interval: intervalProp,\n onInterval: onIntervalProp,\n}: UseLoadingOvertimeCoreProps): UseLoadingOvertimeCoreReturnType => {\n const [elapsedTime, setElapsedTime] = useState<number | undefined>(undefined);\n // get overtime options from refine context\n const { options } = useRefineContext();\n const { overtime } = options;\n\n // pick props or refine context options\n const interval = intervalProp ?? overtime.interval;\n const onInterval = onIntervalProp ?? overtime?.onInterval;\n\n useEffect(() => {\n let intervalFn: ReturnType<typeof setInterval>;\n\n if (isLoading) {\n intervalFn = setInterval(() => {\n // increase elapsed time\n setElapsedTime((prevElapsedTime) => {\n if (prevElapsedTime === undefined) {\n return interval;\n }\n\n return prevElapsedTime + interval;\n });\n }, interval);\n }\n\n return () => {\n clearInterval(intervalFn);\n // reset elapsed time\n setElapsedTime(undefined);\n };\n }, [isLoading, interval]);\n\n useEffect(() => {\n // call onInterval callback\n if (onInterval && elapsedTime) {\n onInterval(elapsedTime);\n }\n }, [elapsedTime]);\n\n return {\n elapsedTime,\n };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n QueryObserverResult,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\n\nimport {\n pickDataProvider,\n pickNotDeprecated,\n useActiveAuthProvider,\n} from \"@definitions\";\nimport {\n useDataProvider,\n useHandleNotification,\n useMeta,\n useOnError,\n useResource,\n useResourceSubscription,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n GetOneResponse,\n HttpError,\n LiveModeProps,\n MetaQuery,\n Prettify,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type UseOneProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n */\n resource?: string;\n /**\n * id of the item in the resource\n * @type [`BaseKey`](/docs/api-reference/core/interfaceReferences/#basekey)\n */\n id?: BaseKey;\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetOneResponse<TQueryFnData>,\n TError,\n GetOneResponse<TData>\n >;\n /**\n * Metadata query for `dataProvider`,\n */\n meta?: MetaQuery;\n /**\n * Meta data query for `dataProvider`,\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default `\"default\"``\n */\n dataProviderName?: string;\n} & SuccessErrorNotification<\n GetOneResponse<TData>,\n TError,\n Prettify<{ id?: BaseKey } & MetaQuery>\n> &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useOne` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving single items from a `resource`.\n *\n * It uses `getOne` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useOne} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useOne = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource: resourceFromProp,\n id,\n queryOptions,\n successNotification,\n errorNotification,\n meta,\n metaData,\n liveMode,\n onLiveEvent,\n liveParams,\n dataProviderName,\n overtimeOptions,\n}: UseOneProps<TQueryFnData, TError, TData>): QueryObserverResult<\n GetOneResponse<TData>,\n TError\n> &\n UseLoadingOvertimeReturnType => {\n const { resources, resource, identifier } = useResource(resourceFromProp);\n\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const preferredMeta = pickNotDeprecated(meta, metaData);\n const pickedDataProvider = pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n );\n\n const { getOne } = dataProvider(pickedDataProvider);\n\n const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n useResourceSubscription({\n resource: identifier,\n types: [\"*\"],\n channel: `resources/${resource?.name}`,\n params: {\n ids: id ? [id] : [],\n id: id,\n meta: combinedMeta,\n metaData: combinedMeta,\n subscriptionType: \"useOne\",\n ...liveParams,\n },\n enabled:\n typeof queryOptions?.enabled !== \"undefined\"\n ? queryOptions?.enabled\n : typeof resource?.name !== \"undefined\" && typeof id !== \"undefined\",\n liveMode,\n onLiveEvent,\n dataProviderName: pickedDataProvider,\n meta: {\n ...meta,\n dataProviderName,\n },\n });\n\n const queryResponse = useQuery<\n GetOneResponse<TQueryFnData>,\n TError,\n GetOneResponse<TData>\n >({\n queryKey: keys()\n .data(pickedDataProvider)\n .resource(identifier ?? \"\")\n .action(\"one\")\n .id(id ?? \"\")\n .params({\n ...(preferredMeta || {}),\n })\n .get(preferLegacyKeys),\n queryFn: ({ queryKey, pageParam, signal }) =>\n getOne<TQueryFnData>({\n resource: resource?.name ?? \"\",\n id: id!,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n }),\n ...queryOptions,\n enabled:\n typeof queryOptions?.enabled !== \"undefined\"\n ? queryOptions?.enabled\n : typeof id !== \"undefined\",\n onSuccess: (data) => {\n queryOptions?.onSuccess?.(data);\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(\n data,\n {\n id,\n ...combinedMeta,\n },\n identifier,\n )\n : successNotification;\n\n handleNotification(notificationConfig);\n },\n onError: (err: TError) => {\n checkError(err);\n queryOptions?.onError?.(err);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(\n err,\n {\n id,\n ...combinedMeta,\n },\n identifier,\n )\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${id}-${identifier}-getOne-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useOne\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResponse.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n QueryObserverResult,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\n\nimport {\n handleMultiple,\n pickDataProvider,\n pickNotDeprecated,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useDataProvider,\n useHandleNotification,\n useMeta,\n useOnError,\n useResource,\n useResourceSubscription,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n GetManyResponse,\n HttpError,\n LiveModeProps,\n MetaQuery,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type UseManyProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * ids of the item in the resource\n * @type [`BaseKey[]`](/docs/api-reference/core/interfaceReferences/#basekey)\n */\n ids: BaseKey[];\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetManyResponse<TQueryFnData>,\n TError,\n GetManyResponse<TData>\n >;\n /**\n * Metadata query for `dataProvider`,\n */\n meta?: MetaQuery;\n /**\n * Metadata query for `dataProvider`,\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default \"default\"\n */\n dataProviderName?: string;\n} & SuccessErrorNotification<GetManyResponse<TData>, TError, BaseKey[]> &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving multiple items from a `resource`.\n *\n * It uses `getMany` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useMany} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useMany = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource: resourceFromProp,\n ids,\n queryOptions,\n successNotification,\n errorNotification,\n meta,\n metaData,\n liveMode,\n onLiveEvent,\n liveParams,\n dataProviderName,\n overtimeOptions,\n}: UseManyProps<TQueryFnData, TError, TData>): QueryObserverResult<\n GetManyResponse<TData>,\n TError\n> &\n UseLoadingOvertimeReturnType => {\n const { resources, resource, identifier } = useResource(resourceFromProp);\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const preferredMeta = pickNotDeprecated(meta, metaData);\n const pickedDataProvider = pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n );\n const isEnabled =\n queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n const { getMany, getOne } = dataProvider(pickedDataProvider);\n\n const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n useResourceSubscription({\n resource: identifier,\n types: [\"*\"],\n params: {\n ids: ids,\n meta: combinedMeta,\n metaData: combinedMeta,\n subscriptionType: \"useMany\",\n ...liveParams,\n },\n channel: `resources/${resource.name}`,\n enabled: isEnabled,\n liveMode,\n onLiveEvent,\n dataProviderName: pickedDataProvider,\n meta: {\n ...meta,\n dataProviderName,\n },\n });\n\n const queryResponse = useQuery<\n GetManyResponse<TQueryFnData>,\n TError,\n GetManyResponse<TData>\n >({\n queryKey: keys()\n .data(pickedDataProvider)\n .resource(identifier)\n .action(\"many\")\n .ids(...ids)\n .params({\n ...(preferredMeta || {}),\n })\n .get(preferLegacyKeys),\n queryFn: ({ queryKey, pageParam, signal }) => {\n if (getMany) {\n return getMany({\n resource: resource?.name,\n ids,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n });\n }\n return handleMultiple(\n ids.map((id) =>\n getOne<TQueryFnData>({\n resource: resource?.name,\n id,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n }),\n ),\n );\n },\n ...queryOptions,\n onSuccess: (data) => {\n queryOptions?.onSuccess?.(data);\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, ids, identifier)\n : successNotification;\n\n handleNotification(notificationConfig);\n },\n onError: (err: TError) => {\n checkError(err);\n queryOptions?.onError?.(err);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, ids, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${ids[0]}-${identifier}-getMany-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useMany\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResponse.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { ActionTypes } from \"@contexts/undoableQueue\";\nimport {\n pickDataProvider,\n pickNotDeprecated,\n queryKeysReplacement,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useCancelNotification,\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n useMutationMode,\n useOnError,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n GetListResponse,\n GetManyResponse,\n GetOneResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n MutationMode,\n OptimisticUpdateMapType,\n PrevContext as UpdateContext,\n PreviousQuery,\n SuccessErrorNotification,\n UpdateResponse,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type UpdateParams<TData, TError, TVariables> = {\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * id for mutation function\n */\n id: BaseKey;\n /**\n * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)\n */\n mutationMode?: MutationMode;\n /**\n * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n */\n undoableTimeout?: number;\n /**\n * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n */\n onCancel?: (cancelMutation: () => void) => void;\n /**\n * Values for mutation function\n */\n values: TVariables;\n /**\n * Metadata query for dataProvider\n */\n meta?: MetaQuery;\n /**\n * Metadata query for dataProvider\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default \"default\"\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n */\n invalidates?: Array<keyof IQueryKeys>;\n /**\n * You can use it to customize the optimistic update logic.\n * @default {\n * list: true,\n * many: true,\n * detail: true,\n * }\n */\n optimisticUpdateMap?: OptimisticUpdateMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n UpdateResponse<TData>,\n TError,\n { id: BaseKey; values: TVariables }\n>;\n\nexport type UseUpdateReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n UpdateResponse<TData>,\n TError,\n UpdateParams<TData, TError, TVariables>,\n UpdateContext<TData>\n> &\n UseLoadingOvertimeReturnType;\n\nexport type UseUpdateProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n UpdateResponse<TData>,\n TError,\n UpdateParams<TData, TError, TVariables>,\n UpdateContext<TData>\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useUpdate` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for update mutations.\n *\n * It uses `update` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdate = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseUpdateProps<TData, TError, TVariables> = {}): UseUpdateReturnType<\n TData,\n TError,\n TVariables\n> => {\n const { resources, select } = useResource();\n const queryClient = useQueryClient();\n const dataProvider = useDataProvider();\n\n const {\n mutationMode: mutationModeContext,\n undoableTimeout: undoableTimeoutContext,\n } = useMutationMode();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const publish = usePublish();\n const { log } = useLog();\n const { notificationDispatch } = useCancelNotification();\n const handleNotification = useHandleNotification();\n const invalidateStore = useInvalidate();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n UpdateResponse<TData>,\n TError,\n UpdateParams<TData, TError, TVariables>,\n UpdateContext<TData>\n >({\n mutationFn: ({\n id,\n values,\n resource: resourceName,\n mutationMode,\n undoableTimeout,\n onCancel,\n meta,\n metaData,\n dataProviderName,\n }) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n const undoableTimeoutPropOrContext =\n undoableTimeout ?? undoableTimeoutContext;\n\n if (!(mutationModePropOrContext === \"undoable\")) {\n return dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n ).update<TData, TVariables>({\n resource: resource.name,\n id,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n }\n const updatePromise = new Promise<UpdateResponse<TData>>(\n (resolve, reject) => {\n const doMutation = () => {\n dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n )\n .update<TData, TVariables>({\n resource: resource.name,\n id,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n })\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n };\n\n const cancelMutation = () => {\n reject({ message: \"mutationCancelled\" });\n };\n\n if (onCancel) {\n onCancel(cancelMutation);\n }\n\n notificationDispatch({\n type: ActionTypes.ADD,\n payload: {\n id: id,\n resource: identifier,\n cancelMutation: cancelMutation,\n doMutation: doMutation,\n seconds: undoableTimeoutPropOrContext,\n isSilent: !!onCancel,\n },\n });\n },\n );\n return updatePromise;\n },\n onMutate: async ({\n resource: resourceName,\n id,\n mutationMode,\n values,\n dataProviderName,\n meta,\n metaData,\n optimisticUpdateMap = { list: true, many: true, detail: true },\n }) => {\n const { identifier } = select(resourceName);\n\n const {\n gqlMutation: _,\n gqlQuery: __,\n ...preferredMeta\n } = pickNotDeprecated(meta, metaData) ?? {};\n\n const queryKey = queryKeysReplacement(preferLegacyKeys)(\n identifier,\n pickDataProvider(identifier, dataProviderName, resources),\n preferredMeta,\n );\n\n const resourceKeys = keys()\n .data(pickDataProvider(identifier, dataProviderName, resources))\n .resource(identifier);\n\n const previousQueries: PreviousQuery<TData>[] =\n queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n await queryClient.cancelQueries(\n resourceKeys.get(preferLegacyKeys),\n undefined,\n {\n silent: true,\n },\n );\n\n if (mutationModePropOrContext !== \"pessimistic\") {\n if (optimisticUpdateMap.list) {\n // Set the previous queries to the new ones:\n queryClient.setQueriesData(\n resourceKeys\n .action(\"list\")\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.list === \"function\") {\n return optimisticUpdateMap.list(previous, values, id);\n }\n\n if (!previous) {\n return null;\n }\n\n const data = previous.data.map((record: TData) => {\n if (record.id?.toString() === id?.toString()) {\n return {\n id,\n ...record,\n ...values,\n } as unknown as TData;\n }\n return record;\n });\n\n return {\n ...previous,\n data,\n };\n },\n );\n }\n\n if (optimisticUpdateMap.many) {\n queryClient.setQueriesData(\n resourceKeys.action(\"many\").get(preferLegacyKeys),\n (previous?: GetManyResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.many === \"function\") {\n return optimisticUpdateMap.many(previous, values, id);\n }\n\n if (!previous) {\n return null;\n }\n\n const data = previous.data.map((record: TData) => {\n if (record.id?.toString() === id?.toString()) {\n record = {\n id,\n ...record,\n ...values,\n } as unknown as TData;\n }\n return record;\n });\n return {\n ...previous,\n data,\n };\n },\n );\n }\n\n if (optimisticUpdateMap.detail) {\n queryClient.setQueriesData(\n resourceKeys\n .action(\"one\")\n .id(id)\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetOneResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.detail === \"function\") {\n return optimisticUpdateMap.detail(previous, values, id);\n }\n\n if (!previous) {\n return null;\n }\n\n return {\n ...previous,\n data: {\n ...previous.data,\n ...values,\n },\n };\n },\n );\n }\n }\n\n return {\n previousQueries,\n queryKey,\n };\n },\n onSettled: (\n _data,\n _error,\n {\n id,\n resource: resourceName,\n dataProviderName,\n invalidates = [\"list\", \"many\", \"detail\"],\n },\n ) => {\n const { identifier } = select(resourceName);\n\n invalidateStore({\n resource: identifier,\n dataProviderName: pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n ),\n invalidates,\n id,\n });\n\n notificationDispatch({\n type: ActionTypes.REMOVE,\n payload: { id, resource: identifier },\n });\n },\n onSuccess: (\n data,\n {\n id,\n resource: resourceName,\n successNotification,\n dataProviderName: dataProviderNameFromProp,\n values,\n meta,\n metaData,\n },\n context,\n ) => {\n const { resource, identifier } = select(resourceName);\n const resourceSingular = textTransformers.singular(identifier);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, { id, values }, identifier)\n : successNotification;\n\n handleNotification(notificationConfig, {\n key: `${id}-${identifier}-notification`,\n description: translate(\"notifications.success\", \"Successful\"),\n message: translate(\n \"notifications.editSuccess\",\n {\n resource: translate(\n `${identifier}.${identifier}`,\n resourceSingular,\n ),\n },\n `Successfully updated ${resourceSingular}`,\n ),\n type: \"success\",\n });\n\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"updated\",\n payload: {\n ids: data.data?.id ? [data.data.id] : undefined,\n },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n let previousData: any;\n if (context) {\n const queryData = queryClient.getQueryData<UpdateResponse<TData>>(\n context.queryKey.detail(id),\n );\n\n previousData = Object.keys(values || {}).reduce<any>((acc, item) => {\n acc[item] = queryData?.data?.[item];\n return acc;\n }, {});\n }\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"update\",\n resource: resource.name,\n data: values,\n previousData,\n meta: {\n id,\n dataProviderName,\n ...rest,\n },\n });\n },\n onError: (\n err: TError,\n { id, resource: resourceName, errorNotification, values },\n context,\n ) => {\n const { identifier } = select(resourceName);\n\n // set back the queries to the context:\n if (context) {\n for (const query of context.previousQueries) {\n queryClient.setQueryData(query[0], query[1]);\n }\n }\n\n if (err.message !== \"mutationCancelled\") {\n checkError?.(err);\n\n const resourceSingular = textTransformers.singular(identifier);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, { id, values }, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${id}-${identifier}-notification`,\n message: translate(\n \"notifications.editError\",\n {\n resource: translate(\n `${identifier}.${identifier}`,\n resourceSingular,\n ),\n statusCode: err.statusCode,\n },\n `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n }\n },\n mutationKey: keys().data().mutation(\"update\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useUpdate\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import React, { ReactNode, useReducer } from \"react\";\nimport isEqual from \"lodash/isEqual\";\n\nimport { UndoableQueue } from \"@components\";\n\nimport { IUndoableQueue, IUndoableQueueContext } from \"../../interfaces\";\nimport { ActionTypes } from \"./actionTypes\";\n\nexport const UndoableQueueContext = React.createContext<IUndoableQueueContext>({\n notifications: [],\n notificationDispatch: () => false,\n});\n\nconst initialState: IUndoableQueue[] = [];\n\nexport const undoableQueueReducer = (state: IUndoableQueue[], action: any) => {\n switch (action.type) {\n case ActionTypes.ADD: {\n const newState = state.filter((notificationItem: IUndoableQueue) => {\n return !(\n isEqual(notificationItem.id, action.payload.id) &&\n notificationItem.resource === action.payload.resource\n );\n });\n\n return [\n ...newState,\n {\n ...action.payload,\n isRunning: true,\n },\n ];\n }\n case ActionTypes.REMOVE:\n return state.filter(\n (notificationItem: IUndoableQueue) =>\n !(\n isEqual(notificationItem.id, action.payload.id) &&\n notificationItem.resource === action.payload.resource\n ),\n );\n case ActionTypes.DECREASE_NOTIFICATION_SECOND:\n return state.map((notificationItem: IUndoableQueue) => {\n if (\n isEqual(notificationItem.id, action.payload.id) &&\n notificationItem.resource === action.payload.resource\n ) {\n return {\n ...notificationItem,\n seconds: action.payload.seconds - 1000,\n };\n }\n return notificationItem;\n });\n default:\n return state;\n }\n};\n\nexport const UndoableQueueContextProvider: React.FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const [notifications, notificationDispatch] = useReducer(\n undoableQueueReducer,\n initialState,\n );\n\n const notificationData = { notifications, notificationDispatch };\n\n return (\n <UndoableQueueContext.Provider value={notificationData}>\n {children}\n {typeof window !== \"undefined\" &&\n notifications.map((notification) => (\n <UndoableQueue\n key={`${notification.id}-${notification.resource}-queue`}\n notification={notification}\n />\n ))}\n </UndoableQueueContext.Provider>\n );\n};\n","import {\n pickDataProvider,\n pickNotDeprecated,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\n\nimport {\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n useOnError,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseRecord,\n CreateResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype useCreateParams<TData, TError, TVariables> = {\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * Values for mutation function\n */\n values: TVariables;\n /**\n * Meta data for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Meta data for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n */\n invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateResponse<TData>, TError, TVariables>;\n\nexport type UseCreateReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n CreateResponse<TData>,\n TError,\n useCreateParams<TData, TError, TVariables>,\n unknown\n>;\n\nexport type UseCreateProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n CreateResponse<TData>,\n TError,\n useCreateParams<TData, TError, TVariables>,\n unknown\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCreate` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses `create` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCreate = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseCreateProps<TData, TError, TVariables> = {}): UseCreateReturnType<\n TData,\n TError,\n TVariables\n> &\n UseLoadingOvertimeReturnType => {\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const dataProvider = useDataProvider();\n const invalidateStore = useInvalidate();\n const { resources, select } = useResource();\n const translate = useTranslate();\n const publish = usePublish();\n const { log } = useLog();\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n CreateResponse<TData>,\n TError,\n useCreateParams<TData, TError, TVariables>,\n unknown\n >({\n mutationFn: ({\n resource: resourceName,\n values,\n meta,\n metaData,\n dataProviderName,\n }: useCreateParams<TData, TError, TVariables>) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n return dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n ).create<TData, TVariables>({\n resource: resource.name,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n },\n onSuccess: (\n data,\n {\n resource: resourceName,\n successNotification: successNotificationFromProp,\n dataProviderName: dataProviderNameFromProp,\n invalidates = [\"list\", \"many\"],\n values,\n meta,\n metaData,\n },\n ) => {\n const { resource, identifier } = select(resourceName);\n const resourceSingular = textTransformers.singular(identifier);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const notificationConfig =\n typeof successNotificationFromProp === \"function\"\n ? successNotificationFromProp(data, values, identifier)\n : successNotificationFromProp;\n\n handleNotification(notificationConfig, {\n key: `create-${identifier}-notification`,\n message: translate(\n \"notifications.createSuccess\",\n {\n resource: translate(\n `${identifier}.${identifier}`,\n resourceSingular,\n ),\n },\n `Successfully created ${resourceSingular}`,\n ),\n description: translate(\"notifications.success\", \"Success\"),\n type: \"success\",\n });\n\n invalidateStore({\n resource: identifier,\n dataProviderName,\n invalidates,\n });\n\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"created\",\n payload: {\n ids: data?.data?.id ? [data.data.id] : undefined,\n },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"create\",\n resource: resource.name,\n data: values,\n meta: {\n dataProviderName,\n id: data?.data?.id ?? undefined,\n ...rest,\n },\n });\n },\n onError: (\n err: TError,\n {\n resource: resourceName,\n errorNotification: errorNotificationFromProp,\n values,\n },\n ) => {\n checkError(err);\n\n const { identifier } = select(resourceName);\n\n const resourceSingular = textTransformers.singular(identifier);\n\n const notificationConfig =\n typeof errorNotificationFromProp === \"function\"\n ? errorNotificationFromProp(err, values, identifier)\n : errorNotificationFromProp;\n\n handleNotification(notificationConfig, {\n key: `create-${identifier}-notification`,\n description: err.message,\n message: translate(\n \"notifications.createError\",\n {\n resource: translate(\n `${identifier}.${identifier}`,\n resourceSingular,\n ),\n statusCode: err.statusCode,\n },\n `There was an error creating ${resourceSingular} (status code: ${err.statusCode})`,\n ),\n type: \"error\",\n });\n },\n mutationKey: keys().data().mutation(\"create\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useCreate\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { ActionTypes } from \"@contexts/undoableQueue\";\nimport {\n pickDataProvider,\n pickNotDeprecated,\n queryKeysReplacement,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useCancelNotification,\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n useMutationMode,\n useOnError,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n DeleteOneResponse,\n GetListResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n MutationMode,\n PrevContext as DeleteContext,\n PreviousQuery,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteParams<TData, TError, TVariables> = {\n /**\n * id for mutation function\n */\n id: BaseKey;\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)\n */\n mutationMode?: MutationMode;\n /**\n * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n */\n undoableTimeout?: number;\n /**\n * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n */\n onCancel?: (cancelMutation: () => void) => void;\n /**\n * Metadata query for dataProvider\n */\n meta?: MetaQuery;\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default \"default\"\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n */\n invalidates?: Array<keyof IQueryKeys>;\n /**\n * Values for mutation function\n */\n values?: TVariables;\n} & SuccessErrorNotification<DeleteOneResponse<TData>, TError, BaseKey>;\n\nexport type UseDeleteReturnType<\n TData extends BaseRecord = BaseRecord,\n TError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n DeleteOneResponse<TData>,\n TError,\n DeleteParams<TData, TError, TVariables>,\n DeleteContext<TData>\n> &\n UseLoadingOvertimeReturnType;\n\nexport type UseDeleteProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n DeleteOneResponse<TData>,\n TError,\n DeleteParams<TData, TError, TVariables>,\n DeleteContext<TData>\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDelete` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for delete mutations.\n *\n * It uses `deleteOne` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDelete} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDelete = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseDeleteProps<TData, TError, TVariables> = {}): UseDeleteReturnType<\n TData,\n TError,\n TVariables\n> => {\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const dataProvider = useDataProvider();\n\n const { resources, select } = useResource();\n const queryClient = useQueryClient();\n\n const {\n mutationMode: mutationModeContext,\n undoableTimeout: undoableTimeoutContext,\n } = useMutationMode();\n\n const { notificationDispatch } = useCancelNotification();\n const translate = useTranslate();\n const publish = usePublish();\n const { log } = useLog();\n const handleNotification = useHandleNotification();\n const invalidateStore = useInvalidate();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n DeleteOneResponse<TData>,\n TError,\n DeleteParams<TData, TError, TVariables>,\n DeleteContext<TData>\n >({\n mutationFn: ({\n id,\n mutationMode,\n undoableTimeout,\n resource: resourceName,\n onCancel,\n meta,\n metaData,\n dataProviderName,\n values,\n }) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n const undoableTimeoutPropOrContext =\n undoableTimeout ?? undoableTimeoutContext;\n\n if (!(mutationModePropOrContext === \"undoable\")) {\n return dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n ).deleteOne<TData, TVariables>({\n resource: resource.name,\n id,\n meta: combinedMeta,\n metaData: combinedMeta,\n variables: values,\n });\n }\n\n const deletePromise = new Promise<DeleteOneResponse<TData>>(\n (resolve, reject) => {\n const doMutation = () => {\n dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n )\n .deleteOne<TData, TVariables>({\n resource: resource.name,\n id,\n meta: combinedMeta,\n metaData: combinedMeta,\n variables: values,\n })\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n };\n\n const cancelMutation = () => {\n reject({ message: \"mutationCancelled\" });\n };\n\n if (onCancel) {\n onCancel(cancelMutation);\n }\n\n notificationDispatch({\n type: ActionTypes.ADD,\n payload: {\n id,\n resource: identifier,\n cancelMutation: cancelMutation,\n doMutation: doMutation,\n seconds: undoableTimeoutPropOrContext,\n isSilent: !!onCancel,\n },\n });\n },\n );\n return deletePromise;\n },\n onMutate: async ({\n id,\n resource: resourceName,\n mutationMode,\n dataProviderName,\n meta,\n metaData,\n }) => {\n const { identifier } = select(resourceName);\n\n const {\n gqlMutation: _,\n gqlQuery: __,\n ...preferredMeta\n } = pickNotDeprecated(meta, metaData) ?? {};\n\n const queryKey = queryKeysReplacement(preferLegacyKeys)(\n identifier,\n pickDataProvider(identifier, dataProviderName, resources),\n preferredMeta,\n );\n\n const resourceKeys = keys()\n .data(pickDataProvider(identifier, dataProviderName, resources))\n .resource(identifier);\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n await queryClient.cancelQueries(\n resourceKeys.get(preferLegacyKeys),\n undefined,\n {\n silent: true,\n },\n );\n\n const previousQueries: PreviousQuery<TData>[] =\n queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n if (mutationModePropOrContext !== \"pessimistic\") {\n // Set the previous queries to the new ones:\n queryClient.setQueriesData(\n resourceKeys\n .action(\"list\")\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (!previous) {\n return null;\n }\n const data = previous.data.filter(\n (record: TData) => record.id?.toString() !== id.toString(),\n );\n\n return {\n data,\n total: previous.total - 1,\n };\n },\n );\n\n queryClient.setQueriesData(\n resourceKeys.action(\"many\").get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (!previous) {\n return null;\n }\n const data = previous.data.filter((record: TData) => {\n return record.id?.toString() !== id?.toString();\n });\n\n return {\n ...previous,\n data,\n };\n },\n );\n }\n\n return {\n previousQueries,\n queryKey,\n };\n },\n onSettled: (\n _data,\n _error,\n {\n id,\n resource: resourceName,\n dataProviderName,\n invalidates = [\"list\", \"many\"],\n },\n ) => {\n const { identifier } = select(resourceName);\n\n // invalidate the cache for the list and many queries:\n invalidateStore({\n resource: identifier,\n dataProviderName: pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n ),\n invalidates,\n });\n\n notificationDispatch({\n type: ActionTypes.REMOVE,\n payload: { id, resource: identifier },\n });\n },\n onSuccess: (\n _data,\n {\n id,\n resource: resourceName,\n successNotification,\n dataProviderName: dataProviderNameFromProp,\n meta,\n metaData,\n },\n context,\n ) => {\n const { resource, identifier } = select(resourceName);\n const resourceSingular = textTransformers.singular(identifier);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n // Remove the queries from the cache:\n queryClient.removeQueries(context?.queryKey.detail(id));\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(_data, id, identifier)\n : successNotification;\n\n handleNotification(notificationConfig, {\n key: `${id}-${identifier}-notification`,\n description: translate(\"notifications.success\", \"Success\"),\n message: translate(\n \"notifications.deleteSuccess\",\n {\n resource: translate(\n `${identifier}.${identifier}`,\n resourceSingular,\n ),\n },\n `Successfully deleted a ${resourceSingular}`,\n ),\n type: \"success\",\n });\n\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"deleted\",\n payload: {\n ids: [id],\n },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"delete\",\n resource: resource.name,\n meta: {\n id,\n dataProviderName,\n ...rest,\n },\n });\n\n // Remove the queries from the cache:\n queryClient.removeQueries(context?.queryKey.detail(id));\n },\n onError: (\n err: TError,\n { id, resource: resourceName, errorNotification },\n context,\n ) => {\n const { identifier } = select(resourceName);\n\n // set back the queries to the context:\n if (context) {\n for (const query of context.previousQueries) {\n queryClient.setQueryData(query[0], query[1]);\n }\n }\n\n if (err.message !== \"mutationCancelled\") {\n checkError(err);\n\n const resourceSingular = textTransformers.singular(identifier);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, id, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${id}-${identifier}-notification`,\n message: translate(\n \"notifications.deleteError\",\n {\n resource: resourceSingular,\n statusCode: err.statusCode,\n },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n }\n },\n mutationKey: keys().data().mutation(\"delete\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useDelete\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\n\nimport {\n handleMultiple,\n pickDataProvider,\n pickNotDeprecated,\n} from \"@definitions\";\nimport {\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseRecord,\n CreateManyResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype useCreateManyParams<TData, TError, TVariables> = {\n resource: string;\n values: TVariables[];\n meta?: MetaQuery;\n metaData?: MetaQuery;\n dataProviderName?: string;\n invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateManyResponse<TData>, TError, TVariables[]>;\n\nexport type UseCreateManyReturnType<\n TData extends BaseRecord = BaseRecord,\n TError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n CreateManyResponse<TData>,\n TError,\n useCreateManyParams<TData, TError, TVariables>,\n unknown\n>;\n\nexport type UseCreateManyProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n CreateManyResponse<TData>,\n TError,\n useCreateManyParams<TData, TError, TVariables>\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCreateMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple create mutations.\n *\n * It uses `createMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useCreateMany = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseCreateManyProps<TData, TError, TVariables> = {}): UseCreateManyReturnType<\n TData,\n TError,\n TVariables\n> &\n UseLoadingOvertimeReturnType => {\n const dataProvider = useDataProvider();\n const { resources, select } = useResource();\n const translate = useTranslate();\n const publish = usePublish();\n const handleNotification = useHandleNotification();\n const invalidateStore = useInvalidate();\n const { log } = useLog();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n CreateManyResponse<TData>,\n TError,\n useCreateManyParams<TData, TError, TVariables>\n >({\n mutationFn: ({\n resource: resourceName,\n values,\n meta,\n metaData,\n dataProviderName,\n }: useCreateManyParams<TData, TError, TVariables>) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const selectedDataProvider = dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n );\n\n if (selectedDataProvider.createMany) {\n return selectedDataProvider.createMany<TData, TVariables>({\n resource: resource.name,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n }\n return handleMultiple(\n values.map((val) =>\n selectedDataProvider.create<TData, TVariables>({\n resource: resource.name,\n variables: val,\n meta: combinedMeta,\n metaData: combinedMeta,\n }),\n ),\n );\n },\n onSuccess: (\n response,\n {\n resource: resourceName,\n successNotification,\n dataProviderName: dataProviderNameFromProp,\n invalidates = [\"list\", \"many\"],\n values,\n meta,\n metaData,\n },\n ) => {\n const { resource, identifier } = select(resourceName);\n const resourcePlural = textTransformers.plural(identifier);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(response, values, identifier)\n : successNotification;\n\n handleNotification(notificationConfig, {\n key: `createMany-${identifier}-notification`,\n message: translate(\n \"notifications.createSuccess\",\n {\n resource: translate(`${identifier}.${identifier}`, identifier),\n },\n `Successfully created ${resourcePlural}`,\n ),\n description: translate(\"notifications.success\", \"Success\"),\n type: \"success\",\n });\n\n invalidateStore({\n resource: identifier,\n dataProviderName,\n invalidates,\n });\n\n const ids = response?.data\n .filter((item) => item?.id !== undefined)\n .map((item) => item.id!);\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"created\",\n payload: {\n ids,\n },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"createMany\",\n resource: resource.name,\n data: values,\n meta: {\n dataProviderName,\n ids,\n ...rest,\n },\n });\n },\n onError: (\n err: TError,\n { resource: resourceName, errorNotification, values },\n ) => {\n const { identifier } = select(resourceName);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, values, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `createMany-${identifier}-notification`,\n description: err.message,\n message: translate(\n \"notifications.createError\",\n {\n resource: translate(`${identifier}.${identifier}`, identifier),\n statusCode: err.statusCode,\n },\n `There was an error creating ${identifier} (status code: ${err.statusCode}`,\n ),\n type: \"error\",\n });\n },\n mutationKey: keys().data().mutation(\"createMany\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useCreateMany\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { ActionTypes } from \"@contexts/undoableQueue\";\nimport {\n handleMultiple,\n pickDataProvider,\n pickNotDeprecated,\n queryKeysReplacement,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useCancelNotification,\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n useMutationMode,\n useOnError,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n GetListResponse,\n GetManyResponse,\n GetOneResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n MutationMode,\n OptimisticUpdateManyMapType,\n PrevContext as UpdateContext,\n QueryResponse,\n SuccessErrorNotification,\n UpdateManyResponse,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype UpdateManyParams<TData, TError, TVariables> = {\n /**\n * ids for mutation function\n */\n ids: BaseKey[];\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)\n */\n mutationMode?: MutationMode;\n /**\n * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n */\n undoableTimeout?: number;\n /**\n * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n */\n onCancel?: (cancelMutation: () => void) => void;\n /**\n * Values for mutation function\n */\n values: TVariables;\n /**\n * meta data for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * meta data for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default \"default\"\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n */\n invalidates?: Array<keyof IQueryKeys>;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n * @default {\n * list: true,\n * many: true,\n * detail: true,\n * }\n */\n optimisticUpdateMap?: OptimisticUpdateManyMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n UpdateManyResponse<TData>,\n TError,\n { ids: BaseKey[]; values: TVariables }\n>;\n\ntype UseUpdateManyReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n UpdateManyResponse<TData>,\n TError,\n UpdateManyParams<TData, TError, TVariables>,\n UpdateContext<TData>\n> &\n UseLoadingOvertimeReturnType;\n\nexport type UseUpdateManyProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n UpdateManyResponse<TData>,\n TError,\n UpdateManyParams<TData, TError, TVariables>,\n UpdateContext<TData>\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useUpdateMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple update mutations.\n *\n * It uses `updateMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdateMany = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseUpdateManyProps<TData, TError, TVariables> = {}): UseUpdateManyReturnType<\n TData,\n TError,\n TVariables\n> => {\n const { resources, select } = useResource();\n const queryClient = useQueryClient();\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const {\n mutationMode: mutationModeContext,\n undoableTimeout: undoableTimeoutContext,\n } = useMutationMode();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const { notificationDispatch } = useCancelNotification();\n const publish = usePublish();\n const handleNotification = useHandleNotification();\n const invalidateStore = useInvalidate();\n const { log } = useLog();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n UpdateManyResponse<TData>,\n TError,\n UpdateManyParams<TData, TError, TVariables>,\n UpdateContext<TData>\n >({\n mutationFn: ({\n ids,\n values,\n resource: resourceName,\n onCancel,\n mutationMode,\n undoableTimeout,\n meta,\n metaData,\n dataProviderName,\n }: UpdateManyParams<TData, TError, TVariables>) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n const undoableTimeoutPropOrContext =\n undoableTimeout ?? undoableTimeoutContext;\n\n const selectedDataProvider = dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n );\n\n const mutationFn = () => {\n if (selectedDataProvider.updateMany) {\n return selectedDataProvider.updateMany<TData, TVariables>({\n resource: resource.name,\n ids,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n }\n return handleMultiple(\n ids.map((id) =>\n selectedDataProvider.update<TData, TVariables>({\n resource: resource.name,\n id,\n variables: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n }),\n ),\n );\n };\n\n if (!(mutationModePropOrContext === \"undoable\")) {\n return mutationFn();\n }\n\n const updatePromise = new Promise<UpdateManyResponse<TData>>(\n (resolve, reject) => {\n const doMutation = () => {\n mutationFn()\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n };\n\n const cancelMutation = () => {\n reject({ message: \"mutationCancelled\" });\n };\n\n if (onCancel) {\n onCancel(cancelMutation);\n }\n\n notificationDispatch({\n type: ActionTypes.ADD,\n payload: {\n id: ids,\n resource: identifier,\n cancelMutation: cancelMutation,\n doMutation: doMutation,\n seconds: undoableTimeoutPropOrContext,\n isSilent: !!onCancel,\n },\n });\n },\n );\n return updatePromise;\n },\n onMutate: async ({\n resource: resourceName,\n ids,\n values,\n mutationMode,\n dataProviderName,\n meta,\n metaData,\n optimisticUpdateMap = { list: true, many: true, detail: true },\n }) => {\n const { identifier } = select(resourceName);\n const {\n gqlMutation: _,\n gqlQuery: __,\n ...preferredMeta\n } = pickNotDeprecated(meta, metaData) ?? {};\n\n const queryKey = queryKeysReplacement(preferLegacyKeys)(\n identifier,\n pickDataProvider(identifier, dataProviderName, resources),\n preferredMeta,\n );\n\n const resourceKeys = keys()\n .data(pickDataProvider(identifier, dataProviderName, resources))\n .resource(identifier);\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n await queryClient.cancelQueries(\n resourceKeys.get(preferLegacyKeys),\n undefined,\n {\n silent: true,\n },\n );\n\n const previousQueries = queryClient.getQueriesData<QueryResponse<TData>>(\n resourceKeys.get(preferLegacyKeys),\n );\n\n if (mutationModePropOrContext !== \"pessimistic\") {\n if (optimisticUpdateMap.list) {\n // Set the previous queries to the new ones:\n queryClient.setQueriesData(\n resourceKeys\n .action(\"list\")\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.list === \"function\") {\n return optimisticUpdateMap.list(previous, values, ids);\n }\n\n if (!previous) {\n return null;\n }\n\n const data = previous.data.map((record: TData) => {\n if (\n record.id !== undefined &&\n ids\n .filter((id) => id !== undefined)\n .map(String)\n .includes(record.id.toString())\n ) {\n return {\n ...record,\n ...values,\n };\n }\n\n return record;\n });\n\n return {\n ...previous,\n data,\n };\n },\n );\n }\n\n if (optimisticUpdateMap.many) {\n queryClient.setQueriesData(\n resourceKeys.action(\"many\").get(preferLegacyKeys),\n (previous?: GetManyResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.many === \"function\") {\n return optimisticUpdateMap.many(previous, values, ids);\n }\n\n if (!previous) {\n return null;\n }\n\n const data = previous.data.map((record: TData) => {\n if (\n record.id !== undefined &&\n ids\n .filter((id) => id !== undefined)\n .map(String)\n .includes(record.id.toString())\n ) {\n return {\n ...record,\n ...values,\n };\n }\n return record;\n });\n return {\n ...previous,\n data,\n };\n },\n );\n }\n\n if (optimisticUpdateMap.detail) {\n for (const id of ids) {\n queryClient.setQueriesData(\n resourceKeys\n .action(\"one\")\n .id(id)\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetOneResponse<TData> | null) => {\n if (typeof optimisticUpdateMap.detail === \"function\") {\n return optimisticUpdateMap.detail(previous, values, id);\n }\n\n if (!previous) {\n return null;\n }\n\n const data = {\n ...previous.data,\n ...values,\n };\n return {\n ...previous,\n data,\n };\n },\n );\n }\n }\n }\n\n return {\n previousQueries,\n queryKey,\n };\n },\n onSettled: (\n _data,\n _error,\n { ids, resource: resourceName, dataProviderName },\n ) => {\n const { identifier } = select(resourceName);\n\n // invalidate the cache for the list and many queries:\n invalidateStore({\n resource: identifier,\n invalidates: [\"list\", \"many\"],\n dataProviderName: pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n ),\n });\n\n ids.forEach((id) =>\n invalidateStore({\n resource: identifier,\n invalidates: [\"detail\"],\n dataProviderName: pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n ),\n id,\n }),\n );\n\n notificationDispatch({\n type: ActionTypes.REMOVE,\n payload: { id: ids, resource: identifier },\n });\n },\n onSuccess: (\n data,\n {\n ids,\n resource: resourceName,\n meta,\n metaData,\n dataProviderName: dataProviderNameFromProp,\n successNotification,\n values,\n },\n context,\n ) => {\n const { resource, identifier } = select(resourceName);\n const resourceSingular = textTransformers.singular(identifier);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, { ids, values }, identifier)\n : successNotification;\n\n handleNotification(notificationConfig, {\n key: `${ids}-${identifier}-notification`,\n description: translate(\"notifications.success\", \"Successful\"),\n message: translate(\n \"notifications.editSuccess\",\n {\n resource: translate(`${identifier}.${identifier}`, identifier),\n },\n `Successfully updated ${resourceSingular}`,\n ),\n type: \"success\",\n });\n\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"updated\",\n payload: {\n ids: ids.map(String),\n },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const previousData: any[] = [];\n if (context) {\n ids.forEach((id) => {\n const queryData = queryClient.getQueryData<UpdateManyResponse<TData>>(\n context.queryKey.detail(id),\n );\n\n previousData.push(\n Object.keys(values || {}).reduce<any>((acc, item: any) => {\n acc[item] = queryData?.data?.[item];\n return acc;\n }, {}),\n );\n });\n }\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"updateMany\",\n resource: resource.name,\n data: values,\n previousData,\n meta: {\n ids,\n dataProviderName,\n ...rest,\n },\n });\n },\n onError: (\n err: TError,\n { ids, resource: resourceName, errorNotification, values },\n context,\n ) => {\n const { identifier } = select(resourceName);\n\n // set back the queries to the context:\n if (context) {\n for (const query of context.previousQueries) {\n queryClient.setQueryData(query[0], query[1]);\n }\n }\n\n if (err.message !== \"mutationCancelled\") {\n checkError?.(err);\n\n const resourceSingular = textTransformers.singular(identifier);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, { ids, values }, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${ids}-${identifier}-updateMany-error-notification`,\n message: translate(\n \"notifications.editError\",\n {\n resource: resourceSingular,\n statusCode: err.statusCode,\n },\n `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n }\n },\n mutationKey: keys().data().mutation(\"updateMany\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useUpdateMany\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { ActionTypes } from \"@contexts/undoableQueue\";\nimport {\n handleMultiple,\n pickDataProvider,\n pickNotDeprecated,\n queryKeysReplacement,\n useActiveAuthProvider,\n} from \"@definitions\";\nimport {\n useCancelNotification,\n useDataProvider,\n useHandleNotification,\n useInvalidate,\n useLog,\n useMeta,\n useMutationMode,\n useOnError,\n usePublish,\n useRefineContext,\n useResource,\n useTranslate,\n} from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n BaseKey,\n BaseRecord,\n DeleteManyResponse,\n GetListResponse,\n HttpError,\n IQueryKeys,\n MetaQuery,\n MutationMode,\n PrevContext as DeleteContext,\n PreviousQuery,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteManyParams<TData, TError, TVariables> = {\n /**\n * ids for mutation function\n */\n ids: BaseKey[];\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)\n */\n mutationMode?: MutationMode;\n /**\n * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n */\n undoableTimeout?: number;\n /**\n * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n */\n onCancel?: (cancelMutation: () => void) => void;\n /**\n * Metadata query for dataProvider\n */\n meta?: MetaQuery;\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default \"default\"\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n */\n invalidates?: Array<keyof IQueryKeys>;\n /**\n * Values for mutation function\n */\n values?: TVariables;\n} & SuccessErrorNotification<DeleteManyResponse<TData>, TError, BaseKey[]>;\n\nexport type UseDeleteManyReturnType<\n TData extends BaseRecord = BaseRecord,\n TError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n DeleteManyResponse<TData>,\n TError,\n DeleteManyParams<TData, TError, TVariables>,\n unknown\n> &\n UseLoadingOvertimeReturnType;\n\nexport type UseDeleteManyProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n DeleteManyResponse<TData>,\n TError,\n DeleteManyParams<TData, TError, TVariables>,\n DeleteContext<TData>\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDeleteMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple delete mutations.\n *\n * It uses `deleteMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDeleteMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDeleteMany = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseDeleteManyProps<TData, TError, TVariables> = {}): UseDeleteManyReturnType<\n TData,\n TError,\n TVariables\n> => {\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const {\n mutationMode: mutationModeContext,\n undoableTimeout: undoableTimeoutContext,\n } = useMutationMode();\n const dataProvider = useDataProvider();\n const { notificationDispatch } = useCancelNotification();\n const translate = useTranslate();\n const publish = usePublish();\n const handleNotification = useHandleNotification();\n const invalidateStore = useInvalidate();\n const { log } = useLog();\n const { resources, select } = useResource();\n const queryClient = useQueryClient();\n const getMeta = useMeta();\n const {\n options: { textTransformers },\n } = useRefineContext();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n DeleteManyResponse<TData>,\n TError,\n DeleteManyParams<TData, TError, TVariables>,\n DeleteContext<TData>\n >({\n mutationFn: ({\n resource: resourceName,\n ids,\n mutationMode,\n undoableTimeout,\n onCancel,\n meta,\n metaData,\n dataProviderName,\n values,\n }: DeleteManyParams<TData, TError, TVariables>) => {\n const { resource, identifier } = select(resourceName);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n const undoableTimeoutPropOrContext =\n undoableTimeout ?? undoableTimeoutContext;\n\n const selectedDataProvider = dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n );\n\n const mutationFn = () => {\n if (selectedDataProvider.deleteMany) {\n return selectedDataProvider.deleteMany<TData, TVariables>({\n resource: resource.name,\n ids,\n meta: combinedMeta,\n metaData: combinedMeta,\n variables: values,\n });\n }\n return handleMultiple(\n ids.map((id) =>\n selectedDataProvider.deleteOne<TData, TVariables>({\n resource: resource.name,\n id,\n meta: combinedMeta,\n metaData: combinedMeta,\n variables: values,\n }),\n ),\n );\n };\n\n if (!(mutationModePropOrContext === \"undoable\")) {\n return mutationFn();\n }\n\n const updatePromise = new Promise<DeleteManyResponse<TData>>(\n (resolve, reject) => {\n const doMutation = () => {\n mutationFn()\n .then((result) => resolve(result))\n .catch((err) => reject(err));\n };\n\n const cancelMutation = () => {\n reject({ message: \"mutationCancelled\" });\n };\n\n if (onCancel) {\n onCancel(cancelMutation);\n }\n\n notificationDispatch({\n type: ActionTypes.ADD,\n payload: {\n id: ids,\n resource: identifier,\n cancelMutation: cancelMutation,\n doMutation: doMutation,\n seconds: undoableTimeoutPropOrContext,\n isSilent: !!onCancel,\n },\n });\n },\n );\n return updatePromise;\n },\n onMutate: async ({\n ids,\n resource: resourceName,\n mutationMode,\n dataProviderName,\n meta,\n metaData,\n }) => {\n const { identifier } = select(resourceName);\n\n const {\n gqlMutation: _,\n gqlQuery: __,\n ...preferredMeta\n } = pickNotDeprecated(meta, metaData) ?? {};\n\n const queryKey = queryKeysReplacement(preferLegacyKeys)(\n identifier,\n pickDataProvider(identifier, dataProviderName, resources),\n preferredMeta,\n );\n\n const resourceKeys = keys()\n .data(pickDataProvider(identifier, dataProviderName, resources))\n .resource(identifier);\n\n const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n await queryClient.cancelQueries(\n resourceKeys.get(preferLegacyKeys),\n undefined,\n {\n silent: true,\n },\n );\n\n const previousQueries: PreviousQuery<TData>[] =\n queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n if (mutationModePropOrContext !== \"pessimistic\") {\n // Set the previous queries to the new ones:\n queryClient.setQueriesData(\n resourceKeys\n .action(\"list\")\n .params(preferredMeta ?? {})\n .get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (!previous) {\n return null;\n }\n\n const data = previous.data.filter(\n (item) =>\n item.id && !ids.map(String).includes(item.id.toString()),\n );\n\n return {\n data,\n total: previous.total - 1,\n };\n },\n );\n\n queryClient.setQueriesData(\n resourceKeys.action(\"many\").get(preferLegacyKeys),\n (previous?: GetListResponse<TData> | null) => {\n if (!previous) {\n return null;\n }\n\n const data = previous.data.filter((record: TData) => {\n if (record.id) {\n return !ids.map(String).includes(record.id.toString());\n }\n return false;\n });\n\n return {\n ...previous,\n data,\n };\n },\n );\n\n for (const id of ids) {\n queryClient.setQueriesData(\n resourceKeys\n .action(\"one\")\n .id(id)\n .params(preferredMeta)\n .get(preferLegacyKeys),\n (previous?: any | null) => {\n if (!previous || previous.data.id === id) {\n return null;\n }\n return {\n ...previous,\n };\n },\n );\n }\n }\n\n return {\n previousQueries,\n queryKey,\n };\n },\n // Always refetch after error or success:\n onSettled: (\n _data,\n _error,\n {\n resource: resourceName,\n ids,\n dataProviderName,\n invalidates = [\"list\", \"many\"],\n },\n ) => {\n const { identifier } = select(resourceName);\n\n // invalidate the cache for the list and many queries:\n invalidateStore({\n resource: identifier,\n dataProviderName: pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n ),\n invalidates,\n });\n\n notificationDispatch({\n type: ActionTypes.REMOVE,\n payload: { id: ids, resource: identifier },\n });\n },\n onSuccess: (\n _data,\n {\n ids,\n resource: resourceName,\n meta,\n metaData,\n dataProviderName: dataProviderNameFromProp,\n successNotification,\n },\n context,\n ) => {\n const { resource, identifier } = select(resourceName);\n\n const dataProviderName = pickDataProvider(\n identifier,\n dataProviderNameFromProp,\n resources,\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n // Remove the queries from the cache:\n ids.forEach((id) =>\n queryClient.removeQueries(context?.queryKey.detail(id)),\n );\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(_data, ids, identifier)\n : successNotification;\n\n handleNotification(notificationConfig, {\n key: `${ids}-${identifier}-notification`,\n description: translate(\"notifications.success\", \"Success\"),\n message: translate(\n \"notifications.deleteSuccess\",\n {\n resource: translate(`${identifier}.${identifier}`, identifier),\n },\n `Successfully deleted ${identifier}`,\n ),\n type: \"success\",\n });\n\n publish?.({\n channel: `resources/${resource.name}`,\n type: \"deleted\",\n payload: { ids },\n date: new Date(),\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const {\n fields: _fields,\n operation: _operation,\n variables: _variables,\n ...rest\n } = combinedMeta || {};\n log?.mutate({\n action: \"deleteMany\",\n resource: resource.name,\n meta: {\n ids,\n dataProviderName,\n ...rest,\n },\n });\n\n // Remove the queries from the cache:\n ids.forEach((id) =>\n queryClient.removeQueries(context?.queryKey.detail(id)),\n );\n },\n onError: (\n err,\n { ids, resource: resourceName, errorNotification },\n context,\n ) => {\n const { identifier } = select(resourceName);\n\n // set back the queries to the context:\n if (context) {\n for (const query of context.previousQueries) {\n queryClient.setQueryData(query[0], query[1]);\n }\n }\n\n if (err.message !== \"mutationCancelled\") {\n checkError(err);\n const resourceSingular = textTransformers.singular(identifier);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, ids, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${ids}-${identifier}-notification`,\n message: translate(\n \"notifications.deleteError\",\n {\n resource: resourceSingular,\n statusCode: err.statusCode,\n },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n }\n },\n mutationKey: keys().data().mutation(\"deleteMany\").get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useDeleteMany\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { pickNotDeprecated } from \"@definitions/index\";\nimport { useDataProvider, useResource } from \"@hooks\";\n\nexport const useApiUrl = (dataProviderName?: string): string => {\n const dataProvider = useDataProvider();\n const { resource } = useResource();\n\n const { getApiUrl } = dataProvider(\n dataProviderName ??\n pickNotDeprecated(resource?.meta, resource?.options)?.dataProviderName,\n );\n\n return getApiUrl();\n};\n","import {\n QueryObserverResult,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport { pickNotDeprecated, useActiveAuthProvider } from \"@definitions/helpers\";\nimport {\n useDataProvider,\n useHandleNotification,\n useMeta,\n useOnError,\n useTranslate,\n} from \"@hooks\";\nimport {\n BaseRecord,\n CrudFilters,\n CrudSorting,\n CustomResponse,\n HttpError,\n MetaQuery,\n Prettify,\n SuccessErrorNotification,\n} from \"../../interfaces\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\nimport { useKeys } from \"@hooks/useKeys\";\n\ninterface UseCustomConfig<TQuery, TPayload> {\n /**\n * @deprecated `sort` is deprecated, use `sorters` instead.\n */\n sort?: CrudSorting;\n sorters?: CrudSorting;\n filters?: CrudFilters;\n query?: TQuery;\n payload?: TPayload;\n headers?: {};\n}\n\nexport type UseCustomProps<TQueryFnData, TError, TQuery, TPayload, TData> = {\n /**\n * request's URL\n */\n url: string;\n /**\n * request's method (`GET`, `POST`, etc.)\n */\n method: \"get\" | \"delete\" | \"head\" | \"options\" | \"post\" | \"put\" | \"patch\";\n /**\n * The config of your request. You can send headers, payload, query, filters and sorters using this field\n */\n config?: UseCustomConfig<TQuery, TPayload>;\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\"\n */\n queryOptions?: UseQueryOptions<\n CustomResponse<TQueryFnData>,\n TError,\n CustomResponse<TData>\n >;\n /**\n * meta data for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * meta data for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n} & SuccessErrorNotification<\n CustomResponse<TData>,\n TError,\n Prettify<UseCustomConfig<TQuery, TPayload> & MetaQuery>\n> &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustom` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for custom requests.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustom} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TQuery - Values for query params\n * @typeParam TPayload - Values for params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useCustom = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TQuery = unknown,\n TPayload = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n url,\n method,\n config,\n queryOptions,\n successNotification,\n errorNotification,\n meta,\n metaData,\n dataProviderName,\n overtimeOptions,\n}: UseCustomProps<\n TQueryFnData,\n TError,\n TQuery,\n TPayload,\n TData\n>): QueryObserverResult<CustomResponse<TData>, TError> &\n UseLoadingOvertimeReturnType => {\n const dataProvider = useDataProvider();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const translate = useTranslate();\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const preferredMeta = pickNotDeprecated(meta, metaData);\n\n const { custom } = dataProvider(dataProviderName);\n\n const combinedMeta = getMeta({ meta: preferredMeta });\n\n if (custom) {\n const queryResponse = useQuery<\n CustomResponse<TQueryFnData>,\n TError,\n CustomResponse<TData>\n >({\n queryKey: keys()\n .data(dataProviderName)\n .mutation(\"custom\")\n .params({\n method,\n url,\n ...config,\n ...(preferredMeta || {}),\n })\n .get(preferLegacyKeys),\n queryFn: ({ queryKey, pageParam, signal }) =>\n custom<TQueryFnData>({\n url,\n method,\n ...config,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n }),\n ...queryOptions,\n onSuccess: (data) => {\n queryOptions?.onSuccess?.(data);\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, {\n ...config,\n ...combinedMeta,\n })\n : successNotification;\n\n handleNotification(notificationConfig);\n },\n onError: (err: TError) => {\n checkError(err);\n queryOptions?.onError?.(err);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, {\n ...config,\n ...combinedMeta,\n })\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${method}-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useCustom\", preferLegacyKeys),\n },\n });\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResponse.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...queryResponse, overtime: { elapsedTime } };\n }\n throw Error(\"Not implemented custom on data provider.\");\n};\n","import {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n} from \"@tanstack/react-query\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nimport {\n useDataProvider,\n useHandleNotification,\n useTranslate,\n useOnError,\n useMeta,\n} from \"@hooks\";\nimport {\n CreateResponse,\n BaseRecord,\n HttpError,\n SuccessErrorNotification,\n MetaQuery,\n Prettify,\n} from \"../../interfaces\";\nimport { pickNotDeprecated, useActiveAuthProvider } from \"@definitions/helpers\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\nimport { useKeys } from \"@hooks/useKeys\";\n\ninterface UseCustomMutationConfig {\n headers?: {};\n}\n\ntype useCustomMutationParams<TData, TError, TVariables> = {\n url: string;\n method: \"post\" | \"put\" | \"patch\" | \"delete\";\n values: TVariables;\n /**\n * Meta data for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Meta data for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n dataProviderName?: string;\n config?: UseCustomMutationConfig;\n} & SuccessErrorNotification<\n CreateResponse<TData>,\n TError,\n Prettify<UseCustomMutationConfig & MetaQuery>\n>;\n\nexport type UseCustomMutationReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = UseMutationResult<\n CreateResponse<TData>,\n TError,\n useCustomMutationParams<TData, TError, TVariables>,\n unknown\n>;\n\nexport type UseCustomMutationProps<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n> = {\n mutationOptions?: Omit<\n UseMutationOptions<\n CreateResponse<TData>,\n TError,\n useCustomMutationParams<TData, TError, TVariables>,\n unknown\n >,\n \"mutationFn\" | \"onError\" | \"onSuccess\"\n >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustomMutation` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustomMutation} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCustomMutation = <\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n>({\n mutationOptions,\n overtimeOptions,\n}: UseCustomMutationProps<\n TData,\n TError,\n TVariables\n> = {}): UseCustomMutationReturnType<TData, TError, TVariables> &\n UseLoadingOvertimeReturnType => {\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const handleNotification = useHandleNotification();\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const mutation = useMutation<\n CreateResponse<TData>,\n TError,\n useCustomMutationParams<TData, TError, TVariables>,\n unknown\n >(\n ({\n url,\n method,\n values,\n meta,\n metaData,\n dataProviderName,\n config,\n }: useCustomMutationParams<TData, TError, TVariables>) => {\n const combinedMeta = getMeta({\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const { custom } = dataProvider(dataProviderName);\n\n if (custom) {\n return custom<TData>({\n url,\n method,\n payload: values,\n meta: combinedMeta,\n metaData: combinedMeta,\n headers: { ...config?.headers },\n });\n }\n\n throw Error(\"Not implemented custom on data provider.\");\n },\n {\n onSuccess: (\n data,\n {\n successNotification: successNotificationFromProp,\n config,\n meta,\n metaData,\n },\n ) => {\n const notificationConfig =\n typeof successNotificationFromProp === \"function\"\n ? successNotificationFromProp(data, {\n ...config,\n ...(pickNotDeprecated(meta, metaData) || {}),\n })\n : successNotificationFromProp;\n\n handleNotification(notificationConfig);\n },\n onError: (\n err: TError,\n {\n errorNotification: errorNotificationFromProp,\n method,\n config,\n meta,\n metaData,\n },\n ) => {\n checkError(err);\n\n const notificationConfig =\n typeof errorNotificationFromProp === \"function\"\n ? errorNotificationFromProp(err, {\n ...config,\n ...(pickNotDeprecated(meta, metaData) || {}),\n })\n : errorNotificationFromProp;\n\n handleNotification(notificationConfig, {\n key: `${method}-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n mutationKey: keys()\n .data()\n .mutation(\"customMutation\")\n .get(preferLegacyKeys),\n ...mutationOptions,\n meta: {\n ...mutationOptions?.meta,\n ...getXRay(\"useCustomMutation\", preferLegacyKeys),\n },\n },\n );\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: mutation.isLoading,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...mutation, overtime: { elapsedTime } };\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { DataContext } from \"@contexts/data\";\nimport {\n IDataContextProvider,\n IDataMultipleContextProvider,\n} from \"../../interfaces\";\n\nexport const useDataProvider = (): ((\n /**\n * The name of the `data provider` you want to access\n */\n dataProviderName?: string,\n) => IDataContextProvider) => {\n const context =\n useContext<Partial<IDataMultipleContextProvider>>(DataContext);\n\n const handleDataProvider = useCallback(\n (dataProviderName?: string) => {\n if (dataProviderName) {\n const dataProvider = context?.[dataProviderName];\n if (!dataProvider) {\n throw new Error(`\"${dataProviderName}\" Data provider not found`);\n }\n return context[dataProviderName];\n }\n if (context.default) {\n return context.default;\n }\n throw new Error(\n `There is no \"default\" data provider. Please pass dataProviderName.`,\n );\n },\n [context],\n );\n\n return handleDataProvider;\n};\n","import React from \"react\";\nimport { ReactNode } from \"react\";\n\nimport {\n IDataContextProvider,\n IDataMultipleContextProvider,\n} from \"../../interfaces\";\n\nexport const defaultDataProvider = () => {\n return {};\n};\n\nexport const DataContext = React.createContext<\n Partial<IDataMultipleContextProvider>\n>(defaultDataProvider());\n\ntype Props = React.PropsWithChildren<\n Partial<IDataMultipleContextProvider> | IDataContextProvider\n>;\n\nexport const DataContextProvider: React.FC<Props> = ({ children, ...rest }) => {\n let dataProviders;\n if (!rest.getList || !rest.getOne) {\n dataProviders = rest as IDataMultipleContextProvider;\n } else {\n dataProviders = {\n default: rest,\n } as IDataMultipleContextProvider;\n }\n return (\n <DataContext.Provider value={dataProviders}>\n {children}\n </DataContext.Provider>\n );\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n InfiniteData,\n InfiniteQueryObserverResult,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n} from \"@tanstack/react-query\";\n\nimport {\n getNextPageParam,\n getPreviousPageParam,\n handlePaginationParams,\n pickDataProvider,\n pickNotDeprecated,\n useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n useDataProvider,\n useHandleNotification,\n useMeta,\n useOnError,\n useResource,\n useResourceSubscription,\n useTranslate,\n} from \"@hooks\";\nimport {\n BaseRecord,\n CrudFilters,\n CrudSorting,\n GetListResponse,\n HttpError,\n LiveModeProps,\n MetaQuery,\n Pagination,\n Prettify,\n SuccessErrorNotification,\n} from \"../../interfaces\";\n\nimport { useKeys } from \"@hooks/useKeys\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport interface UseInfiniteListConfig {\n pagination?: Pagination;\n hasPagination?: boolean;\n sort?: CrudSorting;\n filters?: CrudFilters;\n}\n\ntype BaseInfiniteListProps = {\n /**\n * Metadata query for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Metadata query for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * Configuration for pagination, sorting and filtering\n * @type [`useInfiniteListConfig`](/docs/api-reference/core/hooks/data/useInfiniteList/#config-parameters)\n * @deprecated `config` property is deprecated. Use `pagination`, `hasPagination`, `sorters` and `filters` instead.\n */\n config?: UseInfiniteListConfig;\n /**\n * Pagination properties\n */\n pagination?: Pagination;\n /**\n * Whether to use server-side pagination or not\n * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * Sorter parameters\n */\n sorters?: CrudSorting;\n /**\n * Filter parameters\n */\n filters?: CrudFilters;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n */\n dataProviderName?: string;\n};\n\nexport type UseInfiniteListProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * Tanstack Query's [useInfiniteQuery](https://tanstack.com/query/v4/docs/react/reference/useInfiniteQuery) options\n */\n queryOptions?: UseInfiniteQueryOptions<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >;\n} & BaseInfiniteListProps &\n SuccessErrorNotification<\n InfiniteData<GetListResponse<TData>>,\n TError,\n Prettify<BaseInfiniteListProps>\n > &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useInfiniteList` is a modified version of `react-query`'s {@link https://tanstack.com/query/latest/docs/react/guides/infinite-queries `useInfiniteQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useInfiniteList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useInfiniteList = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource: resourceFromProp,\n config,\n filters,\n hasPagination,\n pagination,\n sorters,\n queryOptions,\n successNotification,\n errorNotification,\n meta,\n metaData,\n liveMode,\n onLiveEvent,\n liveParams,\n dataProviderName,\n overtimeOptions,\n}: UseInfiniteListProps<\n TQueryFnData,\n TError,\n TData\n>): InfiniteQueryObserverResult<GetListResponse<TData>, TError> &\n UseLoadingOvertimeReturnType => {\n const { resources, resource, identifier } = useResource(resourceFromProp);\n\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: checkError } = useOnError({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n const handleNotification = useHandleNotification();\n const getMeta = useMeta();\n const { keys, preferLegacyKeys } = useKeys();\n\n const pickedDataProvider = pickDataProvider(\n identifier,\n dataProviderName,\n resources,\n );\n const preferredMeta = pickNotDeprecated(meta, metaData);\n const prefferedFilters = pickNotDeprecated(filters, config?.filters);\n const prefferedSorters = pickNotDeprecated(sorters, config?.sort);\n const prefferedHasPagination = pickNotDeprecated(\n hasPagination,\n config?.hasPagination,\n );\n const prefferedPagination = handlePaginationParams({\n pagination,\n configPagination: config?.pagination,\n hasPagination: prefferedHasPagination,\n });\n const isServerPagination = prefferedPagination.mode === \"server\";\n const notificationValues = {\n meta: preferredMeta,\n metaData: preferredMeta,\n filters: prefferedFilters,\n hasPagination: isServerPagination,\n pagination: prefferedPagination,\n sorters: prefferedSorters,\n config: {\n ...config,\n sort: prefferedSorters,\n },\n };\n\n const isEnabled =\n queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n const { getList } = dataProvider(pickedDataProvider);\n\n useResourceSubscription({\n resource: identifier,\n types: [\"*\"],\n params: {\n meta: combinedMeta,\n metaData: combinedMeta,\n pagination: prefferedPagination,\n hasPagination: isServerPagination,\n sort: prefferedSorters,\n sorters: prefferedSorters,\n filters: prefferedFilters,\n subscriptionType: \"useList\",\n ...liveParams,\n },\n channel: `resources/${resource.name}`,\n enabled: isEnabled,\n liveMode,\n onLiveEvent,\n dataProviderName: pickedDataProvider,\n meta: {\n ...combinedMeta,\n dataProviderName,\n },\n });\n\n const queryResponse = useInfiniteQuery<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >({\n queryKey: keys()\n .data(pickedDataProvider)\n .resource(identifier)\n .action(\"infinite\")\n .params({\n ...(preferredMeta || {}),\n filters: prefferedFilters,\n hasPagination: isServerPagination,\n ...(isServerPagination && {\n pagination: prefferedPagination,\n }),\n ...(sorters && {\n sorters,\n }),\n ...(config?.sort && {\n sort: config?.sort,\n }),\n })\n .get(preferLegacyKeys),\n queryFn: ({ queryKey, pageParam, signal }) => {\n const paginationProperties = {\n ...prefferedPagination,\n current: pageParam,\n };\n\n return getList<TQueryFnData>({\n resource: resource.name,\n pagination: paginationProperties,\n hasPagination: isServerPagination,\n filters: prefferedFilters,\n sort: prefferedSorters,\n sorters: prefferedSorters,\n meta: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n metaData: {\n ...combinedMeta,\n queryContext: {\n queryKey,\n pageParam,\n signal,\n },\n },\n }).then(({ data, total, ...rest }) => {\n return {\n data,\n total,\n pagination: paginationProperties,\n ...rest,\n };\n });\n },\n getNextPageParam: (lastPage) => getNextPageParam(lastPage),\n getPreviousPageParam: (lastPage) => getPreviousPageParam(lastPage),\n ...queryOptions,\n onSuccess: (data) => {\n queryOptions?.onSuccess?.(data);\n\n const notificationConfig =\n typeof successNotification === \"function\"\n ? successNotification(data, notificationValues, identifier)\n : successNotification;\n\n handleNotification(notificationConfig);\n },\n onError: (err: TError) => {\n checkError(err);\n queryOptions?.onError?.(err);\n\n const notificationConfig =\n typeof errorNotification === \"function\"\n ? errorNotification(err, notificationValues, identifier)\n : errorNotification;\n\n handleNotification(notificationConfig, {\n key: `${identifier}-useInfiniteList-notification`,\n message: translate(\n \"notifications.error\",\n { statusCode: err.statusCode },\n `Error (status code: ${err.statusCode})`,\n ),\n description: err.message,\n type: \"error\",\n });\n },\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useInfiniteList\", preferLegacyKeys),\n },\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResponse.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import React from \"react\";\n\nimport { ILiveContext, ILiveContextProvider } from \"./ILiveContext\";\n\nexport const LiveContext = React.createContext<ILiveContext>(undefined);\n\nexport const LiveContextProvider: React.FC<ILiveContextProvider> = ({\n liveProvider,\n children,\n}) => {\n return (\n <LiveContext.Provider value={liveProvider}>{children}</LiveContext.Provider>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n InvalidateOptions,\n InvalidateQueryFilters,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { useResource } from \"@hooks/resource\";\nimport { pickDataProvider } from \"@definitions\";\nimport { BaseKey, IQueryKeys } from \"../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nexport type UseInvalidateProp = {\n resource?: string;\n id?: BaseKey;\n dataProviderName?: string;\n invalidates: Array<keyof IQueryKeys> | false;\n invalidationFilters?: InvalidateQueryFilters;\n invalidationOptions?: InvalidateOptions;\n};\n\nexport const useInvalidate = (): ((\n props: UseInvalidateProp,\n) => Promise<void>) => {\n const { resources } = useResource();\n const queryClient = useQueryClient();\n const { keys, preferLegacyKeys } = useKeys();\n\n const invalidate = useCallback(\n async ({\n resource,\n dataProviderName,\n invalidates,\n id,\n invalidationFilters = { type: \"all\", refetchType: \"active\" },\n invalidationOptions = { cancelRefetch: false },\n }: UseInvalidateProp) => {\n if (invalidates === false) {\n return;\n }\n const dp = pickDataProvider(resource, dataProviderName, resources);\n\n const queryKey = keys()\n .data(dp)\n .resource(resource ?? \"\");\n\n await Promise.all(\n invalidates.map((key) => {\n switch (key) {\n case \"all\":\n return queryClient.invalidateQueries(\n keys().data(dp).get(preferLegacyKeys),\n invalidationFilters,\n invalidationOptions,\n );\n case \"list\":\n return queryClient.invalidateQueries(\n queryKey.action(\"list\").get(preferLegacyKeys),\n invalidationFilters,\n invalidationOptions,\n );\n case \"many\":\n return queryClient.invalidateQueries(\n queryKey.action(\"many\").get(preferLegacyKeys),\n invalidationFilters,\n invalidationOptions,\n );\n case \"resourceAll\":\n return queryClient.invalidateQueries(\n queryKey.get(preferLegacyKeys),\n invalidationFilters,\n invalidationOptions,\n );\n case \"detail\":\n return queryClient.invalidateQueries(\n queryKey\n .action(\"one\")\n .id(id || \"\")\n .get(preferLegacyKeys),\n invalidationFilters,\n invalidationOptions,\n );\n default:\n return;\n }\n }),\n );\n\n return;\n },\n [],\n );\n\n return invalidate;\n};\n","import { useContext } from \"react\";\n\nimport { ResourceContext } from \"@contexts/resource\";\nimport {\n Action,\n BaseKey,\n IResourceItem,\n ResourceRouterParams,\n} from \"../../../interfaces\";\nimport { useRouterContext, useResourceWithRoute } from \"@hooks\";\nimport { useRouterType } from \"../../../contexts/router-picker\";\nimport { useParsed } from \"../../router/use-parsed\";\nimport { pickResource } from \"../../../definitions/helpers/pick-resource\";\n\nexport type UseResourceLegacyProps = {\n /**\n * Determines which resource to use for redirection\n * @deprecated resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618\n */\n resourceName?: string;\n /**\n * Determines which resource to use for redirection\n * @default Resource name that it reads from route\n */\n resourceNameOrRouteName?: string;\n /**\n * Adds id to the end of the URL\n * @deprecated resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618\n */\n recordItemId?: BaseKey;\n};\n\n/**\n * Matches the resource by identifier.\n * If not provided, the resource from the route will be returned.\n * If your resource does not explicitly define an identifier, the resource name will be used.\n */\nexport type UseResourceParam = string | undefined;\n\ntype SelectReturnType<T extends boolean> = T extends true\n ? { resource: IResourceItem; identifier: string }\n : { resource: IResourceItem; identifier: string } | undefined;\n\nexport type UseResourceReturnType = {\n resources: IResourceItem[];\n resource?: IResourceItem;\n /**\n * @deprecated Use `resource.name` instead when you need to get the resource name.\n */\n resourceName?: string;\n id?: BaseKey;\n action?: Action;\n select: <T extends boolean = true>(\n resourceName: string,\n force?: T,\n ) => SelectReturnType<T>;\n identifier?: string;\n};\n\ntype UseResourceReturnTypeWithResource = UseResourceReturnType & {\n resource: IResourceItem;\n identifier: string;\n};\n\n/**\n * @deprecated Use `useResource` with `identifier` property instead. (`identifier` does not check by route name in new router)\n */\nexport function useResource(\n props: UseResourceLegacyProps,\n): UseResourceReturnType;\nexport function useResource(): UseResourceReturnType;\nexport function useResource<TIdentifier = UseResourceParam>(\n identifier: TIdentifier,\n): TIdentifier extends NonNullable<UseResourceParam>\n ? UseResourceReturnTypeWithResource\n : UseResourceReturnType;\n/**\n * `useResource` is used to get `resources` that are defined as property of the `<Refine>` component.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/resource/useResource} for more details.\n */\nexport function useResource(\n args?: UseResourceLegacyProps | UseResourceParam,\n): UseResourceReturnType {\n const { resources } = useContext(ResourceContext);\n\n const routerType = useRouterType();\n\n const params = useParsed();\n\n const oldProps = {\n resourceName: args && typeof args !== \"string\" ? args.resourceName : args,\n resourceNameOrRouteName:\n args && typeof args !== \"string\" ? args.resourceNameOrRouteName : args,\n recordItemId:\n args && typeof args !== \"string\" ? args.recordItemId : undefined,\n };\n\n const select = <T extends boolean = true>(\n resourceName: string,\n force = true,\n ): SelectReturnType<T> => {\n const isLegacy = routerType === \"legacy\";\n const pickedResource = pickResource(resourceName, resources, isLegacy);\n\n if (pickedResource) {\n return {\n resource: pickedResource,\n identifier: pickedResource.identifier ?? pickedResource.name,\n } as SelectReturnType<T>;\n }\n\n if (force) {\n const resource: IResourceItem = {\n name: resourceName,\n identifier: resourceName,\n };\n\n const identifier = resource.identifier ?? resource.name;\n\n return {\n resource,\n identifier,\n } as SelectReturnType<T>;\n }\n\n return undefined as SelectReturnType<T>;\n };\n\n /**\n * Legacy Router - Start\n *\n * using `useParams` and `route` to match resource and get params.\n */\n const resourceWithRoute = useResourceWithRoute();\n\n const { useParams } = useRouterContext();\n\n const legacyParams = useParams<Partial<ResourceRouterParams>>();\n\n if (routerType === \"legacy\") {\n const resourceKeyToCheck = oldProps.resourceNameOrRouteName\n ? oldProps.resourceNameOrRouteName\n : legacyParams.resource;\n\n const legacyResource = resourceKeyToCheck\n ? resourceWithRoute(resourceKeyToCheck)\n : undefined;\n const legacyId = oldProps?.recordItemId ?? legacyParams.id;\n const legacyAction = legacyParams.action;\n const legacyResourceName = oldProps?.resourceName ?? legacyResource?.name;\n const legacyIdentifier = legacyResource?.identifier ?? legacyResource?.name;\n\n return {\n resources,\n resource: legacyResource,\n resourceName: legacyResourceName,\n id: legacyId,\n action: legacyAction,\n select,\n identifier: legacyIdentifier,\n };\n }\n /** Legacy Router - End */\n\n /** New Router */\n let resource: IResourceItem | undefined = undefined;\n // we try to pick the resource from props first\n const identifier =\n typeof args === \"string\" ? args : oldProps?.resourceNameOrRouteName;\n if (identifier) {\n const pickedFromProps = pickResource(identifier, resources);\n if (pickedFromProps) {\n resource = pickedFromProps;\n } else {\n resource = {\n name: identifier as string,\n };\n }\n } else if (params?.resource) {\n resource = params.resource;\n }\n\n return {\n resources,\n resource,\n resourceName: resource?.name,\n id: params.id,\n action: params.action,\n select,\n identifier: resource?.identifier ?? resource?.name,\n };\n}\n","import React from \"react\";\n\nimport { IResourceContext } from \"./IResourceContext\";\nimport {\n IResourceItem,\n ResourceProps,\n} from \"../../interfaces/bindings/resource\";\nimport { useDeepMemo } from \"@hooks/deepMemo\";\nimport { legacyResourceTransform } from \"@definitions/helpers\";\n\nexport {\n IResourceItem,\n IResourceComponents,\n IResourceComponentsProps,\n IResourceContext,\n} from \"../../interfaces/bindings/resource\";\n\nexport const ResourceContext = React.createContext<IResourceContext>({\n resources: [],\n});\n\nexport const ResourceContextProvider: React.FC<\n React.PropsWithChildren<{ resources: ResourceProps[] }>\n> = ({ resources: providedResources, children }) => {\n const resources: IResourceItem[] = useDeepMemo(() => {\n return legacyResourceTransform(providedResources ?? []);\n }, [providedResources]);\n\n return (\n <ResourceContext.Provider value={{ resources }}>\n {children}\n </ResourceContext.Provider>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useMemoized } from \"@hooks/memoized\";\n\n/**\n * Hook that memoizes the given dependency array and checks the consecutive calls with deep equality and returns the same value as the first call if dependencies are not changed.\n * @internal\n */\nexport const useDeepMemo = <T,>(\n fn: () => T,\n dependencies: React.DependencyList,\n): T => {\n const memoizedDependencies = useMemoized(dependencies);\n\n const value = useMemo(fn, memoizedDependencies);\n\n return value;\n};\n","import { useRef } from \"react\";\nimport isEqual from \"lodash/isEqual\";\n\n/**\n * Hook that memoizes the given value with deep equality.\n * @internal\n */\nexport const useMemoized = <T = unknown>(value: T): T => {\n const ref = useRef(value);\n\n if (!isEqual(ref.current, value)) {\n ref.current = value;\n }\n\n return ref.current;\n};\n","import React from \"react\";\n\n/**\n * This context is used to determine which router to use.\n *\n * This is a temporary solution until we remove the legacy router.\n */\n\nexport const RouterPickerContext = React.createContext<\"legacy\" | \"new\">(\"new\");\n\nexport const RouterPickerProvider = RouterPickerContext.Provider;\n\n/**\n * This is a temporary hook to determine which router to use.\n * It will be removed once the legacy router is removed.\n * @internal This is an internal hook.\n */\nexport const useRouterType = () => {\n const value = React.useContext(RouterPickerContext);\n return value;\n};\n","import React from \"react\";\nimport { useParse } from \"../use-parse\";\n\nexport const useParsed = <\n TParams extends Record<string, any> = Record<string, any>,\n>() => {\n const parse = useParse();\n\n const parsed = React.useMemo(() => parse<TParams>(), [parse]);\n\n return parsed;\n};\n","import React, { createContext, PropsWithChildren } from \"react\";\nimport { RouterBindings } from \"src/interfaces\";\n\nconst defaultBindings = {};\n\nexport const RouterBindingsContext =\n createContext<RouterBindings>(defaultBindings);\n\nexport const RouterBindingsProvider: React.FC<\n PropsWithChildren<{ router?: RouterBindings }>\n> = ({ children, router }) => {\n return (\n <RouterBindingsContext.Provider value={router ?? defaultBindings}>\n {children}\n </RouterBindingsContext.Provider>\n );\n};\n","import { RouterBindingsContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\nimport { ParseFunction, ParseResponse } from \"src/interfaces\";\n\ntype UseParseType = () => <\n TParams extends Record<string, any> = Record<string, any>,\n>() => ParseResponse<TParams>;\n\nexport const useParse: UseParseType = () => {\n const bindings = useContext(RouterBindingsContext);\n\n const useParse = React.useMemo(\n () =>\n bindings?.parse ??\n (() =>\n (() => {\n return {};\n }) as ParseFunction),\n [bindings?.parse],\n );\n\n const parse = useParse();\n\n return parse as ReturnType<UseParseType>;\n};\n","import { useContext, useCallback } from \"react\";\nimport { ResourceContext } from \"@contexts/resource\";\nimport { IResourceItem } from \"../../../interfaces\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\n\nexport type UseResourceWithRouteReturnType = (route: string) => IResourceItem;\n\n/**\n * @deprecated Use `useResource` hook instead.\n * @internal This hook is for internal use only. And is kept for backward compatibility.\n */\nexport const useResourceWithRoute = (): UseResourceWithRouteReturnType => {\n const { resources } = useContext(ResourceContext);\n\n const resourceWithRoute = useCallback(\n (route: string) => {\n const picked = pickResource(route, resources, true);\n if (picked) {\n return picked;\n }\n return { name: route, route: route } as IResourceItem;\n },\n [resources],\n );\n\n return resourceWithRoute;\n};\n","import { LiveContext } from \"@contexts/live\";\nimport { RefineContext } from \"@contexts/refine\";\nimport { useInvalidate } from \"@hooks/invalidate\";\nimport { useResource } from \"@hooks/resource\";\nimport { useContext, useEffect } from \"react\";\nimport {\n BaseKey,\n CrudFilters,\n CrudSorting,\n ILiveContext,\n IRefineContext,\n LiveEvent,\n LiveModeProps,\n MetaQuery,\n Pagination,\n} from \"../../../interfaces\";\n\nexport type UseResourceSubscriptionProps = {\n channel: string;\n params?: {\n ids?: BaseKey[];\n id?: BaseKey;\n /**\n * @deprecated `params.meta` is depcerated. Use `meta` directly from the root level instead.\n */\n meta?: MetaQuery;\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n pagination?: Pagination;\n /**\n * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * @deprecated `sort` is deprecated. Use `sorters` instead.\n */\n sort?: CrudSorting;\n sorters?: CrudSorting;\n filters?: CrudFilters;\n subscriptionType: \"useList\" | \"useOne\" | \"useMany\";\n [key: string]: any;\n };\n types: LiveEvent[\"type\"][];\n resource?: string;\n enabled?: boolean;\n /**\n * @deprecated use `meta.dataProviderName` instead.\n */\n dataProviderName?: string;\n meta?: MetaQuery & { dataProviderName?: string };\n} & LiveModeProps;\n\nexport type PublishType = {\n (event: LiveEvent): void;\n};\n\nexport const useResourceSubscription = ({\n resource: resourceFromProp,\n params,\n channel,\n types,\n enabled = true,\n liveMode: liveModeFromProp,\n onLiveEvent,\n dataProviderName: dataProviderNameFromProps,\n meta,\n}: UseResourceSubscriptionProps): void => {\n const { resource, identifier } = useResource(resourceFromProp);\n\n const liveDataContext = useContext<ILiveContext>(LiveContext);\n const {\n liveMode: liveModeFromContext,\n onLiveEvent: onLiveEventContextCallback,\n } = useContext<IRefineContext>(RefineContext);\n\n const liveMode = liveModeFromProp ?? liveModeFromContext;\n\n const invalidate = useInvalidate();\n\n const dataProviderName =\n dataProviderNameFromProps ??\n meta?.dataProviderName ??\n resource?.meta?.dataProviderName;\n\n useEffect(() => {\n let subscription: any;\n\n const callback = (event: LiveEvent) => {\n if (liveMode === \"auto\") {\n invalidate({\n resource: identifier,\n dataProviderName,\n invalidates: [\"resourceAll\"],\n invalidationFilters: {\n type: \"active\",\n refetchType: \"active\",\n },\n invalidationOptions: { cancelRefetch: false },\n });\n }\n\n onLiveEvent?.(event);\n onLiveEventContextCallback?.(event);\n };\n\n if (liveMode && liveMode !== \"off\" && enabled) {\n subscription = liveDataContext?.subscribe({\n channel,\n params: {\n resource: resource?.name,\n ...params,\n },\n types,\n callback,\n dataProviderName,\n meta: {\n ...meta,\n dataProviderName,\n },\n });\n }\n\n return () => {\n if (subscription) {\n liveDataContext?.unsubscribe(subscription);\n }\n };\n }, [enabled]);\n};\n","import { useContext } from \"react\";\nimport { LiveModeProps, IRefineContext } from \"../../../interfaces\";\nimport { RefineContext } from \"@contexts/refine\";\n\nexport const useLiveMode = (\n liveMode: LiveModeProps[\"liveMode\"],\n): LiveModeProps[\"liveMode\"] => {\n const { liveMode: liveModeFromContext } =\n useContext<IRefineContext>(RefineContext);\n\n return liveMode ?? liveModeFromContext;\n};\n","import { useContext, useEffect } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport {\n BaseKey,\n CrudFilters,\n CrudSorting,\n ILiveContext,\n LiveEvent,\n MetaQuery,\n Pagination,\n} from \"../../../interfaces\";\n\nexport type UseSubscriptionProps = {\n /**\n * Channel name to subscribe.\n */\n channel: string;\n /**\n * Callback that is run when new events from subscription arrive.\n */\n onLiveEvent: (event: LiveEvent) => void;\n /**\n * Type of events to subscribe. `\"*\"` means all events.\n * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n */\n types?: LiveEvent[\"type\"][];\n /**\n * Determines subscription should subscribe or not.\n * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n */\n enabled?: boolean;\n params?: {\n ids?: BaseKey[];\n id?: BaseKey;\n /**\n * @deprecated `params.meta` is depcerated. Use `meta` directly from the root level instead.\n */\n meta?: MetaQuery;\n /**\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n pagination?: Pagination;\n /**\n * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * @deprecated `sort` is deprecated, use `sorters` instead.\n */\n sort?: CrudSorting;\n sorters?: CrudSorting;\n filters?: CrudFilters;\n subscriptionType?: \"useList\" | \"useOne\" | \"useMany\";\n resource?: string;\n [key: string]: any;\n };\n /**\n * @deprecated use `meta.dataProviderName` instead.\n */\n dataProviderName?: string;\n meta?: MetaQuery & { dataProviderName?: string };\n};\n\nexport const useSubscription = ({\n params,\n channel,\n types = [\"*\"],\n enabled = true,\n onLiveEvent,\n dataProviderName = \"default\",\n meta,\n}: UseSubscriptionProps): void => {\n const liveDataContext = useContext<ILiveContext>(LiveContext);\n\n useEffect(() => {\n let subscription: any;\n\n if (enabled) {\n subscription = liveDataContext?.subscribe({\n channel,\n params,\n types,\n callback: onLiveEvent,\n dataProviderName,\n meta: {\n ...meta,\n dataProviderName,\n },\n });\n }\n\n return () => {\n if (subscription) {\n liveDataContext?.unsubscribe(subscription);\n }\n };\n }, [enabled]);\n};\n","import { useContext } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport { ILiveContext } from \"../../../interfaces\";\n\nexport const usePublish: () => NonNullable<ILiveContext>[\"publish\"] = () => {\n const liveContext = useContext<ILiveContext>(LiveContext);\n\n return liveContext?.publish;\n};\n","import { useContext } from \"react\";\n\nimport { UndoableQueueContext } from \"@contexts/undoableQueue\";\nimport { IUndoableQueue, IUndoableQueueContext } from \"../../../interfaces\";\n\nexport type UseCancelNotificationType = () => {\n notifications: IUndoableQueue[];\n notificationDispatch: React.Dispatch<any>;\n};\n\nexport const useCancelNotification: UseCancelNotificationType = () => {\n const { notifications, notificationDispatch } =\n useContext<IUndoableQueueContext>(UndoableQueueContext);\n\n return { notifications, notificationDispatch };\n};\n","import { useContext } from \"react\";\n\nimport { NotificationContext } from \"@contexts/notification\";\nimport { INotificationContext } from \"../../../interfaces\";\n\nexport const useNotification = (): INotificationContext => {\n const { open, close } = useContext(NotificationContext);\n\n return { open, close };\n};\n","import React, { createContext } from \"react\";\n\nimport { INotificationContext } from \"./INotificationContext\";\n\n/** @deprecated default value for notification context has no use and is an empty object. */\nexport const defaultNotificationProvider: INotificationContext = {};\n\nexport const NotificationContext = createContext<INotificationContext>({});\n\nexport const NotificationContextProvider: React.FC<\n INotificationContext & {\n children?: React.ReactNode;\n }\n> = ({ open, close, children }) => {\n return (\n <NotificationContext.Provider value={{ open, close }}>\n {children}\n </NotificationContext.Provider>\n );\n};\n","import { useCallback } from \"react\";\n\nimport { OpenNotificationParams } from \"../../../interfaces\";\nimport { useNotification } from \"@hooks\";\n\nexport const useHandleNotification = (): typeof handleNotification => {\n const { open } = useNotification();\n\n const handleNotification = useCallback(\n (\n notification: OpenNotificationParams | false | undefined,\n fallbackNotification?: OpenNotificationParams,\n ) => {\n if (notification !== false) {\n if (notification) {\n open?.(notification);\n } else if (fallbackNotification) {\n open?.(fallbackNotification);\n }\n }\n },\n [],\n );\n\n return handleNotification;\n};\n","import { useCallback, useContext } from \"react\";\nimport { TranslationContext } from \"@contexts/translation\";\n\n/**\n * If you need to change the locale at runtime, refine provides the `useSetLocale` hook.\n * It returns the changeLocale method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useSetLocale} for more details.\n */\nexport const useSetLocale = () => {\n const { i18nProvider } = useContext(TranslationContext);\n\n return useCallback((lang: string) => i18nProvider?.changeLocale(lang), []);\n};\n","import React from \"react\";\n\nimport { ITranslationContext } from \"../../interfaces\";\n\n/** @deprecated default value for translation context has no use and is an empty object. */\nexport const defaultProvider: ITranslationContext = {};\n\nexport const TranslationContext = React.createContext<ITranslationContext>({});\n\nexport const TranslationContextProvider: React.FC<\n ITranslationContext & {\n children?: React.ReactNode;\n }\n> = ({ children, i18nProvider }) => {\n return (\n <TranslationContext.Provider\n value={{\n i18nProvider: i18nProvider,\n }}\n >\n {children}\n </TranslationContext.Provider>\n );\n};\n","import { useContext, useMemo } from \"react\";\nimport { TranslationContext } from \"@contexts/translation\";\n\n/**\n * If you need to translate the texts in your own components, refine provides the `useTranslate` hook.\n * It returns the translate method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useTranslate} for more details.\n */\nexport const useTranslate = () => {\n const { i18nProvider } = useContext(TranslationContext);\n\n const fn = useMemo(() => {\n function translate(\n key: string,\n options?: any,\n defaultMessage?: string,\n ): string;\n function translate(key: string, defaultMessage?: string): string;\n\n function translate(\n key: string,\n options?: string | any,\n defaultMessage?: string,\n ) {\n return (\n i18nProvider?.translate(key, options, defaultMessage) ??\n defaultMessage ??\n (typeof options === \"string\" && typeof defaultMessage === \"undefined\"\n ? options\n : key)\n );\n }\n\n return translate;\n }, [i18nProvider]);\n\n return fn;\n};\n","import { useContext, useCallback } from \"react\";\nimport { TranslationContext } from \"@contexts/translation\";\n\nexport type UseGetLocaleType = () => () => string | undefined;\n\n/**\n * If you need to know the current locale, refine provides the `useGetLocale` hook.\n * It returns the `getLocale` method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useGetLocale} for more details.\n */\nexport const useGetLocale: UseGetLocaleType = () => {\n const { i18nProvider } = useContext(TranslationContext);\n\n return useCallback(() => i18nProvider?.getLocale(), []);\n};\n","import { useState } from \"react\";\nimport { unparse, UnparseConfig } from \"papaparse\";\nimport warnOnce from \"warn-once\";\nimport { useResource, useDataProvider, useMeta } from \"@hooks\";\nimport {\n BaseRecord,\n MapDataFn,\n CrudSorting,\n CrudFilters,\n MetaQuery,\n} from \"../../interfaces\";\nimport {\n useUserFriendlyName,\n pickDataProvider,\n pickNotDeprecated,\n downloadInBrowser,\n} from \"@definitions\";\n\n// Old options interface taken from export-to-csv-fix-source-map@0.2.1\n// Kept here to ensure backward compatibility\nexport interface ExportOptions {\n filename?: string;\n fieldSeparator?: string;\n quoteStrings?: string;\n decimalSeparator?: string;\n showLabels?: boolean;\n showTitle?: boolean;\n title?: string;\n useTextFile?: boolean;\n useBom?: boolean;\n headers?: string[];\n useKeysAsHeaders?: boolean;\n}\n\ntype UseExportOptionsType<\n TData extends BaseRecord = BaseRecord,\n TVariables = any,\n> = {\n /**\n * Resource name for API data interactions\n * @default Resource name that it reads from route\n * @deprecated `resourceName` is deprecated. Use `resource` instead.\n */\n resourceName?: string;\n /**\n * Resource name for API data interactions\n * @default Resource name that it reads from route\n */\n resource?: string;\n /**\n * A mapping function that runs for every record. Mapped data will be included in the file contents\n */\n mapData?: MapDataFn<TData, TVariables>;\n /**\n * Sorts records\n * @deprecated `sorter` is deprecated. Use `sorters` instead.\n */\n sorter?: CrudSorting;\n /**\n * Sorts records\n */\n sorters?: CrudSorting;\n /**\n * Filters records\n */\n filters?: CrudFilters;\n maxItemCount?: number;\n /**\n * Requests to fetch data are made as batches by page size. By default, it is 20. Used for `getList` method of `DataProvider`\n */\n pageSize?: number;\n /**\n * Used for exporting options\n * @type [Options](https://github.com/alexcaza/export-to-csv)\n * @deprecated `exportOptions` is deprecated. Use `unparseConfig` instead.\n */\n exportOptions?: ExportOptions;\n /**\n * Used for exporting options\n * @type [UnparseConfig](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/papaparse)\n */\n unparseConfig?: UnparseConfig;\n /**\n * Metadata query for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Metadata query for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n /**\n * Callback to handle error events of this hook\n */\n onError?: (error: any) => void;\n /**\n * Whether to generate download of the CSV in browser environments, defaults to true.\n */\n download?: boolean;\n};\n\ntype UseExportReturnType = {\n isLoading: boolean;\n triggerExport: () => Promise<string | undefined>;\n};\n\n/**\n * `useExport` hook allows you to make your resources exportable.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useExport} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TVariables - Values for params.\n *\n */\nexport const useExport = <\n TData extends BaseRecord = BaseRecord,\n TVariables = any,\n>({\n resourceName,\n resource: resourceFromProps,\n sorter,\n sorters,\n filters,\n maxItemCount,\n pageSize = 20,\n mapData = (item) => item as any,\n exportOptions,\n unparseConfig,\n meta,\n metaData,\n dataProviderName,\n onError,\n download,\n}: UseExportOptionsType<TData, TVariables> = {}): UseExportReturnType => {\n const [isLoading, setIsLoading] = useState(false);\n\n const dataProvider = useDataProvider();\n const getMeta = useMeta();\n const { resource, resources, identifier } = useResource(\n pickNotDeprecated(resourceFromProps, resourceName),\n );\n const getFriendlyName = useUserFriendlyName();\n\n const filename = `${getFriendlyName(\n identifier,\n \"plural\",\n )}-${new Date().toLocaleString()}`;\n\n const { getList } = dataProvider(\n pickDataProvider(identifier, dataProviderName, resources),\n );\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const triggerExport = async () => {\n setIsLoading(true);\n\n let rawData: BaseRecord[] = [];\n\n let current = 1;\n let preparingData = true;\n while (preparingData) {\n try {\n const { data, total } = await getList<TData>({\n resource: resource?.name ?? \"\",\n filters,\n sort: pickNotDeprecated(sorters, sorter),\n sorters: pickNotDeprecated(sorters, sorter),\n pagination: {\n current,\n pageSize,\n mode: \"server\",\n },\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n\n current++;\n\n rawData.push(...data);\n\n if (maxItemCount && rawData.length >= maxItemCount) {\n rawData = rawData.slice(0, maxItemCount);\n preparingData = false;\n }\n\n if (total === rawData.length) {\n preparingData = false;\n }\n } catch (error) {\n setIsLoading(false);\n preparingData = false;\n\n onError?.(error);\n\n return;\n }\n }\n\n const hasUnparseConfig =\n typeof unparseConfig !== \"undefined\" && unparseConfig !== null;\n\n warnOnce(\n hasUnparseConfig &&\n typeof exportOptions !== \"undefined\" &&\n exportOptions !== null,\n `[useExport]: resource: \"${identifier}\" \\n\\nBoth \\`unparseConfig\\` and \\`exportOptions\\` are set, \\`unparseConfig\\` will take precedence`,\n );\n\n const options: ExportOptions = {\n filename,\n useKeysAsHeaders: true,\n useBom: true, // original default\n title: \"My Generated Report\", // original default\n quoteStrings: '\"', // original default\n ...exportOptions,\n };\n\n warnOnce(\n exportOptions?.decimalSeparator !== undefined,\n `[useExport]: resource: \"${identifier}\" \\n\\nUse of \\`decimalSeparator\\` no longer supported, please use \\`mapData\\` instead.\\n\\nSee https://refine.dev/docs/api-reference/core/hooks/import-export/useExport/`,\n );\n\n if (!hasUnparseConfig) {\n unparseConfig = {\n // useKeysAsHeaders takes priority over options.headers\n columns: options.useKeysAsHeaders ? undefined : options.headers,\n delimiter: options.fieldSeparator,\n header: options.showLabels || options.useKeysAsHeaders,\n quoteChar: options.quoteStrings,\n quotes: true,\n };\n } else {\n unparseConfig = {\n // Set to force quote for better compatibility\n quotes: true,\n ...unparseConfig,\n };\n }\n\n let csv = unparse(rawData.map(mapData as any), unparseConfig);\n if (options.showTitle) {\n csv = `${options.title}\\r\\n\\n${csv}`;\n }\n\n // Backward compatibility support for downloadInBrowser of the exported file, only works for browsers.\n if (typeof window !== \"undefined\" && csv.length > 0 && (download ?? true)) {\n const fileExtension = options.useTextFile ? \".txt\" : \".csv\";\n const fileType = `text/${\n options.useTextFile ? \"plain\" : \"csv\"\n };charset=utf8;`;\n const downloadFilename = `${(options.filename ?? \"download\").replace(\n / /g,\n \"_\",\n )}${fileExtension}`;\n\n downloadInBrowser(\n downloadFilename,\n `${options?.useBom ? \"\\ufeff\" : \"\"}${csv}`,\n fileType,\n );\n }\n\n setIsLoading(false);\n return csv;\n };\n\n return {\n isLoading,\n triggerExport,\n };\n};\n","import React, { Dispatch, SetStateAction } from \"react\";\nimport { QueryObserverResult, UseQueryOptions } from \"@tanstack/react-query\";\nimport warnOnce from \"warn-once\";\nimport debounce from \"lodash/debounce\";\n\nimport {\n useWarnAboutChange,\n useCreate,\n useUpdate,\n useRedirectionAfterSubmission,\n useMutationMode,\n useOne,\n useRefineContext,\n useMeta,\n useInvalidate,\n} from \"@hooks\";\n\nimport {\n BaseRecord,\n CreateResponse,\n GetOneResponse,\n HttpError,\n LiveModeProps,\n RedirectAction,\n SuccessErrorNotification,\n UpdateResponse,\n MutationMode,\n BaseKey,\n IQueryKeys,\n FormAction,\n MetaQuery,\n AutoSaveProps,\n AutoSaveReturnType,\n OptimisticUpdateMapType,\n} from \"../../interfaces\";\nimport {\n UpdateParams,\n UseUpdateProps,\n UseUpdateReturnType,\n} from \"../data/useUpdate\";\nimport { UseCreateProps, UseCreateReturnType } from \"../data/useCreate\";\nimport { redirectPage } from \"@definitions/helpers\";\nimport { useResource } from \"../resource/useResource\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type ActionParams = {\n /**\n * Type of the form mode\n * @default Action that it reads from route otherwise \"create\" is used\n */\n action?: FormAction;\n};\n\ntype ActionFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n /**\n * Resource name for API data interactions\n * @default Resource name that it reads from route\n */\n resource?: string;\n /**\n * Record id for fetching\n * @default Id that it reads from the URL\n */\n id?: BaseKey;\n /**\n * Page to redirect after a succesfull mutation\n * @type `\"show\" | \"edit\" | \"list\" | \"create\" | false`\n * @default `\"list\"`\n */\n redirect?: RedirectAction;\n /**\n * Metadata query for dataProvider\n */\n meta?: MetaQuery;\n /**\n * Metadata query for dataProvider\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * Metadata to pass for the `useOne` query\n */\n queryMeta?: MetaQuery;\n /**\n * Metadata to pass for the mutation (`useCreate` for `create` and `clone` actions, `useUpdate` for `edit` action)\n */\n mutationMeta?: MetaQuery;\n /**\n * [Determines when mutations are executed](/advanced-tutorials/mutation-mode.md)\n * @default `\"pessimistic\"*`\n */\n mutationMode?: MutationMode;\n /**\n * Called when a mutation is successful\n */\n onMutationSuccess?: (\n data: CreateResponse<TResponse> | UpdateResponse<TResponse>,\n variables: TVariables,\n context: any,\n isAutoSave?: boolean,\n ) => void;\n /**\n * Called when a mutation encounters an error\n */\n onMutationError?: (\n error: TResponseError,\n variables: TVariables,\n context: any,\n isAutoSave?: boolean,\n ) => void;\n /**\n * Duration to wait before executing mutations when `mutationMode = \"undoable\"`\n * @default `5000*`\n */\n undoableTimeout?: number;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n /**\n * You can use it to manage the invalidations that will occur at the end of the mutation.\n * @type `all`, `resourceAll`, `list`, `many`, `detail`, `false`\n * @default `[\"list\", \"many\", \"detail\"]`\n */\n invalidates?: Array<keyof IQueryKeys>;\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options of useOne hook used while in edit mode.\n */\n queryOptions?: UseQueryOptions<\n GetOneResponse<TQueryFnData>,\n TError,\n GetOneResponse<TData>\n >;\n /**\n * react-query's [useMutation](https://tanstack.com/query/v4/docs/reference/useMutation) options of useCreate hook used while submitting in create and clone modes.\n */\n createMutationOptions?: UseCreateProps<\n TResponse,\n TResponseError,\n TVariables\n >[\"mutationOptions\"];\n /**\n * react-query's [useMutation](https://tanstack.com/query/v4/docs/reference/useMutation) options of useUpdate hook used while submitting in edit mode.\n */\n updateMutationOptions?: UseUpdateProps<\n TResponse,\n TResponseError,\n TVariables\n >[\"mutationOptions\"];\n /**\n * If you customize the [`optimisticUpdateMap`](https://refine.dev/docs/api-reference/core/hooks/data/useUpdateMany/#optimisticupdatemap) option, you can use it to manage the invalidations that will occur at the end of the mutation.\n * @default {\n * list: true,\n * many: true,\n * detail: true,\n * }\n */\n optimisticUpdateMap?: OptimisticUpdateMapType<TResponse, TVariables>;\n} & SuccessErrorNotification<\n UpdateResponse<TResponse> | CreateResponse<TResponse>,\n TResponseError,\n { id: BaseKey; values: TVariables } | TVariables\n> &\n ActionParams &\n LiveModeProps;\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = ActionFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n ActionParams &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps &\n AutoSaveProps<TVariables>;\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = {\n id?: BaseKey;\n setId: Dispatch<SetStateAction<BaseKey | undefined>>;\n queryResult?: QueryObserverResult<GetOneResponse<TData>, TError>;\n mutationResult:\n | UseUpdateReturnType<TResponse, TResponseError, TVariables>\n | UseCreateReturnType<TResponse, TResponseError, TVariables>;\n formLoading: boolean;\n onFinish: (\n values: TVariables,\n ) => Promise<CreateResponse<TResponse> | UpdateResponse<TResponse> | void>;\n redirect: (\n redirect: RedirectAction,\n idFromFunction?: BaseKey | undefined,\n routeParams?: Record<string, string | number>,\n ) => void;\n} & UseLoadingOvertimeReturnType &\n AutoSaveReturnType<TResponse, TResponseError, TVariables>;\n\n/**\n * `useForm` is used to manage forms. It uses Ant Design {@link https://ant.design/components/form/ Form} data scope management under the hood and returns the required props for managing the form actions.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useForm} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}. Defaults to `TError`\n *\n */\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n resource: resourceFromProps,\n action: actionFromProps,\n id: idFromProps,\n onMutationSuccess,\n onMutationError,\n redirect: redirectFromProps,\n successNotification,\n errorNotification,\n meta,\n metaData,\n queryMeta,\n mutationMeta,\n mutationMode: mutationModeProp,\n liveMode,\n onLiveEvent,\n liveParams,\n undoableTimeout,\n dataProviderName,\n invalidates,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n overtimeOptions,\n autoSave,\n optimisticUpdateMap,\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const { options } = useRefineContext();\n const getMeta = useMeta();\n\n const {\n resource,\n id: idFromRoute,\n action: actionFromRoute,\n identifier,\n } = useResource(resourceFromProps);\n const { identifier: inferredIdentifier } = useResource();\n\n /** We only accept `id` from URL params if `resource` is not explicitly passed. */\n /** This is done to avoid sending wrong requests for custom `resource` and an async `id` */\n const getDefaultId = () => {\n const idFromPropsOrRoute = idFromProps ?? idFromRoute;\n\n if (resourceFromProps && resourceFromProps !== inferredIdentifier) {\n return idFromProps;\n }\n\n return idFromPropsOrRoute;\n };\n const defaultId = getDefaultId();\n\n // id state is needed to determine selected record in a context for example useModal\n const [id, setId] = React.useState<BaseKey | undefined>(defaultId);\n\n /**\n * In some cases, `id` from the router params is not available at the first render.\n *\n * (e.g. when using `Next.js` and client-side-rendering, `router` is not ready to use at the first render)\n *\n * We're watching for `defaultId` changes and setting `id` state if it's not equal to `defaultId`.\n */\n React.useEffect(() => {\n setId(defaultId);\n }, [defaultId]);\n\n const getAction = () => {\n if (actionFromProps) return actionFromProps;\n if (actionFromRoute === \"edit\" || actionFromRoute === \"clone\")\n return actionFromRoute;\n return \"create\";\n };\n const action = getAction();\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const { mutationMode: mutationModeContext } = useMutationMode();\n const mutationMode = mutationModeProp ?? mutationModeContext;\n\n const isCreate = action === \"create\";\n const isEdit = action === \"edit\";\n const isClone = action === \"clone\";\n\n warnOnce(\n (isClone || isEdit) &&\n Boolean(resourceFromProps) &&\n !idFromProps &&\n queryOptions?.enabled !== false,\n `[useForm]: action: \"${action}\", resource: \"${identifier}\", id: ${id} \\n\\nIf you don't use the \\`setId\\` method to set the \\`id\\`, you should pass the \\`id\\` prop to \\`useForm\\`. Otherwise, \\`useForm\\` will not be able to infer the \\`id\\` from the current URL. \\n\\nSee https://refine.dev/docs/api-reference/core/hooks/useForm/#resource`,\n );\n\n /**\n * Designated `redirect` route\n */\n const designatedRedirectAction = redirectPage({\n redirectFromProps,\n action,\n redirectOptions: options.redirect,\n });\n\n const enableQuery = id !== undefined && (isEdit || isClone);\n\n const queryResult = useOne<TQueryFnData, TError, TData>({\n resource: identifier,\n id: id ?? \"\",\n queryOptions: {\n enabled: enableQuery,\n ...queryOptions,\n },\n liveMode,\n onLiveEvent,\n liveParams,\n meta: { ...combinedMeta, ...queryMeta },\n metaData: { ...combinedMeta, ...queryMeta },\n dataProviderName,\n });\n\n const { isFetching: isFetchingQuery } = queryResult;\n\n const mutationResultCreate = useCreate<TResponse, TResponseError, TVariables>(\n {\n mutationOptions: createMutationOptions,\n },\n );\n const { mutate: mutateCreate, isLoading: isLoadingCreate } =\n mutationResultCreate;\n\n const mutationResultUpdate = useUpdate<TResponse, TResponseError, TVariables>(\n {\n mutationOptions: updateMutationOptions,\n },\n );\n const { mutate: mutateUpdate, isLoading: isLoadingUpdate } =\n mutationResultUpdate;\n\n const autoSaveMutation = useUpdate<TResponse, TResponseError, TVariables>({});\n\n const { setWarnWhen } = useWarnAboutChange();\n\n const handleSubmitWithRedirect = useRedirectionAfterSubmission();\n\n const onFinishCreate = async (values: TVariables) => {\n setWarnWhen(false);\n\n const onSuccess = (id?: BaseKey) => {\n handleSubmitWithRedirect({\n redirect: designatedRedirectAction,\n resource,\n id,\n meta: pickNotDeprecated(meta, metaData),\n });\n };\n\n if (mutationMode !== \"pessimistic\") {\n setTimeout(() => {\n onSuccess();\n });\n }\n\n return new Promise<CreateResponse<TResponse> | void>((resolve, reject) => {\n if (mutationMode !== \"pessimistic\") {\n resolve();\n }\n\n if (!resource) return;\n\n return mutateCreate(\n {\n values,\n resource: identifier ?? resource.name,\n successNotification,\n errorNotification,\n meta: { ...combinedMeta, ...mutationMeta },\n metaData: { ...combinedMeta, ...mutationMeta },\n dataProviderName,\n invalidates,\n },\n {\n onSuccess: (data, _, context) => {\n if (onMutationSuccess) {\n onMutationSuccess(data, values, context);\n }\n\n const responseId = data?.data?.id;\n\n onSuccess(responseId);\n\n resolve(data);\n },\n onError: (error: TResponseError, _, context) => {\n if (onMutationError) {\n return onMutationError(error, values, context);\n }\n reject();\n },\n },\n );\n });\n };\n\n React.useEffect(() => {\n return () => {\n if (\n autoSave?.invalidateOnUnmount &&\n autoSaveMutation.status === \"success\"\n ) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName,\n resource: identifier,\n });\n }\n };\n }, [autoSave?.invalidateOnUnmount, autoSaveMutation.status]);\n\n const onFinishAutoSaveMutation = (\n values: TVariables,\n ): Promise<UpdateResponse<TResponse> | void> | void => {\n if (!resource || !isEdit) return;\n\n const variables: UpdateParams<TResponse, TResponseError, TVariables> = {\n id: id ?? \"\",\n values,\n resource: identifier ?? resource.name,\n successNotification: false,\n errorNotification: false,\n meta: { ...combinedMeta, ...mutationMeta },\n metaData: { ...combinedMeta, ...mutationMeta },\n dataProviderName,\n invalidates: [],\n mutationMode: \"pessimistic\",\n };\n\n return autoSaveMutation.mutate(variables, {\n onSuccess: (data, _, context) => {\n if (onMutationSuccess) {\n onMutationSuccess(data, values, context, true);\n }\n },\n onError: (error: TResponseError, _, context) => {\n if (onMutationError) {\n return onMutationError(error, values, context, true);\n }\n },\n });\n };\n\n const onFinishAutoSave = debounce((allValues) => {\n return onFinishAutoSaveMutation(allValues);\n }, autoSave?.debounce || 1000);\n\n const onFinishUpdate = async (values: TVariables) => {\n setWarnWhen(false);\n\n if (!resource) return;\n\n const variables: UpdateParams<TResponse, TResponseError, TVariables> = {\n id: id ?? \"\",\n values,\n resource: identifier ?? resource.name,\n mutationMode,\n undoableTimeout,\n successNotification,\n errorNotification,\n meta: { ...combinedMeta, ...mutationMeta },\n metaData: { ...combinedMeta, ...mutationMeta },\n dataProviderName,\n invalidates,\n optimisticUpdateMap,\n };\n\n const onSuccess = () => {\n handleSubmitWithRedirect({\n redirect: designatedRedirectAction,\n resource,\n id,\n meta: pickNotDeprecated(meta, metaData),\n });\n };\n\n // setWarnWhen is set to \"false\" at the start of the mutation. With the help of setTimeout we guarantee that the value false is set.\n if (mutationMode !== \"pessimistic\") {\n setTimeout(() => {\n onSuccess();\n });\n }\n\n // setTimeout is required to make onSuccess e.g. callbacks to work if component unmounts i.e. on route change\n return new Promise<UpdateResponse<TResponse> | void>((resolve, reject) => {\n if (mutationMode !== \"pessimistic\") {\n resolve();\n }\n return setTimeout(() => {\n mutateUpdate(variables, {\n onSuccess: (data, _, context) => {\n if (onMutationSuccess) {\n onMutationSuccess(data, values, context);\n }\n\n if (mutationMode === \"pessimistic\") {\n onSuccess();\n }\n\n resolve(data);\n },\n onError: (error: TResponseError, _, context) => {\n if (onMutationError) {\n return onMutationError(error, values, context);\n }\n reject();\n },\n });\n });\n });\n };\n\n const createResult = {\n formLoading: isFetchingQuery || isLoadingCreate,\n mutationResult: mutationResultCreate,\n onFinish: onFinishCreate,\n };\n\n const editResult = {\n formLoading: isFetchingQuery || isLoadingUpdate,\n mutationResult: mutationResultUpdate,\n onFinish: onFinishUpdate,\n };\n\n const result = isCreate || isClone ? createResult : editResult;\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: result.mutationResult.isLoading || queryResult.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return {\n ...result,\n queryResult,\n onFinishAutoSave,\n autoSaveProps: {\n status: autoSaveMutation.status,\n data: autoSaveMutation.data,\n error: autoSaveMutation.error,\n },\n id,\n setId,\n redirect: (redirect, idFromFunction?: BaseKey | undefined) => {\n handleSubmitWithRedirect({\n redirect: redirect !== undefined ? redirect : isEdit ? \"list\" : \"edit\",\n resource,\n id: idFromFunction ?? id,\n meta: pickNotDeprecated(meta, metaData),\n });\n },\n overtime: {\n elapsedTime,\n },\n };\n};\n","import { useCallback } from \"react\";\n\nimport {\n BaseKey,\n IResourceItem,\n MetaDataQuery,\n RedirectAction,\n} from \"../../interfaces\";\nimport { useNavigation } from \"@hooks\";\n\nexport type UseRedirectionAfterSubmissionType = () => (options: {\n redirect: RedirectAction;\n resource?: IResourceItem;\n id?: BaseKey;\n meta?: MetaDataQuery;\n}) => void;\n\nexport const useRedirectionAfterSubmission: UseRedirectionAfterSubmissionType =\n () => {\n const { show, edit, list, create } = useNavigation();\n\n const handleSubmitWithRedirect = useCallback(\n ({\n redirect,\n resource,\n id,\n meta = {},\n }: {\n redirect: RedirectAction;\n resource?: IResourceItem;\n id?: BaseKey;\n meta?: MetaDataQuery;\n }) => {\n if (redirect && resource) {\n if (!!resource.show && redirect === \"show\" && id) {\n return show(resource, id, undefined, meta);\n }\n\n if (!!resource.edit && redirect === \"edit\" && id) {\n return edit(resource, id, undefined, meta);\n }\n\n if (!!resource.create && redirect === \"create\") {\n return create(resource, undefined, meta);\n }\n\n return list(resource, \"push\", meta);\n }\n return;\n },\n [],\n );\n\n return handleSubmitWithRedirect;\n };\n","import { RouterBindingsContext } from \"@contexts/router\";\nimport { useResource } from \"@hooks/resource\";\nimport React, { useCallback, useContext } from \"react\";\nimport type {\n Action,\n BaseKey,\n GoConfig as GoConfigBase,\n IResourceItem,\n} from \"../../../interfaces\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype ResourceWithoutId = {\n /**\n * The name or identifier of the resource.\n */\n resource: string;\n action: Extract<Action, \"create\" | \"list\">;\n id?: never;\n meta?: Record<string, unknown>;\n};\n\ntype ResourceWithId = {\n /**\n * The name or identifier of the resource.\n */\n resource: string;\n action: Extract<Action, \"edit\" | \"show\" | \"clone\">;\n id: BaseKey;\n meta?: Record<string, unknown>;\n};\n\nexport type Resource = ResourceWithoutId | ResourceWithId;\n\nexport type GoConfigWithResource = Omit<GoConfigBase, \"to\"> & {\n to?: GoConfigBase[\"to\"] | Resource;\n};\n\nexport const useGo = () => {\n const bindings = useContext(RouterBindingsContext);\n const { select: resourceSelect } = useResource();\n const getToPath = useGetToPath();\n\n const useGo = React.useMemo(\n () => bindings?.go ?? (() => () => undefined),\n [bindings?.go],\n );\n\n const goFromRouter = useGo();\n\n const go = useCallback(\n (config: GoConfigWithResource | GoConfigBase) => {\n if (typeof config.to !== \"object\") {\n return goFromRouter({ ...config, to: config.to });\n }\n\n // when config.to is an object, it means that we want to go to a resource.\n // so we need to find the path for the resource.\n const { resource } = resourceSelect(config.to.resource);\n handleResourceErrors(config.to, resource);\n const newTo = getToPath({\n resource,\n action: config.to.action,\n meta: {\n id: config.to.id,\n ...config.to.meta,\n },\n });\n\n return goFromRouter({\n ...config,\n to: newTo,\n });\n },\n [resourceSelect, goFromRouter],\n );\n\n return go;\n};\n\n/**\n * handle errors for resource\n * @internal\n */\nexport const handleResourceErrors = (to: Resource, resource: IResourceItem) => {\n if (!to?.action || !to?.resource) {\n throw new Error(`[useGo]: \"action\" or \"resource\" is required.`);\n }\n\n if ([\"edit\", \"show\", \"clone\"].includes(to?.action) && !to.id) {\n throw new Error(\n `[useGo]: [action: ${to.action}] requires an \"id\" for resource [resource: ${to.resource}]`,\n );\n }\n\n const actionUrl = resource[to.action];\n if (!actionUrl) {\n throw new Error(\n `[useGo]: [action: ${to.action}] is not defined for [resource: ${to.resource}]`,\n );\n }\n};\n","import React from \"react\";\nimport { useResource } from \"../../resource\";\nimport { Action, IResourceItem } from \"../../../interfaces\";\nimport { getActionRoutesFromResource } from \"../../../definitions/helpers/router\";\nimport { useParsed } from \"../use-parsed\";\nimport { composeRoute } from \"../../../definitions/helpers/router/compose-route\";\nimport { useRouterType } from \"./../../../contexts/router-picker\";\n\ntype UseToPathParams = {\n resource?: IResourceItem;\n action: Action;\n meta?: Record<string, unknown>;\n legacy?: boolean;\n};\n\ntype GetToPathFn = (params: UseToPathParams) => string | undefined;\n\n/**\n * Returns a function to get the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useGetToPath = (): GetToPathFn => {\n const routerType = useRouterType();\n const { resource: resourceFromRoute, resources } = useResource();\n const parsed = useParsed();\n\n const fn = React.useCallback(\n ({ resource, action, meta }: UseToPathParams): string | undefined => {\n const selectedResource = resource || resourceFromRoute;\n\n if (!selectedResource) {\n return undefined;\n }\n\n const actionRoutes = getActionRoutesFromResource(\n selectedResource,\n resources,\n routerType === \"legacy\",\n );\n\n const actionRoute = actionRoutes.find(\n (item) => item.action === action,\n )?.route;\n\n if (!actionRoute) {\n return undefined;\n }\n\n const composed = composeRoute(\n actionRoute,\n selectedResource?.meta,\n parsed,\n meta,\n );\n\n return composed;\n },\n [resources, resourceFromRoute, parsed],\n );\n\n return fn;\n};\n","import { RouterBindingsContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\n\nexport const useBack = () => {\n const bindings = useContext(RouterBindingsContext);\n\n const useBack = React.useMemo(\n () => bindings?.back ?? (() => () => undefined),\n [bindings?.back],\n );\n\n const back = useBack();\n\n return back;\n};\n","import { useRouterContext, useResource } from \"@hooks\";\nimport { BaseKey, IResourceItem, MetaDataQuery } from \"../../interfaces\";\nimport { useGo } from \"@hooks/router/use-go\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\nimport { useRouterType } from \"@contexts/router-picker\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useBack } from \"@hooks/router/use-back\";\n\nexport type HistoryType = \"push\" | \"replace\";\n\n/**\n * `refine` uses {@link https://reactrouter.com/en/hooks/use-navigate `React Router`} and comes with all redirects out of the box.\n * It allows you to manage your routing operations in refine.\n * Using this hook, you can manage all the routing operations of your application very easily.\n *\n * @internal This is an internal hook of refine. Do not use it directly.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation} for more details.\n */\nexport const useNavigation = () => {\n const { resources } = useResource();\n const routerType = useRouterType();\n const { useHistory } = useRouterContext();\n const history = useHistory();\n const parsed = useParsed();\n const go = useGo();\n const back = useBack();\n\n const handleUrl = (url: string, type: HistoryType = \"push\") => {\n if (routerType === \"legacy\") {\n history[type](url);\n } else {\n go({ to: url, type });\n }\n };\n\n const createUrl = (\n resource: string | IResourceItem,\n meta: MetaDataQuery = {},\n ) => {\n if (routerType === \"legacy\") {\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources, true) ?? {\n name: resource,\n route: resource,\n }\n : resource;\n\n const createActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n true,\n ).find((r) => r.action === \"create\");\n\n if (!createActionRoute) {\n return \"\";\n }\n\n return composeRoute(\n createActionRoute.route,\n resourceItem?.meta,\n parsed,\n meta,\n );\n }\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources) ?? { name: resource }\n : resource;\n\n const createActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n ).find((r) => r.action === \"create\")?.route;\n\n if (!createActionRoute) {\n return \"\";\n }\n\n return go({\n to: composeRoute(createActionRoute, resourceItem?.meta, parsed, meta),\n type: \"path\",\n }) as string;\n };\n\n const editUrl = (\n resource: string | IResourceItem,\n id: BaseKey,\n meta: MetaDataQuery = {},\n ) => {\n const encodedId = encodeURIComponent(id);\n if (routerType === \"legacy\") {\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources, true) ?? {\n name: resource,\n route: resource,\n }\n : resource;\n\n const editActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n true,\n ).find((r) => r.action === \"edit\");\n\n if (!editActionRoute) {\n return \"\";\n }\n\n return composeRoute(editActionRoute.route, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n });\n }\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources) ?? { name: resource }\n : resource;\n\n const editActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n ).find((r) => r.action === \"edit\")?.route;\n\n if (!editActionRoute) {\n return \"\";\n }\n\n return go({\n to: composeRoute(editActionRoute, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n }),\n type: \"path\",\n }) as string;\n };\n\n const cloneUrl = (\n resource: string | IResourceItem,\n id: BaseKey,\n meta: MetaDataQuery = {},\n ) => {\n const encodedId = encodeURIComponent(id);\n\n if (routerType === \"legacy\") {\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources, true) ?? {\n name: resource,\n route: resource,\n }\n : resource;\n\n const cloneActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n true,\n ).find((r) => r.action === \"clone\");\n\n if (!cloneActionRoute) {\n return \"\";\n }\n\n return composeRoute(cloneActionRoute.route, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n });\n }\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources) ?? { name: resource }\n : resource;\n\n const cloneActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n ).find((r) => r.action === \"clone\")?.route;\n\n if (!cloneActionRoute) {\n return \"\";\n }\n\n return go({\n to: composeRoute(cloneActionRoute, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n }),\n type: \"path\",\n }) as string;\n };\n\n const showUrl = (\n resource: string | IResourceItem,\n id: BaseKey,\n meta: MetaDataQuery = {},\n ) => {\n const encodedId = encodeURIComponent(id);\n if (routerType === \"legacy\") {\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources, true) ?? {\n name: resource,\n route: resource,\n }\n : resource;\n\n const showActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n true,\n ).find((r) => r.action === \"show\");\n\n if (!showActionRoute) {\n return \"\";\n }\n\n return composeRoute(showActionRoute.route, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n });\n }\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources) ?? { name: resource }\n : resource;\n\n const showActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n ).find((r) => r.action === \"show\")?.route;\n\n if (!showActionRoute) {\n return \"\";\n }\n\n return go({\n to: composeRoute(showActionRoute, resourceItem?.meta, parsed, {\n ...meta,\n id: encodedId,\n }),\n type: \"path\",\n }) as string;\n };\n\n const listUrl = (\n resource: string | IResourceItem,\n meta: MetaDataQuery = {},\n ) => {\n if (routerType === \"legacy\") {\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources, true) ?? {\n name: resource,\n route: resource,\n }\n : resource;\n\n const listActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n true,\n ).find((r) => r.action === \"list\");\n\n if (!listActionRoute) {\n return \"\";\n }\n\n return composeRoute(\n listActionRoute.route,\n resourceItem?.meta,\n parsed,\n meta,\n );\n }\n const resourceItem =\n typeof resource === \"string\"\n ? pickResource(resource, resources) ?? { name: resource }\n : resource;\n\n const listActionRoute = getActionRoutesFromResource(\n resourceItem,\n resources,\n ).find((r) => r.action === \"list\")?.route;\n\n if (!listActionRoute) {\n return \"\";\n }\n\n return go({\n to: composeRoute(listActionRoute, resourceItem?.meta, parsed, meta),\n type: \"path\",\n }) as string;\n };\n\n const create = (\n resource: string | IResourceItem,\n type: HistoryType = \"push\",\n meta: MetaDataQuery = {},\n ) => {\n handleUrl(createUrl(resource, meta), type);\n };\n\n const edit = (\n resource: string | IResourceItem,\n id: BaseKey,\n type: HistoryType = \"push\",\n meta: MetaDataQuery = {},\n ) => {\n handleUrl(editUrl(resource, id, meta), type);\n };\n\n const clone = (\n resource: string | IResourceItem,\n id: BaseKey,\n type: HistoryType = \"push\",\n meta: MetaDataQuery = {},\n ) => {\n handleUrl(cloneUrl(resource, id, meta), type);\n };\n\n const show = (\n resource: string | IResourceItem,\n id: BaseKey,\n type: HistoryType = \"push\",\n meta: MetaDataQuery = {},\n ) => {\n handleUrl(showUrl(resource, id, meta), type);\n };\n\n const list = (\n resource: string | IResourceItem,\n type: HistoryType = \"push\",\n meta: MetaDataQuery = {},\n ) => {\n handleUrl(listUrl(resource, meta), type);\n };\n\n /**\n * @deprecated Please use `useGo` hook instead.\n */\n const push = (path: string, ...rest: unknown[]) => {\n if (routerType === \"legacy\") {\n history.push(path, ...rest);\n } else {\n go({ to: path, type: \"push\" });\n }\n };\n\n /**\n * @deprecated Please use `useGo` hook instead.\n */\n const replace = (path: string, ...rest: unknown[]) => {\n if (routerType === \"legacy\") {\n history.replace(path, ...rest);\n } else {\n go({ to: path, type: \"replace\" });\n }\n };\n\n /**\n * @deprecated Please use `useBack` hook instead.\n */\n const goBack = () => {\n if (routerType === \"legacy\") {\n history.goBack();\n } else {\n back();\n }\n };\n\n return {\n create,\n createUrl,\n edit,\n editUrl,\n clone,\n cloneUrl,\n show,\n showUrl,\n list,\n listUrl,\n push,\n replace,\n goBack,\n };\n};\n","import React, { useState } from \"react\";\nimport { QueryObserverResult, UseQueryOptions } from \"@tanstack/react-query\";\nimport warnOnce from \"warn-once\";\n\nimport { useMeta, useOne } from \"@hooks\";\n\nimport {\n BaseRecord,\n GetOneResponse,\n SuccessErrorNotification,\n MetaQuery,\n LiveModeProps,\n BaseKey,\n HttpError,\n Prettify,\n} from \"../../interfaces\";\nimport { useResource } from \"../resource/useResource\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type useShowReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n> = {\n queryResult: QueryObserverResult<GetOneResponse<TData>, TError>;\n showId?: BaseKey;\n setShowId: React.Dispatch<React.SetStateAction<BaseKey | undefined>>;\n} & UseLoadingOvertimeReturnType;\n\nexport type useShowProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n> = {\n /**\n * Resource name for API data interactions\n * @default Reads `:resource` from the URL\n */\n resource?: string;\n /**\n * Data item ID for API data interactions\n * @default Reads `:id` from the URL\n */\n id?: BaseKey;\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetOneResponse<TQueryFnData>,\n TError,\n GetOneResponse<TData>\n >;\n /**\n * Additional meta data to pass to the data provider's `getOne`\n */\n meta?: MetaQuery;\n /**\n * Additional meta data to pass to the data provider's `getOne`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * Target data provider name for API call to be made\n * @default `\"default\"`\n */\n dataProviderName?: string;\n} & LiveModeProps &\n SuccessErrorNotification<\n GetOneResponse<TData>,\n TError,\n Prettify<{ id?: BaseKey } & MetaQuery>\n > &\n UseLoadingOvertimeOptionsProps;\n\n/**\n * `useShow` hook allows you to fetch the desired record.\n * It uses `getOne` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/api-reference/core/components/refine-config/ `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/show/useShow} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useShow = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource: resourceFromProp,\n id,\n successNotification,\n errorNotification,\n meta,\n metaData,\n liveMode,\n onLiveEvent,\n dataProviderName,\n queryOptions,\n overtimeOptions,\n}: useShowProps<TQueryFnData, TError, TData> = {}): useShowReturnType<\n TData,\n TError\n> => {\n const {\n resource,\n id: idFromRoute,\n identifier,\n } = useResource(resourceFromProp);\n const { identifier: inferredIdentifier } = useResource();\n const getMeta = useMeta();\n\n const getDefaultId = () => {\n const idFromPropsOrRoute = id ?? idFromRoute;\n\n if (resourceFromProp && resourceFromProp !== inferredIdentifier) {\n return id;\n }\n\n return idFromPropsOrRoute;\n };\n const defaultId = getDefaultId();\n\n const [showId, setShowId] = useState<BaseKey | undefined>(defaultId);\n\n React.useEffect(() => {\n setShowId(defaultId);\n }, [defaultId]);\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n warnOnce(\n Boolean(resourceFromProp) && !id,\n `[useShow]: resource: \"${identifier}\", id: ${id} \\n\\nIf you don't use the \\`setShowId\\` method to set the \\`showId\\`, you should pass the \\`id\\` prop to \\`useShow\\`. Otherwise, \\`useShow\\` will not be able to infer the \\`id\\` from the current URL. \\n\\nSee https://refine.dev/docs/api-reference/core/hooks/show/useShow/#resource`,\n );\n\n const queryResult = useOne<TQueryFnData, TError, TData>({\n resource: identifier,\n id: showId ?? \"\",\n queryOptions: {\n enabled: showId !== undefined,\n ...queryOptions,\n },\n successNotification,\n errorNotification,\n meta: combinedMeta,\n metaData: combinedMeta,\n liveMode,\n onLiveEvent,\n dataProviderName,\n });\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResult.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return {\n queryResult,\n showId,\n setShowId,\n overtime: { elapsedTime },\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { parse, ParseConfig } from \"papaparse\";\nimport chunk from \"lodash/chunk\";\n\nimport { useCreate, useCreateMany, useMeta, useResource } from \"@hooks\";\nimport { MapDataFn, BaseRecord, HttpError, MetaQuery } from \"../../interfaces\";\nimport {\n importCSVMapper,\n sequentialPromises,\n pickNotDeprecated,\n} from \"@definitions\";\nimport { UseCreateReturnType } from \"../../hooks/data/useCreate\";\nimport { UseCreateManyReturnType } from \"../../hooks/data/useCreateMany\";\n\nexport type ImportSuccessResult<TVariables, TData> = {\n request: TVariables[];\n type: \"success\";\n response: TData[];\n};\n\nexport type ImportErrorResult<TVariables> = {\n request: TVariables[];\n type: \"error\";\n response: HttpError[];\n};\n\nexport type OnFinishParams<TVariables, TData> = {\n succeeded: ImportSuccessResult<TVariables, TData>[];\n errored: ImportErrorResult<TVariables>[];\n};\n\nexport type OnProgressParams = {\n totalAmount: number;\n processedAmount: number;\n};\n\nexport type ImportOptions<\n TItem,\n TVariables = any,\n TData extends BaseRecord = BaseRecord,\n> = {\n /**\n * Resource name for API data interactions.\n * @default Resource name that it reads from route\n * @deprecated `resourceName` is deprecated. Use `resource` instead.\n */\n resourceName?: string;\n /**\n * Resource name for API data interactions.\n * @default Resource name that it reads from route\n */\n resource?: string;\n /**\n * A mapping function that runs for every record. Mapped data will be included in the file contents.\n */\n mapData?: MapDataFn<TItem, TVariables>;\n /**\n * Custom Papa Parse options.\n * @type [`ParseConfig`](https://www.papaparse.com/docs)\n */\n paparseOptions?: ParseConfig;\n /**\n * Requests batch size. If it is 1, all records are sent one by one. By default, it is [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) to send all records in one batch. If it is more than 1, `createMany` should be implemented on DataProvider.\n */\n batchSize?: number;\n /**\n * Called with errors and successful responses when all requests are sent.\n */\n onFinish?: (results: OnFinishParams<TVariables, TData>) => void;\n /**\n * Metadata query for `dataProvider`\n */\n meta?: MetaQuery;\n /**\n * Metadata query for `dataProvider`\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * A callback function that returns a current state of uploading process.\n *\n * Ex: `percentage = onProgressParams.processedAmount / onProgressParams.totalAmount * 100`\n */\n onProgress?: (onProgressParams: OnProgressParams) => void;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n};\n\nexport type CreatedValuesType<TVariables, TData> =\n | ImportSuccessResult<TVariables, TData>\n | ImportErrorResult<TVariables>;\n\nexport type HandleChangeType<TVariables, TData> = (onChangeParams: {\n file: Partial<File>;\n}) => Promise<CreatedValuesType<TVariables, TData>[]>;\n\nexport type UseImportInputPropsType = {\n type: \"file\";\n accept: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport type UseImportReturnType<\n TData extends BaseRecord = BaseRecord,\n TVariables = {},\n TError extends HttpError = HttpError,\n> = {\n inputProps: UseImportInputPropsType;\n mutationResult:\n | UseCreateReturnType<TData, TError, TVariables>\n | UseCreateManyReturnType<TData, TError, TVariables>;\n isLoading: boolean;\n handleChange: HandleChangeType<TVariables, TData>;\n};\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n TItem = any,\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = any,\n>({\n resourceName,\n resource: resourceFromProps,\n mapData = (item) => item as unknown as TVariables,\n paparseOptions,\n batchSize = Number.MAX_SAFE_INTEGER,\n onFinish,\n meta,\n metaData,\n onProgress,\n dataProviderName,\n}: ImportOptions<TItem, TVariables, TData> = {}): UseImportReturnType<\n TData,\n TVariables,\n TError\n> => {\n const [processedAmount, setProcessedAmount] = useState<number>(0);\n const [totalAmount, setTotalAmount] = useState<number>(0);\n const [isLoading, setIsLoading] = useState(false);\n\n const { resource, identifier } = useResource(\n resourceFromProps ?? resourceName,\n );\n\n const getMeta = useMeta();\n\n const createMany = useCreateMany<TData, TError, TVariables>();\n const create = useCreate<TData, TError, TVariables>();\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n let mutationResult:\n | UseCreateReturnType<TData, TError, TVariables>\n | UseCreateManyReturnType<TData, TError, TVariables>;\n\n if (batchSize === 1) {\n mutationResult = create;\n } else {\n mutationResult = createMany;\n }\n\n const handleCleanup = () => {\n setTotalAmount(0);\n setProcessedAmount(0);\n setIsLoading(false);\n };\n\n const handleFinish = (\n createdValues: CreatedValuesType<TVariables, TData>[],\n ) => {\n const result = {\n succeeded: createdValues.filter(\n (item) => item.type === \"success\",\n ) as unknown as ImportSuccessResult<TVariables, TData>[],\n errored: createdValues.filter(\n (item) => item.type === \"error\",\n ) as unknown as ImportErrorResult<TVariables>[],\n };\n\n onFinish?.(result);\n setIsLoading(false);\n };\n\n useEffect(() => {\n onProgress?.({ totalAmount, processedAmount });\n }, [totalAmount, processedAmount]);\n\n const handleChange: HandleChangeType<TVariables, TData> = ({ file }) => {\n handleCleanup();\n return new Promise<CreatedValuesType<TVariables, TData>[]>((resolve) => {\n setIsLoading(true);\n parse(file as any, {\n complete: async ({ data }: { data: unknown[][] }) => {\n const values = importCSVMapper(data, mapData);\n\n setTotalAmount(values.length);\n\n if (batchSize === 1) {\n // Create Processor Functions\n const valueFns = values.map((value) => {\n const fn = async () => {\n const response = await create.mutateAsync({\n resource: identifier ?? \"\",\n values: value,\n successNotification: false,\n errorNotification: false,\n dataProviderName,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n\n return { response, value };\n };\n return fn;\n });\n // Sequentially run processor functions and process resolves/rejects\n const createdValues = await sequentialPromises(\n valueFns,\n ({ response, value }) => {\n setProcessedAmount((currentAmount) => {\n return currentAmount + 1;\n });\n\n return {\n response: [response.data],\n type: \"success\",\n request: [value],\n } as ImportSuccessResult<TVariables, TData>;\n },\n (error: HttpError, index) => {\n return {\n response: [error],\n type: \"error\",\n request: [values[index]],\n } as ImportErrorResult<TVariables>;\n },\n );\n // Resolve with created values\n resolve(createdValues);\n } else {\n // Create Chunks\n const chunks = chunk(values, batchSize);\n // Create Chunk Processor Functions\n const chunkedFns = chunks.map((chunkedValues) => {\n const fn = async () => {\n const response = await createMany.mutateAsync({\n resource: identifier ?? \"\",\n values: chunkedValues,\n successNotification: false,\n errorNotification: false,\n dataProviderName,\n meta: combinedMeta,\n metaData: combinedMeta,\n });\n\n return {\n response,\n value: chunkedValues,\n currentBatchLength: chunkedValues.length,\n };\n };\n\n return fn;\n });\n // Sequentially run chunked functions and process resolves/rejects\n const createdValues = await sequentialPromises(\n chunkedFns,\n ({ response, currentBatchLength, value }) => {\n setProcessedAmount((currentAmount) => {\n return currentAmount + currentBatchLength;\n });\n\n return {\n response: response.data,\n type: \"success\",\n request: value,\n } as ImportSuccessResult<TVariables, TData>;\n },\n (error: HttpError, index) => {\n return {\n response: [error],\n type: \"error\",\n request: chunks[index],\n } as ImportErrorResult<TVariables>;\n },\n );\n // resolve with all created values\n resolve(createdValues);\n }\n },\n\n ...paparseOptions,\n });\n }).then((createdValues) => {\n handleFinish(createdValues);\n return createdValues;\n });\n };\n\n return {\n inputProps: {\n type: \"file\",\n accept: \".csv\",\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files && event.target.files.length > 0) {\n handleChange({ file: event.target.files[0] });\n }\n },\n },\n mutationResult,\n isLoading,\n handleChange,\n };\n};\n","import { useCallback, useState } from \"react\";\n\nexport type useModalReturnType = {\n visible: boolean;\n show: () => void;\n close: () => void;\n};\n\nexport type useModalProps = {\n /**\n * Initial state of the modal\n */\n defaultVisible?: boolean;\n};\n\nexport const useModal = ({\n defaultVisible = false,\n}: useModalProps = {}): useModalReturnType => {\n const [visible, setVisible] = useState(defaultVisible);\n\n const show = useCallback(() => setVisible(true), [visible]);\n const close = useCallback(() => setVisible(false), [visible]);\n\n return {\n visible,\n show,\n close,\n };\n};\n","import { Action, IResourceItem } from \"../../../interfaces\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype UseToPathParams = {\n resource?: IResourceItem;\n action: Action;\n meta?: Record<string, unknown>;\n legacy?: boolean;\n};\n\n/**\n * Returns the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useToPath = ({\n resource,\n action,\n meta,\n legacy,\n}: UseToPathParams): string | undefined => {\n const getToPath = useGetToPath();\n\n return getToPath({ resource, action, meta, legacy });\n};\n","import { RouterBindingsContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\n\nexport const useLink = () => {\n const bindings = useContext(RouterBindingsContext);\n\n if (bindings?.Link) {\n return bindings.Link;\n }\n\n const FallbackLink: Required<typeof bindings>[\"Link\"] = ({ to, ...rest }) => (\n <a href={to} {...rest} />\n );\n\n return FallbackLink;\n};\n","import { useContext } from \"react\";\nimport { RouterContext, defaultProvider } from \"@contexts/legacy-router\";\n\nexport const useRouterContext = () => {\n const routerContextValues = useContext(RouterContext);\n\n const { useHistory, useLocation, useParams, Prompt, Link, routes } =\n routerContextValues ?? defaultProvider;\n\n return {\n useHistory,\n useLocation,\n useParams,\n Prompt,\n Link,\n routes,\n };\n};\n","import React from \"react\";\n\nimport { IRouterContext } from \"../../interfaces\";\n\nexport const defaultProvider: IRouterContext = {\n useHistory: () => false,\n useLocation: () => false,\n useParams: () => ({}) as any,\n Prompt: () => null,\n Link: () => null,\n};\n\nexport const LegacyRouterContext =\n React.createContext<IRouterContext>(defaultProvider);\n\nexport const RouterContext = LegacyRouterContext;\n\nexport const LegacyRouterContextProvider: React.FC<\n Partial<IRouterContext> & {\n children?: React.ReactNode;\n }\n> = ({\n children,\n useHistory,\n useLocation,\n useParams,\n Prompt,\n Link,\n routes,\n}) => {\n return (\n <RouterContext.Provider\n value={{\n useHistory: useHistory ?? defaultProvider.useHistory,\n useLocation: useLocation ?? defaultProvider.useLocation,\n useParams: useParams ?? defaultProvider.useParams,\n Prompt: Prompt ?? defaultProvider.Prompt,\n Link: Link ?? defaultProvider.Link,\n routes: routes ?? defaultProvider.routes,\n }}\n >\n {children}\n </RouterContext.Provider>\n );\n};\n","import {\n useQuery,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useContext } from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { CanParams, CanReturnType } from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nexport type UseCanProps = CanParams & {\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<CanReturnType>;\n};\n\n/**\n * `useCan` uses the `can` as the query function for `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`}. It takes the parameters that `can` takes. It can also be configured with `queryOptions` for `useQuery`. Returns the result of `useQuery`.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/accessControl/useCan} for more details.\n *\n * @typeParam CanParams {@link https://refine.dev/docs/core/interfaceReferences#canparams}\n * @typeParam CanReturnType {@link https://refine.dev/docs/core/interfaceReferences#canreturntype}\n *\n */\nexport const useCan = ({\n action,\n resource,\n params,\n queryOptions: hookQueryOptions,\n}: UseCanProps): UseQueryResult<CanReturnType> => {\n const { can, options: globalOptions } = useContext(AccessControlContext);\n const { keys, preferLegacyKeys } = useKeys();\n\n const { queryOptions: globalQueryOptions } = globalOptions || {};\n\n const mergedQueryOptions = {\n ...globalQueryOptions,\n ...hookQueryOptions,\n };\n\n /**\n * Since `react-query` stringifies the query keys, it will throw an error for a circular dependency if we include `React.ReactNode` elements inside the keys.\n * The feature in #2220(https://github.com/refinedev/refine/issues/2220) includes such change and to fix this, we need to remove `icon` property in the `resource`\n */\n const { resource: _resource, ...paramsRest } = params ?? {};\n\n const sanitizedResource = sanitizeResource(_resource);\n\n const queryResponse = useQuery<CanReturnType>({\n queryKey: keys()\n .access()\n .resource(resource)\n .action(action)\n .params({\n params: { ...paramsRest, resource: sanitizedResource },\n enabled: mergedQueryOptions?.enabled,\n })\n .get(preferLegacyKeys),\n // Enabled check for `can` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n queryFn: () =>\n can?.({\n action,\n resource,\n params: { ...paramsRest, resource: sanitizedResource },\n }) ?? Promise.resolve({ can: true }),\n enabled: typeof can !== \"undefined\",\n ...mergedQueryOptions,\n meta: {\n ...mergedQueryOptions?.meta,\n ...getXRay(\"useCan\", preferLegacyKeys),\n },\n retry: false,\n });\n\n return typeof can === \"undefined\"\n ? ({ data: { can: true } } as typeof queryResponse)\n : queryResponse;\n};\n","import React from \"react\";\n\nimport {\n IAccessControlContext,\n IAccessControlContextReturnType,\n} from \"./IAccessControlContext\";\n\n/** @deprecated default value for access control context has no use and is an empty object. */\nexport const defaultAccessControlContext: IAccessControlContext = {};\n\nexport const AccessControlContext =\n React.createContext<IAccessControlContextReturnType>({\n options: {\n buttons: { enableAccessControl: true, hideIfUnauthorized: false },\n },\n });\n\nexport { IAccessControlContext };\n\nexport const AccessControlContextProvider: React.FC<\n IAccessControlContext & {\n children?: React.ReactNode;\n }\n> = ({ can, children, options }) => {\n return (\n <AccessControlContext.Provider\n value={{\n can,\n options: options\n ? {\n ...options,\n buttons: {\n enableAccessControl: true,\n hideIfUnauthorized: false,\n ...options.buttons,\n },\n }\n : {\n buttons: {\n enableAccessControl: true,\n hideIfUnauthorized: false,\n },\n queryOptions: undefined,\n },\n }}\n >\n {children}\n </AccessControlContext.Provider>\n );\n};\n","import { IResourceItem } from \"../../../interfaces/bindings/resource\";\n\n/**\n * Remove all properties that are non-serializable from a resource object.\n */\nexport const sanitizeResource = (\n resource?: Partial<IResourceItem> &\n Required<Pick<IResourceItem, \"name\">> & { children?: unknown },\n):\n | (Partial<IResourceItem> & Required<Pick<IResourceItem, \"name\">>)\n | undefined => {\n if (!resource) {\n return undefined;\n }\n\n const {\n icon,\n list,\n edit,\n create,\n show,\n clone,\n children,\n meta,\n options,\n ...restResource\n } = resource;\n\n const { icon: _metaIcon, ...restMeta } = meta ?? {};\n const { icon: _optionsIcon, ...restOptions } = options ?? {};\n\n return {\n ...restResource,\n ...(meta ? { meta: restMeta } : {}),\n ...(options ? { options: restOptions } : {}),\n };\n};\n","import React from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { IAccessControlContext } from \"../../interfaces\";\n\nexport const useCanWithoutCache = (): IAccessControlContext => {\n const { can: canFromContext } = React.useContext(AccessControlContext);\n\n const can = React.useMemo(() => {\n if (!canFromContext) {\n return undefined;\n }\n\n const canWithSanitizedResource: NonNullable<typeof canFromContext> =\n async ({ params, ...rest }) => {\n const sanitizedResource = params?.resource\n ? sanitizeResource(params.resource)\n : undefined;\n\n return canFromContext({\n ...rest,\n ...(params\n ? {\n params: {\n ...params,\n resource: sanitizedResource,\n },\n }\n : {}),\n });\n };\n\n return canWithSanitizedResource;\n }, [canFromContext]);\n\n return { can };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { QueryObserverResult, UseQueryOptions } from \"@tanstack/react-query\";\nimport uniqBy from \"lodash/uniqBy\";\nimport debounce from \"lodash/debounce\";\nimport get from \"lodash/get\";\n\nimport { useList, useMany, useMeta } from \"@hooks\";\nimport {\n CrudSorting,\n BaseOption,\n BaseRecord,\n GetManyResponse,\n GetListResponse,\n CrudFilters,\n SuccessErrorNotification,\n HttpError,\n LiveModeProps,\n BaseKey,\n Pagination,\n MetaQuery,\n Prettify,\n} from \"../../interfaces\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\nimport { useResource } from \"../resource/useResource/index\";\nimport { BaseListProps } from \"../data/useList\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\nexport type UseSelectProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n */\n resource: string;\n /**\n * Set the option's label value\n * @default `\"title\"`\n */\n optionLabel?: keyof TData extends string\n ? keyof TData\n : never | ((item: TData) => string);\n /**\n * Set the option's value\n * @default `\"id\"`\n */\n optionValue?: keyof TData extends string\n ? keyof TData\n : never | ((item: TData) => string);\n /**\n * Field name to search for.\n * @description If provided `optionLabel` is a string, uses `optionLabel`'s value.\n * @default `\"title\"`\n * @example\n * // when optionLabel is string.\n * useSelect({ optionLabel: \"name\" })\n * // uses `name` field.\n * @example\n * // when optionLabel is function.\n * useSelect({ optionLabel: (field) => field.description })\n * // uses `title`, since `optionLabel` is a function.\n */\n searchField?: keyof TData extends string ? keyof TData : never;\n /**\n * Allow us to sort the options\n * @deprecated Use `sorters` instead\n */\n sort?: CrudSorting;\n /**\n * Allow us to sort the options\n */\n sorters?: CrudSorting;\n /**\n * Resource name for API data interactions\n */\n filters?: CrudFilters;\n /**\n * Adds extra `options`\n */\n defaultValue?: BaseKey | BaseKey[];\n /**\n * The number of milliseconds to delay\n * @default `300`\n */\n debounce?: number;\n /**\n * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >;\n /**\n * Pagination option from [`useList()`](/docs/api-reference/core/hooks/data/useList/)\n * @type { current?: number; pageSize?: number;}\n * @default `undefined`\n */\n pagination?: Prettify<\n Omit<Pagination, \"mode\"> & {\n /**\n * Whether to use server side pagination or not.\n * @default \"off\"\n */\n mode?: Pagination[\"mode\"];\n }\n >;\n /**\n * Disabling pagination option from [`useList()`](/docs/api-reference/core/hooks/data/useList/)\n * @type boolean\n * @default `false`\n * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n */\n defaultValueQueryOptions?: UseQueryOptions<\n GetManyResponse<TQueryFnData>,\n TError\n >;\n /**\n * If defined, this callback allows us to override all filters for every search request.\n * @default `undefined`\n */\n onSearch?: (value: string) => CrudFilters;\n /**\n * Additional meta data to pass to the `useMany` from the data provider\n */\n meta?: MetaQuery;\n /**\n * Additional meta data to pass to the `useMany` from the data provider\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n * @default `default`\n */\n dataProviderName?: string;\n /**\n * Amount of records to fetch in select box list.\n * @deprecated use [`pagination`](https://refine.dev/docs/api-reference/core/interfaceReferences/#pagination) instead\n * @default `undefined`\n */\n fetchSize?: number;\n} & SuccessErrorNotification<\n GetListResponse<TData>,\n TError,\n Prettify<BaseListProps>\n> &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\nexport type UseSelectReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TOption extends BaseOption = BaseOption,\n> = {\n queryResult: QueryObserverResult<GetListResponse<TData>, TError>;\n defaultValueQueryResult: QueryObserverResult<GetManyResponse<TData>>;\n onSearch: (value: string) => void;\n options: TOption[];\n} & UseLoadingOvertimeReturnType;\n\n/**\n * `useSelect` hook is used to fetch data from the dataProvider and return the options for the select box.\n *\n * It uses `getList` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/api-reference/core/components/refine-config/ `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useSelect} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>(\n props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TError, TOption> => {\n const [search, setSearch] = useState<CrudFilters>([]);\n const [options, setOptions] = useState<TOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<TOption[]>([]);\n\n const {\n resource: resourceFromProps,\n sort,\n sorters,\n filters = [],\n optionLabel = \"title\",\n optionValue = \"id\",\n searchField = typeof optionLabel === \"string\" ? optionLabel : \"title\",\n debounce: debounceValue = 300,\n successNotification,\n errorNotification,\n defaultValueQueryOptions: defaultValueQueryOptionsFromProps,\n queryOptions,\n fetchSize,\n pagination,\n hasPagination = false,\n liveMode,\n defaultValue = [],\n onLiveEvent,\n onSearch: onSearchFromProp,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n overtimeOptions,\n } = props;\n\n const getOptionLabel = useCallback(\n (item: TData) => {\n if (typeof optionLabel === \"string\") {\n return get(item, optionLabel);\n }\n\n return optionLabel(item);\n },\n [optionLabel],\n );\n\n const getOptionValue = useCallback(\n (item: TData) => {\n if (typeof optionValue === \"string\") {\n return get(item, optionValue);\n }\n\n return optionValue(item);\n },\n [optionValue],\n );\n\n const { resource, identifier } = useResource(resourceFromProps);\n\n const getMeta = useMeta();\n\n const combinedMeta = getMeta({\n resource,\n meta: pickNotDeprecated(meta, metaData),\n });\n\n const defaultValues = Array.isArray(defaultValue)\n ? defaultValue\n : [defaultValue];\n\n const defaultValueQueryOnSuccess = useCallback(\n (data: GetManyResponse<TData>) => {\n setSelectedOptions(\n data.data.map(\n (item) =>\n ({\n label: getOptionLabel(item),\n value: getOptionValue(item),\n }) as TOption,\n ),\n );\n },\n [optionLabel, optionValue],\n );\n\n const defaultValueQueryOptions =\n defaultValueQueryOptionsFromProps ?? (queryOptions as any);\n\n const defaultValueQueryResult = useMany<TQueryFnData, TError, TData>({\n resource: identifier,\n ids: defaultValues,\n queryOptions: {\n ...defaultValueQueryOptions,\n enabled:\n defaultValues.length > 0 && (defaultValueQueryOptions?.enabled ?? true),\n onSuccess: (data) => {\n defaultValueQueryOnSuccess(data);\n defaultValueQueryOptions?.onSuccess?.(data);\n },\n },\n meta: combinedMeta,\n metaData: combinedMeta,\n liveMode: \"off\",\n dataProviderName,\n });\n\n const defaultQueryOnSuccess = useCallback(\n (data: GetListResponse<TData>) => {\n {\n setOptions(\n data.data.map(\n (item) =>\n ({\n label: getOptionLabel(item),\n value: getOptionValue(item),\n }) as TOption,\n ),\n );\n }\n },\n [optionLabel, optionValue],\n );\n\n const queryResult = useList<TQueryFnData, TError, TData>({\n resource: identifier,\n sorters: pickNotDeprecated(sorters, sort),\n filters: filters.concat(search),\n pagination: {\n current: pagination?.current,\n pageSize: pagination?.pageSize ?? fetchSize,\n mode: pagination?.mode,\n },\n hasPagination,\n queryOptions: {\n ...queryOptions,\n onSuccess: (data) => {\n defaultQueryOnSuccess(data);\n queryOptions?.onSuccess?.(data);\n },\n },\n successNotification,\n errorNotification,\n meta: combinedMeta,\n metaData: combinedMeta,\n liveMode,\n liveParams,\n onLiveEvent,\n dataProviderName,\n });\n\n const onSearch = (value: string) => {\n if (onSearchFromProp) {\n setSearch(onSearchFromProp(value));\n return;\n }\n\n if (!value) {\n setSearch([]);\n return;\n }\n\n setSearch([\n {\n field: searchField,\n operator: \"contains\",\n value,\n },\n ]);\n };\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResult.isFetching || defaultValueQueryResult.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n const combinedOptions = useMemo(\n () => uniqBy([...options, ...selectedOptions], \"value\"),\n [options, selectedOptions],\n );\n\n return {\n queryResult,\n defaultValueQueryResult,\n options: combinedOptions,\n onSearch: debounce(onSearch, debounceValue),\n overtime: { elapsedTime },\n };\n};\n","import React, { useState, useEffect } from \"react\";\nimport { QueryObserverResult, UseQueryOptions } from \"@tanstack/react-query\";\nimport qs from \"qs\";\nimport differenceWith from \"lodash/differenceWith\";\nimport isEqual from \"lodash/isEqual\";\nimport warnOnce from \"warn-once\";\n\nimport {\n useRouterContext,\n useSyncWithLocation,\n useNavigation,\n useList,\n useLiveMode,\n useRouterType,\n useResource,\n useParsed,\n useMeta,\n} from \"@hooks\";\nimport {\n stringifyTableParams,\n parseTableParams,\n unionFilters,\n setInitialFilters,\n setInitialSorters,\n unionSorters,\n} from \"@definitions/table\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\n\nimport {\n BaseRecord,\n CrudFilters,\n CrudSorting,\n GetListResponse,\n SuccessErrorNotification,\n HttpError,\n MetaQuery,\n LiveModeProps,\n Pagination,\n Prettify,\n} from \"../../interfaces\";\nimport { useGo } from \"@hooks/router/use-go\";\nimport { BaseListProps } from \"../data/useList\";\nimport {\n useLoadingOvertime,\n UseLoadingOvertimeOptionsProps,\n UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype SetFilterBehavior = \"merge\" | \"replace\";\n\nexport type useTableProps<TQueryFnData, TError, TData> = {\n /**\n * Resource name for API data interactions\n * @default Resource name that it reads from route\n */\n resource?: string;\n /**\n * Configuration for pagination\n */\n pagination?: Pagination;\n /**\n * Initial page index\n * @default 1\n * @deprecated `initialCurrent` property is deprecated. Use `pagination.current` instead.\n */\n initialCurrent?: number;\n /**\n * Initial number of items per page\n * @default 10\n * @deprecated `initialPageSize` property is deprecated. Use `pagination.pageSize` instead.\n */\n initialPageSize?: number;\n /**\n * Sort configs\n */\n sorters?: {\n /**\n * Initial sorter state\n */\n initial?: CrudSorting;\n /**\n * Default and unchangeable sorter state\n * @default `[]`\n */\n permanent?: CrudSorting;\n /**\n * Whether to use server side sorting or not.\n * @default \"server\"\n */\n mode?: \"server\" | \"off\";\n };\n /**\n * Initial sorter state\n * @deprecated `initialSorter` property is deprecated. Use `sorters.initial` instead.\n */\n initialSorter?: CrudSorting;\n /**\n * Default and unchangeable sorter state\n * @default `[]`\n * @deprecated `permanentSorter` property is deprecated. Use `sorters.permanent` instead.\n */\n permanentSorter?: CrudSorting;\n /**\n * Filter configs\n */\n filters?: {\n /**\n * Initial filter state\n */\n initial?: CrudFilters;\n /**\n * Default and unchangeable filter state\n * @default `[]`\n */\n permanent?: CrudFilters;\n /**\n * Default behavior of the `setFilters` function\n * @default `\"merge\"`\n */\n defaultBehavior?: SetFilterBehavior;\n /**\n * Whether to use server side filter or not.\n * @default \"server\"\n */\n mode?: \"server\" | \"off\";\n };\n /**\n * Initial filter state\n * @deprecated `initialFilter` property is deprecated. Use `filters.initial` instead.\n */\n initialFilter?: CrudFilters;\n /**\n * Default and unchangeable filter state\n * @default `[]`\n * @deprecated `permanentFilter` property is deprecated. Use `filters.permanent` instead.\n */\n permanentFilter?: CrudFilters;\n /**\n * Default behavior of the `setFilters` function\n * @default `\"merge\"`\n * @deprecated `defaultSetFilterBehavior` property is deprecated. Use `filters.defaultBehavior` instead.\n */\n defaultSetFilterBehavior?: SetFilterBehavior;\n /**\n * Whether to use server side pagination or not.\n * @default `true`\n * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n */\n hasPagination?: boolean;\n /**\n * Sortings, filters, page index and records shown per page are tracked by browser history\n * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false`\n */\n syncWithLocation?: boolean;\n /**\n * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n */\n queryOptions?: UseQueryOptions<\n GetListResponse<TQueryFnData>,\n TError,\n GetListResponse<TData>\n >;\n /**\n * Metadata query for dataProvider\n */\n meta?: MetaQuery;\n /**\n * Metadata query for dataProvider\n * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n */\n metaData?: MetaQuery;\n /**\n * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n */\n dataProviderName?: string;\n} & SuccessErrorNotification<\n GetListResponse<TData>,\n TError,\n Prettify<BaseListProps>\n> &\n LiveModeProps &\n UseLoadingOvertimeOptionsProps;\n\ntype ReactSetState<T> = React.Dispatch<React.SetStateAction<T>>;\n\ntype SyncWithLocationParams = {\n pagination: { current?: number; pageSize?: number };\n /**\n * @deprecated `sorter` is deprecated. Use `sorters` instead.\n */\n sorter?: CrudSorting;\n sorters: CrudSorting;\n filters: CrudFilters;\n};\n\nexport type useTableReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n> = {\n tableQueryResult: QueryObserverResult<GetListResponse<TData>, TError>;\n /**\n * @deprecated `sorter` is deprecated. Use `sorters` instead.\n */\n sorter: CrudSorting;\n sorters: CrudSorting;\n /**\n * @deprecated `setSorter` is deprecated. Use `setSorters` instead.\n */\n setSorter: (sorter: CrudSorting) => void;\n setSorters: (sorter: CrudSorting) => void;\n filters: CrudFilters;\n setFilters: ((filters: CrudFilters, behavior?: SetFilterBehavior) => void) &\n ((setter: (prevFilters: CrudFilters) => CrudFilters) => void);\n createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string;\n current: number;\n setCurrent: ReactSetState<useTableReturnType[\"current\"]>;\n pageSize: number;\n setPageSize: ReactSetState<useTableReturnType[\"pageSize\"]>;\n pageCount: number;\n} & UseLoadingOvertimeReturnType;\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useTable} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nconst defaultPermanentFilter: CrudFilters = [];\nconst defaultPermanentSorter: CrudSorting = [];\n\nexport function useTable<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n>({\n initialCurrent,\n initialPageSize,\n hasPagination = true,\n pagination,\n initialSorter,\n permanentSorter = defaultPermanentSorter,\n defaultSetFilterBehavior,\n initialFilter,\n permanentFilter = defaultPermanentFilter,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n syncWithLocation: syncWithLocationProp,\n resource: resourceFromProp,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n overtimeOptions,\n}: useTableProps<TQueryFnData, TError, TData> = {}): useTableReturnType<\n TData,\n TError\n> {\n const { syncWithLocation: syncWithLocationContext } = useSyncWithLocation();\n\n const syncWithLocation = syncWithLocationProp ?? syncWithLocationContext;\n\n const liveMode = useLiveMode(liveModeFromProp);\n\n const routerType = useRouterType();\n const { useLocation } = useRouterContext();\n const { search, pathname } = useLocation();\n const getMeta = useMeta();\n const parsedParams = useParsed();\n\n const isServerSideFilteringEnabled =\n (filtersFromProp?.mode || \"server\") === \"server\";\n const isServerSideSortingEnabled =\n (sortersFromProp?.mode || \"server\") === \"server\";\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n const prefferedCurrent = pickNotDeprecated(\n pagination?.current,\n initialCurrent,\n );\n const prefferedPageSize = pickNotDeprecated(\n pagination?.pageSize,\n initialPageSize,\n );\n const preferredMeta = pickNotDeprecated(meta, metaData);\n\n /** `parseTableParams` is redundant with the new routing */\n // We want to always parse the query string even when syncWithLocation is\n // deactivated, for hotlinking to work properly\n const { parsedCurrent, parsedPageSize, parsedSorter, parsedFilters } =\n parseTableParams(search ?? \"?\");\n\n const preferredInitialFilters = pickNotDeprecated(\n filtersFromProp?.initial,\n initialFilter,\n );\n const preferredPermanentFilters =\n pickNotDeprecated(filtersFromProp?.permanent, permanentFilter) ??\n defaultPermanentFilter;\n\n const preferredInitialSorters = pickNotDeprecated(\n sortersFromProp?.initial,\n initialSorter,\n );\n const preferredPermanentSorters =\n pickNotDeprecated(sortersFromProp?.permanent, permanentSorter) ??\n defaultPermanentSorter;\n\n const prefferedFilterBehavior =\n pickNotDeprecated(\n filtersFromProp?.defaultBehavior,\n defaultSetFilterBehavior,\n ) ?? \"merge\";\n\n let defaultCurrent: number;\n let defaultPageSize: number;\n let defaultSorter: CrudSorting | undefined;\n let defaultFilter: CrudFilters | undefined;\n\n if (syncWithLocation) {\n defaultCurrent =\n parsedParams?.params?.current || parsedCurrent || prefferedCurrent || 1;\n defaultPageSize =\n parsedParams?.params?.pageSize ||\n parsedPageSize ||\n prefferedPageSize ||\n 10;\n defaultSorter =\n parsedParams?.params?.sorters ||\n (parsedSorter.length ? parsedSorter : preferredInitialSorters);\n defaultFilter =\n parsedParams?.params?.filters ||\n (parsedFilters.length ? parsedFilters : preferredInitialFilters);\n } else {\n defaultCurrent = prefferedCurrent || 1;\n defaultPageSize = prefferedPageSize || 10;\n defaultSorter = preferredInitialSorters;\n defaultFilter = preferredInitialFilters;\n }\n\n const { replace } = useNavigation();\n /** New way of `replace` calls to the router is using `useGo` */\n const go = useGo();\n\n const { resource, identifier } = useResource(resourceFromProp);\n\n const combinedMeta = getMeta({\n resource,\n meta: preferredMeta,\n });\n\n React.useEffect(() => {\n warnOnce(\n typeof identifier === \"undefined\",\n \"useTable: `resource` is not defined.\",\n );\n }, [identifier]);\n\n const [sorters, setSorters] = useState<CrudSorting>(\n setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n );\n const [filters, setFilters] = useState<CrudFilters>(\n setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n );\n const [current, setCurrent] = useState<number>(defaultCurrent);\n const [pageSize, setPageSize] = useState<number>(defaultPageSize);\n\n const getCurrentQueryParams = (): object => {\n if (routerType === \"new\") {\n // We get QueryString parameters that are uncontrolled by refine.\n const { sorters, filters, pageSize, current, ...rest } =\n parsedParams?.params ?? {};\n\n return rest;\n }\n\n // We get QueryString parameters that are uncontrolled by refine.\n const { sorter, filters, pageSize, current, ...rest } = qs.parse(search, {\n ignoreQueryPrefix: true,\n });\n\n return rest;\n };\n\n const createLinkForSyncWithLocation = ({\n pagination: { current, pageSize },\n sorter,\n filters,\n }: SyncWithLocationParams) => {\n if (routerType === \"new\") {\n return (\n go({\n type: \"path\",\n options: {\n keepHash: true,\n keepQuery: true,\n },\n query: {\n ...(isPaginationEnabled ? { current, pageSize } : {}),\n sorters: sorter,\n filters,\n ...getCurrentQueryParams(),\n },\n }) ?? \"\"\n );\n }\n const currentQueryParams = qs.parse(search?.substring(1)); // remove first ? character\n\n const stringifyParams = stringifyTableParams({\n pagination: {\n pageSize,\n current,\n },\n sorters: sorters ?? sorter,\n filters,\n ...currentQueryParams,\n });\n\n return `${pathname ?? \"\"}?${stringifyParams ?? \"\"}`;\n };\n\n useEffect(() => {\n if (search === \"\") {\n setCurrent(defaultCurrent);\n setPageSize(defaultPageSize);\n setSorters(\n setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n );\n setFilters(\n setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n );\n }\n }, [search]);\n\n useEffect(() => {\n if (syncWithLocation) {\n // Careful! This triggers render\n const queryParams = getCurrentQueryParams();\n\n if (routerType === \"new\") {\n go({\n type: \"replace\",\n options: {\n keepQuery: true,\n },\n query: {\n ...(isPaginationEnabled ? { pageSize, current } : {}),\n sorters: differenceWith(\n sorters,\n preferredPermanentSorters,\n isEqual,\n ),\n filters: differenceWith(\n filters,\n preferredPermanentFilters,\n isEqual,\n ),\n // ...queryParams,\n },\n });\n } else {\n const stringifyParams = stringifyTableParams({\n ...(isPaginationEnabled\n ? {\n pagination: {\n pageSize,\n current,\n },\n }\n : {}),\n sorters: differenceWith(sorters, preferredPermanentSorters, isEqual),\n filters: differenceWith(filters, preferredPermanentFilters, isEqual),\n ...queryParams,\n });\n return replace?.(`${pathname}?${stringifyParams}`, undefined, {\n shallow: true,\n });\n }\n }\n }, [syncWithLocation, current, pageSize, sorters, filters]);\n\n const queryResult = useList<TQueryFnData, TError, TData>({\n resource: identifier,\n hasPagination,\n pagination: { current, pageSize, mode: pagination?.mode },\n filters: isServerSideFilteringEnabled\n ? unionFilters(preferredPermanentFilters, filters)\n : undefined,\n sorters: isServerSideSortingEnabled\n ? unionSorters(preferredPermanentSorters, sorters)\n : undefined,\n queryOptions,\n successNotification,\n errorNotification,\n meta: combinedMeta,\n metaData: combinedMeta,\n liveMode,\n liveParams,\n onLiveEvent,\n dataProviderName,\n });\n\n const setFiltersAsMerge = (newFilters: CrudFilters) => {\n setFilters((prevFilters) =>\n unionFilters(preferredPermanentFilters, newFilters, prevFilters),\n );\n };\n\n const setFiltersAsReplace = (newFilters: CrudFilters) => {\n setFilters(unionFilters(preferredPermanentFilters, newFilters));\n };\n\n const setFiltersWithSetter = (\n setter: (prevFilters: CrudFilters) => CrudFilters,\n ) => {\n setFilters((prev) => unionFilters(preferredPermanentFilters, setter(prev)));\n };\n\n const setFiltersFn: useTableReturnType<TQueryFnData>[\"setFilters\"] = (\n setterOrFilters,\n behavior: SetFilterBehavior = prefferedFilterBehavior,\n ) => {\n if (typeof setterOrFilters === \"function\") {\n setFiltersWithSetter(setterOrFilters);\n } else {\n if (behavior === \"replace\") {\n setFiltersAsReplace(setterOrFilters);\n } else {\n setFiltersAsMerge(setterOrFilters);\n }\n }\n };\n\n const setSortWithUnion = (newSorter: CrudSorting) => {\n setSorters(() => unionSorters(preferredPermanentSorters, newSorter));\n };\n\n const { elapsedTime } = useLoadingOvertime({\n isLoading: queryResult.isFetching,\n interval: overtimeOptions?.interval,\n onInterval: overtimeOptions?.onInterval,\n });\n\n return {\n tableQueryResult: queryResult,\n sorters,\n setSorters: setSortWithUnion,\n sorter: sorters,\n setSorter: setSortWithUnion,\n filters,\n setFilters: setFiltersFn,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount: pageSize\n ? Math.ceil((queryResult.data?.total ?? 0) / pageSize)\n : 1,\n createLinkForSyncWithLocation,\n overtime: {\n elapsedTime,\n },\n };\n}\n","import { useContext } from \"react\";\nimport {\n useMutation,\n UseMutationOptions,\n UseMutationResult,\n useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { ResourceContext } from \"@contexts/resource\";\nimport { useGetIdentity } from \"@hooks/auth\";\nimport { BaseKey, LogParams } from \"../../../interfaces\";\nimport { hasPermission, pickNotDeprecated } from \"@definitions/helpers\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\ntype LogRenameData =\n | {\n resource?: string;\n }\n | undefined;\n\nexport type UseLogReturnType<TLogData, TLogRenameData> = {\n log: UseMutationResult<TLogData, Error, LogParams>;\n rename: UseMutationResult<\n TLogRenameData,\n Error,\n {\n id: BaseKey;\n name: string;\n }\n >;\n};\n\nexport type UseLogMutationProps<\n TLogData,\n TLogRenameData extends LogRenameData = LogRenameData,\n> = {\n logMutationOptions?: Omit<\n UseMutationOptions<TLogData, Error, LogParams, unknown>,\n \"mutationFn\"\n >;\n renameMutationOptions?: Omit<\n UseMutationOptions<\n TLogRenameData,\n Error,\n { id: BaseKey; name: string },\n unknown\n >,\n \"mutationFn\" | \"onSuccess\"\n >;\n};\n\n/**\n * useLog is used to `create` a new and `rename` the existing audit log.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLog} for more details.\n */\n\nexport const useLog = <\n TLogData,\n TLogRenameData extends LogRenameData = LogRenameData,\n>({\n logMutationOptions,\n renameMutationOptions,\n}: UseLogMutationProps<TLogData, TLogRenameData> = {}): UseLogReturnType<\n TLogData,\n TLogRenameData\n> => {\n const queryClient = useQueryClient();\n const auditLogContext = useContext(AuditLogContext);\n const { keys, preferLegacyKeys } = useKeys();\n\n const authProvider = useActiveAuthProvider();\n\n const { resources } = useContext(ResourceContext);\n const {\n data: identityData,\n refetch,\n isLoading,\n } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n queryOptions: {\n enabled: !!auditLogContext?.create,\n },\n });\n\n const log = useMutation<TLogData, Error, LogParams, unknown>(\n async (params) => {\n const resource = pickResource(params.resource, resources);\n const logPermissions = pickNotDeprecated(\n resource?.meta?.audit,\n resource?.options?.audit,\n resource?.options?.auditLog?.permissions,\n );\n\n if (logPermissions) {\n if (!hasPermission(logPermissions, params.action)) {\n return;\n }\n }\n\n let authorData;\n if (isLoading && !!auditLogContext?.create) {\n authorData = await refetch();\n }\n\n return await auditLogContext.create?.({\n ...params,\n author: identityData ?? authorData?.data,\n });\n },\n {\n mutationKey: keys().audit().action(\"log\").get(),\n ...logMutationOptions,\n meta: {\n ...logMutationOptions?.meta,\n ...getXRay(\"useLog\", preferLegacyKeys),\n },\n },\n );\n\n const rename = useMutation<\n TLogRenameData,\n Error,\n { id: BaseKey; name: string },\n unknown\n >(\n async (params) => {\n return await auditLogContext.update?.(params);\n },\n {\n onSuccess: (data) => {\n if (data?.resource) {\n queryClient.invalidateQueries(\n keys()\n .audit()\n .resource(data?.resource ?? \"\")\n .action(\"list\")\n .get(preferLegacyKeys),\n );\n }\n },\n mutationKey: keys().audit().action(\"rename\").get(),\n ...renameMutationOptions,\n meta: {\n ...renameMutationOptions?.meta,\n ...getXRay(\"useLog\", preferLegacyKeys),\n },\n },\n );\n\n return { log, rename };\n};\n","import React from \"react\";\n\nimport { IAuditLogContext } from \"./IAuditLogContext\";\n\nexport const AuditLogContext = React.createContext<IAuditLogContext>({});\n\nexport const AuditLogContextProvider: React.FC<\n IAuditLogContext & {\n children: React.ReactNode;\n }\n> = ({ create, get, update, children }) => {\n return (\n <AuditLogContext.Provider value={{ create, get, update }}>\n {children}\n </AuditLogContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport {\n useQuery,\n UseQueryResult,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { HttpError, MetaQuery } from \"../../../interfaces\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\n\nexport type UseLogProps<TQueryFnData, TError, TData> = {\n resource: string;\n action?: string;\n meta?: Record<number | string, any>;\n author?: Record<number | string, any>;\n queryOptions?: UseQueryOptions<TQueryFnData, TError, TData>;\n metaData?: MetaQuery;\n};\n\n/**\n * useLogList is used to get and filter audit logs.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLogList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function.\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Defaults to `TQueryFnData`\n *\n */\nexport const useLogList = <\n TQueryFnData = any,\n TError extends HttpError = HttpError,\n TData = TQueryFnData,\n>({\n resource,\n action,\n meta,\n author,\n metaData,\n queryOptions,\n}: UseLogProps<TQueryFnData, TError, TData>): UseQueryResult<TData> => {\n const { get } = useContext(AuditLogContext);\n const { keys, preferLegacyKeys } = useKeys();\n\n const queryResponse = useQuery<TQueryFnData, TError, TData>({\n queryKey: keys()\n .audit()\n .resource(resource)\n .action(\"list\")\n .params(meta)\n .get(preferLegacyKeys),\n queryFn: () =>\n get?.({\n resource,\n action,\n author,\n meta,\n metaData,\n }) ?? Promise.resolve([]),\n enabled: typeof get !== \"undefined\",\n ...queryOptions,\n retry: false,\n meta: {\n ...queryOptions?.meta,\n ...getXRay(\"useLogList\", preferLegacyKeys),\n },\n });\n\n return queryResponse;\n};\n","import React, { useContext } from \"react\";\nimport warnOnce from \"warn-once\";\n\nimport { useRefineContext, useResource, useTranslate } from \"@hooks\";\nimport { TranslationContext } from \"@contexts/translation\";\nimport { pickNotDeprecated } from \"@definitions\";\n\nimport { IResourceItem } from \"../../interfaces\";\nimport { useRouterType } from \"@contexts/router-picker\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { pickResource } from \"../../definitions/helpers/pick-resource/index\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\n\nexport type BreadcrumbsType = {\n label: string;\n href?: string;\n icon?: React.ReactNode;\n};\n\ntype UseBreadcrumbReturnType = {\n breadcrumbs: BreadcrumbsType[];\n};\n\ntype UseBreadcrumbProps = {\n /**\n * Additional params to be used in the route generation process.\n */\n meta?: Record<string, string | number>;\n};\n\nexport const useBreadcrumb = ({\n meta: metaFromProps = {},\n}: UseBreadcrumbProps = {}): UseBreadcrumbReturnType => {\n const routerType = useRouterType();\n const { i18nProvider } = useContext(TranslationContext);\n const parsed = useParsed();\n const translate = useTranslate();\n const { resources, resource, action } = useResource();\n const {\n options: { textTransformers },\n } = useRefineContext();\n\n const breadcrumbs: BreadcrumbsType[] = [];\n\n if (!resource?.name) {\n return { breadcrumbs };\n }\n\n const addBreadcrumb = (parentName: string | IResourceItem) => {\n const parentResource =\n typeof parentName === \"string\"\n ? pickResource(parentName, resources, routerType === \"legacy\") ?? {\n name: parentName,\n }\n : parentName;\n\n if (parentResource) {\n const grandParentName = pickNotDeprecated(\n parentResource?.meta?.parent,\n parentResource?.parentName,\n );\n if (grandParentName) {\n addBreadcrumb(grandParentName);\n }\n const listActionOfResource = getActionRoutesFromResource(\n parentResource,\n resources,\n routerType === \"legacy\",\n ).find((r) => r.action === \"list\");\n\n const hrefRaw = listActionOfResource?.resource?.list\n ? listActionOfResource?.route\n : undefined;\n\n const href = hrefRaw\n ? routerType === \"legacy\"\n ? hrefRaw\n : composeRoute(hrefRaw, parentResource?.meta, parsed, metaFromProps)\n : undefined;\n\n breadcrumbs.push({\n label:\n pickNotDeprecated(\n parentResource.meta?.label,\n parentResource.options?.label,\n ) ??\n translate(\n `${parentResource.name}.${parentResource.name}`,\n textTransformers.humanize(parentResource.name),\n ),\n href: href,\n icon: pickNotDeprecated(\n parentResource.meta?.icon,\n parentResource.options?.icon,\n parentResource.icon,\n ),\n });\n }\n };\n\n addBreadcrumb(resource);\n\n if (action && action !== \"list\") {\n const key = `actions.${action}`;\n const actionLabel = translate(key);\n if (typeof i18nProvider !== \"undefined\" && actionLabel === key) {\n warnOnce(\n true,\n `[useBreadcrumb]: Breadcrumb missing translate key for the \"${action}\" action. Please add \"actions.${action}\" key to your translation file.\\nFor more information, see https://refine.dev/docs/api-reference/core/hooks/useBreadcrumb/#i18n-support`,\n );\n breadcrumbs.push({\n label: translate(\n `buttons.${action}`,\n textTransformers.humanize(action),\n ),\n });\n } else {\n breadcrumbs.push({\n label: translate(key, textTransformers.humanize(action)),\n });\n }\n }\n\n return {\n breadcrumbs,\n };\n};\n","import React from \"react\";\nimport { useTranslate, useResource, useParsed, useRouterContext } from \"..\";\nimport { useUserFriendlyName, pickNotDeprecated } from \"@definitions\";\nimport { useRouterType } from \"../../contexts/router-picker\";\nimport { createResourceKey } from \"../../definitions/helpers/menu/create-resource-key\";\nimport { useGetToPath } from \"../router/use-get-to-path/index\";\nimport { getParentResource } from \"@definitions/helpers/router\";\nimport {\n FlatTreeItem,\n createTree,\n} from \"../../definitions/helpers/menu/create-tree\";\n\ntype UseMenuReturnType = {\n defaultOpenKeys: string[];\n selectedKey: string;\n menuItems: TreeMenuItem[];\n};\n\nexport type UseMenuProps = {\n meta?: Record<string, any>;\n hideOnMissingParameter?: boolean;\n};\n\nexport type TreeMenuItem = FlatTreeItem & {\n route?: string;\n icon?: React.ReactNode;\n label?: string;\n children: TreeMenuItem[];\n};\n\nconst getCleanPath = (pathname: string) => {\n return pathname\n .split(\"?\")[0]\n .split(\"#\")[0]\n .replace(/(.+)(\\/$)/, \"$1\");\n};\n\n/**\n * `useMenu` is used to get menu items of the default sidebar.\n * These items include a link to dashboard page (if it exists) and links to the user defined resources\n * (passed as children to {@link https://refine.dev/docs/core/components/refine-config `<Refine>`}).\n * This hook can also be used to build custom menus, which is also used by default sidebar to show menu items.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/ui/useMenu} for more details.\n */\nexport const useMenu = (\n { meta, hideOnMissingParameter }: UseMenuProps = {\n hideOnMissingParameter: true,\n },\n): UseMenuReturnType => {\n const translate = useTranslate();\n\n const getToPath = useGetToPath();\n const routerType = useRouterType();\n const { resource, resources } = useResource();\n const { pathname } = useParsed();\n const { useLocation } = useRouterContext();\n const { pathname: legacyPath } = useLocation();\n const getFriendlyName = useUserFriendlyName();\n\n const cleanPathname =\n routerType === \"legacy\"\n ? getCleanPath(legacyPath)\n : pathname\n ? getCleanPath(pathname)\n : undefined;\n\n const cleanRoute = `/${(cleanPathname ?? \"\").replace(/^\\//, \"\")}`;\n\n const selectedKey = resource\n ? createResourceKey(resource, resources, routerType === \"legacy\")\n : cleanRoute ?? \"\";\n\n const defaultOpenKeys = React.useMemo(() => {\n if (!resource) return [];\n let parent = getParentResource(resource, resources);\n const keys = [createResourceKey(resource, resources)];\n while (parent) {\n keys.push(createResourceKey(parent, resources));\n parent = getParentResource(parent, resources);\n }\n return keys;\n }, []);\n\n const prepareItem = React.useCallback(\n (item: FlatTreeItem): TreeMenuItem | undefined => {\n if (item?.meta?.hide ?? item?.options?.hide) return undefined;\n if (!item?.list && item.children.length === 0) return undefined;\n\n const composed = item.list\n ? getToPath({\n resource: item,\n action: \"list\",\n legacy: routerType === \"legacy\",\n meta,\n })\n : undefined;\n\n if (\n hideOnMissingParameter &&\n composed &&\n composed.match(/(\\/|^):(.+?)(\\/|$){1}/)\n )\n return undefined;\n\n return {\n ...item,\n route: composed,\n icon: pickNotDeprecated(item.meta?.icon, item.options?.icon, item.icon),\n label:\n pickNotDeprecated(item?.meta?.label, item?.options?.label) ??\n translate(\n `${item.name}.${item.name}`,\n getFriendlyName(item.name, \"plural\"),\n ),\n };\n },\n [routerType, meta, getToPath, translate, hideOnMissingParameter],\n );\n\n const treeItems = React.useMemo(() => {\n const treeMenuItems = createTree(resources, routerType === \"legacy\");\n\n // add paths to items and their nodes recursively\n const prepare = (items: TreeMenuItem[]): TreeMenuItem[] => {\n return items.flatMap((item) => {\n const preparedNodes = prepare(item.children);\n const newItem = prepareItem({\n ...item,\n children: preparedNodes,\n });\n\n if (!newItem) return [];\n\n return [newItem];\n });\n };\n\n return prepare(treeMenuItems);\n }, [resources, routerType, prepareItem]);\n\n return {\n defaultOpenKeys,\n selectedKey,\n menuItems: treeItems,\n };\n};\n","import { IResourceItem } from \"../../../interfaces\";\nimport {\n getParentResource,\n removeLeadingTrailingSlashes,\n} from \"../../helpers/router\";\n\nexport const createResourceKey = (\n resource: IResourceItem,\n resources: IResourceItem[],\n legacy = false,\n) => {\n const parents: IResourceItem[] = [];\n\n let currentParentResource = getParentResource(resource, resources);\n while (currentParentResource) {\n parents.push(currentParentResource);\n currentParentResource = getParentResource(currentParentResource, resources);\n }\n parents.reverse();\n\n const key = [...parents, resource]\n .map((r) =>\n removeLeadingTrailingSlashes(\n (legacy ? r.route : undefined) ?? r.identifier ?? r.name,\n ),\n )\n .join(\"/\");\n\n return `/${key.replace(/^\\//, \"\")}`;\n};\n","import { IResourceItem } from \"../../../contexts/resource\";\nimport { getParentResource } from \"../router\";\nimport { createResourceKey } from \"./create-resource-key\";\n\nexport type Tree = {\n item: IResourceItem;\n children: { [key: string]: Tree };\n};\n\nexport type FlatTreeItem = IResourceItem & {\n key: string;\n children: FlatTreeItem[];\n};\n\nexport const createTree = (\n resources: IResourceItem[],\n legacy = false,\n): FlatTreeItem[] => {\n const root: Tree = {\n item: {\n name: \"__root__\",\n },\n children: {},\n };\n\n resources.forEach((resource) => {\n const parents: IResourceItem[] = [];\n\n let currentParent = getParentResource(resource, resources);\n while (currentParent) {\n parents.push(currentParent);\n currentParent = getParentResource(currentParent, resources);\n }\n parents.reverse();\n\n let currentTree = root;\n\n parents.forEach((parent) => {\n const key =\n (legacy ? parent.route : undefined) ?? parent.identifier ?? parent.name;\n\n if (!currentTree.children[key]) {\n currentTree.children[key] = {\n item: parent,\n children: {},\n };\n }\n currentTree = currentTree.children[key];\n });\n\n const key =\n (legacy ? resource.route : undefined) ??\n resource.identifier ??\n resource.name;\n\n if (!currentTree.children[key]) {\n currentTree.children[key] = {\n item: resource,\n children: {},\n };\n }\n });\n\n const flatten = (tree: Tree): FlatTreeItem[] => {\n const items: FlatTreeItem[] = [];\n\n Object.keys(tree.children).forEach((key) => {\n const itemKey = createResourceKey(\n tree.children[key].item,\n resources,\n legacy,\n );\n const item: FlatTreeItem = {\n ...tree.children[key].item,\n key: itemKey,\n children: flatten(tree.children[key]),\n };\n items.push(item);\n });\n\n return items;\n };\n\n return flatten(root);\n};\n","import { useParsed } from \"@hooks/router\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { IResourceItem, MetaQuery } from \"../../interfaces\";\n\n/**\n * Hook that returns a function to get meta.\n * The meta is a combination of the resource meta, hook meta and query params.\n * @internal\n */\nexport const useMeta = () => {\n const { params } = useParsed();\n\n const getMetaFn = ({\n resource,\n meta: metaFromProp,\n }: {\n resource?: IResourceItem;\n meta?: MetaQuery;\n } = {}) => {\n const { meta } = sanitizeResource(resource) ?? { meta: {} };\n\n // this fields came from the query params and should be removed from the meta because they are not part of the meta.\n const {\n filters: _filters,\n sorters: _sorters,\n current: _current,\n pageSize: _pageSize,\n ...additionalParams\n } = params ?? {};\n\n return { ...meta, ...additionalParams, ...metaFromProp };\n };\n\n return getMetaFn;\n};\n","import React, { useState } from \"react\";\n\nimport { useLogin, useTranslate } from \"@hooks\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nexport interface ILoginForm {\n username: string;\n password: string;\n}\n\n/**\n * @deprecated LoginPage is deprecated. Use AuthPage instead. @see {@link https://refine.dev/docs/core/components/auth-page} for more details.\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage} for more details.\n */\nexport const LoginPage: React.FC = () => {\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login } = useLogin<ILoginForm>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n return (\n <>\n <h1>{translate(\"pages.login.title\", \"Sign in your account\")}</h1>\n <form\n onSubmit={(e) => {\n e.preventDefault();\n login({ username, password });\n }}\n >\n <table>\n <tbody>\n <tr>\n <td>\n {translate(\"pages.login.username\", undefined, \"username\")}:\n </td>\n <td>\n <input\n type=\"text\"\n size={20}\n autoCorrect=\"off\"\n spellCheck={false}\n autoCapitalize=\"off\"\n autoFocus\n required\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n />\n </td>\n </tr>\n <tr>\n <td>\n {translate(\"pages.login.password\", undefined, \"password\")}:\n </td>\n <td>\n <input\n type=\"password\"\n required\n size={20}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n />\n </td>\n </tr>\n </tbody>\n </table>\n <br />\n <input type=\"submit\" value=\"login\" />\n </form>\n </>\n );\n};\n","import React, {\n DetailedHTMLProps,\n HTMLAttributes,\n FormHTMLAttributes,\n} from \"react\";\n\nimport {\n LoginPage,\n RegisterPage,\n ForgotPasswordPage,\n UpdatePasswordPage,\n} from \"./components\";\n\nimport { AuthPageProps } from \"../../../interfaces\";\n\nexport type DivPropsType = DetailedHTMLProps<\n HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n>;\nexport type FormPropsType = DetailedHTMLProps<\n FormHTMLAttributes<HTMLFormElement>,\n HTMLFormElement\n>;\n\nexport type AuthProps = AuthPageProps<\n DivPropsType,\n DivPropsType,\n FormPropsType\n>;\n\n/**\n * **refine** has a default auth page form which is served on `/login` route when the `authProvider` configuration is provided.\n * @param title is not implemented yet.\n * @see {@link https://refine.dev/docs/api-reference/core/components/auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n const { type } = props;\n const renderView = () => {\n switch (type) {\n case \"register\":\n return <RegisterPage {...props} />;\n case \"forgotPassword\":\n return <ForgotPasswordPage {...props} />;\n case \"updatePassword\":\n return <UpdatePasswordPage {...props} />;\n default:\n return <LoginPage {...props} />;\n }\n };\n\n return <>{renderView()}</>;\n};\n","import React, { useState } from \"react\";\nimport { LoginPageProps, LoginFormTypes } from \"../../../../../interfaces\";\n\nimport { useRouterContext, useLink, useRouterType, useLogin } from \"@hooks\";\nimport { useTranslate } from \"@hooks/translate\";\n\nimport { DivPropsType, FormPropsType } from \"../..\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\n\ntype LoginProps = LoginPageProps<DivPropsType, DivPropsType, FormPropsType>;\n\nexport const LoginPage: React.FC<LoginProps> = ({\n providers,\n registerLink,\n forgotPasswordLink,\n rememberMe,\n contentProps,\n wrapperProps,\n renderContent,\n formProps,\n title = undefined,\n hideForm,\n}) => {\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [remember, setRemember] = useState(false);\n\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login } = useLogin<LoginFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const renderLink = (link: string, text?: string) => {\n return <ActiveLink to={link}>{text}</ActiveLink>;\n };\n\n const renderProviders = () => {\n if (providers) {\n return providers.map((provider) => (\n <div\n key={provider.name}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n <button\n onClick={() =>\n login({\n providerName: provider.name,\n })\n }\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {provider?.icon}\n {provider.label ?? <label>{provider.label}</label>}\n </button>\n </div>\n ));\n }\n return null;\n };\n\n const content = (\n <div {...contentProps}>\n <h1 style={{ textAlign: \"center\" }}>\n {translate(\"pages.login.title\", \"Sign in to your account\")}\n </h1>\n {renderProviders()}\n {!hideForm && (\n <>\n <hr />\n <form\n onSubmit={(e) => {\n e.preventDefault();\n login({ email, password, remember });\n }}\n {...formProps}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 25,\n }}\n >\n <label htmlFor=\"email-input\">\n {translate(\"pages.login.fields.email\", \"Email\")}\n </label>\n <input\n id=\"email-input\"\n name=\"email\"\n type=\"text\"\n size={20}\n autoCorrect=\"off\"\n spellCheck={false}\n autoCapitalize=\"off\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n />\n <label htmlFor=\"password-input\">\n {translate(\"pages.login.fields.password\", \"Password\")}\n </label>\n <input\n id=\"password-input\"\n type=\"password\"\n name=\"password\"\n required\n size={20}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n />\n {rememberMe ?? (\n <>\n <label htmlFor=\"remember-me-input\">\n {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n <input\n id=\"remember-me-input\"\n name=\"remember\"\n type=\"checkbox\"\n size={20}\n checked={remember}\n value={remember.toString()}\n onChange={() => {\n setRemember(!remember);\n }}\n />\n </label>\n </>\n )}\n <br />\n {forgotPasswordLink ??\n renderLink(\n \"/forgot-password\",\n translate(\n \"pages.login.buttons.forgotPassword\",\n \"Forgot password?\",\n ),\n )}\n <input\n type=\"submit\"\n value={translate(\"pages.login.signin\", \"Sign in\")}\n />\n {registerLink ?? (\n <span>\n {translate(\n \"pages.login.buttons.noAccount\",\n \"Don’t have an account?\",\n )}{\" \"}\n {renderLink(\n \"/register\",\n translate(\"pages.login.register\", \"Sign up\"),\n )}\n </span>\n )}\n </div>\n </form>\n </>\n )}\n {registerLink !== false && hideForm && (\n <div style={{ textAlign: \"center\" }}>\n {translate(\"pages.login.buttons.noAccount\", \"Don’t have an account?\")}{\" \"}\n {renderLink(\n \"/register\",\n translate(\"pages.login.register\", \"Sign up\"),\n )}\n </div>\n )}\n </div>\n );\n\n return (\n <div {...wrapperProps}>\n {renderContent ? renderContent(content, title) : content}\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { RegisterPageProps } from \"../../../../../interfaces\";\n\nimport {\n useTranslate,\n useRouterContext,\n useLink,\n useRouterType,\n useRegister,\n} from \"@hooks\";\n\nimport { DivPropsType, FormPropsType } from \"../..\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\n\ntype RegisterProps = RegisterPageProps<\n DivPropsType,\n DivPropsType,\n FormPropsType\n>;\n\nexport const RegisterPage: React.FC<RegisterProps> = ({\n providers,\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title = undefined,\n hideForm,\n}) => {\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: register, isLoading } = useRegister({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const renderLink = (link: string, text?: string) => {\n return <ActiveLink to={link}>{text}</ActiveLink>;\n };\n\n const renderProviders = () => {\n if (providers) {\n return providers.map((provider) => (\n <div\n key={provider.name}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n <button\n onClick={() =>\n register({\n providerName: provider.name,\n })\n }\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n {provider?.icon}\n {provider.label ?? <label>{provider.label}</label>}\n </button>\n </div>\n ));\n }\n return null;\n };\n\n const content = (\n <div {...contentProps}>\n <h1 style={{ textAlign: \"center\" }}>\n {translate(\"pages.register.title\", \"Sign up for your account\")}\n </h1>\n {renderProviders()}\n {!hideForm && (\n <>\n <hr />\n <form\n onSubmit={(e) => {\n e.preventDefault();\n register({ email, password });\n }}\n {...formProps}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 25,\n }}\n >\n <label htmlFor=\"email-input\">\n {translate(\"pages.register.fields.email\", \"Email\")}\n </label>\n <input\n id=\"email-input\"\n name=\"email\"\n type=\"email\"\n size={20}\n autoCorrect=\"off\"\n spellCheck={false}\n autoCapitalize=\"off\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n />\n <label htmlFor=\"password-input\">\n {translate(\"pages.register.fields.password\", \"Password\")}\n </label>\n <input\n id=\"password-input\"\n name=\"password\"\n type=\"password\"\n required\n size={20}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n />\n <input\n type=\"submit\"\n value={translate(\"pages.register.buttons.submit\", \"Sign up\")}\n disabled={isLoading}\n />\n {loginLink ?? (\n <>\n <span>\n {translate(\n \"pages.login.buttons.haveAccount\",\n \"Have an account?\",\n )}{\" \"}\n {renderLink(\n \"/login\",\n translate(\"pages.login.signin\", \"Sign in\"),\n )}\n </span>\n </>\n )}\n </div>\n </form>\n </>\n )}\n {loginLink !== false && hideForm && (\n <div style={{ textAlign: \"center\" }}>\n {translate(\"pages.login.buttons.haveAccount\", \"Have an account?\")}{\" \"}\n {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n </div>\n )}\n </div>\n );\n\n return (\n <div {...wrapperProps}>\n {renderContent ? renderContent(content, title) : content}\n </div>\n );\n};\n","import React, { useState } from \"react\";\n\nimport {\n useTranslate,\n useRouterContext,\n useLink,\n useRouterType,\n useForgotPassword,\n} from \"@hooks\";\n\nimport { DivPropsType, FormPropsType } from \"../..\";\nimport {\n ForgotPasswordFormTypes,\n ForgotPasswordPageProps,\n} from \"../../../../../interfaces\";\n\ntype ForgotPasswordProps = ForgotPasswordPageProps<\n DivPropsType,\n DivPropsType,\n FormPropsType\n>;\n\nexport const ForgotPasswordPage: React.FC<ForgotPasswordProps> = ({\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title = undefined,\n}) => {\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const [email, setEmail] = useState(\"\");\n\n const { mutate: forgotPassword, isLoading } =\n useForgotPassword<ForgotPasswordFormTypes>();\n\n const renderLink = (link: string, text?: string) => {\n return <ActiveLink to={link}>{text}</ActiveLink>;\n };\n\n const content = (\n <div {...contentProps}>\n <h1 style={{ textAlign: \"center\" }}>\n {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n </h1>\n <hr />\n <form\n onSubmit={(e) => {\n e.preventDefault();\n forgotPassword({ email });\n }}\n {...formProps}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 25,\n }}\n >\n <label htmlFor=\"email-input\">\n {translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n </label>\n <input\n id=\"email-input\"\n name=\"email\"\n type=\"mail\"\n autoCorrect=\"off\"\n spellCheck={false}\n autoCapitalize=\"off\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n />\n <input\n type=\"submit\"\n disabled={isLoading}\n value={translate(\n \"pages.forgotPassword.buttons.submit\",\n \"Send reset instructions\",\n )}\n />\n <br />\n {loginLink ?? (\n <span>\n {translate(\n \"pages.register.buttons.haveAccount\",\n \"Have an account? \",\n )}{\" \"}\n {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n </span>\n )}\n </div>\n </form>\n </div>\n );\n\n return (\n <div {...wrapperProps}>\n {renderContent ? renderContent(content, title) : content}\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport {\n UpdatePasswordFormTypes,\n UpdatePasswordPageProps,\n} from \"../../../../../interfaces\";\n\nimport { useTranslate, useUpdatePassword } from \"@hooks\";\n\nimport { DivPropsType, FormPropsType } from \"../..\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n DivPropsType,\n DivPropsType,\n FormPropsType\n>;\n\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title = undefined,\n}) => {\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: updatePassword, isLoading } =\n useUpdatePassword<UpdatePasswordFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n\n const content = (\n <div {...contentProps}>\n <h1 style={{ textAlign: \"center\" }}>\n {translate(\"pages.updatePassword.title\", \"Update Password\")}\n </h1>\n <hr />\n <form\n onSubmit={(e) => {\n e.preventDefault();\n updatePassword({\n password: newPassword,\n confirmPassword,\n });\n }}\n {...formProps}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 25,\n }}\n >\n <label htmlFor=\"password-input\">\n {translate(\"pages.updatePassword.fields.password\", \"New Password\")}\n </label>\n <input\n id=\"password-input\"\n name=\"password\"\n type=\"password\"\n required\n size={20}\n value={newPassword}\n onChange={(e) => setNewPassword(e.target.value)}\n />\n <label htmlFor=\"confirm-password-input\">\n {translate(\n \"pages.updatePassword.fields.confirmPassword\",\n \"Confirm New Password\",\n )}\n </label>\n <input\n id=\"confirm-password-input\"\n name=\"confirmPassword\"\n type=\"password\"\n required\n size={20}\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n />\n <input\n type=\"submit\"\n disabled={isLoading}\n value={translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n />\n </div>\n </form>\n </div>\n );\n\n return (\n <div {...wrapperProps}>\n {renderContent ? renderContent(content, title) : content}\n </div>\n );\n};\n","import React from \"react\";\n\n/**\n * **refine** shows a default ready page on root route when no `resources` is passed to the `<Refine>` component as a property.\n *\n * @deprecated `ReadyPage` is deprecated and will be removed in the next major release.\n */\nexport const ReadyPage: React.FC = () => {\n return (\n <>\n <h1>Welcome on board</h1>\n <p>Your configuration is completed.</p>\n <p>\n Now you can get started by adding your resources to the{\" \"}\n <code>`resources`</code> property of <code>{\"`<Refine>`\"}</code>\n </p>\n <div style={{ display: \"flex\", gap: 8 }}>\n <a href=\"https://refine.dev\" target=\"_blank\" rel=\"noreferrer\">\n <button>Documentation</button>\n </a>\n <a href=\"https://refine.dev/examples\" target=\"_blank\" rel=\"noreferrer\">\n <button>Examples</button>\n </a>\n <a href=\"https://discord.gg/refine\" target=\"_blank\" rel=\"noreferrer\">\n <button>Community</button>\n </a>\n </div>\n </>\n );\n};\n","import React from \"react\";\nimport { ConfigSuccessPage } from \"../config-success\";\nimport { useRefineContext } from \"@hooks/refine\";\nimport { ConfigErrorPage } from \"../config-error\";\n\nexport const WelcomePage = () => {\n const { __initialized } = useRefineContext();\n\n return (\n <>\n <ConfigSuccessPage />\n {!__initialized && <ConfigErrorPage />}\n </>\n );\n};\n","import React, { useState } from \"react\";\n\nimport { useMediaQuery } from \"@definitions/helpers\";\n\ntype CardInfo = {\n title: string;\n description: string;\n link: string;\n iconUrl: string;\n};\n\nconst cards: CardInfo[] = [\n {\n title: \"Documentation\",\n description:\n \"Learn about the technical details of using Refine in your projects.\",\n link: \"https://refine.dev/docs\",\n iconUrl:\n \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/book.svg\",\n },\n {\n title: \"Tutorial\",\n description:\n \"Learn how to use Refine by building a fully-functioning CRUD app, from scratch to full launch.\",\n link: \"https://refine.dev/tutorial\",\n iconUrl:\n \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/hat.svg\",\n },\n {\n title: \"Templates\",\n description:\n \"Explore a range of pre-built templates, perfect everything from admin panels to dashboards and CRMs.\",\n link: \"https://refine.dev/templates\",\n iconUrl:\n \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/application.svg\",\n },\n {\n title: \"Community\",\n description: \"Join our Discord community and keep up with the latest news.\",\n link: \"https://discord.gg/refine\",\n iconUrl:\n \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/discord.svg\",\n },\n];\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n */\nexport const ConfigSuccessPage: React.FC = () => {\n const isTablet = useMediaQuery(\"(max-width: 1010px)\");\n const isMobile = useMediaQuery(\"(max-width: 650px)\");\n\n const getGridTemplateColumns = () => {\n if (isMobile) {\n return \"1, 280px\";\n }\n if (isTablet) {\n return \"2, 280px\";\n }\n return \"4, 1fr\";\n };\n\n const getHeaderFontSize = () => {\n if (isMobile) {\n return \"32px\";\n }\n if (isTablet) {\n return \"40px\";\n }\n return \"48px\";\n };\n\n const getSubHeaderFontSize = () => {\n if (isMobile) {\n return \"16px\";\n }\n if (isTablet) {\n return \"20px\";\n }\n return \"24px\";\n };\n\n return (\n <div\n style={{\n position: \"fixed\",\n zIndex: 10,\n inset: 0,\n overflow: \"auto\",\n width: \"100dvw\",\n height: \"100dvh\",\n }}\n >\n <div\n style={{\n overflow: \"hidden\",\n position: \"relative\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n background: isMobile\n ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(88.89% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(88.89% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n : isTablet\n ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(66.67% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(66.67% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n : \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(35.56% 50% at 50% 100%, rgba(38, 217, 127, 0.12) 0%, rgba(38, 217, 127, 0) 100%), radial-gradient(35.56% 50% at 50% 0%, rgba(71, 235, 235, 0.18) 0%, rgba(71, 235, 235, 0) 100%), #1D1E30\",\n minHeight: \"100%\",\n minWidth: \"100%\",\n fontFamily: \"Arial\",\n color: \"#FFFFFF\",\n }}\n >\n <div\n style={{\n zIndex: 2,\n position: \"absolute\",\n width: isMobile ? \"400px\" : \"800px\",\n height: \"552px\",\n opacity: \"0.5\",\n background:\n \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/welcome-page-hexagon.png)\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"contain\",\n top: \"0\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n }}\n />\n <div style={{ height: isMobile ? \"40px\" : \"80px\" }} />\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n <div\n style={{\n backgroundRepeat: \"no-repeat\",\n backgroundSize: isMobile ? \"112px 58px\" : \"224px 116px\",\n backgroundImage:\n \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/refine-logo.svg)\",\n width: isMobile ? 112 : 224,\n height: isMobile ? 58 : 116,\n }}\n />\n </div>\n <div\n style={{\n height: isMobile ? \"120px\" : isTablet ? \"200px\" : \"30vh\",\n minHeight: isMobile ? \"120px\" : isTablet ? \"200px\" : \"200px\",\n }}\n />\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n textAlign: \"center\",\n }}\n >\n <h1\n style={{\n fontSize: getHeaderFontSize(),\n fontWeight: 700,\n margin: \"0px\",\n }}\n >\n Welcome Aboard!\n </h1>\n <h4\n style={{\n fontSize: getSubHeaderFontSize(),\n fontWeight: 400,\n margin: \"0px\",\n }}\n >\n Your configuration is completed.\n </h4>\n </div>\n <div style={{ height: \"64px\" }} />\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${getGridTemplateColumns()})`,\n justifyContent: \"center\",\n gap: \"48px\",\n paddingRight: \"16px\",\n paddingLeft: \"16px\",\n paddingBottom: \"32px\",\n maxWidth: \"976px\",\n margin: \"auto\",\n }}\n >\n {cards.map((card) => (\n <Card key={`welcome-page-${card.title}`} card={card} />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\ntype CardProps = {\n card: CardInfo;\n};\n\nconst Card: React.FC<CardProps> = ({ card }) => {\n const { title, description, iconUrl, link } = card;\n\n const [isHover, setIsHover] = useState(false);\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <a\n onPointerEnter={() => setIsHover(true)}\n onPointerLeave={() => setIsHover(false)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n color: \"#fff\",\n textDecoration: \"none\",\n }}\n href={link}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n backgroundPosition: \"center\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundImage: `url(${iconUrl})`,\n }}\n />\n <span\n style={{\n fontSize: \"16px\",\n fontWeight: 700,\n marginLeft: \"13px\",\n marginRight: \"14px\",\n }}\n >\n {title}\n </span>\n <svg\n style={{\n transition:\n \"transform 0.5s ease-in-out, opacity 0.2s ease-in-out\",\n ...(isHover && {\n transform: \"translateX(4px)\",\n opacity: 1,\n }),\n }}\n width=\"12\"\n height=\"8\"\n fill=\"none\"\n opacity=\"0.5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.293.293a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 5H1a1 1 0 0 1 0-2h7.586L7.293 1.707a1 1 0 0 1 0-1.414Z\"\n fill=\"#fff\"\n />\n </svg>\n </a>\n </div>\n <span\n style={{\n fontSize: \"12px\",\n opacity: 0.5,\n lineHeight: \"16px\",\n }}\n >\n {description}\n </span>\n </div>\n );\n};\n","import React from \"react\";\n\nexport const ConfigErrorPage = () => {\n return (\n <div\n style={{\n position: \"fixed\",\n zIndex: 11,\n inset: 0,\n overflow: \"auto\",\n width: \"100dvw\",\n height: \"100dvh\",\n }}\n >\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n padding: \"24px\",\n background: \"#14141FBF\",\n backdropFilter: \"blur(3px)\",\n }}\n >\n <div\n style={{\n maxWidth: \"640px\",\n width: \"100%\",\n background: \"#1D1E30\",\n borderRadius: \"16px\",\n border: \"1px solid #303450\",\n boxShadow: \"0px 0px 120px -24px #000000\",\n }}\n >\n <div\n style={{\n padding: \"16px 20px\",\n borderBottom: \"1px solid #303450\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n <ErrorGradient\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n }}\n />\n <div\n style={{\n lineHeight: \"24px\",\n fontSize: \"16px\",\n color: \"#FFFFFF\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"16px\",\n }}\n >\n <ErrorIcon />\n <span\n style={{\n fontWeight: 400,\n }}\n >\n Configuration Error\n </span>\n </div>\n </div>\n <div\n style={{\n padding: \"20px\",\n color: \"#A3ADC2\",\n lineHeight: \"20px\",\n fontSize: \"14px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"20px\",\n }}\n >\n <p\n style={{\n margin: 0,\n padding: 0,\n lineHeight: \"28px\",\n fontSize: \"16px\",\n }}\n >\n <code\n style={{\n display: \"inline-block\",\n background: \"#30345080\",\n padding: \"0 4px\",\n lineHeight: \"24px\",\n fontSize: \"16px\",\n borderRadius: \"4px\",\n color: \"#FFFFFF\",\n }}\n >\n {\"<Refine />\"}\n </code>{\" \"}\n is not initialized. Please make sure you have it mounted in your\n app and placed your components inside it.\n </p>\n <div>\n <ExampleImplementation />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst ExampleImplementation = () => {\n return (\n <pre\n style={{\n display: \"block\",\n overflowX: \"auto\",\n borderRadius: \"8px\",\n fontSize: \"14px\",\n lineHeight: \"24px\",\n backgroundColor: \"#14141F\",\n color: \"#E5ECF2\",\n padding: \"16px\",\n margin: \"0\",\n maxHeight: \"400px\",\n overflow: \"auto\",\n }}\n >\n <span style={{ color: \"#FF7B72\" }}>import</span> {\"{\"} Refine, WelcomePage{\" \"}\n {\"}\"} <span style={{ color: \"#FF7B72\" }}>from</span>{\" \"}\n <span style={{ color: \"#A5D6FF\" }}>{'\"@refinedev/core\"'}</span>;{\"\\n\"}\n {\"\\n\"}\n <span style={{ color: \"#FF7B72\" }}>export</span>{\" \"}\n <span style={{ color: \"#FF7B72\" }}>default</span>{\" \"}\n <span>\n <span style={{ color: \"#FF7B72\" }}>function</span>{\" \"}\n <span style={{ color: \"#FFA657\" }}>App</span>\n (\n <span style={{ color: \"rgb(222, 147, 95)\" }} />){\" \"}\n </span>\n {\"{\"}\n {\"\\n\"}\n {\" \"}\n <span style={{ color: \"#FF7B72\" }}>return</span> ({\"\\n\"}\n {\" \"}\n <span>\n <span style={{ color: \"#79C0FF\" }}>\n <\n <span style={{ color: \"#79C0FF\" }}>Refine</span>\n {\"\\n\"}\n {\" \"}\n <span style={{ color: \"#E5ECF2\", opacity: 0.6 }}>\n {\"// \"}\n <span>...</span>\n </span>\n {\"\\n\"}\n {\" \"}>\n </span>\n {\"\\n\"}\n {\" \"}\n <span style={{ opacity: 0.6 }}>\n {\"{\"}\n {\"/* ... */\"}\n {\"}\"}\n </span>\n {\"\\n\"}\n {\" \"}\n <span style={{ color: \"#79C0FF\" }}>\n <\n <span style={{ color: \"#79C0FF\" }}>WelcomePage</span> />\n </span>\n {\"\\n\"}\n {\" \"}\n <span style={{ opacity: 0.6 }}>\n {\"{\"}\n {\"/* ... */\"}\n {\"}\"}\n </span>\n {\"\\n\"}\n {\" \"}\n <span style={{ color: \"#79C0FF\" }}>\n </\n <span style={{ color: \"#79C0FF\" }}>Refine</span>\n >\n </span>\n </span>\n {\"\\n\"}\n {\" \"});{\"\\n\"}\n {\"}\"}\n </pre>\n );\n};\n\nconst ErrorGradient = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={204}\n height={56}\n viewBox=\"0 0 204 56\"\n fill=\"none\"\n {...props}\n >\n <path fill=\"url(#welcome-page-error-gradient-a)\" d=\"M12 0H0v12L12 0Z\" />\n <path\n fill=\"url(#welcome-page-error-gradient-b)\"\n d=\"M28 0h-8L0 20v8L28 0Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-c)\"\n d=\"M36 0h8L0 44v-8L36 0Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-d)\"\n d=\"M60 0h-8L0 52v4h4L60 0Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-e)\"\n d=\"M68 0h8L20 56h-8L68 0Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-f)\"\n d=\"M92 0h-8L28 56h8L92 0Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-g)\"\n d=\"M100 0h8L52 56h-8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-h)\"\n d=\"M124 0h-8L60 56h8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-i)\"\n d=\"M140 0h-8L76 56h8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-j)\"\n d=\"M132 0h8L84 56h-8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-k)\"\n d=\"M156 0h-8L92 56h8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-l)\"\n d=\"M164 0h8l-56 56h-8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-m)\"\n d=\"M188 0h-8l-56 56h8l56-56Z\"\n />\n <path\n fill=\"url(#welcome-page-error-gradient-n)\"\n d=\"M204 0h-8l-56 56h8l56-56Z\"\n />\n <defs>\n <radialGradient\n id=\"welcome-page-error-gradient-a\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-b\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-c\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-d\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-e\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-f\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-g\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-h\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-i\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-j\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-k\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-l\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-m\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n <radialGradient\n id=\"welcome-page-error-gradient-n\"\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"scale(124)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n </radialGradient>\n </defs>\n </svg>\n);\n\nconst ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#FF4C4D\"\n fillRule=\"evenodd\"\n d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M7 8a1 1 0 1 0 2 0V5a1 1 0 1 0-2 0v3Zm0 3a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { useQuerySubscription } from \"@refinedev/devtools-internal\";\n\nimport { ReadyPage as DefaultReadyPage, RouteChangeHandler } from \"@components\";\nimport { Telemetry } from \"@components/telemetry\";\nimport { AccessControlContextProvider } from \"@contexts/accessControl\";\nimport { AuditLogContextProvider } from \"@contexts/auditLog\";\nimport {\n AuthBindingsContextProvider,\n LegacyAuthContextProvider,\n} from \"@contexts/auth\";\nimport { DataContextProvider } from \"@contexts/data\";\nimport { LegacyRouterContextProvider } from \"@contexts/legacy-router\";\nimport { LiveContextProvider } from \"@contexts/live\";\nimport { NotificationContextProvider } from \"@contexts/notification\";\nimport { RefineContextProvider } from \"@contexts/refine\";\nimport { ResourceContextProvider } from \"@contexts/resource\";\nimport { TranslationContextProvider } from \"@contexts/translation\";\nimport { UndoableQueueContextProvider } from \"@contexts/undoableQueue\";\nimport { UnsavedWarnContextProvider } from \"@contexts/unsavedWarn\";\nimport { handleRefineOptions } from \"@definitions\";\nimport { useDeepMemo } from \"@hooks/deepMemo\";\nimport { RouterBindings } from \"src/interfaces/bindings\";\n\nimport { RouterPickerProvider } from \"@contexts/router-picker\";\nimport { RouterBindingsProvider } from \"../../../contexts/router\";\nimport { useRouterMisuseWarning } from \"../../../hooks/router/use-router-misuse-warning/index\";\nimport {\n AccessControlProvider,\n AuditLogProvider,\n AuthProvider,\n DashboardPageProps,\n I18nProvider,\n IDataContextProvider,\n IDataMultipleContextProvider,\n ILiveContext,\n INotificationContext,\n IRefineOptions,\n IRouterProvider,\n LayoutProps,\n LegacyAuthProvider,\n LiveModeProps,\n NotificationProvider,\n TitleProps,\n} from \"../../../interfaces\";\nimport { ResourceProps } from \"../../../interfaces/bindings/resource\";\n\nexport interface RefineProps {\n children?: React.ReactNode;\n /**\n * `resources` is the predefined interaction points for a refine app. A resource represents an entity in an endpoint in the API.\n * While this is not a required property, it is used in resource detection and creation of routes for the app.\n * @type [`ResourceProps[]`](https://refine.dev/docs/api-reference/core/components/refine-config/#resources)\n */\n resources?: ResourceProps[];\n /**\n * **refine** needs some router functions to create resource pages, handle navigation, etc. This provider allows you to use the router library you want\n * @type [`IRouterProvider`](https://refine.dev/docs/api-reference/core/providers/router-provider/)\n * @deprecated This property is deprecated and was the legacy way of routing. Please use `routerProvider` with new router bindings instead.\n */\n legacyRouterProvider?: IRouterProvider;\n /**\n * Router bindings for **refine**. A simple interface for **refine** to interact with your router in a flexible way.\n * @type [`RouterBindings`](https://refine.dev/docs/api-reference/core/bindings/router/)\n */\n routerProvider?: RouterBindings;\n /**\n * A `dataProvider` is the place where a refine app communicates with an API. Data providers also act as adapters for refine, making it possible for it to consume different API's and data services.\n * @type [`IDataContextProvider` | `IDataMultipleContextProvider`](https://refine.dev/docs/api-reference/core/providers/data-provider/)\n */\n dataProvider?: IDataContextProvider | IDataMultipleContextProvider;\n /**\n * `authProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.\n * @type [`AuthProvider`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)\n */\n authProvider?: AuthProvider;\n /**\n * `legacyAuthProvider` handles authentication logic like login, logout flow and checking user credentials. It is an object with methods that refine uses when necessary.\n * @type [`AuthProvider`](https://refine.dev/docs/api-reference/core/providers/auth-provider/)\n * @deprecated `legacyAuthProvider` is deprecated with refine@4, use `authProvider` instead.\n */\n legacyAuthProvider?: LegacyAuthProvider;\n /**\n * **refine** lets you add Realtime support to your app via `liveProvider`. It can be used to update and show data in Realtime throughout your app.\n * @type [`ILiveContext`](https://refine.dev/docs/api-reference/core/providers/live-provider/)\n */\n liveProvider?: ILiveContext;\n /**\n * `notificationProvider` handles notification logics. It is an object with methods that refine uses when necessary.\n * @type [`NotificationProvider` | `(() => NotificationProvider)`](https://refine.dev/docs/api-reference/core/providers/notification-provider/)\n */\n notificationProvider?: NotificationProvider | (() => NotificationProvider);\n /**\n * `accessControlProvider` is the entry point for implementing access control for refine apps.\n * @type [`AccessControlProvider`](https://refine.dev/docs/api-reference/core/providers/accessControl-provider/)\n */\n accessControlProvider?: AccessControlProvider;\n /**\n * **refine** allows you to track changes in your data and keep track of who made the changes.\n * @type [`AuditLogProvider`](https://refine.dev/docs/api-reference/core/providers/audit-log-provider#overview)\n */\n auditLogProvider?: AuditLogProvider;\n /**\n * `i18nProvider` property lets you add i18n support to your app. Making you able to use any i18n framework.\n * @type [`i18nProvider`](https://refine.dev/docs/api-reference/core/providers/i18n-provider/)\n */\n i18nProvider?: I18nProvider;\n /**\n * A custom error component.\n * @type [`ReactNode`](https://refine.dev/docs/api-reference/core/components/refine-config/#catchall)\n * @deprecated Please use the `catchAll` element in your routes instead.\n */\n catchAll?: React.ReactNode;\n /**\n * Custom login component can be passed to the `LoginPage` property.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage)\n * @deprecated Please use the `LoginPage` component in your routes instead.\n */\n LoginPage?: React.FC;\n /**\n * A custom dashboard page can be passed to the `DashboardPage` prop which is accessible on root route.\n * @type [`React.FC<DashboardPageProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#dashboardpage)\n * @deprecated Please use the `DashboardPage` component in your routes instead.\n */\n DashboardPage?: React.FC<DashboardPageProps>;\n /**\n * Custom ready page component can be set by passing to `ReadyPage` property.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#readypage)\n * @deprecated This component is only used with the legacy router and will be removed in the future.\n */\n ReadyPage?: React.FC;\n /**\n * Default layout can be customized by passing the `Layout` property.\n * @type [`React.FC<LayoutProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#layout)\n * @deprecated Please use the `Layout` component as a children instead of a prop.\n */\n Layout?: React.FC<LayoutProps>;\n /**\n * The default sidebar can be customized by using refine hooks and passing custom components to `Sider` property.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#sider)\n * @deprecated Please pass the `Sider` component to your `Layout` component.\n */\n Sider?: React.FC;\n /**\n * The default app header can be customized by passing the `Header` property.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#header)\n * @deprecated Please pass the `Header` component to your `Layout` component.\n */\n Header?: React.FC;\n /**\n *The default app footer can be customized by passing the `Footer` property.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#footer)\n * @deprecated Please pass the `Footer` component to your `Layout` component.\n */\n Footer?: React.FC;\n /**\n * The component wanted to be placed out of app layout structure can be set by passing to `OffLayoutArea` prop.\n * @type [`React.FC`](https://refine.dev/docs/api-reference/core/components/refine-config/#offlayoutarea)\n * @deprecated Please use your `OffLayoutArea` component as a children instead of a prop.\n */\n OffLayoutArea?: React.FC;\n /**\n * TThe app title can be set by passing the `Title` property.\n * @type [`React.FC<TitleProps>`](https://refine.dev/docs/api-reference/core/components/refine-config/#title)\n * @deprecated Please pass the `Title` component to your `Layout` component.\n */\n Title?: React.FC<TitleProps>;\n /**\n * Callback to handle all live events.\n * @type [`(event: LiveEvent) => void`](https://refine.dev/docs/api-reference/core/providers/live-provider/#onliveevent)\n */\n onLiveEvent?: LiveModeProps[\"onLiveEvent\"];\n /**\n * `options` is used to configure the app.\n * @type [`IRefineOptions`](https://refine.dev/docs/api-reference/core/components/refine-config/#options)\n * */\n options?: IRefineOptions;\n}\n\n/**\n * {@link https://refine.dev/docs/api-reference/core/components/refine-config `<Refine> component`} is the entry point of a refine app.\n * It is where the highest level of configuration of the app occurs.\n * Only a dataProvider is required to bootstrap the app. After adding a dataProvider, resources can be added as property.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config} for more details.\n */\nexport const Refine: React.FC<RefineProps> = ({\n legacyAuthProvider,\n authProvider,\n dataProvider,\n legacyRouterProvider,\n routerProvider,\n notificationProvider,\n accessControlProvider,\n auditLogProvider,\n resources,\n DashboardPage,\n ReadyPage,\n LoginPage,\n catchAll,\n children,\n liveProvider,\n i18nProvider,\n Title,\n Layout,\n Sider,\n Header,\n Footer,\n OffLayoutArea,\n onLiveEvent,\n options,\n}) => {\n const {\n optionsWithDefaults,\n disableTelemetryWithDefault,\n reactQueryWithDefaults,\n } = handleRefineOptions({\n options,\n });\n\n const queryClient = useDeepMemo(() => {\n if (reactQueryWithDefaults.clientConfig instanceof QueryClient) {\n return reactQueryWithDefaults.clientConfig;\n }\n\n return new QueryClient({\n ...reactQueryWithDefaults.clientConfig,\n defaultOptions: {\n ...reactQueryWithDefaults.clientConfig.defaultOptions,\n queries: {\n refetchOnWindowFocus: false,\n keepPreviousData: true,\n ...reactQueryWithDefaults.clientConfig.defaultOptions?.queries,\n },\n },\n });\n }, [reactQueryWithDefaults.clientConfig]);\n\n useQuerySubscription(queryClient);\n\n const useNotificationProviderValues = React.useMemo(() => {\n return typeof notificationProvider === \"function\"\n ? notificationProvider\n : () => notificationProvider ?? ({} as INotificationContext);\n }, [notificationProvider]);\n\n const notificationProviderContextValues = useNotificationProviderValues();\n\n /**\n * Warn our users if they are using the old way of routing in the wrong prop.\n */\n useRouterMisuseWarning(routerProvider);\n /** */\n\n /**\n * `<ReadyPage />` is only used in the legacy routing and is not used in the new routing.\n * If `legacyRouterProvider` is provided and `routerProvider` is not, we'll check for the `resources` prop to be empty.\n * If `resources` is empty, then we'll render `<ReadyPage />` component.\n */\n if (\n legacyRouterProvider &&\n !routerProvider &&\n (resources ?? []).length === 0\n ) {\n return ReadyPage ? <ReadyPage /> : <DefaultReadyPage />;\n }\n\n /** Router\n *\n * Handle routing from `RouterBindingsProvider` and `router` prop for the brand new way\n * If `router` is not provided, then we'r checking for `routerProvider` prop\n * If `routerProvider` is provided, then `RouterContextProvider` is used\n * If none of them is provided, then `RouterBindingsProvider` is used because it supports undefined router\n *\n * `RouterContextProvider` is skipped whenever possible and by this way,\n * we can achieve backward compability only when its provided by user\n *\n */\n const { RouterComponent = React.Fragment } = !routerProvider\n ? legacyRouterProvider ?? {}\n : {};\n /** */\n\n return (\n <QueryClientProvider client={queryClient}>\n <NotificationContextProvider {...notificationProviderContextValues}>\n <LegacyAuthContextProvider\n {...(legacyAuthProvider ?? {})}\n isProvided={Boolean(legacyAuthProvider)}\n >\n <AuthBindingsContextProvider\n {...(authProvider ?? {})}\n isProvided={Boolean(authProvider)}\n >\n <DataContextProvider {...dataProvider}>\n <LiveContextProvider liveProvider={liveProvider}>\n <RouterPickerProvider\n value={\n legacyRouterProvider && !routerProvider ? \"legacy\" : \"new\"\n }\n >\n <RouterBindingsProvider router={routerProvider}>\n <LegacyRouterContextProvider {...legacyRouterProvider}>\n <ResourceContextProvider resources={resources ?? []}>\n <TranslationContextProvider i18nProvider={i18nProvider}>\n <AccessControlContextProvider\n {...(accessControlProvider ?? {})}\n >\n <AuditLogContextProvider\n {...(auditLogProvider ?? {})}\n >\n <UndoableQueueContextProvider>\n <RefineContextProvider\n mutationMode={\n optionsWithDefaults.mutationMode\n }\n warnWhenUnsavedChanges={\n optionsWithDefaults.warnWhenUnsavedChanges\n }\n syncWithLocation={\n optionsWithDefaults.syncWithLocation\n }\n Title={Title}\n undoableTimeout={\n optionsWithDefaults.undoableTimeout\n }\n catchAll={catchAll}\n DashboardPage={DashboardPage}\n LoginPage={LoginPage}\n Layout={Layout}\n Sider={Sider}\n Footer={Footer}\n Header={Header}\n OffLayoutArea={OffLayoutArea}\n hasDashboard={!!DashboardPage}\n liveMode={optionsWithDefaults.liveMode}\n onLiveEvent={onLiveEvent}\n options={optionsWithDefaults}\n >\n <UnsavedWarnContextProvider>\n <RouterComponent>\n {children}\n {!disableTelemetryWithDefault && (\n <Telemetry />\n )}\n <RouteChangeHandler />\n </RouterComponent>\n </UnsavedWarnContextProvider>\n </RefineContextProvider>\n </UndoableQueueContextProvider>\n </AuditLogContextProvider>\n </AccessControlContextProvider>\n </TranslationContextProvider>\n </ResourceContextProvider>\n </LegacyRouterContextProvider>\n </RouterBindingsProvider>\n </RouterPickerProvider>\n </LiveContextProvider>\n </DataContextProvider>\n </AuthBindingsContextProvider>\n </LegacyAuthContextProvider>\n </NotificationContextProvider>\n </QueryClientProvider>\n );\n};\n","import React from \"react\";\n\nimport { useTelemetryData } from \"@hooks/useTelemetryData\";\n\nimport { ITelemetryData } from \"../../interfaces/telemetry\";\n\nconst encode = (payload: ITelemetryData): string | undefined => {\n try {\n const stringifiedPayload = JSON.stringify(payload || {});\n\n if (typeof btoa !== \"undefined\") {\n return btoa(stringifiedPayload);\n }\n\n return Buffer.from(stringifiedPayload).toString(\"base64\");\n } catch (err) {\n return undefined;\n }\n};\n\nconst throughImage = (src: string) => {\n const img = new Image();\n\n img.src = src;\n};\n\nconst throughFetch = (src: string) => {\n fetch(src);\n};\n\nconst transport = (src: string) => {\n if (typeof Image !== \"undefined\") {\n throughImage(src);\n } else if (typeof fetch !== \"undefined\") {\n throughFetch(src);\n }\n};\n\nexport const Telemetry: React.FC<{}> = () => {\n const payload = useTelemetryData();\n const sent = React.useRef(false);\n\n React.useEffect(() => {\n if (sent.current) {\n return;\n }\n const encoded = encode(payload);\n\n if (!encoded) {\n return;\n }\n\n transport(`https://telemetry.refine.dev/telemetry?payload=${encoded}`);\n sent.current = true;\n }, []);\n\n return null;\n};\n","import { useContext } from \"react\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { LiveContext } from \"@contexts/live\";\nimport { RouterContext } from \"@contexts/legacy-router\";\nimport { DataContext } from \"@contexts/data\";\nimport { TranslationContext } from \"@contexts/translation\";\nimport { NotificationContext } from \"@contexts/notification\";\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { useResource } from \"@hooks/resource\";\n\nimport { ITelemetryData } from \"../../interfaces/telemetry\";\nimport { useIsExistAuthentication, useRefineContext } from \"..\";\n\n// It reads and updates from package.json during build. ref: tsup.config.ts\nconst REFINE_VERSION = \"4.48.0\";\n\nexport const useTelemetryData = (): ITelemetryData => {\n const auth = useIsExistAuthentication();\n const auditLogContext = useContext(AuditLogContext);\n const liveContext = useContext(LiveContext);\n const routerContext = useContext(RouterContext);\n const dataContext = useContext(DataContext);\n const { i18nProvider } = useContext(TranslationContext);\n const notificationContext = useContext(NotificationContext);\n const accessControlContext = useContext(AccessControlContext);\n const { resources } = useResource();\n const refineOptions = useRefineContext();\n\n const auditLog =\n !!auditLogContext.create ||\n !!auditLogContext.get ||\n !!auditLogContext.update;\n\n const live =\n !!liveContext?.publish ||\n !!liveContext?.subscribe ||\n !!liveContext?.unsubscribe;\n\n const router =\n !!routerContext.useHistory ||\n !!routerContext.Link ||\n !!routerContext.Prompt ||\n !!routerContext.useLocation ||\n !!routerContext.useParams;\n\n const data = !!dataContext;\n\n const i18n =\n !!i18nProvider?.changeLocale ||\n !!i18nProvider?.getLocale ||\n !!i18nProvider?.translate;\n\n const notification =\n !!notificationContext.close || !!notificationContext.open;\n\n const accessControl = !!accessControlContext.can;\n\n const projectId = refineOptions?.options?.projectId;\n\n return {\n providers: {\n auth,\n auditLog,\n live,\n router,\n data,\n i18n,\n notification,\n accessControl,\n },\n version: REFINE_VERSION,\n resourceCount: resources.length,\n projectId,\n };\n};\n","import { IRouterProvider, RouterBindings } from \"src/interfaces\";\n\nexport const checkRouterPropMisuse = (\n value: IRouterProvider | RouterBindings,\n) => {\n // check if `routerProvider` prop is passed with legacy properties.\n // If yes, console.warn the user to use `legacyRuterProvider` prop instead.\n const bindings = [\"go\", \"parse\", \"back\", \"Link\"];\n\n // check if `value` contains properties other than `bindings`\n const otherProps = Object.keys(value).filter(\n (key) => !bindings.includes(key),\n );\n\n const hasOtherProps = otherProps.length > 0;\n\n if (hasOtherProps) {\n console.warn(\n `Unsupported properties are found in \\`routerProvider\\` prop. You provided \\`${otherProps.join(\n \", \",\n )}\\`. Supported properties are \\`${bindings.join(\n \", \",\n )}\\`. You may wanted to use \\`legacyRouterProvider\\` prop instead.`,\n );\n\n return true;\n }\n\n return false;\n};\n","import { checkRouterPropMisuse } from \"@definitions/helpers/check-router-prop-misuse\";\nimport React from \"react\";\nimport { RouterBindings } from \"src/interfaces\";\n\nexport const useRouterMisuseWarning = (value?: RouterBindings) => {\n const warned = React.useRef(false);\n\n React.useEffect(() => {\n if (warned.current === false) {\n if (value) {\n const warn = checkRouterPropMisuse(value);\n if (warn) {\n warned.current = true;\n }\n }\n }\n }, [value]);\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport { ActionTypes } from \"@contexts/undoableQueue\";\nimport { useCancelNotification, useNotification, useTranslate } from \"@hooks\";\nimport { IUndoableQueue } from \"../../interfaces\";\n\nimport { userFriendlySecond } from \"@definitions/helpers\";\n\nexport const UndoableQueue: React.FC<{\n notification: IUndoableQueue;\n}> = ({ notification }) => {\n const translate = useTranslate();\n\n const { notificationDispatch } = useCancelNotification();\n const { open } = useNotification();\n\n const [timeoutId, setTimeoutId] = useState<number | undefined>();\n\n const cancelNotification = () => {\n if (notification.isRunning === true) {\n if (notification.seconds === 0) {\n notification.doMutation();\n }\n if (!notification.isSilent) {\n open?.({\n key: `${notification.id}-${notification.resource}-notification`,\n type: \"progress\",\n message: translate(\n \"notifications.undoable\",\n {\n seconds: userFriendlySecond(notification.seconds),\n },\n `You have ${userFriendlySecond(\n notification.seconds,\n )} seconds to undo`,\n ),\n cancelMutation: notification.cancelMutation,\n undoableTimeout: userFriendlySecond(notification.seconds),\n });\n }\n\n if (notification.seconds > 0) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n const newTimeoutId = setTimeout(() => {\n notificationDispatch({\n type: ActionTypes.DECREASE_NOTIFICATION_SECOND,\n payload: {\n id: notification.id,\n seconds: notification.seconds,\n resource: notification.resource,\n },\n });\n }, 1000) as unknown as number;\n\n setTimeoutId(newTimeoutId);\n }\n }\n };\n\n useEffect(() => {\n cancelNotification();\n }, [notification]);\n\n return null;\n};\n","import React, { useEffect } from \"react\";\n\nimport {\n useRefineContext,\n useRouterContext,\n useTranslate,\n useWarnAboutChange,\n} from \"@hooks\";\nimport { LayoutProps, TitleProps } from \"../../interfaces\";\n\nexport interface LayoutWrapperProps {\n /**\n * Outer component that renders other components\n * @default *\n */\n Layout?: React.FC<LayoutProps>;\n /**\n * [Custom sider to use](/api-reference/core/components/refine-config.md#sider)\n * @default *\n */\n Sider?: React.FC;\n /**\n * [Custom header to use](/api-reference/core/components/refine-config.md#header)\n * @default *\n */\n Header?: React.FC;\n /**\n * [Custom title to use](/api-reference/core/components/refine-config.md#title)\n * @default *\n */\n Title?: React.FC<TitleProps>;\n /**\n * [Custom footer to use](/api-reference/core/components/refine-config.md#footer)\n * @default *\n */\n Footer?: React.FC;\n /**\n * [Custom off layout area to use](/api-reference/core/components/refine-config.md#offlayoutarea)\n * @default *\n */\n OffLayoutArea?: React.FC;\n children: React.ReactNode;\n}\n\n/**\n * `<LayoutWrapper>` wraps its contents in **refine's** layout with all customizations made in {@link https://refine.dev/docs/core/components/refine-config `<Refine>`} component.\n * It is the default layout used in resource pages.\n * It can be used in custom pages to use global layout.\n *\n * @see {@link https://refine.dev/docs/core/components/layout-wrapper} for more details.\n *\n * @deprecated This component is obsolete and only works with the legacy router providers.\n */\nexport const LayoutWrapper: React.FC<LayoutWrapperProps> = ({\n children,\n Layout: LayoutFromProps,\n Sider: SiderFromProps,\n Header: HeaderFromProps,\n Title: TitleFromProps,\n Footer: FooterFromProps,\n OffLayoutArea: OffLayoutAreaFromProps,\n}) => {\n const { Layout, Footer, Header, Sider, Title, OffLayoutArea } =\n useRefineContext();\n\n const LayoutToRender = LayoutFromProps ?? Layout;\n\n return (\n <LayoutToRender\n Sider={SiderFromProps ?? Sider}\n Header={HeaderFromProps ?? Header}\n Footer={FooterFromProps ?? Footer}\n Title={TitleFromProps ?? Title}\n OffLayoutArea={OffLayoutAreaFromProps ?? OffLayoutArea}\n >\n {children}\n <UnsavedPrompt />\n </LayoutToRender>\n );\n};\n\nconst UnsavedPrompt: React.FC = () => {\n const { Prompt } = useRouterContext();\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const warnWhenListener = (e: {\n preventDefault: () => void;\n returnValue: string;\n }) => {\n e.preventDefault();\n\n e.returnValue = translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n );\n\n return e.returnValue;\n };\n\n useEffect(() => {\n if (warnWhen) {\n window.addEventListener(\"beforeunload\", warnWhenListener);\n }\n\n return window.removeEventListener(\"beforeunload\", warnWhenListener);\n }, [warnWhen]);\n\n return (\n <Prompt\n when={warnWhen}\n message={translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n )}\n setWarnWhen={setWarnWhen}\n />\n );\n};\n","import React from \"react\";\n\nimport {\n useGo,\n useNavigation,\n useParsed,\n useRouterContext,\n useRouterType,\n useIsAuthenticated,\n} from \"@hooks\";\nimport { useActiveAuthProvider } from \"@definitions/index\";\nimport { GoConfig } from \"src/interfaces\";\n\nexport type AuthenticatedCommonProps = {\n /**\n * Unique key to identify the component.\n * This is required if you have multiple `Authenticated` components at the same level.\n * @required\n */\n key: React.Key;\n /**\n * Whether to redirect user if not logged in or not.\n * If not set, user will be redirected to `redirectTo` property of the `check` function's response.\n * This behavior is only available for new auth providers.\n * Legacy auth providers will redirect to `/login` by default if this property is not set.\n * If set to a string, user will be redirected to that string.\n *\n * This property only works if `fallback` is **not set**.\n */\n redirectOnFail?: string | true;\n /**\n * Whether to append current path to search params of the redirect url at `to` property.\n *\n * By default, `to` parameter is used by successful invocations of the `useLogin` hook.\n * If `to` present, it will be used as the redirect url after successful login.\n */\n appendCurrentPathToQuery?: boolean;\n /**\n * Content to show if user is not logged in.\n */\n fallback?: React.ReactNode;\n /**\n * Content to show while checking whether user is logged in or not.\n */\n loading?: React.ReactNode;\n /**\n * Content to show if user is logged in\n */\n children?: React.ReactNode;\n};\n\nexport type LegacyAuthenticatedProps = {\n v3LegacyAuthProviderCompatible: true;\n} & AuthenticatedCommonProps;\n\nexport type AuthenticatedProps = {\n v3LegacyAuthProviderCompatible?: false;\n} & AuthenticatedCommonProps;\n\n/**\n * `<Authenticated>` is the component form of {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated `useAuthenticated`}. It internally uses `useAuthenticated` to provide it's functionality.\n *\n * @requires {@link https://react.dev/learn/rendering-lists#why-does-react-need-keys `key`} prop if you have multiple components at the same level.\n * In React, components don't automatically unmount and remount with prop changes, which is generally good for performance. However, for specific cases this can cause issues like unwanted content rendering (`fallback` or `children`). To solve this, assigning unique `key` values to each instance of component is necessary, forcing React to unmount and remount the component, rather than just updating its props.\n * @example\n *```tsx\n * <Authenticated key=\"dashboard\">\n * <h1>Dashboard Page</h1>\n * </Authenticated>\n *```\n *\n * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.\n */\nexport function Authenticated(\n props: LegacyAuthenticatedProps,\n): JSX.Element | null;\n\n/**\n * `<Authenticated>` is the component form of {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated `useAuthenticated`}. It internally uses `useAuthenticated` to provide it's functionality.\n *\n * @requires {@link https://react.dev/learn/rendering-lists#why-does-react-need-keys `key`} prop if you have multiple components at the same level.\n * In React, components don't automatically unmount and remount with prop changes, which is generally good for performance. However, for specific cases this can cause issues like unwanted content rendering (`fallback` or `children`). To solve this, assigning unique `key` values to each instance of component is necessary, forcing React to unmount and remount the component, rather than just updating its props.\n * @example\n *```tsx\n * <Authenticated key=\"dashboard\">\n * <h1>Dashboard Page</h1>\n * </Authenticated>\n *```\n *\n * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.\n */\nexport function Authenticated(props: AuthenticatedProps): JSX.Element | null;\n\nexport function Authenticated({\n redirectOnFail = true,\n appendCurrentPathToQuery = true,\n children,\n fallback: fallbackContent,\n loading: loadingContent,\n}: AuthenticatedProps | LegacyAuthenticatedProps): JSX.Element | null {\n const activeAuthProvider = useActiveAuthProvider();\n const routerType = useRouterType();\n\n const hasAuthProvider = Boolean(activeAuthProvider?.isProvided);\n const isLegacyAuth = Boolean(activeAuthProvider?.isLegacy);\n const isLegacyRouter = routerType === \"legacy\";\n\n const parsed = useParsed();\n const go = useGo();\n const { useLocation } = useRouterContext();\n const legacyLocation = useLocation();\n\n const {\n isFetching,\n isSuccess,\n data: {\n authenticated: isAuthenticatedStatus,\n redirectTo: authenticatedRedirect,\n } = {},\n } = useIsAuthenticated({\n v3LegacyAuthProviderCompatible: isLegacyAuth,\n });\n\n // Authentication status\n const isAuthenticated = hasAuthProvider\n ? isLegacyAuth\n ? isSuccess\n : isAuthenticatedStatus\n : true;\n\n // when there is no auth provider\n if (!hasAuthProvider) {\n return <>{children ?? null}</>;\n }\n\n // when checking authentication status\n if (isFetching) {\n return <>{loadingContent ?? null}</>;\n }\n\n // when user is authenticated return children\n if (isAuthenticated) {\n return <>{children ?? null}</>;\n }\n // when user is not authenticated redirect or render fallbackContent\n\n // render fallbackContent if it is exist\n if (typeof fallbackContent !== \"undefined\") {\n return <>{fallbackContent ?? null}</>;\n }\n // if there is no fallbackContent, redirect page\n\n // Redirect url to use. use redirectOnFail if it is set.\n // Otherwise use redirectTo property of the check function's response.\n // If both are not set, use `/login` as the default redirect url. (only for legacy auth providers)\n const appliedRedirect = isLegacyAuth\n ? typeof redirectOnFail === \"string\"\n ? redirectOnFail\n : \"/login\"\n : typeof redirectOnFail === \"string\"\n ? redirectOnFail\n : (authenticatedRedirect as string | undefined);\n\n // Current pathname to append to the redirect url.\n // User will be redirected to this url after successful mutation. (like login)\n const pathname = `${\n isLegacyRouter ? legacyLocation?.pathname : parsed.pathname\n }`.replace(/(\\?.*|#.*)$/, \"\");\n // Redirect if appliedRedirect is set, otherwise return null.\n // Uses `replace` for legacy router and `go` for new router.\n if (appliedRedirect) {\n if (isLegacyRouter) {\n const toQuery = appendCurrentPathToQuery\n ? `?to=${encodeURIComponent(pathname)}`\n : \"\";\n return <RedirectLegacy to={`${appliedRedirect}${toQuery}`} />;\n }\n return (\n <Redirect\n config={{\n to: appliedRedirect,\n query: appendCurrentPathToQuery\n ? {\n to: parsed.params?.to\n ? parsed.params.to\n : go({\n to: pathname,\n options: { keepQuery: true },\n type: \"path\",\n }),\n }\n : undefined,\n type: \"replace\",\n }}\n />\n );\n }\n\n return null;\n}\n\nconst Redirect = ({ config }: { config: GoConfig }) => {\n const go = useGo();\n\n React.useEffect(() => {\n go(config);\n }, [go, config]);\n\n return null;\n};\n\nconst RedirectLegacy = ({ to }: { to: string }) => {\n const { replace } = useNavigation();\n\n React.useEffect(() => {\n replace(to);\n }, [replace, to]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { useRouterContext } from \"@hooks\";\nimport { useLegacyAuthContext } from \"@contexts/auth\";\n\nexport const RouteChangeHandler: React.FC = () => {\n const { useLocation } = useRouterContext();\n\n const { checkAuth } = useLegacyAuthContext();\n const location = useLocation();\n\n useEffect(() => {\n checkAuth?.().catch(() => false);\n }, [location?.pathname]);\n\n return null;\n};\n","import React, { useEffect } from \"react\";\n\nimport { useCan, useResource } from \"@hooks\";\nimport { BaseKey, IResourceItem, ITreeMenu } from \"../../interfaces\";\nimport { UseQueryOptions } from \"@tanstack/react-query\";\n\nimport { CanReturnType } from \"../../interfaces\";\n\ntype CanParams = {\n resource?: IResourceItem & { children?: ITreeMenu[] };\n id?: BaseKey;\n [key: string]: any;\n};\n\ntype OnUnauthorizedProps = {\n resource?: string;\n reason?: string;\n action: string;\n params: CanParams;\n};\n\ntype CanAccessBaseProps = {\n /**\n * Resource name for API data interactions\n */\n resource?: string;\n /**\n * Intended action on resource\n */\n action: string;\n /**\n * Parameters associated with the resource\n * @type { resource?: [IResourceItem](https://refine.dev/docs/api-reference/core/interfaceReferences/#canparams), id?: [BaseKey](https://refine.dev/docs/api-reference/core/interfaceReferences/#basekey), [key: string]: any }\n */\n params?: CanParams;\n /**\n * Content to show if access control returns `false`\n */\n fallback?: React.ReactNode;\n /**\n * Callback function to be called if access control returns `can: false`\n */\n onUnauthorized?: (props: OnUnauthorizedProps) => void;\n children: React.ReactNode;\n queryOptions?: UseQueryOptions<CanReturnType>;\n};\n\ntype CanAccessWithoutParamsProps = {\n [key in Exclude<\n keyof CanAccessBaseProps,\n \"fallback\" | \"children\"\n >]?: undefined;\n} & {\n [key in \"fallback\" | \"children\"]?: CanAccessBaseProps[key];\n};\n\nexport type CanAccessProps = CanAccessBaseProps | CanAccessWithoutParamsProps;\n\nexport const CanAccess: React.FC<CanAccessProps> = ({\n resource: resourceFromProp,\n action: actionFromProp,\n params: paramsFromProp,\n fallback,\n onUnauthorized,\n children,\n queryOptions: componentQueryOptions,\n ...rest\n}) => {\n const {\n resource,\n id: idFromRoute,\n action: actionFromRoute,\n } = useResource(resourceFromProp);\n const { identifier } = useResource();\n\n const getDefaultId = () => {\n const idFromPropsOrRoute = paramsFromProp?.id ?? idFromRoute;\n\n if (resourceFromProp && resourceFromProp !== identifier) {\n return paramsFromProp?.id;\n }\n\n return idFromPropsOrRoute;\n };\n const defaultId = getDefaultId();\n\n const resourceName = resourceFromProp ?? resource?.name;\n const action = actionFromProp ?? actionFromRoute ?? \"\";\n const params = paramsFromProp ?? {\n id: defaultId,\n resource: resource,\n };\n\n const { data } = useCan({\n resource: resourceName,\n action,\n params,\n queryOptions: componentQueryOptions,\n });\n\n useEffect(() => {\n if (onUnauthorized && data?.can === false) {\n onUnauthorized({\n resource: resourceName,\n action,\n reason: data?.reason,\n params,\n });\n }\n }, [data?.can]);\n\n if (data?.can) {\n if (React.isValidElement(children)) {\n const Children = React.cloneElement(children, rest);\n return Children;\n }\n\n return <>{children}</>;\n }\n\n if (data?.can === false) {\n return <>{fallback ?? null}</>;\n }\n\n return null;\n};\n","import React, { SVGProps, useEffect } from \"react\";\nimport { CSSRules } from \"./styles\";\n\nconst text =\n \"If you find Refine useful, you can contribute to its growth by giving it a star on GitHub\";\n\nexport const GitHubBanner = () => {\n useEffect(() => {\n const styleTag = document.createElement(\"style\");\n document.head.appendChild(styleTag);\n CSSRules.forEach((rule) =>\n styleTag.sheet?.insertRule(rule, styleTag.sheet.cssRules.length),\n );\n }, []);\n\n return (\n <div\n className=\"banner bg-top-announcement\"\n style={{\n width: \"100%\",\n height: \"48px\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingLeft: \"200px\",\n width: \"100%\",\n maxWidth: \"100vw\",\n height: \"100%\",\n borderBottom: \"1px solid #47ebeb26\",\n }}\n >\n <div\n className=\"top-announcement-mask\"\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n borderBottom: \"1px solid #47ebeb26\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: \"960px\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n margin: \"0 auto\",\n }}\n >\n <div\n style={{\n width: \"calc(50% - 300px)\",\n height: \"100%\",\n position: \"relative\",\n }}\n >\n <GlowSmall\n style={{\n animationDelay: \"1.5s\",\n position: \"absolute\",\n top: \"2px\",\n right: \"220px\",\n }}\n id={\"1\"}\n />\n <GlowSmall\n style={{\n animationDelay: \"1s\",\n position: \"absolute\",\n top: \"8px\",\n right: \"100px\",\n transform: \"rotate(180deg)\",\n }}\n id={\"2\"}\n />\n <GlowBig\n style={{\n position: \"absolute\",\n right: \"10px\",\n }}\n id={\"3\"}\n />\n </div>\n\n <div\n style={{\n width: \"calc(50% - 300px)\",\n height: \"100%\",\n position: \"relative\",\n }}\n >\n <GlowSmall\n style={{\n animationDelay: \"2s\",\n position: \"absolute\",\n top: \"6px\",\n right: \"180px\",\n transform: \"rotate(180deg)\",\n }}\n id={\"4\"}\n />\n <GlowSmall\n style={{\n animationDelay: \"0.5s\",\n transitionDelay: \"1.3s\",\n position: \"absolute\",\n top: \"2px\",\n right: \"40px\",\n }}\n id={\"5\"}\n />\n <GlowBig\n style={{\n position: \"absolute\",\n right: \"-70px\",\n }}\n id={\"6\"}\n />\n </div>\n </div>\n </div>\n <Text text={text} />\n </div>\n </div>\n );\n};\n\nconst Text = ({ text }: { text: string }) => {\n return (\n <a\n className=\"gh-link\"\n href=\"https://s.refine.dev/github-support\"\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{\n position: \"absolute\",\n height: \"100%\",\n padding: \"0 60px\",\n display: \"flex\",\n flexWrap: \"nowrap\",\n whiteSpace: \"nowrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundImage:\n \"linear-gradient(90deg, rgba(31, 63, 72, 0.00) 0%, #1F3F48 10%, #1F3F48 90%, rgba(31, 63, 72, 0.00) 100%)\",\n }}\n >\n <div\n style={{\n color: \"#fff\",\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"8px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n ⭐️\n </span>\n <span\n className=\"text\"\n style={{\n fontSize: \"16px\",\n lineHeight: \"24px\",\n }}\n >\n {text}\n </span>\n <span\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n ⭐️\n </span>\n </div>\n </a>\n );\n};\n\nconst GlowSmall = ({ style, ...props }: SVGProps<SVGSVGElement>) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={80}\n height={40}\n fill=\"none\"\n style={{\n opacity: 1,\n animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n ...style,\n }}\n >\n <circle cx={40} r={40} fill={`url(#${props.id}-a)`} fillOpacity={0.5} />\n <defs>\n <radialGradient\n id={`${props.id}-a`}\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"matrix(0 40 -40 0 40 0)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#47EBEB\" />\n <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n </radialGradient>\n </defs>\n </svg>\n );\n};\n\nconst GlowBig = ({ style, ...props }: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={120}\n height={48}\n fill=\"none\"\n {...props}\n style={{\n opacity: 1,\n animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n ...style,\n }}\n >\n <circle\n cx={60}\n cy={24}\n r={60}\n fill={`url(#${props.id}-a)`}\n fillOpacity={0.5}\n />\n <defs>\n <radialGradient\n id={`${props.id}-a`}\n cx={0}\n cy={0}\n r={1}\n gradientTransform=\"matrix(0 60 -60 0 60 24)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#47EBEB\" />\n <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n </radialGradient>\n </defs>\n </svg>\n);\n","export const CSSRules = [\n `\n .bg-top-announcement {\n border-bottom: 1px solid rgba(71, 235, 235, 0.15);\n background: radial-gradient(\n 218.19% 111.8% at 0% 0%,\n rgba(71, 235, 235, 0.1) 0%,\n rgba(71, 235, 235, 0.2) 100%\n ),\n #14141f;\n }\n `,\n `\n .top-announcement-mask {\n mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n -webkit-mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n mask-repeat: repeat;\n -webkit-mask-repeat: repeat;\n background: rgba(71, 235, 235, 0.25);\n }\n `,\n `\n .banner {\n display: flex;\n @media (max-width: 1000px) {\n display: none;\n }\n }`,\n `\n .gh-link, .gh-link:hover, .gh-link:active, .gh-link:visited, .gh-link:focus {\n text-decoration: none;\n z-index: 9;\n }\n `,\n `\n @keyframes top-announcement-glow {\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n }\n `,\n];\n","import React from \"react\";\nimport { AutoSaveIndicatorProps } from \"../../interfaces\";\nimport { useTranslate } from \"@hooks/translate\";\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n status,\n elements: {\n success = <Message key=\"autoSave.success\" defaultMessage=\"saved\" />,\n error = <Message key=\"autoSave.error\" defaultMessage=\"auto save failure\" />,\n loading = <Message key=\"autoSave.loading\" defaultMessage=\"saving...\" />,\n idle = <Message key=\"autoSave.idle\" defaultMessage=\"waiting for changes\" />,\n } = {},\n}) => {\n switch (status) {\n case \"success\":\n return <>{success}</>;\n case \"error\":\n return <>{error}</>;\n case \"loading\":\n return <>{loading}</>;\n default:\n return <>{idle}</>;\n }\n};\n\nconst Message = ({\n key,\n defaultMessage,\n}: {\n key: string;\n defaultMessage: string;\n}) => {\n const translate = useTranslate();\n\n return <span>{translate(key, defaultMessage)}</span>;\n};\n","export type { RefineBreadcrumbProps } from \"./types\";\n\nexport type {\n RefineButtonCommonProps,\n RefineButtonDataProps,\n RefineButtonLinkingProps,\n RefineButtonResourceProps,\n RefineButtonSingleProps,\n RefineCloneButtonProps,\n RefineCreateButtonProps,\n RefineDeleteButtonProps,\n RefineEditButtonProps,\n RefineExportButtonProps,\n RefineImportButtonProps,\n RefineListButtonProps,\n RefineRefreshButtonProps,\n RefineSaveButtonProps,\n RefineShowButtonProps,\n} from \"./types\";\n\nexport type {\n RefineCrudCreateProps,\n RefineCrudEditProps,\n RefineCrudListProps,\n RefineCrudShowProps,\n ActionButtonRenderer,\n} from \"./types\";\n\nexport type { RefineErrorPageProps, RefineReadyPageProps } from \"./types\";\n\nexport type {\n RefineFieldBooleanProps,\n RefineFieldCommonProps,\n RefineFieldDateProps,\n RefineFieldEmailProps,\n RefineFieldFileProps,\n RefineFieldImageProps,\n RefineFieldUrlProps,\n RefineFieldMarkdownProps,\n RefineFieldNumberProps,\n RefineFieldTagProps,\n RefineFieldTextProps,\n RefineFieldTooltipProps,\n} from \"./types\";\n\nexport type {\n RefineLayoutFooterProps,\n RefineLayoutHeaderProps,\n RefineLayoutLayoutProps,\n RefineLayoutSiderProps,\n RefineLayoutTitleProps,\n RefineThemedLayoutSiderProps,\n RefineThemedLayoutHeaderProps,\n RefineThemedLayoutProps,\n RefineLayoutThemedTitleProps,\n RefineThemedLayoutV2Props,\n RefineThemedLayoutV2SiderProps,\n RefineThemedLayoutV2HeaderProps,\n} from \"./types\";\n\nexport { RefineButtonTestIds } from \"./ids\";\nexport * from \"./classNames\";\n","export const RefineButtonTestIds = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","export const RefinePageHeaderClassNames = {\n Title: \"refine-pageHeader-title\",\n SubTitle: \"refine-pageHeader-subTitle\",\n};\n\nexport const RefineButtonClassNames = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","import React from \"react\";\nimport { FormInstance, FormProps, Form, ButtonProps } from \"antd\";\nimport { useForm as useFormSF } from \"sunflower-antd\";\nimport {\n AutoSaveProps,\n flattenObjectKeys,\n propertyPathToArray,\n} from \"@refinedev/core\";\n\nimport {\n HttpError,\n BaseRecord,\n useForm as useFormCore,\n UseFormReturnType as UseFormReturnTypeCore,\n useWarnAboutChange,\n UseFormProps as UseFormPropsCore,\n CreateResponse,\n UpdateResponse,\n pickNotDeprecated,\n useTranslate,\n useRefineContext,\n} from \"@refinedev/core\";\n\nexport type UseFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n submitOnEnter?: boolean;\n /**\n * Shows notification when unsaved changes exist\n */\n warnWhenUnsavedChanges?: boolean;\n /**\n * Disables server-side validation\n * @default false\n * @see {@link https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/}\n */\n disableServerSideValidation?: boolean;\n} & AutoSaveProps<TVariables>;\n\nexport type UseFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnTypeCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n form: FormInstance<TVariables>;\n formProps: FormProps<TVariables>;\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n onFinish: (\n values?: TVariables,\n ) => Promise<CreateResponse<TResponse> | UpdateResponse<TResponse> | void>;\n};\n\n/**\n * `useForm` is used to manage forms. It uses Ant Design {@link https://ant.design/components/form/ Form} data scope management under the hood and returns the required props for managing the form actions.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}. Defaults to `TError`\n *\n *\n */\nexport const useForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n action,\n resource,\n onMutationSuccess: onMutationSuccessProp,\n onMutationError: onMutationErrorProp,\n autoSave,\n submitOnEnter = false,\n warnWhenUnsavedChanges: warnWhenUnsavedChangesProp,\n redirect,\n successNotification,\n errorNotification,\n meta,\n metaData,\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n disableServerSideValidation: disableServerSideValidationProp = false,\n}: UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> = {}): UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const { options } = useRefineContext();\n const disableServerSideValidation =\n options?.disableServerSideValidation || disableServerSideValidationProp;\n\n const translate = useTranslate();\n\n const [formAnt] = Form.useForm();\n const formSF = useFormSF<TResponse, TVariables>({\n form: formAnt,\n });\n const { form } = formSF;\n\n const useFormCoreResult = useFormCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n onMutationSuccess: onMutationSuccessProp\n ? onMutationSuccessProp\n : undefined,\n onMutationError: async (error, _variables, _context) => {\n if (disableServerSideValidation) {\n onMutationErrorProp?.(error, _variables, _context);\n return;\n }\n\n // antd form expects error object to be in a specific format.\n let parsedErrors: {\n name: string | number | (string | number)[];\n errors?: string[] | undefined;\n }[] = [];\n\n // reset antd errors before setting new errors\n const fieldsValue = form.getFieldsValue() as unknown as object;\n\n const fields = Object.keys(flattenObjectKeys(fieldsValue));\n\n parsedErrors = fields.map((field) => {\n return {\n name: propertyPathToArray(field),\n errors: undefined,\n };\n });\n\n form.setFields(parsedErrors);\n\n const errors = error?.errors;\n // parse errors to antd form errors\n for (const key in errors) {\n const fieldError = errors[key];\n\n let newError: string[] = [];\n\n if (Array.isArray(fieldError)) {\n newError = fieldError;\n }\n\n if (typeof fieldError === \"string\") {\n newError = [fieldError];\n }\n\n if (typeof fieldError === \"boolean\" && fieldError) {\n newError = [\"Field is not valid.\"];\n }\n\n if (typeof fieldError === \"object\" && \"key\" in fieldError) {\n const translatedMessage = translate(\n fieldError.key,\n fieldError.message,\n );\n\n newError = [translatedMessage];\n }\n\n parsedErrors.push({\n name: propertyPathToArray(key),\n errors: newError,\n });\n }\n\n form.setFields([...parsedErrors]);\n\n onMutationErrorProp?.(error, _variables, _context);\n },\n redirect,\n action,\n resource,\n successNotification,\n errorNotification,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n queryMeta,\n mutationMeta,\n liveMode,\n liveParams,\n mutationMode,\n dataProviderName,\n onLiveEvent,\n invalidates,\n undoableTimeout,\n queryOptions,\n createMutationOptions,\n updateMutationOptions,\n id: idFromProps,\n overtimeOptions,\n optimisticUpdateMap,\n autoSave,\n });\n\n const { formLoading, onFinish, queryResult, id, onFinishAutoSave } =\n useFormCoreResult;\n\n const { warnWhenUnsavedChanges: warnWhenUnsavedChangesRefine, setWarnWhen } =\n useWarnAboutChange();\n const warnWhenUnsavedChanges =\n warnWhenUnsavedChangesProp ?? warnWhenUnsavedChangesRefine;\n\n React.useEffect(() => {\n form.resetFields();\n }, [queryResult?.data?.data, id]);\n\n const onKeyUp = (event: React.KeyboardEvent<HTMLFormElement>) => {\n if (submitOnEnter && event.key === \"Enter\") {\n form.submit();\n }\n };\n\n const onValuesChange = (changeValues: object, allValues: any) => {\n if (changeValues && warnWhenUnsavedChanges) {\n setWarnWhen(true);\n }\n\n if (autoSave?.enabled) {\n setWarnWhen(false);\n\n const onFinishFromProps = autoSave?.onFinish ?? ((values) => values);\n\n return onFinishAutoSave(onFinishFromProps(allValues));\n }\n\n return changeValues;\n };\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n return {\n form: formSF.form,\n formProps: {\n ...formSF.formProps,\n onFinish: (values: TVariables) =>\n onFinish(values).catch((error) => error),\n onKeyUp,\n onValuesChange,\n initialValues: queryResult?.data?.data,\n },\n saveButtonProps,\n ...useFormCoreResult,\n onFinish: async (values?: TVariables) => {\n return await onFinish(values ?? formSF.form.getFieldsValue(true));\n },\n };\n};\n","import React, { useCallback } from \"react\";\nimport { FormInstance, FormProps, ModalProps } from \"antd\";\n\nimport {\n useTranslate,\n useWarnAboutChange,\n HttpError,\n UseFormProps as UseFormPropsCore,\n BaseRecord,\n LiveModeProps,\n BaseKey,\n useUserFriendlyName,\n useResource,\n FormWithSyncWithLocationParams,\n useParsed,\n useGo,\n useInvalidate,\n} from \"@refinedev/core\";\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport { useModal } from \"@hooks/modal\";\n\nexport type useModalFormFromSFReturnType<TResponse, TVariables> = {\n open: boolean;\n form: FormInstance<TVariables>;\n show: (id?: BaseKey) => void;\n close: () => void;\n modalProps: ModalProps;\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n submit: (values?: TVariables) => Promise<TResponse>;\n /** @deprecated Please use `open` instead. */\n visible: boolean;\n};\n\ntype useModalFormConfig = {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n};\n\nexport type UseModalFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = Omit<\n UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >,\n \"saveButtonProps\" | \"deleteButtonProps\"\n> &\n useModalFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseModalFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n useModalFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n/**\n * `useModalForm` hook allows you to manage a form within a modal. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/modal/ Modal} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useModalForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useModalForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseModalFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseModalFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n const invalidate = useInvalidate();\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n const getUserFriendlyName = useUserFriendlyName();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `modal-${identifier}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, id, setId, formLoading, onFinish, autoSaveProps } =\n useFormProps;\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const { show, close, modalProps } = useModal({\n modalProps: {\n open: defaultVisible,\n },\n });\n\n const visible = modalProps.open || false;\n const sunflowerUseModal: useModalFormFromSFReturnType<TResponse, TVariables> =\n {\n modalProps,\n form,\n formLoading,\n formProps,\n formResult: undefined,\n formValues: form.getFieldsValue,\n defaultFormValuesLoading: false,\n initialValues: {},\n submit: onFinish as any,\n close,\n open: modalProps.open || false,\n show,\n visible,\n };\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n\n if (typeof openStatus === \"boolean\") {\n if (openStatus) {\n show();\n }\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [id, visible, show, syncWithLocationKey, syncingId]);\n\n const saveButtonPropsSF = {\n disabled: formLoading,\n loading: formLoading,\n onClick: () => {\n form.submit();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n setId?.(undefined);\n sunflowerUseModal.close();\n }, [warnWhen, autoSaveProps.status]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n sunflowerUseModal.show();\n }\n },\n [id],\n );\n\n const { visible: _visible, ...otherModalProps } = modalProps;\n const newModalProps = { open: _visible, ...otherModalProps };\n\n return {\n ...useFormProps,\n ...sunflowerUseModal,\n show: handleShow,\n close: handleClose,\n open: visible,\n formProps: {\n ...formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n modalProps: {\n ...newModalProps,\n width: \"1000px\",\n okButtonProps: saveButtonPropsSF,\n title: translate(\n `${identifier}.titles.${rest.action}`,\n `${getUserFriendlyName(\n `${rest.action} ${\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier\n }`,\n \"singular\",\n )}`,\n ),\n okText: translate(\"buttons.save\", \"Save\"),\n cancelText: translate(\"buttons.cancel\", \"Cancel\"),\n onCancel: handleClose,\n forceRender: true,\n },\n formLoading,\n };\n};\n","import { ModalProps } from \"antd\";\nimport {\n useModal as useCoreModal,\n useModalReturnType as useCoreModelReturnType,\n} from \"@refinedev/core\";\n\nexport type useModalReturnType = {\n modalProps: ModalProps;\n} & Omit<useCoreModelReturnType, \"visible\">;\n\nexport type useModalProps = {\n /**\n * Default props for Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n */\n modalProps?: ModalProps;\n};\n\n/**\n * By using `useModal` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/modal/ `<Modal>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/ui/useModal} for more details.\n */\nexport const useModal = ({\n modalProps = {},\n}: useModalProps = {}): useModalReturnType => {\n const { show, close, visible } = useCoreModal({\n defaultVisible: modalProps.open,\n });\n\n return {\n modalProps: {\n ...modalProps,\n onCancel: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n modalProps.onCancel?.(e);\n close();\n },\n open: visible,\n visible,\n },\n show,\n close,\n };\n};\n","import React, { useCallback } from \"react\";\nimport { UseFormConfig } from \"sunflower-antd\";\nimport { FormInstance, FormProps, DrawerProps, ButtonProps } from \"antd\";\nimport {\n useTranslate,\n useWarnAboutChange,\n UseFormProps as UseFormPropsCore,\n HttpError,\n LiveModeProps,\n BaseRecord,\n FormWithSyncWithLocationParams,\n BaseKey,\n useResource,\n useParsed,\n useGo,\n useModal,\n useInvalidate,\n} from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\nimport { DeleteButtonProps } from \"../../../components\";\n\nexport interface UseDrawerFormConfig extends UseFormConfig {\n action: \"show\" | \"edit\" | \"create\" | \"clone\";\n}\n\nexport type UseDrawerFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseDrawerFormConfig &\n LiveModeProps &\n FormWithSyncWithLocationParams & {\n defaultVisible?: boolean;\n autoSubmitClose?: boolean;\n autoResetForm?: boolean;\n };\n\nexport type UseDrawerFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> & {\n formProps: FormProps<TVariables> & {\n form: FormInstance<TVariables>;\n };\n show: (id?: BaseKey) => void;\n close: () => void;\n drawerProps: DrawerProps;\n saveButtonProps: ButtonProps;\n deleteButtonProps: DeleteButtonProps;\n formLoading: boolean;\n};\n\n/**\n * `useDrawerForm` hook allows you to manage a form within a drawer. It returns Ant Design {@link https://ant.design/components/form/ Form} and {@link https://ant.design/components/drawer/ Drawer} components props.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useDrawerForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\n\nexport const useDrawerForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>({\n syncWithLocation,\n defaultVisible = false,\n autoSubmitClose = true,\n autoResetForm = true,\n autoSave,\n invalidates,\n ...rest\n}: UseDrawerFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n>): UseDrawerFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const invalidate = useInvalidate();\n const [initiallySynced, setInitiallySynced] = React.useState(false);\n\n const { visible, show, close } = useModal({\n defaultVisible,\n });\n\n const {\n resource,\n action: actionFromParams,\n identifier,\n } = useResource(rest.resource);\n\n const parsed = useParsed();\n const go = useGo();\n\n const action = rest.action ?? actionFromParams ?? \"\";\n\n const syncingId = !(\n typeof syncWithLocation === \"object\" && syncWithLocation?.syncId === false\n );\n\n const syncWithLocationKey =\n typeof syncWithLocation === \"object\" && \"key\" in syncWithLocation\n ? syncWithLocation.key\n : resource && action && syncWithLocation\n ? `drawer-${resource?.identifier ?? resource?.name}-${action}`\n : undefined;\n\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n meta: {\n ...(syncWithLocationKey ? { [syncWithLocationKey]: undefined } : {}),\n ...rest.meta,\n },\n autoSave,\n invalidates,\n ...rest,\n });\n\n const { form, formProps, formLoading, id, setId, onFinish, autoSaveProps } =\n useFormProps;\n\n React.useEffect(() => {\n if (initiallySynced === false && syncWithLocationKey) {\n const openStatus = parsed?.params?.[syncWithLocationKey]?.open;\n if (typeof openStatus === \"boolean\") {\n openStatus ? show() : close();\n } else if (typeof openStatus === \"string\") {\n if (openStatus === \"true\") {\n show();\n }\n }\n\n if (syncingId) {\n const idFromParams = parsed?.params?.[syncWithLocationKey]?.id;\n if (idFromParams) {\n setId?.(idFromParams);\n }\n }\n\n setInitiallySynced(true);\n }\n }, [syncWithLocationKey, parsed, syncingId, setId, initiallySynced]);\n\n React.useEffect(() => {\n if (initiallySynced === true) {\n if (visible && syncWithLocationKey) {\n go({\n query: {\n [syncWithLocationKey]: {\n ...parsed?.params?.[syncWithLocationKey],\n open: true,\n ...(syncingId && id && { id }),\n },\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n } else if (syncWithLocationKey && !visible) {\n go({\n query: {\n [syncWithLocationKey]: undefined,\n },\n options: { keepQuery: true },\n type: \"replace\",\n });\n }\n }\n }, [\n id,\n visible,\n show,\n close,\n syncWithLocationKey,\n syncingId,\n initiallySynced,\n ]);\n\n const translate = useTranslate();\n\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n const saveButtonProps = {\n disabled: formLoading,\n onClick: () => {\n form.submit();\n },\n loading: formLoading,\n };\n\n const deleteButtonProps = {\n recordItemId: id,\n onSuccess: () => {\n setId?.(undefined);\n close();\n },\n };\n\n const handleClose = useCallback(() => {\n if (autoSaveProps.status === \"success\" && autoSave?.invalidateOnClose) {\n invalidate({\n id,\n invalidates: invalidates || [\"list\", \"many\", \"detail\"],\n dataProviderName: rest.dataProviderName,\n resource: identifier,\n });\n }\n\n if (warnWhen) {\n const warnWhenConfirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (warnWhenConfirm) {\n setWarnWhen(false);\n } else {\n return;\n }\n }\n\n close();\n setId?.(undefined);\n }, [warnWhen]);\n\n const handleShow = useCallback(\n (showId?: BaseKey) => {\n if (typeof showId !== \"undefined\") {\n setId?.(showId);\n }\n const needsIdToOpen = action === \"edit\" || action === \"clone\";\n const hasId = typeof showId !== \"undefined\" || typeof id !== \"undefined\";\n if (needsIdToOpen ? hasId : true) {\n show();\n }\n },\n [id],\n );\n\n return {\n ...useFormProps,\n show: handleShow,\n close: handleClose,\n formProps: {\n form,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n onFinish: async (values) => {\n await onFinish(values);\n\n if (autoSubmitClose) {\n close();\n }\n\n if (autoResetForm) {\n form.resetFields();\n }\n },\n },\n drawerProps: {\n width: \"500px\",\n onClose: handleClose,\n open: visible,\n forceRender: true,\n },\n saveButtonProps,\n deleteButtonProps,\n formLoading,\n };\n};\n","import {\n useStepsForm as useStepsFormSF,\n UseStepsFormConfig,\n} from \"sunflower-antd\";\nimport { FormInstance, FormProps } from \"antd\";\n\nimport {\n HttpError,\n UseFormProps as UseFormPropsCore,\n BaseRecord,\n} from \"@refinedev/core\";\n\nimport { useForm, UseFormProps, UseFormReturnType } from \"../useForm\";\n\nexport type UseStepsFormFromSFReturnType<TResponse, TVariables> = {\n current: number;\n gotoStep: (step: number) => Promise<TVariables> | true;\n stepsProps: {\n current: number;\n onChange: (currentStep: number) => void;\n };\n formProps: FormProps<TVariables>;\n formLoading: boolean;\n defaultFormValuesLoading: boolean;\n formValues: {};\n initialValues: {};\n formResult: undefined;\n form: FormInstance<TVariables>;\n submit: (values?: TVariables) => Promise<TResponse>;\n};\n\nexport type UseStepsFormReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseStepsFormFromSFReturnType<TResponse, TVariables>;\n\nexport type UseStepsFormProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n> = UseFormPropsCore<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> &\n UseFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > &\n UseStepsFormConfig;\n\n/**\n * `useStepsForm` hook allows you to split your form under an Ant Design based {@link https://ant.design/components/steps/ Steps} component and provides you with a few useful functionalities that will help you manage your form.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/form/useStepsForm} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n *\n */\nexport const useStepsForm = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TData extends BaseRecord = TQueryFnData,\n TResponse extends BaseRecord = TData,\n TResponseError extends HttpError = TError,\n>(\n props: UseStepsFormProps<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n > = {},\n): UseStepsFormReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n> => {\n const useFormProps = useForm<\n TQueryFnData,\n TError,\n TVariables,\n TData,\n TResponse,\n TResponseError\n >({\n ...props,\n });\n const { form, formProps } = useFormProps;\n\n const stepsPropsSunflower = useStepsFormSF<TResponse, TVariables>({\n isBackValidate: false,\n form: form,\n submit: (values: any) => {\n formProps?.onFinish?.(values);\n },\n ...props,\n });\n\n return {\n ...useFormProps,\n ...stepsPropsSunflower,\n formLoading: useFormProps.formLoading,\n formProps: {\n ...stepsPropsSunflower.formProps,\n ...useFormProps.formProps,\n onValuesChange: formProps?.onValuesChange,\n onKeyUp: formProps?.onKeyUp,\n },\n saveButtonProps: {\n ...useFormProps.saveButtonProps,\n onClick: () => stepsPropsSunflower.submit(),\n },\n };\n};\n","import React, { Children, createElement, Fragment } from \"react\";\nimport { Grid, FormProps, Form, TablePaginationConfig, TableProps } from \"antd\";\nimport { useForm as useFormSF } from \"sunflower-antd\";\n\nimport { SorterResult } from \"antd/lib/table/interface\";\n\nimport {\n useLiveMode,\n BaseRecord,\n CrudFilters,\n HttpError,\n useTable as useTableCore,\n useTableProps as useTablePropsCore,\n useTableReturnType as useTableCoreReturnType,\n pickNotDeprecated,\n} from \"@refinedev/core\";\n\nimport {\n mapAntdSorterToCrudSorting,\n mapAntdFilterToCrudFilter,\n} from \"@definitions/table\";\nimport { PaginationLink } from \"./paginationLink\";\n\nexport type useTableProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useTableReturnType<\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n> = useTableCoreReturnType<TData, TError> & {\n searchFormProps: FormProps<TSearchVariables>;\n tableProps: TableProps<TData>;\n};\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n onSearch,\n initialCurrent,\n initialPageSize,\n hasPagination = true,\n pagination,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n syncWithLocation,\n resource,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useTableProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useTableReturnType<TData, TError, TSearchVariables> => {\n const {\n tableQueryResult,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n filters,\n setFilters,\n sorters,\n setSorters,\n sorter,\n setSorter,\n createLinkForSyncWithLocation,\n pageCount,\n overtime,\n } = useTableCore<TQueryFnData, TError, TData>({\n permanentSorter,\n permanentFilter,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n initialSorter,\n initialFilter,\n syncWithLocation,\n resource,\n defaultSetFilterBehavior,\n successNotification,\n errorNotification,\n queryOptions,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n const breakpoint = Grid.useBreakpoint();\n const [form] = Form.useForm<TSearchVariables>();\n const formSF = useFormSF<any, TSearchVariables>({\n form: form,\n });\n const liveMode = useLiveMode(liveModeFromProp);\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const preferredInitialFilters = pickNotDeprecated(\n filtersFromProp?.initial,\n initialFilter,\n );\n\n const { data, isFetched, isLoading } = tableQueryResult;\n\n const onChange = (\n paginationState: TablePaginationConfig,\n tableFilters: Record<\n string,\n (string | number | boolean) | (string | number | boolean)[] | null\n >,\n sorter: SorterResult<any> | SorterResult<any>[],\n ) => {\n if (tableFilters && Object.keys(tableFilters).length > 0) {\n // Map Antd:Filter -> refine:CrudFilter\n const crudFilters = mapAntdFilterToCrudFilter(\n tableFilters,\n filters,\n preferredInitialFilters,\n );\n setFilters(crudFilters);\n }\n\n if (sorter && Object.keys(sorter).length > 0) {\n // Map Antd:Sorter -> refine:CrudSorting\n const crudSorting = mapAntdSorterToCrudSorting(sorter);\n setSorters(crudSorting);\n }\n\n if (isPaginationEnabled) {\n setCurrent?.(paginationState.current || 1);\n setPageSize?.(paginationState.pageSize || 10);\n }\n };\n\n const onFinish = async (value: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(value);\n setFilters(searchFilters);\n\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n }\n };\n\n const antdPagination = (): false | TablePaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n position: !breakpoint.sm ? [\"bottomCenter\"] : [\"bottomRight\"],\n total: data?.total,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n ...formSF.formProps,\n onFinish,\n },\n tableProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n onChange,\n pagination: antdPagination(),\n scroll: { x: true },\n },\n tableQueryResult,\n sorters,\n sorter,\n filters,\n setSorters,\n setSorter,\n setFilters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import {\n CrudFilters,\n CrudOperators,\n CrudSorting,\n CrudFilter,\n getDefaultFilter as getDefaultFilterCore,\n getDefaultSortOrder as getDefaultSortOrderCore,\n ConditionalFilter,\n LogicalFilter,\n} from \"@refinedev/core\";\nimport { SortOrder, SorterResult } from \"antd/lib/table/interface\";\n\nexport const getDefaultSortOrder = (\n columnName: string,\n sorter?: CrudSorting,\n): SortOrder | undefined => {\n const sort = getDefaultSortOrderCore(columnName, sorter);\n\n if (sort) {\n return `${sort}end`;\n }\n\n return undefined;\n};\n\n/**\n * @deprecated getDefaultFilter moved to `@refinedev/core`. Use from `@refinedev/core`\n */\nexport const getDefaultFilter = (\n columnName: string,\n filters?: CrudFilters,\n operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n return getDefaultFilterCore(columnName, filters, operatorType);\n};\n\nexport const mapAntdSorterToCrudSorting = (\n sorter: SorterResult<any> | SorterResult<any>[],\n): CrudSorting => {\n const crudSorting: CrudSorting = [];\n if (Array.isArray(sorter)) {\n sorter\n .sort((a, b) => {\n return ((a.column?.sorter as { multiple?: number }).multiple ?? 0) <\n ((b.column?.sorter as { multiple?: number }).multiple ?? 0)\n ? -1\n : 0;\n })\n .map((item) => {\n if (item.field && item.order) {\n const field = Array.isArray(item.field)\n ? item.field.join(\".\")\n : `${item.field}`;\n\n crudSorting.push({\n field: `${item.columnKey ?? field}`,\n order: item.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n });\n } else {\n if (sorter.field && sorter.order) {\n const field = Array.isArray(sorter.field)\n ? sorter.field.join(\".\")\n : `${sorter.field}`;\n\n crudSorting.push({\n field: `${sorter.columnKey ?? field}`,\n order: sorter.order.replace(\"end\", \"\") as \"asc\" | \"desc\",\n });\n }\n }\n\n return crudSorting;\n};\n\nexport const mapAntdFilterToCrudFilter = (\n tableFilters: Record<\n string,\n (string | number | boolean) | (string | number | boolean)[] | null\n >,\n prevFilters: CrudFilters,\n initialFilters?: CrudFilters,\n): CrudFilters => {\n const crudFilters: CrudFilters = [];\n const mapInitialFilter: Record<string, CrudFilter> = (\n initialFilters ?? []\n ).reduce((acc, item) => {\n const field =\n (item as ConditionalFilter).key || (item as LogicalFilter).field;\n return { ...acc, [field]: item };\n }, {});\n\n Object.keys(tableFilters).map((field) => {\n const value = tableFilters[field];\n const operator =\n prevFilters\n .filter((i) => i.operator !== \"or\")\n .find((p: any) => p.field === field)?.operator ||\n mapInitialFilter[field]?.operator;\n\n if (operator !== \"or\" && operator !== \"and\") {\n crudFilters.push({\n field,\n operator: operator ?? (Array.isArray(value) ? \"in\" : \"eq\"),\n value,\n });\n }\n });\n\n return crudFilters;\n};\n","import { useLink, useRouterContext, useRouterType } from \"@refinedev/core\";\nimport React, { ReactNode } from \"react\";\n\ninterface PaginationLinkProps {\n to: string;\n element: ReactNode;\n}\n\nexport const PaginationLink = ({ to, element }: PaginationLinkProps) => {\n const { Link: LegacyLink } = useRouterContext();\n const routerType = useRouterType();\n const Link = useLink();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n e.preventDefault();\n }}\n >\n {element}\n </ActiveLink>\n );\n};\n","import { useTable } from \"@hooks\";\nimport { BaseKey, BaseRecord, HttpError, UseFormProps } from \"@refinedev/core\";\nimport { ButtonProps } from \"antd\";\n\nimport { useTableProps, useTableReturnType } from \"../useTable\";\nimport { UseFormReturnType, useForm } from \"../../form/useForm\";\n\nexport type useEditableTableReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = useTableReturnType<TData, TError, TSearchVariables> &\n UseFormReturnType<TQueryFnData, TError, TVariables> & {\n saveButtonProps: ButtonProps & {\n onClick: () => void;\n };\n cancelButtonProps: ButtonProps & {\n onClick: () => void;\n };\n editButtonProps: (id: BaseKey) => ButtonProps & {\n onClick: () => void;\n };\n isEditing: (id: BaseKey) => boolean;\n };\n\ntype useEditableTableProps<\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<\n useTableProps<TQueryFnData, TError, TSearchVariables, TData>,\n \"successNotification\" | \"errorNotification\"\n> &\n UseFormProps<TQueryFnData, TError, TVariables> & {\n /**\n * When true, row will be closed after successful submit.\n */\n autoSubmitClose?: boolean;\n };\n\n/**\n * `useEditeableTable` allows you to implement edit feature on the table with ease,\n * on top of all the features that {@link https://refine.dev/docs/api-reference/core/hooks/useTable/ `useTable`} provides.\n * `useEditableTable` return properties that can be used on Ant Design's {@link https://ant.design/components/table/ `<Table>`}\n * and {@link https://ant.design/components/form/ `<Form>`} components.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/table/useTable/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params\n * @typeParam TSearchVariables - Values for search params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\nexport const useEditableTable = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = {},\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n autoSubmitClose = true,\n ...props\n}: useEditableTableProps<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> = {}): useEditableTableReturnType<\n TQueryFnData,\n TError,\n TVariables,\n TSearchVariables,\n TData\n> => {\n const table = useTable<TQueryFnData, TError, TSearchVariables, TData>({\n ...props,\n successNotification: undefined,\n errorNotification: undefined,\n });\n const edit = useForm<TQueryFnData, TError, TVariables>({\n ...props,\n action: \"edit\",\n redirect: false,\n });\n\n const { id: editId, setId, saveButtonProps } = edit;\n\n const cancelButtonProps = {\n onClick: () => {\n setId(undefined);\n },\n };\n\n const editButtonProps = (id: BaseKey) => {\n return {\n onClick: () => setId(id),\n };\n };\n\n const isEditing = (id: BaseKey) => id === editId;\n\n return {\n ...table,\n ...edit,\n formProps: {\n ...edit.formProps,\n onFinish: async (values) => {\n const result = await edit.onFinish(values);\n if (autoSubmitClose) {\n setId(undefined);\n }\n return result;\n },\n },\n saveButtonProps,\n cancelButtonProps,\n editButtonProps,\n isEditing,\n };\n};\n","import { SelectProps } from \"antd/lib/select\";\nimport { QueryObserverResult } from \"@tanstack/react-query\";\n\nimport {\n useSelect as useSelectCore,\n BaseRecord,\n GetManyResponse,\n GetListResponse,\n HttpError,\n UseSelectProps,\n BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseSelectReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n selectProps: SelectProps<TOption>;\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n defaultValueQueryResult: QueryObserverResult<GetManyResponse<TData>>;\n};\n\n/**\n * `useSelect` hook allows you to manage an Ant Design {@link https://ant.design/components/select/ Select} component when records in a resource needs to be used as select options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useSelect/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>(\n props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TOption> => {\n const { queryResult, defaultValueQueryResult, onSearch, options } =\n useSelectCore<TQueryFnData, TError, TData, TOption>(props);\n\n return {\n selectProps: {\n options,\n onSearch,\n loading: defaultValueQueryResult.isFetching,\n showSearch: true,\n filterOption: false,\n },\n queryResult,\n defaultValueQueryResult,\n };\n};\n","import { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Checkbox } from \"antd\";\n\nimport {\n BaseRecord,\n GetListResponse,\n HttpError,\n UseSelectProps,\n useSelect,\n BaseKey,\n pickNotDeprecated,\n BaseOption,\n} from \"@refinedev/core\";\n\nexport type UseCheckboxGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n checkboxGroupProps: Omit<\n React.ComponentProps<typeof Checkbox.Group>,\n \"options\"\n > & {\n options: TOption[];\n };\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseCheckboxGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey[];\n};\n\n/**\n * `useCheckboxGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/checkbox/#components-checkbox-demo-group Checkbox.Group} component when records in a resource needs to be used as checkbox options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useCheckboxGroup/} for more details\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useCheckboxGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseCheckboxGroupProps<\n TQueryFnData,\n TError,\n TData\n>): UseCheckboxGroupReturnType<TData, TOption> => {\n const { queryResult, options } = useSelect<\n TQueryFnData,\n TError,\n TData,\n TOption\n >({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n return {\n checkboxGroupProps: {\n options,\n defaultValue,\n },\n queryResult,\n };\n};\n","import { QueryObserverResult } from \"@tanstack/react-query\";\nimport type { Radio } from \"antd\";\n\nimport {\n BaseKey,\n BaseOption,\n BaseRecord,\n GetListResponse,\n HttpError,\n pickNotDeprecated,\n useSelect,\n UseSelectProps,\n} from \"@refinedev/core\";\n\nexport type UseRadioGroupReturnType<\n TData extends BaseRecord = BaseRecord,\n TOption extends BaseOption = BaseOption,\n> = {\n radioGroupProps: Omit<React.ComponentProps<typeof Radio.Group>, \"options\"> & {\n options: TOption[];\n };\n queryResult: QueryObserverResult<GetListResponse<TData>>;\n};\n\ntype UseRadioGroupProps<TQueryFnData, TError, TData> = Omit<\n UseSelectProps<TQueryFnData, TError, TData>,\n \"defaultValue\"\n> & {\n /**\n * Sets the default value\n */\n defaultValue?: BaseKey;\n};\n\n/**\n * `useRadioGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/radio/#components-radio-demo-radiogroup-with-name Radio.Group} component when records in a resource needs to be used as radio options.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/field/useRadioGroup/} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useRadioGroup = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TData extends BaseRecord = TQueryFnData,\n TOption extends BaseOption = BaseOption,\n>({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: UseRadioGroupProps<TQueryFnData, TError, TData>): UseRadioGroupReturnType<\n TData,\n TOption\n> => {\n const { queryResult, options } = useSelect<\n TQueryFnData,\n TError,\n TData,\n TOption\n >({\n resource,\n sort,\n sorters,\n filters,\n optionLabel,\n optionValue,\n queryOptions,\n fetchSize,\n pagination,\n liveMode,\n defaultValue,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n });\n\n return {\n radioGroupProps: {\n options,\n defaultValue,\n },\n queryResult,\n };\n};\n","import React from \"react\";\nimport { ButtonProps, notification, UploadProps, Progress } from \"antd\";\nimport {\n useTranslate,\n useResource,\n BaseRecord,\n HttpError,\n useImport as useImportCore,\n UseImportReturnType,\n ImportOptions,\n pickNotDeprecated,\n} from \"@refinedev/core\";\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n TItem = any,\n TData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TVariables = any,\n>({\n resource: resourceFromProp,\n resourceName,\n mapData = (item) => item as unknown as TVariables,\n paparseOptions,\n batchSize = Number.MAX_SAFE_INTEGER,\n onFinish,\n meta,\n metaData,\n dataProviderName,\n onProgress: onProgressFromProp,\n}: ImportOptions<TItem, TVariables, TData> = {}): Omit<\n UseImportReturnType<TData, TVariables, TError>,\n \"handleChange\" | \"inputProps\"\n> & {\n uploadProps: UploadProps;\n buttonProps: ButtonProps;\n} => {\n const t = useTranslate();\n\n const { resource } = useResource(resourceFromProp ?? resourceName);\n\n const { mutationResult, isLoading, handleChange } = useImportCore<\n TItem,\n TData,\n TError,\n TVariables\n >({\n resource: resource?.identifier ?? resource?.name,\n mapData,\n paparseOptions,\n batchSize,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n onFinish,\n onProgress:\n onProgressFromProp ??\n (({ totalAmount, processedAmount }) => {\n if (totalAmount > 0 && processedAmount > 0) {\n const description = (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={Math.floor((processedAmount / totalAmount) * 100)}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>\n {t(\n \"notifications.importProgress\",\n {\n processed: processedAmount,\n total: totalAmount,\n },\n `Importing: ${processedAmount}/${totalAmount}`,\n )}\n </span>\n </div>\n );\n\n notification.open({\n description,\n message: null,\n key: `${resource}-import`,\n duration: 0,\n });\n\n if (processedAmount >= totalAmount) {\n }\n\n if (processedAmount === totalAmount) {\n setTimeout(() => {\n notification.destroy(`${resource}-import`);\n }, 4500);\n }\n }\n }),\n });\n\n return {\n uploadProps: {\n onChange: handleChange,\n beforeUpload: () => false,\n showUploadList: false,\n accept: \".csv\",\n },\n buttonProps: {\n type: \"default\",\n loading: isLoading,\n },\n mutationResult,\n isLoading,\n };\n};\n","import { Children, createElement, Fragment } from \"react\";\nimport { ListProps, FormProps, Form, Grid } from \"antd\";\n\nimport {\n BaseRecord,\n CrudFilters,\n HttpError,\n useTable as useTableCore,\n useTableProps as useTablePropsCore,\n useTableReturnType,\n pickNotDeprecated,\n} from \"@refinedev/core\";\nimport { useLiveMode } from \"@refinedev/core\";\nimport { PaginationLink } from \"@hooks/table/useTable/paginationLink\";\nimport { PaginationConfig } from \"antd/lib/pagination\";\n\nexport type useSimpleListProps<TQueryFnData, TError, TSearchVariables, TData> =\n useTablePropsCore<TQueryFnData, TError, TData> & {\n onSearch?: (data: TSearchVariables) => CrudFilters | Promise<CrudFilters>;\n };\n\nexport type useSimpleListReturnType<\n TQueryFnData extends BaseRecord = BaseRecord,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n> = Omit<useTableReturnType<TData>, \"tableQueryResult\"> & {\n listProps: ListProps<TData>;\n queryResult: useTableReturnType[\"tableQueryResult\"];\n searchFormProps: FormProps<TSearchVariables>;\n};\n\n/**\n * By using `useSimpleList` you get props for your records from API in accordance with Ant Design {@link https://ant.design/components/list/ `<List>`} component.\n * All features such as pagination, sorting come out of the box.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/hooks/list/useSimpleList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TSearchVariables - Antd form values\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSimpleList = <\n TQueryFnData extends BaseRecord = BaseRecord,\n TError extends HttpError = HttpError,\n TSearchVariables = unknown,\n TData extends BaseRecord = TQueryFnData,\n>({\n resource,\n initialCurrent,\n initialPageSize,\n pagination,\n hasPagination = true,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n defaultSetFilterBehavior,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n onSearch,\n queryOptions,\n syncWithLocation,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta,\n metaData,\n dataProviderName,\n}: useSimpleListProps<\n TQueryFnData,\n TError,\n TSearchVariables,\n TData\n> = {}): useSimpleListReturnType<TData, TSearchVariables> => {\n const {\n sorters,\n sorter,\n filters,\n current,\n pageSize,\n pageCount,\n setFilters,\n setCurrent,\n setPageSize,\n setSorter,\n setSorters,\n createLinkForSyncWithLocation,\n tableQueryResult: queryResult,\n overtime,\n } = useTableCore({\n resource,\n initialSorter,\n permanentSorter,\n initialFilter,\n permanentFilter,\n filters: filtersFromProp,\n sorters: sortersFromProp,\n defaultSetFilterBehavior,\n initialCurrent,\n initialPageSize,\n queryOptions,\n successNotification,\n errorNotification,\n liveMode: liveModeFromProp,\n onLiveEvent,\n liveParams,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n syncWithLocation,\n dataProviderName,\n pagination,\n hasPagination,\n });\n\n const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n const isPaginationEnabled =\n (pagination?.mode ?? hasPaginationString) !== \"off\";\n\n const breakpoint = Grid.useBreakpoint();\n\n const liveMode = useLiveMode(liveModeFromProp);\n\n const [form] = Form.useForm<TSearchVariables>();\n\n const { data, isFetched, isLoading } = queryResult;\n\n const onChange = (page: number, pageSize?: number): void => {\n if (isPaginationEnabled) {\n setCurrent(page);\n setPageSize(pageSize || 10);\n }\n };\n\n const onFinish = async (values: TSearchVariables) => {\n if (onSearch) {\n const searchFilters = await onSearch(values);\n if (isPaginationEnabled) {\n setCurrent?.(1);\n }\n return setFilters(searchFilters);\n }\n };\n\n const antdPagination = (): false | PaginationConfig => {\n if (isPaginationEnabled) {\n return {\n itemRender: (page, type, element) => {\n const link = createLinkForSyncWithLocation({\n pagination: {\n pageSize,\n current: page,\n },\n sorters,\n filters,\n });\n\n if (type === \"page\") {\n return createElement(PaginationLink, {\n to: link,\n element: `${page}`,\n });\n }\n if (type === \"next\" || type === \"prev\") {\n return createElement(PaginationLink, {\n to: link,\n element: element,\n });\n }\n\n if (type === \"jump-next\" || type === \"jump-prev\") {\n const elementChildren = (element as React.ReactElement)?.props\n ?.children;\n\n return createElement(PaginationLink, {\n to: link,\n element:\n Children.count(elementChildren) > 1\n ? createElement(Fragment, {}, elementChildren)\n : elementChildren,\n });\n }\n\n return element;\n },\n pageSize,\n current,\n simple: !breakpoint.sm,\n total: data?.total,\n onChange,\n };\n }\n\n return false;\n };\n\n return {\n searchFormProps: {\n form,\n onFinish,\n },\n listProps: {\n dataSource: data?.data,\n loading: liveMode === \"auto\" ? isLoading : !isFetched,\n pagination: antdPagination(),\n },\n queryResult,\n filters,\n setFilters,\n sorter,\n setSorter,\n sorters,\n setSorters,\n current,\n setCurrent,\n pageSize,\n setPageSize,\n pageCount,\n createLinkForSyncWithLocation,\n overtime,\n };\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { UploadChangeParam } from \"antd/lib/upload\";\n\nexport type UseFileUploadStateType = () => {\n isLoading: boolean;\n onChange: (info: UploadChangeParam) => void;\n};\n\nexport const useFileUploadState: UseFileUploadStateType = () => {\n const [isLoading, setIsloading] = useState(false);\n\n const onChange = useCallback((info: UploadChangeParam) => {\n const fileListLoadings = mapStatusToLoading(info.fileList);\n\n if (fileListLoadings.includes(true)) {\n setIsloading(true);\n } else {\n setIsloading(false);\n }\n }, []);\n\n return useMemo(() => ({ isLoading, onChange }), [isLoading]);\n};\n\nconst mapStatusToLoading = (files: UploadChangeParam[\"fileList\"]) => {\n return files.map((file) => {\n switch (file.status) {\n case \"uploading\":\n return true;\n default:\n return false;\n }\n });\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\n\nexport type UseSiderVisibleType = {\n siderVisible: boolean;\n drawerSiderVisible: boolean;\n setSiderVisible: (visible: boolean) => void;\n setDrawerSiderVisible: (visible: boolean) => void;\n};\n\n/**\n * @deprecated Please use `useThemedLayoutContext` instead.\n */\nexport const useSiderVisible = (): UseSiderVisibleType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n siderVisible: mobileSiderOpen,\n setSiderVisible: setMobileSiderOpen,\n drawerSiderVisible: siderCollapsed,\n setDrawerSiderVisible: setSiderCollapsed,\n };\n};\n","import React, { ReactNode, useState } from \"react\";\n\nimport { IThemedLayoutContext } from \"./IThemedLayoutContext\";\n\nexport const ThemedLayoutContext = React.createContext<IThemedLayoutContext>({\n siderCollapsed: false,\n mobileSiderOpen: false,\n setSiderCollapsed: () => undefined,\n setMobileSiderOpen: () => undefined,\n});\n\nexport const ThemedLayoutContextProvider: React.FC<{\n children: ReactNode;\n initialSiderCollapsed?: boolean;\n}> = ({ children, initialSiderCollapsed }) => {\n const [siderCollapsed, setSiderCollapsed] = useState(\n initialSiderCollapsed ?? false,\n );\n const [mobileSiderOpen, setMobileSiderOpen] = useState(false);\n\n return (\n <ThemedLayoutContext.Provider\n value={{\n siderCollapsed,\n mobileSiderOpen,\n setSiderCollapsed,\n setMobileSiderOpen,\n }}\n >\n {children}\n </ThemedLayoutContext.Provider>\n );\n};\n","import { useContext } from \"react\";\n\nimport { ThemedLayoutContext } from \"@contexts\";\nimport { IThemedLayoutContext } from \"@contexts/themedLayoutContext/IThemedLayoutContext\";\n\nexport type UseThemedLayoutContextType = IThemedLayoutContext;\n\nexport const useThemedLayoutContext = (): UseThemedLayoutContextType => {\n const {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n } = useContext(ThemedLayoutContext);\n\n return {\n mobileSiderOpen,\n siderCollapsed,\n setMobileSiderOpen,\n setSiderCollapsed,\n };\n};\n","import { NotificationProvider } from \"@refinedev/core\";\nimport { App, notification as staticNotification } from \"antd\";\nimport React from \"react\";\n\nimport { UndoableNotification } from \"@components/undoableNotification\";\n\n/**\n * @deprecated `notificationProvider` is deprecated due to not being compatible with theme changes in Ant Design. Please use `useNotificationProvider` export as your notification provider.\n * @see https://refine.dev/docs/api-reference/antd/theming/#usenotificationprovider-compatible-with-theme\n */\n\nexport const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n staticNotification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n staticNotification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n staticNotification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => staticNotification.destroy(key),\n};\n\nexport const useNotificationProvider = (): NotificationProvider => {\n const { notification: notificationFromContext } = App.useApp();\n const notification =\n \"open\" in notificationFromContext\n ? notificationFromContext\n : staticNotification;\n\n const notificationProvider: NotificationProvider = {\n open: ({\n key,\n message,\n description,\n type,\n cancelMutation,\n undoableTimeout,\n }) => {\n if (type === \"progress\") {\n notification.open({\n key,\n description: (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={() => {\n cancelMutation?.();\n notification.destroy(key ?? \"\");\n }}\n undoableTimeout={undoableTimeout}\n />\n ),\n message: null,\n duration: 0,\n closeIcon: <></>,\n });\n } else {\n notification.open({\n key,\n description: message,\n message: description ?? null,\n type,\n });\n }\n },\n close: (key) => notification.destroy(key),\n };\n\n return notificationProvider;\n};\n","import React from \"react\";\nimport { Button, Progress } from \"antd\";\nimport { OpenNotificationParams } from \"@refinedev/core\";\nimport { UndoOutlined } from \"@ant-design/icons\";\n\nexport type UndoableNotificationProps = {\n notificationKey: OpenNotificationParams[\"key\"];\n message: OpenNotificationParams[\"message\"];\n cancelMutation: OpenNotificationParams[\"cancelMutation\"];\n undoableTimeout: OpenNotificationParams[\"undoableTimeout\"];\n};\n\nexport const UndoableNotification: React.FC<UndoableNotificationProps> = ({\n message,\n cancelMutation,\n undoableTimeout,\n}) => (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"-7px\",\n }}\n >\n <Progress\n type=\"circle\"\n percent={(undoableTimeout ?? 0) * 20}\n format={(time) => time && time / 20}\n size={50}\n strokeColor=\"#1890ff\"\n status=\"normal\"\n />\n <span style={{ marginLeft: 8, width: \"100%\" }}>{message}</span>\n <Button\n style={{ flexShrink: 0 }}\n onClick={cancelMutation}\n disabled={undoableTimeout === 0}\n icon={<UndoOutlined />}\n />\n </div>\n);\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { Sider as DefaultSider } from \"./sider\";\nimport { Header as DefaultHeader } from \"./header\";\nimport { RefineLayoutLayoutProps } from \"./types\";\n\n/**\n * @deprecated use `<ThemedLayout>` instead with 100% backward compatibility.\n * @see https://refine.dev/docs/api-reference/antd/components/antd-themed-layout\n **/\nexport const Layout: React.FC<RefineLayoutLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, ConfigProvider, Drawer, Button } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { Title as DefaultTitle } from \"@components\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport { RefineLayoutSiderProps } from \"../types\";\n\nexport const Sider: React.FC<RefineLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? DefaultTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n style={{\n fontWeight: isSelected ? \"bold\" : \"normal\",\n }}\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item key=\"logout\" onClick={handleLogout} icon={<LogoutOutlined />}>\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n <Menu.Item\n key=\"dashboard\"\n style={{\n fontWeight: selectedKey === \"/\" ? \"bold\" : \"normal\",\n }}\n icon={<DashboardOutlined />}\n >\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n theme=\"dark\"\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <RenderToTitle collapsed={false} />\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n const renderContent = () => {\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed: boolean): void => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n >\n <RenderToTitle collapsed={collapsed} />\n {renderMenu()}\n </Layout.Sider>\n );\n };\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Menu: {\n colorItemBg: \"transparent\",\n colorItemText: \"#fff\",\n colorItemTextSelected: \"#fff\",\n colorItemBgSelected: \"transparent\",\n colorItemTextHover: \"#fff\",\n },\n },\n }}\n >\n {renderContent()}\n </ConfigProvider>\n );\n};\n","import { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport { Avatar, Layout as AntdLayout, Space, Typography } from \"antd\";\nimport React from \"react\";\nimport { RefineLayoutHeaderProps } from \"../types\";\n\nexport const Header: React.FC<RefineLayoutHeaderProps> = () => {\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n return shouldRenderHeader ? (\n <AntdLayout.Header\n style={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space style={{ marginLeft: \"8px\" }}>\n {user?.name && (\n <Typography.Text style={{ color: \"white\" }} strong>\n {user.name}\n </Typography.Text>\n )}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </AntdLayout.Header>\n ) : null;\n};\n","import React from \"react\";\nimport {\n TitleProps,\n useRouterContext,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\n\nexport const Title: React.FC<TitleProps> = ({ collapsed }) => {\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink to=\"/\">\n {collapsed ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine-mini.svg\"\n alt=\"Refine\"\n style={{\n margin: \"0 auto\",\n padding: \"12px 0\",\n maxHeight: \"65.5px\",\n }}\n />\n </div>\n ) : (\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine\"\n style={{\n width: \"200px\",\n padding: \"12px 24px\",\n }}\n />\n )}\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSider as DefaultSider } from \"./sider\";\nimport { ThemedHeader as DefaultHeader } from \"./header\";\nimport { RefineThemedLayoutProps } from \"./types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedLayout: React.FC<RefineThemedLayoutProps> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n\n return (\n <AntdLayout style={{ minHeight: \"100vh\" }}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n );\n};\n","import React, { useState } from \"react\";\nimport { Layout, Menu, Grid, Drawer, Button, theme } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport { RefineThemedLayoutSiderProps } from \"../types\";\nimport { ThemedTitle } from \"@components\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedSider: React.FC<RefineThemedLayoutSiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n}) => {\n const { token } = theme.useToken();\n\n const [collapsed, setCollapsed] = useState<boolean>(false);\n const [drawerOpen, setDrawerOpen] = useState<boolean>(false);\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitle;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n >\n <Link to={route ?? \"\"}>{label}</Link>\n {!collapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!collapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <>\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n marginTop: \"8px\",\n border: \"none\",\n }}\n onClick={() => {\n setDrawerOpen(false);\n if (!breakpoint.lg) {\n setCollapsed(true);\n }\n }}\n >\n {renderSider()}\n </Menu>\n </>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n overflow: \"hidden\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setDrawerOpen(true)}\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n return (\n <Layout.Sider\n style={{\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n collapsible\n collapsed={collapsed}\n onCollapse={(collapsed) => setCollapsed(collapsed)}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {collapsed ? (\n <RightOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n ) : (\n <LeftOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n )}\n </Button>\n }\n >\n <div\n style={{\n width: collapsed ? \"80px\" : \"200px\",\n padding: collapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={collapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n );\n};\n","import { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport { useActiveAuthProvider, useGetIdentity } from \"@refinedev/core\";\nimport { RefineThemedLayoutHeaderProps } from \"../types\";\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedHeader: React.FC<RefineThemedLayoutHeaderProps> = () => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n return (\n <AntdLayout.Header\n style={{\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n }}\n >\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport { useRouterContext, useRouterType, useLink } from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport { RefineLayoutThemedTitleProps } from \"../types\";\n\nconst defaultText = \"Refine Project\";\n\nconst defaultIcon = (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"refine-logo\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\n/**\n * @deprecated It is recommended to use the improved `ThemedLayoutV2`. Review migration guidelines. https://refine.dev/docs/api-reference/antd/components/antd-themed-layout/#migrate-themedlayout-to-themedlayoutv2\n */\nexport const ThemedTitle: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon = defaultIcon,\n text = defaultText,\n wrapperStyles,\n}) => {\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { Grid, Layout as AntdLayout } from \"antd\";\n\nimport { ThemedSiderV2 as DefaultSider } from \"./sider\";\nimport { ThemedHeaderV2 as DefaultHeader } from \"./header\";\nimport { RefineThemedLayoutV2Props } from \"./types\";\nimport { ThemedLayoutContextProvider } from \"@contexts\";\n\nexport const ThemedLayoutV2: React.FC<RefineThemedLayoutV2Props> = ({\n children,\n Header,\n Sider,\n Title,\n Footer,\n OffLayoutArea,\n initialSiderCollapsed,\n}) => {\n const breakpoint = Grid.useBreakpoint();\n const SiderToRender = Sider ?? DefaultSider;\n const HeaderToRender = Header ?? DefaultHeader;\n const isSmall = typeof breakpoint.sm === \"undefined\" ? true : breakpoint.sm;\n const hasSider = !!SiderToRender({ Title });\n\n return (\n <ThemedLayoutContextProvider initialSiderCollapsed={initialSiderCollapsed}>\n <AntdLayout style={{ minHeight: \"100vh\" }} hasSider={hasSider}>\n <SiderToRender Title={Title} />\n <AntdLayout>\n <HeaderToRender />\n <AntdLayout.Content>\n <div\n style={{\n minHeight: 360,\n padding: isSmall ? 24 : 12,\n }}\n >\n {children}\n </div>\n {OffLayoutArea && <OffLayoutArea />}\n </AntdLayout.Content>\n {Footer && <Footer />}\n </AntdLayout>\n </AntdLayout>\n </ThemedLayoutContextProvider>\n );\n};\n","import React from \"react\";\nimport { Layout, Menu, Grid, Drawer, Button, theme } from \"antd\";\nimport {\n DashboardOutlined,\n LogoutOutlined,\n UnorderedListOutlined,\n BarsOutlined,\n LeftOutlined,\n RightOutlined,\n} from \"@ant-design/icons\";\nimport {\n useTranslate,\n useLogout,\n useTitle,\n CanAccess,\n ITreeMenu,\n useIsExistAuthentication,\n useRouterContext,\n useMenu,\n useRefineContext,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n pickNotDeprecated,\n useWarnAboutChange,\n} from \"@refinedev/core\";\n\nimport { drawerButtonStyles } from \"./styles\";\nimport { RefineThemedLayoutV2SiderProps } from \"../types\";\nimport { ThemedTitleV2 } from \"@components\";\nimport { useThemedLayoutContext } from \"@hooks\";\n\nexport const ThemedSiderV2: React.FC<RefineThemedLayoutV2SiderProps> = ({\n Title: TitleFromProps,\n render,\n meta,\n fixed,\n activeItemDisabled = false,\n}) => {\n const { token } = theme.useToken();\n const {\n siderCollapsed,\n setSiderCollapsed,\n mobileSiderOpen,\n setMobileSiderOpen,\n } = useThemedLayoutContext();\n\n const isExistAuthentication = useIsExistAuthentication();\n const routerType = useRouterType();\n const NewLink = useLink();\n const { warnWhen, setWarnWhen } = useWarnAboutChange();\n const { Link: LegacyLink } = useRouterContext();\n const Link = routerType === \"legacy\" ? LegacyLink : NewLink;\n const TitleFromContext = useTitle();\n const translate = useTranslate();\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta });\n const breakpoint = Grid.useBreakpoint();\n const { hasDashboard } = useRefineContext();\n const authProvider = useActiveAuthProvider();\n const { mutate: mutateLogout } = useLogout({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const isMobile =\n typeof breakpoint.lg === \"undefined\" ? false : !breakpoint.lg;\n\n const RenderToTitle = TitleFromProps ?? TitleFromContext ?? ThemedTitleV2;\n\n const renderTreeView = (tree: ITreeMenu[], selectedKey?: string) => {\n return tree.map((item: ITreeMenu) => {\n const {\n icon,\n label,\n route,\n key,\n name,\n children,\n parentName,\n meta,\n options,\n } = item;\n\n if (children.length > 0) {\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.SubMenu\n key={item.key}\n icon={icon ?? <UnorderedListOutlined />}\n title={label}\n >\n {renderTreeView(children, selectedKey)}\n </Menu.SubMenu>\n </CanAccess>\n );\n }\n const isSelected = key === selectedKey;\n const isRoute = !(\n pickNotDeprecated(meta?.parent, options?.parent, parentName) !==\n undefined && children.length === 0\n );\n\n const linkStyle: React.CSSProperties =\n activeItemDisabled && isSelected ? { pointerEvents: \"none\" } : {};\n\n return (\n <CanAccess\n key={item.key}\n resource={name.toLowerCase()}\n action=\"list\"\n params={{\n resource: item,\n }}\n >\n <Menu.Item\n key={item.key}\n icon={icon ?? (isRoute && <UnorderedListOutlined />)}\n style={linkStyle}\n >\n <Link to={route ?? \"\"} style={linkStyle}>\n {label}\n </Link>\n {!siderCollapsed && isSelected && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n </CanAccess>\n );\n });\n };\n\n const handleLogout = () => {\n if (warnWhen) {\n const confirm = window.confirm(\n translate(\n \"warnWhenUnsavedChanges\",\n \"Are you sure you want to leave? You have unsaved changes.\",\n ),\n );\n\n if (confirm) {\n setWarnWhen(false);\n mutateLogout();\n }\n } else {\n mutateLogout();\n }\n };\n\n const logout = isExistAuthentication && (\n <Menu.Item\n key=\"logout\"\n onClick={() => handleLogout()}\n icon={<LogoutOutlined />}\n >\n {translate(\"buttons.logout\", \"Logout\")}\n </Menu.Item>\n );\n\n const dashboard = hasDashboard ? (\n <Menu.Item key=\"dashboard\" icon={<DashboardOutlined />}>\n <Link to=\"/\">{translate(\"dashboard.title\", \"Dashboard\")}</Link>\n {!siderCollapsed && selectedKey === \"/\" && (\n <div className=\"ant-menu-tree-arrow\" />\n )}\n </Menu.Item>\n ) : null;\n\n const items = renderTreeView(menuItems, selectedKey);\n\n const renderSider = () => {\n if (render) {\n return render({\n dashboard,\n items,\n logout,\n collapsed: siderCollapsed,\n });\n }\n return (\n <>\n {dashboard}\n {items}\n {logout}\n </>\n );\n };\n\n const renderMenu = () => {\n return (\n <Menu\n selectedKeys={selectedKey ? [selectedKey] : []}\n defaultOpenKeys={defaultOpenKeys}\n mode=\"inline\"\n style={{\n paddingTop: \"8px\",\n border: \"none\",\n overflow: \"auto\",\n height: \"calc(100% - 72px)\",\n }}\n onClick={() => {\n setMobileSiderOpen(false);\n }}\n >\n {renderSider()}\n </Menu>\n );\n };\n\n const renderDrawerSider = () => {\n return (\n <>\n <Drawer\n open={mobileSiderOpen}\n onClose={() => setMobileSiderOpen(false)}\n placement=\"left\"\n closable={false}\n width={200}\n bodyStyle={{\n padding: 0,\n }}\n maskClosable={true}\n >\n <Layout>\n <Layout.Sider\n style={{\n height: \"100vh\",\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n }}\n >\n <div\n style={{\n width: \"200px\",\n padding: \"0 16px\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n <RenderToTitle collapsed={false} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </Layout>\n </Drawer>\n <Button\n style={drawerButtonStyles}\n size=\"large\"\n onClick={() => setMobileSiderOpen(true)}\n icon={<BarsOutlined />}\n />\n </>\n );\n };\n\n if (isMobile) {\n return renderDrawerSider();\n }\n\n const siderStyles: React.CSSProperties = {\n backgroundColor: token.colorBgContainer,\n borderRight: `1px solid ${token.colorBgElevated}`,\n };\n\n if (fixed) {\n siderStyles.position = \"fixed\";\n siderStyles.top = 0;\n siderStyles.height = \"100vh\";\n siderStyles.zIndex = 999;\n }\n\n return (\n <>\n {fixed && (\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n transition: \"all 0.2s\",\n }}\n />\n )}\n <Layout.Sider\n style={siderStyles}\n collapsible\n collapsed={siderCollapsed}\n onCollapse={(collapsed, type) => {\n if (type === \"clickTrigger\") {\n setSiderCollapsed(collapsed);\n }\n }}\n collapsedWidth={80}\n breakpoint=\"lg\"\n trigger={\n <Button\n type=\"text\"\n style={{\n borderRadius: 0,\n height: \"100%\",\n width: \"100%\",\n backgroundColor: token.colorBgElevated,\n }}\n >\n {siderCollapsed ? (\n <RightOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n ) : (\n <LeftOutlined\n style={{\n color: token.colorPrimary,\n }}\n />\n )}\n </Button>\n }\n >\n <div\n style={{\n width: siderCollapsed ? \"80px\" : \"200px\",\n padding: siderCollapsed ? \"0\" : \"0 16px\",\n display: \"flex\",\n justifyContent: siderCollapsed ? \"center\" : \"flex-start\",\n alignItems: \"center\",\n height: \"64px\",\n backgroundColor: token.colorBgElevated,\n fontSize: \"14px\",\n }}\n >\n <RenderToTitle collapsed={siderCollapsed} />\n </div>\n {renderMenu()}\n </Layout.Sider>\n </>\n );\n};\n","import { CSSProperties } from \"react\";\n\nexport const drawerButtonStyles: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n position: \"fixed\",\n top: 64,\n zIndex: 999,\n};\n","import React from \"react\";\nimport { Layout as AntdLayout, Typography, Avatar, Space, theme } from \"antd\";\nimport {\n pickNotDeprecated,\n useActiveAuthProvider,\n useGetIdentity,\n} from \"@refinedev/core\";\nimport { RefineThemedLayoutV2HeaderProps } from \"../types\";\n\nexport const ThemedHeaderV2: React.FC<RefineThemedLayoutV2HeaderProps> = ({\n isSticky,\n sticky,\n}) => {\n const { token } = theme.useToken();\n\n const authProvider = useActiveAuthProvider();\n const { data: user } = useGetIdentity({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const shouldRenderHeader = user && (user.name || user.avatar);\n\n if (!shouldRenderHeader) {\n return null;\n }\n\n const headerStyles: React.CSSProperties = {\n backgroundColor: token.colorBgElevated,\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n padding: \"0px 24px\",\n height: \"64px\",\n };\n\n if (pickNotDeprecated(sticky, isSticky)) {\n headerStyles.position = \"sticky\";\n headerStyles.top = 0;\n headerStyles.zIndex = 1;\n }\n\n return (\n <AntdLayout.Header style={headerStyles}>\n <Space>\n <Space size=\"middle\">\n {user?.name && <Typography.Text strong>{user.name}</Typography.Text>}\n {user?.avatar && <Avatar src={user?.avatar} alt={user?.name} />}\n </Space>\n </Space>\n </AntdLayout.Header>\n );\n};\n","import React from \"react\";\nimport { useRouterContext, useRouterType, useLink } from \"@refinedev/core\";\nimport { Typography, theme, Space } from \"antd\";\nimport { RefineLayoutThemedTitleProps } from \"../types\";\n\nconst defaultText = \"Refine Project\";\n\nconst defaultIcon = (\n <svg\n width={24}\n height={24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-testid=\"refine-logo\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport const ThemedTitleV2: React.FC<RefineLayoutThemedTitleProps> = ({\n collapsed,\n icon = defaultIcon,\n text = defaultText,\n wrapperStyles,\n}) => {\n const { token } = theme.useToken();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n return (\n <ActiveLink\n to=\"/\"\n style={{\n display: \"inline-block\",\n textDecoration: \"none\",\n }}\n >\n <Space\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"inherit\",\n ...wrapperStyles,\n }}\n >\n <div\n style={{\n height: \"24px\",\n width: \"24px\",\n color: token.colorPrimary,\n }}\n >\n {icon}\n </div>\n\n {!collapsed && (\n <Typography.Title\n style={{\n fontSize: \"inherit\",\n marginBottom: 0,\n fontWeight: 700,\n }}\n >\n {text}\n </Typography.Title>\n )}\n </Space>\n </ActiveLink>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport {\n useNavigation,\n useTranslate,\n useCan,\n useResource,\n useRouterContext,\n useRouterType,\n useLink,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { CreateButtonProps } from \"../types\";\n\n/**\n * <CreateButton> uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#create `create`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful to redirect the app to the create page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/create-button} for more details.\n */\nexport const CreateButton: React.FC<CreateButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const { createUrl: generateCreateUrl } = useNavigation();\n\n const { resource } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"create\",\n queryOptions: {\n enabled: accessControlEnabled,\n },\n params: {\n resource,\n },\n });\n\n const createButtonDisabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const createUrl = resource ? generateCreateUrl(resource, meta) : \"\";\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <ActiveLink\n to={createUrl}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (data?.can === false) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n icon={<PlusSquareOutlined />}\n disabled={data?.can === false}\n title={createButtonDisabledTitle()}\n data-testid={RefineButtonTestIds.CreateButton}\n className={RefineButtonClassNames.CreateButton}\n type=\"primary\"\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.create\", \"Create\"))}\n </Button>\n </ActiveLink>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { EditOutlined } from \"@ant-design/icons\";\nimport {\n useCan,\n useNavigation,\n useTranslate,\n useResource,\n useRouterContext,\n useRouterType,\n useLink,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { EditButtonProps } from \"../types\";\n\n/**\n * `<EditButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#edit `edit`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the edit page with the record id route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/edit-button} for more details.\n */\nexport const EditButton: React.FC<EditButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const translate = useTranslate();\n\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const { editUrl: generateEditUrl } = useNavigation();\n\n const { id, resource } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"edit\",\n params: { id: recordItemId ?? id, resource },\n queryOptions: {\n enabled: accessControlEnabled,\n },\n });\n\n const createButtonDisabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const editUrl =\n resource && (recordItemId ?? id)\n ? generateEditUrl(resource, recordItemId! ?? id!, meta)\n : \"\";\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <ActiveLink\n to={editUrl}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (data?.can === false) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n icon={<EditOutlined />}\n disabled={data?.can === false}\n title={createButtonDisabledTitle()}\n data-testid={RefineButtonTestIds.EditButton}\n className={RefineButtonClassNames.EditButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.edit\", \"Edit\"))}\n </Button>\n </ActiveLink>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button, Popconfirm } from \"antd\";\nimport { DeleteOutlined } from \"@ant-design/icons\";\nimport {\n useDelete,\n useTranslate,\n useMutationMode,\n useCan,\n useResource,\n pickNotDeprecated,\n useWarnAboutChange,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { DeleteButtonProps } from \"../types\";\n\n/**\n * `<DeleteButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/button/ `<Popconfirm>`} components.\n * When you try to delete something, a pop-up shows up and asks for confirmation. When confirmed it executes the `useDelete` method provided by your `dataProvider`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/delete-button} for more details.\n */\nexport const DeleteButton: React.FC<DeleteButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n children,\n successNotification,\n errorNotification,\n hideText = false,\n accessControl,\n metaData,\n meta,\n dataProviderName,\n confirmTitle,\n confirmOkText,\n confirmCancelText,\n invalidates,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const translate = useTranslate();\n\n const { id, resource, identifier } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { mutationMode: mutationModeContext } = useMutationMode();\n\n const mutationMode = mutationModeProp ?? mutationModeContext;\n\n const { mutate, isLoading, variables } = useDelete();\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"delete\",\n params: { id: recordItemId ?? id, resource },\n queryOptions: {\n enabled: accessControlEnabled,\n },\n });\n\n const disabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const { setWarnWhen } = useWarnAboutChange();\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <Popconfirm\n key=\"delete\"\n okText={confirmOkText ?? translate(\"buttons.delete\", \"Delete\")}\n cancelText={confirmCancelText ?? translate(\"buttons.cancel\", \"Cancel\")}\n okType=\"danger\"\n title={confirmTitle ?? translate(\"buttons.confirm\", \"Are you sure?\")}\n okButtonProps={{ disabled: isLoading }}\n onConfirm={(): void => {\n if ((recordItemId ?? id) && identifier) {\n setWarnWhen(false);\n mutate(\n {\n id: recordItemId ?? id ?? \"\",\n resource: identifier,\n mutationMode,\n successNotification,\n errorNotification,\n meta: pickNotDeprecated(meta, metaData),\n metaData: pickNotDeprecated(meta, metaData),\n dataProviderName,\n invalidates,\n },\n {\n onSuccess: (value) => {\n onSuccess?.(value);\n },\n },\n );\n }\n }}\n disabled={\n typeof rest?.disabled !== \"undefined\"\n ? rest.disabled\n : data?.can === false\n }\n >\n <Button\n danger\n loading={(recordItemId ?? id) === variables?.id && isLoading}\n icon={<DeleteOutlined />}\n title={disabledTitle()}\n disabled={data?.can === false}\n data-testid={RefineButtonTestIds.DeleteButton}\n className={RefineButtonClassNames.DeleteButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.delete\", \"Delete\"))}\n </Button>\n </Popconfirm>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { RedoOutlined } from \"@ant-design/icons\";\nimport {\n useTranslate,\n useResource,\n useInvalidate,\n queryKeys,\n pickDataProvider,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { RefreshButtonProps } from \"../types\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\n\n/**\n * `<RefreshButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component\n * to update the data shown on the page via the {@link https://refine.dev/docs/api-reference/core/hooks/invalidate/useInvalidate `useInvalidate`} hook.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/refresh-button} for more details.\n */\nexport const RefreshButton: React.FC<RefreshButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n dataProviderName,\n children,\n onClick,\n meta: _meta,\n metaData: _metaData,\n ...rest\n}) => {\n const translate = useTranslate();\n\n const queryClient = useQueryClient();\n const invalidates = useInvalidate();\n\n const { resources, identifier, id } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const isInvalidating = !!queryClient.isFetching({\n queryKey: queryKeys(\n identifier,\n pickDataProvider(identifier, dataProviderName, resources),\n ).detail(recordItemId ?? id),\n });\n\n const handleInvalidate = () => {\n invalidates({\n id: recordItemId ?? id,\n invalidates: [\"detail\"],\n dataProviderName,\n resource: identifier,\n });\n };\n\n return (\n <Button\n onClick={(e) => {\n onClick ? onClick(e) : handleInvalidate();\n }}\n icon={<RedoOutlined spin={isInvalidating} />}\n data-testid={RefineButtonTestIds.RefreshButton}\n className={RefineButtonClassNames.RefreshButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.refresh\", \"Refresh\"))}\n </Button>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { EyeOutlined } from \"@ant-design/icons\";\nimport {\n useCan,\n useNavigation,\n useTranslate,\n useResource,\n useRouterContext,\n useRouterType,\n useLink,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { ShowButtonProps } from \"../types\";\n\n/**\n * `<ShowButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#show `show`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the show page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/show-button} for more details.\n */\nexport const ShowButton: React.FC<ShowButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const { showUrl: generateShowUrl } = useNavigation();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const translate = useTranslate();\n\n const { id, resource } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"show\",\n params: { id: recordItemId ?? id, resource },\n queryOptions: {\n enabled: accessControlEnabled,\n },\n });\n\n const createButtonDisabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const showUrl =\n resource && (recordItemId || id)\n ? generateShowUrl(resource, recordItemId! ?? id!, meta)\n : \"\";\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <ActiveLink\n to={showUrl}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (data?.can === false) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n icon={<EyeOutlined />}\n disabled={data?.can === false}\n title={createButtonDisabledTitle()}\n data-testid={RefineButtonTestIds.ShowButton}\n className={RefineButtonClassNames.ShowButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.show\", \"Show\"))}\n </Button>\n </ActiveLink>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { BarsOutlined } from \"@ant-design/icons\";\nimport {\n useCan,\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useResource,\n useRouterContext,\n useRouterType,\n useLink,\n pickNotDeprecated,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { ListButtonProps } from \"../types\";\n\n/**\n * `<ListButton>` is using Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#list `list`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation `useNavigation`} under the hood.\n * It can be useful when redirecting the app to the list page route of resource}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/list-button} for more details.\n */\nexport const ListButton: React.FC<ListButtonProps> = ({\n resource: resourceNameFromProps,\n resourceNameOrRouteName: propResourceNameOrRouteName,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const { listUrl: generateListUrl } = useNavigation();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n const getUserFriendlyName = useUserFriendlyName();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const translate = useTranslate();\n\n const { resource, identifier } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"list\",\n queryOptions: {\n enabled: accessControlEnabled,\n },\n params: {\n resource,\n },\n });\n\n const createButtonDisabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const listUrl = resource ? generateListUrl(resource, meta) : \"\";\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <ActiveLink\n to={listUrl}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (data?.can === false) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n icon={<BarsOutlined />}\n disabled={data?.can === false}\n title={createButtonDisabledTitle()}\n data-testid={RefineButtonTestIds.ListButton}\n className={RefineButtonClassNames.ListButton}\n {...rest}\n >\n {!hideText &&\n (children ??\n translate(\n `${\n identifier ??\n resourceNameFromProps ??\n propResourceNameOrRouteName\n }.titles.list`,\n getUserFriendlyName(\n resource?.meta?.label ??\n resource?.label ??\n identifier ??\n pickNotDeprecated(\n resourceNameFromProps,\n propResourceNameOrRouteName,\n ),\n \"plural\",\n ),\n ))}\n </Button>\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { ExportOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { ExportButtonProps } from \"../types\";\n\n/**\n * `<ExportButton>` is an Ant Design {@link https://ant.design/components/button/ `<Button>`} with a default export icon and a default text with \"Export\".\n * It only has presentational value.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/export-button} for more details.\n */\nexport const ExportButton: React.FC<ExportButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const translate = useTranslate();\n\n return (\n <Button\n type=\"default\"\n icon={<ExportOutlined />}\n data-testid={RefineButtonTestIds.ExportButton}\n className={RefineButtonClassNames.ExportButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.export\", \"Export\"))}\n </Button>\n );\n};\n","import React from \"react\";\nimport { Button } from \"antd\";\nimport { SaveOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { SaveButtonProps } from \"../types\";\n\n/**\n * `<SaveButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} component.\n * It uses it for presantation purposes only. Some of the hooks that refine has adds features to this button.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/save-button} for more details.\n */\nexport const SaveButton: React.FC<SaveButtonProps> = ({\n hideText = false,\n children,\n ...rest\n}) => {\n const translate = useTranslate();\n\n return (\n <Button\n type=\"primary\"\n icon={<SaveOutlined />}\n data-testid={RefineButtonTestIds.SaveButton}\n className={RefineButtonClassNames.SaveButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.save\", \"Save\"))}\n </Button>\n );\n};\n","import React, { useContext } from \"react\";\nimport { Button } from \"antd\";\nimport { PlusSquareOutlined } from \"@ant-design/icons\";\nimport {\n useCan,\n useNavigation,\n useTranslate,\n useResource,\n useRouterContext,\n useRouterType,\n useLink,\n AccessControlContext,\n} from \"@refinedev/core\";\nimport {\n RefineButtonTestIds,\n RefineButtonClassNames,\n} from \"@refinedev/ui-types\";\n\nimport { CloneButtonProps } from \"../types\";\n\n/**\n * `<CloneButton>` uses Ant Design's {@link https://ant.design/components/button/ `<Button> component`}.\n * It uses the {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation#clone `clone`} method from {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation useNavigation} under the hood.\n * It can be useful when redirecting the app to the create page with the record id route of resource.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/clone-button} for more details.\n */\nexport const CloneButton: React.FC<CloneButtonProps> = ({\n resourceNameOrRouteName: propResourceNameOrRouteName,\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}) => {\n const accessControlContext = useContext(AccessControlContext);\n\n const accessControlEnabled =\n accessControl?.enabled ??\n accessControlContext.options.buttons.enableAccessControl;\n\n const hideIfUnauthorized =\n accessControl?.hideIfUnauthorized ??\n accessControlContext.options.buttons.hideIfUnauthorized;\n\n const { cloneUrl: generateCloneUrl } = useNavigation();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const translate = useTranslate();\n\n const { id, resource } = useResource(\n resourceNameFromProps ?? propResourceNameOrRouteName,\n );\n\n const { data } = useCan({\n resource: resource?.name,\n action: \"create\",\n params: { id: recordItemId ?? id, resource },\n queryOptions: {\n enabled: accessControlEnabled,\n },\n });\n\n const createButtonDisabledTitle = () => {\n if (data?.can) return \"\";\n if (data?.reason) return data.reason;\n\n return translate(\n \"buttons.notAccessTitle\",\n \"You don't have permission to access\",\n );\n };\n\n const cloneUrl =\n resource && (recordItemId || id)\n ? generateCloneUrl(resource, recordItemId! ?? id!, meta)\n : \"\";\n\n if (accessControlEnabled && hideIfUnauthorized && !data?.can) {\n return null;\n }\n\n return (\n <ActiveLink\n to={cloneUrl}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (data?.can === false) {\n e.preventDefault();\n return;\n }\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n }}\n >\n <Button\n icon={<PlusSquareOutlined />}\n disabled={data?.can === false}\n title={createButtonDisabledTitle()}\n data-testid={RefineButtonTestIds.CloneButton}\n className={RefineButtonClassNames.CloneButton}\n {...rest}\n >\n {!hideText && (children ?? translate(\"buttons.clone\", \"Clone\"))}\n </Button>\n </ActiveLink>\n );\n};\n","import React from \"react\";\nimport { Button, Upload } from \"antd\";\nimport { ImportOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from \"@refinedev/ui-types\";\n\nimport { ImportButtonProps } from \"../types\";\n\n/**\n * `<ImportButton>` is compatible with the {@link https://refine.dev/docs/api-reference/antd/hooks/import/useImport `useImport`} hook and is meant to be used as it's upload button.\n * It uses Ant Design's {@link https://ant.design/components/button/ `<Button>`} and {@link https://ant.design/components/upload/ `<Upload>`} components.\n * It wraps a `<Button>` component with an `<Upload>` component and accepts properties for `<Button>` and `<Upload>` components separately.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/buttons/import-button} for more details.\n */\nexport const ImportButton: React.FC<ImportButtonProps> = ({\n uploadProps,\n buttonProps,\n hideText = false,\n children,\n}) => {\n const translate = useTranslate();\n\n return (\n <Upload {...uploadProps}>\n <Button\n icon={<ImportOutlined />}\n data-testid={RefineButtonTestIds.ImportButton}\n className={RefineButtonClassNames.ImportButton}\n {...buttonProps}\n >\n {!hideText && (children ?? translate(\"buttons.import\", \"Import\"))}\n </Button>\n </Upload>\n );\n};\n","import React from \"react\";\nimport { Space } from \"antd\";\nimport {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n CreateButton,\n CreateButtonProps,\n PageHeader,\n} from \"@components\";\nimport { ListProps } from \"../types\";\n\n/**\n * `<List>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/list} for more details.\n */\nexport const List: React.FC<ListProps> = ({\n canCreate,\n title,\n children,\n createButtonProps: createButtonPropsFromProps,\n resource: resourceFromProps,\n wrapperProps,\n contentProps,\n headerProps,\n breadcrumb: breadcrumbFromProps,\n headerButtonProps,\n headerButtons,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, identifier } = useResource(resourceFromProps);\n\n const isCreateButtonVisible =\n canCreate ??\n ((resource?.canCreate ?? !!resource?.create) || createButtonPropsFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const createButtonProps: CreateButtonProps | undefined = isCreateButtonVisible\n ? {\n size: \"middle\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n ...createButtonPropsFromProps,\n }\n : undefined;\n\n const defaultExtra = isCreateButtonVisible ? (\n <CreateButton {...createButtonProps} />\n ) : null;\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n title={\n title ??\n translate(\n `${identifier}.titles.list`,\n getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"plural\",\n ),\n )\n }\n extra={\n headerButtons ? (\n <Space wrap {...headerButtonProps}>\n {typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultExtra,\n createButtonProps,\n })\n : headerButtons}\n </Space>\n ) : (\n defaultExtra\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <div {...(contentProps ?? {})}>{children}</div>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useResource,\n useBack,\n} from \"@refinedev/core\";\n\nimport {\n Breadcrumb,\n SaveButton,\n PageHeader,\n SaveButtonProps,\n} from \"@components\";\nimport { CreateProps } from \"../types\";\n\n/**\n * `<Create>` provides us a layout to display the page.\n * It does not contain any logic but adds extra functionalities like action buttons and giving titles to the page.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/create} for more details.\n */\nexport const Create: React.FC<CreateProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n children,\n resource: resourceFromProps,\n isLoading = false,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const { goBack } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const { resource, action, identifier } = useResource(resourceFromProps);\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n htmlType: \"submit\",\n };\n\n const defaultFooterButtons = (\n <>\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" || typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.create`,\n `Create ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: null,\n })\n : headerButtons\n : null}\n </Space>\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"action-buttons\"\n style={{ float: \"right\", marginRight: 24 }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n saveButtonProps: saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\n\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useMutationMode,\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useRouterType,\n useBack,\n useResource,\n useGo,\n useToPath,\n} from \"@refinedev/core\";\n\nimport {\n DeleteButton,\n RefreshButton,\n ListButton,\n SaveButton,\n Breadcrumb,\n PageHeader,\n ListButtonProps,\n RefreshButtonProps,\n DeleteButtonProps,\n SaveButtonProps,\n AutoSaveIndicator,\n} from \"@components\";\nimport { EditProps } from \"../types\";\n\n/**\n * `<Edit>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/edit} for more details.\n */\nexport const Edit: React.FC<EditProps> = ({\n title,\n saveButtonProps: saveButtonPropsFromProps,\n mutationMode: mutationModeProp,\n recordItemId,\n children,\n deleteButtonProps: deleteButtonPropsFromProps,\n canDelete,\n resource: resourceFromProps,\n isLoading = false,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n wrapperProps,\n headerProps,\n contentProps,\n headerButtonProps,\n headerButtons,\n footerButtonProps,\n footerButtons,\n goBack: goBackFromProps,\n autoSaveProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n const { mutationMode: mutationModeContext } = useMutationMode();\n const mutationMode = mutationModeProp ?? mutationModeContext;\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ??\n ((resource?.meta?.canDelete ?? resource?.canDelete) ||\n deleteButtonPropsFromProps);\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n mutationMode,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n recordItemId: id,\n dataProviderName,\n ...deleteButtonPropsFromProps,\n }\n : undefined;\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n };\n\n const defaultHeaderButtons = (\n <>\n {autoSaveProps && <AutoSaveIndicator {...autoSaveProps} />}\n {hasList && <ListButton {...listButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n const defaultFooterButtons = (\n <>\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <SaveButton {...saveButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.edit`,\n `Edit ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={[\n <Space\n key=\"footer-buttons\"\n wrap\n style={{\n float: \"right\",\n marginRight: 24,\n }}\n {...(footerButtonProps ?? {})}\n >\n {footerButtons\n ? typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: defaultFooterButtons,\n deleteButtonProps,\n saveButtonProps,\n })\n : footerButtons\n : defaultFooterButtons}\n </Space>,\n ]}\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Card, Space, Spin } from \"antd\";\nimport {\n useNavigation,\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResource,\n useToPath,\n useRouterType,\n useBack,\n useGo,\n} from \"@refinedev/core\";\n\nimport {\n EditButton,\n DeleteButton,\n RefreshButton,\n ListButton,\n Breadcrumb,\n PageHeader,\n ListButtonProps,\n EditButtonProps,\n DeleteButtonProps,\n RefreshButtonProps,\n} from \"@components\";\nimport { ShowProps } from \"../types\";\n\n/**\n * `<Show>` provides us a layout for displaying the page.\n * It does not contain any logic but adds extra functionalities like a refresh button.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/basic-views/show} for more details.\n */\nexport const Show: React.FC<ShowProps> = ({\n title,\n canEdit,\n canDelete,\n isLoading = false,\n children,\n resource: resourceFromProps,\n recordItemId,\n dataProviderName,\n breadcrumb: breadcrumbFromProps,\n contentProps,\n headerProps,\n wrapperProps,\n headerButtons,\n footerButtons,\n footerButtonProps,\n headerButtonProps,\n goBack: goBackFromProps,\n}) => {\n const translate = useTranslate();\n const {\n options: { breadcrumb: globalBreadcrumb } = {},\n } = useRefineContext();\n\n const routerType = useRouterType();\n const back = useBack();\n const go = useGo();\n const { goBack, list: legacyGoList } = useNavigation();\n const getUserFriendlyName = useUserFriendlyName();\n\n const {\n resource,\n action,\n id: idFromParams,\n identifier,\n } = useResource(resourceFromProps);\n\n const goListPath = useToPath({\n resource,\n action: \"list\",\n });\n\n const id = recordItemId ?? idFromParams;\n\n const breadcrumb =\n typeof breadcrumbFromProps === \"undefined\"\n ? globalBreadcrumb\n : breadcrumbFromProps;\n\n const hasList = resource?.list && !recordItemId;\n const isDeleteButtonVisible =\n canDelete ?? resource?.meta?.canDelete ?? resource?.canDelete;\n const isEditButtonVisible = canEdit ?? resource?.canEdit ?? !!resource?.edit;\n\n const listButtonProps: ListButtonProps | undefined = hasList\n ? {\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n }\n : undefined;\n const editButtonProps: EditButtonProps | undefined = isEditButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n type: \"primary\",\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n }\n : undefined;\n const deleteButtonProps: DeleteButtonProps | undefined = isDeleteButtonVisible\n ? {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n onSuccess: () => {\n if (routerType === \"legacy\") {\n legacyGoList(resource?.route ?? resource?.name ?? \"\");\n } else {\n go({ to: goListPath });\n }\n },\n dataProviderName,\n }\n : undefined;\n const refreshButtonProps: RefreshButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n resource: routerType === \"legacy\" ? resource?.route : identifier,\n recordItemId: id,\n dataProviderName,\n };\n\n const defaultHeaderButtons = (\n <>\n {hasList && <ListButton {...listButtonProps} />}\n {isEditButtonVisible && <EditButton {...editButtonProps} />}\n {isDeleteButtonVisible && <DeleteButton {...deleteButtonProps} />}\n <RefreshButton {...refreshButtonProps} />\n </>\n );\n\n return (\n <div {...(wrapperProps ?? {})}>\n <PageHeader\n ghost={false}\n backIcon={goBackFromProps}\n onBack={\n action !== \"list\" && typeof action !== \"undefined\"\n ? routerType === \"legacy\"\n ? goBack\n : back\n : undefined\n }\n title={\n title ??\n translate(\n `${identifier}.titles.show`,\n `Show ${getUserFriendlyName(\n resource?.meta?.label ??\n resource?.options?.label ??\n resource?.label ??\n identifier,\n \"singular\",\n )}`,\n )\n }\n extra={\n <Space key=\"extra-buttons\" wrap {...(headerButtonProps ?? {})}>\n {headerButtons\n ? typeof headerButtons === \"function\"\n ? headerButtons({\n defaultButtons: defaultHeaderButtons,\n deleteButtonProps,\n editButtonProps,\n listButtonProps,\n refreshButtonProps,\n })\n : headerButtons\n : defaultHeaderButtons}\n </Space>\n }\n breadcrumb={\n typeof breadcrumb !== \"undefined\" ? (\n <>{breadcrumb}</> ?? undefined\n ) : (\n <Breadcrumb />\n )\n }\n {...(headerProps ?? {})}\n >\n <Spin spinning={isLoading}>\n <Card\n bordered={false}\n actions={\n footerButtons\n ? [\n <Space key=\"footer-buttons\" wrap {...footerButtonProps}>\n {typeof footerButtons === \"function\"\n ? footerButtons({\n defaultButtons: null,\n })\n : footerButtons}\n </Space>,\n ]\n : undefined\n }\n {...(contentProps ?? {})}\n >\n {children}\n </Card>\n </Spin>\n </PageHeader>\n </div>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport { TextFieldProps } from \"../types\";\n\n/**\n * This field lets you show basic text. It uses Ant Design's {@link https://ant.design/components/typography/#Typography.Text `<Typography.Text>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/text} for more details.\n */\nexport const TextField: React.FC<TextFieldProps> = ({ value, ...rest }) => {\n return <Typography.Text {...rest}>{value}</Typography.Text>;\n};\n","import React from \"react\";\nimport { Tag } from \"antd\";\n\nimport { TagFieldProps } from \"../types\";\n\n/**\n * This field lets you display a value in a tag. It uses Ant Design's {@link https://ant.design/components/tag/ `<Tag>`} component.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/tag} for more details.\n */\nexport const TagField: React.FC<TagFieldProps> = ({ value, ...rest }) => {\n return <Tag {...rest}>{value?.toString()}</Tag>;\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport { EmailFieldProps } from \"../types\";\n\n/**\n * This field is used to display email values. It uses the {@link https://ant.design/components/typography/#FAQ `<Link>`} component\n * of {@link https://ant.design/components/typography `<Typography>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/email} for more details.\n */\nexport const EmailField: React.FC<EmailFieldProps> = ({ value, ...rest }) => {\n return (\n <Typography.Link href={`mailto:${value}`} {...rest}>\n {value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Image } from \"antd\";\n\nimport { ImageFieldProps } from \"../types\";\n\n/**\n * This field is used to display images and uses {@link https://ant.design/components/image/#header `<Image>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/image} for more details.\n */\nexport const ImageField: React.FC<ImageFieldProps> = ({\n value,\n imageTitle,\n ...rest\n}) => {\n return <Image {...rest} src={value} title={imageTitle} />;\n};\n","import React from \"react\";\nimport { Tooltip } from \"antd\";\n\nimport { CheckOutlined, CloseOutlined } from \"@ant-design/icons\";\n\nimport { BooleanFieldProps } from \"../types\";\n\n/**\n * This field is used to display boolean values. It uses the {@link https://ant.design/components/tooltip/#header `<Tooltip>`} values from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/boolean} for more details.\n */\nexport const BooleanField: React.FC<BooleanFieldProps> = ({\n value,\n valueLabelTrue = \"true\",\n valueLabelFalse = \"false\",\n trueIcon = <CheckOutlined />,\n falseIcon = <CloseOutlined />,\n ...rest\n}) => {\n return (\n <Tooltip title={value ? valueLabelTrue : valueLabelFalse} {...rest}>\n {value ? <span>{trueIcon}</span> : <span>{falseIcon}</span>}\n </Tooltip>\n );\n};\n","import React from \"react\";\nimport dayjs from \"dayjs\";\nimport { Typography } from \"antd\";\n\nimport LocalizedFormat from \"dayjs/plugin/localizedFormat\";\n\nimport { DateFieldProps } from \"../types\";\n\n/**\n * This field is used to display dates. It uses {@link https://day.js.org/docs/en/display/format `Day.js`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/date} for more details.\n */\nexport const DateField: React.FC<DateFieldProps> = ({\n value,\n locales,\n format: dateFormat = \"L\",\n ...rest\n}) => {\n dayjs.extend(LocalizedFormat);\n\n const defaultLocale = dayjs.locale();\n\n return (\n <Typography.Text {...rest}>\n {dayjs(value)\n .locale(locales || defaultLocale)\n .format(dateFormat)}\n </Typography.Text>\n );\n};\n","import React from \"react\";\n\nimport { UrlField } from \"@components\";\nimport { FileFieldProps } from \"../types\";\n\n/**\n * This field is used to display files and uses {@link https://ant.design/components/typography `<Typography.Link>`} from Ant Design.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/file} for more details.\n */\nexport const FileField: React.FC<FileFieldProps> = ({\n title,\n src,\n ...rest\n}) => {\n return (\n <UrlField value={src} title={title} {...rest}>\n {title ?? src}\n </UrlField>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nimport { UrlFieldProps } from \"../types\";\n\n/**\n * This field lets you embed a link. It uses Ant Design's {@link https://ant.design/components/typography/ `<Typography.Link>`} component.\n * You can pass a URL in its `value` property and you can show a text in its place by passing any `children`.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/url} for more details.\n */\nexport const UrlField: React.FC<UrlFieldProps> = ({\n children,\n value,\n ...rest\n}) => {\n return (\n <Typography.Link href={value} {...rest}>\n {children ?? value}\n </Typography.Link>\n );\n};\n","import React from \"react\";\nimport { Typography } from \"antd\";\n\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === \"object\" &&\n Intl &&\n typeof Intl.NumberFormat === \"function\"\n );\n}\n\nimport { NumberFieldProps } from \"../types\";\n\n/**\n * This field is used to display a number formatted according to the browser locale, right aligned. and uses {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl `Intl`} to display date format.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/number} for more details.\n */\nexport const NumberField: React.FC<NumberFieldProps> = ({\n value,\n locale,\n options,\n ...rest\n}) => {\n const number = Number(value);\n\n return (\n <Typography.Text {...rest}>\n {toLocaleStringSupportsOptions()\n ? number.toLocaleString(locale, options)\n : number}\n </Typography.Text>\n );\n};\n","import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport gfm from \"remark-gfm\";\n\nimport { RefineFieldMarkdownProps } from \"../types\";\n\n/**\n * This field lets you display markdown content. It supports {@link https://github.github.com/gfm/ GitHub Flavored Markdown}.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/fields/markdown} for more details.\n */\nexport const MarkdownField: React.FC<RefineFieldMarkdownProps> = ({\n value = \"\",\n}) => {\n // There's an issue related with the type inconsistency of the `remark-gfm` and `remark-rehype` packages, we need to cast the `gfm` as any. (https://github.com/orgs/rehypejs/discussions/63)\n return (\n <ReactMarkdown\n remarkPlugins={[gfm] as unknown as ReactMarkdown.PluggableList}\n >\n {value}\n </ReactMarkdown>\n );\n};\n","import React, { ReactNode, useState } from \"react\";\nimport { Button, Space } from \"antd\";\nimport type { FilterDropdownProps as AntdFilterDropdownProps } from \"antd/lib/table/interface\";\nimport dayjs from \"dayjs\";\nimport { FilterOutlined } from \"@ant-design/icons\";\nimport { useTranslate } from \"@refinedev/core\";\n\nexport type FilterDropdownProps = AntdFilterDropdownProps & {\n mapValue?: (selectedKeys: React.Key[]) => any;\n children: ReactNode;\n};\n\n/**\n * `<FilterDropdown>` is a helper component for {@link https://ant.design/components/table/#components-table-demo-custom-filter-panel filter dropdowns in Ant Design `<Table>` components.}\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/filter-dropdown} for more details.\n */\nexport const FilterDropdown: React.FC<FilterDropdownProps> = (props) => {\n const {\n setSelectedKeys,\n confirm,\n clearFilters,\n mapValue,\n selectedKeys,\n children,\n } = props;\n\n const [value, setValue] = useState<any[] | undefined>(selectedKeys);\n const translate = useTranslate();\n\n const clearFilter = () => {\n if (clearFilters) {\n setValue([]);\n clearFilters();\n }\n };\n\n const onFilter = () => {\n const _mappedValue = mappedValue(value);\n\n let keys;\n if (typeof _mappedValue === \"number\") {\n keys = `${_mappedValue}`;\n } else if (dayjs.isDayjs(_mappedValue)) {\n keys = [_mappedValue.toISOString()];\n } else {\n keys = _mappedValue;\n }\n\n setSelectedKeys(keys);\n\n confirm?.();\n };\n\n const mappedValue = (value: any) => (mapValue ? mapValue(value) : value);\n\n const onChange = (e: any) => {\n if (typeof e === \"object\") {\n if (Array.isArray(e)) {\n const _mappedValue = mappedValue(e);\n\n setValue(_mappedValue);\n return setSelectedKeys(_mappedValue);\n }\n\n const changeEvent =\n !e || !e.target || dayjs.isDayjs(e) ? { target: { value: e } } : e;\n\n const { target }: React.ChangeEvent<HTMLInputElement> = changeEvent;\n const _mappedValue = mappedValue(target.value);\n setValue(_mappedValue);\n return;\n }\n\n const _mappedValue = mappedValue(e);\n\n setValue(_mappedValue);\n };\n\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n onChange,\n value: mappedValue(value),\n });\n }\n return child;\n });\n return (\n <div\n style={{\n padding: 10,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n }}\n >\n <div style={{ marginBottom: 15 }}>{childrenWithProps}</div>\n <Space>\n <Button type=\"primary\" size=\"small\" onClick={() => onFilter()}>\n <FilterOutlined /> {translate(\"buttons.filter\", \"Filter\")}\n </Button>\n <Button danger size=\"small\" onClick={() => clearFilter()}>\n {translate(\"buttons.clear\", \"Clear\")}\n </Button>\n </Space>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useGo, useResource, useRouterType } from \"@refinedev/core\";\nimport { RefineErrorPageProps } from \"@refinedev/ui-types\";\nimport { Button, Result, Typography, Space, Tooltip } from \"antd\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { useNavigation, useTranslate } from \"@refinedev/core\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC<RefineErrorPageProps> = () => {\n const [errorMessage, setErrorMessage] = useState<string>();\n const translate = useTranslate();\n const { push } = useNavigation();\n const go = useGo();\n const routerType = useRouterType();\n\n const { resource, action } = useResource();\n\n useEffect(() => {\n if (resource) {\n if (action) {\n setErrorMessage(\n translate(\n \"pages.error.info\",\n {\n action: action,\n resource: resource?.name,\n },\n `You may have forgotten to add the \"${action}\" component to \"${resource?.name}\" resource.`,\n ),\n );\n }\n }\n }, [resource, action]);\n\n return (\n <Result\n status=\"404\"\n title=\"404\"\n extra={\n <Space direction=\"vertical\" size=\"large\">\n <Space>\n <Typography.Text>\n {translate(\n \"pages.error.404\",\n \"Sorry, the page you visited does not exist.\",\n )}\n </Typography.Text>\n {errorMessage && (\n <Tooltip title={errorMessage}>\n <InfoCircleOutlined data-testid=\"error-component-tooltip\" />\n </Tooltip>\n )}\n </Space>\n <Button\n type=\"primary\"\n onClick={() => {\n if (routerType === \"legacy\") {\n push(\"/\");\n } else {\n go({ to: \"/\" });\n }\n }}\n >\n {translate(\"pages.error.backHome\", \"Back Home\")}\n </Button>\n </Space>\n }\n />\n );\n};\n","import React from \"react\";\nimport { LoginPageProps, useActiveAuthProvider } from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n} from \"antd\";\nimport { useLogin, useTranslate } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n imageContainer,\n} from \"./styles\";\n\nexport interface ILoginForm {\n username: string;\n password: string;\n remember: boolean;\n}\n\n/**\n * @deprecated LoginPage is deprecated. Use AuthPage instead. @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page} for more details.\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage} for more details.\n */\nexport const LoginPage: React.FC<LoginPageProps> = () => {\n const [form] = Form.useForm<ILoginForm>();\n const translate = useTranslate();\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<ILoginForm>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const CardTitle = (\n <Typography.Title level={3} style={titleStyles}>\n {translate(\"pages.login.title\", \"Sign in your account\")}\n </Typography.Title>\n );\n\n return (\n <Layout style={layoutStyles}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n height: \"100vh\",\n }}\n >\n <Col xs={22}>\n <div style={containerStyles}>\n <div style={imageContainer}>\n <img\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n </div>\n <Card title={CardTitle} headStyle={{ borderBottom: 0 }}>\n <Form<ILoginForm>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => {\n login(values);\n }}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n >\n <Form.Item\n name=\"username\"\n label={translate(\"pages.login.username\", \"Username\")}\n rules={[{ required: true }]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.username\", \"Username\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.password\", \"Password\")}\n rules={[{ required: true }]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div style={{ marginBottom: \"12px\" }}>\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.remember\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n\n <a\n style={{\n float: \"right\",\n fontSize: \"12px\",\n }}\n href=\"#\"\n >\n {translate(\n \"pages.login.forgotPassword\",\n \"Forgot password?\",\n )}\n </a>\n </div>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form>\n <div style={{ marginTop: 8 }}>\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\"pages.login.noAccount\", \"Don’t have an account?\")}{\" \"}\n <a href=\"#\" style={{ fontWeight: \"bold\" }}>\n {translate(\"pages.login.signup\", \"Sign up\")}\n </a>\n </Typography.Text>\n </div>\n </Card>\n </div>\n </Col>\n </Row>\n </Layout>\n );\n};\n","import { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {\n background: \"radial-gradient(50% 50% at 50% 50%, #63386A 0%, #310438 100%)\",\n backgroundSize: \"cover\",\n};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"408px\",\n margin: \"auto\",\n};\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n color: \"#626262\",\n fontSize: \"30px\",\n letterSpacing: \"-0.04em\",\n};\n\nexport const imageContainer: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"28px\",\n};\n","import * as React from \"react\";\nimport { RefineReadyPageProps } from \"@refinedev/ui-types\";\nimport { Row, Col, Typography, Space, Button } from \"antd\";\nimport { ReadOutlined, FolderOutlined, TeamOutlined } from \"@ant-design/icons\";\n\nconst styles: { [key: string]: React.CSSProperties } = {\n root: {\n height: \"100vh\",\n backgroundImage:\n \"url('https://refine.ams3.cdn.digitaloceanspaces.com/login-background/background.png')\",\n backgroundSize: \"cover\",\n backgroundColor: \"#331049\",\n },\n title: {\n color: \"white\",\n fontWeight: 800,\n fontSize: \"64px\",\n marginBottom: \"8px\",\n },\n p1: {\n color: \"white\",\n marginBottom: 0,\n fontSize: \"20px\",\n fontWeight: \"bold\",\n },\n p2: {\n color: \"white\",\n fontSize: \"20px\",\n },\n code: {\n backgroundColor: \"white\",\n color: \"#331049\",\n },\n};\n\n/**\n * **refine** shows a default ready page on root route when no `resources` is passed to the `<Refine>` component as a property.\n *\n * @deprecated `ReadyPage` is deprecated and will be removed in the next major release.\n */\nexport const ReadyPage: React.FC<RefineReadyPageProps> = () => {\n return (\n <Row align=\"middle\" justify=\"center\" style={styles.root}>\n <Col style={{ textAlign: \"center\" }}>\n <img\n style={{ marginBottom: \"48px\" }}\n src=\"https://refine.ams3.cdn.digitaloceanspaces.com/logo/refine.svg\"\n alt=\"Refine Logo\"\n />\n <Typography.Title style={styles.title}>\n Welcome on board\n </Typography.Title>\n <p style={styles.p1}>Your configuration is completed.</p>\n <p style={styles.p2}>\n Now you can get started by adding your resources to the{\" \"}\n <code style={styles.code}>{\"resources\"}</code> property of{\" \"}\n <code style={styles.code}>{\"<Refine>\"}</code>\n </p>\n <Space\n size=\"large\"\n wrap\n style={{ marginTop: \"70px\", justifyContent: \"center\" }}\n >\n <a href=\"https://refine.dev\" target=\"_blank\" rel=\"noreferrer\">\n <Button size=\"large\" icon={<ReadOutlined />}>\n Documentation\n </Button>\n </a>\n <a\n href=\"https://refine.dev/examples\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Button size=\"large\" icon={<FolderOutlined />}>\n Examples\n </Button>\n </a>\n <a href=\"https://discord.gg/refine\" target=\"_blank\" rel=\"noreferrer\">\n <Button size=\"large\" icon={<TeamOutlined />}>\n Community\n </Button>\n </a>\n </Space>\n </Col>\n </Row>\n );\n};\n","import React from \"react\";\nimport { WelcomePage as WelcomePageFromCore } from \"@refinedev/core\";\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n * @deprecated `WelcomePage` is deprecated. Use `WelcomePage` from `@refinedev/core` instead.\n */\nexport const WelcomePage: React.FC = () => {\n return <WelcomePageFromCore />;\n};\n","import React from \"react\";\nimport { CardProps, FormProps, LayoutProps } from \"antd\";\nimport { AuthPageProps } from \"@refinedev/core\";\n\nimport {\n LoginPage,\n RegisterPage,\n ForgotPasswordPage,\n UpdatePasswordPage,\n} from \"./components\";\n\nexport type AuthProps = AuthPageProps<LayoutProps, CardProps, FormProps> & {\n renderContent?: (\n content: React.ReactNode,\n title: React.ReactNode,\n ) => React.ReactNode;\n title?: React.ReactNode;\n};\n\n/**\n * **refine** has a default auth page form served on the `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/antd/components/antd-auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n const { type } = props;\n const renderView = () => {\n switch (type) {\n case \"register\":\n return <RegisterPage {...props} />;\n case \"forgotPassword\":\n return <ForgotPasswordPage {...props} />;\n case \"updatePassword\":\n return <UpdatePasswordPage {...props} />;\n default:\n return <LoginPage {...props} />;\n }\n };\n\n return <>{renderView()}</>;\n};\n","import React from \"react\";\nimport {\n LoginPageProps,\n LoginFormTypes,\n useLink,\n useRouterType,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n Checkbox,\n CardProps,\n LayoutProps,\n Divider,\n FormProps,\n theme,\n} from \"antd\";\nimport { useLogin, useTranslate, useRouterContext } from \"@refinedev/core\";\n\nimport {\n bodyStyles,\n containerStyles,\n headStyles,\n layoutStyles,\n titleStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype LoginProps = LoginPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#login} for more details.\n */\nexport const LoginPage: React.FC<LoginProps> = ({\n providers,\n registerLink,\n forgotPasswordLink,\n rememberMe,\n contentProps,\n wrapperProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<LoginFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: login, isLoading } = useLogin<LoginFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.login.title\", \"Sign in to your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n login({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\"pages.login.divider\", \"or\")}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<LoginFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => login(values)}\n requiredMark={false}\n initialValues={{\n remember: false,\n }}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.login.fields.email\", \"Email\")}\n rules={[\n { required: true },\n {\n type: \"email\",\n message: translate(\n \"pages.login.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.login.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.login.fields.password\", \"Password\")}\n rules={[{ required: true }]}\n >\n <Input\n type=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"●●●●●●●●\"\n size=\"large\"\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {rememberMe ?? (\n <Form.Item name=\"remember\" valuePropName=\"checked\" noStyle>\n <Checkbox\n style={{\n fontSize: \"12px\",\n }}\n >\n {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n </Checkbox>\n </Form.Item>\n )}\n {forgotPasswordLink ?? (\n <ActiveLink\n style={{\n color: token.colorPrimaryTextHover,\n fontSize: \"12px\",\n marginLeft: \"auto\",\n }}\n to=\"/forgot-password\"\n >\n {translate(\n \"pages.login.buttons.forgotPassword\",\n \"Forgot password?\",\n )}\n </ActiveLink>\n )}\n </div>\n {!hideForm && (\n <Form.Item>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </Button>\n </Form.Item>\n )}\n </Form>\n )}\n\n {registerLink ?? (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text style={{ fontSize: 12 }}>\n {translate(\n \"pages.login.buttons.noAccount\",\n \"Don’t have an account?\",\n )}{\" \"}\n <ActiveLink\n to=\"/register\"\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n >\n {translate(\"pages.login.signup\", \"Sign up\")}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import { CSSProperties } from \"react\";\n\nexport const layoutStyles: CSSProperties = {};\n\nexport const containerStyles: CSSProperties = {\n maxWidth: \"400px\",\n margin: \"auto\",\n padding: \"32px\",\n boxShadow:\n \"0px 2px 4px rgba(0, 0, 0, 0.02), 0px 1px 6px -1px rgba(0, 0, 0, 0.02), 0px 1px 2px rgba(0, 0, 0, 0.03)\",\n};\n\nexport const headStyles: CSSProperties = {\n borderBottom: 0,\n padding: 0,\n};\n\nexport const bodyStyles: CSSProperties = { padding: 0, marginTop: \"32px\" };\n\nexport const titleStyles: CSSProperties = {\n textAlign: \"center\",\n marginBottom: 0,\n fontSize: \"24px\",\n lineHeight: \"32px\",\n fontWeight: 700,\n overflowWrap: \"break-word\",\n hyphens: \"manual\",\n textOverflow: \"unset\",\n whiteSpace: \"pre-wrap\",\n};\n","import React from \"react\";\nimport {\n RegisterPageProps,\n RegisterFormTypes,\n useRouterType,\n useLink,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n LayoutProps,\n CardProps,\n FormProps,\n Divider,\n theme,\n} from \"antd\";\nimport { useTranslate, useRouterContext, useRegister } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype RegisterProps = RegisterPageProps<LayoutProps, CardProps, FormProps>;\n/**\n * **refine** has register page form which is served on `/register` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#register} for more details.\n */\nexport const RegisterPage: React.FC<RegisterProps> = ({\n providers,\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n hideForm,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<RegisterFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const authProvider = useActiveAuthProvider();\n const { mutate: register, isLoading } = useRegister<RegisterFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.register.title\", \"Sign up for your account\")}\n </Typography.Title>\n );\n\n const renderProviders = () => {\n if (providers && providers.length > 0) {\n return (\n <>\n {providers.map((provider) => {\n return (\n <Button\n key={provider.name}\n type=\"default\"\n block\n icon={provider.icon}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n marginBottom: \"8px\",\n }}\n onClick={() =>\n register({\n providerName: provider.name,\n })\n }\n >\n {provider.label}\n </Button>\n );\n })}\n {!hideForm && (\n <Divider>\n <Typography.Text\n style={{\n color: token.colorTextLabel,\n }}\n >\n {translate(\"pages.login.divider\", \"or\")}\n </Typography.Text>\n </Divider>\n )}\n </>\n );\n }\n return null;\n };\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n {renderProviders()}\n {!hideForm && (\n <Form<RegisterFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => register(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.register.email\", \"Email\")}\n rules={[\n { required: true },\n {\n type: \"email\",\n message: translate(\n \"pages.register.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n size=\"large\"\n placeholder={translate(\"pages.register.fields.email\", \"Email\")}\n />\n </Form.Item>\n <Form.Item\n name=\"password\"\n label={translate(\"pages.register.fields.password\", \"Password\")}\n rules={[{ required: true }]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.login.buttons.haveAccount\",\n \"Have an account?\",\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.register.buttons.submit\", \"Sign up\")}\n </Button>\n </Form.Item>\n </Form>\n )}\n {hideForm && loginLink !== false && (\n <div\n style={{\n marginTop: hideForm ? 16 : 8,\n }}\n >\n <Typography.Text\n style={{\n fontSize: 12,\n }}\n >\n {translate(\"pages.login.buttons.haveAccount\", \"Have an account?\")}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n </div>\n )}\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align={hideForm ? \"top\" : \"middle\"}\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n paddingTop: hideForm ? \"15dvh\" : \"16px\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n ForgotPasswordPageProps,\n ForgotPasswordFormTypes,\n useRouterType,\n useLink,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n LayoutProps,\n CardProps,\n FormProps,\n theme,\n} from \"antd\";\nimport {\n useTranslate,\n useRouterContext,\n useForgotPassword,\n} from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype ResetPassworProps = ForgotPasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has forgot password page form which is served on `/forgot-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#forgot-password} for more details.\n */\nexport const ForgotPasswordPage: React.FC<ResetPassworProps> = ({\n loginLink,\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<ForgotPasswordFormTypes>();\n const translate = useTranslate();\n const routerType = useRouterType();\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n const { mutate: forgotPassword, isLoading } =\n useForgotPassword<ForgotPasswordFormTypes>();\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n </Typography.Title>\n );\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<ForgotPasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => forgotPassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"email\"\n label={translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n rules={[\n { required: true },\n {\n type: \"email\",\n message: translate(\n \"pages.forgotPassword.errors.validEmail\",\n \"Invalid email address\",\n ),\n },\n ]}\n >\n <Input\n type=\"email\"\n size=\"large\"\n placeholder={translate(\n \"pages.forgotPassword.fields.email\",\n \"Email\",\n )}\n />\n </Form.Item>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n }}\n >\n {loginLink ?? (\n <Typography.Text\n style={{\n fontSize: 12,\n marginLeft: \"auto\",\n }}\n >\n {translate(\n \"pages.register.buttons.haveAccount\",\n \"Have an account? \",\n )}{\" \"}\n <ActiveLink\n style={{\n fontWeight: \"bold\",\n color: token.colorPrimaryTextHover,\n }}\n to=\"/login\"\n >\n {translate(\"pages.login.signin\", \"Sign in\")}\n </ActiveLink>\n </Typography.Text>\n )}\n </div>\n <Form.Item\n style={{\n marginTop: \"24px\",\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\n \"pages.forgotPassword.buttons.submit\",\n \"Send reset instructions\",\n )}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n UpdatePasswordPageProps,\n UpdatePasswordFormTypes,\n useActiveAuthProvider,\n} from \"@refinedev/core\";\nimport {\n Row,\n Col,\n Layout,\n Card,\n Typography,\n Form,\n Input,\n Button,\n LayoutProps,\n CardProps,\n FormProps,\n theme,\n} from \"antd\";\nimport { useTranslate, useUpdatePassword } from \"@refinedev/core\";\n\nimport {\n layoutStyles,\n containerStyles,\n titleStyles,\n headStyles,\n bodyStyles,\n} from \"../styles\";\nimport { ThemedTitleV2 } from \"@components\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n LayoutProps,\n CardProps,\n FormProps\n>;\n\n/**\n * **refine** has update password page form which is served on `/update-password` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#update-password} for more details.\n */\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n wrapperProps,\n contentProps,\n renderContent,\n formProps,\n title,\n}) => {\n const { token } = theme.useToken();\n const [form] = Form.useForm<UpdatePasswordFormTypes>();\n const translate = useTranslate();\n const authProvider = useActiveAuthProvider();\n const { mutate: updatePassword, isLoading } =\n useUpdatePassword<UpdatePasswordFormTypes>({\n v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n });\n\n const PageTitle =\n title === false ? null : (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n marginBottom: \"32px\",\n fontSize: \"20px\",\n }}\n >\n {title ?? <ThemedTitleV2 collapsed={false} />}\n </div>\n );\n\n const CardTitle = (\n <Typography.Title\n level={3}\n style={{\n color: token.colorPrimaryTextHover,\n ...titleStyles,\n }}\n >\n {translate(\"pages.updatePassword.title\", \"Set New Password\")}\n </Typography.Title>\n );\n\n const CardContent = (\n <Card\n title={CardTitle}\n headStyle={headStyles}\n bodyStyle={bodyStyles}\n style={{\n ...containerStyles,\n backgroundColor: token.colorBgElevated,\n }}\n {...(contentProps ?? {})}\n >\n <Form<UpdatePasswordFormTypes>\n layout=\"vertical\"\n form={form}\n onFinish={(values) => updatePassword(values)}\n requiredMark={false}\n {...formProps}\n >\n <Form.Item\n name=\"password\"\n label={translate(\n \"pages.updatePassword.fields.password\",\n \"New Password\",\n )}\n rules={[{ required: true }]}\n style={{ marginBottom: \"12px\" }}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n name=\"confirmPassword\"\n label={translate(\n \"pages.updatePassword.fields.confirmPassword\",\n \"Confirm New Password\",\n )}\n hasFeedback\n dependencies={[\"password\"]}\n rules={[\n {\n required: true,\n },\n ({ getFieldValue }) => ({\n validator(_, value) {\n if (!value || getFieldValue(\"password\") === value) {\n return Promise.resolve();\n }\n return Promise.reject(\n new Error(\n translate(\n \"pages.updatePassword.errors.confirmPasswordNotMatch\",\n \"Passwords do not match\",\n ),\n ),\n );\n },\n }),\n ]}\n >\n <Input type=\"password\" placeholder=\"●●●●●●●●\" size=\"large\" />\n </Form.Item>\n <Form.Item\n style={{\n marginBottom: 0,\n }}\n >\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={isLoading}\n block\n >\n {translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n </Button>\n </Form.Item>\n </Form>\n </Card>\n );\n\n return (\n <Layout style={layoutStyles} {...(wrapperProps ?? {})}>\n <Row\n justify=\"center\"\n align=\"middle\"\n style={{\n padding: \"16px 0\",\n minHeight: \"100dvh\",\n }}\n >\n <Col xs={22}>\n {renderContent ? (\n renderContent(CardContent, PageTitle)\n ) : (\n <>\n {PageTitle}\n {CardContent}\n </>\n )}\n </Col>\n </Row>\n </Layout>\n );\n};\n","import React from \"react\";\nimport {\n useBreadcrumb,\n useLink,\n useRefineContext,\n useRouterContext,\n useRouterType,\n useResource,\n matchResourceFromRoute,\n} from \"@refinedev/core\";\nimport { RefineBreadcrumbProps } from \"@refinedev/ui-types\";\n\nimport {\n Breadcrumb as AntdBreadcrumb,\n BreadcrumbProps as AntdBreadcrumbProps,\n} from \"antd\";\nimport { HomeOutlined } from \"@ant-design/icons\";\n\nexport type BreadcrumbProps = RefineBreadcrumbProps<AntdBreadcrumbProps>;\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n breadcrumbProps,\n showHome = true,\n hideIcons = false,\n meta,\n}) => {\n const routerType = useRouterType();\n const { breadcrumbs } = useBreadcrumb({\n meta,\n });\n const Link = useLink();\n const { Link: LegacyLink } = useRouterContext();\n const { hasDashboard } = useRefineContext();\n\n const { resources } = useResource();\n\n const rootRouteResource = matchResourceFromRoute(\"/\", resources);\n\n const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n if (breadcrumbs.length === 1) {\n return null;\n }\n\n const breadCrumbItems = breadcrumbs.map(({ label, icon, href }) => ({\n key: `breadcrumb-item-${label}`,\n title: (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 4,\n }}\n >\n {!hideIcons && icon}\n {href ? (\n <ActiveLink to={href}>{label}</ActiveLink>\n ) : (\n <span>{label}</span>\n )}\n </div>\n ),\n }));\n\n const getBreadcrumbItems = () => {\n if (showHome && (hasDashboard || rootRouteResource.found)) {\n return [\n {\n key: \"breadcrumb-item-home\",\n title: (\n <ActiveLink to=\"/\">\n {rootRouteResource?.resource?.meta?.icon ?? <HomeOutlined />}\n </ActiveLink>\n ),\n },\n ...breadCrumbItems,\n ];\n }\n\n return breadCrumbItems;\n };\n\n return <AntdBreadcrumb items={getBreadcrumbItems()} {...breadcrumbProps} />;\n};\n","import React, { FC } from \"react\";\nimport {\n PageHeader as AntdPageHeader,\n PageHeaderProps as AntdPageHeaderProps,\n} from \"@ant-design/pro-layout\";\nimport { Button, Typography } from \"antd\";\nimport { ArrowLeftOutlined } from \"@ant-design/icons\";\nimport { RefinePageHeaderClassNames } from \"@refinedev/ui-types\";\n\nexport type PageHeaderProps = AntdPageHeaderProps;\n\nexport const PageHeader: FC<AntdPageHeaderProps> = ({ children, ...props }) => {\n const backIcon =\n typeof props.backIcon === \"undefined\" ? (\n <Button type=\"text\" icon={<ArrowLeftOutlined />} />\n ) : (\n props.backIcon\n );\n\n const title =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.Title}\n level={4}\n style={{ marginBottom: 0 }}\n >\n {props.title}\n </Typography.Title>\n ) : (\n props.title\n );\n\n const subtitle =\n typeof props.title === \"string\" ? (\n <Typography.Title\n className={RefinePageHeaderClassNames.SubTitle}\n level={5}\n type=\"secondary\"\n style={{ marginBottom: 0 }}\n >\n {props.subTitle}\n </Typography.Title>\n ) : (\n props.subTitle\n );\n\n return (\n <AntdPageHeader\n {...props}\n backIcon={backIcon}\n title={title}\n subTitle={subtitle}\n style={{ padding: 0, ...props.style }}\n >\n {children}\n </AntdPageHeader>\n );\n};\n","import React from \"react\";\nimport {\n AutoSaveIndicatorProps,\n useTranslate,\n AutoSaveIndicator as AutoSaveIndicatorCore,\n} from \"@refinedev/core\";\nimport { Typography, theme } from \"antd\";\nimport {\n EllipsisOutlined,\n SyncOutlined,\n CheckCircleOutlined,\n ExclamationCircleOutlined,\n} from \"@ant-design/icons\";\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n status,\n elements: {\n success = (\n <Message\n key=\"autoSave.success\"\n defaultMessage=\"saved\"\n icon={<CheckCircleOutlined />}\n />\n ),\n error = (\n <Message\n key=\"autoSave.error\"\n defaultMessage=\"auto save failure\"\n icon={<ExclamationCircleOutlined />}\n />\n ),\n loading = (\n <Message\n key=\"autoSave.loading\"\n defaultMessage=\"saving...\"\n icon={<SyncOutlined />}\n />\n ),\n idle = (\n <Message\n key=\"autoSave.idle\"\n defaultMessage=\"waiting for changes\"\n icon={<EllipsisOutlined />}\n />\n ),\n } = {},\n}) => {\n return (\n <AutoSaveIndicatorCore\n status={status}\n elements={{\n success,\n error,\n loading,\n idle,\n }}\n />\n );\n};\n\nconst Message = ({\n key,\n defaultMessage,\n icon,\n}: {\n key: string;\n defaultMessage: string;\n icon: React.ReactNode;\n}) => {\n const translate = useTranslate();\n const { token } = theme.useToken();\n\n return (\n <Typography.Text\n style={{\n marginRight: 5,\n color: token.colorTextTertiary,\n fontSize: \".8rem\",\n }}\n >\n {translate(key, defaultMessage)}\n <span style={{ marginLeft: \".2rem\" }}>{icon}</span>\n </Typography.Text>\n );\n};\n","import type { UploadFile, UploadChangeParam } from \"antd/lib/upload/interface\";\n\nexport const getValueFromEvent = (event: UploadChangeParam): UploadFile[] => {\n const { fileList } = event;\n\n return [...fileList];\n};\n\nexport function file2Base64(file: UploadFile): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n const resultHandler = () => {\n if (reader.result) {\n reader.removeEventListener(\"load\", resultHandler, false);\n\n resolve(reader.result as string);\n }\n };\n\n reader.addEventListener(\"load\", resultHandler, false);\n\n reader.readAsDataURL(file.originFileObj as Blob);\n reader.onerror = (error) => {\n reader.removeEventListener(\"load\", resultHandler, false);\n return reject(error);\n };\n });\n}\n","import { ThemeConfig } from \"antd\";\n\ntype ThemeNames =\n | \"Blue\"\n | \"Purple\"\n | \"Magenta\"\n | \"Red\"\n | \"Orange\"\n | \"Yellow\"\n | \"Green\";\n\ntype RefineThemes = Record<ThemeNames, ThemeConfig>;\n\nexport const RefineThemes: RefineThemes = {\n Blue: {\n token: {\n colorPrimary: \"#1677FF\",\n },\n },\n Purple: {\n token: {\n colorPrimary: \"#722ED1\",\n },\n },\n Magenta: {\n token: {\n colorPrimary: \"#EB2F96\",\n },\n },\n Red: {\n token: {\n colorPrimary: \"#F5222D\",\n },\n },\n Orange: {\n token: {\n colorPrimary: \"#FA541C\",\n },\n },\n Yellow: {\n token: {\n colorPrimary: \"#FAAD14\",\n },\n },\n Green: {\n token: {\n colorPrimary: \"#52C41A\",\n },\n },\n};\n"],"mappings":"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","names":["src_exports","__export","DevToolsContext","DevToolsContextProvider","DevtoolsEvent","hooksByScope","receive","scopes","send","module","__toCommonJS","acc","hook","scope","import_react","A","ws","event","payload","resolve","listener","__name","callback","e","receivedEvent","r","React","__devtools","port","children","values","setValues","setWs","wsInstance","unsubscribe","data","v","contextValues","src_exports","__export","getTrace","getXRay","useQuerySubscription","module","__toCommonJS","import_error_stack_parser","E","unrelatedFunctionName","cleanStack","stack","firstUnrelatedIndex","frame","REFINE_PACKAGE_FILEPATH_REGEXP","isRefineStack","filename","getPackageNameFromFilename","_a","match","name","error","g","ErrorStackParser","trace","import_devtools_shared","getResourcePath","__name","hookName","legacyKey","m","import_react","src_exports","__export","AccessControlContext","AuthPage","Authenticated","AutoSaveIndicator","CanAccess","ErrorComponent","GitHubBanner","KeyBuilder","LayoutWrapper","LoginPage","ReadyPage","Refine","ResourceContext","RouteChangeHandler","TranslationContext","UndoableQueue","WelcomePage","createTreeView","file2Base64","flattenObjectKeys","generateDefaultDocumentTitle","getDefaultFilter","getDefaultSortOrder","getNextPageParam","getPreviousPageParam","handleUseParams","importCSVMapper","keys","legacyResourceTransform","matchResourceFromRoute","parseTableParams","parseTableParamsFromQuery","pickDataProvider","pickNotDeprecated","propertyPathToArray","queryKeys","routeGenerator","setInitialFilters","setInitialSorters","stringifyTableParams","unionFilters","unionSorters","useActiveAuthProvider","useApiUrl","useAuthenticated","useBack","useBreadcrumb","useCan","useCanWithoutCache","useCancelNotification","useCheckError","useCreate","useCreateMany","useCustom","useCustomMutation","useDataProvider","useDelete","useDeleteMany","useExport","useForgotPassword","useForm","useGetIdentity","useGetLocale","useGetToPath","useGo","useHandleNotification","useImport","useInfiniteList","useInvalidate","useIsAuthenticated","useIsExistAuthentication","useLink","useList","useLiveMode","useLoadingOvertime","useLog","useLogList","useLogin","useLogout","useMany","useMenu","useMeta","useModal","useMutationMode","useNavigation","useNotification","useOnError","useOne","useParse","useParsed","usePermissions","usePublish","useRedirectionAfterSubmission","useRefineContext","useRegister","useResource","useResourceSubscription","useResourceWithRoute","useRouterContext","useRouterType","useSelect","useSetLocale","useShow","useSubscription","useSyncWithLocation","useTable","useTitle","useToPath","useTranslate","useUpdate","useUpdateMany","useUpdatePassword","useUserFriendlyName","useWarnAboutChange","userFriendlyResourceName","module","__toCommonJS","import_react","B","import_react_query","import_devtools_internal","import_qs","import_unionWith","import_differenceWith","import_warn_once","userFriendlySecond","__name","miliseconds","import_zip","import_fromPairs","data","mapData","item","headers","body","entry","Zs","fromPairs","Xs","zip","index","array","import_pluralize","resource","type","humanizeResource","humanizeString","Ao","pluralize","params","args","arg","arrayFindIndex","slice","sliceItem","sliceIndex","convertToLegacy","segments","newSegments","newParams","BaseKeyBuilder","legacy","ParamsKeyBuilder","paramsValue","DataIdRequiringKeyBuilder","idValue","DataIdsRequiringKeyBuilder","idsValue","el","DataResourceKeyBuilder","actionType","DataKeyBuilder","resourceName","mutationName","AuthKeyBuilder","AccessResourceKeyBuilder","AccessKeyBuilder","AuditActionKeyBuilder","AuditKeyBuilder","name","dataProviderName","meta","metaData","providerName","config","ids","id","queryKeysReplacement","preferLegacyKeys","hasPermission","permissions","action","i","isParameter","segment","splitToSegments","path","isSegmentCountsSame","route","resourceRoute","routeSegments","resourceRouteSegments","removeLeadingTrailingSlashes","checkBySegments","stdRoute","stdResourceRoute","getDefaultActionPath","parentPrefix","cleanParentPrefix","getParentResource","resources","_a","_b","parentName","getParentPrefixForResource","parents","parent","v","getActionRoutesFromResource","actions","actionList","pickMatchedRoute","routes","sanitizedRoutes","segmentsCount","eligibleRoutes","nonParametrizedRoutes","allFound","actionRoute","mostEligible","resourcesFromProps","tree","resourcesRouteObject","resourcesNameObject","child","text","DefaultLayout","children","tn","React","defaultRefineOptions","Go","RefineContext","Ho","RefineContextProvider","hasDashboard","mutationMode","warnWhenUnsavedChanges","syncWithLocation","undoableTimeout","DashboardPage","Title","Layout","Header","Sider","Footer","OffLayoutArea","catchAll","liveMode","onLiveEvent","options","handleRefineOptions","disableTelemetry","reactQueryClientConfig","reactQueryDevtoolConfig","_c","_d","_e","_f","_g","_h","optionsWithDefaults","disableTelemetryWithDefault","reactQueryWithDefaults","redirectPage","redirectFromProps","redirectOptions","sequentialPromises","promises","onEachResolve","onEachReject","results","promise","result","error","pickResource","identifier","r","handleMultiple","res","lastPage","pagination","cursor","current","pageSize","totalPages","_resources","pickRouteParams","s","prepareRouteParams","routeParams","acc","key","value","composeRoute","designatedRoute","resourceMeta","parsed","preparedRouteParams","match","fromParams","LegacyAuthContext","vt","LegacyAuthContextProvider","isProvided","authOperations","replace","loginFunc","registerFunc","logoutFunc","checkAuthFunc","AuthBindingsContext","AuthBindingsContextProvider","authBindings","handleLogin","handleRegister","handleLogout","handleCheck","handleForgotPassword","handleUpdatePassword","useLegacyAuthContext","useAuthBindingsContext","legacyAuthProvider","authProvider","handlePaginationParams","hasPagination","configPagination","hasPaginationString","mode","useMediaQuery","query","matches","setMatches","Hr","media","listener","safeTranslate","translate","defaultMessage","translated","actionPrefixMatcher","resourceNameFallback","resourceNameWithFallback","defaultTitle","suffix","autoGeneratedTitle","pn","UnsavedWarnContext","ir","UnsavedWarnContextProvider","warnWhen","setWarnWhen","_o","ln","mn","__initialized","yn","textTransformers","humanizeName","isNested","obj","isArray","prefix","currentPrefix","propertyPath","downloadInBrowser","filename","content","blob","link","blobUrl","url","sorter","sorters","filters","zr","qs","rest","compareFilters","left","right","compareSorters","permanentFilter","newFilters","prevFilters","f","Tn","warnOnce","Zo","unionWith","crudFilter","permanentSorter","newSorters","crudSorter","defaultFilter","Yo","differenceWith","defaultSorter","columnName","sortItem","operatorType","filter","operator","field","file","resolve","reject","reader","resultHandler","useKeys","useNewQueryKeys","v3LegacyAuthProviderCompatible","legacyGetPermission","getPermissions","queryResponse","Jo","qo","legacyQueryResponse","queryOptions","legacyGetUserIdentity","getIdentity","es","ts","useInvalidateAuthStore","queryClient","Dn","mutationOptions","invalidateAuthStore","routerType","go","push","open","close","legacyLogoutFromContext","logoutFromContext","mutation","os","variables","success","redirectTo","successNotification","redirectPath","redirect","buildSuccessNotification","buildNotification","ss","v3LegacyAuthProviderCompatibleMutation","useLocation","search","legacyLoginFromContext","loginFromContext","to","Ln","En","as","is","redirectPathFromAuth","legacyRegisterFromContext","registerFromContext","cs","ps","v3LegacyAuthProviderCompatibleForgotPasswordFromContext","forgotPasswordFromContext","ls","ms","legacyUpdatePasswordFromContext","updatePasswordFromContext","Un","Mn","ys","gs","checkAuth","check","Ts","Rs","legacyCheckErrorFromContext","onErrorFromContext","legacyLogout","logout","xs","shouldLogout","Ps","legacyIsProvided","isLoading","intervalProp","onIntervalProp","elapsedTime","setElapsedTime","gr","overtime","interval","onInterval","intervalFn","prevElapsedTime","resourceFromProp","errorNotification","liveParams","overtimeOptions","dataProvider","checkError","handleNotification","getMeta","pickedDataProvider","preferredMeta","prefferedFilters","prefferedSorters","prefferedHasPagination","prefferedPagination","isServerPagination","combinedMeta","notificationValues","isEnabled","getList","Fn","queryKey","pageParam","signal","rawData","notificationConfig","err","Sn","getOne","kn","An","getMany","Vn","Qn","import_isEqual","UndoableQueueContext","Kt","initialState","undoableQueueReducer","state","notificationItem","qr","isEqual","UndoableQueueContextProvider","notifications","notificationDispatch","notificationData","notification","select","mutationModeContext","undoableTimeoutContext","publish","log","invalidateStore","values","onCancel","mutationModePropOrContext","undoableTimeoutPropOrContext","doMutation","cancelMutation","optimisticUpdateMap","_","__","resourceKeys","previousQueries","previous","record","_data","_error","invalidates","dataProviderNameFromProp","context","resourceSingular","previousData","queryData","_fields","_operation","_variables","Bn","Kn","successNotificationFromProp","errorNotificationFromProp","Nn","ro","Gn","Wn","selectedDataProvider","val","response","resourcePlural","$n","so","mutationFn","On","no","_n","getApiUrl","method","custom","Zn","Yn","qn","ea","defaultDataProvider","DataContext","bs","DataContextProvider","dataProviders","ao","sa","paginationProperties","total","oa","LiveContext","vs","LiveContextProvider","liveProvider","useMemoized","ref","ia","ua","useDeepMemo","fn","dependencies","memoizedDependencies","pa","Ds","ResourceContextProvider","providedResources","RouterPickerContext","Ls","RouterPickerProvider","defaultBindings","RouterBindingsContext","uo","RouterBindingsProvider","router","bindings","co","parse","ga","Ta","oldProps","force","pickedResource","resourceWithRoute","useParams","legacyParams","resourceKeyToCheck","legacyResource","legacyId","legacyAction","legacyResourceName","legacyIdentifier","pickedFromProps","lo","xa","Ra","invalidationFilters","invalidationOptions","dp","channel","types","enabled","liveModeFromProp","dataProviderNameFromProps","liveDataContext","xr","liveModeFromContext","onLiveEventContextCallback","invalidate","subscription","callback","event","Pa","mo","liveContext","ha","Ca","NotificationContext","fo","NotificationContextProvider","va","Da","fallbackNotification","Ms","TranslationContextProvider","i18nProvider","yo","lang","To","import_papaparse","resourceFromProps","maxItemCount","exportOptions","unparseConfig","onError","download","setIsLoading","Ma","preparingData","hasUnparseConfig","ws","csv","wa","fileExtension","fileType","downloadFilename","import_debounce","actionFromProps","idFromProps","onMutationSuccess","onMutationError","queryMeta","mutationMeta","mutationModeProp","createMutationOptions","updateMutationOptions","autoSave","idFromRoute","actionFromRoute","inferredIdentifier","defaultId","setId","Ro","isCreate","isEdit","isClone","Ia","designatedRedirectAction","queryResult","isFetchingQuery","mutationResultCreate","mutateCreate","isLoadingCreate","mutationResultUpdate","mutateUpdate","isLoadingUpdate","autoSaveMutation","handleSubmitWithRedirect","onFinishCreate","onSuccess","responseId","onFinishAutoSaveMutation","onFinishAutoSave","Sa","debounce","allValues","idFromFunction","show","edit","list","create","Fa","resourceFromRoute","Aa","selectedResource","Ht","resourceSelect","getToPath","goFromRouter","handleResourceErrors","newTo","xo","useHistory","history","back","handleUrl","createUrl","resourceItem","createActionRoute","editUrl","encodedId","editActionRoute","cloneUrl","cloneActionRoute","showUrl","showActionRoute","listUrl","listActionRoute","showId","setShowId","ho","ka","import_chunk","paparseOptions","batchSize","onFinish","onProgress","processedAmount","setProcessedAmount","$t","totalAmount","setTotalAmount","createMany","mutationResult","handleCleanup","handleFinish","createdValues","handleChange","Qa","valueFns","currentAmount","chunks","Va","chunk","chunkedFns","chunkedValues","currentBatchLength","defaultVisible","visible","setVisible","hr","Co","defaultProvider","LegacyRouterContext","Ss","RouterContext","LegacyRouterContextProvider","Prompt","Link","routerContextValues","Ka","Fs","AccessControlContextProvider","can","sanitizeResource","icon","clone","restResource","_metaIcon","restMeta","_optionsIcon","restOptions","hookQueryOptions","globalOptions","$a","globalQueryOptions","mergedQueryOptions","_resource","paramsRest","sanitizedResource","Ha","Wa","canFromContext","ks","import_uniqBy","import_get","props","setSearch","Ye","setOptions","selectedOptions","setSelectedOptions","sort","optionLabel","optionValue","searchField","debounceValue","defaultValueQueryOptionsFromProps","fetchSize","defaultValue","onSearchFromProp","getOptionLabel","Qs","get","getOptionValue","defaultValues","defaultValueQueryOnSuccess","defaultValueQueryOptions","defaultValueQueryResult","defaultQueryOnSuccess","onSearch","combinedOptions","Oa","uniqBy","za","defaultPermanentFilter","defaultPermanentSorter","initialCurrent","initialPageSize","initialSorter","defaultSetFilterBehavior","initialFilter","filtersFromProp","sortersFromProp","syncWithLocationProp","syncWithLocationContext","pathname","parsedParams","isServerSideFilteringEnabled","isServerSideSortingEnabled","isPaginationEnabled","prefferedCurrent","prefferedPageSize","parsedCurrent","parsedPageSize","parsedSorter","parsedFilters","preferredInitialFilters","preferredPermanentFilters","preferredInitialSorters","preferredPermanentSorters","prefferedFilterBehavior","defaultCurrent","defaultPageSize","et","Xa","setSorters","setFilters","setCurrent","setPageSize","getCurrentQueryParams","Vs","createLinkForSyncWithLocation","currentQueryParams","stringifyParams","queryParams","br","vr","setFiltersAsMerge","setFiltersAsReplace","setFiltersWithSetter","setter","prev","setFiltersFn","setterOrFilters","behavior","setSortWithUnion","newSorter","AuditLogContext","Bs","AuditLogContextProvider","update","logMutationOptions","renameMutationOptions","Dr","auditLogContext","Ns","identityData","refetch","logPermissions","authorData","Ks","rename","author","Ya","Ja","qa","metaFromProps","ei","breadcrumbs","addBreadcrumb","parentResource","grandParentName","listActionOfResource","hrefRaw","href","actionLabel","ti","createResourceKey","currentParentResource","createTree","root","currentParent","currentTree","flatten","items","itemKey","getCleanPath","hideOnMissingParameter","legacyPath","getFriendlyName","cleanRoute","selectedKey","defaultOpenKeys","bo","prepareItem","composed","treeItems","treeMenuItems","prepare","preparedNodes","newItem","metaFromProp","_filters","_sorters","_current","_pageSize","additionalParams","errorMessage","setErrorMessage","tt","username","setUsername","he","password","setPassword","login","e","providers","registerLink","forgotPasswordLink","rememberMe","contentProps","wrapperProps","renderContent","formProps","title","hideForm","LegacyLink","ActiveLink","email","setEmail","ae","remember","setRemember","renderLink","renderProviders","provider","RegisterPage","loginLink","de","register","ForgotPasswordPage","Ae","forgotPassword","UpdatePasswordPage","updatePassword","newPassword","setNewPassword","ke","confirmPassword","setConfirmPassword","Ut","Qe","cards","ConfigSuccessPage","isTablet","isMobile","getGridTemplateColumns","getHeaderFontSize","getSubHeaderFontSize","me","card","Card","description","iconUrl","isHover","setIsHover","ConfigErrorPage","k","ErrorGradient","ErrorIcon","ExampleImplementation","Lr","REFINE_VERSION","useTelemetryData","auth","Rt","routerContext","dataContext","notificationContext","accessControlContext","refineOptions","auditLog","live","i18n","accessControl","projectId","encode","payload","stringifiedPayload","throughImage","src","img","throughFetch","transport","Telemetry","sent","Gs","encoded","checkRouterPropMisuse","otherProps","useRouterMisuseWarning","warned","Hs","legacyRouterProvider","routerProvider","notificationProvider","accessControlProvider","auditLogProvider","Er","Ri","notificationProviderContextValues","fe","RouterComponent","timeoutId","setTimeoutId","Lo","cancelNotification","newTimeoutId","LayoutFromProps","SiderFromProps","HeaderFromProps","TitleFromProps","FooterFromProps","OffLayoutAreaFromProps","zt","UnsavedPrompt","warnWhenListener","redirectOnFail","appendCurrentPathToQuery","fallbackContent","loadingContent","activeAuthProvider","hasAuthProvider","isLegacyAuth","isLegacyRouter","legacyLocation","isFetching","isSuccess","isAuthenticatedStatus","authenticatedRedirect","isAuthenticated","$e","appliedRedirect","toQuery","RedirectLegacy","Redirect","location","Ci","actionFromProp","paramsFromProp","fallback","onUnauthorized","componentQueryOptions","idFromPropsOrRoute","dt","CSSRules","re","styleTag","rule","GlowSmall","GlowBig","Text","style","status","Ve","Message","loading","idle","src_exports","__export","RefineButtonClassNames","RefineButtonTestIds","RefinePageHeaderClassNames","module","__toCommonJS","import_react","import_antd","import_sunflower_antd","import_core","useForm","__name","action","resource","onMutationSuccessProp","onMutationErrorProp","autoSave","submitOnEnter","warnWhenUnsavedChangesProp","redirect","successNotification","errorNotification","meta","metaData","queryMeta","mutationMeta","liveMode","liveParams","mutationMode","dataProviderName","onLiveEvent","invalidates","undoableTimeout","queryOptions","createMutationOptions","updateMutationOptions","idFromProps","overtimeOptions","optimisticUpdateMap","disableServerSideValidationProp","_a","_b","options","disableServerSideValidation","translate","formAnt","formSF","useFormSF","form","useFormCoreResult","useFormCore","error","_variables","_context","parsedErrors","fieldsValue","field","errors","key","fieldError","newError","formLoading","onFinish","queryResult","id","onFinishAutoSave","warnWhenUnsavedChangesRefine","setWarnWhen","warnWhenUnsavedChanges","React","onKeyUp","event","onValuesChange","changeValues","allValues","onFinishFromProps","values","saveButtonProps","import_react","import_core","import_core","useModal","__name","modalProps","show","close","visible","useCoreModal","e","_a","useModalForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","_a","_b","initiallySynced","setInitiallySynced","React","invalidate","resource","actionFromParams","identifier","parsed","go","getUserFriendlyName","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","id","setId","formLoading","onFinish","autoSaveProps","translate","warnWhen","setWarnWhen","show","close","modalProps","useModal","visible","sunflowerUseModal","_c","_d","openStatus","idFromParams","saveButtonPropsSF","handleClose","handleShow","showId","_visible","otherModalProps","newModalProps","values","import_react","import_core","useDrawerForm","__name","syncWithLocation","defaultVisible","autoSubmitClose","autoResetForm","autoSave","invalidates","rest","invalidate","initiallySynced","setInitiallySynced","React","visible","show","close","resource","actionFromParams","identifier","parsed","go","action","syncingId","syncWithLocationKey","useFormProps","useForm","form","formProps","formLoading","id","setId","onFinish","autoSaveProps","_a","_b","_c","_d","openStatus","idFromParams","translate","warnWhen","setWarnWhen","saveButtonProps","deleteButtonProps","handleClose","handleShow","showId","values","import_sunflower_antd","useStepsForm","__name","props","useFormProps","useForm","form","formProps","stepsPropsSunflower","useStepsFormSF","values","_a","import_react","import_antd","import_sunflower_antd","import_core","import_core","getDefaultSortOrder","__name","columnName","sorter","sort","getDefaultSortOrderCore","getDefaultFilter","filters","operatorType","getDefaultFilterCore","mapAntdSorterToCrudSorting","crudSorting","a","b","_a","_b","item","field","mapAntdFilterToCrudFilter","tableFilters","prevFilters","initialFilters","crudFilters","mapInitialFilter","acc","value","operator","i","p","import_core","import_react","PaginationLink","__name","to","element","LegacyLink","routerType","Link","React","e","useTable","__name","onSearch","initialCurrent","initialPageSize","hasPagination","pagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","syncWithLocation","resource","successNotification","errorNotification","queryOptions","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","tableQueryResult","current","setCurrent","pageSize","setPageSize","filters","setFilters","sorters","setSorters","sorter","setSorter","createLinkForSyncWithLocation","pageCount","overtime","useTableCore","breakpoint","form","formSF","useFormSF","liveMode","hasPaginationString","isPaginationEnabled","preferredInitialFilters","data","isFetched","isLoading","onChange","paginationState","tableFilters","crudFilters","mapAntdFilterToCrudFilter","crudSorting","mapAntdSorterToCrudSorting","onFinish","value","searchFilters","antdPagination","page","type","element","_a","link","PaginationLink","elementChildren","useEditableTable","__name","autoSubmitClose","props","table","useTable","edit","useForm","editId","setId","saveButtonProps","cancelButtonProps","editButtonProps","id","isEditing","values","result","import_core","useSelect","__name","props","queryResult","defaultValueQueryResult","onSearch","options","useSelectCore","import_core","useCheckboxGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","onLiveEvent","liveParams","meta","metaData","dataProviderName","queryResult","options","import_core","useRadioGroup","__name","resource","sort","sorters","filters","optionLabel","optionValue","queryOptions","fetchSize","pagination","liveMode","defaultValue","onLiveEvent","liveParams","meta","metaData","dataProviderName","queryResult","options","import_react","import_antd","import_core","useImport","__name","resourceFromProp","resourceName","mapData","item","paparseOptions","batchSize","onFinish","meta","metaData","dataProviderName","onProgressFromProp","t","resource","mutationResult","isLoading","handleChange","useImportCore","totalAmount","processedAmount","description","React","import_react","import_antd","import_core","useSimpleList","__name","resource","initialCurrent","initialPageSize","pagination","hasPagination","initialSorter","permanentSorter","initialFilter","permanentFilter","defaultSetFilterBehavior","filtersFromProp","sortersFromProp","onSearch","queryOptions","syncWithLocation","successNotification","errorNotification","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","sorters","sorter","filters","current","pageSize","pageCount","setFilters","setCurrent","setPageSize","setSorter","setSorters","createLinkForSyncWithLocation","queryResult","overtime","useTableCore","hasPaginationString","isPaginationEnabled","breakpoint","liveMode","form","data","isFetched","isLoading","onChange","page","onFinish","values","searchFilters","antdPagination","type","element","_a","link","PaginationLink","elementChildren","import_react","useFileUploadState","__name","isLoading","setIsloading","onChange","info","mapStatusToLoading","files","file","import_react","import_react","ThemedLayoutContext","React","ThemedLayoutContextProvider","__name","children","initialSiderCollapsed","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useSiderVisible","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_react","useThemedLayoutContext","__name","mobileSiderOpen","siderCollapsed","setMobileSiderOpen","setSiderCollapsed","ThemedLayoutContext","import_antd","import_react","import_react","import_antd","import_icons","UndoableNotification","__name","message","cancelMutation","undoableTimeout","React","time","notificationProvider","key","message","description","type","cancelMutation","undoableTimeout","staticNotification","React","UndoableNotification","useNotificationProvider","__name","notificationFromContext","notification","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","Sider","__name","TitleFromProps","render","meta","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","Title","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_core","import_antd","import_react","Header","__name","authProvider","user","React","AntdLayout","Layout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","HeaderToRender","isSmall","React","AntdLayout","import_react","import_core","Title","__name","collapsed","routerType","Link","LegacyLink","React","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSider","__name","TitleFromProps","render","meta","token","collapsed","setCollapsed","drawerOpen","setDrawerOpen","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitle","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","import_react","import_antd","import_core","ThemedHeader","__name","token","authProvider","user","React","AntdLayout","ThemedLayout","__name","children","Header","Sider","Title","Footer","OffLayoutArea","breakpoint","SiderToRender","ThemedSider","HeaderToRender","ThemedHeader","isSmall","React","AntdLayout","import_react","import_core","import_antd","defaultText","defaultIcon","React","ThemedTitle","__name","collapsed","icon","text","wrapperStyles","token","routerType","Link","LegacyLink","import_react","import_antd","import_react","import_antd","import_icons","import_core","drawerButtonStyles","ThemedSiderV2","__name","TitleFromProps","render","meta","fixed","activeItemDisabled","token","siderCollapsed","setSiderCollapsed","mobileSiderOpen","setMobileSiderOpen","useThemedLayoutContext","isExistAuthentication","routerType","NewLink","warnWhen","setWarnWhen","LegacyLink","Link","TitleFromContext","translate","menuItems","selectedKey","defaultOpenKeys","breakpoint","hasDashboard","authProvider","mutateLogout","isMobile","RenderToTitle","ThemedTitleV2","renderTreeView","tree","item","icon","label","route","key","name","children","parentName","options","React","isSelected","isRoute","linkStyle","handleLogout","logout","dashboard","items","renderSider","renderMenu","renderDrawerSider","drawerButtonStyles","siderStyles","collapsed","type","import_react","import_antd","import_core","ThemedHeaderV2","__name","isSticky","sticky","token","authProvider","user","headerStyles","React","AntdLayout","ThemedLayoutV2","__name","children","Header","Sider","Title","Footer","OffLayoutArea","initialSiderCollapsed","breakpoint","SiderToRender","ThemedSiderV2","HeaderToRender","ThemedHeaderV2","isSmall","hasSider","React","ThemedLayoutContextProvider","AntdLayout","import_react","import_core","import_antd","defaultText","defaultIcon","React","ThemedTitleV2","__name","collapsed","icon","text","wrapperStyles","token","routerType","Link","LegacyLink","import_react","import_antd","import_icons","import_core","import_ui_types","CreateButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","accessControlContext","accessControlEnabled","hideIfUnauthorized","translate","routerType","Link","LegacyLink","ActiveLink","generateCreateUrl","resource","data","createButtonDisabledTitle","createUrl","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","EditButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","accessControlContext","accessControlEnabled","hideIfUnauthorized","translate","routerType","Link","LegacyLink","ActiveLink","generateEditUrl","id","resource","data","createButtonDisabledTitle","editUrl","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","DeleteButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","onSuccess","mutationModeProp","children","successNotification","errorNotification","hideText","accessControl","metaData","meta","dataProviderName","confirmTitle","confirmOkText","confirmCancelText","invalidates","rest","accessControlContext","accessControlEnabled","hideIfUnauthorized","translate","id","resource","identifier","mutationModeContext","mutationMode","mutate","isLoading","variables","data","disabledTitle","setWarnWhen","React","value","import_react","import_antd","import_icons","import_core","import_ui_types","import_react_query","RefreshButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","dataProviderName","children","onClick","_meta","_metaData","rest","translate","queryClient","invalidates","resources","identifier","id","isInvalidating","handleInvalidate","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ShowButton","__name","resourceNameFromProps","propResourceNameOrRouteName","recordItemId","hideText","accessControl","meta","children","onClick","rest","accessControlContext","accessControlEnabled","hideIfUnauthorized","generateShowUrl","routerType","Link","LegacyLink","ActiveLink","translate","id","resource","data","createButtonDisabledTitle","showUrl","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ListButton","__name","resourceNameFromProps","propResourceNameOrRouteName","hideText","accessControl","meta","children","onClick","rest","_a","accessControlContext","accessControlEnabled","hideIfUnauthorized","generateListUrl","routerType","Link","LegacyLink","getUserFriendlyName","ActiveLink","translate","resource","identifier","data","createButtonDisabledTitle","listUrl","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ExportButton","__name","hideText","children","rest","translate","React","import_react","import_antd","import_icons","import_core","import_ui_types","SaveButton","__name","hideText","children","rest","translate","React","import_react","import_antd","import_icons","import_core","import_ui_types","CloneButton","__name","propResourceNameOrRouteName","resourceNameFromProps","recordItemId","hideText","accessControl","meta","children","onClick","rest","accessControlContext","accessControlEnabled","hideIfUnauthorized","generateCloneUrl","routerType","Link","LegacyLink","ActiveLink","translate","id","resource","data","createButtonDisabledTitle","cloneUrl","React","e","import_react","import_antd","import_icons","import_core","import_ui_types","ImportButton","__name","uploadProps","buttonProps","hideText","children","translate","React","import_react","import_antd","import_core","List","__name","canCreate","title","children","createButtonPropsFromProps","resourceFromProps","wrapperProps","contentProps","headerProps","breadcrumbFromProps","headerButtonProps","headerButtons","_a","_b","translate","globalBreadcrumb","routerType","getUserFriendlyName","resource","identifier","isCreateButtonVisible","breadcrumb","createButtonProps","defaultExtra","React","CreateButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Create","__name","title","saveButtonPropsFromProps","children","resourceFromProps","isLoading","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","_a","_b","translate","globalBreadcrumb","routerType","back","goBack","getUserFriendlyName","resource","action","identifier","breadcrumb","saveButtonProps","defaultFooterButtons","React","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Edit","__name","title","saveButtonPropsFromProps","mutationModeProp","recordItemId","children","deleteButtonPropsFromProps","canDelete","resourceFromProps","isLoading","dataProviderName","breadcrumbFromProps","wrapperProps","headerProps","contentProps","headerButtonProps","headerButtons","footerButtonProps","footerButtons","goBackFromProps","autoSaveProps","_a","_b","_c","translate","globalBreadcrumb","mutationModeContext","mutationMode","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","listButtonProps","refreshButtonProps","deleteButtonProps","saveButtonProps","defaultHeaderButtons","React","AutoSaveIndicator","ListButton","RefreshButton","defaultFooterButtons","DeleteButton","SaveButton","PageHeader","Breadcrumb","import_react","import_antd","import_core","Show","__name","title","canEdit","canDelete","isLoading","children","resourceFromProps","recordItemId","dataProviderName","breadcrumbFromProps","contentProps","headerProps","wrapperProps","headerButtons","footerButtons","footerButtonProps","headerButtonProps","goBackFromProps","_a","_b","_c","translate","globalBreadcrumb","routerType","back","go","goBack","legacyGoList","getUserFriendlyName","resource","action","idFromParams","identifier","goListPath","id","breadcrumb","hasList","isDeleteButtonVisible","isEditButtonVisible","listButtonProps","editButtonProps","deleteButtonProps","refreshButtonProps","defaultHeaderButtons","React","ListButton","EditButton","DeleteButton","RefreshButton","PageHeader","Breadcrumb","import_react","import_antd","TextField","__name","value","rest","React","import_react","import_antd","TagField","__name","value","rest","React","import_react","import_antd","EmailField","__name","value","rest","React","import_react","import_antd","ImageField","__name","value","imageTitle","rest","React","import_react","import_antd","import_icons","BooleanField","__name","value","valueLabelTrue","valueLabelFalse","trueIcon","React","falseIcon","rest","import_react","import_dayjs","import_antd","import_localizedFormat","DateField","__name","value","locales","dateFormat","rest","dayjs","LocalizedFormat","defaultLocale","React","import_react","FileField","__name","title","src","rest","React","UrlField","import_react","import_antd","UrlField","__name","children","value","rest","React","import_react","import_antd","toLocaleStringSupportsOptions","__name","NumberField","value","locale","options","rest","number","React","import_react","import_react_markdown","import_remark_gfm","MarkdownField","__name","value","React","ReactMarkdown","gfm","import_react","import_antd","import_dayjs","import_icons","import_core","FilterDropdown","__name","props","setSelectedKeys","confirm","clearFilters","mapValue","selectedKeys","children","value","setValue","translate","clearFilter","onFilter","_mappedValue","mappedValue","keys","dayjs","onChange","e","changeEvent","target","childrenWithProps","React","child","import_react","import_core","import_antd","import_icons","ErrorComponent","__name","errorMessage","setErrorMessage","translate","push","go","routerType","resource","action","React","import_react","import_core","import_antd","layoutStyles","containerStyles","titleStyles","imageContainer","LoginPage","__name","form","translate","authProvider","login","isLoading","CardTitle","React","titleStyles","layoutStyles","containerStyles","imageContainer","values","React","import_antd","import_icons","styles","ReadyPage","__name","import_react","import_core","WelcomePage","__name","React","WelcomePageFromCore","import_react","import_react","import_core","import_antd","layoutStyles","containerStyles","headStyles","bodyStyles","titleStyles","LoginPage","__name","providers","registerLink","forgotPasswordLink","rememberMe","contentProps","wrapperProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","login","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","RegisterPage","__name","providers","loginLink","wrapperProps","contentProps","renderContent","formProps","title","hideForm","token","form","translate","routerType","Link","LegacyLink","ActiveLink","authProvider","register","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","renderProviders","provider","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","ForgotPasswordPage","__name","loginLink","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","routerType","Link","LegacyLink","ActiveLink","forgotPassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","layoutStyles","import_react","import_core","import_antd","UpdatePasswordPage","__name","wrapperProps","contentProps","renderContent","formProps","title","token","form","translate","authProvider","updatePassword","isLoading","PageTitle","React","ThemedTitleV2","CardTitle","titleStyles","CardContent","headStyles","bodyStyles","containerStyles","values","getFieldValue","_","value","layoutStyles","AuthPage","__name","props","type","React","RegisterPage","ForgotPasswordPage","UpdatePasswordPage","LoginPage","import_react","import_core","import_antd","import_icons","Breadcrumb","__name","breadcrumbProps","showHome","hideIcons","meta","routerType","breadcrumbs","Link","LegacyLink","hasDashboard","resources","rootRouteResource","ActiveLink","breadCrumbItems","label","icon","href","React","AntdBreadcrumb","_a","_b","import_react","import_pro_layout","import_antd","import_icons","import_ui_types","PageHeader","__name","children","props","backIcon","React","title","subtitle","AntdPageHeader","import_react","import_core","import_antd","import_icons","AutoSaveIndicator","__name","status","success","React","Message","error","loading","idle","AutoSaveIndicatorCore","key","defaultMessage","icon","translate","token","getValueFromEvent","__name","event","fileList","RefineThemes"]}
|