@owp/core 1.29.0 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/{Close-Cm04EulE.js → Close-DnXyQZKh.js} +378 -307
  2. package/dist/Close-DnXyQZKh.js.map +1 -0
  3. package/dist/{OwpStoreProvider-CFq963Pl.js → OwpStoreProvider-Bx5p7ooQ.js} +2 -2
  4. package/dist/{OwpStoreProvider-CFq963Pl.js.map → OwpStoreProvider-Bx5p7ooQ.js.map} +1 -1
  5. package/dist/{OwpUtils-9lHSCdan.js → OwpUtils-C81bM1Gz.js} +2 -2
  6. package/dist/{OwpUtils-9lHSCdan.js.map → OwpUtils-C81bM1Gz.js.map} +1 -1
  7. package/dist/{QuickPanel-DlrhsNXW.js → QuickPanel-CO7Tyc8C.js} +2 -2
  8. package/dist/{QuickPanel-DlrhsNXW.js.map → QuickPanel-CO7Tyc8C.js.map} +1 -1
  9. package/dist/colors.js +3 -18
  10. package/dist/colors.js.map +1 -1
  11. package/dist/constants.js +19 -21
  12. package/dist/constants.js.map +1 -1
  13. package/dist/context.js +65 -38
  14. package/dist/context.js.map +1 -1
  15. package/dist/hooks.js +68 -98
  16. package/dist/hooks.js.map +1 -1
  17. package/dist/{index-Dn7pPU3W.js → index-KlA5Es4t.js} +7603 -7681
  18. package/dist/index-KlA5Es4t.js.map +1 -0
  19. package/dist/index.js +85 -75
  20. package/dist/{isTypedArray-xp-fB7W4.js → isTypedArray-DPyC49cI.js} +3 -3
  21. package/dist/{isTypedArray-xp-fB7W4.js.map → isTypedArray-DPyC49cI.js.map} +1 -1
  22. package/dist/{lazyLoadedSlices-BYAl2fil.js → lazyLoadedSlices-DC7yg4GT.js} +977 -931
  23. package/dist/lazyLoadedSlices-DC7yg4GT.js.map +1 -0
  24. package/dist/localStorageKeys-Che0CNci.js +10 -0
  25. package/dist/localStorageKeys-Che0CNci.js.map +1 -0
  26. package/dist/owp-app.css +1 -1
  27. package/dist/owpDark-DAY0F6Ph.js +21 -0
  28. package/dist/owpDark-DAY0F6Ph.js.map +1 -0
  29. package/dist/storageKeys-C6xHFiTo.js +42 -0
  30. package/dist/storageKeys-C6xHFiTo.js.map +1 -0
  31. package/dist/store.js +32 -33
  32. package/dist/{toUpper-K8I4frC5.js → toUpper-i_I6Tyuv.js} +2 -2
  33. package/dist/{toUpper-K8I4frC5.js.map → toUpper-i_I6Tyuv.js.map} +1 -1
  34. package/dist/treeGrid-DtKg-9uf.js +8 -0
  35. package/dist/treeGrid-DtKg-9uf.js.map +1 -0
  36. package/dist/{treeGridUtil-C46Qi5LG.js → treeGridUtil-WTM_djsN.js} +62 -61
  37. package/dist/{treeGridUtil-C46Qi5LG.js.map → treeGridUtil-WTM_djsN.js.map} +1 -1
  38. package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
  39. package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
  40. package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
  41. package/dist/types/components/layouts/shared-components/navigation/store/navigationSlice.d.ts +2 -2
  42. package/dist/types/context/OwpAppProvider.d.ts +4 -3
  43. package/dist/types/default-settings/OwpDefaultSettings.d.ts +25 -171
  44. package/dist/types/hooks/useStorage.d.ts +0 -13
  45. package/dist/types/index.d.ts +1 -0
  46. package/dist/types/store/owpSettingsSlice.d.ts +1 -456
  47. package/dist/usePageLockLoading-BUI_3PlR.js +39 -0
  48. package/dist/usePageLockLoading-BUI_3PlR.js.map +1 -0
  49. package/dist/useShortcuts-CCf98L8m.js +241 -0
  50. package/dist/useShortcuts-CCf98L8m.js.map +1 -0
  51. package/dist/useStorage-CuUmH4fD.js +50 -0
  52. package/dist/useStorage-CuUmH4fD.js.map +1 -0
  53. package/dist/useTreeGridExcelExport-N2nOKmkz.js +138 -0
  54. package/dist/useTreeGridExcelExport-N2nOKmkz.js.map +1 -0
  55. package/dist/utils.js +294 -293
  56. package/dist/utils.js.map +1 -1
  57. package/package.json +1 -1
  58. package/dist/Close-Cm04EulE.js.map +0 -1
  59. package/dist/index-Dn7pPU3W.js.map +0 -1
  60. package/dist/lazyLoadedSlices-BYAl2fil.js.map +0 -1
  61. package/dist/storageKeys-DRzte9LZ.js +0 -15
  62. package/dist/storageKeys-DRzte9LZ.js.map +0 -1
  63. package/dist/treeGrid-DRAoPLXh.js +0 -35
  64. package/dist/treeGrid-DRAoPLXh.js.map +0 -1
  65. package/dist/useOwpTranslation-CMrtqKkT.js +0 -190
  66. package/dist/useOwpTranslation-CMrtqKkT.js.map +0 -1
  67. package/dist/useStorage-BA0D8KA7.js +0 -67
  68. package/dist/useStorage-BA0D8KA7.js.map +0 -1
  69. package/dist/useTreeGridExcelExport-DLMecvHS.js +0 -186
  70. package/dist/useTreeGridExcelExport-DLMecvHS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"QuickPanel-DlrhsNXW.js","sources":["../src/components/layouts/shared-components/quickPanel/QuickPanel.tsx"],"sourcesContent":["import { OwpScrollbars } from '@/components/OwpScrollbars';\nimport { OwpSvgIcon } from '@/components/OwpSvgIcon';\nimport { useAppDispatch, useAppSelector } from '@/store/hooks';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport { styled } from '@mui/material/styles';\nimport SwipeableDrawer from '@mui/material/SwipeableDrawer';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { format } from 'date-fns/format';\nimport { useState } from 'react';\nimport { selectQuickPanelData, selectQuickPanelOpen, toggleQuickPanel } from './quickPanelSlice';\n\nconst StyledSwipeableDrawer = styled(SwipeableDrawer)(() => ({\n '& .MuiDrawer-paper': {\n width: 280,\n },\n}));\n\n/**\n * The quick panel.\n */\nfunction QuickPanel() {\n const dispatch = useAppDispatch();\n const data = useAppSelector(selectQuickPanelData);\n const open = useAppSelector(selectQuickPanelOpen);\n\n const [checked, setChecked] = useState<string[]>(['notifications']);\n\n const handleToggle = (value: string) => () => {\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n };\n\n return (\n <StyledSwipeableDrawer\n open={open as boolean}\n anchor=\"right\"\n onOpen={() => {}}\n onClose={() => dispatch(toggleQuickPanel())}\n disableSwipeToOpen\n >\n <OwpScrollbars>\n <ListSubheader component=\"div\">Today</ListSubheader>\n\n <div className=\"mb-0 px-24 py-16\">\n <Typography className=\"mb-12 text-5xl\" color=\"text.secondary\">\n {format(new Date(), 'eeee')}\n </Typography>\n <div className=\"flex\">\n <Typography className=\"text-5xl leading-none\" color=\"text.secondary\">\n {format(new Date(), 'dd')}\n </Typography>\n <Typography className=\"text-15 leading-none\" color=\"text.secondary\">\n th\n </Typography>\n <Typography className=\"text-5xl leading-none\" color=\"text.secondary\">\n {format(new Date(), 'MMMM')}\n </Typography>\n </div>\n </div>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Events</ListSubheader>\n {data &&\n (data as any).events.map((event: any) => (\n <ListItem key={event.id}>\n <ListItemText primary={event.title} secondary={event.detail} />\n </ListItem>\n ))}\n </List>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Notes</ListSubheader>\n {data &&\n (data as any).notes.map((note: any) => (\n <ListItem key={note.id}>\n <ListItemText primary={note.title} secondary={note.detail} />\n </ListItem>\n ))}\n </List>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Quick Settings</ListSubheader>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:notifications</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Notifications\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"primary\"\n onChange={handleToggle('notifications')}\n checked={checked.indexOf('notifications') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:cloud</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Cloud Sync\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"secondary\"\n onChange={handleToggle('cloudSync')}\n checked={checked.indexOf('cloudSync') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:brightness_high</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Retro Thrusters\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"primary\"\n onChange={handleToggle('retroThrusters')}\n checked={checked.indexOf('retroThrusters') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n </List>\n </OwpScrollbars>\n </StyledSwipeableDrawer>\n );\n}\n\nexport default QuickPanel;\n"],"names":["StyledSwipeableDrawer","styled","SwipeableDrawer","QuickPanel","dispatch","useAppDispatch","data","useAppSelector","selectQuickPanelData","open","selectQuickPanelOpen","checked","setChecked","useState","handleToggle","__name","value","currentIndex","newChecked","jsx","toggleQuickPanel","OwpScrollbars","ListSubheader","jsxs","Typography","format","Divider","List","event","ListItem","ListItemText","note","ListItemIcon","OwpSvgIcon","ListItemSecondaryAction","Switch"],"mappings":"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"}
