@apia/table 2.0.7 → 2.0.8

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 (41) hide show
  1. package/dist/Cell.js.map +1 -1
  2. package/dist/FilterCell.js.map +1 -1
  3. package/dist/Header.js.map +1 -1
  4. package/dist/HeaderCell.js.map +1 -1
  5. package/dist/KeyHandler.js.map +1 -1
  6. package/dist/ResponsiveTable.js.map +1 -1
  7. package/dist/ResponsiveTableContext.js +3 -0
  8. package/dist/ResponsiveTableContext.js.map +1 -1
  9. package/dist/Row.js.map +1 -1
  10. package/dist/SeparatorCell.js.map +1 -1
  11. package/dist/StateCell.js.map +1 -1
  12. package/dist/filters/RangeFilter.js.map +1 -1
  13. package/dist/renderers/AccordionCell.js.map +1 -1
  14. package/dist/renderers/AccordionDocNameCellRenderer.js.map +1 -1
  15. package/dist/renderers/AccordionElement.js.map +1 -1
  16. package/dist/renderers/AccordionHTMLCellRenderer.js.map +1 -1
  17. package/dist/renderers/AccordionRenderer.js.map +1 -1
  18. package/dist/renderers/AdditionalColumnDefaultRenderer.js.map +1 -1
  19. package/dist/renderers/DefaultCellRenderer.js.map +1 -1
  20. package/dist/renderers/DefaultRowRenderer.js.map +1 -1
  21. package/dist/renderers/DocNameCellRenderer.js.map +1 -1
  22. package/dist/renderers/HTMLCellRenderer.js.map +1 -1
  23. package/dist/renderers/IsLoadingRenderer.js.map +1 -1
  24. package/dist/renderers/NoRegistersRenderer.js.map +1 -1
  25. package/dist/renderers/PriorityAccordionRenderer.js.map +1 -1
  26. package/dist/renderers/PriorityRenderer.js.map +1 -1
  27. package/dist/renderers/RowStatesRenderer.js.map +1 -1
  28. package/dist/renderers/StatusAccordionRenderer.js.map +1 -1
  29. package/dist/renderers/StatusRenderer.js.map +1 -1
  30. package/dist/renderers/TableRenderer.js.map +1 -1
  31. package/dist/renderers/makeAccordionAsyncRenderer.js.map +1 -1
  32. package/dist/renderers/makeAsyncRenderer.js.map +1 -1
  33. package/dist/store/index.js.map +1 -1
  34. package/dist/store/selection/getInitialState.js.map +1 -1
  35. package/dist/store/selection/getReduxActions.js.map +1 -1
  36. package/dist/store/selection/handleKey.js.map +1 -1
  37. package/dist/store/selection/makeKeyHandler.js.map +1 -1
  38. package/dist/store/selection/setNewFocused.js.map +1 -1
  39. package/dist/store/selection/useDomProps.js.map +1 -1
  40. package/dist/types.js.map +1 -1
  41. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultCellRenderer.js","sources":["../../src/renderers/DefaultCellRenderer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { AutoEllipsis } from '@apia/components';\n\nconst NoMemoDefaultCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps\n>(\n (\n {\n cell: { Renderer, rendererProps, AccordionRenderer, ariaLabel, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <Box\n as={'td' as any}\n sx={useMemo(\n () => ({\n '&.colored': {\n background: cell.background,\n color: cell.color,\n fontWeight: 'bold',\n },\n }),\n [cell.background, cell.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n aria-label={ariaLabel as string}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const td = el.closest('td') as HTMLElement;\n\n return {\n width: window.getComputedStyle(td).width,\n };\n }}\n >\n {props.children ?? cell.children}\n </AutoEllipsis>\n </Box>\n ),\n);\nNoMemoDefaultCellRenderer.displayName = 'DefaultCellRenderer';\nexport const DefaultCellRenderer = NoMemoDefaultCellRenderer;\n"],"names":[],"mappings":";;;;;AAMA,MAAM,4BAA4B,KAAM,CAAA,UAAA;AAAA,EAItC,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,eAAe,iBAAmB,EAAA,SAAA,EAAW,GAAG,IAAK,EAAA;AAAA,IACvE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA,IAAA;AAAA,MACJ,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,WAAa,EAAA;AAAA,YACX,YAAY,IAAK,CAAA,UAAA;AAAA,YACjB,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,UAAY,EAAA,MAAA;AAAA,WACd;AAAA,SACF,CAAA;AAAA,QACA,CAAC,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,KAAK,CAAA;AAAA,OAC9B;AAAA,MACA,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MACJ,YAAY,EAAA,SAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,cAAA,EAAgB,CAAC,EAAO,KAAA;AACtB,YAAM,MAAA,EAAA,GAAK,EAAG,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAE1B,YAAO,OAAA;AAAA,cACL,KAAO,EAAA,MAAA,CAAO,gBAAiB,CAAA,EAAE,CAAE,CAAA,KAAA;AAAA,aACrC,CAAA;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,YAAY,IAAK,CAAA,QAAA;AAAA,SAAA;AAAA,OAC1B;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AACA,yBAAA,CAA0B,WAAc,GAAA,qBAAA,CAAA;AACjC,MAAM,mBAAsB,GAAA;;;;"}
1
+ {"version":3,"file":"DefaultCellRenderer.js","sources":["../../src/renderers/DefaultCellRenderer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useMemo } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { TResponsiveTableCellRendererProps } from '../types';\r\nimport { AutoEllipsis } from '@apia/components';\r\n\r\nconst NoMemoDefaultCellRenderer = React.forwardRef<\r\n HTMLTableCellElement,\r\n TResponsiveTableCellRendererProps\r\n>(\r\n (\r\n {\r\n cell: { Renderer, rendererProps, AccordionRenderer, ariaLabel, ...cell },\r\n column,\r\n row,\r\n ...props\r\n },\r\n currentRef,\r\n ) => (\r\n <Box\r\n as={'td' as any}\r\n sx={useMemo(\r\n () => ({\r\n '&.colored': {\r\n background: cell.background,\r\n color: cell.color,\r\n fontWeight: 'bold',\r\n },\r\n }),\r\n [cell.background, cell.color],\r\n )}\r\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\r\n {...props}\r\n {...cell}\r\n aria-label={ariaLabel as string}\r\n >\r\n <AutoEllipsis\r\n overrideStyles={(el) => {\r\n const td = el.closest('td') as HTMLElement;\r\n\r\n return {\r\n width: window.getComputedStyle(td).width,\r\n };\r\n }}\r\n >\r\n {props.children ?? cell.children}\r\n </AutoEllipsis>\r\n </Box>\r\n ),\r\n);\r\nNoMemoDefaultCellRenderer.displayName = 'DefaultCellRenderer';\r\nexport const DefaultCellRenderer = NoMemoDefaultCellRenderer;\r\n"],"names":[],"mappings":";;;;;AAMA,MAAM,4BAA4B,KAAM,CAAA,UAAA;AAAA,EAItC,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,eAAe,iBAAmB,EAAA,SAAA,EAAW,GAAG,IAAK,EAAA;AAAA,IACvE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA,IAAA;AAAA,MACJ,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,WAAa,EAAA;AAAA,YACX,YAAY,IAAK,CAAA,UAAA;AAAA,YACjB,OAAO,IAAK,CAAA,KAAA;AAAA,YACZ,UAAY,EAAA,MAAA;AAAA,WACd;AAAA,SACF,CAAA;AAAA,QACA,CAAC,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,KAAK,CAAA;AAAA,OAC9B;AAAA,MACA,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MACJ,YAAY,EAAA,SAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,cAAA,EAAgB,CAAC,EAAO,KAAA;AACtB,YAAM,MAAA,EAAA,GAAK,EAAG,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAE1B,YAAO,OAAA;AAAA,cACL,KAAO,EAAA,MAAA,CAAO,gBAAiB,CAAA,EAAE,CAAE,CAAA,KAAA;AAAA,aACrC,CAAA;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,YAAY,IAAK,CAAA,QAAA;AAAA,SAAA;AAAA,OAC1B;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AACA,yBAAA,CAA0B,WAAc,GAAA,qBAAA,CAAA;AACjC,MAAM,mBAAsB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultRowRenderer.js","sources":["../../src/renderers/DefaultRowRenderer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TResponsiveTableRowRenderer,\n TResponsiveTableRowRendererProps,\n} from '../types';\n\nconst NoMemoDefaultRowRenderer: TResponsiveTableRowRenderer = React.forwardRef<\n HTMLTableRowElement,\n TResponsiveTableRowRendererProps\n>(({ row, rowIndex, ...props }, currentRef) => (\n <Box\n as={'tr' as any}\n sx={useMemo(\n () => ({\n '&.colored, & > *': {\n color: row.color,\n background: row.background,\n },\n }),\n [row.background, row.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableRowElement>}\n {...props}\n />\n));\n\nNoMemoDefaultRowRenderer.displayName = 'DefaultRowRenderer';\n\nexport const DefaultRowRenderer = NoMemoDefaultRowRenderer;\n"],"names":[],"mappings":";;;;AAQA,MAAM,wBAAA,GAAwD,KAAM,CAAA,UAAA,CAGlE,CAAC,EAAE,KAAK,QAAU,EAAA,GAAG,KAAM,EAAA,EAAG,UAC9B,qBAAA,GAAA;AAAA,EAAC,GAAA;AAAA,EAAA;AAAA,IACC,EAAI,EAAA,IAAA;AAAA,IACJ,EAAI,EAAA,OAAA;AAAA,MACF,OAAO;AAAA,QACL,kBAAoB,EAAA;AAAA,UAClB,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,YAAY,GAAI,CAAA,UAAA;AAAA,SAClB;AAAA,OACF,CAAA;AAAA,MACA,CAAC,GAAA,CAAI,UAAY,EAAA,GAAA,CAAI,KAAK,CAAA;AAAA,KAC5B;AAAA,IACA,GAAK,EAAA,UAAA;AAAA,IACJ,GAAG,KAAA;AAAA,GAAA;AACN,CACD,CAAA,CAAA;AAED,wBAAA,CAAyB,WAAc,GAAA,oBAAA,CAAA;AAEhC,MAAM,kBAAqB,GAAA;;;;"}
1
+ {"version":3,"file":"DefaultRowRenderer.js","sources":["../../src/renderers/DefaultRowRenderer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport React, { useMemo } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport {\r\n TResponsiveTableRowRenderer,\r\n TResponsiveTableRowRendererProps,\r\n} from '../types';\r\n\r\nconst NoMemoDefaultRowRenderer: TResponsiveTableRowRenderer = React.forwardRef<\r\n HTMLTableRowElement,\r\n TResponsiveTableRowRendererProps\r\n>(({ row, rowIndex, ...props }, currentRef) => (\r\n <Box\r\n as={'tr' as any}\r\n sx={useMemo(\r\n () => ({\r\n '&.colored, & > *': {\r\n color: row.color,\r\n background: row.background,\r\n },\r\n }),\r\n [row.background, row.color],\r\n )}\r\n ref={currentRef as React.RefObject<HTMLTableRowElement>}\r\n {...props}\r\n />\r\n));\r\n\r\nNoMemoDefaultRowRenderer.displayName = 'DefaultRowRenderer';\r\n\r\nexport const DefaultRowRenderer = NoMemoDefaultRowRenderer;\r\n"],"names":[],"mappings":";;;;AAQA,MAAM,wBAAA,GAAwD,KAAM,CAAA,UAAA,CAGlE,CAAC,EAAE,KAAK,QAAU,EAAA,GAAG,KAAM,EAAA,EAAG,UAC9B,qBAAA,GAAA;AAAA,EAAC,GAAA;AAAA,EAAA;AAAA,IACC,EAAI,EAAA,IAAA;AAAA,IACJ,EAAI,EAAA,OAAA;AAAA,MACF,OAAO;AAAA,QACL,kBAAoB,EAAA;AAAA,UAClB,OAAO,GAAI,CAAA,KAAA;AAAA,UACX,YAAY,GAAI,CAAA,UAAA;AAAA,SAClB;AAAA,OACF,CAAA;AAAA,MACA,CAAC,GAAA,CAAI,UAAY,EAAA,GAAA,CAAI,KAAK,CAAA;AAAA,KAC5B;AAAA,IACA,GAAK,EAAA,UAAA;AAAA,IACJ,GAAG,KAAA;AAAA,GAAA;AACN,CACD,CAAA,CAAA;AAED,wBAAA,CAAyB,WAAc,GAAA,oBAAA,CAAA;AAEhC,MAAM,kBAAqB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocNameCellRenderer.js","sources":["../../src/renderers/DocNameCellRenderer.tsx"],"sourcesContent":["import React from 'react';\nimport { Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TResponsiveTableCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoDocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLTableCellElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n >\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </td>\n ),\n );\n\nNoMemoDocNameCellRenderer.displayName = 'DocNameCellRenderer';\n\nexport const DocNameCellRenderer = NoMemoDocNameCellRenderer;\n"],"names":[],"mappings":";;;;;;AAiBA,MAAM,4BACJ,KAAM,CAAA,UAAA;AAAA,EACJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,0BAAA;AAAA,UACV,OAAO,aAAe,EAAA,OAAA;AAAA,UACtB,MAAM,aAAe,EAAA,MAAA;AAAA,UACrB,OAAA,EAAS,CAAC,EAAO,KAAA;AACf,YAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,YAAA,IAAI,aAAe,EAAA,MAAA;AAAQ,cAAK,KAAA,WAAA,CAAY,eAAe,MAAM,CAAA,CAAA;AAAA,WACnE;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAM,EAAG,EAAA,IAAA,EAAK,UAAW,EAAA,CAAA;AAAA,YAC9B,aAAe,EAAA,OAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAClB;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AAEF,yBAAA,CAA0B,WAAc,GAAA,qBAAA,CAAA;AAEjC,MAAM,mBAAsB,GAAA;;;;"}
1
+ {"version":3,"file":"DocNameCellRenderer.js","sources":["../../src/renderers/DocNameCellRenderer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Link } from '@apia/theme';\r\nimport { downloadUrl } from '@apia/util';\r\nimport { Icon } from '@apia/icons';\r\nimport {\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nexport type TDocNameCellRendererProps = {\r\n docName: string;\r\n docUrl: string;\r\n};\r\n\r\nexport type TDocNameCellRenderer =\r\n TResponsiveTableCellRendererProps<TDocNameCellRendererProps>;\r\n\r\nconst NoMemoDocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps> =\r\n React.forwardRef<HTMLTableCellElement, TDocNameCellRenderer>(\r\n (\r\n {\r\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\r\n column,\r\n row,\r\n ...props\r\n },\r\n currentRef,\r\n ) => (\r\n <td\r\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\r\n {...props}\r\n {...cell}\r\n >\r\n <Link\r\n className=\"cell__download__document\"\r\n title={rendererProps?.docName}\r\n href={rendererProps?.docUrl}\r\n onClick={(ev) => {\r\n ev.preventDefault();\r\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\r\n }}\r\n >\r\n <Icon title=\"\" name=\"Download\" />\r\n {rendererProps?.docName}\r\n </Link>\r\n </td>\r\n ),\r\n );\r\n\r\nNoMemoDocNameCellRenderer.displayName = 'DocNameCellRenderer';\r\n\r\nexport const DocNameCellRenderer = NoMemoDocNameCellRenderer;\r\n"],"names":[],"mappings":";;;;;;AAiBA,MAAM,4BACJ,KAAM,CAAA,UAAA;AAAA,EACJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,0BAAA;AAAA,UACV,OAAO,aAAe,EAAA,OAAA;AAAA,UACtB,MAAM,aAAe,EAAA,MAAA;AAAA,UACrB,OAAA,EAAS,CAAC,EAAO,KAAA;AACf,YAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,YAAA,IAAI,aAAe,EAAA,MAAA;AAAQ,cAAK,KAAA,WAAA,CAAY,eAAe,MAAM,CAAA,CAAA;AAAA,WACnE;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAM,EAAG,EAAA,IAAA,EAAK,UAAW,EAAA,CAAA;AAAA,YAC9B,aAAe,EAAA,OAAA;AAAA,WAAA;AAAA,SAAA;AAAA,OAClB;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AAEF,yBAAA,CAA0B,WAAc,GAAA,qBAAA,CAAA;AAEjC,MAAM,mBAAsB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLCellRenderer.js","sources":["../../src/renderers/HTMLCellRenderer.tsx"],"sourcesContent":["import React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nconst NoMemoHTMLCellRenderer: TResponsiveTableCellRenderer<{ html: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n dangerouslySetInnerHTML={{\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n }}\n />\n ),\n );\n\nNoMemoHTMLCellRenderer.displayName = 'HTMLCellRenderer';\n\nexport const HTMLCellRenderer = NoMemoHTMLCellRenderer;\n"],"names":[],"mappings":";;;AAMA,MAAM,yBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MACJ,uBAAyB,EAAA;AAAA,QACvB,QAAQ,MAAO,CAAA,aAAA,EAAe,IAAQ,IAAA,QAAA,IAAY,EAAE,CAAE,CAAA,UAAA;AAAA,UACpD,YAAA;AAAA,UACA,WAAA;AAAA,SACF;AAAA,OACF;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AAEF,sBAAA,CAAuB,WAAc,GAAA,kBAAA,CAAA;AAE9B,MAAM,gBAAmB,GAAA;;;;"}
1
+ {"version":3,"file":"HTMLCellRenderer.js","sources":["../../src/renderers/HTMLCellRenderer.tsx"],"sourcesContent":["import React from 'react';\r\nimport {\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nconst NoMemoHTMLCellRenderer: TResponsiveTableCellRenderer<{ html: string }> =\r\n React.forwardRef<\r\n HTMLTableCellElement,\r\n TResponsiveTableCellRendererProps<{ html: string }>\r\n >(\r\n (\r\n {\r\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\r\n column,\r\n row,\r\n ...props\r\n },\r\n currentRef,\r\n ) => (\r\n <td\r\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\r\n {...props}\r\n {...cell}\r\n dangerouslySetInnerHTML={{\r\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\r\n /<TOK(\\d+)/g,\r\n '&lt;TOK$1',\r\n ),\r\n }}\r\n />\r\n ),\r\n );\r\n\r\nNoMemoHTMLCellRenderer.displayName = 'HTMLCellRenderer';\r\n\r\nexport const HTMLCellRenderer = NoMemoHTMLCellRenderer;\r\n"],"names":[],"mappings":";;;AAMA,MAAM,yBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UAEA,qBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,UAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MACH,GAAG,IAAA;AAAA,MACJ,uBAAyB,EAAA;AAAA,QACvB,QAAQ,MAAO,CAAA,aAAA,EAAe,IAAQ,IAAA,QAAA,IAAY,EAAE,CAAE,CAAA,UAAA;AAAA,UACpD,YAAA;AAAA,UACA,WAAA;AAAA,SACF;AAAA,OACF;AAAA,KAAA;AAAA,GACF;AAEJ,CAAA,CAAA;AAEF,sBAAA,CAAuB,WAAc,GAAA,kBAAA,CAAA;AAE9B,MAAM,gBAAmB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IsLoadingRenderer.js","sources":["../../src/renderers/IsLoadingRenderer.tsx"],"sourcesContent":["import { Box, Spinner } from '@apia/theme';\n\nexport const IsLoadingRenderer = () => {\n return (\n <Box className=\"responsiveTable__isLoading\">\n <Spinner />\n </Box>\n );\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,oBAAoB,MAAM;AACrC,EAAA,2BACG,GAAI,EAAA,EAAA,SAAA,EAAU,4BACb,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAQ,CACX,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"IsLoadingRenderer.js","sources":["../../src/renderers/IsLoadingRenderer.tsx"],"sourcesContent":["import { Box, Spinner } from '@apia/theme';\r\n\r\nexport const IsLoadingRenderer = () => {\r\n return (\r\n <Box className=\"responsiveTable__isLoading\">\r\n <Spinner />\r\n </Box>\r\n );\r\n};\r\n"],"names":[],"mappings":";;;AAEO,MAAM,oBAAoB,MAAM;AACrC,EAAA,2BACG,GAAI,EAAA,EAAA,SAAA,EAAU,4BACb,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAQ,CACX,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NoRegistersRenderer.js","sources":["../../src/renderers/NoRegistersRenderer.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nexport const NoRegistersRenderer = () => {\n const { labels } = useResponsiveTableContext();\n return <Box className=\"no__registers\">{labels.noRegisters}</Box>;\n};\n"],"names":[],"mappings":";;;;AAGO,MAAM,sBAAsB,MAAM;AACvC,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,yBAA0B,EAAA,CAAA;AAC7C,EAAA,uBAAQ,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,eAAA,EAAiB,iBAAO,WAAY,EAAA,CAAA,CAAA;AAC5D;;;;"}
1
+ {"version":3,"file":"NoRegistersRenderer.js","sources":["../../src/renderers/NoRegistersRenderer.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\r\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\r\n\r\nexport const NoRegistersRenderer = () => {\r\n const { labels } = useResponsiveTableContext();\r\n return <Box className=\"no__registers\">{labels.noRegisters}</Box>;\r\n};\r\n"],"names":[],"mappings":";;;;AAGO,MAAM,sBAAsB,MAAM;AACvC,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,yBAA0B,EAAA,CAAA;AAC7C,EAAA,uBAAQ,GAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,eAAA,EAAiB,iBAAO,WAAY,EAAA,CAAA,CAAA;AAC5D;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityAccordionRenderer.js","sources":["../../src/renderers/PriorityAccordionRenderer.tsx"],"sourcesContent":["import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getPriorityHandler } from './PriorityRenderer';\n\nconst NoMemoPriorityAccordionRenderer: TAccordionCellRenderer =\n React.forwardRef<HTMLTableCellElement, TAccordionCellRendererProps>(\n ({ cell, column }, currentRef) => {\n const taskPriorityColor = getPriorityHandler(\n cell.rendererProps?.src as string,\n );\n const title = column.label ?? column.name;\n return (\n <Box ref={currentRef} className=\"priority_container\">\n {title && <Box as=\"strong\">{column.label ?? column.name}: </Box>}\n <Box\n as=\"span\"\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </Box>\n </Box>\n );\n },\n );\n\nNoMemoPriorityAccordionRenderer.displayName = 'PriorityAccordionRenderer';\n\nexport const PriorityAccordionRenderer = NoMemoPriorityAccordionRenderer;\n"],"names":[],"mappings":";;;;;;AASA,MAAM,kCACJ,KAAM,CAAA,UAAA;AAAA,EACJ,CAAC,EAAE,IAAM,EAAA,MAAA,IAAU,UAAe,KAAA;AAChC,IAAA,MAAM,iBAAoB,GAAA,kBAAA;AAAA,MACxB,KAAK,aAAe,EAAA,GAAA;AAAA,KACtB,CAAA;AACA,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,IAAS,MAAO,CAAA,IAAA,CAAA;AACrC,IAAA,uBACG,IAAA,CAAA,GAAA,EAAA,EAAI,GAAK,EAAA,UAAA,EAAY,WAAU,oBAC7B,EAAA,QAAA,EAAA;AAAA,MAAS,KAAA,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAG,QAAU,EAAA,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,SAAS,MAAO,CAAA,IAAA;AAAA,QAAK,IAAA;AAAA,OAAE,EAAA,CAAA;AAAA,sBAC1D,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAG,EAAA,MAAA;AAAA,UACH,SAAU,EAAA,UAAA;AAAA,UACV,EAAI,EAAA;AAAA,YACF,KAAO,EAAA,iBAAA;AAAA,WACT;AAAA,UAEA,8BAAC,QAAS,EAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OACZ;AAAA,KACF,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEF,+BAAA,CAAgC,WAAc,GAAA,2BAAA,CAAA;AAEvC,MAAM,yBAA4B,GAAA;;;;"}
1
+ {"version":3,"file":"PriorityAccordionRenderer.js","sources":["../../src/renderers/PriorityAccordionRenderer.tsx"],"sourcesContent":["import { FaSquare } from '@meronex/icons/fa';\r\nimport React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport {\r\n TAccordionCellRenderer,\r\n TAccordionCellRendererProps,\r\n} from './AccordionCell';\r\nimport { getPriorityHandler } from './PriorityRenderer';\r\n\r\nconst NoMemoPriorityAccordionRenderer: TAccordionCellRenderer =\r\n React.forwardRef<HTMLTableCellElement, TAccordionCellRendererProps>(\r\n ({ cell, column }, currentRef) => {\r\n const taskPriorityColor = getPriorityHandler(\r\n cell.rendererProps?.src as string,\r\n );\r\n const title = column.label ?? column.name;\r\n return (\r\n <Box ref={currentRef} className=\"priority_container\">\r\n {title && <Box as=\"strong\">{column.label ?? column.name}: </Box>}\r\n <Box\r\n as=\"span\"\r\n className=\"priority\"\r\n sx={{\r\n color: taskPriorityColor,\r\n }}\r\n >\r\n <FaSquare />\r\n </Box>\r\n </Box>\r\n );\r\n },\r\n );\r\n\r\nNoMemoPriorityAccordionRenderer.displayName = 'PriorityAccordionRenderer';\r\n\r\nexport const PriorityAccordionRenderer = NoMemoPriorityAccordionRenderer;\r\n"],"names":[],"mappings":";;;;;;AASA,MAAM,kCACJ,KAAM,CAAA,UAAA;AAAA,EACJ,CAAC,EAAE,IAAM,EAAA,MAAA,IAAU,UAAe,KAAA;AAChC,IAAA,MAAM,iBAAoB,GAAA,kBAAA;AAAA,MACxB,KAAK,aAAe,EAAA,GAAA;AAAA,KACtB,CAAA;AACA,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,KAAA,IAAS,MAAO,CAAA,IAAA,CAAA;AACrC,IAAA,uBACG,IAAA,CAAA,GAAA,EAAA,EAAI,GAAK,EAAA,UAAA,EAAY,WAAU,oBAC7B,EAAA,QAAA,EAAA;AAAA,MAAS,KAAA,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAG,QAAU,EAAA,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,SAAS,MAAO,CAAA,IAAA;AAAA,QAAK,IAAA;AAAA,OAAE,EAAA,CAAA;AAAA,sBAC1D,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAG,EAAA,MAAA;AAAA,UACH,SAAU,EAAA,UAAA;AAAA,UACV,EAAI,EAAA;AAAA,YACF,KAAO,EAAA,iBAAA;AAAA,WACT;AAAA,UAEA,8BAAC,QAAS,EAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OACZ;AAAA,KACF,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEF,+BAAA,CAAgC,WAAc,GAAA,2BAAA,CAAA;AAEvC,MAAM,yBAA4B,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityRenderer.js","sources":["../../src/renderers/PriorityRenderer.tsx"],"sourcesContent":["import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getPriorityHandler(priority: string | undefined) {\n let prio;\n if (priority?.includes('priority0')) prio = 'priorityNone';\n if (priority?.includes('priority1')) prio = 'priorityLow';\n if (priority?.includes('priority2')) prio = 'priorityNormal';\n if (priority?.includes('priority3')) prio = 'priorityHigh';\n if (priority?.includes('priority4')) prio = 'priorityUrgent';\n return prio;\n}\nconst NoMemoPriorityRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskPriorityColor = getPriorityHandler(rendererProps?.src);\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </td>\n );\n },\n );\nNoMemoPriorityRenderer.displayName = 'PriorityRenderer';\nexport const PriorityRenderer = NoMemoPriorityRenderer;\n"],"names":[],"mappings":";;;;AAOO,SAAS,mBAAmB,QAA8B,EAAA;AAC/D,EAAI,IAAA,IAAA,CAAA;AACJ,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,cAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,aAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,gBAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,cAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,gBAAA,CAAA;AAC5C,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AACA,MAAM,yBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UACG,KAAA;AACH,IAAM,MAAA,iBAAA,GAAoB,kBAAmB,CAAA,aAAA,EAAe,GAAG,CAAA,CAAA;AAC/D,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACH,GAAG,IAAA;AAAA,QACJ,GAAK,EAAA,UAAA;AAAA,QACL,SAAU,EAAA,UAAA;AAAA,QACV,EAAI,EAAA;AAAA,UACF,KAAO,EAAA,iBAAA;AAAA,SACT;AAAA,QAEA,8BAAC,QAAS,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KACZ,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AACF,sBAAA,CAAuB,WAAc,GAAA,kBAAA,CAAA;AAC9B,MAAM,gBAAmB,GAAA;;;;"}
1
+ {"version":3,"file":"PriorityRenderer.js","sources":["../../src/renderers/PriorityRenderer.tsx"],"sourcesContent":["import { FaSquare } from '@meronex/icons/fa';\r\nimport React from 'react';\r\nimport {\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nexport function getPriorityHandler(priority: string | undefined) {\r\n let prio;\r\n if (priority?.includes('priority0')) prio = 'priorityNone';\r\n if (priority?.includes('priority1')) prio = 'priorityLow';\r\n if (priority?.includes('priority2')) prio = 'priorityNormal';\r\n if (priority?.includes('priority3')) prio = 'priorityHigh';\r\n if (priority?.includes('priority4')) prio = 'priorityUrgent';\r\n return prio;\r\n}\r\nconst NoMemoPriorityRenderer: TResponsiveTableCellRenderer<{ src: string }> =\r\n React.forwardRef<\r\n HTMLTableCellElement,\r\n TResponsiveTableCellRendererProps<{ src: string }>\r\n >(\r\n (\r\n {\r\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\r\n column,\r\n row,\r\n ...props\r\n },\r\n currentRef,\r\n ) => {\r\n const taskPriorityColor = getPriorityHandler(rendererProps?.src);\r\n return (\r\n <td\r\n {...props}\r\n {...cell}\r\n ref={currentRef}\r\n className=\"priority\"\r\n sx={{\r\n color: taskPriorityColor,\r\n }}\r\n >\r\n <FaSquare />\r\n </td>\r\n );\r\n },\r\n );\r\nNoMemoPriorityRenderer.displayName = 'PriorityRenderer';\r\nexport const PriorityRenderer = NoMemoPriorityRenderer;\r\n"],"names":[],"mappings":";;;;AAOO,SAAS,mBAAmB,QAA8B,EAAA;AAC/D,EAAI,IAAA,IAAA,CAAA;AACJ,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,cAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,aAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,gBAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,cAAA,CAAA;AAC5C,EAAI,IAAA,QAAA,EAAU,SAAS,WAAW,CAAA;AAAG,IAAO,IAAA,GAAA,gBAAA,CAAA;AAC5C,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AACA,MAAM,yBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UACG,KAAA;AACH,IAAM,MAAA,iBAAA,GAAoB,kBAAmB,CAAA,aAAA,EAAe,GAAG,CAAA,CAAA;AAC/D,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACH,GAAG,IAAA;AAAA,QACJ,GAAK,EAAA,UAAA;AAAA,QACL,SAAU,EAAA,UAAA;AAAA,QACV,EAAI,EAAA;AAAA,UACF,KAAO,EAAA,iBAAA;AAAA,SACT;AAAA,QAEA,8BAAC,QAAS,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KACZ,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AACF,sBAAA,CAAuB,WAAc,GAAA,kBAAA,CAAA;AAC9B,MAAM,gBAAmB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RowStatesRenderer.js","sources":["../../src/renderers/RowStatesRenderer.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, getVariant } from '@apia/theme';\nimport { TResponsiveTableRowState } from '../types';\n\nconst NoMemoRowStatesRenderer = ({\n state,\n}: {\n state: TResponsiveTableRowState;\n}) => {\n const { Icon } = state;\n\n return (\n <Box\n sx={React.useMemo(\n () => ({\n '&, svg, path': {\n color: state.color ?? '',\n },\n }),\n [state.color],\n )}\n >\n <Icon\n {...getVariant('inherit')}\n title={state.tooltip}\n className={`${state.className ?? 'state'}_icon state_icon`}\n />\n </Box>\n );\n};\n\nexport const RowStatesRenderer = React.memo(NoMemoRowStatesRenderer);\n"],"names":[],"mappings":";;;;AAIA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,KAAA;AACF,CAEM,KAAA;AACJ,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA,CAAA;AAEjB,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,IAAI,KAAM,CAAA,OAAA;AAAA,QACR,OAAO;AAAA,UACL,cAAgB,EAAA;AAAA,YACd,KAAA,EAAO,MAAM,KAAS,IAAA,EAAA;AAAA,WACxB;AAAA,SACF,CAAA;AAAA,QACA,CAAC,MAAM,KAAK,CAAA;AAAA,OACd;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAW,SAAS,CAAA;AAAA,UACxB,OAAO,KAAM,CAAA,OAAA;AAAA,UACb,SAAW,EAAA,CAAA,EAAG,KAAM,CAAA,SAAA,IAAa,OAAO,CAAA,gBAAA,CAAA;AAAA,SAAA;AAAA,OAC1C;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,iBAAA,GAAoB,KAAM,CAAA,IAAA,CAAK,uBAAuB;;;;"}
1
+ {"version":3,"file":"RowStatesRenderer.js","sources":["../../src/renderers/RowStatesRenderer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, getVariant } from '@apia/theme';\r\nimport { TResponsiveTableRowState } from '../types';\r\n\r\nconst NoMemoRowStatesRenderer = ({\r\n state,\r\n}: {\r\n state: TResponsiveTableRowState;\r\n}) => {\r\n const { Icon } = state;\r\n\r\n return (\r\n <Box\r\n sx={React.useMemo(\r\n () => ({\r\n '&, svg, path': {\r\n color: state.color ?? '',\r\n },\r\n }),\r\n [state.color],\r\n )}\r\n >\r\n <Icon\r\n {...getVariant('inherit')}\r\n title={state.tooltip}\r\n className={`${state.className ?? 'state'}_icon state_icon`}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport const RowStatesRenderer = React.memo(NoMemoRowStatesRenderer);\r\n"],"names":[],"mappings":";;;;AAIA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,KAAA;AACF,CAEM,KAAA;AACJ,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA,CAAA;AAEjB,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,IAAI,KAAM,CAAA,OAAA;AAAA,QACR,OAAO;AAAA,UACL,cAAgB,EAAA;AAAA,YACd,KAAA,EAAO,MAAM,KAAS,IAAA,EAAA;AAAA,WACxB;AAAA,SACF,CAAA;AAAA,QACA,CAAC,MAAM,KAAK,CAAA;AAAA,OACd;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAW,SAAS,CAAA;AAAA,UACxB,OAAO,KAAM,CAAA,OAAA;AAAA,UACb,SAAW,EAAA,CAAA,EAAG,KAAM,CAAA,SAAA,IAAa,OAAO,CAAA,gBAAA,CAAA;AAAA,SAAA;AAAA,OAC1C;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,iBAAA,GAAoB,KAAM,CAAA,IAAA,CAAK,uBAAuB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusAccordionRenderer.js","sources":["../../src/renderers/StatusAccordionRenderer.tsx"],"sourcesContent":["import React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getStatusRendererClassName } from './StatusRenderer';\n\nconst NoMemoStatusAccordionRenderer: TAccordionCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TAccordionCellRendererProps\n>(({ cell, column }, currentRef) => {\n const taskStatusClassName = getStatusRendererClassName(\n cell.children as string,\n column.name,\n );\n\n return (\n <Box ref={currentRef}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" className={taskStatusClassName}>\n {cell.children}\n </Box>\n </Box>\n );\n});\n\nNoMemoStatusAccordionRenderer.displayName = 'StatusAccordionRenderer';\n\nexport const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;\n"],"names":[],"mappings":";;;;;AAQA,MAAM,6BAAA,GAAwD,MAAM,UAGlE,CAAA,CAAC,EAAE,IAAM,EAAA,MAAA,IAAU,UAAe,KAAA;AAClC,EAAA,MAAM,mBAAsB,GAAA,0BAAA;AAAA,IAC1B,IAAK,CAAA,QAAA;AAAA,IACL,MAAO,CAAA,IAAA;AAAA,GACT,CAAA;AAEA,EACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,GAAA,EAAK,UACR,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,SAAS,MAAO,CAAA,IAAA;AAAA,MAAK,IAAA;AAAA,KAAE,EAAA,CAAA;AAAA,wBAC/C,GAAI,EAAA,EAAA,EAAA,EAAG,QAAO,SAAW,EAAA,mBAAA,EACvB,eAAK,QACR,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAC,CAAA,CAAA;AAED,6BAAA,CAA8B,WAAc,GAAA,yBAAA,CAAA;AAErC,MAAM,uBAA0B,GAAA;;;;"}
1
+ {"version":3,"file":"StatusAccordionRenderer.js","sources":["../../src/renderers/StatusAccordionRenderer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport {\r\n TAccordionCellRenderer,\r\n TAccordionCellRendererProps,\r\n} from './AccordionCell';\r\nimport { getStatusRendererClassName } from './StatusRenderer';\r\n\r\nconst NoMemoStatusAccordionRenderer: TAccordionCellRenderer = React.forwardRef<\r\n HTMLTableCellElement,\r\n TAccordionCellRendererProps\r\n>(({ cell, column }, currentRef) => {\r\n const taskStatusClassName = getStatusRendererClassName(\r\n cell.children as string,\r\n column.name,\r\n );\r\n\r\n return (\r\n <Box ref={currentRef}>\r\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\r\n <Box as=\"span\" className={taskStatusClassName}>\r\n {cell.children}\r\n </Box>\r\n </Box>\r\n );\r\n});\r\n\r\nNoMemoStatusAccordionRenderer.displayName = 'StatusAccordionRenderer';\r\n\r\nexport const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;\r\n"],"names":[],"mappings":";;;;;AAQA,MAAM,6BAAA,GAAwD,MAAM,UAGlE,CAAA,CAAC,EAAE,IAAM,EAAA,MAAA,IAAU,UAAe,KAAA;AAClC,EAAA,MAAM,mBAAsB,GAAA,0BAAA;AAAA,IAC1B,IAAK,CAAA,QAAA;AAAA,IACL,MAAO,CAAA,IAAA;AAAA,GACT,CAAA;AAEA,EACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,GAAA,EAAK,UACR,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,SAAS,MAAO,CAAA,IAAA;AAAA,MAAK,IAAA;AAAA,KAAE,EAAA,CAAA;AAAA,wBAC/C,GAAI,EAAA,EAAA,EAAA,EAAG,QAAO,SAAW,EAAA,mBAAA,EACvB,eAAK,QACR,EAAA,CAAA;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ,CAAC,CAAA,CAAA;AAED,6BAAA,CAA8B,WAAc,GAAA,yBAAA,CAAA;AAErC,MAAM,uBAA0B,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusRenderer.js","sources":["../../src/renderers/StatusRenderer.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport React from 'react';\nimport { TDateFormat, getDateFormat } from '@apia/util';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getStatusRendererClassName(\n cellValue: string,\n columnName: string,\n) {\n if (cellValue === undefined) return '';\n\n const cellValueDate = cellValue.split(' ')[0];\n const cellValueHour = cellValue.split(' ')[1] ?? '00:00:00';\n\n const dateFormat: TDateFormat = getDateFormat();\n const currentDate = dayjs();\n const currentHour = Number(dayjs().format('HHmm'));\n const queriedDate = dayjs(cellValueDate, dateFormat);\n const queriedHour = Number(dayjs(cellValueHour, dateFormat));\n let statusClassName = '';\n\n if (currentDate >= queriedDate) {\n statusClassName = columnName;\n }\n if (!queriedHour) return statusClassName;\n\n if (currentDate <= queriedDate && currentHour < queriedHour) {\n statusClassName = columnName;\n }\n return statusClassName;\n}\n\nconst NoMemoStatusRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskStatusClassName = getStatusRendererClassName(\n children as string,\n column.name,\n );\n\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className={taskStatusClassName}\n >\n {children}\n </td>\n );\n },\n );\n\nNoMemoStatusRenderer.displayName = 'StatusRenderer';\n\nexport const StatusRenderer = NoMemoStatusRenderer;\n"],"names":[],"mappings":";;;;;AAQgB,SAAA,0BAAA,CACd,WACA,UACA,EAAA;AACA,EAAA,IAAI,SAAc,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,EAAA,CAAA;AAEpC,EAAA,MAAM,aAAgB,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AAC5C,EAAA,MAAM,gBAAgB,SAAU,CAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAK,IAAA,UAAA,CAAA;AAEjD,EAAA,MAAM,aAA0B,aAAc,EAAA,CAAA;AAC9C,EAAA,MAAM,cAAc,KAAM,EAAA,CAAA;AAC1B,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA,EAAQ,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AACjD,EAAM,MAAA,WAAA,GAAc,KAAM,CAAA,aAAA,EAAe,UAAU,CAAA,CAAA;AACnD,EAAA,MAAM,WAAc,GAAA,MAAA,CAAO,KAAM,CAAA,aAAA,EAAe,UAAU,CAAC,CAAA,CAAA;AAC3D,EAAA,IAAI,eAAkB,GAAA,EAAA,CAAA;AAEtB,EAAA,IAAI,eAAe,WAAa,EAAA;AAC9B,IAAkB,eAAA,GAAA,UAAA,CAAA;AAAA,GACpB;AACA,EAAA,IAAI,CAAC,WAAA;AAAa,IAAO,OAAA,eAAA,CAAA;AAEzB,EAAI,IAAA,WAAA,IAAe,WAAe,IAAA,WAAA,GAAc,WAAa,EAAA;AAC3D,IAAkB,eAAA,GAAA,UAAA,CAAA;AAAA,GACpB;AACA,EAAO,OAAA,eAAA,CAAA;AACT,CAAA;AAEA,MAAM,uBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UACG,KAAA;AACH,IAAA,MAAM,mBAAsB,GAAA,0BAAA;AAAA,MAC1B,QAAA;AAAA,MACA,MAAO,CAAA,IAAA;AAAA,KACT,CAAA;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACH,GAAG,IAAA;AAAA,QACJ,GAAK,EAAA,UAAA;AAAA,QACL,SAAW,EAAA,mBAAA;AAAA,QAEV,QAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEF,oBAAA,CAAqB,WAAc,GAAA,gBAAA,CAAA;AAE5B,MAAM,cAAiB,GAAA;;;;"}
1
+ {"version":3,"file":"StatusRenderer.js","sources":["../../src/renderers/StatusRenderer.tsx"],"sourcesContent":["import dayjs from 'dayjs';\r\nimport React from 'react';\r\nimport { TDateFormat, getDateFormat } from '@apia/util';\r\nimport {\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nexport function getStatusRendererClassName(\r\n cellValue: string,\r\n columnName: string,\r\n) {\r\n if (cellValue === undefined) return '';\r\n\r\n const cellValueDate = cellValue.split(' ')[0];\r\n const cellValueHour = cellValue.split(' ')[1] ?? '00:00:00';\r\n\r\n const dateFormat: TDateFormat = getDateFormat();\r\n const currentDate = dayjs();\r\n const currentHour = Number(dayjs().format('HHmm'));\r\n const queriedDate = dayjs(cellValueDate, dateFormat);\r\n const queriedHour = Number(dayjs(cellValueHour, dateFormat));\r\n let statusClassName = '';\r\n\r\n if (currentDate >= queriedDate) {\r\n statusClassName = columnName;\r\n }\r\n if (!queriedHour) return statusClassName;\r\n\r\n if (currentDate <= queriedDate && currentHour < queriedHour) {\r\n statusClassName = columnName;\r\n }\r\n return statusClassName;\r\n}\r\n\r\nconst NoMemoStatusRenderer: TResponsiveTableCellRenderer<{ src: string }> =\r\n React.forwardRef<\r\n HTMLTableCellElement,\r\n TResponsiveTableCellRendererProps<{ src: string }>\r\n >(\r\n (\r\n {\r\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\r\n column,\r\n row,\r\n ...props\r\n },\r\n currentRef,\r\n ) => {\r\n const taskStatusClassName = getStatusRendererClassName(\r\n children as string,\r\n column.name,\r\n );\r\n\r\n return (\r\n <td\r\n {...props}\r\n {...cell}\r\n ref={currentRef}\r\n className={taskStatusClassName}\r\n >\r\n {children}\r\n </td>\r\n );\r\n },\r\n );\r\n\r\nNoMemoStatusRenderer.displayName = 'StatusRenderer';\r\n\r\nexport const StatusRenderer = NoMemoStatusRenderer;\r\n"],"names":[],"mappings":";;;;;AAQgB,SAAA,0BAAA,CACd,WACA,UACA,EAAA;AACA,EAAA,IAAI,SAAc,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,EAAA,CAAA;AAEpC,EAAA,MAAM,aAAgB,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AAC5C,EAAA,MAAM,gBAAgB,SAAU,CAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAK,IAAA,UAAA,CAAA;AAEjD,EAAA,MAAM,aAA0B,aAAc,EAAA,CAAA;AAC9C,EAAA,MAAM,cAAc,KAAM,EAAA,CAAA;AAC1B,EAAA,MAAM,cAAc,MAAO,CAAA,KAAA,EAAQ,CAAA,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA;AACjD,EAAM,MAAA,WAAA,GAAc,KAAM,CAAA,aAAA,EAAe,UAAU,CAAA,CAAA;AACnD,EAAA,MAAM,WAAc,GAAA,MAAA,CAAO,KAAM,CAAA,aAAA,EAAe,UAAU,CAAC,CAAA,CAAA;AAC3D,EAAA,IAAI,eAAkB,GAAA,EAAA,CAAA;AAEtB,EAAA,IAAI,eAAe,WAAa,EAAA;AAC9B,IAAkB,eAAA,GAAA,UAAA,CAAA;AAAA,GACpB;AACA,EAAA,IAAI,CAAC,WAAA;AAAa,IAAO,OAAA,eAAA,CAAA;AAEzB,EAAI,IAAA,WAAA,IAAe,WAAe,IAAA,WAAA,GAAc,WAAa,EAAA;AAC3D,IAAkB,eAAA,GAAA,UAAA,CAAA;AAAA,GACpB;AACA,EAAO,OAAA,eAAA,CAAA;AACT,CAAA;AAEA,MAAM,uBACJ,KAAM,CAAA,UAAA;AAAA,EAIJ,CACE;AAAA,IACE,MAAM,EAAE,QAAA,EAAU,UAAU,aAAe,EAAA,iBAAA,EAAmB,GAAG,IAAK,EAAA;AAAA,IACtE,MAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG,KAAA;AAAA,KAEL,UACG,KAAA;AACH,IAAA,MAAM,mBAAsB,GAAA,0BAAA;AAAA,MAC1B,QAAA;AAAA,MACA,MAAO,CAAA,IAAA;AAAA,KACT,CAAA;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACH,GAAG,IAAA;AAAA,QACJ,GAAK,EAAA,UAAA;AAAA,QACL,SAAW,EAAA,mBAAA;AAAA,QAEV,QAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEF,oBAAA,CAAqB,WAAc,GAAA,gBAAA,CAAA;AAE5B,MAAM,cAAiB,GAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableRenderer.js","sources":["../../src/renderers/TableRenderer.tsx"],"sourcesContent":["import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { Header } from '../Header';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { Row } from '../Row';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport { useDomProps } from '../store/selection/useDomProps';\nimport { useResponsiveTable } from '../store';\n\nconst NoMemoTableRenderer = () => {\n const { name, label } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'table',\n {},\n (global) => global.responsiveTableSlice[name],\n );\n\n const rows = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return (tableState?.rows ?? []).map((current) => current.id);\n }, shallowEqual);\n\n const { columnsCount, rowsCount } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n rowsCount: tableState?.rows.length ?? 0,\n columnsCount:\n (tableState?.nonAdditionalColumnsCount ?? 0) +\n (tableState?.hasNonAdditionalFilters ? 1 : 0) +\n (tableState?.statesColumns ?? 0) +\n (tableState?.columns.find((current) => current.showAsAdditional)\n ? 1\n : 0),\n };\n }, shallowEqual);\n\n return (\n <Box\n {...domProps}\n as=\"table\"\n className=\"responsiveTable__table\"\n {...getVariant('layout.common.tables.primary')}\n aria-label={label}\n >\n <Header />\n <tbody>\n {rowsCount > 0 ? (\n rows.map((row, index) => {\n return (\n <Row key={row ?? `${row as string}-${index}`} rowIndex={index} />\n );\n })\n ) : (\n <tr>\n <td colSpan={columnsCount}>\n <NoRegistersRenderer />\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n );\n};\n\nexport const TableRenderer = React.memo(NoMemoTableRenderer);\n"],"names":[],"mappings":";;;;;;;;;;;AAWA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,IAAA,EAAM,KAAM,EAAA,GAAI,yBAA0B,EAAA,CAAA;AAClD,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,OAAA;AAAA,IACA,EAAC;AAAA,IACD,CAAC,MAAA,KAAW,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,GAC9C,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,kBAAmB,CAAA,CAAC,MAAW,KAAA;AAC1C,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACnD,IAAQ,OAAA,CAAA,UAAA,EAAY,QAAQ,EAAC,EAAG,IAAI,CAAC,OAAA,KAAY,QAAQ,EAAE,CAAA,CAAA;AAAA,KAC1D,YAAY,CAAA,CAAA;AAEf,EAAA,MAAM,EAAE,YAAc,EAAA,SAAA,EAAc,GAAA,kBAAA,CAAmB,CAAC,MAAW,KAAA;AACjE,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACnD,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,UAAY,EAAA,IAAA,CAAK,MAAU,IAAA,CAAA;AAAA,MACtC,eACG,UAAY,EAAA,yBAAA,IAA6B,MACzC,UAAY,EAAA,uBAAA,GAA0B,IAAI,CAC1C,CAAA,IAAA,UAAA,EAAY,iBAAiB,CAC7B,CAAA,IAAA,UAAA,EAAY,QAAQ,IAAK,CAAA,CAAC,YAAY,OAAQ,CAAA,gBAAgB,IAC3D,CACA,GAAA,CAAA,CAAA;AAAA,KACR,CAAA;AAAA,KACC,YAAY,CAAA,CAAA;AAEf,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,QAAA;AAAA,MACJ,EAAG,EAAA,OAAA;AAAA,MACH,SAAU,EAAA,wBAAA;AAAA,MACT,GAAG,WAAW,8BAA8B,CAAA;AAAA,MAC7C,YAAY,EAAA,KAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,CAAA;AAAA,wBACR,GAAA,CAAC,WACE,QAAY,EAAA,SAAA,GAAA,CAAA,GACX,KAAK,GAAI,CAAA,CAAC,KAAK,KAAU,KAAA;AACvB,UACE,uBAAA,GAAA,CAAC,OAA6C,QAAU,EAAA,KAAA,EAAA,EAA9C,OAAO,CAAG,EAAA,GAAa,CAAI,CAAA,EAAA,KAAK,CAAqB,CAAA,CAAA,CAAA;AAAA,SAElE,CAAA,mBAEA,GAAA,CAAA,IAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAG,OAAS,EAAA,YAAA,EACX,QAAC,kBAAA,GAAA,CAAA,mBAAA,EAAA,EAAoB,CACvB,EAAA,CAAA,EACF,CAEJ,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,aAAA,GAAgB,KAAM,CAAA,IAAA,CAAK,mBAAmB;;;;"}
1
+ {"version":3,"file":"TableRenderer.js","sources":["../../src/renderers/TableRenderer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { Box } from '@apia/theme';\r\nimport { getVariant } from '@apia/theme';\r\nimport { Header } from '../Header';\r\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\r\nimport { Row } from '../Row';\r\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\r\nimport { useDomProps } from '../store/selection/useDomProps';\r\nimport { useResponsiveTable } from '../store';\r\n\r\nconst NoMemoTableRenderer = () => {\r\n const { name, label } = useResponsiveTableContext();\r\n const domProps = useDomProps(\r\n 'table',\r\n {},\r\n (global) => global.responsiveTableSlice[name],\r\n );\r\n\r\n const rows = useResponsiveTable((global) => {\r\n const tableState = global.responsiveTableSlice[name];\r\n return (tableState?.rows ?? []).map((current) => current.id);\r\n }, shallowEqual);\r\n\r\n const { columnsCount, rowsCount } = useResponsiveTable((global) => {\r\n const tableState = global.responsiveTableSlice[name];\r\n return {\r\n rowsCount: tableState?.rows.length ?? 0,\r\n columnsCount:\r\n (tableState?.nonAdditionalColumnsCount ?? 0) +\r\n (tableState?.hasNonAdditionalFilters ? 1 : 0) +\r\n (tableState?.statesColumns ?? 0) +\r\n (tableState?.columns.find((current) => current.showAsAdditional)\r\n ? 1\r\n : 0),\r\n };\r\n }, shallowEqual);\r\n\r\n return (\r\n <Box\r\n {...domProps}\r\n as=\"table\"\r\n className=\"responsiveTable__table\"\r\n {...getVariant('layout.common.tables.primary')}\r\n aria-label={label}\r\n >\r\n <Header />\r\n <tbody>\r\n {rowsCount > 0 ? (\r\n rows.map((row, index) => {\r\n return (\r\n <Row key={row ?? `${row as string}-${index}`} rowIndex={index} />\r\n );\r\n })\r\n ) : (\r\n <tr>\r\n <td colSpan={columnsCount}>\r\n <NoRegistersRenderer />\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Box>\r\n );\r\n};\r\n\r\nexport const TableRenderer = React.memo(NoMemoTableRenderer);\r\n"],"names":[],"mappings":";;;;;;;;;;;AAWA,MAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,IAAA,EAAM,KAAM,EAAA,GAAI,yBAA0B,EAAA,CAAA;AAClD,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,OAAA;AAAA,IACA,EAAC;AAAA,IACD,CAAC,MAAA,KAAW,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,GAC9C,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,kBAAmB,CAAA,CAAC,MAAW,KAAA;AAC1C,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACnD,IAAQ,OAAA,CAAA,UAAA,EAAY,QAAQ,EAAC,EAAG,IAAI,CAAC,OAAA,KAAY,QAAQ,EAAE,CAAA,CAAA;AAAA,KAC1D,YAAY,CAAA,CAAA;AAEf,EAAA,MAAM,EAAE,YAAc,EAAA,SAAA,EAAc,GAAA,kBAAA,CAAmB,CAAC,MAAW,KAAA;AACjE,IAAM,MAAA,UAAA,GAAa,MAAO,CAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACnD,IAAO,OAAA;AAAA,MACL,SAAA,EAAW,UAAY,EAAA,IAAA,CAAK,MAAU,IAAA,CAAA;AAAA,MACtC,eACG,UAAY,EAAA,yBAAA,IAA6B,MACzC,UAAY,EAAA,uBAAA,GAA0B,IAAI,CAC1C,CAAA,IAAA,UAAA,EAAY,iBAAiB,CAC7B,CAAA,IAAA,UAAA,EAAY,QAAQ,IAAK,CAAA,CAAC,YAAY,OAAQ,CAAA,gBAAgB,IAC3D,CACA,GAAA,CAAA,CAAA;AAAA,KACR,CAAA;AAAA,KACC,YAAY,CAAA,CAAA;AAEf,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,QAAA;AAAA,MACJ,EAAG,EAAA,OAAA;AAAA,MACH,SAAU,EAAA,wBAAA;AAAA,MACT,GAAG,WAAW,8BAA8B,CAAA;AAAA,MAC7C,YAAY,EAAA,KAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,CAAA;AAAA,wBACR,GAAA,CAAC,WACE,QAAY,EAAA,SAAA,GAAA,CAAA,GACX,KAAK,GAAI,CAAA,CAAC,KAAK,KAAU,KAAA;AACvB,UACE,uBAAA,GAAA,CAAC,OAA6C,QAAU,EAAA,KAAA,EAAA,EAA9C,OAAO,CAAG,EAAA,GAAa,CAAI,CAAA,EAAA,KAAK,CAAqB,CAAA,CAAA,CAAA;AAAA,SAElE,CAAA,mBAEA,GAAA,CAAA,IAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAG,OAAS,EAAA,YAAA,EACX,QAAC,kBAAA,GAAA,CAAA,mBAAA,EAAA,EAAoB,CACvB,EAAA,CAAA,EACF,CAEJ,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,aAAA,GAAgB,KAAM,CAAA,IAAA,CAAK,mBAAmB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"makeAccordionAsyncRenderer.js","sources":["../../src/renderers/makeAccordionAsyncRenderer.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { arrayOrArray } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAccordionAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n }[]\n | null\n >(null);\n const loadMore = useCallback(async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n }, [row]);\n\n return (\n <>\n {moreInfo ? (\n <>\n <IconButton icon=\"Minus\" onClick={() => setMoreInfo(null)} />\n {arrayOrArray(moreInfo).map(\n (dataCell: { label?: string; name: string }) => {\n return (\n <Box key={dataCell.name} ref={ref} as=\"div\">\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </Box>\n );\n },\n )}\n </>\n ) : (\n <IconButton icon=\"Plus\" onClick={() => void loadMore()} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAccordionAsyncRenderer';\n\n return InnerRender;\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,2BACd,oBAMA,EAAA;AACA,EAAA,MAAM,cAA4C,UAGhD,CAAA,CAAC,EAAE,GAAA,IAAO,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAM9B,IAAI,CAAA,CAAA;AACN,IAAM,MAAA,QAAA,GAAW,YAAY,YAAY;AACvC,MAAM,MAAA,MAAA,GAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA,CAAA;AAC7C,MAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,KACpB,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,IACE,uBAAA,GAAA,CAAA,QAAA,EAAA,EACG,qCAEG,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAW,IAAK,EAAA,OAAA,EAAQ,SAAS,MAAM,WAAA,CAAY,IAAI,CAAG,EAAA,CAAA;AAAA,MAC1D,YAAA,CAAa,QAAQ,CAAE,CAAA,GAAA;AAAA,QACtB,CAAC,QAA+C,KAAA;AAC9C,UAAA,uBACG,IAAA,CAAA,GAAA,EAAA,EAAwB,GAAU,EAAA,EAAA,EAAG,KACpC,EAAA,QAAA,EAAA;AAAA,4BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aAAC,EAAA,CAAA;AAAA,YAAM,GAAA;AAAA,YAAE,QAAS,CAAA,KAAA;AAAA,WAAA,EAAA,EAD1C,SAAS,IAEnB,CAAA,CAAA;AAAA,SAEJ;AAAA,OACF;AAAA,KACF,EAAA,CAAA,mBAEC,GAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,MAAA,EAAO,SAAS,MAAM,KAAK,QAAS,EAAA,EAAG,CAE5D,EAAA,CAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAA,WAAA,CAAY,WAAc,GAAA,4BAAA,CAAA;AAE1B,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"makeAccordionAsyncRenderer.js","sources":["../../src/renderers/makeAccordionAsyncRenderer.tsx"],"sourcesContent":["import { forwardRef, useCallback, useState } from 'react';\r\nimport { Box } from '@apia/theme';\r\nimport { IconButton } from '@apia/components';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport {\r\n TResponsiveTableRow,\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nexport function makeAccordionAsyncRenderer(\r\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\r\n {\r\n label?: string;\r\n name: string;\r\n }[]\r\n >,\r\n) {\r\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\r\n HTMLElement,\r\n TResponsiveTableCellRendererProps\r\n >(({ row }, ref) => {\r\n const [moreInfo, setMoreInfo] = useState<\r\n | {\r\n label?: string;\r\n name: string;\r\n }[]\r\n | null\r\n >(null);\r\n const loadMore = useCallback(async () => {\r\n const result = await additionalInfoGetter(row);\r\n setMoreInfo(result);\r\n }, [row]);\r\n\r\n return (\r\n <>\r\n {moreInfo ? (\r\n <>\r\n <IconButton icon=\"Minus\" onClick={() => setMoreInfo(null)} />\r\n {arrayOrArray(moreInfo).map(\r\n (dataCell: { label?: string; name: string }) => {\r\n return (\r\n <Box key={dataCell.name} ref={ref} as=\"div\">\r\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\r\n </Box>\r\n );\r\n },\r\n )}\r\n </>\r\n ) : (\r\n <IconButton icon=\"Plus\" onClick={() => void loadMore()} />\r\n )}\r\n </>\r\n );\r\n });\r\n\r\n InnerRender.displayName = 'MakeAccordionAsyncRenderer';\r\n\r\n return InnerRender;\r\n}\r\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,2BACd,oBAMA,EAAA;AACA,EAAA,MAAM,cAA4C,UAGhD,CAAA,CAAC,EAAE,GAAA,IAAO,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAM9B,IAAI,CAAA,CAAA;AACN,IAAM,MAAA,QAAA,GAAW,YAAY,YAAY;AACvC,MAAM,MAAA,MAAA,GAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA,CAAA;AAC7C,MAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,KACpB,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,IACE,uBAAA,GAAA,CAAA,QAAA,EAAA,EACG,qCAEG,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAW,IAAK,EAAA,OAAA,EAAQ,SAAS,MAAM,WAAA,CAAY,IAAI,CAAG,EAAA,CAAA;AAAA,MAC1D,YAAA,CAAa,QAAQ,CAAE,CAAA,GAAA;AAAA,QACtB,CAAC,QAA+C,KAAA;AAC9C,UAAA,uBACG,IAAA,CAAA,GAAA,EAAA,EAAwB,GAAU,EAAA,EAAA,EAAG,KACpC,EAAA,QAAA,EAAA;AAAA,4BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aAAC,EAAA,CAAA;AAAA,YAAM,GAAA;AAAA,YAAE,QAAS,CAAA,KAAA;AAAA,WAAA,EAAA,EAD1C,SAAS,IAEnB,CAAA,CAAA;AAAA,SAEJ;AAAA,OACF;AAAA,KACF,EAAA,CAAA,mBAEC,GAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,MAAA,EAAO,SAAS,MAAM,KAAK,QAAS,EAAA,EAAG,CAE5D,EAAA,CAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAA,WAAA,CAAY,WAAc,GAAA,4BAAA,CAAA;AAE1B,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"makeAsyncRenderer.js","sources":["../../src/renderers/makeAsyncRenderer.tsx"],"sourcesContent":["import uniqueId from 'lodash-es/uniqueId';\nimport { forwardRef, useState } from 'react';\nimport { Box, Spinner } from '@apia/theme';\nimport { arrayOrArray, useMount } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n | null\n >(null);\n useMount(() => {\n void (async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n })();\n });\n\n return (\n <>\n {moreInfo ? (\n arrayOrArray(moreInfo).map((dataCell) => {\n return (\n <Box\n key={`${dataCell.name}-${uniqueId()}`}\n ref={ref}\n className={`responsiveTable__additionalInfoItem ${\n dataCell.newline ? 'separator' : ''\n }`}\n >\n {dataCell.newline ? (\n <>\n <Box sx={{ height: '20px' }} as=\"strong\">\n {dataCell.name}:\n </Box>{' '}\n {dataCell.label}\n </>\n ) : (\n <>\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </>\n )}\n </Box>\n );\n })\n ) : (\n <Spinner size={15} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAsyncRenderer';\n\n return InnerRender;\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBACd,oBAOA,EAAA;AACA,EAAA,MAAM,cAA4C,UAGhD,CAAA,CAAC,EAAE,GAAA,IAAO,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAO9B,IAAI,CAAA,CAAA;AACN,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,KAAA,CAAM,YAAY;AAChB,QAAM,MAAA,MAAA,GAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA,CAAA;AAC7C,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACjB,GAAA,CAAA;AAAA,KACJ,CAAA,CAAA;AAED,IAAA,uCAEK,QACC,EAAA,QAAA,GAAA,YAAA,CAAa,QAAQ,CAAE,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AACvC,MACE,uBAAA,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UAEC,GAAA;AAAA,UACA,SAAW,EAAA,CAAA,oCAAA,EACT,QAAS,CAAA,OAAA,GAAU,cAAc,EACnC,CAAA,CAAA;AAAA,UAEC,QAAA,EAAA,QAAA,CAAS,0BAEN,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,OAAI,EAAI,EAAA,EAAE,QAAQ,MAAO,EAAA,EAAG,IAAG,QAC7B,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aACjB,EAAA,CAAA;AAAA,YAAO,GAAA;AAAA,YACN,QAAS,CAAA,KAAA;AAAA,WAAA,EACZ,oBAGE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aAAC,EAAA,CAAA;AAAA,YAAM,GAAA;AAAA,YAAE,QAAS,CAAA,KAAA;AAAA,WACpD,EAAA,CAAA;AAAA,SAAA;AAAA,QAhBG,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,OAkBrC,CAAA;AAAA,KAEH,CAED,mBAAA,GAAA,CAAC,OAAQ,EAAA,EAAA,IAAA,EAAM,IAAI,CAEvB,EAAA,CAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAA,WAAA,CAAY,WAAc,GAAA,mBAAA,CAAA;AAE1B,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"makeAsyncRenderer.js","sources":["../../src/renderers/makeAsyncRenderer.tsx"],"sourcesContent":["import uniqueId from 'lodash-es/uniqueId';\r\nimport { forwardRef, useState } from 'react';\r\nimport { Box, Spinner } from '@apia/theme';\r\nimport { arrayOrArray, useMount } from '@apia/util';\r\nimport {\r\n TResponsiveTableRow,\r\n TResponsiveTableCellRenderer,\r\n TResponsiveTableCellRendererProps,\r\n} from '../types';\r\n\r\nexport function makeAsyncRenderer(\r\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\r\n {\r\n label?: string;\r\n name: string;\r\n newline?: boolean;\r\n }[]\r\n >,\r\n) {\r\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\r\n HTMLElement,\r\n TResponsiveTableCellRendererProps\r\n >(({ row }, ref) => {\r\n const [moreInfo, setMoreInfo] = useState<\r\n | {\r\n label?: string;\r\n name: string;\r\n newline?: boolean;\r\n }[]\r\n | null\r\n >(null);\r\n useMount(() => {\r\n void (async () => {\r\n const result = await additionalInfoGetter(row);\r\n setMoreInfo(result);\r\n })();\r\n });\r\n\r\n return (\r\n <>\r\n {moreInfo ? (\r\n arrayOrArray(moreInfo).map((dataCell) => {\r\n return (\r\n <Box\r\n key={`${dataCell.name}-${uniqueId()}`}\r\n ref={ref}\r\n className={`responsiveTable__additionalInfoItem ${\r\n dataCell.newline ? 'separator' : ''\r\n }`}\r\n >\r\n {dataCell.newline ? (\r\n <>\r\n <Box sx={{ height: '20px' }} as=\"strong\">\r\n {dataCell.name}:\r\n </Box>{' '}\r\n {dataCell.label}\r\n </>\r\n ) : (\r\n <>\r\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\r\n </>\r\n )}\r\n </Box>\r\n );\r\n })\r\n ) : (\r\n <Spinner size={15} />\r\n )}\r\n </>\r\n );\r\n });\r\n\r\n InnerRender.displayName = 'MakeAsyncRenderer';\r\n\r\n return InnerRender;\r\n}\r\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBACd,oBAOA,EAAA;AACA,EAAA,MAAM,cAA4C,UAGhD,CAAA,CAAC,EAAE,GAAA,IAAO,GAAQ,KAAA;AAClB,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAO9B,IAAI,CAAA,CAAA;AACN,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,KAAA,CAAM,YAAY;AAChB,QAAM,MAAA,MAAA,GAAS,MAAM,oBAAA,CAAqB,GAAG,CAAA,CAAA;AAC7C,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACjB,GAAA,CAAA;AAAA,KACJ,CAAA,CAAA;AAED,IAAA,uCAEK,QACC,EAAA,QAAA,GAAA,YAAA,CAAa,QAAQ,CAAE,CAAA,GAAA,CAAI,CAAC,QAAa,KAAA;AACvC,MACE,uBAAA,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UAEC,GAAA;AAAA,UACA,SAAW,EAAA,CAAA,oCAAA,EACT,QAAS,CAAA,OAAA,GAAU,cAAc,EACnC,CAAA,CAAA;AAAA,UAEC,QAAA,EAAA,QAAA,CAAS,0BAEN,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,OAAI,EAAI,EAAA,EAAE,QAAQ,MAAO,EAAA,EAAG,IAAG,QAC7B,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aACjB,EAAA,CAAA;AAAA,YAAO,GAAA;AAAA,YACN,QAAS,CAAA,KAAA;AAAA,WAAA,EACZ,oBAGE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,IAAG,QAAU,EAAA,QAAA,EAAA;AAAA,cAAS,QAAA,CAAA,IAAA;AAAA,cAAK,GAAA;AAAA,aAAC,EAAA,CAAA;AAAA,YAAM,GAAA;AAAA,YAAE,QAAS,CAAA,KAAA;AAAA,WACpD,EAAA,CAAA;AAAA,SAAA;AAAA,QAhBG,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,OAkBrC,CAAA;AAAA,KAEH,CAED,mBAAA,GAAA,CAAC,OAAQ,EAAA,EAAA,IAAA,EAAM,IAAI,CAEvB,EAAA,CAAA,CAAA;AAAA,GAEH,CAAA,CAAA;AAED,EAAA,WAAA,CAAY,WAAc,GAAA,mBAAA,CAAA;AAE1B,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/store/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { createSlice, injectReducers } from '@apia/store';\nimport {\n TResponsiveTableAction,\n TResponsiveTableIndexColumns,\n TResponsiveTableSlice,\n TResponsiveTableState,\n} from './types';\nimport { getInitialState as selectionGetInitialState } from './selection/getInitialState';\nimport { setNewFocused } from './selection/setNewFocused';\nimport { TResponsiveTableRow } from '../types';\nimport { shoutKeyhandlerLive } from './selection/makeKeyHandler';\nimport { getReduxActions } from './selection/getReduxActions';\n\nfunction getInitialState(): TResponsiveTableState {\n const newState: TResponsiveTableState = {\n ...selectionGetInitialState(),\n allowSelection: true,\n allowSorting: true,\n filters: [],\n isLoading: false,\n isMultiple: true,\n accordionIndexColumns: {} as TResponsiveTableIndexColumns,\n expandedRows: [],\n };\n\n return newState;\n}\n\nconst responsiveTableSlice = createSlice({\n name: 'responsiveTableSlice',\n initialState: {} as TResponsiveTableSlice,\n reducers: {\n update(\n state,\n {\n payload: { tableName, ...rest },\n }: TResponsiveTableAction<\n Partial<TResponsiveTableState> & { isFocused?: boolean }\n >,\n ) {\n if (!state[tableName]) state[tableName] = getInitialState();\n state[tableName] = { ...state[tableName], ...rest };\n setNewFocused(state[tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: rest.isFocused ?? state[tableName].isFocused,\n });\n\n if (rest.columns) {\n state[tableName].nonAdditionalColumnsCount = rest.columns.filter(\n (current) => !current.showAsAdditional,\n ).length;\n }\n\n if (rest.rows) {\n state[tableName].statesColumns = Math.max(\n state[tableName]?.reserveColumnsForStates ?? 0,\n ...(state[tableName]?.rows?.map(\n (current) => current.states?.length ?? 0,\n ) ?? [0]),\n );\n }\n\n if (rest.filters) {\n state[tableName].hasNonAdditionalFilters =\n rest.filters.filter(\n (current) =>\n !current.asAdditional &&\n (rest.columns ?? state[tableName].columns)?.find(\n (search) => search.name === current.column,\n ),\n ).length > 0;\n }\n },\n addRows(\n state,\n { payload }: TResponsiveTableAction<{ newRows: TResponsiveTableRow[] }>,\n ) {\n if (!state[payload.tableName])\n state[payload.tableName] = getInitialState();\n state[payload.tableName].rows = state[payload.tableName].rows.concat(\n ...payload.newRows,\n );\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: state[payload.tableName].rows.length,\n });\n },\n deleteRows(\n state,\n { payload }: TResponsiveTableAction<{ rowIndices: number[] }>,\n ) {\n const table = state[payload.tableName];\n const minIndex = payload.rowIndices.reduce((min, current) => {\n return current < min ? current : min;\n }, Infinity);\n table.rows = table.rows.filter(\n (_, index) => !payload.rowIndices.includes(index),\n );\n\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: minIndex,\n });\n state[payload.tableName].isFocused = false;\n },\n destroy(state, { payload: { tableName } }: TResponsiveTableAction) {\n delete state[tableName];\n },\n swapFocusedRow(\n state,\n {\n payload: { newIndex, tableName },\n }: TResponsiveTableAction<{ newIndex: number }>,\n ) {\n const tableState = state[tableName];\n const focusedIndex = tableState.focusedRow;\n\n if (\n focusedIndex === undefined ||\n newIndex < 0 ||\n newIndex >= tableState.rows.length\n )\n return;\n\n if (focusedIndex === newIndex) {\n if (tableState.draggingRow === newIndex)\n tableState.draggingRow = undefined;\n else tableState.draggingRow = newIndex;\n return;\n }\n\n shoutKeyhandlerLive('whichIsTheNewIndex', { newIndex });\n\n const isSelected = tableState.selectedRows.includes(focusedIndex);\n\n if (isSelected) {\n tableState.selectedRows = [\n ...tableState.selectedRows.filter(\n (current) => current !== focusedIndex,\n ),\n newIndex,\n ];\n }\n\n const aux = tableState.rows[newIndex];\n tableState.rows[newIndex] = tableState.rows[focusedIndex];\n tableState.rows[focusedIndex] = aux;\n\n tableState.focusedRow = newIndex;\n tableState.draggingRow = newIndex;\n },\n\n // Rows selection\n ...getReduxActions(),\n },\n});\n\nexport const { store: responsiveTableStore, useSelector: useResponsiveTable } =\n injectReducers({\n responsiveTableSlice: responsiveTableSlice.reducer,\n });\n\nexport const responsiveTableActions = responsiveTableSlice.actions;\n"],"names":["selectionGetInitialState"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/store/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-dynamic-delete */\r\nimport { createSlice, injectReducers } from '@apia/store';\r\nimport {\r\n TResponsiveTableAction,\r\n TResponsiveTableIndexColumns,\r\n TResponsiveTableSlice,\r\n TResponsiveTableState,\r\n} from './types';\r\nimport { getInitialState as selectionGetInitialState } from './selection/getInitialState';\r\nimport { setNewFocused } from './selection/setNewFocused';\r\nimport { TResponsiveTableRow } from '../types';\r\nimport { shoutKeyhandlerLive } from './selection/makeKeyHandler';\r\nimport { getReduxActions } from './selection/getReduxActions';\r\n\r\nfunction getInitialState(): TResponsiveTableState {\r\n const newState: TResponsiveTableState = {\r\n ...selectionGetInitialState(),\r\n allowSelection: true,\r\n allowSorting: true,\r\n filters: [],\r\n isLoading: false,\r\n isMultiple: true,\r\n accordionIndexColumns: {} as TResponsiveTableIndexColumns,\r\n expandedRows: [],\r\n };\r\n\r\n return newState;\r\n}\r\n\r\nconst responsiveTableSlice = createSlice({\r\n name: 'responsiveTableSlice',\r\n initialState: {} as TResponsiveTableSlice,\r\n reducers: {\r\n update(\r\n state,\r\n {\r\n payload: { tableName, ...rest },\r\n }: TResponsiveTableAction<\r\n Partial<TResponsiveTableState> & { isFocused?: boolean }\r\n >,\r\n ) {\r\n if (!state[tableName]) state[tableName] = getInitialState();\r\n state[tableName] = { ...state[tableName], ...rest };\r\n setNewFocused(state[tableName], {\r\n altKey: false,\r\n ctrlKey: false,\r\n shiftKey: false,\r\n shouldSelectNewFocused: rest.isFocused ?? state[tableName].isFocused,\r\n });\r\n\r\n if (rest.columns) {\r\n state[tableName].nonAdditionalColumnsCount = rest.columns.filter(\r\n (current) => !current.showAsAdditional,\r\n ).length;\r\n }\r\n\r\n if (rest.rows) {\r\n state[tableName].statesColumns = Math.max(\r\n state[tableName]?.reserveColumnsForStates ?? 0,\r\n ...(state[tableName]?.rows?.map(\r\n (current) => current.states?.length ?? 0,\r\n ) ?? [0]),\r\n );\r\n }\r\n\r\n if (rest.filters) {\r\n state[tableName].hasNonAdditionalFilters =\r\n rest.filters.filter(\r\n (current) =>\r\n !current.asAdditional &&\r\n (rest.columns ?? state[tableName].columns)?.find(\r\n (search) => search.name === current.column,\r\n ),\r\n ).length > 0;\r\n }\r\n },\r\n addRows(\r\n state,\r\n { payload }: TResponsiveTableAction<{ newRows: TResponsiveTableRow[] }>,\r\n ) {\r\n if (!state[payload.tableName])\r\n state[payload.tableName] = getInitialState();\r\n state[payload.tableName].rows = state[payload.tableName].rows.concat(\r\n ...payload.newRows,\r\n );\r\n setNewFocused(state[payload.tableName], {\r\n altKey: false,\r\n ctrlKey: false,\r\n shiftKey: false,\r\n shouldSelectNewFocused: true,\r\n newFocusedRow: state[payload.tableName].rows.length,\r\n });\r\n },\r\n deleteRows(\r\n state,\r\n { payload }: TResponsiveTableAction<{ rowIndices: number[] }>,\r\n ) {\r\n const table = state[payload.tableName];\r\n const minIndex = payload.rowIndices.reduce((min, current) => {\r\n return current < min ? current : min;\r\n }, Infinity);\r\n table.rows = table.rows.filter(\r\n (_, index) => !payload.rowIndices.includes(index),\r\n );\r\n\r\n setNewFocused(state[payload.tableName], {\r\n altKey: false,\r\n ctrlKey: false,\r\n shiftKey: false,\r\n shouldSelectNewFocused: true,\r\n newFocusedRow: minIndex,\r\n });\r\n state[payload.tableName].isFocused = false;\r\n },\r\n destroy(state, { payload: { tableName } }: TResponsiveTableAction) {\r\n delete state[tableName];\r\n },\r\n swapFocusedRow(\r\n state,\r\n {\r\n payload: { newIndex, tableName },\r\n }: TResponsiveTableAction<{ newIndex: number }>,\r\n ) {\r\n const tableState = state[tableName];\r\n const focusedIndex = tableState.focusedRow;\r\n\r\n if (\r\n focusedIndex === undefined ||\r\n newIndex < 0 ||\r\n newIndex >= tableState.rows.length\r\n )\r\n return;\r\n\r\n if (focusedIndex === newIndex) {\r\n if (tableState.draggingRow === newIndex)\r\n tableState.draggingRow = undefined;\r\n else tableState.draggingRow = newIndex;\r\n return;\r\n }\r\n\r\n shoutKeyhandlerLive('whichIsTheNewIndex', { newIndex });\r\n\r\n const isSelected = tableState.selectedRows.includes(focusedIndex);\r\n\r\n if (isSelected) {\r\n tableState.selectedRows = [\r\n ...tableState.selectedRows.filter(\r\n (current) => current !== focusedIndex,\r\n ),\r\n newIndex,\r\n ];\r\n }\r\n\r\n const aux = tableState.rows[newIndex];\r\n tableState.rows[newIndex] = tableState.rows[focusedIndex];\r\n tableState.rows[focusedIndex] = aux;\r\n\r\n tableState.focusedRow = newIndex;\r\n tableState.draggingRow = newIndex;\r\n },\r\n\r\n // Rows selection\r\n ...getReduxActions(),\r\n },\r\n});\r\n\r\nexport const { store: responsiveTableStore, useSelector: useResponsiveTable } =\r\n injectReducers({\r\n responsiveTableSlice: responsiveTableSlice.reducer,\r\n });\r\n\r\nexport const responsiveTableActions = responsiveTableSlice.actions;\r\n"],"names":["selectionGetInitialState"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getInitialState.js","sources":["../../../src/store/selection/getInitialState.ts"],"sourcesContent":["import { TApiaFilter } from '@apia/util';\nimport { ISelectableState, TBasicRow } from './types';\n\nexport function getInitialState<\n ColumnsType extends { name: string },\n RowsType extends TBasicRow | string,\n>(): ISelectableState<ColumnsType, TApiaFilter, RowsType> {\n return {\n allowEdition: false,\n allowSelection: true,\n columns: [],\n expandedRows: [],\n isEditionMode: false,\n isFocused: false,\n filters: [],\n focusedColumn: 0,\n focusedRow: 0,\n hasNonAdditionalFilters: false,\n isMultiple: true,\n nonAdditionalColumnsCount: 0,\n rows: [],\n selectedRows: [],\n statesColumns: 0,\n };\n}\n"],"names":[],"mappings":"AAGO,SAAS,eAG0C,GAAA;AACxD,EAAO,OAAA;AAAA,IACL,YAAc,EAAA,KAAA;AAAA,IACd,cAAgB,EAAA,IAAA;AAAA,IAChB,SAAS,EAAC;AAAA,IACV,cAAc,EAAC;AAAA,IACf,aAAe,EAAA,KAAA;AAAA,IACf,SAAW,EAAA,KAAA;AAAA,IACX,SAAS,EAAC;AAAA,IACV,aAAe,EAAA,CAAA;AAAA,IACf,UAAY,EAAA,CAAA;AAAA,IACZ,uBAAyB,EAAA,KAAA;AAAA,IACzB,UAAY,EAAA,IAAA;AAAA,IACZ,yBAA2B,EAAA,CAAA;AAAA,IAC3B,MAAM,EAAC;AAAA,IACP,cAAc,EAAC;AAAA,IACf,aAAe,EAAA,CAAA;AAAA,GACjB,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"getInitialState.js","sources":["../../../src/store/selection/getInitialState.ts"],"sourcesContent":["import { TApiaFilter } from '@apia/util';\r\nimport { ISelectableState, TBasicRow } from './types';\r\n\r\nexport function getInitialState<\r\n ColumnsType extends { name: string },\r\n RowsType extends TBasicRow | string,\r\n>(): ISelectableState<ColumnsType, TApiaFilter, RowsType> {\r\n return {\r\n allowEdition: false,\r\n allowSelection: true,\r\n columns: [],\r\n expandedRows: [],\r\n isEditionMode: false,\r\n isFocused: false,\r\n filters: [],\r\n focusedColumn: 0,\r\n focusedRow: 0,\r\n hasNonAdditionalFilters: false,\r\n isMultiple: true,\r\n nonAdditionalColumnsCount: 0,\r\n rows: [],\r\n selectedRows: [],\r\n statesColumns: 0,\r\n };\r\n}\r\n"],"names":[],"mappings":"AAGO,SAAS,eAG0C,GAAA;AACxD,EAAO,OAAA;AAAA,IACL,YAAc,EAAA,KAAA;AAAA,IACd,cAAgB,EAAA,IAAA;AAAA,IAChB,SAAS,EAAC;AAAA,IACV,cAAc,EAAC;AAAA,IACf,aAAe,EAAA,KAAA;AAAA,IACf,SAAW,EAAA,KAAA;AAAA,IACX,SAAS,EAAC;AAAA,IACV,aAAe,EAAA,CAAA;AAAA,IACf,UAAY,EAAA,CAAA;AAAA,IACZ,uBAAyB,EAAA,KAAA;AAAA,IACzB,UAAY,EAAA,IAAA;AAAA,IACZ,yBAA2B,EAAA,CAAA;AAAA,IAC3B,MAAM,EAAC;AAAA,IACP,cAAc,EAAC;AAAA,IACf,aAAe,EAAA,CAAA;AAAA,GACjB,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getReduxActions.js","sources":["../../../src/store/selection/getReduxActions.ts"],"sourcesContent":["import type { Draft, PayloadAction } from '@apia/store';\nimport type { TRequireOnlyOne } from '@apia/util';\nimport { handleKey } from './handleKey';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\ntype TState = Draft<Record<string, ISelectableState>>;\n\nexport type TPayloadWithId<\n P = Record<string, unknown>,\n T extends string = string,\n M = never,\n E = never,\n> = PayloadAction<P & { id: string }, T, M, E>;\n\nexport type THandleKeyPayload = TPayloadWithId<THandleKey>;\nexport type TSelectionStateUpdatePayload = TPayloadWithId<\n Partial<ISelectableState>\n>;\nexport type TSetNewFocusedPayload = TPayloadWithId<INewFocus>;\nexport type TUpdateByClickPayload = TPayloadWithId<\n TRequireOnlyOne<{ ariaRowIndex: number; rowIndex: number }> &\n TRequireOnlyOne<{ ariaColIndex?: number; colIndex: number }> &\n Pick<INewFocus, 'altKey' | 'ctrlKey' | 'shiftKey' | 'isFocused'>\n>;\n\nexport function getReduxActions() {\n return {\n handleKey(state: TState, { payload }: THandleKeyPayload) {\n handleKey(state[payload.id], payload);\n },\n selectionStateUpdate(\n state: TState,\n { payload: { id, ...payload } }: TSelectionStateUpdatePayload,\n ) {\n state[id] = { ...state[id], ...payload };\n },\n setNewFocused(\n state: TState,\n { payload: { id, ...payload } }: TSetNewFocusedPayload,\n ) {\n setNewFocused(state[id], payload);\n },\n updateByClick(\n state: TState,\n {\n payload: {\n id,\n colIndex,\n rowIndex,\n ariaColIndex,\n ariaRowIndex,\n isFocused,\n ...payload\n },\n }: TUpdateByClickPayload,\n ) {\n const hasFiltersRow = state[id].hasNonAdditionalFilters;\n state[id].isEditionMode = false;\n\n const newFocusedColumn = colIndex ?? ariaColIndex ?? 1;\n const newFocusedRow =\n ariaRowIndex !== undefined\n ? ariaRowIndex\n : (rowIndex ?? 0) - (1 + (hasFiltersRow ? 2 : 1));\n\n setNewFocused(state[id], {\n ...payload,\n newFocusedColumn,\n newFocusedRow,\n });\n\n if (isFocused !== undefined) state[id].isFocused = isFocused;\n },\n };\n}\n"],"names":[],"mappings":";;;AA0BO,SAAS,eAAkB,GAAA;AAChC,EAAO,OAAA;AAAA,IACL,SAAU,CAAA,KAAA,EAAe,EAAE,OAAA,EAA8B,EAAA;AACvD,MAAA,SAAA,CAAU,KAAM,CAAA,OAAA,CAAQ,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,KACtC;AAAA,IACA,oBAAA,CACE,OACA,EAAE,OAAA,EAAS,EAAE,EAAI,EAAA,GAAG,OAAQ,EAAA,EAC5B,EAAA;AACA,MAAM,KAAA,CAAA,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA,EAAG,GAAG,OAAQ,EAAA,CAAA;AAAA,KACzC;AAAA,IACA,aAAA,CACE,OACA,EAAE,OAAA,EAAS,EAAE,EAAI,EAAA,GAAG,OAAQ,EAAA,EAC5B,EAAA;AACA,MAAc,aAAA,CAAA,KAAA,CAAM,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,KAClC;AAAA,IACA,cACE,KACA,EAAA;AAAA,MACE,OAAS,EAAA;AAAA,QACP,EAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,GAAG,OAAA;AAAA,OACL;AAAA,KAEF,EAAA;AACA,MAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,EAAE,CAAE,CAAA,uBAAA,CAAA;AAChC,MAAM,KAAA,CAAA,EAAE,EAAE,aAAgB,GAAA,KAAA,CAAA;AAE1B,MAAM,MAAA,gBAAA,GAAmB,YAAY,YAAgB,IAAA,CAAA,CAAA;AACrD,MAAM,MAAA,aAAA,GACJ,iBAAiB,KACb,CAAA,GAAA,YAAA,GAAA,CACC,YAAY,CAAM,KAAA,CAAA,IAAK,gBAAgB,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;AAElD,MAAc,aAAA,CAAA,KAAA,CAAM,EAAE,CAAG,EAAA;AAAA,QACvB,GAAG,OAAA;AAAA,QACH,gBAAA;AAAA,QACA,aAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAI,SAAc,KAAA,KAAA,CAAA;AAAW,QAAM,KAAA,CAAA,EAAE,EAAE,SAAY,GAAA,SAAA,CAAA;AAAA,KACrD;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"getReduxActions.js","sources":["../../../src/store/selection/getReduxActions.ts"],"sourcesContent":["import type { Draft, PayloadAction } from '@apia/store';\r\nimport type { TRequireOnlyOne } from '@apia/util';\r\nimport { handleKey } from './handleKey';\r\nimport { setNewFocused } from './setNewFocused';\r\nimport { THandleKey, INewFocus, ISelectableState } from './types';\r\n\r\ntype TState = Draft<Record<string, ISelectableState>>;\r\n\r\nexport type TPayloadWithId<\r\n P = Record<string, unknown>,\r\n T extends string = string,\r\n M = never,\r\n E = never,\r\n> = PayloadAction<P & { id: string }, T, M, E>;\r\n\r\nexport type THandleKeyPayload = TPayloadWithId<THandleKey>;\r\nexport type TSelectionStateUpdatePayload = TPayloadWithId<\r\n Partial<ISelectableState>\r\n>;\r\nexport type TSetNewFocusedPayload = TPayloadWithId<INewFocus>;\r\nexport type TUpdateByClickPayload = TPayloadWithId<\r\n TRequireOnlyOne<{ ariaRowIndex: number; rowIndex: number }> &\r\n TRequireOnlyOne<{ ariaColIndex?: number; colIndex: number }> &\r\n Pick<INewFocus, 'altKey' | 'ctrlKey' | 'shiftKey' | 'isFocused'>\r\n>;\r\n\r\nexport function getReduxActions() {\r\n return {\r\n handleKey(state: TState, { payload }: THandleKeyPayload) {\r\n handleKey(state[payload.id], payload);\r\n },\r\n selectionStateUpdate(\r\n state: TState,\r\n { payload: { id, ...payload } }: TSelectionStateUpdatePayload,\r\n ) {\r\n state[id] = { ...state[id], ...payload };\r\n },\r\n setNewFocused(\r\n state: TState,\r\n { payload: { id, ...payload } }: TSetNewFocusedPayload,\r\n ) {\r\n setNewFocused(state[id], payload);\r\n },\r\n updateByClick(\r\n state: TState,\r\n {\r\n payload: {\r\n id,\r\n colIndex,\r\n rowIndex,\r\n ariaColIndex,\r\n ariaRowIndex,\r\n isFocused,\r\n ...payload\r\n },\r\n }: TUpdateByClickPayload,\r\n ) {\r\n const hasFiltersRow = state[id].hasNonAdditionalFilters;\r\n state[id].isEditionMode = false;\r\n\r\n const newFocusedColumn = colIndex ?? ariaColIndex ?? 1;\r\n const newFocusedRow =\r\n ariaRowIndex !== undefined\r\n ? ariaRowIndex\r\n : (rowIndex ?? 0) - (1 + (hasFiltersRow ? 2 : 1));\r\n\r\n setNewFocused(state[id], {\r\n ...payload,\r\n newFocusedColumn,\r\n newFocusedRow,\r\n });\r\n\r\n if (isFocused !== undefined) state[id].isFocused = isFocused;\r\n },\r\n };\r\n}\r\n"],"names":[],"mappings":";;;AA0BO,SAAS,eAAkB,GAAA;AAChC,EAAO,OAAA;AAAA,IACL,SAAU,CAAA,KAAA,EAAe,EAAE,OAAA,EAA8B,EAAA;AACvD,MAAA,SAAA,CAAU,KAAM,CAAA,OAAA,CAAQ,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,KACtC;AAAA,IACA,oBAAA,CACE,OACA,EAAE,OAAA,EAAS,EAAE,EAAI,EAAA,GAAG,OAAQ,EAAA,EAC5B,EAAA;AACA,MAAM,KAAA,CAAA,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA,EAAG,GAAG,OAAQ,EAAA,CAAA;AAAA,KACzC;AAAA,IACA,aAAA,CACE,OACA,EAAE,OAAA,EAAS,EAAE,EAAI,EAAA,GAAG,OAAQ,EAAA,EAC5B,EAAA;AACA,MAAc,aAAA,CAAA,KAAA,CAAM,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA;AAAA,KAClC;AAAA,IACA,cACE,KACA,EAAA;AAAA,MACE,OAAS,EAAA;AAAA,QACP,EAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,GAAG,OAAA;AAAA,OACL;AAAA,KAEF,EAAA;AACA,MAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,EAAE,CAAE,CAAA,uBAAA,CAAA;AAChC,MAAM,KAAA,CAAA,EAAE,EAAE,aAAgB,GAAA,KAAA,CAAA;AAE1B,MAAM,MAAA,gBAAA,GAAmB,YAAY,YAAgB,IAAA,CAAA,CAAA;AACrD,MAAM,MAAA,aAAA,GACJ,iBAAiB,KACb,CAAA,GAAA,YAAA,GAAA,CACC,YAAY,CAAM,KAAA,CAAA,IAAK,gBAAgB,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;AAElD,MAAc,aAAA,CAAA,KAAA,CAAM,EAAE,CAAG,EAAA;AAAA,QACvB,GAAG,OAAA;AAAA,QACH,gBAAA;AAAA,QACA,aAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAI,SAAc,KAAA,KAAA,CAAA;AAAW,QAAM,KAAA,CAAA,EAAE,EAAE,SAAY,GAAA,SAAA,CAAA;AAAA,KACrD;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleKey.js","sources":["../../../src/store/selection/handleKey.ts"],"sourcesContent":["import { Draft } from '@apia/store';\nimport React from 'react';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\n/**\n * Este método es de uso interno y normalmente\n * no será necesario fuera de este documento,\n * su utilidad es la de determinar si un evento\n * de teclado será controlado por el keyHandler.\n */\nexport function willHandleKey(\n ev: React.KeyboardEvent,\n state: ISelectableState,\n) {\n const actualKey = ev.key.toLowerCase();\n if (state.isEditionMode) return false;\n\n if (actualKey === ' ' && ev.ctrlKey) return true;\n if (actualKey === 'a' && ev.ctrlKey) return true;\n if (actualKey === 'm' && ev.ctrlKey) return true;\n if (state.draggingRow !== undefined) {\n return ['Escape', 'Enter'].includes(ev.key);\n }\n return [\n 'arrowup',\n 'arrowdown',\n 'arrowleft',\n 'arrowright',\n 'end',\n 'enter',\n 'home',\n 'pageup',\n 'pagedown',\n ].includes(ev.key.toLowerCase());\n}\n\n/**\n * Este método será llamado normalmente desde un action\n * de Redux. Su utilidad es la de evaluar qué tecla\n * se presionó y decidir qué alteración se debe producir\n * en base a eso.\n */\nexport function handleKey(state: Draft<ISelectableState>, { ev }: THandleKey) {\n const {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n key,\n shiftKey: isShiftPressed,\n } = ev;\n if (willHandleKey(ev, state)) ev.preventDefault();\n const actualKey = key.toLowerCase();\n const setFocus = ({\n newFocusedColumn,\n newFocusedRow,\n ...rest\n }: Partial<INewFocus>) =>\n setNewFocused(state, {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n shiftKey: isShiftPressed,\n newFocusedColumn,\n newFocusedRow,\n ...rest,\n });\n\n if (!state.isEditionMode) {\n if (\n actualKey === 'enter' &&\n (state.allowEdition === true || state.focusedRow < 0)\n )\n state.isEditionMode = true;\n else\n switch (actualKey) {\n case 'arrowup': {\n let sumRate = state.expandedRows.includes(state.focusedRow - 1)\n ? 0.6\n : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow - sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowdown': {\n let sumRate = state.expandedRows.includes(state.focusedRow) ? 0.6 : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow + sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowleft':\n case 'arrowright': {\n setFocus({\n newFocusedColumn:\n state.focusedColumn + (actualKey === 'arrowleft' ? -1 : 1),\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'home': {\n if (isCtrlPressed)\n setFocus({ newFocusedColumn: 0, newFocusedRow: 0, ctrlKey: false });\n else setFocus({ newFocusedColumn: 0 });\n break;\n }\n case 'end': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: Number.POSITIVE_INFINITY,\n newFocusedColumn: Number.POSITIVE_INFINITY,\n ctrlKey: false,\n });\n else\n setFocus({\n newFocusedColumn: Number.POSITIVE_INFINITY,\n });\n break;\n }\n case 'pageup': {\n setFocus({\n newFocusedRow: state.focusedRow - 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'pagedown': {\n setFocus({\n newFocusedRow: state.focusedRow + 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case ' ': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: state.focusedRow,\n });\n break;\n }\n case 'a': {\n if (isCtrlPressed && state.allowSelection)\n state.selectedRows = state.rows.map((_, i) => i);\n break;\n }\n default:\n break;\n }\n } else\n switch (actualKey) {\n case 'escape':\n case 'enter': {\n if (state.isEditionMode) state.isEditionMode = false;\n ev.stopPropagation();\n break;\n }\n default:\n break;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handleKey.js","sources":["../../../src/store/selection/handleKey.ts"],"sourcesContent":["import { Draft } from '@apia/store';\r\nimport React from 'react';\r\nimport { setNewFocused } from './setNewFocused';\r\nimport { THandleKey, INewFocus, ISelectableState } from './types';\r\n\r\n/**\r\n * Este método es de uso interno y normalmente\r\n * no será necesario fuera de este documento,\r\n * su utilidad es la de determinar si un evento\r\n * de teclado será controlado por el keyHandler.\r\n */\r\nexport function willHandleKey(\r\n ev: React.KeyboardEvent,\r\n state: ISelectableState,\r\n) {\r\n const actualKey = ev.key.toLowerCase();\r\n if (state.isEditionMode) return false;\r\n\r\n if (actualKey === ' ' && ev.ctrlKey) return true;\r\n if (actualKey === 'a' && ev.ctrlKey) return true;\r\n if (actualKey === 'm' && ev.ctrlKey) return true;\r\n if (state.draggingRow !== undefined) {\r\n return ['Escape', 'Enter'].includes(ev.key);\r\n }\r\n return [\r\n 'arrowup',\r\n 'arrowdown',\r\n 'arrowleft',\r\n 'arrowright',\r\n 'end',\r\n 'enter',\r\n 'home',\r\n 'pageup',\r\n 'pagedown',\r\n ].includes(ev.key.toLowerCase());\r\n}\r\n\r\n/**\r\n * Este método será llamado normalmente desde un action\r\n * de Redux. Su utilidad es la de evaluar qué tecla\r\n * se presionó y decidir qué alteración se debe producir\r\n * en base a eso.\r\n */\r\nexport function handleKey(state: Draft<ISelectableState>, { ev }: THandleKey) {\r\n const {\r\n altKey: isAltPressed,\r\n ctrlKey: isCtrlPressed,\r\n key,\r\n shiftKey: isShiftPressed,\r\n } = ev;\r\n if (willHandleKey(ev, state)) ev.preventDefault();\r\n const actualKey = key.toLowerCase();\r\n const setFocus = ({\r\n newFocusedColumn,\r\n newFocusedRow,\r\n ...rest\r\n }: Partial<INewFocus>) =>\r\n setNewFocused(state, {\r\n altKey: isAltPressed,\r\n ctrlKey: isCtrlPressed,\r\n shiftKey: isShiftPressed,\r\n newFocusedColumn,\r\n newFocusedRow,\r\n ...rest,\r\n });\r\n\r\n if (!state.isEditionMode) {\r\n if (\r\n actualKey === 'enter' &&\r\n (state.allowEdition === true || state.focusedRow < 0)\r\n )\r\n state.isEditionMode = true;\r\n else\r\n switch (actualKey) {\r\n case 'arrowup': {\r\n let sumRate = state.expandedRows.includes(state.focusedRow - 1)\r\n ? 0.6\r\n : 1;\r\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\r\n sumRate = 0.5;\r\n setFocus({\r\n newFocusedRow: state.focusedRow - sumRate,\r\n shouldSelectNewFocused: !isCtrlPressed,\r\n });\r\n break;\r\n }\r\n case 'arrowdown': {\r\n let sumRate = state.expandedRows.includes(state.focusedRow) ? 0.6 : 1;\r\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\r\n sumRate = 0.5;\r\n setFocus({\r\n newFocusedRow: state.focusedRow + sumRate,\r\n shouldSelectNewFocused: !isCtrlPressed,\r\n });\r\n break;\r\n }\r\n case 'arrowleft':\r\n case 'arrowright': {\r\n setFocus({\r\n newFocusedColumn:\r\n state.focusedColumn + (actualKey === 'arrowleft' ? -1 : 1),\r\n shouldSelectNewFocused: !isCtrlPressed,\r\n });\r\n break;\r\n }\r\n case 'home': {\r\n if (isCtrlPressed)\r\n setFocus({ newFocusedColumn: 0, newFocusedRow: 0, ctrlKey: false });\r\n else setFocus({ newFocusedColumn: 0 });\r\n break;\r\n }\r\n case 'end': {\r\n if (isCtrlPressed)\r\n setFocus({\r\n newFocusedRow: Number.POSITIVE_INFINITY,\r\n newFocusedColumn: Number.POSITIVE_INFINITY,\r\n ctrlKey: false,\r\n });\r\n else\r\n setFocus({\r\n newFocusedColumn: Number.POSITIVE_INFINITY,\r\n });\r\n break;\r\n }\r\n case 'pageup': {\r\n setFocus({\r\n newFocusedRow: state.focusedRow - 5,\r\n shouldSelectNewFocused: !isCtrlPressed,\r\n });\r\n break;\r\n }\r\n case 'pagedown': {\r\n setFocus({\r\n newFocusedRow: state.focusedRow + 5,\r\n shouldSelectNewFocused: !isCtrlPressed,\r\n });\r\n break;\r\n }\r\n case ' ': {\r\n if (isCtrlPressed)\r\n setFocus({\r\n newFocusedRow: state.focusedRow,\r\n });\r\n break;\r\n }\r\n case 'a': {\r\n if (isCtrlPressed && state.allowSelection)\r\n state.selectedRows = state.rows.map((_, i) => i);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n } else\r\n switch (actualKey) {\r\n case 'escape':\r\n case 'enter': {\r\n if (state.isEditionMode) state.isEditionMode = false;\r\n ev.stopPropagation();\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAWgB,SAAA,aAAA,CACd,IACA,KACA,EAAA;AACA,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,GAAA,CAAI,WAAY,EAAA,CAAA;AACrC,EAAA,IAAI,KAAM,CAAA,aAAA;AAAe,IAAO,OAAA,KAAA,CAAA;AAEhC,EAAI,IAAA,SAAA,KAAc,OAAO,EAAG,CAAA,OAAA;AAAS,IAAO,OAAA,IAAA,CAAA;AAC5C,EAAI,IAAA,SAAA,KAAc,OAAO,EAAG,CAAA,OAAA;AAAS,IAAO,OAAA,IAAA,CAAA;AAC5C,EAAI,IAAA,SAAA,KAAc,OAAO,EAAG,CAAA,OAAA;AAAS,IAAO,OAAA,IAAA,CAAA;AAC5C,EAAI,IAAA,KAAA,CAAM,gBAAgB,KAAW,CAAA,EAAA;AACnC,IAAA,OAAO,CAAC,QAAU,EAAA,OAAO,CAAE,CAAA,QAAA,CAAS,GAAG,GAAG,CAAA,CAAA;AAAA,GAC5C;AACA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,GACA,CAAA,QAAA,CAAS,EAAG,CAAA,GAAA,CAAI,aAAa,CAAA,CAAA;AACjC,CAAA;AAQO,SAAS,SAAU,CAAA,KAAA,EAAgC,EAAE,EAAA,EAAkB,EAAA;AAC5E,EAAM,MAAA;AAAA,IACJ,MAAQ,EAAA,YAAA;AAAA,IACR,OAAS,EAAA,aAAA;AAAA,IACT,GAAA;AAAA,IACA,QAAU,EAAA,cAAA;AAAA,GACR,GAAA,EAAA,CAAA;AACJ,EAAI,IAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AAAG,IAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAChD,EAAM,MAAA,SAAA,GAAY,IAAI,WAAY,EAAA,CAAA;AAClC,EAAA,MAAM,WAAW,CAAC;AAAA,IAChB,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAG,IAAA;AAAA,GACL,KACE,cAAc,KAAO,EAAA;AAAA,IACnB,MAAQ,EAAA,YAAA;AAAA,IACR,OAAS,EAAA,aAAA;AAAA,IACT,QAAU,EAAA,cAAA;AAAA,IACV,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAG,IAAA;AAAA,GACJ,CAAA,CAAA;AAEH,EAAI,IAAA,CAAC,MAAM,aAAe,EAAA;AACxB,IAAA,IACE,cAAc,OACb,KAAA,KAAA,CAAM,YAAiB,KAAA,IAAA,IAAQ,MAAM,UAAa,GAAA,CAAA,CAAA;AAEnD,MAAA,KAAA,CAAM,aAAgB,GAAA,IAAA,CAAA;AAAA;AAEtB,MAAA,QAAQ,SAAW;AAAA,QACjB,KAAK,SAAW,EAAA;AACd,UAAI,IAAA,OAAA,GAAU,MAAM,YAAa,CAAA,QAAA,CAAS,MAAM,UAAa,GAAA,CAAC,IAC1D,GACA,GAAA,CAAA,CAAA;AACJ,UAAA,IAAI,KAAK,KAAM,CAAA,KAAA,CAAM,UAAU,CAAA,GAAI,MAAM,UAAe,KAAA,CAAA;AACtD,YAAU,OAAA,GAAA,GAAA,CAAA;AACZ,UAAS,QAAA,CAAA;AAAA,YACP,aAAA,EAAe,MAAM,UAAa,GAAA,OAAA;AAAA,YAClC,wBAAwB,CAAC,aAAA;AAAA,WAC1B,CAAA,CAAA;AACD,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,WAAa,EAAA;AAChB,UAAA,IAAI,UAAU,KAAM,CAAA,YAAA,CAAa,SAAS,KAAM,CAAA,UAAU,IAAI,GAAM,GAAA,CAAA,CAAA;AACpE,UAAA,IAAI,KAAK,KAAM,CAAA,KAAA,CAAM,UAAU,CAAA,GAAI,MAAM,UAAe,KAAA,CAAA;AACtD,YAAU,OAAA,GAAA,GAAA,CAAA;AACZ,UAAS,QAAA,CAAA;AAAA,YACP,aAAA,EAAe,MAAM,UAAa,GAAA,OAAA;AAAA,YAClC,wBAAwB,CAAC,aAAA;AAAA,WAC1B,CAAA,CAAA;AACD,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,WAAA,CAAA;AAAA,QACL,KAAK,YAAc,EAAA;AACjB,UAAS,QAAA,CAAA;AAAA,YACP,gBACE,EAAA,KAAA,CAAM,aAAiB,IAAA,SAAA,KAAc,cAAc,CAAK,CAAA,GAAA,CAAA,CAAA;AAAA,YAC1D,wBAAwB,CAAC,aAAA;AAAA,WAC1B,CAAA,CAAA;AACD,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,MAAQ,EAAA;AACX,UAAI,IAAA,aAAA;AACF,YAAA,QAAA,CAAS,EAAE,gBAAkB,EAAA,CAAA,EAAG,eAAe,CAAG,EAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AAAA;AAC/D,YAAS,QAAA,CAAA,EAAE,gBAAkB,EAAA,CAAA,EAAG,CAAA,CAAA;AACrC,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,KAAO,EAAA;AACV,UAAI,IAAA,aAAA;AACF,YAAS,QAAA,CAAA;AAAA,cACP,eAAe,MAAO,CAAA,iBAAA;AAAA,cACtB,kBAAkB,MAAO,CAAA,iBAAA;AAAA,cACzB,OAAS,EAAA,KAAA;AAAA,aACV,CAAA,CAAA;AAAA;AAED,YAAS,QAAA,CAAA;AAAA,cACP,kBAAkB,MAAO,CAAA,iBAAA;AAAA,aAC1B,CAAA,CAAA;AACH,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,QAAU,EAAA;AACb,UAAS,QAAA,CAAA;AAAA,YACP,aAAA,EAAe,MAAM,UAAa,GAAA,CAAA;AAAA,YAClC,wBAAwB,CAAC,aAAA;AAAA,WAC1B,CAAA,CAAA;AACD,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,UAAY,EAAA;AACf,UAAS,QAAA,CAAA;AAAA,YACP,aAAA,EAAe,MAAM,UAAa,GAAA,CAAA;AAAA,YAClC,wBAAwB,CAAC,aAAA;AAAA,WAC1B,CAAA,CAAA;AACD,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,GAAK,EAAA;AACR,UAAI,IAAA,aAAA;AACF,YAAS,QAAA,CAAA;AAAA,cACP,eAAe,KAAM,CAAA,UAAA;AAAA,aACtB,CAAA,CAAA;AACH,UAAA,MAAA;AAAA,SACF;AAAA,QACA,KAAK,GAAK,EAAA;AACR,UAAA,IAAI,iBAAiB,KAAM,CAAA,cAAA;AACzB,YAAA,KAAA,CAAM,eAAe,KAAM,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA,EAAG,MAAM,CAAC,CAAA,CAAA;AACjD,UAAA,MAAA;AAAA,SACF;AAEE,OACJ;AAAA,GACJ;AACE,IAAA,QAAQ,SAAW;AAAA,MACjB,KAAK,QAAA,CAAA;AAAA,MACL,KAAK,OAAS,EAAA;AACZ,QAAA,IAAI,KAAM,CAAA,aAAA;AAAe,UAAA,KAAA,CAAM,aAAgB,GAAA,KAAA,CAAA;AAC/C,QAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,QAAA,MAAA;AAAA,OACF;AAEE,KACJ;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"makeKeyHandler.js","sources":["../../../src/store/selection/makeKeyHandler.tsx"],"sourcesContent":["import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box, BoxProps } from '@apia/theme';\nimport {\n autoDisconnectMutationObserver,\n customEvents,\n getFocusSelector,\n getSpecificParent,\n globalFocus,\n isChild,\n cantFocusSelector,\n scrollParentIntoElement,\n useLatest,\n useUpdateEffect,\n} from '@apia/util';\nimport { ThrottleOptions } from 'ahooks/lib/useThrottle/throttleOptions';\nimport { useThrottleFn } from 'ahooks';\nimport { TUpdateByClickPayload } from './getReduxActions';\nimport { willHandleKey } from './handleKey';\nimport { INewFocus, ISelectableState, THandleKey, TUseDomProps } from './types';\nimport {\n TResponsiveTableRow,\n TResponsiveTableRowsSelectionEvent,\n} from '../../types';\nimport { responsiveTableStore, useResponsiveTable } from '..';\n\nexport function shoutKeyhandlerLive(\n liveType: 'reset' | 'howToStartDrag' | 'howToEndDrag' | 'whichIsTheNewIndex',\n additionalData?: {\n newIndex: number;\n },\n) {\n console.warn('Not implemented arialiveemitter', additionalData);\n switch (liveType) {\n /* case 'howToEndDrag':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_END_DRAG,\n });\n break;\n case 'whichIsTheNewIndex':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n * message:\n * formatMessage(window.ARIA_HOW_TO_WHICH_IS_THE_NEW_POSITION, {\n TOK1: String(additionalData?.newIndex ?? 0),\n }),\n });\n break;\n case 'reset':\n AriaLiveEmitter.emit('live', {\n type: 'reset',\n message: '',\n });\n break;\n default:\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_START_DRAG,\n }); */\n default:\n }\n}\n\nlet scrollTimeout: number;\n/**\n * Devuelve un elemento KeyHandler que puede usarse como\n * en el ejemplo.\n *\n * Su función es la de manejar los eventos de teclado y\n * ejecutar las acciones necesarias en el estado de la\n * grilla de acuerdo a la funcionalidad estándar de\n * usabilidad de grillas.\n *\n * @example\n *\n <KeyHandler>\n <table ... />\n </KeyHandler>\n */\nexport function makeKeyHandler(\n actions: {\n handleKey: (payload: THandleKey & { id: string }) => {\n payload: THandleKey & { id: string };\n type: string;\n };\n selectionStateUpdate: (\n payload: Partial<ISelectableState> & { id: string },\n ) => {\n payload: Partial<ISelectableState> & { id: string };\n type: string;\n };\n setNewFocused: (payload: INewFocus & { id: string }) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n swapFocusedRow?: (\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n },\n ) => {\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n };\n type: string;\n };\n updateByClick: (payload: TUpdateByClickPayload['payload']) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n },\n id: string,\n config: { throttleOptions?: ThrottleOptions; stateSelector: TUseDomProps },\n) {\n return function KeyHandler({\n children,\n onChangeSelection,\n onSelectRows,\n ...props\n }: BoxProps & {\n /**\n * Se emite un evento cada vez que el usuario modifica\n * la selección actual.\n */\n onChangeSelection?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n ) => unknown;\n onSelectRows?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n focusedIndex: number,\n ) => unknown;\n }) {\n const { run: keyHandler } = useThrottleFn<\n React.KeyboardEventHandler<HTMLDivElement>\n >((ev) => {\n if (!['shift', 'alt', 'control'].includes(ev.key.toLowerCase())) {\n responsiveTableStore.dispatch(actions.handleKey({ id, ev }));\n }\n }, config?.throttleOptions ?? { wait: 100 });\n\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\n\n const selectedRows = useResponsiveTable(\n (global) => {\n const state = config.stateSelector(global);\n return (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n },\n (a, b) =>\n shallowEqual(\n a.map((current) => current.index),\n b.map((current) => current.index),\n ),\n );\n const selectedRowsRef = useLatest(selectedRows);\n const focusedRow = useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return state?.focusedRow ?? -1;\n });\n const { allowKeyboardSorting, focusedCell, isEditionMode, isFocused } =\n useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return {\n focusedCell:\n state?.focusedRow !== undefined\n ? `${state?.focusedRow}_${state?.focusedColumn}`\n : undefined,\n isEditionMode: state?.isEditionMode,\n rows: state?.rows,\n isFocused: state?.isFocused,\n allowKeyboardSorting: state?.allowRowsKeyboardSorting,\n };\n }, shallowEqual);\n useUpdateEffect(() => {\n if (onChangeSelection) onChangeSelection(selectedRows);\n }, [onChangeSelection, selectedRows]);\n\n const handleClick = React.useCallback(\n (ev: MouseEvent | FocusEvent | Event) => {\n if ((ev.target as HTMLElement).closest('.moreInformationButton'))\n return;\n\n if ((ev as MouseEvent).shiftKey) {\n document.getSelection()?.removeAllRanges();\n }\n const parentRow = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('tr')) {\n return true;\n }\n return false;\n },\n );\n const parentCell = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('td,th')) {\n return true;\n }\n return false;\n },\n );\n if (parentCell && parentRow) {\n responsiveTableStore.dispatch(\n actions.updateByClick({\n altKey: (ev as MouseEvent).altKey,\n id,\n ctrlKey: (ev as MouseEvent).ctrlKey,\n ariaColIndex: Number(parentCell.getAttribute('aria-colindex')),\n rowIndex: Number(parentRow.getAttribute('data-focusindex')),\n shiftKey: (ev as MouseEvent).shiftKey,\n }),\n );\n }\n },\n [],\n );\n const handleDoubleClick = React.useCallback(\n (ev: MouseEvent) => {\n if (\n isChild(\n ev.target as HTMLElement,\n (current) => current.tagName === 'THEAD',\n )\n )\n return;\n ev.preventDefault();\n if (onSelectRows)\n onSelectRows(\n selectedRowsRef.current,\n config.stateSelector(responsiveTableStore.getState()).focusedRow,\n );\n },\n [onSelectRows, selectedRowsRef],\n );\n\n const initialized = React.useRef(true);\n\n const running = React.useRef(false);\n const doFocusThings = React.useCallback(() => {\n if (!running.current) {\n running.current = true;\n if (focusedCell === undefined) {\n running.current = false;\n return () => {};\n }\n\n if (ref) {\n const disconnectObserver = autoDisconnectMutationObserver(\n ref,\n () => {\n scrollTimeout = setTimeout(() => {\n const focusedElement = ref.querySelector(\n '[data-focused=\"true\"]',\n );\n\n let tableCellElement: HTMLElement | null = null;\n let tableCellWidget: HTMLElement | null = null;\n\n if (\n ['td', 'th'].includes(\n focusedElement?.tagName.toLowerCase() ?? '',\n )\n ) {\n tableCellElement = focusedElement as HTMLElement;\n tableCellWidget = focusedElement?.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement;\n }\n\n if (focusedElement?.tagName.toLowerCase() === 'tr') {\n tableCellElement = focusedElement.querySelector('td,th');\n tableCellWidget =\n (focusedElement.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement) || tableCellElement;\n }\n\n if (tableCellWidget) {\n tableCellElement?.setAttribute('tabIndex', '-1');\n tableCellWidget.setAttribute('tabIndex', '0');\n } else tableCellElement?.setAttribute('tabIndex', '0');\n\n if (!isEditionMode) {\n const allFocusableElements = ref?.querySelectorAll(\n getFocusSelector(\n `${cantFocusSelector}:not([data-focused=\"true\"])`,\n ),\n );\n allFocusableElements?.forEach((current) => {\n if (current !== tableCellWidget) {\n current.setAttribute('tabIndex', '-1');\n }\n if (tableCellWidget?.tagName === 'BUTTON')\n tableCellWidget.setAttribute('role', 'gridcell');\n });\n } else {\n const focusableElements =\n tableCellElement?.querySelectorAll('[tabindex=\"-1\"]');\n\n focusableElements?.forEach((current) =>\n current.setAttribute('tabIndex', '0'),\n );\n }\n\n const focusElement = tableCellWidget ?? tableCellElement;\n const row = getSpecificParent(\n focusElement,\n (current) => current.tagName === 'TR',\n );\n\n if (\n focusElement &&\n initialized.current &&\n config.stateSelector(responsiveTableStore.getState())\n .isFocused\n ) {\n globalFocus.focus = focusElement;\n\n focusElement.focus();\n }\n\n if (row) {\n scrollParentIntoElement(row, 55, 2, 100, 'makeKeyHandler');\n }\n\n if (!initialized.current) {\n initialized.current = true;\n }\n }, 0) as unknown as number;\n },\n { timeout: 5000 },\n );\n\n running.current = false;\n return () => {\n disconnectObserver();\n clearTimeout(scrollTimeout);\n };\n }\n running.current = false;\n }\n return () => {};\n }, [focusedCell, ref, isEditionMode]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(doFocusThings, [\n focusedCell,\n isFocused,\n isEditionMode,\n ]);\n React.useEffect(() => {\n function handleFocus(ev: FocusEvent) {\n const targetTable = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n const relatedTargetTable = getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n\n if (!relatedTargetTable || relatedTargetTable !== targetTable)\n handleClick(ev);\n }\n\n ref?.addEventListener('dblclick', handleDoubleClick);\n ref?.addEventListener('mousedown', handleClick);\n ref?.addEventListener('focusin', handleFocus);\n ref?.addEventListener(customEvents.focus, handleClick);\n return () => {\n ref?.removeEventListener('mousedown', handleClick);\n ref?.removeEventListener('dblclick', handleDoubleClick);\n ref?.removeEventListener('focusin', handleFocus);\n ref?.removeEventListener(customEvents.focus, handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n\n const isDragging = React.useRef(false);\n const isFocusedRef = React.useRef(false);\n\n return (\n <Box\n ref={setRef}\n {...props}\n className={`selection__keyHandler ${props.className ?? ''}`}\n onBlur={React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n !ev.relatedTarget ||\n !getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current === ref,\n )\n ) {\n responsiveTableStore.dispatch(\n actions.selectionStateUpdate({ id, isFocused: false }),\n );\n shoutKeyhandlerLive('reset');\n isFocusedRef.current = false;\n }\n },\n [ref],\n )}\n onFocus={React.useCallback(() => {\n if (!isFocusedRef.current) shoutKeyhandlerLive('howToStartDrag');\n isFocusedRef.current = true;\n }, [])}\n sx={React.useMemo(\n () => ({ overflow: 'auto', position: 'relative' }),\n [],\n )}\n onKeyDown={React.useCallback<\n React.KeyboardEventHandler<HTMLDivElement>\n >(\n (ev) => {\n const state = config.stateSelector(responsiveTableStore.getState());\n\n if (\n willHandleKey(\n ev,\n config.stateSelector(responsiveTableStore.getState()),\n )\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (\n actions.swapFocusedRow &&\n isDragging.current &&\n allowKeyboardSorting\n ) {\n if (\n (ev.key === 'Enter' || ev.key === 'Escape') &&\n isDragging.current\n ) {\n shoutKeyhandlerLive('howToStartDrag');\n isDragging.current = false;\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else if (['ArrowDown', 'ArrowUp'].includes(ev.key)) {\n if (ev.key === 'ArrowDown') {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow + 1,\n }),\n );\n } else {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow - 1,\n }),\n );\n }\n }\n } else if (\n ev.key === 'm' &&\n ev.ctrlKey &&\n !isDragging.current &&\n state.focusedRow >= 0 &&\n actions.swapFocusedRow\n ) {\n isDragging.current = true;\n shoutKeyhandlerLive('howToEndDrag');\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else {\n const currentSelectedRows = (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n if (props.onKeyDown) props.onKeyDown(ev);\n if (ev.key === 'Enter' && onSelectRows && state.focusedRow >= 0) {\n onSelectRows(currentSelectedRows, state.focusedRow);\n }\n keyHandler(ev);\n }\n },\n [allowKeyboardSorting, keyHandler, onSelectRows, props],\n )}\n >\n {children}\n </Box>\n );\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"makeKeyHandler.js","sources":["../../../src/store/selection/makeKeyHandler.tsx"],"sourcesContent":["import React from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { Box, BoxProps } from '@apia/theme';\r\nimport {\r\n autoDisconnectMutationObserver,\r\n customEvents,\r\n getFocusSelector,\r\n getSpecificParent,\r\n globalFocus,\r\n isChild,\r\n cantFocusSelector,\r\n scrollParentIntoElement,\r\n useLatest,\r\n useUpdateEffect,\r\n} from '@apia/util';\r\nimport { ThrottleOptions } from 'ahooks/lib/useThrottle/throttleOptions';\r\nimport { useThrottleFn } from 'ahooks';\r\nimport { TUpdateByClickPayload } from './getReduxActions';\r\nimport { willHandleKey } from './handleKey';\r\nimport { INewFocus, ISelectableState, THandleKey, TUseDomProps } from './types';\r\nimport {\r\n TResponsiveTableRow,\r\n TResponsiveTableRowsSelectionEvent,\r\n} from '../../types';\r\nimport { responsiveTableStore, useResponsiveTable } from '..';\r\n\r\nexport function shoutKeyhandlerLive(\r\n liveType: 'reset' | 'howToStartDrag' | 'howToEndDrag' | 'whichIsTheNewIndex',\r\n additionalData?: {\r\n newIndex: number;\r\n },\r\n) {\r\n console.warn('Not implemented arialiveemitter', additionalData);\r\n switch (liveType) {\r\n /* case 'howToEndDrag':\r\n AriaLiveEmitter.emit('live', {\r\n type: 'assertive',\r\n message: window.ARIA_HOW_TO_END_DRAG,\r\n });\r\n break;\r\n case 'whichIsTheNewIndex':\r\n AriaLiveEmitter.emit('live', {\r\n type: 'assertive',\r\n * message:\r\n * formatMessage(window.ARIA_HOW_TO_WHICH_IS_THE_NEW_POSITION, {\r\n TOK1: String(additionalData?.newIndex ?? 0),\r\n }),\r\n });\r\n break;\r\n case 'reset':\r\n AriaLiveEmitter.emit('live', {\r\n type: 'reset',\r\n message: '',\r\n });\r\n break;\r\n default:\r\n AriaLiveEmitter.emit('live', {\r\n type: 'assertive',\r\n message: window.ARIA_HOW_TO_START_DRAG,\r\n }); */\r\n default:\r\n }\r\n}\r\n\r\nlet scrollTimeout: number;\r\n/**\r\n * Devuelve un elemento KeyHandler que puede usarse como\r\n * en el ejemplo.\r\n *\r\n * Su función es la de manejar los eventos de teclado y\r\n * ejecutar las acciones necesarias en el estado de la\r\n * grilla de acuerdo a la funcionalidad estándar de\r\n * usabilidad de grillas.\r\n *\r\n * @example\r\n *\r\n <KeyHandler>\r\n <table ... />\r\n </KeyHandler>\r\n */\r\nexport function makeKeyHandler(\r\n actions: {\r\n handleKey: (payload: THandleKey & { id: string }) => {\r\n payload: THandleKey & { id: string };\r\n type: string;\r\n };\r\n selectionStateUpdate: (\r\n payload: Partial<ISelectableState> & { id: string },\r\n ) => {\r\n payload: Partial<ISelectableState> & { id: string };\r\n type: string;\r\n };\r\n setNewFocused: (payload: INewFocus & { id: string }) => {\r\n payload: INewFocus & { id: string };\r\n type: string;\r\n };\r\n swapFocusedRow?: (\r\n payload: {\r\n newIndex: number;\r\n } & {\r\n tableName: string;\r\n },\r\n ) => {\r\n payload: {\r\n newIndex: number;\r\n } & {\r\n tableName: string;\r\n };\r\n type: string;\r\n };\r\n updateByClick: (payload: TUpdateByClickPayload['payload']) => {\r\n payload: INewFocus & { id: string };\r\n type: string;\r\n };\r\n },\r\n id: string,\r\n config: { throttleOptions?: ThrottleOptions; stateSelector: TUseDomProps },\r\n) {\r\n return function KeyHandler({\r\n children,\r\n onChangeSelection,\r\n onSelectRows,\r\n ...props\r\n }: BoxProps & {\r\n /**\r\n * Se emite un evento cada vez que el usuario modifica\r\n * la selección actual.\r\n */\r\n onChangeSelection?: (\r\n newRows: TResponsiveTableRowsSelectionEvent,\r\n ) => unknown;\r\n onSelectRows?: (\r\n newRows: TResponsiveTableRowsSelectionEvent,\r\n focusedIndex: number,\r\n ) => unknown;\r\n }) {\r\n const { run: keyHandler } = useThrottleFn<\r\n React.KeyboardEventHandler<HTMLDivElement>\r\n >((ev) => {\r\n if (!['shift', 'alt', 'control'].includes(ev.key.toLowerCase())) {\r\n responsiveTableStore.dispatch(actions.handleKey({ id, ev }));\r\n }\r\n }, config?.throttleOptions ?? { wait: 100 });\r\n\r\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\r\n\r\n const selectedRows = useResponsiveTable(\r\n (global) => {\r\n const state = config.stateSelector(global);\r\n return (state?.selectedRows ?? []).map<\r\n TResponsiveTableRowsSelectionEvent[0]\r\n >((current) => ({\r\n index: current,\r\n row: state.rows[current] as TResponsiveTableRow,\r\n }));\r\n },\r\n (a, b) =>\r\n shallowEqual(\r\n a.map((current) => current.index),\r\n b.map((current) => current.index),\r\n ),\r\n );\r\n const selectedRowsRef = useLatest(selectedRows);\r\n const focusedRow = useResponsiveTable((global) => {\r\n const state = config.stateSelector(global);\r\n return state?.focusedRow ?? -1;\r\n });\r\n const { allowKeyboardSorting, focusedCell, isEditionMode, isFocused } =\r\n useResponsiveTable((global) => {\r\n const state = config.stateSelector(global);\r\n return {\r\n focusedCell:\r\n state?.focusedRow !== undefined\r\n ? `${state?.focusedRow}_${state?.focusedColumn}`\r\n : undefined,\r\n isEditionMode: state?.isEditionMode,\r\n rows: state?.rows,\r\n isFocused: state?.isFocused,\r\n allowKeyboardSorting: state?.allowRowsKeyboardSorting,\r\n };\r\n }, shallowEqual);\r\n useUpdateEffect(() => {\r\n if (onChangeSelection) onChangeSelection(selectedRows);\r\n }, [onChangeSelection, selectedRows]);\r\n\r\n const handleClick = React.useCallback(\r\n (ev: MouseEvent | FocusEvent | Event) => {\r\n if ((ev.target as HTMLElement).closest('.moreInformationButton'))\r\n return;\r\n\r\n if ((ev as MouseEvent).shiftKey) {\r\n document.getSelection()?.removeAllRanges();\r\n }\r\n const parentRow = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => {\r\n if (current.tagName.toLowerCase() === 'table') return null;\r\n if (current.matches('tr')) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n );\r\n const parentCell = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => {\r\n if (current.tagName.toLowerCase() === 'table') return null;\r\n if (current.matches('td,th')) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n );\r\n if (parentCell && parentRow) {\r\n responsiveTableStore.dispatch(\r\n actions.updateByClick({\r\n altKey: (ev as MouseEvent).altKey,\r\n id,\r\n ctrlKey: (ev as MouseEvent).ctrlKey,\r\n ariaColIndex: Number(parentCell.getAttribute('aria-colindex')),\r\n rowIndex: Number(parentRow.getAttribute('data-focusindex')),\r\n shiftKey: (ev as MouseEvent).shiftKey,\r\n }),\r\n );\r\n }\r\n },\r\n [],\r\n );\r\n const handleDoubleClick = React.useCallback(\r\n (ev: MouseEvent) => {\r\n if (\r\n isChild(\r\n ev.target as HTMLElement,\r\n (current) => current.tagName === 'THEAD',\r\n )\r\n )\r\n return;\r\n ev.preventDefault();\r\n if (onSelectRows)\r\n onSelectRows(\r\n selectedRowsRef.current,\r\n config.stateSelector(responsiveTableStore.getState()).focusedRow,\r\n );\r\n },\r\n [onSelectRows, selectedRowsRef],\r\n );\r\n\r\n const initialized = React.useRef(true);\r\n\r\n const running = React.useRef(false);\r\n const doFocusThings = React.useCallback(() => {\r\n if (!running.current) {\r\n running.current = true;\r\n if (focusedCell === undefined) {\r\n running.current = false;\r\n return () => {};\r\n }\r\n\r\n if (ref) {\r\n const disconnectObserver = autoDisconnectMutationObserver(\r\n ref,\r\n () => {\r\n scrollTimeout = setTimeout(() => {\r\n const focusedElement = ref.querySelector(\r\n '[data-focused=\"true\"]',\r\n );\r\n\r\n let tableCellElement: HTMLElement | null = null;\r\n let tableCellWidget: HTMLElement | null = null;\r\n\r\n if (\r\n ['td', 'th'].includes(\r\n focusedElement?.tagName.toLowerCase() ?? '',\r\n )\r\n ) {\r\n tableCellElement = focusedElement as HTMLElement;\r\n tableCellWidget = focusedElement?.querySelector(\r\n getFocusSelector(':not(.debug_info__button)'),\r\n ) as HTMLElement;\r\n }\r\n\r\n if (focusedElement?.tagName.toLowerCase() === 'tr') {\r\n tableCellElement = focusedElement.querySelector('td,th');\r\n tableCellWidget =\r\n (focusedElement.querySelector(\r\n getFocusSelector(':not(.debug_info__button)'),\r\n ) as HTMLElement) || tableCellElement;\r\n }\r\n\r\n if (tableCellWidget) {\r\n tableCellElement?.setAttribute('tabIndex', '-1');\r\n tableCellWidget.setAttribute('tabIndex', '0');\r\n } else tableCellElement?.setAttribute('tabIndex', '0');\r\n\r\n if (!isEditionMode) {\r\n const allFocusableElements = ref?.querySelectorAll(\r\n getFocusSelector(\r\n `${cantFocusSelector}:not([data-focused=\"true\"])`,\r\n ),\r\n );\r\n allFocusableElements?.forEach((current) => {\r\n if (current !== tableCellWidget) {\r\n current.setAttribute('tabIndex', '-1');\r\n }\r\n if (tableCellWidget?.tagName === 'BUTTON')\r\n tableCellWidget.setAttribute('role', 'gridcell');\r\n });\r\n } else {\r\n const focusableElements =\r\n tableCellElement?.querySelectorAll('[tabindex=\"-1\"]');\r\n\r\n focusableElements?.forEach((current) =>\r\n current.setAttribute('tabIndex', '0'),\r\n );\r\n }\r\n\r\n const focusElement = tableCellWidget ?? tableCellElement;\r\n const row = getSpecificParent(\r\n focusElement,\r\n (current) => current.tagName === 'TR',\r\n );\r\n\r\n if (\r\n focusElement &&\r\n initialized.current &&\r\n config.stateSelector(responsiveTableStore.getState())\r\n .isFocused\r\n ) {\r\n globalFocus.focus = focusElement;\r\n\r\n focusElement.focus();\r\n }\r\n\r\n if (row) {\r\n scrollParentIntoElement(row, 55, 2, 100, 'makeKeyHandler');\r\n }\r\n\r\n if (!initialized.current) {\r\n initialized.current = true;\r\n }\r\n }, 0) as unknown as number;\r\n },\r\n { timeout: 5000 },\r\n );\r\n\r\n running.current = false;\r\n return () => {\r\n disconnectObserver();\r\n clearTimeout(scrollTimeout);\r\n };\r\n }\r\n running.current = false;\r\n }\r\n return () => {};\r\n }, [focusedCell, ref, isEditionMode]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n React.useLayoutEffect(doFocusThings, [\r\n focusedCell,\r\n isFocused,\r\n isEditionMode,\r\n ]);\r\n React.useEffect(() => {\r\n function handleFocus(ev: FocusEvent) {\r\n const targetTable = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => current.tagName.toLowerCase() === 'table',\r\n );\r\n const relatedTargetTable = getSpecificParent(\r\n ev.relatedTarget as HTMLElement,\r\n (current) => current.tagName.toLowerCase() === 'table',\r\n );\r\n\r\n if (!relatedTargetTable || relatedTargetTable !== targetTable)\r\n handleClick(ev);\r\n }\r\n\r\n ref?.addEventListener('dblclick', handleDoubleClick);\r\n ref?.addEventListener('mousedown', handleClick);\r\n ref?.addEventListener('focusin', handleFocus);\r\n ref?.addEventListener(customEvents.focus, handleClick);\r\n return () => {\r\n ref?.removeEventListener('mousedown', handleClick);\r\n ref?.removeEventListener('dblclick', handleDoubleClick);\r\n ref?.removeEventListener('focusin', handleFocus);\r\n ref?.removeEventListener(customEvents.focus, handleClick);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [ref]);\r\n\r\n const isDragging = React.useRef(false);\r\n const isFocusedRef = React.useRef(false);\r\n\r\n return (\r\n <Box\r\n ref={setRef}\r\n {...props}\r\n className={`selection__keyHandler ${props.className ?? ''}`}\r\n onBlur={React.useCallback(\r\n (ev: React.FocusEvent) => {\r\n if (\r\n !ev.relatedTarget ||\r\n !getSpecificParent(\r\n ev.relatedTarget as HTMLElement,\r\n (current) => current === ref,\r\n )\r\n ) {\r\n responsiveTableStore.dispatch(\r\n actions.selectionStateUpdate({ id, isFocused: false }),\r\n );\r\n shoutKeyhandlerLive('reset');\r\n isFocusedRef.current = false;\r\n }\r\n },\r\n [ref],\r\n )}\r\n onFocus={React.useCallback(() => {\r\n if (!isFocusedRef.current) shoutKeyhandlerLive('howToStartDrag');\r\n isFocusedRef.current = true;\r\n }, [])}\r\n sx={React.useMemo(\r\n () => ({ overflow: 'auto', position: 'relative' }),\r\n [],\r\n )}\r\n onKeyDown={React.useCallback<\r\n React.KeyboardEventHandler<HTMLDivElement>\r\n >(\r\n (ev) => {\r\n const state = config.stateSelector(responsiveTableStore.getState());\r\n\r\n if (\r\n willHandleKey(\r\n ev,\r\n config.stateSelector(responsiveTableStore.getState()),\r\n )\r\n ) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n if (\r\n actions.swapFocusedRow &&\r\n isDragging.current &&\r\n allowKeyboardSorting\r\n ) {\r\n if (\r\n (ev.key === 'Enter' || ev.key === 'Escape') &&\r\n isDragging.current\r\n ) {\r\n shoutKeyhandlerLive('howToStartDrag');\r\n isDragging.current = false;\r\n responsiveTableStore.dispatch(\r\n actions.swapFocusedRow({\r\n tableName: id,\r\n newIndex: state.focusedRow,\r\n }),\r\n );\r\n } else if (['ArrowDown', 'ArrowUp'].includes(ev.key)) {\r\n if (ev.key === 'ArrowDown') {\r\n responsiveTableStore.dispatch(\r\n actions.swapFocusedRow({\r\n tableName: id,\r\n newIndex: state.focusedRow + 1,\r\n }),\r\n );\r\n } else {\r\n responsiveTableStore.dispatch(\r\n actions.swapFocusedRow({\r\n tableName: id,\r\n newIndex: state.focusedRow - 1,\r\n }),\r\n );\r\n }\r\n }\r\n } else if (\r\n ev.key === 'm' &&\r\n ev.ctrlKey &&\r\n !isDragging.current &&\r\n state.focusedRow >= 0 &&\r\n actions.swapFocusedRow\r\n ) {\r\n isDragging.current = true;\r\n shoutKeyhandlerLive('howToEndDrag');\r\n responsiveTableStore.dispatch(\r\n actions.swapFocusedRow({\r\n tableName: id,\r\n newIndex: state.focusedRow,\r\n }),\r\n );\r\n } else {\r\n const currentSelectedRows = (state?.selectedRows ?? []).map<\r\n TResponsiveTableRowsSelectionEvent[0]\r\n >((current) => ({\r\n index: current,\r\n row: state.rows[current] as TResponsiveTableRow,\r\n }));\r\n if (props.onKeyDown) props.onKeyDown(ev);\r\n if (ev.key === 'Enter' && onSelectRows && state.focusedRow >= 0) {\r\n onSelectRows(currentSelectedRows, state.focusedRow);\r\n }\r\n keyHandler(ev);\r\n }\r\n },\r\n [allowKeyboardSorting, keyHandler, onSelectRows, props],\r\n )}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setNewFocused.js","sources":["../../../src/store/selection/setNewFocused.ts"],"sourcesContent":["import { addBoundary } from '@apia/util';\nimport { Draft } from '@apia/store';\nimport { INewFocus, ISelectableState, TBasicRow } from './types';\n\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una fila, evitando\n * que se haga foco en filas inexistentes.\n */\nexport function addRowBoundary(newRow: number, state: ISelectableState) {\n const hasFiltersRow = !!state.filters.find(\n (current) =>\n !!state.columns.find((search) => search.name === current.column),\n );\n return addBoundary({\n number: newRow,\n min: hasFiltersRow ? -2 : -1,\n max: Math.max(0, state.rows.length - 1),\n });\n}\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una columna, evitando\n * que se haga foco en columnas inexistentes.\n */\nexport function addColumnBoundary(newColumn: number, state: ISelectableState) {\n return addBoundary({\n number: newColumn,\n min: 0,\n max:\n state.nonAdditionalColumnsCount +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n });\n}\n\nfunction isBasicRow(row: unknown): row is TBasicRow {\n return typeof row === 'object' && !!row && 'forbidSelection' in row;\n}\n\nfunction filterNonSellectableRows(\n state: Draft<ISelectableState>,\n newSelection: number[],\n) {\n let expandedRowsBefore = 0;\n return newSelection.filter((selectedRowIndex) => {\n const row = state.rows[selectedRowIndex + expandedRowsBefore];\n if (state.expandedRows.includes(selectedRowIndex)) expandedRowsBefore += 1;\n return !(isBasicRow(row) && row.forbidSelection);\n });\n}\n\n/**\n * Normalmente, este método será llamado desde un\n * action de Redux, para eso fue diseñado. Su\n * utilidad es la de tomar el estado y alterarlo\n * dependiendo de los parámetros pasados y la lógica\n * de selección de filas y columnas en una grilla,\n * devolviendo un estado coherente que represente\n * las acciones de un usuario en la grilla.\n */\nexport function setNewFocused(\n state: Draft<ISelectableState>,\n {\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n ctrlKey,\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n shiftKey,\n newFocusedColumn,\n newFocusedRow,\n /**\n * Con este método se puede seleccionar cuál celda\n * va a recibir el foco y la selección, o solamente\n * el foco si esta propiedad es pasada en false.\n */\n shouldSelectNewFocused,\n }: INewFocus,\n) {\n let actualNewFocusedRow =\n Math.round(\n addRowBoundary(newFocusedRow ?? state.focusedRow ?? 0, state) * 2,\n ) / 2;\n const actualNewFocusedColumn = addColumnBoundary(\n newFocusedColumn ?? state.focusedColumn,\n state,\n );\n\n state.focusedColumn = actualNewFocusedColumn;\n state.focusedRow = actualNewFocusedRow;\n state.isFocused = shouldSelectNewFocused ?? false;\n\n if (shouldSelectNewFocused === false || actualNewFocusedRow < 0) return;\n\n if (Math.round(actualNewFocusedRow) - actualNewFocusedRow !== 0)\n actualNewFocusedRow = Math.floor(actualNewFocusedRow);\n\n const isDeselectingWithCtrl =\n ctrlKey && state.selectedRows.includes(actualNewFocusedRow);\n\n if (state.allowSelection !== false)\n if (\n (!ctrlKey && !shiftKey) ||\n (state.isMultiple === false && !isDeselectingWithCtrl)\n )\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n else if ((ctrlKey && state.isMultiple) || isDeselectingWithCtrl) {\n state.selectedRows = filterNonSellectableRows(\n state,\n state.selectedRows.includes(actualNewFocusedRow)\n ? state.selectedRows.filter(\n (current) => current !== actualNewFocusedRow,\n )\n : [...state.selectedRows, actualNewFocusedRow],\n );\n } else if (shiftKey && state.isMultiple) {\n const sortedSelectedRows = [...state.selectedRows].sort((a, b) => a - b);\n let minSelectedRow = sortedSelectedRows[0];\n let maxSelectedRow = sortedSelectedRows[sortedSelectedRows.length - 1];\n\n if (minSelectedRow === undefined) {\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n return;\n }\n\n if (actualNewFocusedRow < minSelectedRow)\n minSelectedRow = actualNewFocusedRow;\n if (actualNewFocusedRow > maxSelectedRow)\n maxSelectedRow = actualNewFocusedRow;\n\n const newSelectedRows = filterNonSellectableRows(\n state,\n new Array(maxSelectedRow - minSelectedRow + 1)\n .fill('')\n .map((_, i) => i + (minSelectedRow ?? 0)),\n );\n\n state.selectedRows = filterNonSellectableRows(state, newSelectedRows);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setNewFocused.js","sources":["../../../src/store/selection/setNewFocused.ts"],"sourcesContent":["import { addBoundary } from '@apia/util';\r\nimport { Draft } from '@apia/store';\r\nimport { INewFocus, ISelectableState, TBasicRow } from './types';\r\n\r\n/**\r\n * Este método conoce las interfaces necesarias\r\n * para aplicar las restricciones correspondientes\r\n * a la hora de hacer foco en una fila, evitando\r\n * que se haga foco en filas inexistentes.\r\n */\r\nexport function addRowBoundary(newRow: number, state: ISelectableState) {\r\n const hasFiltersRow = !!state.filters.find(\r\n (current) =>\r\n !!state.columns.find((search) => search.name === current.column),\r\n );\r\n return addBoundary({\r\n number: newRow,\r\n min: hasFiltersRow ? -2 : -1,\r\n max: Math.max(0, state.rows.length - 1),\r\n });\r\n}\r\n/**\r\n * Este método conoce las interfaces necesarias\r\n * para aplicar las restricciones correspondientes\r\n * a la hora de hacer foco en una columna, evitando\r\n * que se haga foco en columnas inexistentes.\r\n */\r\nexport function addColumnBoundary(newColumn: number, state: ISelectableState) {\r\n return addBoundary({\r\n number: newColumn,\r\n min: 0,\r\n max:\r\n state.nonAdditionalColumnsCount +\r\n state.statesColumns +\r\n (state.hasNonAdditionalFilters ? 1 : 0),\r\n });\r\n}\r\n\r\nfunction isBasicRow(row: unknown): row is TBasicRow {\r\n return typeof row === 'object' && !!row && 'forbidSelection' in row;\r\n}\r\n\r\nfunction filterNonSellectableRows(\r\n state: Draft<ISelectableState>,\r\n newSelection: number[],\r\n) {\r\n let expandedRowsBefore = 0;\r\n return newSelection.filter((selectedRowIndex) => {\r\n const row = state.rows[selectedRowIndex + expandedRowsBefore];\r\n if (state.expandedRows.includes(selectedRowIndex)) expandedRowsBefore += 1;\r\n return !(isBasicRow(row) && row.forbidSelection);\r\n });\r\n}\r\n\r\n/**\r\n * Normalmente, este método será llamado desde un\r\n * action de Redux, para eso fue diseñado. Su\r\n * utilidad es la de tomar el estado y alterarlo\r\n * dependiendo de los parámetros pasados y la lógica\r\n * de selección de filas y columnas en una grilla,\r\n * devolviendo un estado coherente que represente\r\n * las acciones de un usuario en la grilla.\r\n */\r\nexport function setNewFocused(\r\n state: Draft<ISelectableState>,\r\n {\r\n /**\r\n * Propiedad proveniente del evento click o keydown.\r\n */\r\n ctrlKey,\r\n /**\r\n * Propiedad proveniente del evento click o keydown.\r\n */\r\n shiftKey,\r\n newFocusedColumn,\r\n newFocusedRow,\r\n /**\r\n * Con este método se puede seleccionar cuál celda\r\n * va a recibir el foco y la selección, o solamente\r\n * el foco si esta propiedad es pasada en false.\r\n */\r\n shouldSelectNewFocused,\r\n }: INewFocus,\r\n) {\r\n let actualNewFocusedRow =\r\n Math.round(\r\n addRowBoundary(newFocusedRow ?? state.focusedRow ?? 0, state) * 2,\r\n ) / 2;\r\n const actualNewFocusedColumn = addColumnBoundary(\r\n newFocusedColumn ?? state.focusedColumn,\r\n state,\r\n );\r\n\r\n state.focusedColumn = actualNewFocusedColumn;\r\n state.focusedRow = actualNewFocusedRow;\r\n state.isFocused = shouldSelectNewFocused ?? false;\r\n\r\n if (shouldSelectNewFocused === false || actualNewFocusedRow < 0) return;\r\n\r\n if (Math.round(actualNewFocusedRow) - actualNewFocusedRow !== 0)\r\n actualNewFocusedRow = Math.floor(actualNewFocusedRow);\r\n\r\n const isDeselectingWithCtrl =\r\n ctrlKey && state.selectedRows.includes(actualNewFocusedRow);\r\n\r\n if (state.allowSelection !== false)\r\n if (\r\n (!ctrlKey && !shiftKey) ||\r\n (state.isMultiple === false && !isDeselectingWithCtrl)\r\n )\r\n state.selectedRows = filterNonSellectableRows(state, [\r\n actualNewFocusedRow,\r\n ]);\r\n else if ((ctrlKey && state.isMultiple) || isDeselectingWithCtrl) {\r\n state.selectedRows = filterNonSellectableRows(\r\n state,\r\n state.selectedRows.includes(actualNewFocusedRow)\r\n ? state.selectedRows.filter(\r\n (current) => current !== actualNewFocusedRow,\r\n )\r\n : [...state.selectedRows, actualNewFocusedRow],\r\n );\r\n } else if (shiftKey && state.isMultiple) {\r\n const sortedSelectedRows = [...state.selectedRows].sort((a, b) => a - b);\r\n let minSelectedRow = sortedSelectedRows[0];\r\n let maxSelectedRow = sortedSelectedRows[sortedSelectedRows.length - 1];\r\n\r\n if (minSelectedRow === undefined) {\r\n state.selectedRows = filterNonSellectableRows(state, [\r\n actualNewFocusedRow,\r\n ]);\r\n return;\r\n }\r\n\r\n if (actualNewFocusedRow < minSelectedRow)\r\n minSelectedRow = actualNewFocusedRow;\r\n if (actualNewFocusedRow > maxSelectedRow)\r\n maxSelectedRow = actualNewFocusedRow;\r\n\r\n const newSelectedRows = filterNonSellectableRows(\r\n state,\r\n new Array(maxSelectedRow - minSelectedRow + 1)\r\n .fill('')\r\n .map((_, i) => i + (minSelectedRow ?? 0)),\r\n );\r\n\r\n state.selectedRows = filterNonSellectableRows(state, newSelectedRows);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}