@atom-learning/components 3.17.0 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,9 @@
1
- # [3.17.0](https://github.com/Atom-Learning/components/compare/v3.16.0...v3.17.0) (2024-03-27)
1
+ # [3.18.0](https://github.com/Atom-Learning/components/compare/v3.17.0...v3.18.0) (2024-03-27)
2
2
 
3
3
 
4
4
  ### Features
5
5
 
6
- * updating icons library ([ea85d8e](https://github.com/Atom-Learning/components/commit/ea85d8e201d96cb11580ef26bbdb6d16620fb23e))
6
+ * exposing on change selection function on tables ([cd15025](https://github.com/Atom-Learning/components/commit/cd15025115702bbd499da1cb932ba89a676877ce))
7
7
 
8
8
  # [1.4.0](https://github.com/Atom-Learning/components/compare/v1.3.0...v1.4.0) (2022-04-11)
9
9
 
@@ -4,12 +4,13 @@
4
4
  * Children can call `useDataTable` to access everything provided by `@tanstack/react-table` plus
5
5
  * the functionality we've built on top.
6
6
  */
7
- export declare const DataTable: (({ columns, data: dataProp, getAsyncData, defaultSort, initialState, enableRowSelection, children }: {
7
+ export declare const DataTable: (({ columns, data: dataProp, getAsyncData, defaultSort, initialState, enableRowSelection, onRowSelectionChange, children }: {
8
8
  columns: any;
9
9
  defaultSort?: import("./DataTable.types").TDefaultSort | undefined;
10
10
  children: import("react").ReactNode;
11
11
  initialState?: Partial<import("@tanstack/table-core").VisibilityTableState & import("@tanstack/table-core").ColumnOrderTableState & import("@tanstack/table-core").ColumnPinningTableState & import("@tanstack/table-core").FiltersTableState & import("@tanstack/table-core").SortingTableState & import("@tanstack/table-core").ExpandedTableState & import("@tanstack/table-core").GroupingTableState & import("@tanstack/table-core").ColumnSizingTableState & import("@tanstack/table-core").PaginationTableState & import("@tanstack/table-core").RowSelectionTableState> | undefined;
12
12
  enableRowSelection?: boolean | ((row: import("@tanstack/table-core").Row<unknown>) => boolean) | undefined;
13
+ onRowSelectionChange?: import("@tanstack/table-core").OnChangeFn<import("@tanstack/table-core").RowSelectionState> | undefined;
13
14
  } & ({
14
15
  data: import("./DataTable.types").TableData;
15
16
  getAsyncData?: undefined;
@@ -1,4 +1,4 @@
1
- import type { Row } from '@tanstack/react-table';
1
+ import type { OnChangeFn, Row, RowSelectionState } from '@tanstack/react-table';
2
2
  import * as React from 'react';
3
3
  import { DataTableContextType, InitialState, TableData, TDefaultSort, TGetAsyncData } from './DataTable.types';
4
4
  declare type DataTableProviderProps = {
@@ -7,6 +7,7 @@ declare type DataTableProviderProps = {
7
7
  children: React.ReactNode;
8
8
  initialState?: InitialState;
9
9
  enableRowSelection?: boolean | ((row: Row<unknown>) => boolean);
10
+ onRowSelectionChange?: OnChangeFn<RowSelectionState>;
10
11
  } & ({
11
12
  data: TableData;
12
13
  getAsyncData?: never;
@@ -14,6 +15,6 @@ declare type DataTableProviderProps = {
14
15
  data?: never;
15
16
  getAsyncData: TGetAsyncData;
16
17
  });
17
- export declare const DataTableProvider: ({ columns, data: dataProp, getAsyncData, defaultSort, initialState, enableRowSelection, children }: DataTableProviderProps) => JSX.Element;
18
+ export declare const DataTableProvider: ({ columns, data: dataProp, getAsyncData, defaultSort, initialState, enableRowSelection, onRowSelectionChange, children }: DataTableProviderProps) => JSX.Element;
18
19
  export declare const useDataTable: <T extends Record<string, unknown>>() => DataTableContextType<T>;
19
20
  export {};
@@ -1,2 +1,2 @@
1
- import{v4 as J}from"@lukeed/uuid";import{useReactTable as K,getCoreRowModel as U,getPaginationRowModel as V,getSortedRowModel as j,getFilteredRowModel as q,getExpandedRowModel as H}from"@tanstack/react-table";import*as e from"react";import Q from"use-deep-compare-effect";import{AsyncDataState as i}from"./DataTable.types.js";import{getNewAsyncData as W}from"./getNewAsyncData.js";import{usePagination as X}from"./usePagination.js";import{useSortByColumn as Y}from"./useSorting.js";const M=e.createContext(null),Z=({columns:n,data:t=[],getAsyncData:o,defaultSort:x,initialState:g=void 0,enableRowSelection:u,children:F})=>{var C;const D=e.useRef(J()),[d,c]=e.useState({results:t!=null?t:[],total:(C=t==null?void 0:t.length)!=null?C:0}),[P,I]=e.useState({}),[N,T]=e.useState({}),{isPaginated:r,applyPagination:h,paginationState:a,setPaginationState:L}=X(g==null?void 0:g.pagination),[v,S]=e.useState(i.NONE),[m,A]=e.useState(""),{setIsSortable:G,isSortable:w,sorting:s,setSorting:k}=Y(x),b=e.useCallback(async l=>{if(o)try{S(i.PENDING);const R=await W(o,l,a,s,m);c(R),S(i.FULFILLED)}catch{S(i.REJECTED)}},[o,a==null?void 0:a.pageIndex,a==null?void 0:a.pageSize,s,m]);e.useEffect(()=>{b({})},[b]),Q(()=>{!t||c({results:t,total:t.length})},[t]);const p=()=>d.total,E=K({columns:n,data:d.results,pageCount:a?Math.ceil(p()/a.pageSize):-1,initialState:g,state:{sorting:s,globalFilter:m,pagination:a,rowSelection:P,expanded:N},manualPagination:o&&r,manualSorting:o&&r,enableSorting:v!==i.PENDING,enableGlobalFilter:!o,enableRowSelection:u,onExpandedChange:T,getSubRows:l=>l.subRows,onRowSelectionChange:I,getCoreRowModel:U(),getPaginationRowModel:r?V():void 0,getSortedRowModel:w||s.length?j():void 0,getFilteredRowModel:q(),getExpandedRowModel:H(),onPaginationChange:r?L:void 0,onSortingChange:k,onGlobalFilterChange:A,globalFilterFn:(l,R,O)=>{const y=B=>B.toLowerCase().includes(O.toLowerCase()),f=l.getValue(R);switch(typeof f){case"string":return y(f);case"boolean":case"number":return y(String(f));default:return!1}}}),z=e.useMemo(()=>({...E,columns:n,data:d,setData:c,setIsSortable:G,applyPagination:h,getTotalRows:p,isSortable:w,asyncDataState:v,runAsyncData:b,enableRowSelection:u,rowSelection:P,tableId:D.current}),[E,h,p,w,u,D]);return e.createElement(M.Provider,{value:z},F)},_=()=>{const n=e.useContext(M);if(!n)throw new Error("useDataTable can only be called from inside a DataTableProvider");return n};export{Z as DataTableProvider,_ as useDataTable};
1
+ import{v4 as J}from"@lukeed/uuid";import{useReactTable as U,getCoreRowModel as j,getPaginationRowModel as q,getSortedRowModel as H,getFilteredRowModel as K,getExpandedRowModel as Q}from"@tanstack/react-table";import*as e from"react";import W from"use-deep-compare-effect";import{AsyncDataState as i}from"./DataTable.types.js";import{getNewAsyncData as X}from"./getNewAsyncData.js";import{usePagination as Y}from"./usePagination.js";import{useSortByColumn as Z}from"./useSorting.js";const F=e.createContext(null),_=({columns:l,data:t=[],getAsyncData:n,defaultSort:x,initialState:g=void 0,enableRowSelection:u,onRowSelectionChange:C,children:I})=>{var h;const D=e.useRef(J()),[d,c]=e.useState({results:t!=null?t:[],total:(h=t==null?void 0:t.length)!=null?h:0}),[P,N]=e.useState({}),[T,L]=e.useState({}),{isPaginated:r,applyPagination:v,paginationState:a,setPaginationState:G}=Y(g==null?void 0:g.pagination),[E,S]=e.useState(i.NONE),[w,A]=e.useState(""),{setIsSortable:z,isSortable:b,sorting:s,setSorting:k}=Z(x),p=e.useCallback(async o=>{if(n)try{S(i.PENDING);const R=await X(n,o,a,s,w);c(R),S(i.FULFILLED)}catch{S(i.REJECTED)}},[n,a==null?void 0:a.pageIndex,a==null?void 0:a.pageSize,s,w]);e.useEffect(()=>{p({})},[p]),W(()=>{!t||c({results:t,total:t.length})},[t]);const m=()=>d.total,y=U({columns:l,data:d.results,pageCount:a?Math.ceil(m()/a.pageSize):-1,initialState:g,state:{sorting:s,globalFilter:w,pagination:a,rowSelection:P,expanded:T},manualPagination:n&&r,manualSorting:n&&r,enableSorting:E!==i.PENDING,enableGlobalFilter:!n,enableRowSelection:u,onExpandedChange:L,getSubRows:o=>o.subRows,onRowSelectionChange:o=>{C&&C(o),N(o)},getCoreRowModel:j(),getPaginationRowModel:r?q():void 0,getSortedRowModel:b||s.length?H():void 0,getFilteredRowModel:K(),getExpandedRowModel:Q(),onPaginationChange:r?G:void 0,onSortingChange:k,onGlobalFilterChange:A,globalFilterFn:(o,R,V)=>{const M=B=>B.toLowerCase().includes(V.toLowerCase()),f=o.getValue(R);switch(typeof f){case"string":return M(f);case"boolean":case"number":return M(String(f));default:return!1}}}),O=e.useMemo(()=>({...y,columns:l,data:d,setData:c,setIsSortable:z,applyPagination:v,getTotalRows:m,isSortable:b,asyncDataState:E,runAsyncData:p,enableRowSelection:u,rowSelection:P,tableId:D.current}),[y,v,m,b,u,D]);return e.createElement(F.Provider,{value:O},I)},$=()=>{const l=e.useContext(F);if(!l)throw new Error("useDataTable can only be called from inside a DataTableProvider");return l};export{_ as DataTableProvider,$ as useDataTable};
2
2
  //# sourceMappingURL=DataTableContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableContext.js","sources":["../../../src/components/data-table/DataTableContext.tsx"],"sourcesContent":["import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n enableRowSelection,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n enableRowSelection,\n rowSelection,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n"],"names":["DataTableContext","React","DataTableProvider","columns","dataProp","getAsyncData","defaultSort","initialState","enableRowSelection","children","_a","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","isPaginated","applyPagination","paginationState","setPaginationState","usePagination","asyncDataState","setAsyncDataState","AsyncDataState","globalFilter","setGlobalFilter","setIsSortable","isSortable","sorting","setSorting","useSortByColumn","runAsyncData","overrideAsyncDataOptions","newData","getNewAsyncData","useDeepCompareEffect","getTotalRows","table","useReactTable","row","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","value","useDataTable","context"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableContext.js","sources":["../../../src/components/data-table/DataTableContext.tsx"],"sourcesContent":["import { v4 as uuid } from '@lukeed/uuid'\nimport type {\n ExpandedState,\n OnChangeFn,\n PaginationState,\n Row,\n RowSelectionState\n} from '@tanstack/react-table'\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable\n} from '@tanstack/react-table'\nimport * as React from 'react'\nimport useDeepCompareEffect from 'use-deep-compare-effect'\n\nimport {\n AsyncDataState,\n DataTableContextType,\n InitialState,\n TableData,\n TAsyncDataOptions,\n TAsyncDataResult,\n TDefaultSort,\n TGetAsyncData\n} from './DataTable.types'\nimport { getNewAsyncData } from './getNewAsyncData'\nimport { usePagination } from './usePagination'\nimport { useSortByColumn } from './useSorting'\n\nconst DataTableContext =\n React.createContext<DataTableContextType<unknown> | null>(null)\n\ntype DataTableProviderProps = {\n columns\n defaultSort?: TDefaultSort\n children: React.ReactNode\n initialState?: InitialState\n enableRowSelection?: boolean | ((row: Row<unknown>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n} & (\n | { data: TableData; getAsyncData?: never }\n | { data?: never; getAsyncData: TGetAsyncData }\n)\n\nexport const DataTableProvider = ({\n columns,\n data: dataProp = [],\n getAsyncData,\n defaultSort,\n initialState = undefined,\n enableRowSelection,\n onRowSelectionChange,\n children\n}: DataTableProviderProps): JSX.Element => {\n const tableId = React.useRef(uuid())\n\n const [data, setData] = React.useState<TAsyncDataResult>({\n results: dataProp ?? [],\n total: dataProp?.length ?? 0\n })\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [expanded, setExpanded] = React.useState<ExpandedState>({})\n\n const { isPaginated, applyPagination, paginationState, setPaginationState } =\n usePagination(initialState?.pagination)\n\n const [asyncDataState, setAsyncDataState] = React.useState<AsyncDataState>(\n AsyncDataState.NONE\n )\n\n const [globalFilter, setGlobalFilter] = React.useState<string>('')\n\n const { setIsSortable, isSortable, sorting, setSorting } =\n useSortByColumn(defaultSort)\n\n const runAsyncData = React.useCallback(\n async (overrideAsyncDataOptions: Partial<TAsyncDataOptions>) => {\n if (!getAsyncData) return\n\n try {\n setAsyncDataState(AsyncDataState.PENDING)\n\n const newData = await getNewAsyncData(\n getAsyncData,\n overrideAsyncDataOptions,\n paginationState as PaginationState,\n sorting,\n globalFilter\n )\n\n setData(newData as TAsyncDataResult)\n setAsyncDataState(AsyncDataState.FULFILLED)\n } catch (error) {\n setAsyncDataState(AsyncDataState.REJECTED)\n }\n },\n [\n getAsyncData,\n paginationState?.pageIndex,\n paginationState?.pageSize,\n sorting,\n globalFilter\n ]\n )\n\n React.useEffect(() => {\n runAsyncData({})\n }, [runAsyncData])\n\n useDeepCompareEffect(() => {\n if (!dataProp) return\n\n setData({ results: dataProp, total: dataProp.length })\n }, [dataProp])\n\n const getTotalRows = () => data.total\n\n const table = useReactTable<unknown>({\n columns,\n data: data.results,\n pageCount: paginationState\n ? Math.ceil(getTotalRows() / paginationState.pageSize)\n : -1,\n initialState: initialState,\n state: {\n sorting,\n globalFilter,\n pagination: paginationState,\n rowSelection,\n expanded\n },\n manualPagination: getAsyncData && isPaginated,\n manualSorting: getAsyncData && isPaginated,\n enableSorting: asyncDataState !== AsyncDataState.PENDING,\n enableGlobalFilter: !getAsyncData,\n enableRowSelection,\n onExpandedChange: setExpanded,\n getSubRows: (row: Row<unknown>) => row.subRows,\n onRowSelectionChange: (updaterOrValue) => {\n if (onRowSelectionChange) onRowSelectionChange(updaterOrValue)\n setRowSelection(updaterOrValue)\n },\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: isPaginated ? getPaginationRowModel() : undefined,\n getSortedRowModel:\n isSortable || sorting.length ? getSortedRowModel() : undefined,\n getFilteredRowModel: getFilteredRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n onPaginationChange: isPaginated ? setPaginationState : undefined,\n onSortingChange: setSorting,\n onGlobalFilterChange: setGlobalFilter,\n globalFilterFn: (row, columnId, filterValue) => {\n const checkFilterMatchesCell = (cellValue: string) =>\n cellValue.toLowerCase().includes(filterValue.toLowerCase())\n\n const value = row.getValue(columnId)\n switch (typeof value) {\n case 'string':\n return checkFilterMatchesCell(value)\n case 'boolean':\n case 'number':\n return checkFilterMatchesCell(String(value))\n default:\n return false\n }\n }\n })\n\n const value: DataTableContextType = React.useMemo(() => {\n return {\n ...table,\n columns,\n data,\n setData,\n setIsSortable,\n applyPagination,\n getTotalRows,\n isSortable,\n asyncDataState,\n runAsyncData,\n enableRowSelection,\n rowSelection,\n tableId: tableId.current\n }\n }, [\n table,\n applyPagination,\n getTotalRows,\n isSortable,\n enableRowSelection,\n tableId\n ])\n\n return (\n <DataTableContext.Provider value={value}>\n {children}\n </DataTableContext.Provider>\n )\n}\n\nexport const useDataTable = <T extends Record<string, unknown>>() => {\n const context = React.useContext(DataTableContext) as DataTableContextType<T>\n\n if (!context)\n throw new Error(\n 'useDataTable can only be called from inside a DataTableProvider'\n )\n\n return context\n}\n"],"names":["DataTableContext","React","DataTableProvider","columns","dataProp","getAsyncData","defaultSort","initialState","enableRowSelection","onRowSelectionChange","children","_a","tableId","uuid","data","setData","rowSelection","setRowSelection","expanded","setExpanded","isPaginated","applyPagination","paginationState","setPaginationState","usePagination","asyncDataState","setAsyncDataState","AsyncDataState","globalFilter","setGlobalFilter","setIsSortable","isSortable","sorting","setSorting","useSortByColumn","runAsyncData","overrideAsyncDataOptions","newData","getNewAsyncData","useDeepCompareEffect","getTotalRows","table","useReactTable","row","updaterOrValue","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","getExpandedRowModel","columnId","filterValue","checkFilterMatchesCell","cellValue","value","useDataTable","context"],"mappings":"keAiCA,MAAMA,EACJC,EAAM,cAAoD,IAAI,EAcnDC,EAAoB,CAAC,CAChC,QAAAC,EACA,KAAMC,EAAW,CAAA,EACjB,aAAAC,EACA,YAAAC,EACA,aAAAC,EAAe,OACf,mBAAAC,EACA,qBAAAC,EACA,SAAAC,CACF,IAA2C,CAzD3C,IAAAC,EA0DE,MAAMC,EAAUX,EAAM,OAAOY,GAAM,EAE7B,CAACC,EAAMC,CAAO,EAAId,EAAM,SAA2B,CACvD,QAASG,GAAA,KAAAA,EAAY,CAAC,EACtB,OAAOO,EAAAP,GAAA,KAAA,OAAAA,EAAU,SAAV,KAAAO,EAAoB,CAC7B,CAAC,EAEK,CAACK,EAAcC,CAAe,EAAIhB,EAAM,SAA4B,EAAE,EACtE,CAACiB,EAAUC,CAAW,EAAIlB,EAAM,SAAwB,CAAE,CAAA,EAE1D,CAAE,YAAAmB,EAAa,gBAAAC,EAAiB,gBAAAC,EAAiB,mBAAAC,CAAmB,EACxEC,EAAcjB,GAAA,KAAA,OAAAA,EAAc,UAAU,EAElC,CAACkB,EAAgBC,CAAiB,EAAIzB,EAAM,SAChD0B,EAAe,IACjB,EAEM,CAACC,EAAcC,CAAe,EAAI5B,EAAM,SAAiB,EAAE,EAE3D,CAAE,cAAA6B,EAAe,WAAAC,EAAY,QAAAC,EAAS,WAAAC,CAAW,EACrDC,EAAgB5B,CAAW,EAEvB6B,EAAelC,EAAM,YACzB,MAAOmC,GAAyD,CAC9D,GAAK/B,EAEL,GAAI,CACFqB,EAAkBC,EAAe,OAAO,EAExC,MAAMU,EAAU,MAAMC,EACpBjC,EACA+B,EACAd,EACAU,EACAJ,CACF,EAEAb,EAAQsB,CAA2B,EACnCX,EAAkBC,EAAe,SAAS,CAC5C,MAAE,CACAD,EAAkBC,EAAe,QAAQ,CAC3C,CACF,EACA,CACEtB,EACAiB,GAAA,KAAAA,OAAAA,EAAiB,UACjBA,GAAA,KAAAA,OAAAA,EAAiB,SACjBU,EACAJ,CACF,CACF,EAEA3B,EAAM,UAAU,IAAM,CACpBkC,EAAa,CAAE,CAAA,CACjB,EAAG,CAACA,CAAY,CAAC,EAEjBI,EAAqB,IAAM,CACrB,CAACnC,GAELW,EAAQ,CAAE,QAASX,EAAU,MAAOA,EAAS,MAAO,CAAC,CACvD,EAAG,CAACA,CAAQ,CAAC,EAEb,MAAMoC,EAAe,IAAM1B,EAAK,MAE1B2B,EAAQC,EAAuB,CACnC,QAAAvC,EACA,KAAMW,EAAK,QACX,UAAWQ,EACP,KAAK,KAAKkB,EAAa,EAAIlB,EAAgB,QAAQ,EACnD,GACJ,aAAcf,EACd,MAAO,CACL,QAAAyB,EACA,aAAAJ,EACA,WAAYN,EACZ,aAAAN,EACA,SAAAE,CACF,EACA,iBAAkBb,GAAgBe,EAClC,cAAef,GAAgBe,EAC/B,cAAeK,IAAmBE,EAAe,QACjD,mBAAoB,CAACtB,EACrB,mBAAAG,EACA,iBAAkBW,EAClB,WAAawB,GAAsBA,EAAI,QACvC,qBAAuBC,GAAmB,CACpCnC,GAAsBA,EAAqBmC,CAAc,EAC7D3B,EAAgB2B,CAAc,CAChC,EACA,gBAAiBC,IACjB,sBAAuBzB,EAAc0B,EAA0B,EAAA,OAC/D,kBACEf,GAAcC,EAAQ,OAASe,EAAsB,EAAA,OACvD,oBAAqBC,IACrB,oBAAqBC,EAAoB,EACzC,mBAAoB7B,EAAcG,EAAqB,OACvD,gBAAiBU,EACjB,qBAAsBJ,EACtB,eAAgB,CAACc,EAAKO,EAAUC,IAAgB,CAC9C,MAAMC,EAA0BC,GAC9BA,EAAU,YAAY,EAAE,SAASF,EAAY,YAAA,CAAa,EAEtDG,EAAQX,EAAI,SAASO,CAAQ,EACnC,OAAQ,OAAOI,OACR,SACH,OAAOF,EAAuBE,CAAK,MAChC,cACA,SACH,OAAOF,EAAuB,OAAOE,CAAK,CAAC,UAE3C,MAAO,GAEb,CACF,CAAC,EAEKA,EAA8BrD,EAAM,QAAQ,KACzC,CACL,GAAGwC,EACH,QAAAtC,EACA,KAAAW,EACA,QAAAC,EACA,cAAAe,EACA,gBAAAT,EACA,aAAAmB,EACA,WAAAT,EACA,eAAAN,EACA,aAAAU,EACA,mBAAA3B,EACA,aAAAQ,EACA,QAASJ,EAAQ,OACnB,GACC,CACD6B,EACApB,EACAmB,EACAT,EACAvB,EACAI,CACF,CAAC,EAED,OACEX,EAAA,cAACD,EAAiB,SAAjB,CAA0B,MAAOsD,CAAAA,EAC/B5C,CACH,CAEJ,EAEa6C,EAAe,IAAyC,CACnE,MAAMC,EAAUvD,EAAM,WAAWD,CAAgB,EAEjD,GAAI,CAACwD,EACH,MAAM,IAAI,MACR,iEACF,EAEF,OAAOA,CACT"}