1
+ {"version":3,"file":"QuickPanel-CO7Tyc8C.js","sources":["../src/components/layouts/shared-components/quickPanel/QuickPanel.tsx"],"sourcesContent":["import { OwpScrollbars } from '@/components/OwpScrollbars';\nimport { OwpSvgIcon } from '@/components/OwpSvgIcon';\nimport { useAppDispatch, useAppSelector } from '@/store/hooks';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport { styled } from '@mui/material/styles';\nimport SwipeableDrawer from '@mui/material/SwipeableDrawer';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { format } from 'date-fns/format';\nimport { useState } from 'react';\nimport { selectQuickPanelData, selectQuickPanelOpen, toggleQuickPanel } from './quickPanelSlice';\n\nconst StyledSwipeableDrawer = styled(SwipeableDrawer)(() => ({\n '& .MuiDrawer-paper': {\n width: 280,\n },\n}));\n\n/**\n * The quick panel.\n */\nfunction QuickPanel() {\n const dispatch = useAppDispatch();\n const data = useAppSelector(selectQuickPanelData);\n const open = useAppSelector(selectQuickPanelOpen);\n\n const [checked, setChecked] = useState<string[]>(['notifications']);\n\n const handleToggle = (value: string) => () => {\n const currentIndex = checked.indexOf(value);\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(value);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n };\n\n return (\n <StyledSwipeableDrawer\n open={open as boolean}\n anchor=\"right\"\n onOpen={() => {}}\n onClose={() => dispatch(toggleQuickPanel())}\n disableSwipeToOpen\n >\n <OwpScrollbars>\n <ListSubheader component=\"div\">Today</ListSubheader>\n\n <div className=\"mb-0 px-24 py-16\">\n <Typography className=\"mb-12 text-5xl\" color=\"text.secondary\">\n {format(new Date(), 'eeee')}\n </Typography>\n <div className=\"flex\">\n <Typography className=\"text-5xl leading-none\" color=\"text.secondary\">\n {format(new Date(), 'dd')}\n </Typography>\n <Typography className=\"text-15 leading-none\" color=\"text.secondary\">\n th\n </Typography>\n <Typography className=\"text-5xl leading-none\" color=\"text.secondary\">\n {format(new Date(), 'MMMM')}\n </Typography>\n </div>\n </div>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Events</ListSubheader>\n {data &&\n (data as any).events.map((event: any) => (\n <ListItem key={event.id}>\n <ListItemText primary={event.title} secondary={event.detail} />\n </ListItem>\n ))}\n </List>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Notes</ListSubheader>\n {data &&\n (data as any).notes.map((note: any) => (\n <ListItem key={note.id}>\n <ListItemText primary={note.title} secondary={note.detail} />\n </ListItem>\n ))}\n </List>\n <Divider />\n <List>\n <ListSubheader component=\"div\">Quick Settings</ListSubheader>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:notifications</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Notifications\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"primary\"\n onChange={handleToggle('notifications')}\n checked={checked.indexOf('notifications') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:cloud</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Cloud Sync\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"secondary\"\n onChange={handleToggle('cloudSync')}\n checked={checked.indexOf('cloudSync') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n <ListItem>\n <ListItemIcon className=\"min-w-36\">\n <OwpSvgIcon>material-outline:brightness_high</OwpSvgIcon>\n </ListItemIcon>\n <ListItemText primary=\"Retro Thrusters\" />\n <ListItemSecondaryAction>\n <Switch\n color=\"primary\"\n onChange={handleToggle('retroThrusters')}\n checked={checked.indexOf('retroThrusters') !== -1}\n />\n </ListItemSecondaryAction>\n </ListItem>\n </List>\n </OwpScrollbars>\n </StyledSwipeableDrawer>\n );\n}\n\nexport default QuickPanel;\n"],"names":["StyledSwipeableDrawer","styled","SwipeableDrawer","QuickPanel","dispatch","useAppDispatch","data","useAppSelector","selectQuickPanelData","open","selectQuickPanelOpen","checked","setChecked","useState","handleToggle","__name","value","currentIndex","newChecked","jsx","toggleQuickPanel","OwpScrollbars","ListSubheader","jsxs","Typography","format","Divider","List","event","ListItem","ListItemText","note","ListItemIcon","OwpSvgIcon","ListItemSecondaryAction","Switch"],"mappings":";;;;;;;;;;;;;;;;AAkBA,MAAMA,IAAwBC,EAAOC,CAAe,EAAE,OAAO;AAAA,EAC3D,sBAAsB;AAAA,IACpB,OAAO;AAAA,EAAA;AAEX,EAAE;AAKF,SAASC,IAAa;AACpB,QAAMC,IAAWC,EAAA,GACXC,IAAOC,EAAeC,CAAoB,GAC1CC,IAAOF,EAAeG,CAAoB,GAE1C,CAACC,GAASC,CAAU,IAAIC,EAAmB,CAAC,eAAe,CAAC,GAE5DC,IAAe,gBAAAC,EAAA,CAACC,MAAkB,MAAM;AAC5C,UAAMC,IAAeN,EAAQ,QAAQK,CAAK,GACpCE,IAAa,CAAC,GAAGP,CAAO;AAE9B,IAAIM,MAAiB,KACnBC,EAAW,KAAKF,CAAK,IAErBE,EAAW,OAAOD,GAAc,CAAC,GAGnCL,EAAWM,CAAU;AAAA,EACvB,GAXqB;AAarB,SACE,gBAAAC;AAAA,IAACnB;AAAA,IAAA;AAAA,MACC,MAAAS;AAAA,MACA,QAAO;AAAA,MACP,QAAQ,gBAAAM,EAAA,MAAM;AAAA,MAAC,GAAP;AAAA,MACR,SAAS,gBAAAA,EAAA,MAAMX,EAASgB,GAAkB,GAAjC;AAAA,MACT,oBAAkB;AAAA,MAElB,4BAACC,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAF,EAACG,GAAA,EAAc,WAAU,OAAM,UAAA,SAAK;AAAA,QAEpC,gBAAAC,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,UAAA,gBAAAJ,EAACK,GAAA,EAAW,WAAU,kBAAiB,OAAM,kBAC1C,YAAO,oBAAI,QAAQ,MAAM,EAAA,CAC5B;AAAA,UACA,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,YAAA,gBAAAJ,EAACK,GAAA,EAAW,WAAU,yBAAwB,OAAM,kBACjD,YAAO,oBAAI,QAAQ,IAAI,EAAA,CAC1B;AAAA,8BACCA,GAAA,EAAW,WAAU,wBAAuB,OAAM,kBAAiB,UAAA,MAEpE;AAAA,YACA,gBAAAL,EAACK,GAAA,EAAW,WAAU,yBAAwB,OAAM,kBACjD,UAAAC,EAAO,oBAAI,KAAA,GAAQ,MAAM,EAAA,CAC5B;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,GACF;AAAA,0BACCC,GAAA,EAAQ;AAAA,0BACRC,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAR,EAACG,GAAA,EAAc,WAAU,OAAM,UAAA,UAAM;AAAA,UACpChB,KACEA,EAAa,OAAO,IAAI,CAACsB,wBACvBC,GAAA,EACC,UAAA,gBAAAV,EAACW,KAAa,SAASF,EAAM,OAAO,WAAWA,EAAM,QAAQ,EAAA,GADhDA,EAAM,EAErB,CACD;AAAA,QAAA,GACL;AAAA,0BACCF,GAAA,EAAQ;AAAA,0BACRC,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAR,EAACG,GAAA,EAAc,WAAU,OAAM,UAAA,SAAK;AAAA,UACnChB,KACEA,EAAa,MAAM,IAAI,CAACyB,wBACtBF,GAAA,EACC,UAAA,gBAAAV,EAACW,KAAa,SAASC,EAAK,OAAO,WAAWA,EAAK,QAAQ,EAAA,GAD9CA,EAAK,EAEpB,CACD;AAAA,QAAA,GACL;AAAA,0BACCL,GAAA,EAAQ;AAAA,0BACRC,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAR,EAACG,GAAA,EAAc,WAAU,OAAM,UAAA,kBAAc;AAAA,4BAC5CO,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAV,EAACa,KAAa,WAAU,YACtB,UAAA,gBAAAb,EAACc,GAAA,EAAW,4CAA8B,EAAA,CAC5C;AAAA,YACA,gBAAAd,EAACW,GAAA,EAAa,SAAQ,gBAAA,CAAgB;AAAA,8BACrCI,GAAA,EACC,UAAA,gBAAAf;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAUrB,EAAa,eAAe;AAAA,gBACtC,SAASH,EAAQ,QAAQ,eAAe,MAAM;AAAA,cAAA;AAAA,YAAA,EAChD,CACF;AAAA,UAAA,GACF;AAAA,4BACCkB,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAV,EAACa,KAAa,WAAU,YACtB,UAAA,gBAAAb,EAACc,GAAA,EAAW,oCAAsB,EAAA,CACpC;AAAA,YACA,gBAAAd,EAACW,GAAA,EAAa,SAAQ,aAAA,CAAa;AAAA,8BAClCI,GAAA,EACC,UAAA,gBAAAf;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAUrB,EAAa,WAAW;AAAA,gBAClC,SAASH,EAAQ,QAAQ,WAAW,MAAM;AAAA,cAAA;AAAA,YAAA,EAC5C,CACF;AAAA,UAAA,GACF;AAAA,4BACCkB,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAV,EAACa,KAAa,WAAU,YACtB,UAAA,gBAAAb,EAACc,GAAA,EAAW,8CAAgC,EAAA,CAC9C;AAAA,YACA,gBAAAd,EAACW,GAAA,EAAa,SAAQ,kBAAA,CAAkB;AAAA,8BACvCI,GAAA,EACC,UAAA,gBAAAf;AAAA,cAACgB;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAUrB,EAAa,gBAAgB;AAAA,gBACvC,SAASH,EAAQ,QAAQ,gBAAgB,MAAM;AAAA,cAAA;AAAA,YAAA,EACjD,CACF;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAjHSI,EAAAZ,GAAA;"}
package/dist/colors.js CHANGED
@@ -1,20 +1,5 @@
1
+ import { o } from "./owpDark-DAY0F6Ph.js";
1
2
  const f = {
2
- 50: "#e5e6e8",
3
- 100: "#bec1c5",
4
- 200: "#92979f",
5
- 300: "#666d78",
6
- 400: "#464e5b",
7
- 500: "#252f3e",
8
- 600: "#212a38",
9
- 700: "#1b2330",
10
- 800: "#161d28",
11
- 900: "#0d121b",
12
- A100: "#5d8eff",
13
- A200: "#2a6aff",
14
- A400: "#004af6",
15
- A700: "#0042dd",
16
- contrastDefaultColor: "light"
17
- }, e = {
18
3
  50: "#e4fafd",
19
4
  100: "#bdf2fa",
20
5
  200: "#91e9f7",
@@ -32,7 +17,7 @@ const f = {
32
17
  contrastDefaultColor: "dark"
33
18
  };
34
19
  export {
35
- f as owpDark,
36
- e as skyBlue
20
+ o as owpDark,
21
+ f as skyBlue
37
22
  };
38
23
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["../src/colors/owpDark.ts","../src/colors/skyBlue.ts"],"sourcesContent":["/**\n * The OwpDark object is a color palette for the Owp application.\n */\nexport const owpDark = {\n 50: '#e5e6e8',\n 100: '#bec1c5',\n 200: '#92979f',\n 300: '#666d78',\n 400: '#464e5b',\n 500: '#252f3e',\n 600: '#212a38',\n 700: '#1b2330',\n 800: '#161d28',\n 900: '#0d121b',\n A100: '#5d8eff',\n A200: '#2a6aff',\n A400: '#004af6',\n A700: '#0042dd',\n contrastDefaultColor: 'light',\n};\n","/**\n * The skyBlue object is a color palette for the Owp application.\n */\nexport const skyBlue = {\n 50: '#e4fafd',\n 100: '#bdf2fa',\n 200: '#91e9f7',\n 300: '#64e0f3',\n 400: '#43daf1',\n 500: '#22d3ee',\n 600: '#1eceec',\n 700: '#19c8e9',\n 800: '#14c2e7',\n 900: '#0cb7e2',\n A100: '#ffffff',\n A200: '#daf7ff',\n A400: '#a7ecff',\n A700: '#8de6ff',\n contrastDefaultColor: 'dark',\n};\n"],"names":["owpDark","skyBlue"],"mappings":"AAGO,MAAMA,IAAU;AAAA,EACrB,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,sBAAsB;AACxB,GChBaC,IAAU;AAAA,EACrB,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,sBAAsB;AACxB;"}
1
+ {"version":3,"file":"colors.js","sources":["../src/colors/skyBlue.ts"],"sourcesContent":["/**\n * The skyBlue object is a color palette for the Owp application.\n */\nexport const skyBlue = {\n 50: '#e4fafd',\n 100: '#bdf2fa',\n 200: '#91e9f7',\n 300: '#64e0f3',\n 400: '#43daf1',\n 500: '#22d3ee',\n 600: '#1eceec',\n 700: '#19c8e9',\n 800: '#14c2e7',\n 900: '#0cb7e2',\n A100: '#ffffff',\n A200: '#daf7ff',\n A400: '#a7ecff',\n A700: '#8de6ff',\n contrastDefaultColor: 'dark',\n};\n"],"names":["skyBlue"],"mappings":";AAGO,MAAMA,IAAU;AAAA,EACrB,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,sBAAsB;AACxB;"}
package/dist/constants.js CHANGED
@@ -1,24 +1,22 @@
1
- import { f as a, d as s, a as G, c as e, D as C, b as I, T as c, e as n, g as D, h as N } from "./treeGrid-DRAoPLXh.js";
2
- import { S as o } from "./storageKeys-DRzte9LZ.js";
3
- const L = ["kr", "en", "lc"], E = {
4
- accessToken: "jwt_access_token",
5
- currentLanguage: "CurrentLanguage"
6
- }, _ = E.accessToken, T = E.currentLanguage;
1
+ import { e as A, d as T, a as R, c as G, D as a, b as C, S as s } from "./storageKeys-C6xHFiTo.js";
2
+ import { C as D, L as N, S as O } from "./localStorageKeys-Che0CNci.js";
3
+ import { T as U, a as F, b as H, c as o } from "./treeGrid-DtKg-9uf.js";
4
+ const E = ["kr", "en", "lc"];
7
5
  export {
8
- T as CURRENT_LANGUAGE,
9
- a as DEFAULT_CELL_ALIGNMENT,
10
- s as DEFAULT_HEADER_FILL,
11
- G as DEFAULT_HEADER_FONT,
12
- e as DEFAULT_THIN_BORDER,
13
- C as DEFAULT_VALUE_FONT,
14
- I as DEFAULT_WRAP_CELL_ALIGNMENT,
15
- L as FALLBACK_LANGUAGE_LIST,
16
- E as LOCAL_STORAGE_KEYS,
17
- _ as STORAGE_ACCESS_TOKEN_KEY,
18
- o as STORAGE_KEYS,
19
- c as TREEGRID_CELL_HIGHLIGHT_CLASS,
20
- n as TREEGRID_CELL_HIGHLIGHT_COLOR,
21
- D as TREEGRID_INPUT_CELL_COLOR,
22
- N as TREEGRID_WARNING_CELL_COLOR
6
+ D as CURRENT_LANGUAGE,
7
+ A as DEFAULT_CELL_ALIGNMENT,
8
+ T as DEFAULT_HEADER_FILL,
9
+ R as DEFAULT_HEADER_FONT,
10
+ G as DEFAULT_THIN_BORDER,
11
+ a as DEFAULT_VALUE_FONT,
12
+ C as DEFAULT_WRAP_CELL_ALIGNMENT,
13
+ E as FALLBACK_LANGUAGE_LIST,
14
+ N as LOCAL_STORAGE_KEYS,
15
+ O as STORAGE_ACCESS_TOKEN_KEY,
16
+ s as STORAGE_KEYS,
17
+ U as TREEGRID_CELL_HIGHLIGHT_CLASS,
18
+ F as TREEGRID_CELL_HIGHLIGHT_COLOR,
19
+ H as TREEGRID_INPUT_CELL_COLOR,
20
+ o as TREEGRID_WARNING_CELL_COLOR
23
21
  };
24
22
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../src/constants/language.ts","../src/constants/localStorageKeys.ts"],"sourcesContent":["export const FALLBACK_LANGUAGE_LIST = ['kr', 'en', 'lc'];\n","/**\n * 로컬 스토리지 키 목록\n */\nexport const LOCAL_STORAGE_KEYS = {\n accessToken: 'jwt_access_token',\n currentLanguage: 'CurrentLanguage',\n} as const;\n\nexport const STORAGE_ACCESS_TOKEN_KEY = LOCAL_STORAGE_KEYS.accessToken;\nexport const CURRENT_LANGUAGE = LOCAL_STORAGE_KEYS.currentLanguage;\n"],"names":["FALLBACK_LANGUAGE_LIST","LOCAL_STORAGE_KEYS","STORAGE_ACCESS_TOKEN_KEY","CURRENT_LANGUAGE"],"mappings":";;AAAO,MAAMA,IAAyB,CAAC,MAAM,MAAM,IAAI,GCG1CC,IAAqB;AAAA,EAChC,aAAa;AAAA,EACb,iBAAiB;AACnB,GAEaC,IAA2BD,EAAmB,aAC9CE,IAAmBF,EAAmB;"}
1
+ {"version":3,"file":"constants.js","sources":["../src/constants/language.ts"],"sourcesContent":["export const FALLBACK_LANGUAGE_LIST = ['kr', 'en', 'lc'];\n"],"names":["FALLBACK_LANGUAGE_LIST"],"mappings":";;;AAAO,MAAMA,IAAyB,CAAC,MAAM,MAAM,IAAI;"}
package/dist/context.js CHANGED
@@ -1,29 +1,55 @@
1
- var f = Object.defineProperty;
2
- var l = (i, m) => f(i, "name", { value: m, configurable: !0 });
3
- import { O as p, u as a } from "./useOwpTranslation-CMrtqKkT.js";
4
- import { a as M } from "./useOwpTranslation-CMrtqKkT.js";
5
- import { j as e, a as d } from "./emotion-react-jsx-runtime.browser.esm-Cb9H5d3i.js";
6
- import { StyledEngineProvider as g } from "@mui/material/styles";
7
- import { QueryClient as O, QueryClientProvider as h } from "@tanstack/react-query";
8
- import { useRef as S } from "react";
9
- import { O as w } from "./OwpStoreProvider-CFq963Pl.js";
10
- import { O as x, C as F } from "./Close-Cm04EulE.js";
11
- import C from "@mui/material/IconButton";
12
- import { DialogsProvider as y } from "@toolpad/core/useDialogs";
13
- import { SnackbarProvider as A, closeSnackbar as L } from "notistack";
14
- function U({
1
+ var d = Object.defineProperty;
2
+ var s = (i, m) => d(i, "name", { value: m, configurable: !0 });
3
+ import { O, u as S } from "./useShortcuts-CCf98L8m.js";
4
+ import { a as nt } from "./useShortcuts-CCf98L8m.js";
5
+ import { j as o, a as h } from "./emotion-react-jsx-runtime.browser.esm-Cb9H5d3i.js";
6
+ import { H as L } from "./lazyLoadedSlices-DC7yg4GT.js";
7
+ import { StyledEngineProvider as w } from "@mui/material/styles";
8
+ import { QueryClient as C, QueryClientProvider as x } from "@tanstack/react-query";
9
+ import { useRef as p } from "react";
10
+ import { O as F } from "./OwpStoreProvider-Bx5p7ooQ.js";
11
+ import { m as f } from "./OwpUtils-C81bM1Gz.js";
12
+ import { O as A, a as y, b as T, C as j } from "./Close-DnXyQZKh.js";
13
+ import { u as z, a as D } from "./usePageLockLoading-BUI_3PlR.js";
14
+ import "@mui/material";
15
+ import { DialogsProvider as H } from "@toolpad/core/useDialogs";
16
+ import "react-i18next";
17
+ import "./useStorage-CuUmH4fD.js";
18
+ import "dayjs";
19
+ import "exceljs";
20
+ import { SnackbarProvider as I, closeSnackbar as N } from "notistack";
21
+ import "./storageKeys-C6xHFiTo.js";
22
+ import R from "@mui/material/IconButton";
23
+ function tt({
15
24
  children: i,
16
25
  queryClient: m,
17
26
  queryClientConfig: t,
18
- storePreloadedState: o,
19
- styledEngineProviderProps: r = { injectFirst: !0 },
20
- ...u
27
+ storePreloadedState: e,
28
+ styledEngineProviderProps: u = { injectFirst: !0 },
29
+ ...r
21
30
  }) {
22
- const n = S(void 0), s = m ?? n.current ?? (n.current = new O(t));
23
- return /* @__PURE__ */ e(p, { ...u, children: /* @__PURE__ */ e(w, { preloadedState: o, children: /* @__PURE__ */ e(h, { client: s, children: /* @__PURE__ */ e(g, { ...r, children: i }) }) }) });
31
+ const c = p(void 0), n = p(void 0), a = m ?? c.current ?? (c.current = new C(t));
32
+ if (!n.current) {
33
+ const g = L(
34
+ r.configs.settingsConfig,
35
+ r.configs.themesConfig
36
+ );
37
+ n.current = f(
38
+ {},
39
+ {
40
+ owpSettings: {
41
+ initial: g,
42
+ defaults: f({}, g),
43
+ current: f({}, g)
44
+ }
45
+ },
46
+ e
47
+ );
48
+ }
49
+ return /* @__PURE__ */ o(O, { ...r, children: /* @__PURE__ */ o(F, { preloadedState: n.current, children: /* @__PURE__ */ o(x, { client: a, children: /* @__PURE__ */ o(w, { ...u, children: i }) }) }) });
24
50
  }
25
- l(U, "OwpCoreProvider");
26
- const c = {
51
+ s(tt, "OwpCoreProvider");
52
+ const l = {
27
53
  maxSnack: 5,
28
54
  autoHideDuration: 3e3,
29
55
  anchorOrigin: {
@@ -37,38 +63,39 @@ const c = {
37
63
  classes: {
38
64
  containerRoot: "bottom-0 right-0 mb-52 md:mb-68 mr-8 lg:mr-80"
39
65
  },
40
- action: /* @__PURE__ */ l((i) => /* @__PURE__ */ e(C, { onClick: /* @__PURE__ */ l(() => L(i), "onClick"), children: /* @__PURE__ */ e(F, { fontSize: "small", sx: { color: "#FFFFFF" } }) }), "action")
66
+ action: /* @__PURE__ */ s((i) => /* @__PURE__ */ o(R, { onClick: /* @__PURE__ */ s(() => N(i), "onClick"), children: /* @__PURE__ */ o(j, { fontSize: "small", sx: { color: "#FFFFFF" } }) }), "action")
41
67
  };
42
- function G({
68
+ function ot({
43
69
  children: i,
44
70
  dialogsProviderProps: m,
45
71
  snackbarProviderProps: t
46
72
  }) {
47
- const { env: o } = a(), r = {
48
- ...c,
73
+ const { env: e } = S(), u = z(), r = D(), c = {
74
+ ...l,
49
75
  ...t,
50
76
  style: {
51
- ...c.style,
77
+ ...l.style,
52
78
  ...t == null ? void 0 : t.style
53
79
  },
54
80
  classes: {
55
- ...c.classes,
81
+ ...l.classes,
56
82
  ...t == null ? void 0 : t.classes
57
83
  },
58
- action: (t == null ? void 0 : t.action) ?? c.action
59
- }, u = Number(o == null ? void 0 : o.autoLogoutTimeout), n = Number.isFinite(u) ? u : void 0;
60
- return /* @__PURE__ */ e(y, { ...m, children: /* @__PURE__ */ d(A, { ...r, children: [
84
+ action: (t == null ? void 0 : t.action) ?? l.action
85
+ }, n = Number(e == null ? void 0 : e.autoLogoutTimeout), a = Number.isFinite(n) ? n : void 0;
86
+ return r ? /* @__PURE__ */ o(A, { className: "min-h-screen" }) : /* @__PURE__ */ o(H, { ...m, children: /* @__PURE__ */ h(I, { ...c, children: [
61
87
  i,
62
- (o == null ? void 0 : o.isAutoLogoutEnabled) && /* @__PURE__ */ e(x, { timeout: n })
88
+ /* @__PURE__ */ o(y, { ...u }),
89
+ (e == null ? void 0 : e.isAutoLogoutEnabled) && /* @__PURE__ */ o(T, { timeout: a })
63
90
  ] }) });
64
91
  }
65
- l(G, "OwpUiProvider");
92
+ s(ot, "OwpUiProvider");
66
93
  export {
67
- M as OwpAppContext,
68
- p as OwpAppProvider,
69
- U as OwpCoreProvider,
70
- w as OwpStoreProvider,
71
- G as OwpUiProvider,
72
- a as useOwpAppContext
94
+ nt as OwpAppContext,
95
+ O as OwpAppProvider,
96
+ tt as OwpCoreProvider,
97
+ F as OwpStoreProvider,
98
+ ot as OwpUiProvider,
99
+ S as useOwpAppContext
73
100
  };
74
101
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../src/context/OwpCoreProvider.tsx","../src/context/OwpUiProvider.tsx"],"sourcesContent":["import { StyledEngineProvider } from '@mui/material/styles';\nimport { QueryClient, QueryClientConfig, QueryClientProvider } from '@tanstack/react-query';\nimport { ComponentProps, useRef } from 'react';\nimport { OwpAppProvider, OwpAppProviderProps } from './OwpAppProvider';\nimport { OwpStoreProvider, OwpStoreProviderProps } from './OwpStoreProvider';\n\ntype OwpStyledEngineProviderProps = Omit<ComponentProps<typeof StyledEngineProvider>, 'children'>;\n\nexport interface OwpCoreProviderProps extends OwpAppProviderProps {\n queryClient?: QueryClient;\n queryClientConfig?: QueryClientConfig;\n storePreloadedState?: OwpStoreProviderProps['preloadedState'];\n styledEngineProviderProps?: OwpStyledEngineProviderProps;\n}\n\n/**\n * App, Redux, React Query provider composition\n * @param queryClient 외부 QueryClient 인스턴스\n * @param queryClientConfig QueryClient 생성 옵션\n * @param storePreloadedState 초기 Redux 상태\n * @param styledEngineProviderProps StyledEngineProvider 옵션\n */\nexport function OwpCoreProvider({\n children,\n queryClient,\n queryClientConfig,\n storePreloadedState,\n styledEngineProviderProps = { injectFirst: true },\n ...appProviderProps\n}: OwpCoreProviderProps) {\n const queryClientRef = useRef<QueryClient | undefined>(undefined);\n const client = queryClient ?? (queryClientRef.current ??= new QueryClient(queryClientConfig));\n\n return (\n <OwpAppProvider {...appProviderProps}>\n <OwpStoreProvider preloadedState={storePreloadedState}>\n <QueryClientProvider client={client}>\n <StyledEngineProvider {...styledEngineProviderProps}>{children}</StyledEngineProvider>\n </QueryClientProvider>\n </OwpStoreProvider>\n </OwpAppProvider>\n );\n}\n","import { OwpAutoLogoutDialog } from '@/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport { DialogsProvider } from '@toolpad/core/useDialogs';\nimport { closeSnackbar, SnackbarKey, SnackbarProvider } from 'notistack';\nimport { ComponentProps, ReactNode } from 'react';\nimport { useOwpAppContext } from './OwpAppProvider';\n\ntype OwpDialogsProviderProps = Omit<ComponentProps<typeof DialogsProvider>, 'children'>;\ntype OwpSnackbarProviderProps = Omit<ComponentProps<typeof SnackbarProvider>, 'children'>;\n\nexport interface OwpUiProviderProps {\n children?: ReactNode;\n dialogsProviderProps?: OwpDialogsProviderProps;\n snackbarProviderProps?: OwpSnackbarProviderProps;\n}\n\nconst defaultSnackbarProviderProps: OwpSnackbarProviderProps = {\n maxSnack: 5,\n autoHideDuration: 3000,\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center',\n },\n style: {\n fontSize: '1.25rem',\n lineHeight: '1.75rem',\n },\n classes: {\n containerRoot: 'bottom-0 right-0 mb-52 md:mb-68 mr-8 lg:mr-80',\n },\n action: (snackbarKey: SnackbarKey) => (\n <IconButton onClick={() => closeSnackbar(snackbarKey)}>\n <CloseIcon fontSize=\"small\" sx={{ color: '#FFFFFF' }} />\n </IconButton>\n ),\n};\n\n/**\n * Dialog, snackbar provider composition\n * @param dialogsProviderProps DialogsProvider 옵션\n * @param snackbarProviderProps SnackbarProvider 옵션\n */\nexport function OwpUiProvider({\n children,\n dialogsProviderProps,\n snackbarProviderProps,\n}: OwpUiProviderProps) {\n const { env } = useOwpAppContext();\n const resolvedSnackbarProviderProps: OwpSnackbarProviderProps = {\n ...defaultSnackbarProviderProps,\n ...snackbarProviderProps,\n style: {\n ...defaultSnackbarProviderProps.style,\n ...snackbarProviderProps?.style,\n },\n classes: {\n ...defaultSnackbarProviderProps.classes,\n ...snackbarProviderProps?.classes,\n },\n action: snackbarProviderProps?.action ?? defaultSnackbarProviderProps.action,\n };\n const resolvedAutoLogoutTimeout = Number(env?.autoLogoutTimeout);\n const autoLogoutTimeout = Number.isFinite(resolvedAutoLogoutTimeout)\n ? resolvedAutoLogoutTimeout\n : undefined;\n\n return (\n <DialogsProvider {...dialogsProviderProps}>\n <SnackbarProvider {...resolvedSnackbarProviderProps}>\n {children}\n {env?.isAutoLogoutEnabled && <OwpAutoLogoutDialog timeout={autoLogoutTimeout} />}\n </SnackbarProvider>\n </DialogsProvider>\n );\n}\n"],"names":["OwpCoreProvider","children","queryClient","queryClientConfig","storePreloadedState","styledEngineProviderProps","appProviderProps","queryClientRef","useRef","client","QueryClient","OwpAppProvider","jsx","OwpStoreProvider","QueryClientProvider","StyledEngineProvider","__name","defaultSnackbarProviderProps","snackbarKey","IconButton","closeSnackbar","CloseIcon","OwpUiProvider","dialogsProviderProps","snackbarProviderProps","env","useOwpAppContext","resolvedSnackbarProviderProps","resolvedAutoLogoutTimeout","autoLogoutTimeout","DialogsProvider","jsxs","SnackbarProvider","OwpAutoLogoutDialog"],"mappings":";;;;;;;;;;;;;AAsBO,SAASA,EAAgB;AAAA,EAC9B,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,2BAAAC,IAA4B,EAAE,aAAa,GAAA;AAAA,EAC3C,GAAGC;AACL,GAAyB;AACvB,QAAMC,IAAiBC,EAAgC,MAAS,GAC1DC,IAASP,KAAgBK,EAAe,YAAfA,EAAe,UAAY,IAAIG,EAAYP,CAAiB;AAE3F,2BACGQ,GAAA,EAAgB,GAAGL,GAClB,UAAA,gBAAAM,EAACC,GAAA,EAAiB,gBAAgBT,GAChC,UAAA,gBAAAQ,EAACE,GAAA,EAAoB,QAAAL,GACnB,4BAACM,GAAA,EAAsB,GAAGV,GAA4B,UAAAJ,EAAA,CAAS,GACjE,GACF,EAAA,CACF;AAEJ;AApBgBe,EAAAhB,GAAA;ACLhB,MAAMiB,IAAyD;AAAA,EAC7D,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAAA,EAEd,OAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAAA,EAEd,SAAS;AAAA,IACP,eAAe;AAAA,EAAA;AAAA,EAEjB,QAAQ,gBAAAD,EAAA,CAACE,wBACNC,GAAA,EAAW,SAAS,gBAAAH,EAAA,MAAMI,EAAcF,CAAW,GAA/B,YACnB,UAAA,gBAAAN,EAACS,GAAA,EAAU,UAAS,SAAQ,IAAI,EAAE,OAAO,UAAA,GAAa,EAAA,CACxD,GAHM;AAKV;AAOO,SAASC,EAAc;AAAA,EAC5B,UAAArB;AAAA,EACA,sBAAAsB;AAAA,EACA,uBAAAC;AACF,GAAuB;AACrB,QAAM,EAAE,KAAAC,EAAA,IAAQC,EAAA,GACVC,IAA0D;AAAA,IAC9D,GAAGV;AAAA,IACH,GAAGO;AAAA,IACH,OAAO;AAAA,MACL,GAAGP,EAA6B;AAAA,MAChC,GAAGO,KAAA,gBAAAA,EAAuB;AAAA,IAAA;AAAA,IAE5B,SAAS;AAAA,MACP,GAAGP,EAA6B;AAAA,MAChC,GAAGO,KAAA,gBAAAA,EAAuB;AAAA,IAAA;AAAA,IAE5B,SAAQA,KAAA,gBAAAA,EAAuB,WAAUP,EAA6B;AAAA,EAAA,GAElEW,IAA4B,OAAOH,KAAA,gBAAAA,EAAK,iBAAiB,GACzDI,IAAoB,OAAO,SAASD,CAAyB,IAC/DA,IACA;AAEJ,2BACGE,GAAA,EAAiB,GAAGP,GACnB,UAAA,gBAAAQ,EAACC,GAAA,EAAkB,GAAGL,GACnB,UAAA;AAAA,IAAA1B;AAAA,KACAwB,KAAA,gBAAAA,EAAK,wBAAuB,gBAAAb,EAACqB,GAAA,EAAoB,SAASJ,EAAA,CAAmB;AAAA,EAAA,EAAA,CAChF,EAAA,CACF;AAEJ;AAhCgBb,EAAAM,GAAA;"}
1
+ {"version":3,"file":"context.js","sources":["../src/context/OwpCoreProvider.tsx","../src/context/OwpUiProvider.tsx"],"sourcesContent":["import { createInitialOwpSettings } from '@/default-settings/OwpDefaultSettings';\nimport { StyledEngineProvider } from '@mui/material/styles';\nimport { QueryClient, QueryClientConfig, QueryClientProvider } from '@tanstack/react-query';\nimport { merge } from 'es-toolkit/compat';\nimport { ComponentProps, useRef } from 'react';\nimport { OwpAppProvider, OwpAppProviderProps } from './OwpAppProvider';\nimport { OwpStoreProvider, OwpStoreProviderProps } from './OwpStoreProvider';\n\ntype OwpStyledEngineProviderProps = Omit<ComponentProps<typeof StyledEngineProvider>, 'children'>;\n\nexport interface OwpCoreProviderProps extends OwpAppProviderProps {\n queryClient?: QueryClient;\n queryClientConfig?: QueryClientConfig;\n storePreloadedState?: OwpStoreProviderProps['preloadedState'];\n styledEngineProviderProps?: OwpStyledEngineProviderProps;\n}\n\n/**\n * App, Redux, React Query provider composition\n * @param queryClient 외부 QueryClient 인스턴스\n * @param queryClientConfig QueryClient 생성 옵션\n * @param storePreloadedState 초기 Redux 상태\n * @param styledEngineProviderProps StyledEngineProvider 옵션\n */\nexport function OwpCoreProvider({\n children,\n queryClient,\n queryClientConfig,\n storePreloadedState,\n styledEngineProviderProps = { injectFirst: true },\n ...appProviderProps\n}: OwpCoreProviderProps) {\n const queryClientRef = useRef<QueryClient | undefined>(undefined);\n const preloadedStateRef = useRef<OwpStoreProviderProps['preloadedState'] | undefined>(undefined);\n const client = queryClient ?? (queryClientRef.current ??= new QueryClient(queryClientConfig));\n\n if (!preloadedStateRef.current) {\n const initialSettings = createInitialOwpSettings(\n appProviderProps.configs.settingsConfig,\n appProviderProps.configs.themesConfig,\n );\n\n preloadedStateRef.current = merge(\n {},\n {\n owpSettings: {\n initial: initialSettings,\n defaults: merge({}, initialSettings),\n current: merge({}, initialSettings),\n },\n },\n storePreloadedState,\n );\n }\n\n return (\n <OwpAppProvider {...appProviderProps}>\n <OwpStoreProvider preloadedState={preloadedStateRef.current}>\n <QueryClientProvider client={client}>\n <StyledEngineProvider {...styledEngineProviderProps}>{children}</StyledEngineProvider>\n </QueryClientProvider>\n </OwpStoreProvider>\n </OwpAppProvider>\n );\n}\n","import { OwpAutoLogoutDialog } from '@/components/OwpAutoLogoutDialog/OwpAutoLogoutDialog';\nimport { OwpLoading } from '@/components/OwpLoading';\nimport { OwpPageLockLoading } from '@/components/OwpPageLockLoading';\nimport { useAccessTokenGuard, useGetPageLockLoading } from '@/hooks';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport { DialogsProvider } from '@toolpad/core/useDialogs';\nimport { closeSnackbar, SnackbarKey, SnackbarProvider } from 'notistack';\nimport { ComponentProps, ReactNode } from 'react';\nimport { useOwpAppContext } from './OwpAppProvider';\n\ntype OwpDialogsProviderProps = Omit<ComponentProps<typeof DialogsProvider>, 'children'>;\ntype OwpSnackbarProviderProps = Omit<ComponentProps<typeof SnackbarProvider>, 'children'>;\n\nexport interface OwpUiProviderProps {\n children?: ReactNode;\n dialogsProviderProps?: OwpDialogsProviderProps;\n snackbarProviderProps?: OwpSnackbarProviderProps;\n}\n\nconst defaultSnackbarProviderProps: OwpSnackbarProviderProps = {\n maxSnack: 5,\n autoHideDuration: 3000,\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center',\n },\n style: {\n fontSize: '1.25rem',\n lineHeight: '1.75rem',\n },\n classes: {\n containerRoot: 'bottom-0 right-0 mb-52 md:mb-68 mr-8 lg:mr-80',\n },\n action: (snackbarKey: SnackbarKey) => (\n <IconButton onClick={() => closeSnackbar(snackbarKey)}>\n <CloseIcon fontSize=\"small\" sx={{ color: '#FFFFFF' }} />\n </IconButton>\n ),\n};\n\n/**\n * Dialog, snackbar provider composition\n * @param dialogsProviderProps DialogsProvider 옵션\n * @param snackbarProviderProps SnackbarProvider 옵션\n */\nexport function OwpUiProvider({\n children,\n dialogsProviderProps,\n snackbarProviderProps,\n}: OwpUiProviderProps) {\n const { env } = useOwpAppContext();\n const pageLockLoadingProps = useGetPageLockLoading();\n const shouldRedirectToLogin = useAccessTokenGuard();\n const resolvedSnackbarProviderProps: OwpSnackbarProviderProps = {\n ...defaultSnackbarProviderProps,\n ...snackbarProviderProps,\n style: {\n ...defaultSnackbarProviderProps.style,\n ...snackbarProviderProps?.style,\n },\n classes: {\n ...defaultSnackbarProviderProps.classes,\n ...snackbarProviderProps?.classes,\n },\n action: snackbarProviderProps?.action ?? defaultSnackbarProviderProps.action,\n };\n const resolvedAutoLogoutTimeout = Number(env?.autoLogoutTimeout);\n const autoLogoutTimeout = Number.isFinite(resolvedAutoLogoutTimeout)\n ? resolvedAutoLogoutTimeout\n : undefined;\n\n if (shouldRedirectToLogin) {\n return <OwpLoading className=\"min-h-screen\" />;\n }\n\n return (\n <DialogsProvider {...dialogsProviderProps}>\n <SnackbarProvider {...resolvedSnackbarProviderProps}>\n {children}\n <OwpPageLockLoading {...pageLockLoadingProps} />\n {env?.isAutoLogoutEnabled && <OwpAutoLogoutDialog timeout={autoLogoutTimeout} />}\n </SnackbarProvider>\n </DialogsProvider>\n );\n}\n"],"names":["OwpCoreProvider","children","queryClient","queryClientConfig","storePreloadedState","styledEngineProviderProps","appProviderProps","queryClientRef","useRef","preloadedStateRef","client","QueryClient","initialSettings","createInitialOwpSettings","merge","OwpAppProvider","jsx","OwpStoreProvider","QueryClientProvider","StyledEngineProvider","__name","defaultSnackbarProviderProps","snackbarKey","IconButton","closeSnackbar","CloseIcon","OwpUiProvider","dialogsProviderProps","snackbarProviderProps","env","useOwpAppContext","pageLockLoadingProps","useGetPageLockLoading","shouldRedirectToLogin","useAccessTokenGuard","resolvedSnackbarProviderProps","resolvedAutoLogoutTimeout","autoLogoutTimeout","OwpLoading","DialogsProvider","jsxs","SnackbarProvider","OwpPageLockLoading","OwpAutoLogoutDialog"],"mappings":"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"}
package/dist/hooks.js CHANGED
@@ -1,112 +1,82 @@
1
- var T = Object.defineProperty;
2
- var o = (e, t) => T(e, "name", { value: t, configurable: !0 });
3
- import { u as g } from "./useTreeGridExcelExport-DLMecvHS.js";
4
- import { g as J, i as Z, j as ee, h as te, c as oe, e as re, b as se, k as ne, m as ue, a as ae, d as ce, f as ie, l as me, n as Ce, o as Ee, p as fe, q as pe } from "./useTreeGridExcelExport-DLMecvHS.js";
5
- import { STORAGE_ACCESS_TOKEN_KEY as l } from "./constants.js";
6
- import { FALLBACK_LANGUAGE_LIST as Oe } from "./constants.js";
7
- import { u as I } from "./useOwpTranslation-CMrtqKkT.js";
8
- import { c as ge, b as Se } from "./useOwpTranslation-CMrtqKkT.js";
9
- import { useRef as f, useEffect as i } from "react";
10
- import { useLocation as _, useNavigate as M } from "react-router-dom";
11
- import { S as p } from "./storageKeys-DRzte9LZ.js";
12
- import { useAtomValue as d, useSetAtom as O } from "jotai";
13
- import { atomWithStorage as L } from "jotai/utils";
14
- import { g as De, s as Ge, u as Te } from "./useStorage-BA0D8KA7.js";
15
- import { s as S } from "./treeGridUtil-C46Qi5LG.js";
16
- const N = "/auth/login", U = "Message.로그인이 필요합니다.", B = /* @__PURE__ */ o(({
17
- loginPath: e = N,
18
- isEnabled: t,
19
- snackbarMessageKey: s = U
20
- } = {}) => {
21
- const { env: r } = I(), n = _(), u = M(), a = typeof window > "u" ? null : window.localStorage.getItem(l), c = n.pathname.startsWith(e), C = (t ?? (r == null ? void 0 : r.isAccessTokenGuardEnabled) ?? !0) && !a && !c, E = f(!1);
22
- return i(() => {
23
- if (!C) {
24
- E.current = !1;
25
- return;
26
- }
27
- E.current || (E.current = !0, u(e, {
28
- replace: !0,
29
- state: s ? {
30
- snackbarMessageKey: s
31
- } : void 0
32
- }));
33
- }, [e, u, C, s]), C;
34
- }, "useAccessTokenGuard"), A = L(
35
- p.currentUser,
36
- void 0
37
- ), F = /* @__PURE__ */ o(() => d(A), "useGetCurrentUser"), Y = /* @__PURE__ */ o(() => O(A), "useSetCurrentUser"), D = L(p.currentUserId, ""), j = /* @__PURE__ */ o(() => d(D), "useGetCurrentUserId"), H = /* @__PURE__ */ o(() => O(D), "useSetCurrentUserId"), G = L(
38
- p.lockLoadingProps,
39
- { loading: !1 }
40
- ), W = /* @__PURE__ */ o(() => d(G), "useGetPageLockLoading"), $ = /* @__PURE__ */ o(() => ({ setLoading: O(G) }), "usePageLockLoading");
41
- function q(e) {
42
- const t = f();
43
- return i(() => {
44
- t.current = e;
45
- }, [e]), t.current;
1
+ var p = Object.defineProperty;
2
+ var n = (s, e) => p(s, "name", { value: e, configurable: !0 });
3
+ import { b as O } from "./useShortcuts-CCf98L8m.js";
4
+ import { d, f as P, h as T, j as x, e as _, l as h, o as X, n as k, c as A, g as U, i as b, k as v, m as j, p as l, q as y } from "./useShortcuts-CCf98L8m.js";
5
+ import { a as K, b as $, u as q, d as w, c as z } from "./usePageLockLoading-BUI_3PlR.js";
6
+ import { u as Q, b as H, c as J, a as R, d as V, e as W } from "./useTreeGridExcelExport-N2nOKmkz.js";
7
+ import { useRef as i, useEffect as a } from "react";
8
+ import { g as Z, s as ee, u as se } from "./useStorage-CuUmH4fD.js";
9
+ import { s as E } from "./treeGridUtil-WTM_djsN.js";
10
+ import { FALLBACK_LANGUAGE_LIST as te } from "./constants.js";
11
+ function M(s) {
12
+ const e = i();
13
+ return a(() => {
14
+ e.current = s;
15
+ }, [s]), e.current;
46
16
  }
47
- o(q, "usePrevious");
48
- const y = /* @__PURE__ */ o((e, t, s, r) => {
49
- const n = g(), u = n == null ? void 0 : n[s];
50
- i(() => {
51
- !r || !u || S(
17
+ n(M, "usePrevious");
18
+ const G = /* @__PURE__ */ n((s, e, o, r) => {
19
+ const t = O(), u = t == null ? void 0 : t[o];
20
+ a(() => {
21
+ !r || !u || E(
22
+ s,
52
23
  e,
53
- t,
54
24
  u,
55
25
  "IPX_COMMONCODE.CODEID",
56
26
  ["IPX_COMMONCODE.CODENM", "IPX_COMMONCODE.CODEID"]
57
27
  );
58
- }, [s, t, e, r, u]);
59
- }, "useTreeGridCommonCodeEnum"), z = /* @__PURE__ */ o((e, t, s) => {
60
- const r = g(), n = f(t), u = t.map(({ field: a, codeId: c }) => `${a}:${c}`).join("|");
61
- i(() => {
62
- n.current = t;
63
- }, [t]), i(() => {
64
- !s || !r || n.current.forEach(({ field: a, codeId: c }) => {
65
- const m = r[c];
66
- m && S(
67
- e,
68
- a,
69
- m,
28
+ }, [o, e, s, r, u]);
29
+ }, "useTreeGridCommonCodeEnum"), I = /* @__PURE__ */ n((s, e, o) => {
30
+ const r = O(), t = i(e), u = e.map(({ field: C, codeId: m }) => `${C}:${m}`).join("|");
31
+ a(() => {
32
+ t.current = e;
33
+ }, [e]), a(() => {
34
+ !o || !r || t.current.forEach(({ field: C, codeId: m }) => {
35
+ const c = r[m];
36
+ c && E(
37
+ s,
38
+ C,
39
+ c,
70
40
  "IPX_COMMONCODE.CODEID",
71
41
  ["IPX_COMMONCODE.CODENM", "IPX_COMMONCODE.CODEID"]
72
42
  );
73
43
  });
74
- }, [r, u, e, s]);
44
+ }, [r, u, s, o]);
75
45
  }, "useTreeGridCommonCodeEnums");
76
46
  export {
77
- Oe as FALLBACK_LANGUAGE_LIST,
78
- De as getEnv,
79
- Ge as setEnv,
80
- B as useAccessTokenGuard,
81
- ge as useConfirm,
82
- J as useDebounce,
83
- Z as useDeepCompareEffect,
84
- ee as useDeepCompareEffectNoCheck,
85
- te as useDeepCompareMemoize,
86
- g as useGetCommonCodeList,
87
- oe as useGetCurrentLanguage,
88
- re as useGetCurrentLogoSrc,
89
- F as useGetCurrentUser,
90
- j as useGetCurrentUserId,
91
- se as useGetLanguageList,
92
- ne as useGetNavigationList,
93
- W as useGetPageLockLoading,
94
- ue as useGetShortcuts,
95
- Se as useOwpTranslation,
96
- $ as usePageLockLoading,
97
- q as usePrevious,
98
- ae as useSetCommonCodeList,
99
- ce as useSetCurrentLanguage,
100
- ie as useSetCurrentLogoSrc,
101
- Y as useSetCurrentUser,
102
- H as useSetCurrentUserId,
103
- me as useSetNavigationList,
104
- Ce as useSetShortcuts,
105
- Te as useStorage,
106
- Ee as useThemeMediaQuery,
107
- fe as useTimeout,
108
- y as useTreeGridCommonCodeEnum,
109
- z as useTreeGridCommonCodeEnums,
110
- pe as useTreeGridExcelExport
47
+ te as FALLBACK_LANGUAGE_LIST,
48
+ Z as getEnv,
49
+ ee as setEnv,
50
+ K as useAccessTokenGuard,
51
+ d as useConfirm,
52
+ Q as useDebounce,
53
+ H as useDeepCompareEffect,
54
+ J as useDeepCompareEffectNoCheck,
55
+ R as useDeepCompareMemoize,
56
+ O as useGetCommonCodeList,
57
+ P as useGetCurrentLanguage,
58
+ T as useGetCurrentLogoSrc,
59
+ x as useGetCurrentUser,
60
+ $ as useGetCurrentUserId,
61
+ _ as useGetLanguageList,
62
+ h as useGetNavigationList,
63
+ q as useGetPageLockLoading,
64
+ X as useGetShortcuts,
65
+ k as useOwpTranslation,
66
+ w as usePageLockLoading,
67
+ M as usePrevious,
68
+ A as useSetCommonCodeList,
69
+ U as useSetCurrentLanguage,
70
+ b as useSetCurrentLogoSrc,
71
+ v as useSetCurrentUser,
72
+ z as useSetCurrentUserId,
73
+ j as useSetNavigationList,
74
+ l as useSetShortcuts,
75
+ se as useStorage,
76
+ V as useThemeMediaQuery,
77
+ y as useTimeout,
78
+ G as useTreeGridCommonCodeEnum,
79
+ I as useTreeGridCommonCodeEnums,
80
+ W as useTreeGridExcelExport
111
81
  };
112
82
  //# sourceMappingURL=hooks.js.map
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../src/hooks/useAccessTokenGuard.ts","../src/hooks/useCurrentUser.ts","../src/hooks/useCurrentUserId.ts","../src/hooks/usePageLockLoading.ts","../src/hooks/usePrevious.ts","../src/hooks/useTreeGridCommonCodeEnum.ts","../src/hooks/useTreeGridCommonCodeEnums.ts"],"sourcesContent":["import { STORAGE_ACCESS_TOKEN_KEY } from '@/constants/localStorageKeys';\nimport { useOwpAppContext } from '@/context/OwpAppProvider';\nimport { useEffect, useRef } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface UseAccessTokenGuardOptions {\n loginPath?: string;\n isEnabled?: boolean;\n snackbarMessageKey?: string;\n}\n\nconst DEFAULT_LOGIN_PATH = '/auth/login';\nconst DEFAULT_SNACKBAR_MESSAGE_KEY = 'Message.로그인이 필요합니다.';\n\n/**\n * 액세스 토큰 기반 로그인 가드\n * @param loginPath 로그인 라우트 경로\n * @param isEnabled 가드 활성화 여부\n * @param snackbarMessageKey 로그인 필요 안내 메시지 키\n */\nexport const useAccessTokenGuard = ({\n loginPath = DEFAULT_LOGIN_PATH,\n isEnabled,\n snackbarMessageKey = DEFAULT_SNACKBAR_MESSAGE_KEY,\n}: UseAccessTokenGuardOptions = {}) => {\n const { env } = useOwpAppContext();\n const location = useLocation();\n const navigate = useNavigate();\n const accessToken =\n typeof window === 'undefined' ? null : window.localStorage.getItem(STORAGE_ACCESS_TOKEN_KEY);\n const isLoginRoute = location.pathname.startsWith(loginPath);\n const isAccessTokenGuardEnabled = isEnabled ?? env?.isAccessTokenGuardEnabled ?? true;\n const shouldRedirectToLogin = isAccessTokenGuardEnabled && !accessToken && !isLoginRoute;\n const hasHandledRedirectRef = useRef(false);\n\n useEffect(() => {\n if (!shouldRedirectToLogin) {\n hasHandledRedirectRef.current = false;\n return;\n }\n\n if (hasHandledRedirectRef.current) {\n return;\n }\n\n hasHandledRedirectRef.current = true;\n\n navigate(loginPath, {\n replace: true,\n state: snackbarMessageKey\n ? {\n snackbarMessageKey,\n }\n : undefined,\n });\n }, [loginPath, navigate, shouldRedirectToLogin, snackbarMessageKey]);\n\n return shouldRedirectToLogin;\n};\n","import { STORAGE_KEYS } from '@/constants/storageKeys';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\n\nexport interface CurrentUser {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nconst currentUserAtom = atomWithStorage<CurrentUser | undefined>(\n STORAGE_KEYS.currentUser,\n undefined,\n);\n\n/**\n * 현재 사용자 정보 조회\n */\nexport const useGetCurrentUser = () => {\n return useAtomValue(currentUserAtom);\n};\n\n/**\n * 현재 사용자 정보 설정\n */\nexport const useSetCurrentUser = () => {\n return useSetAtom(currentUserAtom);\n};\n","import { STORAGE_KEYS } from '@/constants/storageKeys';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\n\nconst currentUserIdAtom = atomWithStorage<string | ''>(STORAGE_KEYS.currentUserId, '');\n\n/**\n * 현재 사용자 ID 조회 훅\n */\nexport const useGetCurrentUserId = () => {\n return useAtomValue(currentUserIdAtom);\n};\n\n/**\n * 현재 사용자 ID 설정 훅\n */\nexport const useSetCurrentUserId = () => {\n return useSetAtom(currentUserIdAtom);\n};\n","import type { OwpPageLockLoadingProps } from '@/components/OwpPageLockLoading';\nimport { STORAGE_KEYS } from '@/constants/storageKeys';\nimport { useAtomValue, useSetAtom } from 'jotai';\nimport { atomWithStorage } from 'jotai/utils';\n\nconst currentLockLoadingAtom = atomWithStorage<OwpPageLockLoadingProps | undefined>(\n STORAGE_KEYS.lockLoadingProps,\n { loading: false },\n);\n\n/**\n * 페이지 잠금 로딩 상태 조회\n */\nexport const useGetPageLockLoading = () => {\n return useAtomValue(currentLockLoadingAtom);\n};\n\n/**\n * 페이지 잠금 로딩 상태 설정\n */\nexport const usePageLockLoading = () => {\n return { setLoading: useSetAtom(currentLockLoadingAtom) };\n};\n","import { useEffect, useRef } from 'react';\n\n/**\n * The usePrevious function is a custom hook that returns the previous value of a variable.\n * It takes in a value as a parameter and returns the previous value.\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>();\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n","import { useGetCommonCodeList } from '@/hooks/useCommonCodeList';\nimport { setTreeGridColumnEnumOptionsById } from '@/utils/treeGridUtil';\nimport { useEffect } from 'react';\n\n/**\n * TreeGrid 공통코드 Enum 옵션 반영\n * @param id TreeGrid 인스턴스 ID\n * @param field Enum을 반영할 컬럼명\n * @param codeId 공통코드 그룹 ID\n * @param isGridReady TreeGrid 준비 여부\n */\nexport const useTreeGridCommonCodeEnum = (\n id: string,\n field: string,\n codeId: string,\n isGridReady: boolean,\n) => {\n const commonCodeMap = useGetCommonCodeList();\n const options = commonCodeMap?.[codeId];\n\n useEffect(() => {\n if (!isGridReady || !options) {\n return;\n }\n\n setTreeGridColumnEnumOptionsById(\n id,\n field,\n options,\n 'IPX_COMMONCODE.CODEID',\n ['IPX_COMMONCODE.CODENM', 'IPX_COMMONCODE.CODEID'],\n );\n }, [codeId, field, id, isGridReady, options]);\n};\n","import { useGetCommonCodeList } from '@/hooks/useCommonCodeList';\nimport { setTreeGridColumnEnumOptionsById } from '@/utils/treeGridUtil';\nimport { useEffect, useRef } from 'react';\n\n/**\n * TreeGrid 공통코드 Enum 옵션 정보\n * @param field Enum을 반영할 컬럼명\n * @param codeId 공통코드 그룹 ID\n */\nexport interface TreeGridCommonCodeEnumConfig {\n field: string;\n codeId: string;\n}\n\n/**\n * TreeGrid 공통코드 Enum 옵션 일괄 반영\n * @param id TreeGrid 인스턴스 ID\n * @param configs Enum 반영 대상 목록\n * @param isGridReady TreeGrid 준비 여부\n */\nexport const useTreeGridCommonCodeEnums = (\n id: string,\n configs: TreeGridCommonCodeEnumConfig[],\n isGridReady: boolean,\n) => {\n const commonCodeMap = useGetCommonCodeList();\n const configsRef = useRef(configs);\n const configDependencyKey = configs.map(({ field, codeId }) => `${field}:${codeId}`).join('|');\n\n useEffect(() => {\n configsRef.current = configs;\n }, [configs]);\n\n useEffect(() => {\n if (!isGridReady || !commonCodeMap) {\n return;\n }\n\n configsRef.current.forEach(({ field, codeId }) => {\n const options = commonCodeMap[codeId];\n\n if (!options) {\n return;\n }\n\n setTreeGridColumnEnumOptionsById(\n id,\n field,\n options,\n 'IPX_COMMONCODE.CODEID',\n ['IPX_COMMONCODE.CODENM', 'IPX_COMMONCODE.CODEID'],\n );\n });\n }, [commonCodeMap, configDependencyKey, id, isGridReady]);\n};\n"],"names":["DEFAULT_LOGIN_PATH","DEFAULT_SNACKBAR_MESSAGE_KEY","useAccessTokenGuard","__name","loginPath","isEnabled","snackbarMessageKey","env","useOwpAppContext","location","useLocation","navigate","useNavigate","accessToken","STORAGE_ACCESS_TOKEN_KEY","isLoginRoute","shouldRedirectToLogin","hasHandledRedirectRef","useRef","useEffect","currentUserAtom","atomWithStorage","STORAGE_KEYS","useGetCurrentUser","useAtomValue","useSetCurrentUser","useSetAtom","currentUserIdAtom","useGetCurrentUserId","useSetCurrentUserId","currentLockLoadingAtom","useGetPageLockLoading","usePageLockLoading","usePrevious","value","ref","useTreeGridCommonCodeEnum","id","field","codeId","isGridReady","commonCodeMap","useGetCommonCodeList","options","setTreeGridColumnEnumOptionsById","useTreeGridCommonCodeEnums","configs","configsRef","configDependencyKey"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../src/hooks/usePrevious.ts","../src/hooks/useTreeGridCommonCodeEnum.ts","../src/hooks/useTreeGridCommonCodeEnums.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * The usePrevious function is a custom hook that returns the previous value of a variable.\n * It takes in a value as a parameter and returns the previous value.\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>();\n\n // Store current value in ref\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n // Return previous value (happens before update in useEffect above)\n return ref.current;\n}\n","import { useGetCommonCodeList } from '@/hooks/useCommonCodeList';\nimport { setTreeGridColumnEnumOptionsById } from '@/utils/treeGridUtil';\nimport { useEffect } from 'react';\n\n/**\n * TreeGrid 공통코드 Enum 옵션 반영\n * @param id TreeGrid 인스턴스 ID\n * @param field Enum을 반영할 컬럼명\n * @param codeId 공통코드 그룹 ID\n * @param isGridReady TreeGrid 준비 여부\n */\nexport const useTreeGridCommonCodeEnum = (\n id: string,\n field: string,\n codeId: string,\n isGridReady: boolean,\n) => {\n const commonCodeMap = useGetCommonCodeList();\n const options = commonCodeMap?.[codeId];\n\n useEffect(() => {\n if (!isGridReady || !options) {\n return;\n }\n\n setTreeGridColumnEnumOptionsById(\n id,\n field,\n options,\n 'IPX_COMMONCODE.CODEID',\n ['IPX_COMMONCODE.CODENM', 'IPX_COMMONCODE.CODEID'],\n );\n }, [codeId, field, id, isGridReady, options]);\n};\n","import { useGetCommonCodeList } from '@/hooks/useCommonCodeList';\nimport { setTreeGridColumnEnumOptionsById } from '@/utils/treeGridUtil';\nimport { useEffect, useRef } from 'react';\n\n/**\n * TreeGrid 공통코드 Enum 옵션 정보\n * @param field Enum을 반영할 컬럼명\n * @param codeId 공통코드 그룹 ID\n */\nexport interface TreeGridCommonCodeEnumConfig {\n field: string;\n codeId: string;\n}\n\n/**\n * TreeGrid 공통코드 Enum 옵션 일괄 반영\n * @param id TreeGrid 인스턴스 ID\n * @param configs Enum 반영 대상 목록\n * @param isGridReady TreeGrid 준비 여부\n */\nexport const useTreeGridCommonCodeEnums = (\n id: string,\n configs: TreeGridCommonCodeEnumConfig[],\n isGridReady: boolean,\n) => {\n const commonCodeMap = useGetCommonCodeList();\n const configsRef = useRef(configs);\n const configDependencyKey = configs.map(({ field, codeId }) => `${field}:${codeId}`).join('|');\n\n useEffect(() => {\n configsRef.current = configs;\n }, [configs]);\n\n useEffect(() => {\n if (!isGridReady || !commonCodeMap) {\n return;\n }\n\n configsRef.current.forEach(({ field, codeId }) => {\n const options = commonCodeMap[codeId];\n\n if (!options) {\n return;\n }\n\n setTreeGridColumnEnumOptionsById(\n id,\n field,\n options,\n 'IPX_COMMONCODE.CODEID',\n ['IPX_COMMONCODE.CODENM', 'IPX_COMMONCODE.CODEID'],\n );\n });\n }, [commonCodeMap, configDependencyKey, id, isGridReady]);\n};\n"],"names":["usePrevious","value","ref","useRef","useEffect","__name","useTreeGridCommonCodeEnum","id","field","codeId","isGridReady","commonCodeMap","useGetCommonCodeList","options","setTreeGridColumnEnumOptionsById","useTreeGridCommonCodeEnums","configs","configsRef","configDependencyKey"],"mappings":";;;;;;;;;;AAMO,SAASA,EAAeC,GAAyB;AACtD,QAAMC,IAAMC,EAAA;AAGZ,SAAAC,EAAU,MAAM;AACd,IAAAF,EAAI,UAAUD;AAAA,EAChB,GAAG,CAACA,CAAK,CAAC,GAGHC,EAAI;AACb;AAVgBG,EAAAL,GAAA;ACKT,MAAMM,IAA4B,gBAAAD,EAAA,CACvCE,GACAC,GACAC,GACAC,MACG;AACH,QAAMC,IAAgBC,EAAA,GAChBC,IAAUF,KAAA,gBAAAA,EAAgBF;AAEhC,EAAAL,EAAU,MAAM;AACd,IAAI,CAACM,KAAe,CAACG,KAIrBC;AAAA,MACEP;AAAA,MACAC;AAAA,MACAK;AAAA,MACA;AAAA,MACA,CAAC,yBAAyB,uBAAuB;AAAA,IAAA;AAAA,EAErD,GAAG,CAACJ,GAAQD,GAAOD,GAAIG,GAAaG,CAAO,CAAC;AAC9C,GAtByC,8BCS5BE,IAA6B,gBAAAV,EAAA,CACxCE,GACAS,GACAN,MACG;AACH,QAAMC,IAAgBC,EAAA,GAChBK,IAAad,EAAOa,CAAO,GAC3BE,IAAsBF,EAAQ,IAAI,CAAC,EAAE,OAAAR,GAAO,QAAAC,EAAA,MAAa,GAAGD,CAAK,IAAIC,CAAM,EAAE,EAAE,KAAK,GAAG;AAE7F,EAAAL,EAAU,MAAM;AACd,IAAAa,EAAW,UAAUD;AAAA,EACvB,GAAG,CAACA,CAAO,CAAC,GAEZZ,EAAU,MAAM;AACd,IAAI,CAACM,KAAe,CAACC,KAIrBM,EAAW,QAAQ,QAAQ,CAAC,EAAE,OAAAT,GAAO,QAAAC,QAAa;AAChD,YAAMI,IAAUF,EAAcF,CAAM;AAEpC,MAAKI,KAILC;AAAA,QACEP;AAAA,QACAC;AAAA,QACAK;AAAA,QACA;AAAA,QACA,CAAC,yBAAyB,uBAAuB;AAAA,MAAA;AAAA,IAErD,CAAC;AAAA,EACH,GAAG,CAACF,GAAeO,GAAqBX,GAAIG,CAAW,CAAC;AAC1D,GAlC0C;"}