@qualcomm-ui/core 1.0.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/LICENSE.txt +31 -0
- package/dist/accordion/accordion.api.d.ts +4 -0
- package/dist/accordion/accordion.api.d.ts.map +1 -0
- package/dist/accordion/accordion.machine.d.ts +4 -0
- package/dist/accordion/accordion.machine.d.ts.map +1 -0
- package/dist/accordion/accordion.props.d.ts +3 -0
- package/dist/accordion/accordion.props.d.ts.map +1 -0
- package/dist/accordion/accordion.types.d.ts +155 -0
- package/dist/accordion/accordion.types.d.ts.map +1 -0
- package/dist/accordion/index.cjs +2 -0
- package/dist/accordion/index.cjs.map +7 -0
- package/dist/accordion/index.d.ts +5 -0
- package/dist/accordion/index.d.ts.map +1 -0
- package/dist/accordion/index.js +2 -0
- package/dist/accordion/index.js.map +7 -0
- package/dist/accordion/internal/accordion.dom.d.ts +10 -0
- package/dist/accordion/internal/accordion.dom.d.ts.map +1 -0
- package/dist/accordion/internal/index.d.ts +2 -0
- package/dist/accordion/internal/index.d.ts.map +1 -0
- package/dist/action-group/action-group.d.ts +6 -0
- package/dist/action-group/action-group.d.ts.map +1 -0
- package/dist/action-group/index.cjs +2 -0
- package/dist/action-group/index.cjs.map +7 -0
- package/dist/action-group/index.d.ts +2 -0
- package/dist/action-group/index.d.ts.map +1 -0
- package/dist/action-group/index.js +2 -0
- package/dist/action-group/index.js.map +7 -0
- package/dist/avatar/avatar.api.d.ts +4 -0
- package/dist/avatar/avatar.api.d.ts.map +1 -0
- package/dist/avatar/avatar.machine.d.ts +4 -0
- package/dist/avatar/avatar.machine.d.ts.map +1 -0
- package/dist/avatar/avatar.props.d.ts +3 -0
- package/dist/avatar/avatar.props.d.ts.map +1 -0
- package/dist/avatar/avatar.types.d.ts +55 -0
- package/dist/avatar/avatar.types.d.ts.map +1 -0
- package/dist/avatar/index.cjs +2 -0
- package/dist/avatar/index.cjs.map +7 -0
- package/dist/avatar/index.d.ts +5 -0
- package/dist/avatar/index.d.ts.map +1 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/index.js.map +7 -0
- package/dist/avatar/internal/avatar.dom.d.ts +12 -0
- package/dist/avatar/internal/avatar.dom.d.ts.map +1 -0
- package/dist/avatar/internal/index.d.ts +2 -0
- package/dist/avatar/internal/index.d.ts.map +1 -0
- package/dist/checkbox/checkbox.api.d.ts +4 -0
- package/dist/checkbox/checkbox.api.d.ts.map +1 -0
- package/dist/checkbox/checkbox.machine.d.ts +4 -0
- package/dist/checkbox/checkbox.machine.d.ts.map +1 -0
- package/dist/checkbox/checkbox.props.d.ts +3 -0
- package/dist/checkbox/checkbox.props.d.ts.map +1 -0
- package/dist/checkbox/checkbox.types.d.ts +165 -0
- package/dist/checkbox/checkbox.types.d.ts.map +1 -0
- package/dist/checkbox/index.cjs +2 -0
- package/dist/checkbox/index.cjs.map +7 -0
- package/dist/checkbox/index.d.ts +5 -0
- package/dist/checkbox/index.d.ts.map +1 -0
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.js.map +7 -0
- package/dist/checkbox/internal/checkbox.dom.d.ts +7 -0
- package/dist/checkbox/internal/checkbox.dom.d.ts.map +1 -0
- package/dist/checkbox/internal/index.d.ts +2 -0
- package/dist/checkbox/internal/index.d.ts.map +1 -0
- package/dist/collapsible/collapsible.api.d.ts +4 -0
- package/dist/collapsible/collapsible.api.d.ts.map +1 -0
- package/dist/collapsible/collapsible.machine.d.ts +4 -0
- package/dist/collapsible/collapsible.machine.d.ts.map +1 -0
- package/dist/collapsible/collapsible.props.d.ts +4 -0
- package/dist/collapsible/collapsible.props.d.ts.map +1 -0
- package/dist/collapsible/collapsible.types.d.ts +129 -0
- package/dist/collapsible/collapsible.types.d.ts.map +1 -0
- package/dist/collapsible/index.cjs +2 -0
- package/dist/collapsible/index.cjs.map +7 -0
- package/dist/collapsible/index.d.ts +5 -0
- package/dist/collapsible/index.d.ts.map +1 -0
- package/dist/collapsible/index.js +2 -0
- package/dist/collapsible/index.js.map +7 -0
- package/dist/collapsible/internal/collapsible.dom.d.ts +5 -0
- package/dist/collapsible/internal/collapsible.dom.d.ts.map +1 -0
- package/dist/collapsible/internal/index.d.ts +2 -0
- package/dist/collapsible/internal/index.d.ts.map +1 -0
- package/dist/combobox/combobox.api.d.ts +4 -0
- package/dist/combobox/combobox.api.d.ts.map +1 -0
- package/dist/combobox/combobox.collection.d.ts +4 -0
- package/dist/combobox/combobox.collection.d.ts.map +1 -0
- package/dist/combobox/combobox.machine.d.ts +4 -0
- package/dist/combobox/combobox.machine.d.ts.map +1 -0
- package/dist/combobox/combobox.props.d.ts +4 -0
- package/dist/combobox/combobox.props.d.ts.map +1 -0
- package/dist/combobox/combobox.types.d.ts +631 -0
- package/dist/combobox/combobox.types.d.ts.map +1 -0
- package/dist/combobox/index.cjs +2 -0
- package/dist/combobox/index.cjs.map +7 -0
- package/dist/combobox/index.d.ts +6 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.js.map +7 -0
- package/dist/combobox/internal/combobox.dom.d.ts +13 -0
- package/dist/combobox/internal/combobox.dom.d.ts.map +1 -0
- package/dist/combobox/internal/index.d.ts +2 -0
- package/dist/combobox/internal/index.d.ts.map +1 -0
- package/dist/dialog/dialog.api.d.ts +4 -0
- package/dist/dialog/dialog.api.d.ts.map +1 -0
- package/dist/dialog/dialog.machine.d.ts +4 -0
- package/dist/dialog/dialog.machine.d.ts.map +1 -0
- package/dist/dialog/dialog.props.d.ts +4 -0
- package/dist/dialog/dialog.props.d.ts.map +1 -0
- package/dist/dialog/dialog.types.d.ts +184 -0
- package/dist/dialog/dialog.types.d.ts.map +1 -0
- package/dist/dialog/index.cjs +2 -0
- package/dist/dialog/index.cjs.map +7 -0
- package/dist/dialog/index.d.ts +5 -0
- package/dist/dialog/index.d.ts.map +1 -0
- package/dist/dialog/index.js +2 -0
- package/dist/dialog/index.js.map +7 -0
- package/dist/dialog/internal/dialog.dom.d.ts +5 -0
- package/dist/dialog/internal/dialog.dom.d.ts.map +1 -0
- package/dist/dialog/internal/index.d.ts +2 -0
- package/dist/dialog/internal/index.d.ts.map +1 -0
- package/dist/dnd/dnd.types.d.ts +13 -0
- package/dist/dnd/dnd.types.d.ts.map +1 -0
- package/dist/dnd/index.cjs +2 -0
- package/dist/dnd/index.cjs.map +7 -0
- package/dist/dnd/index.d.ts +2 -0
- package/dist/dnd/index.d.ts.map +1 -0
- package/dist/dnd/index.js +1 -0
- package/dist/dnd/index.js.map +7 -0
- package/dist/field/field.types.d.ts +87 -0
- package/dist/field/field.types.d.ts.map +1 -0
- package/dist/field/index.cjs +2 -0
- package/dist/field/index.cjs.map +7 -0
- package/dist/field/index.d.ts +2 -0
- package/dist/field/index.d.ts.map +1 -0
- package/dist/field/index.js +1 -0
- package/dist/field/index.js.map +7 -0
- package/dist/fieldset/fieldset.types.d.ts +49 -0
- package/dist/fieldset/fieldset.types.d.ts.map +1 -0
- package/dist/fieldset/index.cjs +2 -0
- package/dist/fieldset/index.cjs.map +7 -0
- package/dist/fieldset/index.d.ts +2 -0
- package/dist/fieldset/index.d.ts.map +1 -0
- package/dist/fieldset/index.js +1 -0
- package/dist/fieldset/index.js.map +7 -0
- package/dist/inline-notification/index.cjs +2 -0
- package/dist/inline-notification/index.cjs.map +7 -0
- package/dist/inline-notification/index.d.ts +5 -0
- package/dist/inline-notification/index.d.ts.map +1 -0
- package/dist/inline-notification/index.js +2 -0
- package/dist/inline-notification/index.js.map +7 -0
- package/dist/inline-notification/inline-notification.api.d.ts +4 -0
- package/dist/inline-notification/inline-notification.api.d.ts.map +1 -0
- package/dist/inline-notification/inline-notification.machine.d.ts +4 -0
- package/dist/inline-notification/inline-notification.machine.d.ts.map +1 -0
- package/dist/inline-notification/inline-notification.props.d.ts +7 -0
- package/dist/inline-notification/inline-notification.props.d.ts.map +1 -0
- package/dist/inline-notification/inline-notification.types.d.ts +76 -0
- package/dist/inline-notification/inline-notification.types.d.ts.map +1 -0
- package/dist/inline-notification/internal/index.d.ts +2 -0
- package/dist/inline-notification/internal/index.d.ts.map +1 -0
- package/dist/inline-notification/internal/inline-notification.dom.d.ts +4 -0
- package/dist/inline-notification/internal/inline-notification.dom.d.ts.map +1 -0
- package/dist/input/index.cjs +2 -0
- package/dist/input/index.cjs.map +7 -0
- package/dist/input/index.d.ts +2 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +1 -0
- package/dist/input/index.js.map +7 -0
- package/dist/input/input.types.d.ts +66 -0
- package/dist/input/input.types.d.ts.map +1 -0
- package/dist/menu/index.cjs +2 -0
- package/dist/menu/index.cjs.map +7 -0
- package/dist/menu/index.d.ts +5 -0
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/menu/index.js +2 -0
- package/dist/menu/index.js.map +7 -0
- package/dist/menu/internal/index.d.ts +2 -0
- package/dist/menu/internal/index.d.ts.map +1 -0
- package/dist/menu/internal/menu.dom.d.ts +33 -0
- package/dist/menu/internal/menu.dom.d.ts.map +1 -0
- package/dist/menu/menu.api.d.ts +4 -0
- package/dist/menu/menu.api.d.ts.map +1 -0
- package/dist/menu/menu.machine.d.ts +4 -0
- package/dist/menu/menu.machine.d.ts.map +1 -0
- package/dist/menu/menu.props.d.ts +8 -0
- package/dist/menu/menu.props.d.ts.map +1 -0
- package/dist/menu/menu.types.d.ts +482 -0
- package/dist/menu/menu.types.d.ts.map +1 -0
- package/dist/number-input/index.cjs +2 -0
- package/dist/number-input/index.cjs.map +7 -0
- package/dist/number-input/index.d.ts +6 -0
- package/dist/number-input/index.d.ts.map +1 -0
- package/dist/number-input/index.js +2 -0
- package/dist/number-input/index.js.map +7 -0
- package/dist/number-input/internal/index.d.ts +2 -0
- package/dist/number-input/internal/index.d.ts.map +1 -0
- package/dist/number-input/internal/number-input.dom.d.ts +10 -0
- package/dist/number-input/internal/number-input.dom.d.ts.map +1 -0
- package/dist/number-input/number-input.api.d.ts +4 -0
- package/dist/number-input/number-input.api.d.ts.map +1 -0
- package/dist/number-input/number-input.machine.d.ts +4 -0
- package/dist/number-input/number-input.machine.d.ts.map +1 -0
- package/dist/number-input/number-input.props.d.ts +4 -0
- package/dist/number-input/number-input.props.d.ts.map +1 -0
- package/dist/number-input/number-input.types.d.ts +395 -0
- package/dist/number-input/number-input.types.d.ts.map +1 -0
- package/dist/number-input/number-input.utils.d.ts +11 -0
- package/dist/number-input/number-input.utils.d.ts.map +1 -0
- package/dist/overlay-panel/index.cjs.map +7 -0
- package/dist/overlay-panel/index.d.ts +2 -0
- package/dist/overlay-panel/index.d.ts.map +1 -0
- package/dist/overlay-panel/overlay-panel.types.d.ts +2 -0
- package/dist/overlay-panel/overlay-panel.types.d.ts.map +1 -0
- package/dist/pagination/index.cjs +2 -0
- package/dist/pagination/index.cjs.map +7 -0
- package/dist/pagination/index.d.ts +5 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +2 -0
- package/dist/pagination/index.js.map +7 -0
- package/dist/pagination/pagination.api.d.ts +4 -0
- package/dist/pagination/pagination.api.d.ts.map +1 -0
- package/dist/pagination/pagination.machine.d.ts +4 -0
- package/dist/pagination/pagination.machine.d.ts.map +1 -0
- package/dist/pagination/pagination.props.d.ts +3 -0
- package/dist/pagination/pagination.props.d.ts.map +1 -0
- package/dist/pagination/pagination.types.d.ts +214 -0
- package/dist/pagination/pagination.types.d.ts.map +1 -0
- package/dist/password-input/index.cjs +2 -0
- package/dist/password-input/index.cjs.map +7 -0
- package/dist/password-input/index.d.ts +5 -0
- package/dist/password-input/index.d.ts.map +1 -0
- package/dist/password-input/index.js +2 -0
- package/dist/password-input/index.js.map +7 -0
- package/dist/password-input/internal/index.d.ts +2 -0
- package/dist/password-input/internal/index.d.ts.map +1 -0
- package/dist/password-input/internal/password.dom.d.ts +7 -0
- package/dist/password-input/internal/password.dom.d.ts.map +1 -0
- package/dist/password-input/password-input.api.d.ts +4 -0
- package/dist/password-input/password-input.api.d.ts.map +1 -0
- package/dist/password-input/password-input.machine.d.ts +4 -0
- package/dist/password-input/password-input.machine.d.ts.map +1 -0
- package/dist/password-input/password-input.props.d.ts +3 -0
- package/dist/password-input/password-input.props.d.ts.map +1 -0
- package/dist/password-input/password-input.types.d.ts +172 -0
- package/dist/password-input/password-input.types.d.ts.map +1 -0
- package/dist/popover/index.cjs +2 -0
- package/dist/popover/index.cjs.map +7 -0
- package/dist/popover/index.d.ts +5 -0
- package/dist/popover/index.d.ts.map +1 -0
- package/dist/popover/index.js +2 -0
- package/dist/popover/index.js.map +7 -0
- package/dist/popover/internal/index.d.ts +2 -0
- package/dist/popover/internal/index.d.ts.map +1 -0
- package/dist/popover/internal/popover.dom.d.ts +8 -0
- package/dist/popover/internal/popover.dom.d.ts.map +1 -0
- package/dist/popover/popover.api.d.ts +4 -0
- package/dist/popover/popover.api.d.ts.map +1 -0
- package/dist/popover/popover.machine.d.ts +4 -0
- package/dist/popover/popover.machine.d.ts.map +1 -0
- package/dist/popover/popover.props.d.ts +3 -0
- package/dist/popover/popover.props.d.ts.map +1 -0
- package/dist/popover/popover.types.d.ts +233 -0
- package/dist/popover/popover.types.d.ts.map +1 -0
- package/dist/presence/index.cjs +2 -0
- package/dist/presence/index.cjs.map +7 -0
- package/dist/presence/index.d.ts +5 -0
- package/dist/presence/index.d.ts.map +1 -0
- package/dist/presence/index.js +2 -0
- package/dist/presence/index.js.map +7 -0
- package/dist/presence/presence.api.d.ts +4 -0
- package/dist/presence/presence.api.d.ts.map +1 -0
- package/dist/presence/presence.machine.d.ts +4 -0
- package/dist/presence/presence.machine.d.ts.map +1 -0
- package/dist/presence/presence.props.d.ts +6 -0
- package/dist/presence/presence.props.d.ts.map +1 -0
- package/dist/presence/presence.types.d.ts +94 -0
- package/dist/presence/presence.types.d.ts.map +1 -0
- package/dist/progress/index.cjs +2 -0
- package/dist/progress/index.cjs.map +7 -0
- package/dist/progress/index.d.ts +5 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.js.map +7 -0
- package/dist/progress/internal/index.d.ts +2 -0
- package/dist/progress/internal/index.d.ts.map +1 -0
- package/dist/progress/internal/progress.dom.d.ts +4 -0
- package/dist/progress/internal/progress.dom.d.ts.map +1 -0
- package/dist/progress/progress.api.d.ts +4 -0
- package/dist/progress/progress.api.d.ts.map +1 -0
- package/dist/progress/progress.machine.d.ts +4 -0
- package/dist/progress/progress.machine.d.ts.map +1 -0
- package/dist/progress/progress.props.d.ts +4 -0
- package/dist/progress/progress.props.d.ts.map +1 -0
- package/dist/progress/progress.types.d.ts +182 -0
- package/dist/progress/progress.types.d.ts.map +1 -0
- package/dist/radio/index.cjs +2 -0
- package/dist/radio/index.cjs.map +7 -0
- package/dist/radio/index.d.ts +5 -0
- package/dist/radio/index.d.ts.map +1 -0
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.js.map +7 -0
- package/dist/radio/internal/index.d.ts +2 -0
- package/dist/radio/internal/index.d.ts.map +1 -0
- package/dist/radio/internal/radio.dom.d.ts +10 -0
- package/dist/radio/internal/radio.dom.d.ts.map +1 -0
- package/dist/radio/radio.api.d.ts +4 -0
- package/dist/radio/radio.api.d.ts.map +1 -0
- package/dist/radio/radio.machine.d.ts +4 -0
- package/dist/radio/radio.machine.d.ts.map +1 -0
- package/dist/radio/radio.props.d.ts +4 -0
- package/dist/radio/radio.props.d.ts.map +1 -0
- package/dist/radio/radio.types.d.ts +233 -0
- package/dist/radio/radio.types.d.ts.map +1 -0
- package/dist/segmented-control/index.cjs +2 -0
- package/dist/segmented-control/index.cjs.map +7 -0
- package/dist/segmented-control/index.d.ts +5 -0
- package/dist/segmented-control/index.d.ts.map +1 -0
- package/dist/segmented-control/index.js +2 -0
- package/dist/segmented-control/index.js.map +7 -0
- package/dist/segmented-control/internal/index.d.ts +2 -0
- package/dist/segmented-control/internal/index.d.ts.map +1 -0
- package/dist/segmented-control/internal/segmented-control.dom.d.ts +7 -0
- package/dist/segmented-control/internal/segmented-control.dom.d.ts.map +1 -0
- package/dist/segmented-control/segmented-control.api.d.ts +4 -0
- package/dist/segmented-control/segmented-control.api.d.ts.map +1 -0
- package/dist/segmented-control/segmented-control.machine.d.ts +4 -0
- package/dist/segmented-control/segmented-control.machine.d.ts.map +1 -0
- package/dist/segmented-control/segmented-control.props.d.ts +4 -0
- package/dist/segmented-control/segmented-control.props.d.ts.map +1 -0
- package/dist/segmented-control/segmented-control.types.d.ts +103 -0
- package/dist/segmented-control/segmented-control.types.d.ts.map +1 -0
- package/dist/select/index.cjs +2 -0
- package/dist/select/index.cjs.map +7 -0
- package/dist/select/index.d.ts +6 -0
- package/dist/select/index.d.ts.map +1 -0
- package/dist/select/index.js +2 -0
- package/dist/select/index.js.map +7 -0
- package/dist/select/internal/index.d.ts +2 -0
- package/dist/select/internal/index.d.ts.map +1 -0
- package/dist/select/internal/select.dom.d.ts +9 -0
- package/dist/select/internal/select.dom.d.ts.map +1 -0
- package/dist/select/select.api.d.ts +4 -0
- package/dist/select/select.api.d.ts.map +1 -0
- package/dist/select/select.collection.d.ts +4 -0
- package/dist/select/select.collection.d.ts.map +1 -0
- package/dist/select/select.machine.d.ts +4 -0
- package/dist/select/select.machine.d.ts.map +1 -0
- package/dist/select/select.props.d.ts +3 -0
- package/dist/select/select.props.d.ts.map +1 -0
- package/dist/select/select.types.d.ts +582 -0
- package/dist/select/select.types.d.ts.map +1 -0
- package/dist/side-nav/index.cjs +2 -0
- package/dist/side-nav/index.cjs.map +7 -0
- package/dist/side-nav/index.d.ts +5 -0
- package/dist/side-nav/index.d.ts.map +1 -0
- package/dist/side-nav/index.js +2 -0
- package/dist/side-nav/index.js.map +7 -0
- package/dist/side-nav/internal/index.d.ts +2 -0
- package/dist/side-nav/internal/index.d.ts.map +1 -0
- package/dist/side-nav/internal/side-nav.dom.d.ts +5 -0
- package/dist/side-nav/internal/side-nav.dom.d.ts.map +1 -0
- package/dist/side-nav/side-nav.api.d.ts +4 -0
- package/dist/side-nav/side-nav.api.d.ts.map +1 -0
- package/dist/side-nav/side-nav.machine.d.ts +4 -0
- package/dist/side-nav/side-nav.machine.d.ts.map +1 -0
- package/dist/side-nav/side-nav.props.d.ts +4 -0
- package/dist/side-nav/side-nav.props.d.ts.map +1 -0
- package/dist/side-nav/side-nav.types.d.ts +108 -0
- package/dist/side-nav/side-nav.types.d.ts.map +1 -0
- package/dist/slider/index.cjs +2 -0
- package/dist/slider/index.cjs.map +7 -0
- package/dist/slider/index.d.ts +5 -0
- package/dist/slider/index.d.ts.map +1 -0
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.js.map +7 -0
- package/dist/slider/slider.api.d.ts +4 -0
- package/dist/slider/slider.api.d.ts.map +1 -0
- package/dist/slider/slider.dom.d.ts +18 -0
- package/dist/slider/slider.dom.d.ts.map +1 -0
- package/dist/slider/slider.machine.d.ts +4 -0
- package/dist/slider/slider.machine.d.ts.map +1 -0
- package/dist/slider/slider.props.d.ts +4 -0
- package/dist/slider/slider.props.d.ts.map +1 -0
- package/dist/slider/slider.style.d.ts +21 -0
- package/dist/slider/slider.style.d.ts.map +1 -0
- package/dist/slider/slider.types.d.ts +449 -0
- package/dist/slider/slider.types.d.ts.map +1 -0
- package/dist/slider/slider.utils.d.ts +17 -0
- package/dist/slider/slider.utils.d.ts.map +1 -0
- package/dist/switch/index.cjs +2 -0
- package/dist/switch/index.cjs.map +7 -0
- package/dist/switch/index.d.ts +5 -0
- package/dist/switch/index.d.ts.map +1 -0
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.js.map +7 -0
- package/dist/switch/internal/index.d.ts +2 -0
- package/dist/switch/internal/index.d.ts.map +1 -0
- package/dist/switch/internal/switch.dom.d.ts +7 -0
- package/dist/switch/internal/switch.dom.d.ts.map +1 -0
- package/dist/switch/switch.api.d.ts +4 -0
- package/dist/switch/switch.api.d.ts.map +1 -0
- package/dist/switch/switch.machine.d.ts +4 -0
- package/dist/switch/switch.machine.d.ts.map +1 -0
- package/dist/switch/switch.props.d.ts +4 -0
- package/dist/switch/switch.props.d.ts.map +1 -0
- package/dist/switch/switch.types.d.ts +157 -0
- package/dist/switch/switch.types.d.ts.map +1 -0
- package/dist/table/aggregation-fns.d.ts +14 -0
- package/dist/table/aggregation-fns.d.ts.map +1 -0
- package/dist/table/column-helper.d.ts +9 -0
- package/dist/table/column-helper.d.ts.map +1 -0
- package/dist/table/core/cell.d.ts +46 -0
- package/dist/table/core/cell.d.ts.map +1 -0
- package/dist/table/core/column.d.ts +55 -0
- package/dist/table/core/column.d.ts.map +1 -0
- package/dist/table/core/headers.d.ts +196 -0
- package/dist/table/core/headers.d.ts.map +1 -0
- package/dist/table/core/row.d.ts +76 -0
- package/dist/table/core/row.d.ts.map +1 -0
- package/dist/table/core/table.d.ts +244 -0
- package/dist/table/core/table.d.ts.map +1 -0
- package/dist/table/dom.d.ts +3 -0
- package/dist/table/dom.d.ts.map +1 -0
- package/dist/table/features/column-sizing.d.ts +168 -0
- package/dist/table/features/column-sizing.d.ts.map +1 -0
- package/dist/table/features/expanding.d.ts +138 -0
- package/dist/table/features/expanding.d.ts.map +1 -0
- package/dist/table/features/filters.d.ts +309 -0
- package/dist/table/features/filters.d.ts.map +1 -0
- package/dist/table/features/grouping.d.ts +182 -0
- package/dist/table/features/grouping.d.ts.map +1 -0
- package/dist/table/features/ordering.d.ts +33 -0
- package/dist/table/features/ordering.d.ts.map +1 -0
- package/dist/table/features/pagination.d.ts +127 -0
- package/dist/table/features/pagination.d.ts.map +1 -0
- package/dist/table/features/pinning.d.ts +227 -0
- package/dist/table/features/pinning.d.ts.map +1 -0
- package/dist/table/features/row-selection.d.ts +148 -0
- package/dist/table/features/row-selection.d.ts.map +1 -0
- package/dist/table/features/sorting.d.ts +194 -0
- package/dist/table/features/sorting.d.ts.map +1 -0
- package/dist/table/features/visibility.d.ts +119 -0
- package/dist/table/features/visibility.d.ts.map +1 -0
- package/dist/table/filter-fns.d.ts +4 -0
- package/dist/table/filter-fns.d.ts.map +1 -0
- package/dist/table/index.cjs +5 -0
- package/dist/table/index.cjs.map +7 -0
- package/dist/table/index.d.ts +32 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +5 -0
- package/dist/table/index.js.map +7 -0
- package/dist/table/sorting-fns.d.ts +5 -0
- package/dist/table/sorting-fns.d.ts.map +1 -0
- package/dist/table/types.d.ts +142 -0
- package/dist/table/types.d.ts.map +1 -0
- package/dist/table/utils/filter-rows-utils.d.ts +5 -0
- package/dist/table/utils/filter-rows-utils.d.ts.map +1 -0
- package/dist/table/utils/get-core-row-model.d.ts +3 -0
- package/dist/table/utils/get-core-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-expanded-row-model.d.ts +8 -0
- package/dist/table/utils/get-expanded-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-faceted-min-max-values.d.ts +3 -0
- package/dist/table/utils/get-faceted-min-max-values.d.ts.map +1 -0
- package/dist/table/utils/get-faceted-row-model.d.ts +3 -0
- package/dist/table/utils/get-faceted-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-faceted-unique-values.d.ts +3 -0
- package/dist/table/utils/get-faceted-unique-values.d.ts.map +1 -0
- package/dist/table/utils/get-filtered-row-model.d.ts +3 -0
- package/dist/table/utils/get-filtered-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-grouped-row-model.d.ts +3 -0
- package/dist/table/utils/get-grouped-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-pagination-row-model.d.ts +3 -0
- package/dist/table/utils/get-pagination-row-model.d.ts.map +1 -0
- package/dist/table/utils/get-sorted-row-model.d.ts +3 -0
- package/dist/table/utils/get-sorted-row-model.d.ts.map +1 -0
- package/dist/table/utils.d.ts +39 -0
- package/dist/table/utils.d.ts.map +1 -0
- package/dist/tabs/index.cjs +2 -0
- package/dist/tabs/index.cjs.map +7 -0
- package/dist/tabs/index.d.ts +5 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.js.map +7 -0
- package/dist/tabs/internal/index.d.ts +2 -0
- package/dist/tabs/internal/index.d.ts.map +1 -0
- package/dist/tabs/internal/tabs.dom.d.ts +42 -0
- package/dist/tabs/internal/tabs.dom.d.ts.map +1 -0
- package/dist/tabs/tabs.api.d.ts +4 -0
- package/dist/tabs/tabs.api.d.ts.map +1 -0
- package/dist/tabs/tabs.machine.d.ts +4 -0
- package/dist/tabs/tabs.machine.d.ts.map +1 -0
- package/dist/tabs/tabs.props.d.ts +4 -0
- package/dist/tabs/tabs.props.d.ts.map +1 -0
- package/dist/tabs/tabs.types.d.ts +256 -0
- package/dist/tabs/tabs.types.d.ts.map +1 -0
- package/dist/text-area/index.cjs +2 -0
- package/dist/text-area/index.cjs.map +7 -0
- package/dist/text-area/index.d.ts +2 -0
- package/dist/text-area/index.d.ts.map +1 -0
- package/dist/text-area/index.js +1 -0
- package/dist/text-area/index.js.map +7 -0
- package/dist/text-input/index.cjs +2 -0
- package/dist/text-input/index.cjs.map +7 -0
- package/dist/text-input/index.d.ts +5 -0
- package/dist/text-input/index.d.ts.map +1 -0
- package/dist/text-input/index.js +2 -0
- package/dist/text-input/index.js.map +7 -0
- package/dist/text-input/internal/index.d.ts +2 -0
- package/dist/text-input/internal/index.d.ts.map +1 -0
- package/dist/text-input/internal/text-input.dom.d.ts +7 -0
- package/dist/text-input/internal/text-input.dom.d.ts.map +1 -0
- package/dist/text-input/text-input.api.d.ts +4 -0
- package/dist/text-input/text-input.api.d.ts.map +1 -0
- package/dist/text-input/text-input.machine.d.ts +4 -0
- package/dist/text-input/text-input.machine.d.ts.map +1 -0
- package/dist/text-input/text-input.props.d.ts +3 -0
- package/dist/text-input/text-input.props.d.ts.map +1 -0
- package/dist/text-input/text-input.types.d.ts +118 -0
- package/dist/text-input/text-input.types.d.ts.map +1 -0
- package/dist/toast/index.cjs +2 -0
- package/dist/toast/index.cjs.map +7 -0
- package/dist/toast/index.d.ts +8 -0
- package/dist/toast/index.d.ts.map +1 -0
- package/dist/toast/index.js +2 -0
- package/dist/toast/index.js.map +7 -0
- package/dist/toast/internal/index.d.ts +2 -0
- package/dist/toast/internal/index.d.ts.map +1 -0
- package/dist/toast/internal/toast.dom.d.ts +10 -0
- package/dist/toast/internal/toast.dom.d.ts.map +1 -0
- package/dist/toast/toast-group.api.d.ts +4 -0
- package/dist/toast/toast-group.api.d.ts.map +1 -0
- package/dist/toast/toast-group.machine.d.ts +4 -0
- package/dist/toast/toast-group.machine.d.ts.map +1 -0
- package/dist/toast/toast.api.d.ts +4 -0
- package/dist/toast/toast.api.d.ts.map +1 -0
- package/dist/toast/toast.machine.d.ts +4 -0
- package/dist/toast/toast.machine.d.ts.map +1 -0
- package/dist/toast/toast.store.d.ts +4 -0
- package/dist/toast/toast.store.d.ts.map +1 -0
- package/dist/toast/toast.types.d.ts +463 -0
- package/dist/toast/toast.types.d.ts.map +1 -0
- package/dist/toast/toast.utils.d.ts +9 -0
- package/dist/toast/toast.utils.d.ts.map +1 -0
- package/dist/tooltip/index.cjs +2 -0
- package/dist/tooltip/index.cjs.map +7 -0
- package/dist/tooltip/index.d.ts +5 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tooltip/index.js +2 -0
- package/dist/tooltip/index.js.map +7 -0
- package/dist/tooltip/tooltip.api.d.ts +4 -0
- package/dist/tooltip/tooltip.api.d.ts.map +1 -0
- package/dist/tooltip/tooltip.machine.d.ts +4 -0
- package/dist/tooltip/tooltip.machine.d.ts.map +1 -0
- package/dist/tooltip/tooltip.props.d.ts +4 -0
- package/dist/tooltip/tooltip.props.d.ts.map +1 -0
- package/dist/tooltip/tooltip.store.d.ts +5 -0
- package/dist/tooltip/tooltip.store.d.ts.map +1 -0
- package/dist/tooltip/tooltip.types.d.ts +122 -0
- package/dist/tooltip/tooltip.types.d.ts.map +1 -0
- package/dist/tree/index.cjs +2 -0
- package/dist/tree/index.cjs.map +7 -0
- package/dist/tree/index.d.ts +6 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +2 -0
- package/dist/tree/index.js.map +7 -0
- package/dist/tree/internal/index.d.ts +3 -0
- package/dist/tree/internal/index.d.ts.map +1 -0
- package/dist/tree/internal/tree.dom.d.ts +8 -0
- package/dist/tree/internal/tree.dom.d.ts.map +1 -0
- package/dist/tree/internal/tree.utils.d.ts +12 -0
- package/dist/tree/internal/tree.utils.d.ts.map +1 -0
- package/dist/tree/tree.api.d.ts +5 -0
- package/dist/tree/tree.api.d.ts.map +1 -0
- package/dist/tree/tree.collection.d.ts +4 -0
- package/dist/tree/tree.collection.d.ts.map +1 -0
- package/dist/tree/tree.machine.d.ts +4 -0
- package/dist/tree/tree.machine.d.ts.map +1 -0
- package/dist/tree/tree.props.d.ts +7 -0
- package/dist/tree/tree.props.d.ts.map +1 -0
- package/dist/tree/tree.types.d.ts +579 -0
- package/dist/tree/tree.types.d.ts.map +1 -0
- package/dist/tsbuildinfo +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/table/index.ts", "../../src/table/dom.ts", "../../src/table/utils.ts", "../../src/table/features/column-sizing.ts", "../../src/table/features/expanding.ts", "../../src/table/filter-fns.ts", "../../src/table/features/filters.ts", "../../src/table/aggregation-fns.ts", "../../src/table/features/grouping.ts", "../../src/table/features/ordering.ts", "../../src/table/features/pagination.ts", "../../src/table/features/pinning.ts", "../../src/table/features/row-selection.ts", "../../src/table/sorting-fns.ts", "../../src/table/features/sorting.ts", "../../src/table/features/visibility.ts", "../../src/table/core/column.ts", "../../src/table/core/headers.ts", "../../src/table/core/table.ts", "../../src/table/core/cell.ts", "../../src/table/core/row.ts", "../../src/table/column-helper.ts", "../../src/table/utils/filter-rows-utils.ts", "../../src/table/utils/get-core-row-model.ts", "../../src/table/utils/get-expanded-row-model.ts", "../../src/table/utils/get-faceted-min-max-values.ts", "../../src/table/utils/get-faceted-row-model.ts", "../../src/table/utils/get-filtered-row-model.ts", "../../src/table/utils/get-grouped-row-model.ts", "../../src/table/utils/get-pagination-row-model.ts", "../../src/table/utils/get-sorted-row-model.ts"],
|
|
4
|
+
"sourcesContent": ["export * from \"./core/table\"\nexport * from \"./core/column\"\nexport * from \"./core/headers\"\nexport * from \"./core/row\"\nexport * from \"./core/cell\"\nexport * from \"./features/column-sizing\"\nexport * from \"./features/expanding\"\nexport * from \"./features/filters\"\nexport * from \"./features/grouping\"\nexport * from \"./features/ordering\"\nexport * from \"./features/pagination\"\nexport * from \"./features/pinning\"\nexport * from \"./features/row-selection\"\nexport * from \"./features/sorting\"\nexport * from \"./features/visibility\"\nexport * from \"./filter-fns\"\nexport * from \"./sorting-fns\"\nexport * from \"./aggregation-fns\"\nexport * from \"./column-helper\"\nexport * from \"./dom\"\nexport * from \"./types\"\nexport * from \"./utils\"\nexport * from \"./utils/filter-rows-utils\"\nexport * from \"./utils/get-core-row-model\"\nexport * from \"./utils/get-expanded-row-model\"\nexport * from \"./utils/get-faceted-min-max-values\"\nexport * from \"./utils/get-faceted-row-model\"\nexport * from \"./utils/get-filtered-row-model\"\nexport * from \"./utils/get-grouped-row-model\"\nexport * from \"./utils/get-pagination-row-model\"\nexport * from \"./utils/get-sorted-row-model\"\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nexport const safeDocument: Document | null =\n typeof document === \"undefined\" ? null : document\nexport const safeWindow: null | Window =\n typeof window === \"undefined\" ? null : window\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableState, Updater} from \"./types\"\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends {[TKey in keyof T]?: any}> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result[\"length\"] extends N\n ? Result\n : ComputeRange<N, [...Result, Result[\"length\"]]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & {length: infer Length}\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail[\"length\"]>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth[\"length\"] extends 5\n ? never\n : unknown extends T\n ? string\n : object extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp> =\n T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\n/**\n * @public\n *\n * @custom () => TValue\n */\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === \"function\"\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop(): void {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown,\n) {\n return (updater: Updater<TableState[K]>): void => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every((val) => typeof val === \"number\")\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[],\n): TNode[] {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach((item) => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n debug?: () => any\n key: any\n onChange?: (result: TResult) => void\n },\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) {\n depTime = Date.now()\n }\n\n const newDeps = getDeps()\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) {\n resultTime = Date.now()\n }\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ` ${str}`\n }\n return str\n }\n\n console.info(\n `%c\u23F1 ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120),\n )}deg 100% 31%);`,\n opts?.key,\n )\n }\n }\n\n return result\n }\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport {safeDocument, safeWindow} from \"../dom\"\nimport type {\n Column,\n Header,\n OnChangeFn,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {makeStateUpdater} from \"../utils\"\n\nimport type {ColumnPinningPosition} from \"./pinning\"\n\nexport interface ColumnSizingTableState {\n columnSizing: ColumnSizingState\n columnSizingInfo: ColumnSizingInfoState\n}\n\nexport type ColumnSizingState = Record<string, number>\n\nexport interface ColumnSizingInfoState {\n columnSizingStart: [string, number][]\n deltaOffset: null | number\n deltaPercentage: null | number\n isResizingColumn: false | string\n startOffset: null | number\n startSize: null | number\n}\n\nexport type ColumnResizeMode = \"onChange\" | \"onEnd\"\n\nexport type ColumnResizeDirection = \"ltr\" | \"rtl\"\n\nexport interface ColumnSizingOptions {\n /**\n * Enables or disables right-to-left support for resizing the column. defaults to\n * 'ltr'.\n */\n columnResizeDirection?: ColumnResizeDirection\n /**\n * Determines when the columnSizing state is updated. `onChange` updates the state\n * when the user is dragging the resize handle. `onEnd` updates the state when the\n * user releases the resize handle.\n */\n columnResizeMode?: ColumnResizeMode\n /**\n * Enables or disables column resizing for the column.\n */\n enableColumnResizing?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnSizing` changes. This overrides the default internal state\n * management, so you will also need to supply `state.columnSizing` from your own\n * managed state.\n */\n onColumnSizingChange?: OnChangeFn<ColumnSizingState>\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnSizingInfo` changes. This overrides the default internal state\n * management, so you will also need to supply `state.columnSizingInfo` from your\n * own managed state.\n */\n onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>\n}\n\nexport type ColumnSizingDefaultOptions = Pick<\n ColumnSizingOptions,\n | \"columnResizeMode\"\n | \"onColumnSizingChange\"\n | \"onColumnSizingInfoChange\"\n | \"columnResizeDirection\"\n>\n\nexport interface ColumnSizingInstance {\n /**\n * If pinning, returns the total size of the center portion of the table by\n * calculating the sum of the sizes of all unpinned/center leaf-columns.\n */\n getCenterTotalSize: () => number\n /**\n * Returns the total size of the left portion of the table by calculating the sum\n * of the sizes of all left leaf-columns.\n */\n getLeftTotalSize: () => number\n /**\n * Returns the total size of the right portion of the table by calculating the sum\n * of the sizes of all right leaf-columns.\n */\n getRightTotalSize: () => number\n /**\n * Returns the total size of the table by calculating the sum of the sizes of all\n * leaf-columns.\n */\n getTotalSize: () => number\n /**\n * Resets column sizing to its initial state. If `defaultState` is `true`, the\n * default state for the table will be used instead of the initialValue provided\n * to the table.\n */\n resetColumnSizing: (defaultState?: boolean) => void\n /**\n * Resets column sizing info to its initial state. If `defaultState` is `true`,\n * the default state for the table will be used instead of the initialValue\n * provided to the table.\n */\n resetHeaderSizeInfo: (defaultState?: boolean) => void\n /**\n * Sets the column sizing state using an updater function or a value. This will\n * trigger the underlying `onColumnSizingChange` function if one is passed to the\n * table options, otherwise the state will be managed automatically by the table.\n */\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n /**\n * Sets the column sizing info state using an updater function or a value. This\n * will trigger the underlying `onColumnSizingInfoChange` function if one is\n * passed to the table options, otherwise the state will be managed automatically\n * by the table.\n */\n setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void\n}\n\nexport interface ColumnSizingColumnDef {\n /**\n * Enables or disables column resizing for the column.\n */\n enableResizing?: boolean\n\n /**\n * The maximum allowed size for the column\n */\n maxSize?: number\n\n /**\n * The minimum allowed size for the column\n */\n minSize?: number\n\n /**\n * The desired size for the column\n */\n size?: number\n}\n\nexport interface ColumnSizingColumn {\n /**\n * Returns `true` if the column can be resized.\n */\n getCanResize: () => boolean\n /**\n * Returns `true` if the column is currently being resized.\n */\n getIsResizing: () => boolean\n /**\n * Returns the current size of the column.\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for\n * standard tables) for the header. This is effectively a sum of the offset\n * measurements of all preceding headers.\n */\n getStart: (position?: ColumnPinningPosition) => number\n /**\n * Resets the column to its initial size.\n */\n resetSize: () => void\n}\n\nexport interface ColumnSizingHeader {\n /**\n * Returns an event handler function that can be used to resize the header. It can\n * be used as an:\n * - `onMouseDown` handler\n * - `onTouchStart` handler\n *\n * The dragging and release events are automatically handled for you.\n */\n getResizeHandler: () => (event: unknown) => void\n /**\n * Returns the current size of the header.\n */\n getSize: () => number\n /**\n * Returns the offset measurement along the row-axis (usually the x-axis for\n * standard tables) for the header. This is effectively a sum of the offset\n * measurements of all preceding headers.\n */\n getStart: (position?: ColumnPinningPosition) => number\n}\n\nexport const defaultColumnSizing: {\n maxSize: number\n minSize: number\n size: number\n} = {\n maxSize: Number.MAX_SAFE_INTEGER,\n minSize: 20,\n size: 150,\n}\n\nconst getDefaultColumnSizingInfoState = (): ColumnSizingInfoState => ({\n columnSizingStart: [],\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n})\n\nexport const ColumnSizing: TableFeature = {\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n column.getSize = () => {\n const columnSize = table.getState().columnSizing[column.id]\n\n return Math.min(\n Math.max(\n column.columnDef.minSize ?? defaultColumnSizing.minSize,\n columnSize ?? column.columnDef.size ?? defaultColumnSizing.size,\n ),\n column.columnDef.maxSize ?? defaultColumnSizing.maxSize,\n )\n }\n column.getStart = (position) => {\n const columns = !position\n ? table.getVisibleLeafColumns()\n : position === \"left\"\n ? table.getLeftVisibleLeafColumns()\n : table.getRightVisibleLeafColumns()\n\n const index = columns.findIndex((d) => d.id === column.id)\n\n if (index > 0) {\n const prevSiblingColumn = columns[index - 1]\n\n return (\n prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize()\n )\n }\n\n return 0\n }\n column.resetSize = () => {\n table.setColumnSizing(({[column.id]: _, ...rest}) => {\n return rest\n })\n }\n column.getCanResize = () => {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (table.options.enableColumnResizing ?? true)\n )\n }\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id\n }\n },\n createHeader: <TData extends RowData, TValue>(\n header: Header<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n header.getSize = () => {\n let sum = 0\n\n const recurse = (header: Header<TData, TValue>) => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse)\n } else {\n sum += header.column.getSize() ?? 0\n }\n }\n\n recurse(header)\n\n return sum\n }\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1]\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize()\n }\n\n return 0\n }\n header.getResizeHandler = () => {\n const column = table.getColumn(header.column.id)\n const canResize = column?.getCanResize()\n\n return (e: unknown) => {\n if (!column || !canResize) {\n return\n }\n\n ;(e as any).persist?.()\n\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g.,2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return\n }\n }\n\n const startSize = header.getSize()\n\n const columnSizingStart: [string, number][] = header\n ? header\n .getLeafHeaders()\n .map((d) => [d.column.id, d.column.getSize()])\n : [[column.id, column.getSize()]]\n\n const clientX = isTouchStartEvent(e)\n ? Math.round(e.touches[0].clientX)\n : (e as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = {}\n\n const updateOffset = (\n eventType: \"move\" | \"end\",\n clientXPos?: number,\n ) => {\n if (typeof clientXPos !== \"number\") {\n return\n }\n\n table.setColumnSizingInfo((old) => {\n const deltaDirection =\n table.options.columnResizeDirection === \"rtl\" ? -1 : 1\n const deltaOffset =\n (clientXPos - (old?.startOffset ?? 0)) * deltaDirection\n const deltaPercentage = Math.max(\n deltaOffset / (old?.startSize ?? 0),\n -0.999999,\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(headerSize + headerSize * deltaPercentage, 0) * 100,\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n table.options.columnResizeMode === \"onChange\" ||\n eventType === \"end\"\n ) {\n table.setColumnSizing((old) => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset(\"move\", clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset(\"end\", clientXPos)\n\n table.setColumnSizingInfo((old) => ({\n ...old,\n columnSizingStart: [],\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n }))\n }\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n safeDocument?.removeEventListener(\n \"mousemove\",\n mouseEvents.moveHandler,\n )\n safeDocument?.removeEventListener(\"mouseup\", mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (e: TouchEvent) => {\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onMove(e.touches[0].clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n safeDocument?.removeEventListener(\n \"touchmove\",\n touchEvents.moveHandler,\n )\n safeDocument?.removeEventListener(\"touchend\", touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? {passive: false}\n : false\n\n if (isTouchStartEvent(e)) {\n safeDocument?.addEventListener(\n \"touchmove\",\n touchEvents.moveHandler,\n passiveIfSupported,\n )\n safeDocument?.addEventListener(\n \"touchend\",\n touchEvents.upHandler,\n passiveIfSupported,\n )\n } else {\n safeDocument?.addEventListener(\n \"mousemove\",\n mouseEvents.moveHandler,\n passiveIfSupported,\n )\n safeDocument?.addEventListener(\n \"mouseup\",\n mouseEvents.upHandler,\n passiveIfSupported,\n )\n }\n\n table.setColumnSizingInfo((old) => ({\n ...old,\n columnSizingStart,\n deltaOffset: 0,\n deltaPercentage: 0,\n isResizingColumn: column.id,\n startOffset: clientX,\n startSize,\n }))\n }\n }\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setColumnSizing = (updater) =>\n table.options.onColumnSizingChange?.(updater)\n table.setColumnSizingInfo = (updater) =>\n table.options.onColumnSizingInfoChange?.(updater)\n table.resetColumnSizing = (defaultState) => {\n table.setColumnSizing(\n defaultState ? {} : (table.initialState.columnSizing ?? {}),\n )\n }\n table.resetHeaderSizeInfo = (defaultState) => {\n table.setColumnSizingInfo(\n defaultState\n ? getDefaultColumnSizingInfoState()\n : (table.initialState.columnSizingInfo ??\n getDefaultColumnSizingInfoState()),\n )\n }\n table.getTotalSize = () =>\n table.getHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getLeftTotalSize = () =>\n table.getLeftHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getCenterTotalSize = () =>\n table.getCenterHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n table.getRightTotalSize = () =>\n table.getRightHeaderGroups()[0]?.headers.reduce((sum, header) => {\n return sum + header.getSize()\n }, 0) ?? 0\n },\n\n getDefaultColumnDef: (): ColumnSizingColumnDef => {\n return defaultColumnSizing\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): ColumnSizingDefaultOptions => {\n return {\n columnResizeDirection: \"ltr\",\n columnResizeMode: \"onEnd\",\n onColumnSizingChange: makeStateUpdater(\"columnSizing\", table),\n onColumnSizingInfoChange: makeStateUpdater(\"columnSizingInfo\", table),\n }\n },\n\n getInitialState: (state): ColumnSizingTableState => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state,\n }\n },\n}\n\nlet passiveSupported: boolean | null = null\nexport function passiveEventSupported(): boolean {\n if (typeof passiveSupported === \"boolean\") {\n return passiveSupported\n }\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n safeWindow?.addEventListener(\"test\", noop, options)\n safeWindow?.removeEventListener(\"test\", noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\nfunction isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === \"touchstart\"\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {RowModel} from \"..\"\nimport type {TableFeature} from \"../core/table\"\nimport type {OnChangeFn, Row, RowData, TableInstance, Updater} from \"../types\"\nimport {makeStateUpdater} from \"../utils\"\n\nexport type ExpandedStateList = Record<string, boolean>\nexport type ExpandedState = true | Record<string, boolean>\nexport interface ExpandedTableState {\n expanded: ExpandedState\n}\n\nexport interface ExpandedRow {\n /**\n * Returns whether the row can be expanded.\n */\n getCanExpand: () => boolean\n /**\n * Returns whether all parent rows of the row are expanded.\n */\n getIsAllParentsExpanded: () => boolean\n /**\n * Returns whether the row is expanded.\n */\n getIsExpanded: () => boolean\n /**\n * Returns a function that can be used to toggle the expanded state of the row.\n * This function can be used to bind to an event handler to a button.\n */\n getToggleExpandedHandler: () => () => void\n /**\n * Toggles the expanded state (or sets it if `expanded` is provided) for the row.\n */\n toggleExpanded: (expanded?: boolean) => void\n}\n\nexport interface ExpandedOptions<TData extends RowData> {\n /**\n * Enable this setting to automatically reset the expanded state of the table when\n * expanding state changes.\n */\n autoResetExpanded?: boolean\n /**\n * Enable/disable expanding for all rows.\n */\n enableExpanding?: boolean\n /**\n * This function is responsible for returning the expanded row model. If this\n * function is not provided, the table will not expand rows. You can use the\n * default exported `getExpandedRowModel` function to get the expanded row model\n * or implement your own.\n */\n getExpandedRowModel?: (\n /** @inheritDoc */\n table: TableInstance<any>,\n ) => () => RowModel<any>\n /**\n * If provided, allows you to override the default behavior of determining whether\n * a row is currently expanded.\n */\n getIsRowExpanded?: (\n /** @inheritDoc */\n row: Row<TData>,\n ) => boolean\n /**\n * If provided, allows you to override the default behavior of determining whether\n * a row can be expanded.\n */\n getRowCanExpand?: (\n /** @inheritDoc */\n row: Row<TData>,\n ) => boolean\n /**\n * Enables manual row expansion. If this is set to `true`, `getExpandedRowModel`\n * will not be used to expand rows and you would be expected to perform the\n * expansion in your own data model. This is useful if you are doing server-side\n * expansion.\n */\n manualExpanding?: boolean\n /**\n * This function is called when the `expanded` table state changes. If a function\n * is provided, you will be responsible for managing this state on your own. To\n * pass the managed state back to the table, use the `tableOptions.state.expanded`\n * option.\n *\n * @inheritDoc\n */\n onExpandedChange?: OnChangeFn<ExpandedState>\n /**\n * If `true` expanded rows will be paginated along with the rest of the table\n * (which means expanded rows may span multiple pages). If `false` expanded rows\n * will not be considered for pagination (which means expanded rows will always\n * render on their parents page. This also means more rows will be rendered than\n * the set page size)\n */\n paginateExpandedRows?: boolean\n}\n\nexport interface ExpandedInstance<TData extends RowData> {\n /** @internal */\n _autoResetExpanded: () => void\n /** @internal */\n _getExpandedRowModel?: () => RowModel<TData>\n /**\n * Returns whether there are any rows that can be expanded.\n */\n getCanSomeRowsExpand: () => boolean\n /**\n * Returns the maximum depth of the expanded rows.\n */\n getExpandedDepth: () => number\n /**\n * Returns the row model after expansion has been applied.\n */\n getExpandedRowModel: () => RowModel<TData>\n /**\n * Returns whether all rows are currently expanded.\n */\n getIsAllRowsExpanded: () => boolean\n /**\n * Returns whether there are any rows that are currently expanded.\n */\n getIsSomeRowsExpanded: () => boolean\n /**\n * Returns the row model before expansion has been applied.\n */\n getPreExpandedRowModel: () => RowModel<TData>\n /**\n * Returns a handler that can be used to toggle the expanded state of all rows.\n * This handler is meant to be used with an `input[type=checkbox]` element.\n */\n getToggleAllRowsExpandedHandler: () => (event: unknown) => void\n /**\n * Resets the expanded state of the table to the initial state.\n */\n resetExpanded: (defaultState?: boolean) => void\n /**\n * Updates the expanded state of the table via an update function or value.\n */\n setExpanded: (updater: Updater<ExpandedState>) => void\n /**\n * Toggles the expanded state for all rows.\n */\n toggleAllRowsExpanded: (expanded?: boolean) => void\n}\n\nexport const Expanding: TableFeature = {\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n ): void => {\n row.toggleExpanded = (expanded) => {\n table.setExpanded((old) => {\n const exists = old === true ? true : !!old?.[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach((rowId) => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const {[row.id]: _, ...rest} = oldExpanded\n return rest\n }\n\n return old\n })\n }\n row.getIsExpanded = () => {\n const expanded = table.getState().expanded\n\n return !!(\n table.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded?.[row.id])\n )\n }\n row.getCanExpand = () => {\n return (\n table.options.getRowCanExpand?.(row) ??\n ((table.options.enableExpanding ?? true) && !!row.subRows?.length)\n )\n }\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true\n let currentRow = row\n\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true)\n isFullyExpanded = currentRow.getIsExpanded()\n }\n\n return isFullyExpanded\n }\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand()\n\n return () => {\n if (!canExpand) {\n return\n }\n row.toggleExpanded()\n }\n }\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetExpanded = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetExpanded ??\n !table.options.manualExpanding\n ) {\n if (queued) {\n return\n }\n queued = true\n table._queue(() => {\n table.resetExpanded()\n queued = false\n })\n }\n }\n table.setExpanded = (updater) => table.options.onExpandedChange?.(updater)\n table.toggleAllRowsExpanded = (expanded) => {\n if (expanded ?? !table.getIsAllRowsExpanded()) {\n table.setExpanded(true)\n } else {\n table.setExpanded({})\n }\n }\n table.resetExpanded = (defaultState) => {\n table.setExpanded(\n defaultState ? {} : (table.initialState?.expanded ?? {}),\n )\n }\n table.getCanSomeRowsExpand = () => {\n return table\n .getPrePaginationRowModel()\n .flatRows.some((row) => row.getCanExpand())\n }\n table.getToggleAllRowsExpandedHandler = () => {\n return (e: unknown) => {\n ;(e as any).persist?.()\n table.toggleAllRowsExpanded()\n }\n }\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded\n return expanded === true || Object.values(expanded).some(Boolean)\n }\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === \"boolean\") {\n return expanded === true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some((row) => !row.getIsExpanded())) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n }\n table.getExpandedDepth = () => {\n let maxDepth = 0\n\n const rowIds =\n table.getState().expanded === true\n ? Object.keys(table.getRowModel().rowsById)\n : Object.keys(table.getState().expanded)\n\n rowIds.forEach((id) => {\n const splitId = id.split(\".\")\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n }\n table.getPreExpandedRowModel = () => table.getSortedRowModel()\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table)\n }\n\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel()\n }\n\n return table._getExpandedRowModel()\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): ExpandedOptions<TData> => {\n return {\n onExpandedChange: makeStateUpdater(\"expanded\", table),\n paginateExpandedRows: true,\n }\n },\n\n getInitialState: (state): ExpandedTableState => {\n return {\n expanded: {},\n ...state,\n }\n },\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {FilterFn} from \"./features/filters\"\n\nconst includesString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string,\n) => {\n const search = filterValue.toLowerCase()\n return Boolean(\n row\n .getValue<string | null>(columnId)\n ?.toString()\n ?.toLowerCase()\n ?.includes(search),\n )\n}\n\nincludesString.autoRemove = (val: any) => testFalsy(val)\n\nconst includesStringSensitive: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string,\n) => {\n return Boolean(\n row.getValue<string | null>(columnId)?.toString()?.includes(filterValue),\n )\n}\n\nincludesStringSensitive.autoRemove = (val: any) => testFalsy(val)\n\nconst equalsString: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: string,\n) => {\n return (\n row.getValue<string | null>(columnId)?.toString()?.toLowerCase() ===\n filterValue?.toLowerCase()\n )\n}\n\nequalsString.autoRemove = (val: any) => testFalsy(val)\n\nconst arrIncludes: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown,\n) => {\n return row.getValue<unknown[]>(columnId)?.includes(filterValue)\n}\n\narrIncludes.autoRemove = (val: any) => testFalsy(val) || !val?.length\n\nconst arrIncludesAll: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[],\n) => {\n return !filterValue.some(\n (val) => !row.getValue<unknown[]>(columnId)?.includes(val),\n )\n}\n\narrIncludesAll.autoRemove = (val: any) => testFalsy(val) || !val?.length\n\nconst arrIncludesSome: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown[],\n) => {\n return filterValue.some((val) =>\n row.getValue<unknown[]>(columnId)?.includes(val),\n )\n}\n\narrIncludesSome.autoRemove = (val: any) => testFalsy(val) || !val?.length\n\nconst equals: FilterFn<any> = (row, columnId: string, filterValue: unknown) => {\n return row.getValue(columnId) === filterValue\n}\n\nequals.autoRemove = (val: any) => testFalsy(val)\n\nconst weakEquals: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: unknown,\n) => {\n // eslint-disable-next-line eqeqeq\n return row.getValue(columnId) == filterValue\n}\n\nweakEquals.autoRemove = (val: any) => testFalsy(val)\n\nconst inNumberRange: FilterFn<any> = (\n row,\n columnId: string,\n filterValue: [number, number],\n) => {\n const [min, max] = filterValue\n\n const rowValue = row.getValue<number>(columnId)\n return rowValue >= min && rowValue <= max\n}\n\ninNumberRange.resolveFilterValue = (val: [any, any]) => {\n const [unsafeMin, unsafeMax] = val\n\n const parsedMin =\n typeof unsafeMin !== \"number\" ? parseFloat(unsafeMin as string) : unsafeMin\n const parsedMax =\n typeof unsafeMax !== \"number\" ? parseFloat(unsafeMax as string) : unsafeMax\n\n let min =\n unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return [min, max] as const\n}\n\ninNumberRange.autoRemove = (val: any) =>\n testFalsy(val) || (testFalsy(val[0]) && testFalsy(val[1]))\n\n// Export\n\nexport type BuiltInFilterFn =\n | \"arrIncludes\"\n | \"arrIncludesAll\"\n | \"arrIncludesSome\"\n | \"equals\"\n | \"equalsString\"\n | \"inNumberRange\"\n | \"includesString\"\n | \"includesStringSensitive\"\n | \"weakEquals\"\n\nexport const filterFns: Record<BuiltInFilterFn, FilterFn<any>> = {\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n equalsString,\n includesString,\n includesStringSensitive,\n inNumberRange,\n weakEquals,\n}\n\n// Utils\n\nfunction testFalsy(val: any) {\n return val === undefined || val === null || val === \"\"\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {RowModel} from \"..\"\nimport type {TableFeature} from \"../core/table\"\nimport {type BuiltInFilterFn, filterFns} from \"../filter-fns\"\nimport type {\n Column,\n FilterFns,\n OnChangeFn,\n Row,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {functionalUpdate, isFunction, makeStateUpdater} from \"../utils\"\n\nexport interface FiltersTableState {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport interface ColumnFilter {\n id: string\n value: unknown\n}\n\nexport interface ResolvedColumnFilter<TData extends RowData> {\n filterFn: FilterFn<TData>\n id: string\n resolvedValue: unknown\n}\n\nexport interface FilterFn<TData extends RowData> {\n (\n row: Row<TData>,\n columnId: string,\n filterValue: any,\n addMeta: (meta: Record<string, any>) => void,\n ): boolean\n\n autoRemove?: ColumnFilterAutoRemoveTestFn<TData>\n resolveFilterValue?: TransformFilterValueFn<TData>\n}\n\nexport type TransformFilterValueFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>,\n) => unknown\n\nexport type ColumnFilterAutoRemoveTestFn<TData extends RowData> = (\n value: any,\n column?: Column<TData, unknown>,\n) => boolean\n\nexport type CustomFilterFns<TData extends RowData> = Record<\n string,\n FilterFn<TData>\n>\n\nexport type FilterFnOption<TData extends RowData> =\n | \"auto\"\n | BuiltInFilterFn\n | FilterFn<TData>\n\nexport interface FiltersColumnDef<TData extends RowData> {\n /**\n * Enables/disables the `column` filter for this column.\n */\n enableColumnFilter?: boolean\n\n /**\n * Enables/disables the global filter for this column.\n */\n enableGlobalFilter?: boolean\n\n /**\n * The filter function to use with this column. Can be the name of a built-in\n * filter function or a custom filter function.\n *\n * @inheritDoc\n */\n filterFn?: FilterFnOption<TData>\n}\n\nexport interface FiltersColumn<TData extends RowData> {\n /** @internal */\n _getFacetedMinMaxValues?: () => undefined | [number, number]\n /** @internal */\n _getFacetedRowModel?: () => RowModel<TData>\n /** @internal */\n _getFacetedUniqueValues?: () => Map<any, number>\n /**\n * Returns an automatically calculated filter function for the column based off of\n * the columns first known value.\n *\n * @inheritDoc\n */\n getAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns whether the column can be `column` filtered.\n */\n getCanFilter: () => boolean\n /**\n * Returns whether the column can be globally filtered. Set to `false`\n * to disable a column from being scanned during global filtering.\n */\n getCanGlobalFilter: () => boolean\n /**\n * A function that computes and returns a min/max tuple derived from\n * {@link getFacetedRowModel}. Useful for displaying faceted result values. > \u26A0\uFE0F\n * Requires that you pass a valid {@link getFacetedMinMaxValues} function to\n * `options.getFacetedMinMaxValues`. A default implementation is provided via the\n * exported {@link getFacetedMinMaxValues} function.\n */\n getFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model with all other column filters applied, excluding its own\n * filter. Useful for displaying faceted result counts.\uFE0F Requires that you\n * pass a valid {@link getFacetedRowModel} function to `options.facetedRowModel`. A\n * default implementation is provided via the exported {@link getFacetedRowModel}\n * function.\n *\n * @inheritDoc\n */\n getFacetedRowModel: () => RowModel<TData>\n /**\n * A function that computes and returns a `Map` of unique values and their\n * occurrences derived from `column.getFacetedRowModel`. Useful for displaying\n * faceted result values. Requires that you pass a valid {@link\n * getFacetedUniqueValues} function to `options.getFacetedUniqueValues`. A default\n * implementation is provided via the exported {@link getFacetedUniqueValues}\n * function.\n */\n getFacetedUniqueValues: () => Map<any, number>\n /**\n * Returns the filter function (either user-defined or automatic, depending on\n * configuration) for the columnId specified.\n *\n * @inheritDoc\n */\n getFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the index of the column filter in the table's `state.columnFilters`\n * array. Returns `-1` if not found.\n */\n getFilterIndex: () => number\n /**\n * Returns the current filter value for the column.\n */\n getFilterValue: () => unknown\n /**\n * Returns whether the column is currently filtered.\n */\n getIsFiltered: () => boolean\n /**\n * A function that sets the current filter value for the column. You can pass it a\n * value or an updater function for immutability-safe operations on existing\n * values.\n */\n setFilterValue: (updater: Updater<any>) => void\n}\n\nexport interface FiltersRow<_TData extends RowData> {\n /**\n * The column filters map for the row. This object tracks whether a row is\n * passing/failing specific filters by their column ID.\n */\n columnFilters: Record<string, boolean>\n /**\n * The column filters meta map for the row. This object tracks any filter meta for\n * a row as optionally provided during the filtering process.\n */\n columnFiltersMeta: Record<string, Record<string, any>>\n}\n\ninterface FiltersOptionsBase<TData extends RowData> {\n /**\n * Enables/disables `column` filtering for all columns.\n */\n enableColumnFilters?: boolean\n /**\n * Enables/disables all filtering for the table.\n */\n enableFilters?: boolean\n // Global\n /**\n * Enables/disables global filtering for all columns.\n */\n enableGlobalFilter?: boolean\n /**\n * By default, filtering is done from parent rows down (so if a parent row is\n * filtered out, all of its children will be filtered out as well). Setting this\n * option to `true` will cause filtering to be done from leaf rows up (which means\n * parent rows will be included so long as one of their child or grand-child rows\n * is also included).\n */\n filterFromLeafRows?: boolean\n /**\n * If provided, this function will be called with the column and should return\n * `true` or `false` to indicate whether this column should be used for global\n * filtering.\n *\n * This is useful if the column can contain data that is not `string` or `number`\n * (i.e. `undefined`).\n */\n getColumnCanGlobalFilter?: (\n /** @inheritDoc */\n column: Column<TData, unknown>,\n ) => boolean\n\n getFacetedMinMaxValues?: (\n /** @inheritDoc */\n table: TableInstance<TData>,\n columnId: string,\n ) => () => undefined | [number, number]\n // Faceting\n getFacetedRowModel?: (\n /** @inheritDoc */\n table: TableInstance<TData>,\n /**\n * The id of the column\n */\n columnId: string,\n ) => () => RowModel<TData>\n\n getFacetedUniqueValues?: (\n /** @inheritDoc */\n table: TableInstance<TData>,\n columnId: string,\n ) => () => Map<any, number>\n /**\n * If provided, this function is called once per table and should return a\n * new function which will calculate and return the row model for the table\n * when it's filtered. - For server-side filtering, this function is unnecessary\n * and can be ignored since the server should already return the filtered row\n * model. - For client-side filtering, this function is required. A default\n * implementation is provided via any table adapter's `{ getFilteredRowModel }`\n * export.\n */\n getFilteredRowModel?: (\n /** @inheritDoc */\n table: TableInstance<TData>,\n ) => () => RowModel<TData>\n /**\n * The filter function to use for global filtering.\n * - A `string` referencing a built-in filter function\n * - A `string` that references a custom filter functions provided via the\n * `tableOptions.filterFns` option - A custom filter function\n *\n * @inheritDoc\n */\n globalFilterFn?: FilterFnOption<TData>\n /**\n * Disables the `getFilteredRowModel` from being used to filter data. This may be\n * useful if your table needs to dynamically support both client-side and\n * server-side filtering.\n */\n manualFiltering?: boolean\n\n /**\n * By default, filtering is done for all rows (max depth of 100), no matter if\n * they are root level parent rows or the child leaf rows of a parent row. Setting\n * this option to `0` will cause filtering to only be applied to the root level\n * parent rows, with all sub-rows remaining unfiltered. Similarly, setting this\n * option to `1` will cause filtering to only be applied to child leaf rows 1\n * level deep, and so on.\n *\n * This is useful for situations where you want a row's entire child hierarchy to\n * be visible regardless of the applied filter.\n */\n maxLeafRowFilterDepth?: number\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnFilters` changes. This overrides the default internal state\n * management, so you will need to persist the state change either fully or\n * partially outside the table.\n */\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.globalFilter` changes. This overrides the default internal state\n * management, so you will need to persist the state change either fully or\n * partially outside the table.\n */\n onGlobalFilterChange?: OnChangeFn<any>\n}\n\ntype ResolvedFilterFns = keyof FilterFns extends never\n ? {\n /** @inheritDoc */\n filterFns?: Record<string, FilterFn<any>>\n }\n : {\n /** @inheritDoc */\n filterFns: Record<keyof FilterFns, FilterFn<any>>\n }\n\nexport interface FiltersOptions<TData extends RowData>\n extends FiltersOptionsBase<TData>,\n ResolvedFilterFns {}\n\nexport interface FiltersInstance<TData extends RowData> {\n /** @internal */\n _getFilteredRowModel?: () => RowModel<TData>\n /** @internal */\n _getGlobalFacetedMinMaxValues?: () => undefined | [number, number]\n /** @internal */\n _getGlobalFacetedRowModel?: () => RowModel<TData>\n /** @internal */\n _getGlobalFacetedUniqueValues?: () => Map<any, number>\n /**\n * Returns the row model for the table after `column` filtering has been applied.\n */\n getFilteredRowModel: () => RowModel<TData>\n\n /**\n * Currently, this function returns the built-in `includesString` filter function.\n * In future releases, it may return more dynamic filter functions based on the\n * nature of the data provided.\n *\n * @inheritDoc\n */\n getGlobalAutoFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the faceted min and max values for the global filter.\n */\n getGlobalFacetedMinMaxValues: () => undefined | [number, number]\n /**\n * Returns the row model for the table after global filtering has been applied.\n */\n getGlobalFacetedRowModel: () => RowModel<TData>\n /**\n * Returns the faceted unique values for the global filter.\n */\n getGlobalFacetedUniqueValues: () => Map<any, number>\n /**\n * Returns the filter function (either user-defined or automatic, depending on\n * configuration) for the global filter.\n *\n * @inheritDoc\n */\n getGlobalFilterFn: () => FilterFn<TData> | undefined\n /**\n * Returns the row model for the table before any `column` filtering has been\n * applied.\n */\n getPreFilteredRowModel: () => RowModel<TData>\n /**\n * Resets the `columnFilters` state to `initialState.columnFilters`, or `true`\n * can be passed to force a default blank state reset to `[]`.\n */\n resetColumnFilters: (defaultState?: boolean) => void\n /**\n * Resets the `globalFilter` state to `initialState.globalFilter`, or `true` can\n * be passed to force a default blank state reset to `undefined`.\n */\n resetGlobalFilter: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnFilters` state.\n */\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n /**\n * Sets or updates the `state.globalFilter` state.\n */\n setGlobalFilter: (updater: Updater<any>) => void\n}\n\nexport const Filters: TableFeature = {\n createColumn: <TData extends RowData>(\n column: Column<TData>,\n table: TableInstance<TData>,\n ): void => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === \"string\") {\n return filterFns.includesString\n }\n\n if (typeof value === \"number\") {\n return filterFns.inNumberRange\n }\n\n if (typeof value === \"boolean\") {\n return filterFns.equals\n }\n\n if (value !== null && typeof value === \"object\") {\n return filterFns.equals\n }\n\n if (Array.isArray(value)) {\n return filterFns.arrIncludes\n }\n\n return filterFns.weakEquals\n }\n column.getFilterFn = () => {\n return isFunction(column.columnDef.filterFn)\n ? column.columnDef.filterFn\n : column.columnDef.filterFn === \"auto\"\n ? column.getAutoFilterFn()\n : // @ts-ignore\n (table.options.filterFns?.[column.columnDef.filterFn as string] ??\n filterFns[column.columnDef.filterFn as BuiltInFilterFn])\n }\n column.getCanFilter = () => {\n return (\n (column.columnDef.enableColumnFilter ?? true) &&\n (table.options.enableColumnFilters ?? true) &&\n (table.options.enableFilters ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getCanGlobalFilter = () => {\n return (\n (column.columnDef.enableGlobalFilter ?? true) &&\n (table.options.enableGlobalFilter ?? true) &&\n (table.options.enableFilters ?? true) &&\n (table.options.getColumnCanGlobalFilter?.(column) ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getIsFiltered = () => column.getFilterIndex() > -1\n\n column.getFilterValue = () =>\n table.getState().columnFilters?.find((d) => d.id === column.id)?.value\n\n column.getFilterIndex = () =>\n table.getState().columnFilters?.findIndex((d) => d.id === column.id) ?? -1\n\n column.setFilterValue = (value) => {\n table.setColumnFilters((old) => {\n const filterFn = column.getFilterFn()\n const previousfilter = old?.find((d) => d.id === column.id)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined,\n )\n\n //\n if (\n shouldAutoRemoveFilter(filterFn as FilterFn<TData>, newFilter, column)\n ) {\n return old?.filter((d) => d.id !== column.id) ?? []\n }\n\n const newFilterObj = {id: column.id, value: newFilter}\n\n if (previousfilter) {\n return (\n old?.map((d) => {\n if (d.id === column.id) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n }\n column._getFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, column.id)\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return column._getFacetedRowModel()\n }\n column._getFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, column.id)\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map()\n }\n\n return column._getFacetedUniqueValues()\n }\n column._getFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, column.id)\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined\n }\n\n return column._getFacetedMinMaxValues()\n }\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n _table: TableInstance<TData>,\n ): void => {\n row.columnFilters = {}\n row.columnFiltersMeta = {}\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString\n }\n\n table.getGlobalFilterFn = () => {\n const {globalFilterFn: globalFilterFn} = table.options\n\n return isFunction(globalFilterFn)\n ? globalFilterFn\n : globalFilterFn === \"auto\"\n ? table.getGlobalAutoFilterFn()\n : // @ts-ignore\n (table.options.filterFns?.[globalFilterFn as string] ??\n filterFns[globalFilterFn as BuiltInFilterFn])\n }\n\n table.setColumnFilters = (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = table.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter((filter) => {\n const column = leafColumns.find((d) => d.id === filter.id)\n\n if (column) {\n const filterFn = column.getFilterFn()\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n table.options.onColumnFiltersChange?.(updateFn)\n }\n\n table.setGlobalFilter = (updater) => {\n table.options.onGlobalFilterChange?.(updater)\n }\n\n table.resetGlobalFilter = (defaultState) => {\n table.setGlobalFilter(\n defaultState ? undefined : table.initialState.globalFilter,\n )\n }\n\n table.resetColumnFilters = (defaultState) => {\n table.setColumnFilters(\n defaultState ? [] : (table.initialState?.columnFilters ?? []),\n )\n }\n\n table.getPreFilteredRowModel = () => table.getCoreRowModel()\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table)\n }\n\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getFilteredRowModel()\n }\n\n table._getGlobalFacetedRowModel =\n table.options.getFacetedRowModel &&\n table.options.getFacetedRowModel(table, \"__global__\")\n\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel()\n }\n\n return table._getGlobalFacetedRowModel()\n }\n\n table._getGlobalFacetedUniqueValues =\n table.options.getFacetedUniqueValues &&\n table.options.getFacetedUniqueValues(table, \"__global__\")\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map()\n }\n\n return table._getGlobalFacetedUniqueValues()\n }\n\n table._getGlobalFacetedMinMaxValues =\n table.options.getFacetedMinMaxValues &&\n table.options.getFacetedMinMaxValues(table, \"__global__\")\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return\n }\n\n return table._getGlobalFacetedMinMaxValues()\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): FiltersColumnDef<TData> => {\n return {\n filterFn: \"auto\",\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): FiltersOptions<TData> => {\n return {\n filterFromLeafRows: false,\n getColumnCanGlobalFilter: (column) => {\n const value = table\n .getCoreRowModel()\n .flatRows[0]?._getAllCellsByColumnId()\n [column.id]?.getValue()\n\n return typeof value === \"string\" || typeof value === \"number\"\n },\n globalFilterFn: \"auto\",\n maxLeafRowFilterDepth: 100,\n onColumnFiltersChange: makeStateUpdater(\"columnFilters\", table),\n onGlobalFilterChange: makeStateUpdater(\"globalFilter\", table),\n } as FiltersOptions<TData>\n },\n\n getInitialState: (state): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state,\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TData extends RowData>(\n filterFn?: FilterFn<TData>,\n value?: any,\n column?: Column<TData, unknown>,\n): boolean {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === \"undefined\" ||\n (typeof value === \"string\" && !value)\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {AggregationFn} from \"./features/grouping\"\nimport {isNumberArray} from \"./utils\"\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === \"number\" ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach((row) => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach((row) => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach((row) => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) {\n min = max = value\n }\n } else {\n if (min > value) {\n min = value\n }\n if (max! < value) {\n max = value\n }\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach((row) => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count\n sum += value\n }\n })\n\n if (count) {\n return sum / count\n }\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n const values = leafRows.map((row) => row.getValue(columnId))\n if (!isNumberArray(values)) {\n return\n }\n if (values.length === 1) {\n return values[0]\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = values.sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map((d) => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map((d) => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns: {\n count: AggregationFn<any>\n extent: AggregationFn<any>\n max: AggregationFn<any>\n mean: AggregationFn<any>\n median: AggregationFn<any>\n min: AggregationFn<any>\n sum: AggregationFn<any>\n unique: AggregationFn<any>\n uniqueCount: AggregationFn<any>\n} = {\n count,\n extent,\n max,\n mean,\n median,\n min,\n sum,\n unique,\n uniqueCount,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {CellContext, RowModel} from \"..\"\nimport {aggregationFns, type BuiltInAggregationFn} from \"../aggregation-fns\"\nimport type {TableFeature} from \"../core/table\"\nimport type {\n AggregationFns,\n Cell,\n Column,\n ColumnDefTemplate,\n ColumnMeta,\n OnChangeFn,\n Row,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {isFunction, makeStateUpdater} from \"../utils\"\n\nexport type GroupingState = string[]\n\nexport interface GroupingTableState {\n grouping: GroupingState\n}\n\nexport type AggregationFn<TData extends RowData> = (\n /**\n * The id of the column.\n */\n columnId: string,\n /** @inheritDoc */\n leafRows: Row<TData>[],\n /** @inheritDoc */\n childRows: Row<TData>[],\n) => any\n\nexport type CustomAggregationFns = Record<string, AggregationFn<any>>\n\nexport type AggregationFnOption<TData extends RowData> =\n | \"auto\"\n | keyof AggregationFns\n | BuiltInAggregationFn\n | AggregationFn<TData>\n\nexport interface GroupingColumnDef<TData extends RowData, TValue> {\n /**\n * The cell to display each row for the column if the cell is an aggregate.\n */\n aggregatedCell?: ColumnDefTemplate<CellContext<TData, TValue>>\n /**\n * The resolved aggregation function for the column.\n *\n * @inheritDoc\n */\n aggregationFn?: AggregationFnOption<TData>\n /**\n * Enables/disables grouping for this column.\n */\n enableGrouping?: boolean\n /**\n * Specify a value to be used for grouping rows on this column. If this option is\n * not specified, the value derived from `accessorKey` / `accessorFn` will be used\n * instead.\n */\n getGroupingValue?: (row: TData) => any\n}\n\nexport interface GroupingColumn<TData extends RowData> {\n /**\n * Returns the aggregation function for the column.\n *\n * @inheritDoc\n */\n getAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns the automatically inferred aggregation function for the column.\n *\n * @inheritDoc\n */\n getAutoAggregationFn: () => AggregationFn<TData> | undefined\n /**\n * Returns whether the column can be grouped.\n */\n getCanGroup: () => boolean\n /**\n * Returns the index of the column in the grouping state.\n */\n getGroupedIndex: () => number\n /**\n * Returns whether the column is currently grouped.\n */\n getIsGrouped: () => boolean\n /**\n * Returns a function that toggles the grouping state of the column. This is\n * useful for passing to the `onClick` prop of a button.\n */\n getToggleGroupingHandler: () => () => void\n /**\n * Toggles the grouping state of the column.\n */\n toggleGrouping: () => void\n}\n\nexport interface GroupingRow {\n /** @internal */\n _groupingValuesCache: Record<string, any>\n /**\n * Returns the grouping value for any row and column (including leaf rows).\n */\n getGroupingValue: (columnId: string) => unknown\n /**\n * Returns whether the row is currently grouped.\n */\n getIsGrouped: () => boolean\n /**\n * If this row is grouped, this is the id of the column that this row is grouped\n * by.\n */\n groupingColumnId?: string\n /**\n * If this row is grouped, this is the unique/shared value for the\n * `groupingColumnId` for all of the rows in this group.\n */\n groupingValue?: unknown\n}\n\nexport interface GroupingCell {\n /**\n * Returns whether the cell is currently aggregated.\n */\n getIsAggregated: () => boolean\n /**\n * Returns whether the cell is currently grouped.\n */\n getIsGrouped: () => boolean\n /**\n * Returns whether the cell is currently a placeholder cell.\n */\n getIsPlaceholder: () => boolean\n}\n\nexport interface ColumnDefaultOptions {\n enableGrouping: boolean\n onGroupingChange: OnChangeFn<GroupingState>\n}\n\ninterface GroupingOptionsBase {\n /**\n * Enables/disables grouping for the table.\n */\n enableGrouping?: boolean\n /**\n * Returns the row model after grouping has taken place, but no further.\n */\n getGroupedRowModel?: (\n /** @inheritDoc */\n table: TableInstance<any>,\n ) => () => RowModel<any>\n /**\n * Grouping columns are automatically reordered by default to the start of the\n * columns list. If you would rather remove them or leave them as-is, set the\n * appropriate mode here.\n */\n groupedColumnMode?: false | \"reorder\" | \"remove\"\n /**\n * Enables manual grouping. If this option is set to `true`, the table will not\n * automatically group rows using `getGroupedRowModel()` and instead will expect\n * you to manually group the rows before passing them to the table. This is useful\n * if you are doing server-side grouping and aggregation.\n */\n manualGrouping?: boolean\n /**\n * If this function is provided, it will be called when the grouping state changes\n * and you will be expected to manage the state yourself. You can pass the managed\n * state back to the table via the `tableOptions.state.grouping` option.\n */\n onGroupingChange?: OnChangeFn<GroupingState>\n}\n\ntype ResolvedAggregationFns = keyof AggregationFns extends never\n ? {\n /** @inheritDoc */\n aggregationFns?: Record<string, AggregationFn<any>>\n }\n : {\n /** @inheritDoc */\n aggregationFns: Record<keyof AggregationFns, AggregationFn<any>>\n }\n\nexport interface GroupingOptions\n extends GroupingOptionsBase,\n ResolvedAggregationFns {}\n\nexport type GroupingColumnMode = false | \"reorder\" | \"remove\"\n\nexport interface GroupingInstance<TData extends RowData> {\n /** @internal */\n _getGroupedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table after grouping has been applied.\n */\n getGroupedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any grouping has been applied.\n */\n getPreGroupedRowModel: () => RowModel<TData>\n /**\n * Resets the `grouping` state to `initialState.grouping`, or `true` can be\n * passed to force a default blank state reset to `[]`.\n */\n resetGrouping: (defaultState?: boolean) => void\n /**\n * Updates the grouping state of the table via an update function or value.\n */\n setGrouping: (updater: Updater<GroupingState>) => void\n}\n\n//\n\nexport const Grouping: TableFeature = {\n createCell: <TData extends RowData, TValue>(\n cell: Cell<TData, TValue>,\n column: Column<TData, TValue>,\n row: Row<TData>,\n ): void => {\n cell.getIsGrouped = () =>\n column.getIsGrouped() && column.id === row.groupingColumnId\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped()\n cell.getIsAggregated = () =>\n !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!row.subRows?.length\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n column.toggleGrouping = () => {\n table.setGrouping((old) => {\n // Find any existing grouping for this column\n if (old?.includes(column.id)) {\n return old.filter((d) => d !== column.id)\n }\n\n return [...(old ?? []), column.id]\n })\n }\n\n column.getCanGroup = () => {\n return (\n column.columnDef.enableGrouping ??\n true ??\n table.options.enableGrouping ??\n true ??\n !!column.accessorFn\n )\n }\n\n column.getIsGrouped = () => {\n return table.getState().grouping?.includes(column.id)\n }\n\n column.getGroupedIndex = () => table.getState().grouping?.indexOf(column.id)\n\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) {\n return\n }\n column.toggleGrouping()\n }\n }\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === \"number\") {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === \"[object Date]\") {\n return aggregationFns.extent\n }\n\n return undefined\n }\n column.getAggregationFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.aggregationFn)\n ? column.columnDef.aggregationFn\n : column.columnDef.aggregationFn === \"auto\"\n ? column.getAutoAggregationFn()\n : (table.options.aggregationFns?.[\n column.columnDef.aggregationFn as string\n ] ??\n aggregationFns[\n column.columnDef.aggregationFn as BuiltInAggregationFn\n ])\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n ): void => {\n row.getIsGrouped = () => !!row.groupingColumnId\n row.getGroupingValue = (columnId) => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.columnDef.getGroupingValue) {\n return row.getValue(columnId)\n }\n\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(\n row.original,\n )\n\n return row._groupingValuesCache[columnId]\n }\n row._groupingValuesCache = {}\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setGrouping = (updater) => table.options.onGroupingChange?.(updater)\n\n table.resetGrouping = (defaultState) => {\n table.setGrouping(\n defaultState ? [] : (table.initialState?.grouping ?? []),\n )\n }\n\n table.getPreGroupedRowModel = () => table.getFilteredRowModel()\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table)\n }\n\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel()\n }\n\n return table._getGroupedRowModel()\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): GroupingColumnDef<\n TData,\n unknown\n > => {\n return {\n aggregatedCell: (props) =>\n (props.getValue() as any)?.toString?.() ?? null,\n aggregationFn: \"auto\",\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): GroupingOptions => {\n return {\n groupedColumnMode: \"reorder\",\n onGroupingChange: makeStateUpdater(\"grouping\", table),\n }\n },\n\n getInitialState: (state): GroupingTableState => {\n return {\n grouping: [],\n ...state,\n }\n },\n}\n\nexport function orderColumns<TData extends RowData>(\n leafColumns: Column<TData, unknown>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode,\n): Column<TData, unknown, ColumnMeta>[] {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n (col) => !grouping.includes(col.id),\n )\n\n if (groupedColumnMode === \"remove\") {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map((g) => leafColumns.find((col) => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport type {\n Column,\n OnChangeFn,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {makeStateUpdater, memo} from \"../utils\"\n\nimport {orderColumns} from \"./grouping\"\n\nexport interface ColumnOrderTableState {\n columnOrder: ColumnOrderState\n}\n\nexport type ColumnOrderState = string[]\n\nexport interface ColumnOrderOptions {\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnOrder` changes. This overrides the default internal state\n * management, so you will need to persist the state change either fully or\n * partially outside the table.\n */\n onColumnOrderChange?: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderDefaultOptions {\n onColumnOrderChange: OnChangeFn<ColumnOrderState>\n}\n\nexport interface ColumnOrderInstance<TData extends RowData> {\n /** @internal */\n _getOrderColumnsFn: () => (\n columns: Column<TData, unknown>[],\n ) => Column<TData, unknown>[]\n /**\n * Resets the `columnOrder` state to `initialState.columnOrder`, or `true` can\n * be passed to force a default blank state reset to `[]`.\n */\n resetColumnOrder: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnOrder` state.\n */\n setColumnOrder: (updater: Updater<ColumnOrderState>) => void\n}\n\nexport const Ordering: TableFeature = {\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setColumnOrder = (updater) =>\n table.options.onColumnOrderChange?.(updater)\n table.resetColumnOrder = (defaultState) => {\n table.setColumnOrder(\n defaultState ? [] : (table.initialState.columnOrder ?? []),\n )\n }\n table._getOrderColumnsFn = memo(\n () => [\n table.getState().columnOrder,\n table.getState().grouping,\n table.options.groupedColumnMode,\n ],\n (columnOrder, grouping, groupedColumnMode) => (columns) => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns: Column<TData, unknown>[] = []\n\n // If there is no order, return the normal columns\n if (!columnOrder?.length) {\n orderedColumns = columns\n } else {\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(\n (d) => d.id === targetColumnId,\n )\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy]\n }\n\n return orderColumns(orderedColumns, grouping, groupedColumnMode)\n },\n {\n key: process.env.NODE_ENV === \"development\" && \"getOrderColumnsFn\",\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n },\n )\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): ColumnOrderDefaultOptions => {\n return {\n onColumnOrderChange: makeStateUpdater(\"columnOrder\", table),\n }\n },\n\n getInitialState: (state): ColumnOrderTableState => {\n return {\n columnOrder: [],\n ...state,\n }\n },\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport type {\n OnChangeFn,\n RowData,\n RowModel,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {functionalUpdate, makeStateUpdater, memo} from \"../utils\"\n\nexport interface PaginationState {\n pageIndex: number\n pageSize: number\n}\n\nexport interface PaginationTableState {\n pagination: PaginationState\n}\n\nexport interface PaginationInitialTableState {\n pagination?: Partial<PaginationState>\n}\n\nexport interface PaginationOptions {\n /**\n * If set to `true`, pagination will be reset to the first page when page-altering\n * state changes e.g.,`data` is updated, filters change, grouping changes, etc.\n */\n autoResetPageIndex?: boolean\n /**\n * Returns the row model after pagination has taken place, but no further.\n *\n * Pagination columns are automatically reordered by default to the start of the\n * columns list. If you would rather remove them or leave them as-is, set the\n * appropriate mode here.\n */\n getPaginationRowModel?: (\n /** @inheritDoc */\n table: TableInstance<any>,\n ) => () => RowModel<any>\n /**\n * Enables manual pagination. If this option is set to `true`, the table will not\n * automatically paginate rows using `getPaginationRowModel()` and instead will\n * expect you to manually paginate the rows before passing them to the table. This\n * is useful if you are doing server-side pagination and aggregation.\n */\n manualPagination?: boolean\n /**\n * If this function is provided, it will be called when the pagination state\n * changes and you will be expected to manage the state yourself. You can pass the\n * managed state back to the table via the `tableOptions.state.pagination` option.\n */\n onPaginationChange?: OnChangeFn<PaginationState>\n /**\n * When manually controlling pagination, you should supply a total `pageCount`\n * value to the table if you know it. If you do not know how many pages there are,\n * you can set this to `-1`.\n */\n pageCount?: number\n}\n\nexport interface PaginationDefaultOptions {\n onPaginationChange: OnChangeFn<PaginationState>\n}\n\nexport interface PaginationInstance<TData extends RowData> {\n /** @internal */\n _autoResetPageIndex: () => void\n /** @internal */\n _getPaginationRowModel?: () => RowModel<TData>\n /**\n * Returns whether the table can go to the next page.\n */\n getCanNextPage: () => boolean\n /**\n * Returns whether the table can go to the previous page.\n */\n getCanPreviousPage: () => boolean\n /**\n * Returns the page count. If manually paginating or controlling the pagination\n * state, this will come directly from the `options.pageCount` table option,\n * otherwise it will be calculated from the table data using the total row count\n * and current page size.\n */\n getPageCount: () => number\n /**\n * Returns an array of page options (zero-index-based) for the current page size.\n */\n getPageOptions: () => number[]\n /**\n * Returns the row model for the table after pagination has been applied.\n */\n getPaginationRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table before any pagination has been applied.\n */\n getPrePaginationRowModel: () => RowModel<TData>\n /**\n * Increments the page index by one, if possible.\n */\n nextPage: () => void\n /**\n * Decrements the page index by one, if possible.\n */\n previousPage: () => void\n /**\n * Resets the page index to its initial state. If `defaultState` is `true`, the\n * page index will be reset to `0` regardless of initial state.\n */\n resetPageIndex: (defaultState?: boolean) => void\n /**\n * Resets the page size to its initial state. If `defaultState` is `true`, the\n * page size will be reset to `10` regardless of initial state.\n */\n resetPageSize: (defaultState?: boolean) => void\n /**\n * Resets the `pagination` state to `initialState.pagination`, or `true` can be\n * passed to force a default blank state reset to `[]`.\n */\n resetPagination: (defaultState?: boolean) => void\n /**\n * Updates the page count using the provided function or value.\n */\n setPageCount: (updater: Updater<number>) => void\n /**\n * Updates the page index using the provided function or value in the\n * `state.pagination.pageIndex` state.\n */\n setPageIndex: (updater: Updater<number>) => void\n /**\n * Updates the page size using the provided function or value in the\n * `state.pagination.pageSize` state.\n */\n setPageSize: (updater: Updater<number>) => void\n /**\n * Sets or updates the `state.pagination` state.\n */\n setPagination: (updater: Updater<PaginationState>) => void\n}\n\nconst defaultPageIndex = 0\nconst defaultPageSize = 10\n\nconst getDefaultPaginationState = (): PaginationState => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize,\n})\n\nexport const Pagination: TableFeature = {\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n let registered = false\n let queued = false\n\n table._autoResetPageIndex = () => {\n if (!registered) {\n table._queue(() => {\n registered = true\n })\n return\n }\n\n if (\n table.options.autoResetAll ??\n table.options.autoResetPageIndex ??\n !table.options.manualPagination\n ) {\n if (queued) {\n return\n }\n queued = true\n table._queue(() => {\n table.resetPageIndex()\n queued = false\n })\n }\n }\n table.setPagination = (updater) => {\n const safeUpdater: Updater<PaginationState> = (old) => {\n const newState = functionalUpdate(updater, old)\n\n return newState\n }\n\n return table.options.onPaginationChange?.(safeUpdater)\n }\n table.resetPagination = (defaultState) => {\n table.setPagination(\n defaultState\n ? getDefaultPaginationState()\n : (table.initialState.pagination ?? getDefaultPaginationState()),\n )\n }\n table.setPageIndex = (updater) => {\n table.setPagination((old) => {\n let pageIndex = functionalUpdate(updater, old.pageIndex)\n\n const maxPageIndex =\n typeof table.options.pageCount === \"undefined\" ||\n table.options.pageCount === -1\n ? Number.MAX_SAFE_INTEGER\n : table.options.pageCount - 1\n\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\n\n return {\n ...old,\n pageIndex,\n }\n })\n }\n table.resetPageIndex = (defaultState) => {\n table.setPageIndex(\n defaultState\n ? defaultPageIndex\n : (table.initialState?.pagination?.pageIndex ?? defaultPageIndex),\n )\n }\n table.resetPageSize = (defaultState) => {\n table.setPageSize(\n defaultState\n ? defaultPageSize\n : (table.initialState?.pagination?.pageSize ?? defaultPageSize),\n )\n }\n table.setPageSize = (updater) => {\n table.setPagination((old) => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n }\n table.setPageCount = (updater) =>\n table.setPagination((old) => {\n let newPageCount = functionalUpdate(\n updater,\n table.options.pageCount ?? -1,\n )\n\n if (typeof newPageCount === \"number\") {\n newPageCount = Math.max(-1, newPageCount)\n }\n\n return {\n ...old,\n pageCount: newPageCount,\n }\n })\n\n table.getPageOptions = memo(\n () => [table.getPageCount()],\n (pageCount) => {\n let pageOptions: number[] = []\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getPageOptions\",\n },\n )\n\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0\n\n table.getCanNextPage = () => {\n const {pageIndex} = table.getState().pagination\n\n const pageCount = table.getPageCount()\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return pageIndex < pageCount - 1\n }\n\n table.previousPage = () => {\n return table.setPageIndex((old) => old - 1)\n }\n\n table.nextPage = () => {\n return table.setPageIndex((old) => {\n return old + 1\n })\n }\n\n table.getPrePaginationRowModel = () => table.getExpandedRowModel()\n table.getPaginationRowModel = () => {\n if (\n !table._getPaginationRowModel &&\n table.options.getPaginationRowModel\n ) {\n table._getPaginationRowModel =\n table.options.getPaginationRowModel(table)\n }\n\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel()\n }\n\n return table._getPaginationRowModel()\n }\n\n table.getPageCount = () => {\n return (\n table.options.pageCount ??\n Math.ceil(\n table.getPrePaginationRowModel().rows.length /\n table.getState().pagination.pageSize,\n )\n )\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): PaginationDefaultOptions => {\n return {\n onPaginationChange: makeStateUpdater(\"pagination\", table),\n }\n },\n\n getInitialState: (state): PaginationTableState => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...state?.pagination,\n },\n }\n },\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport type {\n Cell,\n Column,\n ColumnMeta,\n OnChangeFn,\n Row,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {makeStateUpdater, memo} from \"../utils\"\n\nexport type ColumnPinningPosition = false | \"left\" | \"right\"\nexport type RowPinningPosition = false | \"top\" | \"bottom\"\n\nexport interface ColumnPinningState {\n left?: string[]\n right?: string[]\n}\n\nexport interface RowPinningState {\n bottom?: string[]\n includeLeafRows?: boolean\n includeParentRows?: boolean\n top?: string[]\n}\n\nexport interface ColumnPinningTableState {\n columnPinning: ColumnPinningState\n}\n\nexport interface RowPinningTableState {\n rowPinning: RowPinningState\n}\n\nexport interface ColumnPinningOptions {\n /**\n * Enables/disables column pinning for the table. Defaults to `true`.\n */\n enableColumnPinning?: boolean\n /**\n * Enables/disables all pinning for the table. Defaults to `true`.\n */\n enablePinning?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnPinning` changes. This overrides the default internal state\n * management, so you will also need to supply `state.columnPinning` from your own\n * managed state.\n */\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n}\n\nexport interface RowPinningOptions<TData extends RowData> {\n /**\n * Enables/disables row pinning for the table. Defaults to `true`.\n */\n enableRowPinning?:\n | boolean\n | ((\n /** @inheritDoc */\n row: Row<TData>,\n ) => boolean)\n\n /**\n * Include child rows when pinning parent.\n */\n includeLeafRows?: boolean\n\n /**\n * Include parent rows when pinning child.\n */\n includeParentRows?: boolean\n\n /**\n * When `false`, pinned rows will not be visible if they are filtered or paginated\n * out of the table. When `true`, pinned rows will always be visible regardless of\n * filtering or pagination. Defaults to `true`.\n */\n keepPinnedRows?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.rowPinning` changes. This overrides the default internal state\n * management, so you will also need to supply `state.rowPinning` from your own\n * managed state.\n */\n onRowPinningChange?: OnChangeFn<RowPinningState>\n}\n\nexport interface ColumnPinningDefaultOptions {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport interface RowPinningDefaultOptions {\n onRowPinningChange: OnChangeFn<RowPinningState>\n}\n\nexport interface ColumnPinningColumnDef {\n /**\n * Enables/disables column pinning for this column. Defaults to `true`.\n */\n enablePinning?: boolean\n}\n\nexport interface ColumnPinningColumn {\n /**\n * Returns whether the column can be pinned.\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the column. (`'left'`, `'right'` or `false`)\n */\n getIsPinned: () => ColumnPinningPosition\n /**\n * Returns whether the column is pinned to the left.\n */\n getIsPinnedLeft: () => boolean\n /**\n * Returns whether the column is pinned to the right.\n */\n getIsPinnedRight: () => boolean\n /**\n * Returns the numeric pinned index of the column within a pinned column group.\n */\n getPinnedIndex: () => number\n /**\n * Pins a column to the `'left'` or `'right'`, or unpins the column to the center\n * if `false` is passed.\n */\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport interface ColumnPinningRow<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf cells in the row.\n *\n * @inheritDoc\n */\n getCenterVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all left pinned leaf cells in the row.\n *\n * @inheritDoc\n */\n getLeftVisibleCells: () => Cell<TData, unknown>[]\n /**\n * Returns all right pinned leaf cells in the row.\n *\n * @inheritDoc\n */\n getRightVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface RowPinningRow {\n /**\n * Returns whether the row can be pinned.\n */\n getCanPin: () => boolean\n /**\n * Returns the pinned position of the row. (`'top'`, `'bottom'` or `false`)\n */\n getIsPinned: () => RowPinningPosition\n /**\n * Returns whether the row is pinned to the bottom.\n */\n getIsPinnedBottom: () => boolean\n /**\n * Returns whether the row is pinned to the top.\n */\n getIsPinnedTop: () => boolean\n /**\n * Returns the numeric pinned index of the row within a pinned row group.\n */\n getPinnedIndex: () => number\n /**\n * Pins a row to the `top` or `bottom` or unpins the row to the center if `false`\n * is passed.\n */\n pin: (\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n ) => void\n}\n\nexport interface ColumnPinningInstance<TData extends RowData> {\n /**\n * Returns all center pinned (unpinned) leaf columns.\n *\n * @inheritDoc\n */\n getCenterLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether any columns are pinned. Optionally specify to only check\n * for pinned columns in either the `left` or `right` position.\n */\n getIsSomeColumnsPinned: (position?: ColumnPinningPosition) => boolean\n /**\n * Returns all left pinned leaf columns.\n *\n * @inheritDoc\n */\n getLeftLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns all right pinned leaf columns.\n *\n * @inheritDoc\n */\n getRightLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the `columnPinning` state to `initialState.columnPinning`, or `true`\n * can be passed to force a default blank state reset to `{ left: [], right: [],\n * }`.\n */\n resetColumnPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnPinning` state.\n *\n * @inheritDoc\n */\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n}\n\nexport interface RowPinningInstance<TData extends RowData> {\n /** @internal */\n _getPinnedRows: (position: \"top\" | \"bottom\") => Row<TData>[]\n /**\n * Returns all bottom pinned rows.\n *\n * @inheritDoc\n */\n getBottomRows: () => Row<TData>[]\n /**\n * Returns all rows that are not pinned to the top or bottom.\n *\n * @inheritDoc\n */\n getCenterRows: () => Row<TData>[]\n /**\n * Returns whether any rows are pinned. Optionally specify to only check\n * for pinned rows in either the `top` or `bottom` position.\n */\n getIsSomeRowsPinned: (position?: RowPinningPosition) => boolean\n /**\n * Returns all top pinned rows.\n *\n * @inheritDoc\n */\n getTopRows: () => Row<TData>[]\n /**\n * Resets the `rowPinning` state to `initialState.rowPinning`, or `true` can be\n * passed to force a default blank state reset to `{ top: [], bottom: [], }`.\n */\n resetRowPinning: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.rowPinning` state.\n */\n setRowPinning: (updater: Updater<RowPinningState>) => void\n}\n\nconst getDefaultColumnPinningState = (): ColumnPinningState => ({\n left: [],\n right: [],\n})\n\nconst getDefaultRowPinningState = (): RowPinningState => ({\n bottom: [],\n includeLeafRows: false,\n includeParentRows: false,\n top: [],\n})\n\nexport const Pinning: TableFeature = {\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n column.pin = (position) => {\n const columnIds = column\n .getLeafColumns()\n .map((d) => d.id)\n .filter(Boolean)\n\n table.setColumnPinning((old) => {\n if (position === \"right\") {\n return {\n left: (old?.left ?? []).filter((d) => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter((d) => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === \"left\") {\n return {\n left: [\n ...(old?.left ?? []).filter((d) => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter((d) => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter((d) => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter((d) => !columnIds?.includes(d)),\n }\n })\n }\n\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n (d) =>\n (d.columnDef.enablePinning ?? true) &&\n (table.options.enableColumnPinning ??\n table.options.enablePinning ??\n true),\n )\n }\n\n column.getIsPinned = () => getIsColumnPinned(column, table)\n\n column.getIsPinnedLeft = () => getIsColumnPinned(column, table) === \"left\"\n\n column.getIsPinnedRight = () => getIsColumnPinned(column, table) === \"right\"\n\n column.getPinnedIndex = () => {\n const position = column.getIsPinned()\n\n return position\n ? (table.getState().columnPinning?.[position]?.indexOf(column.id) ?? -1)\n : 0\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n ): void => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds =\n includeLeafRows || table.options.includeLeafRows\n ? row.getLeafRows().map(({id}) => id)\n : []\n const parentRowIds =\n includeParentRows || table.options.includeParentRows\n ? row.getParentRows().map(({id}) => id)\n : []\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table.setRowPinning((old) => {\n if (position === \"bottom\") {\n return {\n ...old,\n bottom: [\n ...(old?.bottom ?? []).filter((d) => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n top: (old?.top ?? []).filter((d) => !rowIds?.has(d)),\n }\n }\n\n if (position === \"top\") {\n return {\n ...old,\n bottom: (old?.bottom ?? []).filter((d) => !rowIds?.has(d)),\n top: [\n ...(old?.top ?? []).filter((d) => !rowIds?.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n return {\n ...old,\n bottom: (old?.bottom ?? []).filter((d) => !rowIds?.has(d)),\n top: (old?.top ?? []).filter((d) => !rowIds?.has(d)),\n }\n })\n }\n row.getCanPin = () => {\n const {enablePinning, enableRowPinning} = table.options\n if (typeof enableRowPinning === \"function\") {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? enablePinning ?? true\n }\n\n row.getIsPinned = () => getIsRowPinned(row, table)\n\n row.getIsPinnedBottom = () => getIsRowPinned(row, table) === \"bottom\"\n\n row.getIsPinnedTop = () => getIsRowPinned(row, table) === \"top\"\n\n row.getPinnedIndex = () => {\n const position = row.getIsPinned()\n if (!position) {\n return -1\n }\n\n const visiblePinnedRowIds = table\n ._getPinnedRows(position)\n ?.map(({id}) => id)\n\n return visiblePinnedRowIds?.indexOf(row.id) ?? -1\n }\n row.getCenterVisibleCells = memo(\n () => [\n row._getAllVisibleCells(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allCells, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allCells.filter((d) => !leftAndRight.includes(d.column.id))\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key:\n process.env.NODE_ENV === \"development\" && \"row.getCenterVisibleCells\",\n },\n )\n row.getLeftVisibleCells = memo(\n (): [Cell<TData, unknown, ColumnMeta>[], string[] | undefined] => [\n row._getAllVisibleCells(),\n table.getState().columnPinning.left,\n ],\n (allCells, left) => {\n const cells = (left ?? [])\n .map(\n (columnId) => allCells.find((cell) => cell.column.id === columnId)!,\n )\n .filter(Boolean)\n .map((d) => ({...d, position: \"left\"}) as Cell<TData, unknown>)\n\n return cells\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key:\n process.env.NODE_ENV === \"development\" && \"row.getLeftVisibleCells\",\n },\n )\n row.getRightVisibleCells = memo(\n () => [row._getAllVisibleCells(), table.getState().columnPinning.right],\n (allCells, right) => {\n const cells = (right ?? [])\n .map(\n (columnId) => allCells.find((cell) => cell.column.id === columnId)!,\n )\n .filter(Boolean)\n .map((d) => ({...d, position: \"right\"}) as Cell<TData, unknown>)\n\n return cells\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key:\n process.env.NODE_ENV === \"development\" && \"row.getRightVisibleCells\",\n },\n )\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setColumnPinning = (updater) =>\n table.options.onColumnPinningChange?.(updater)\n\n table.resetColumnPinning = (defaultState) =>\n table.setColumnPinning(\n defaultState\n ? getDefaultColumnPinningState()\n : (table.initialState?.columnPinning ??\n getDefaultColumnPinningState()),\n )\n\n table.getIsSomeColumnsPinned = (position) => {\n const pinningState = table.getState().columnPinning\n\n if (!position) {\n return Boolean(pinningState.left?.length || pinningState.right?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table.getLeftLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.left],\n (allColumns, left) => {\n return (left ?? [])\n .map(\n (columnId) => allColumns.find((column) => column.id === columnId)!,\n )\n .filter(Boolean)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getLeftLeafColumns\",\n },\n )\n\n table.getRightLeafColumns = memo(\n () => [table.getAllLeafColumns(), table.getState().columnPinning.right],\n (allColumns, right) => {\n return (right ?? [])\n .map(\n (columnId) => allColumns.find((column) => column.id === columnId)!,\n )\n .filter(Boolean)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getRightLeafColumns\",\n },\n )\n\n table.getCenterLeafColumns = memo(\n () => [\n table.getAllLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, left, right) => {\n const leftAndRight: string[] = [...(left ?? []), ...(right ?? [])]\n\n return allColumns.filter((d) => !leftAndRight.includes(d.id))\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getCenterLeafColumns\",\n },\n )\n\n table.setRowPinning = (updater) =>\n table.options.onRowPinningChange?.(updater)\n\n table.resetRowPinning = (defaultState) =>\n table.setRowPinning(\n defaultState\n ? getDefaultRowPinningState()\n : (table.initialState?.rowPinning ?? getDefaultRowPinningState()),\n )\n\n table.getIsSomeRowsPinned = (position) => {\n const pinningState = table.getState().rowPinning\n\n if (!position) {\n return Boolean(pinningState.top?.length || pinningState.bottom?.length)\n }\n return Boolean(pinningState[position]?.length)\n }\n\n table._getPinnedRows = (position: \"top\" | \"bottom\") =>\n memo(\n () => [table.getRowModel().rows, table.getState().rowPinning[position]],\n (visibleRows, pinnedRowIds) => {\n const rows =\n (table.options.keepPinnedRows ?? true)\n ? // get all rows that are pinned even if they would not be otherwise visible\n // account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds ?? []).map((rowId) => {\n const row = table.getRow(rowId, true)\n return row.getIsAllParentsExpanded() ? row : null\n })\n : // else get only visible rows that are pinned\n (pinnedRowIds ?? []).map(\n (rowId) => visibleRows.find((row) => row.id === rowId)!,\n )\n\n return rows\n .filter(Boolean)\n .map((d) => ({...d, position})) as Row<TData>[]\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key:\n process.env.NODE_ENV === \"development\" &&\n `row.get${position === \"top\" ? \"Top\" : \"Bottom\"}Rows`,\n },\n )()\n\n table.getTopRows = () => table._getPinnedRows(\"top\")\n\n table.getBottomRows = () => table._getPinnedRows(\"bottom\")\n\n table.getCenterRows = memo(\n () => [\n table.getRowModel().rows,\n table.getState().rowPinning.top,\n table.getState().rowPinning.bottom,\n ],\n (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top ?? []), ...(bottom ?? [])])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key: process.env.NODE_ENV === \"development\" && \"row.getCenterRows\",\n },\n )\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): ColumnPinningDefaultOptions & RowPinningDefaultOptions => {\n return {\n onColumnPinningChange: makeStateUpdater(\"columnPinning\", table),\n onRowPinningChange: makeStateUpdater(\"rowPinning\", table),\n }\n },\n\n getInitialState: (state): ColumnPinningTableState & RowPinningState => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n rowPinning: getDefaultRowPinningState(),\n ...state,\n }\n },\n}\n\nfunction getIsColumnPinned<TData extends RowData>(\n column: Column<TData>,\n table: TableInstance<TData>,\n) {\n const leafColumnIds = column.getLeafColumns().map((d) => d.id)\n\n const {left, right} = table.getState().columnPinning\n\n const isLeft = leafColumnIds.some((d) => left?.includes(d))\n const isRight = leafColumnIds.some((d) => right?.includes(d))\n\n return isLeft ? \"left\" : isRight ? \"right\" : false\n}\n\nfunction getIsRowPinned<TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n) {\n const rowIds = [row.id]\n\n const {bottom, top} = table.getState().rowPinning\n\n const isTop = rowIds.some((d) => top?.includes(d))\n const isBottom = rowIds.some((d) => bottom?.includes(d))\n\n return isTop ? \"top\" : isBottom ? \"bottom\" : false\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport type {\n OnChangeFn,\n Row,\n RowData,\n RowModel,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {makeStateUpdater, memo} from \"../utils\"\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport interface RowSelectionTableState {\n rowSelection: RowSelectionState\n}\n\nexport interface RowSelectionOptions<TData extends RowData> {\n /**\n * - Enables/disables multiple row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable multiple row\n * selection for that row's children/grandchildren\n */\n enableMultiRowSelection?:\n | boolean\n | ((\n /**\n * @inheritDoc\n */\n row: Row<TData>,\n ) => boolean)\n\n /**\n * - Enables/disables row selection for all rows in the table OR\n * - A function that given a row, returns whether to enable/disable row selection\n * for that row\n */\n enableRowSelection?:\n | boolean\n | ((\n /**\n * @inheritDoc\n */\n row: Row<TData>,\n ) => boolean)\n\n /**\n * Enables/disables automatic sub-row selection when a parent row is selected, or\n * a function that enables/disables automatic sub-row selection for each row. (Use\n * in combination with expanding or grouping features)\n */\n enableSubRowSelection?:\n | boolean\n | ((\n /**\n * @inheritDoc\n */\n row: Row<TData>,\n ) => boolean)\n\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.rowSelection` changes. This overrides the default internal state\n * management, so you will need to persist the state change either fully or\n * partially outside of the table.\n */\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n}\n\nexport interface RowSelectionRow {\n /**\n * Returns whether the row can multi-select.\n */\n getCanMultiSelect: () => boolean\n\n /**\n * Returns whether the row can be selected.\n */\n getCanSelect: () => boolean\n\n /**\n * Returns whether the row can select sub rows automatically when the\n * parent row is selected.\n */\n getCanSelectSubRows: () => boolean\n\n /**\n * Returns whether all of the row's sub rows are selected.\n */\n getIsAllSubRowsSelected: () => boolean\n\n /**\n * Returns whether the row is selected.\n */\n getIsSelected: () => boolean\n\n /**\n * Returns whether some of the row's sub rows are selected.\n */\n getIsSomeSelected: () => boolean\n\n /**\n * Returns a handler that can be used to toggle the row.\n */\n getToggleSelectedHandler: () => (event: unknown) => void\n\n /**\n * Selects/deselects the row.\n */\n toggleSelected: (value?: boolean, opts?: {selectChildren?: boolean}) => void\n}\n\nexport interface RowSelectionInstance<TData extends RowData> {\n /**\n * Returns the row model of all rows that are selected after filtering has been\n * applied.\n */\n getFilteredSelectedRowModel: () => RowModel<TData>\n\n /**\n * Returns the row model of all rows that are selected after grouping has been\n * applied.\n */\n getGroupedSelectedRowModel: () => RowModel<TData>\n\n /**\n * Returns whether all rows on the current page are selected.\n */\n getIsAllPageRowsSelected: () => boolean\n\n /**\n * Returns whether all rows in the table are selected.\n */\n getIsAllRowsSelected: () => boolean\n\n /**\n * Returns whether any rows on the current page are selected.\n */\n getIsSomePageRowsSelected: () => boolean\n\n /**\n * Returns whether any rows in the table are selected.\n */\n getIsSomeRowsSelected: () => boolean\n\n /**\n * Returns the core row model of all rows before row selection has been applied.\n */\n getPreSelectedRowModel: () => RowModel<TData>\n\n /**\n * Returns the row model of all rows that are selected.\n */\n getSelectedRowModel: () => RowModel<TData>\n\n /**\n * Returns a handler that can be used to toggle all rows on the current page.\n */\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n\n /**\n * Returns a handler that can be used to toggle all rows in the table.\n */\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n\n /**\n * Resets the `rowSelection` state to the `initialState.rowSelection`, or `true`\n * can be passed to force a default blank state reset to `{}`.\n */\n resetRowSelection: (defaultState?: boolean) => void\n\n /**\n * Sets or updates the `state.rowSelection` state.\n */\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n\n /**\n * Selects/deselects all rows on the current page.\n */\n toggleAllPageRowsSelected: (value?: boolean) => void\n\n /**\n * Selects/deselects all rows in the table.\n */\n toggleAllRowsSelected: (value?: boolean) => void\n}\n\nexport const RowSelection: TableFeature = {\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n ): void => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected()\n\n table.setRowSelection((old) => {\n value = typeof value !== \"undefined\" ? value : !isSelected\n\n if (row.getCanSelect() && isSelected === value) {\n return old\n }\n\n const selectedRowIds = {...old}\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n table,\n )\n\n return syncParentRowSelection(row, selectedRowIds, table)\n })\n }\n row.getIsSelected = () => {\n const {rowSelection} = table.getState()\n return isRowSelected(row, rowSelection)\n }\n\n row.getIsSomeSelected = () => {\n const {rowSelection} = table.getState()\n return isSubRowSelected(row, rowSelection, table) === \"some\"\n }\n\n row.getIsAllSubRowsSelected = () => {\n const {rowSelection} = table.getState()\n return isSubRowSelected(row, rowSelection, table) === \"all\"\n }\n\n row.getCanSelect = () => {\n if (typeof table.options.enableRowSelection === \"function\") {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n }\n\n row.getCanSelectSubRows = () => {\n if (typeof table.options.enableSubRowSelection === \"function\") {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n }\n\n row.getCanMultiSelect = () => {\n if (typeof table.options.enableMultiRowSelection === \"function\") {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.options.enableMultiRowSelection ?? true\n }\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) {\n return\n }\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked,\n )\n }\n }\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setRowSelection = (updater) =>\n table.options.onRowSelectionChange?.(updater)\n table.resetRowSelection = (defaultState) =>\n table.setRowSelection(\n defaultState ? {} : (table.initialState.rowSelection ?? {}),\n )\n table.toggleAllRowsSelected = (value) => {\n table.setRowSelection((old) => {\n value =\n typeof value !== \"undefined\" ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = {...old}\n\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach((row) => {\n if (!row.getCanSelect()) {\n return\n }\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach((row) => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n }\n table.toggleAllPageRowsSelected = (value) =>\n table.setRowSelection((old) => {\n const resolvedValue =\n typeof value !== \"undefined\"\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = {...old}\n\n table.getRowModel().rows.forEach((row) => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n\n table.getPreSelectedRowModel = () => table.getCoreRowModel()\n table.getSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n flatRows: [],\n rows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getSelectedRowModel\",\n },\n )\n\n table.getFilteredSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n flatRows: [],\n rows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key:\n process.env.NODE_ENV === \"production\" &&\n \"getFilteredSelectedRowModel\",\n },\n )\n\n table.getGroupedSelectedRowModel = memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n flatRows: [],\n rows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key:\n process.env.NODE_ENV === \"production\" && \"getGroupedSelectedRowModel\",\n },\n )\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const {rowSelection} = table.getState()\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length,\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n (row) => row.getCanSelect() && !rowSelection[row.id],\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n }\n\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table\n .getPaginationRowModel()\n .flatRows.filter((row) => row.getCanSelect())\n const {rowSelection} = table.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some((row) => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n }\n\n table.getIsSomeRowsSelected = () => {\n const totalSelected = Object.keys(\n table.getState().rowSelection ?? {},\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n }\n\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows\n .filter((row) => row.getCanSelect())\n .some((d) => d.getIsSelected() || d.getIsSomeSelected())\n }\n\n table.getToggleAllRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n }\n\n table.getToggleAllPageRowsSelectedHandler = () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): RowSelectionOptions<TData> => {\n return {\n enableMultiRowSelection: true,\n enableRowSelection: true,\n enableSubRowSelection: true,\n onRowSelectionChange: makeStateUpdater(\"rowSelection\", table),\n }\n },\n\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n}\n\nconst mutateRowIsSelected = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n includeChildren: boolean,\n table: TableInstance<TData>,\n) => {\n const row = table.getRow(id, true)\n\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true\n }\n } else {\n delete selectedRowIds[id]\n }\n\n if (includeChildren && row.subRows?.length && row.getCanSelectSubRows()) {\n row.subRows.forEach((row) =>\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n includeChildren,\n table,\n ),\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: TableInstance<TData>,\n rowModel: RowModel<TData>,\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map((row) => {\n const isSelected = isRowSelected(row, rowSelection)\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n\n return undefined\n })\n .filter(Boolean) as Row<TData>[]\n }\n\n return {\n flatRows: newSelectedFlatRows,\n rows: recurseRows(rowModel.rows),\n rowsById: newSelectedRowsById,\n }\n}\n\n/**\n * When child rows are updated, the parent state is not properly synced.\n * When all children are selected, the parent should be selected.\n * When only some children are selected, the parent should be indeterminate.\n * When no children are selected, the parent should be unselected.\n */\nfunction syncParentRowSelection<TData extends RowData>(\n row: Row<TData>,\n selection: RowSelectionState,\n table: TableInstance<TData>,\n): RowSelectionState {\n const parentRow = row.getParentRow()\n if (!parentRow) {\n return selection\n }\n\n const selected = isRowSelected(parentRow, selection)\n const isAllSubRowsSelected =\n isSubRowSelected(parentRow, selection, table) === \"all\"\n\n if (isAllSubRowsSelected && !selected) {\n mutateRowIsSelected(selection, parentRow.id, true, false, table)\n } else if (!isAllSubRowsSelected && selected) {\n mutateRowIsSelected(selection, parentRow.id, false, false, table)\n }\n\n return syncParentRowSelection(parentRow, selection, table)\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: RowSelectionState,\n): boolean {\n return selection[row.id] ?? false\n}\n\nexport function isSubRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: RowSelectionState,\n table: TableInstance<TData>,\n): boolean | \"some\" | \"all\" {\n if (!row.subRows?.length) {\n return false\n }\n\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach((subRow) => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection, table)\n if (subRowChildrenSelected === \"all\") {\n someSelected = true\n } else if (subRowChildrenSelected === \"some\") {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n return allChildrenSelected ? \"all\" : someSelected ? \"some\" : false\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {SortingFn} from \"./features/sorting\"\n\nexport const reSplitAlphaNumeric: RegExp = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase(),\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId)),\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase(),\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId)),\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === \"number\") {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return \"\"\n }\n return String(a)\n }\n if (typeof a === \"string\") {\n return a\n }\n return \"\"\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport type BuiltInSortingFn =\n | \"alphanumeric\"\n | \"alphanumericCaseSensitive\"\n | \"basic\"\n | \"datetime\"\n | \"text\"\n | \"textCaseSensitive\"\n\nexport const sortingFns: Record<BuiltInSortingFn, SortingFn<any>> = {\n alphanumeric,\n alphanumericCaseSensitive,\n basic,\n datetime,\n text,\n textCaseSensitive,\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {RowModel} from \"..\"\nimport type {TableFeature} from \"../core/table\"\nimport {\n type BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from \"../sorting-fns\"\nimport type {\n Column,\n OnChangeFn,\n Row,\n RowData,\n SortingFns,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {isFunction, makeStateUpdater} from \"../utils\"\n\nexport type SortDirection = \"asc\" | \"desc\"\n\nexport interface ColumnSort {\n desc: boolean\n id: string\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | \"auto\"\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n /**\n * Enables/Disables multi-sorting for this column.\n */\n enableMultiSort?: boolean\n\n /**\n * Enables/Disables sorting for this column.\n */\n enableSorting?: boolean\n\n /**\n * Inverts the order of the sorting for this column. This is useful for values\n * that have an inverted best/worst scale where lower numbers are better, e.g.,a\n * ranking (1st, 2nd, 3rd) or golf-like scoring\n */\n invertSorting?: boolean\n\n /**\n * Set to `true` for sorting toggles on this column to start in the descending\n * direction.\n */\n sortDescFirst?: boolean\n\n /**\n * The sorting function to use with this column.\n * - A `string` referencing a built-in sorting function\n * - A custom sorting function\n */\n sortingFn?: SortingFnOption<TData>\n\n /**\n * Configure how undefined values are sorted for this column.\n *\n * @option `false`: Undefined values will be considered tied and need to be sorted by the next column filter or original index (whichever applies).\n * @option `-1`: Undefined values will be sorted with higher priority (ascending) (if ascending, undefined will appear on the beginning of the list)\n * @option `1`: Undefined values will be sorted with lower priority (descending) (if ascending, undefined will appear on the end of the list)\n */\n sortUndefined?: false | -1 | 1\n}\n\nexport interface SortingColumn<TData extends RowData> {\n /**\n * Removes this column from the table's sorting state\n */\n clearSorting: () => void\n /**\n * Returns a sort direction automatically inferred based on the columns values.\n */\n getAutoSortDir: () => SortDirection\n /**\n * Returns a sorting function automatically inferred based on the columns values.\n */\n getAutoSortingFn: () => SortingFn<TData>\n /**\n * Returns whether this column can be multi-sorted.\n */\n getCanMultiSort: () => boolean\n /**\n * Returns whether this column can be sorted.\n */\n getCanSort: () => boolean\n /**\n * Returns the first direction that should be used when sorting this column.\n */\n getFirstSortDir: () => SortDirection\n /**\n * Returns the current sort direction of this column.\n */\n getIsSorted: () => false | SortDirection\n /**\n * Returns the next sorting order.\n */\n getNextSortingOrder: () => SortDirection | false\n /**\n * Returns the index position of this column's sorting within the sorting state\n */\n getSortIndex: () => number\n /**\n * Returns the resolved sorting function to be used for this column\n */\n getSortingFn: () => SortingFn<TData>\n /**\n * Returns a function that can be used to toggle this column's sorting state. This\n * is useful for attaching a click handler to the column header.\n */\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n /**\n * Toggles this columns sorting state. If `desc` is provided, it will force the\n * sort direction to that value. If `isMulti` is provided, it will additivity\n * multi-sort the column (or toggle it if it is already sorted).\n */\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n}\n\ninterface SortingOptionsBase {\n /**\n * Enables/disables the ability to remove multi-sorts\n */\n enableMultiRemove?: boolean\n /**\n * Enables/Disables multi-sorting for the table.\n */\n enableMultiSort?: boolean\n /**\n * Enables/Disables sorting for the table.\n */\n enableSorting?: boolean\n /**\n * Enables/Disables the ability to remove sorting for the table.\n * - If `true` then changing sort order will circle like: 'none' -> 'desc' ->\n * 'asc' -> 'none' -> ... - If `false` then changing sort order will circle like:\n * 'none' -> 'desc' -> 'asc' -> 'desc' -> 'asc' -> ...\n */\n enableSortingRemoval?: boolean\n /**\n * This function is used to retrieve the sorted row model. If using server-side\n * sorting, this function is not required. To use client-side sorting, pass the\n * exported `getSortedRowModel()` from your adapter to your table or implement\n * your own.\n */\n getSortedRowModel?: (\n /** @inheritDoc */\n table: TableInstance<any>,\n ) => () => RowModel<any>\n /**\n * Pass a custom function that will be used to determine if a multi-sort event\n * should be triggered. It is passed the event from the sort toggle handler and\n * should return `true` if the event should trigger a multi-sort.\n */\n isMultiSortEvent?: (e: unknown) => boolean\n /**\n * Enables manual sorting for the table. If this is `true`, you will be expected\n * to sort your data before it is passed to the table. This is useful if you are\n * doing server-side sorting.\n */\n manualSorting?: boolean\n /**\n * Set a maximum number of columns that can be multi-sorted.\n */\n maxMultiSortColCount?: number\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.sorting` changes. This overrides the default internal state management,\n * so you will need to persist the state change either fully or partially outside\n * of the table.\n */\n onSortingChange?: OnChangeFn<SortingState>\n /**\n * If `true`, all sorts will default to descending as their first toggle state.\n */\n sortDescFirst?: boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<_TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n /** @internal */\n _getSortedRowModel?: () => RowModel<TData>\n /**\n * Returns the row model for the table before any sorting has been applied.\n */\n getPreSortedRowModel: () => RowModel<TData>\n /**\n * Returns the row model for the table after sorting has been applied.\n */\n getSortedRowModel: () => RowModel<TData>\n /**\n * Resets the `sorting` state to `initialState.sorting`, or `true` can be passed\n * to force a default blank state reset to `[]`.\n */\n resetSorting: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.sorting` state.\n */\n setSorting: (updater: Updater<SortingState>) => void\n}\n\nexport const Sorting: TableFeature = {\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === \"[object Date]\") {\n return sortingFns.datetime\n }\n\n if (typeof value === \"string\") {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n }\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === \"string\") {\n return \"asc\"\n }\n\n return \"desc\"\n }\n column.getSortingFn = () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === \"auto\"\n ? column.getAutoSortingFn()\n : (table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn])\n }\n column.toggleSorting = (desc, multi) => {\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== \"undefined\" && desc !== null\n\n table.setSorting((old) => {\n // Find any existing sorting for this column\n const existingSorting = old?.find((d) => d.id === column.id)\n const existingIndex = old?.findIndex((d) => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: \"add\" | \"remove\" | \"toggle\" | \"replace\"\n const nextDesc = hasManualValue ? desc : nextSortingOrder === \"desc\"\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = \"toggle\"\n } else {\n sortAction = \"add\"\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = \"replace\"\n } else if (existingSorting) {\n sortAction = \"toggle\"\n } else {\n sortAction = \"replace\"\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === \"toggle\") {\n // If we are \"actually\" toggling (not a manual set value), should we\n // remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = \"remove\"\n }\n }\n }\n\n if (sortAction === \"add\") {\n newSorting = [\n ...old,\n {\n desc: nextDesc,\n id: column.id,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER),\n )\n } else if (sortAction === \"toggle\") {\n // This flips (or sets) the\n newSorting = old.map((d) => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === \"remove\") {\n newSorting = old.filter((d) => d.id !== column.id)\n } else {\n newSorting = [\n {\n desc: nextDesc,\n id: column.id,\n },\n ]\n }\n\n return newSorting\n })\n }\n\n column.getFirstSortDir = () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === \"desc\"\n return sortDescFirst ? \"desc\" : \"asc\"\n }\n\n column.getNextSortingOrder = (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? (table.options.enableMultiRemove ?? true) : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === \"desc\" ? \"asc\" : \"desc\"\n }\n\n column.getCanSort = () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n }\n\n column.getCanMultiSort = () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n }\n\n column.getIsSorted = () => {\n const columnSort = table\n .getState()\n .sorting?.find((d) => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? \"desc\" : \"asc\"\n }\n\n column.getSortIndex = () =>\n table.getState().sorting?.findIndex((d) => d.id === column.id) ?? -1\n\n column.clearSorting = () => {\n // clear sorting for just 1 column\n table.setSorting((old) =>\n old?.length ? old.filter((d) => d.id !== column.id) : [],\n )\n }\n\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) {\n return\n }\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false,\n )\n }\n }\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n table.setSorting = (updater) => table.options.onSortingChange?.(updater)\n table.resetSorting = (defaultState) => {\n table.setSorting(defaultState ? [] : (table.initialState?.sorting ?? []))\n }\n table.getPreSortedRowModel = () => table.getGroupedRowModel()\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: \"auto\",\n sortUndefined: 1,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): SortingOptions<TData> => {\n return {\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n onSortingChange: makeStateUpdater(\"sorting\", table),\n }\n },\n\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {TableFeature} from \"../core/table\"\nimport type {\n Cell,\n Column,\n OnChangeFn,\n Row,\n RowData,\n TableInstance,\n Updater,\n} from \"../types\"\nimport {makeStateUpdater, memo} from \"../utils\"\n\nexport type VisibilityState = Record<string, boolean>\n\nexport interface VisibilityTableState {\n columnVisibility: VisibilityState\n}\n\nexport interface VisibilityOptions {\n enableHiding?: boolean\n /**\n * If provided, this function will be called with an `updaterFn` when\n * `state.columnVisibility` changes. This overrides the default internal state\n * management, so you will need to persist the state change either fully or\n * partially outside of the table.\n *\n * @inheritDoc\n */\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityDefaultOptions = Pick<\n VisibilityOptions,\n \"onColumnVisibilityChange\"\n>\n\nexport interface VisibilityInstance<TData extends RowData> {\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible\n * in the unpinned/center portion of the table.\n *\n * @inheritDoc\n */\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns whether all columns are visible\n */\n getIsAllColumnsVisible: () => boolean\n /**\n * Returns whether any columns are visible\n */\n getIsSomeColumnsVisible: () => boolean\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible\n * in the left portion of the table.\n *\n * @inheritDoc\n */\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * If column pinning, returns a flat array of leaf-node columns that are visible\n * in the right portion of the table.\n *\n * @inheritDoc\n */\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Returns a handler for toggling the visibility of all columns, meant to be bound\n * to a `input[type=checkbox]` element.\n */\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n /**\n * Returns a flat array of columns that are visible, including parent columns.\n *\n * @inheritDoc\n */\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n /**\n * Returns a flat array of leaf-node columns that are visible.\n *\n * @inheritDoc\n */\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n /**\n * Resets the column visibility state to the initial state. If `defaultState` is\n * provided, the state will be reset to `{}`\n */\n resetColumnVisibility: (defaultState?: boolean) => void\n /**\n * Sets or updates the `state.columnVisibility` state.\n *\n * @inheritDoc\n */\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n /**\n * Toggles the visibility of all columns.\n */\n toggleAllColumnsVisible: (value?: boolean) => void\n}\n\nexport interface VisibilityColumnDef {\n /**\n * Enables/Disables hiding the column.\n */\n enableHiding?: boolean\n}\n\nexport interface VisibilityRow<TData extends RowData> {\n /** @internal */\n _getAllVisibleCells: () => Cell<TData>[]\n /**\n * Returns an array of cells that account for column visibility for the row.\n *\n * @inheritDoc\n */\n getVisibleCells: () => Cell<TData>[]\n}\n\nexport interface VisibilityColumn {\n /**\n * Returns whether the column can be hidden.\n */\n getCanHide: () => boolean\n /**\n * Returns whether the column is visible.\n */\n getIsVisible: () => boolean\n /**\n * Returns a function that can be used to toggle the column visibility. This\n * function can be used to bind to an event handler to an element.\n */\n getToggleVisibilityHandler: () => (event: unknown) => void\n /**\n * Toggles the visibility of the column.\n */\n toggleVisibility: (value?: boolean) => void\n}\n\nexport const Visibility: TableFeature = {\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: TableInstance<TData>,\n ): void => {\n column.toggleVisibility = (value) => {\n if (column.getCanHide()) {\n table.setColumnVisibility((old) => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n }\n column.getIsVisible = () => {\n return table.getState().columnVisibility?.[column.id] ?? true\n }\n\n column.getCanHide = () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n }\n column.getToggleVisibilityHandler = () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: TableInstance<TData>,\n ): void => {\n row._getAllVisibleCells = memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n (cells) => {\n return cells.filter((cell) => cell.column.getIsVisible())\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key: process.env.NODE_ENV === \"production\" && \"row._getAllVisibleCells\",\n },\n )\n row.getVisibleCells = memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key: process.env.NODE_ENV === \"development\" && \"row.getVisibleCells\",\n },\n )\n },\n\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[],\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter((d) => d.getIsVisible())\n .map((d) => d.id)\n .join(\"_\"),\n ],\n (columns) => {\n return columns.filter((d) => d.getIsVisible?.())\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key,\n },\n )\n }\n\n table.getVisibleFlatColumns = makeVisibleColumnsMethod(\n \"getVisibleFlatColumns\",\n () => table.getAllFlatColumns(),\n )\n table.getVisibleLeafColumns = makeVisibleColumnsMethod(\n \"getVisibleLeafColumns\",\n () => table.getAllLeafColumns(),\n )\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod(\n \"getLeftVisibleLeafColumns\",\n () => table.getLeftLeafColumns(),\n )\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod(\n \"getRightVisibleLeafColumns\",\n () => table.getRightLeafColumns(),\n )\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod(\n \"getCenterVisibleLeafColumns\",\n () => table.getCenterLeafColumns(),\n )\n\n table.setColumnVisibility = (updater) =>\n table.options.onColumnVisibilityChange?.(updater)\n\n table.resetColumnVisibility = (defaultState) => {\n table.setColumnVisibility(\n defaultState ? {} : (table.initialState.columnVisibility ?? {}),\n )\n }\n\n table.toggleAllColumnsVisible = (value) => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {},\n ),\n )\n }\n\n table.getIsAllColumnsVisible = () =>\n !table.getAllLeafColumns().some((column) => !column.getIsVisible?.())\n\n table.getIsSomeColumnsVisible = () =>\n table.getAllLeafColumns().some((column) => column.getIsVisible?.())\n\n table.getToggleAllColumnsVisibilityHandler = () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked,\n )\n }\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: TableInstance<TData>,\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater(\"columnVisibility\", table),\n }\n },\n\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {\n AccessorFn,\n Column,\n ColumnDef,\n ColumnDefResolved,\n ColumnMeta,\n RowData,\n TableInstance,\n} from \"../types\"\nimport {memo} from \"../utils\"\n\nexport interface CoreColumn<TData extends RowData, TValue, TColumnMeta> {\n /**\n * The resolved accessor function to use when extracting the value for the column\n * from each row. Will only be defined if the column def has a valid accessor key\n * or function defined.\n */\n accessorFn?: AccessorFn<TData, TValue>\n\n /**\n * The original column def used to create the column.\n *\n * @inheritDoc\n */\n columnDef: ColumnDef<TData, TValue, TColumnMeta>\n\n /**\n * The child column (if the column is a group column). Will be an empty array if\n * the column is not a group column.\n *\n * @inheritDoc\n */\n columns: Column<TData, TValue>[]\n\n /**\n * The depth of the column (if grouped) relative to the root column def array.\n */\n depth: number\n\n /**\n * Returns the flattened array of this column and all child/grand-child columns\n * for this column.\n *\n * @inheritDoc\n */\n getFlatColumns: () => Column<TData, TValue>[]\n\n /**\n * Returns an array of all leaf-node columns for this column. If a column has no\n * children, it is considered the only leaf-node column.\n *\n * @inheritDoc\n */\n getLeafColumns: () => Column<TData, TValue>[]\n\n /**\n * The resolved unique identifier for the column resolved in this priority:\n * - A manual `id` property from the column def\n * - The accessor key from the column def\n * - The header string from the column def\n */\n id: string\n\n /**\n * The parent column for this column. Will be undefined if this is a root column.\n *\n * @inheritDoc\n */\n parent?: Column<TData, TValue>\n}\n\nexport function createColumn<\n TData extends RowData,\n TValue,\n TColumnMeta = ColumnMeta,\n>(\n table: TableInstance<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>,\n): Column<TData, TValue> {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n const id =\n resolvedColumnDef.id ??\n (accessorKey ? accessorKey.replace(\".\", \"_\") : undefined) ??\n (typeof resolvedColumnDef.header === \"string\"\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes(\".\")) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split(\".\")) {\n result = result?.[key]\n if (process.env.NODE_ENV !== \"production\" && result === undefined) {\n console.warn(\n `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`,\n )\n }\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`,\n )\n }\n throw new Error()\n }\n\n const column: CoreColumn<TData, any, TColumnMeta> = {\n accessorFn,\n columnDef: resolvedColumnDef as ColumnDef<TData, any, TColumnMeta>,\n columns: [],\n depth,\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as unknown as Column<TData, TValue>,\n ...column.columns?.flatMap((d) => d.getFlatColumns()),\n ]\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"production\" && \"column.getFlatColumns\",\n },\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n (orderColumns) => {\n if (column.columns?.length) {\n const leafColumns = column.columns.flatMap((column) =>\n column.getLeafColumns(),\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as unknown as Column<TData, TValue>]\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"production\" && \"column.getLeafColumns\",\n },\n ),\n id: `${String(id)}`,\n parent: parent as any,\n }\n\n for (const feature of table._features) {\n feature.createColumn?.(column, table)\n }\n\n return column as unknown as Column<TData, TValue>\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {\n Column,\n ColumnMeta,\n Header,\n HeaderGroup,\n RowData,\n TableInstance,\n} from \"../types\"\nimport {memo} from \"../utils\"\n\nimport type {TableFeature} from \"./table\"\n\nexport interface CoreHeaderGroup<TData extends RowData> {\n depth: number\n headers: Header<TData, unknown>[]\n id: string\n}\n\nexport interface HeaderContext<TData, TValue, TColumnMeta = ColumnMeta> {\n /**\n * An instance of a column.\n *\n * @inheritDoc\n */\n column: Column<TData, TValue, TColumnMeta>\n\n /**\n * An instance of a header.\n *\n * @inheritDoc\n */\n header: Header<TData, TValue, TColumnMeta>\n\n /**\n * The table instance.\n *\n * @inheritDoc\n */\n table: TableInstance<TData>\n}\n\nexport interface CoreHeader<\n TData extends RowData,\n TValue,\n TColumnMeta = ColumnMeta,\n> {\n /**\n * The {@link https://www.w3schools.com/tags/att_colspan.asp colspan} for the header.\n */\n colSpan: number\n\n /**\n * The header's associated column object.\n *\n * @inheritDoc\n */\n column: Column<TData, TValue, TColumnMeta>\n\n /**\n * The depth of the header, zero-indexed based.\n */\n depth: number\n\n /**\n * Returns the rendering context (or props) for column-based components like\n * headers, footers and filters.\n */\n getContext: () => HeaderContext<TData, TValue, TColumnMeta>\n\n /**\n * Returns the leaf headers hierarchically nested under this header.\n *\n * @inheritDoc\n */\n getLeafHeaders: () => Header<TData, any, TColumnMeta>[]\n\n /**\n * The header's associated header group object.\n *\n * @inheritDoc\n */\n headerGroup: HeaderGroup<TData>\n\n /**\n * The unique identifier for the header.\n */\n id: string\n\n /**\n * The index for the header within the header group.\n */\n index: number\n\n /**\n * A boolean denoting if the header is a placeholder header.\n */\n isPlaceholder: boolean\n\n /**\n * If the header is a placeholder header, this will be a unique header ID that\n * does not conflict with any other headers across the table.\n */\n placeholderId?: string\n\n /**\n * The row-span for the header.\n */\n rowSpan: number\n\n /**\n * The header's hierarchical sub/child headers. Will be empty if the header's\n * associated column is a leaf-column.\n *\n * @inheritDoc\n */\n subHeaders: Header<TData, TValue, TColumnMeta>[]\n}\n\nexport interface HeadersInstance<TData extends RowData> {\n /**\n * If pinning, returns headers for all columns that are not pinned, including\n * parent headers.\n *\n * @inheritDoc\n */\n getCenterFlatHeaders: () => Header<TData>[]\n\n /**\n * If pinning, returns the footer groups for columns that are not pinned.\n *\n * @inheritDoc\n */\n getCenterFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns the header groups for columns that are not pinned.\n *\n * @inheritDoc\n */\n getCenterHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns headers for all columns that are not pinned, (not including\n * parent headers).\n *\n * @inheritDoc\n */\n getCenterLeafHeaders: () => Header<TData>[]\n\n /**\n * Returns headers for all columns in the table, including parent headers.\n *\n * @inheritDoc\n */\n getFlatHeaders: () => Header<TData>[]\n\n /**\n * Returns the footer groups for the table.\n *\n * @inheritDoc\n */\n getFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns all header groups for the table.\n *\n * @inheritDoc\n */\n getHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * Returns headers for all leaf columns in the table, (not including parent\n * headers).\n *\n * @inheritDoc\n */\n getLeafHeaders: () => Header<TData>[]\n\n /**\n * If pinning, returns headers for all left pinned columns in the table, including\n * parent headers.\n *\n * @inheritDoc\n */\n getLeftFlatHeaders: () => Header<TData>[]\n\n /**\n * If pinning, returns the footer groups for the left pinned columns.\n *\n * @inheritDoc\n */\n getLeftFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns the header groups for the left pinned columns.\n *\n * @inheritDoc\n */\n getLeftHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns headers for all left pinned leaf columns in the table, (not\n * including parent headers).\n *\n * @inheritDoc\n */\n getLeftLeafHeaders: () => Header<TData>[]\n\n /**\n * If pinning, returns headers for all right pinned columns in the table,\n * including parent headers.\n *\n * @inheritDoc\n */\n getRightFlatHeaders: () => Header<TData>[]\n\n /**\n * If pinning, returns the footer groups for the right pinned columns.\n *\n * @inheritDoc\n */\n getRightFooterGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns the header groups for the right pinned columns.\n *\n * @inheritDoc\n */\n getRightHeaderGroups: () => HeaderGroup<TData>[]\n\n /**\n * If pinning, returns headers for all right pinned leaf columns in the table,\n * (not including parent headers).\n *\n * @inheritDoc\n */\n getRightLeafHeaders: () => Header<TData>[]\n}\n\nfunction createHeader<TData extends RowData, TValue, TColumnMeta = ColumnMeta>(\n table: TableInstance<TData>,\n column: Column<TData, TValue, TColumnMeta>,\n options: {\n depth: number\n id?: string\n index: number\n isPlaceholder?: boolean\n placeholderId?: string\n },\n): Header<TData, TValue, TColumnMeta> {\n const id = options.id ?? column.id\n\n const header: CoreHeader<TData, TValue, TColumnMeta> = {\n colSpan: 0,\n column,\n depth: options.depth,\n getContext: () => ({\n column,\n header: header as Header<TData, TValue, TColumnMeta>,\n table,\n }),\n getLeafHeaders: (): Header<TData, unknown, TColumnMeta>[] => {\n const leafHeaders: Header<TData, unknown, TColumnMeta>[] = []\n\n const recurseHeader = (h: CoreHeader<TData, any, TColumnMeta>) => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader)\n }\n leafHeaders.push(h as Header<TData, unknown, TColumnMeta>)\n }\n\n recurseHeader(header)\n\n return leafHeaders\n },\n headerGroup: null!,\n id,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n rowSpan: 0,\n subHeaders: [],\n }\n\n table._features.forEach((feature) => {\n feature.createHeader?.(header, table)\n })\n\n return header as Header<TData, TValue, TColumnMeta>\n}\n\nexport const Headers: TableFeature = {\n createTable: <TData extends RowData>(table: TableInstance<TData>): void => {\n // Header Groups\n\n table.getHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n const leftColumns =\n left\n ?.map((columnId) => leafColumns.find((d) => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const rightColumns =\n right\n ?.map((columnId) => leafColumns.find((d) => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n const centerColumns = leafColumns.filter(\n (column) => !left?.includes(column.id) && !right?.includes(column.id),\n )\n\n const headerGroups = buildHeaderGroups(\n allColumns,\n [...leftColumns, ...centerColumns, ...rightColumns],\n table,\n )\n\n return headerGroups\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getHeaderGroups\",\n },\n )\n\n table.getCenterHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(\n (column) => !left?.includes(column.id) && !right?.includes(column.id),\n )\n return buildHeaderGroups(allColumns, leafColumns, table, \"center\")\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getCenterHeaderGroups\",\n },\n )\n\n table.getLeftHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.left,\n ],\n (allColumns, leafColumns, left) => {\n const orderedLeafColumns =\n left\n ?.map((columnId) => leafColumns.find((d) => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, \"left\")\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getLeftHeaderGroups\",\n },\n )\n\n table.getRightHeaderGroups = memo(\n () => [\n table.getAllColumns(),\n table.getVisibleLeafColumns(),\n table.getState().columnPinning.right,\n ],\n (allColumns, leafColumns, right) => {\n const orderedLeafColumns =\n right\n ?.map((columnId) => leafColumns.find((d) => d.id === columnId)!)\n .filter(Boolean) ?? []\n\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, \"right\")\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getRightHeaderGroups\",\n },\n )\n\n // Footer Groups\n\n table.getFooterGroups = memo(\n () => [table.getHeaderGroups()],\n (headerGroups) => {\n return [...headerGroups].reverse()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getFooterGroups\",\n },\n )\n\n table.getLeftFooterGroups = memo(\n () => [table.getLeftHeaderGroups()],\n (headerGroups) => {\n return [...headerGroups].reverse()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getLeftFooterGroups\",\n },\n )\n\n table.getCenterFooterGroups = memo(\n () => [table.getCenterHeaderGroups()],\n (headerGroups) => {\n return [...headerGroups].reverse()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getCenterFooterGroups\",\n },\n )\n\n table.getRightFooterGroups = memo(\n () => [table.getRightHeaderGroups()],\n (headerGroups) => {\n return [...headerGroups].reverse()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getRightFooterGroups\",\n },\n )\n\n // Flat Headers\n\n table.getFlatHeaders = memo(\n () => [table.getHeaderGroups()],\n (headerGroups) => {\n return headerGroups\n .map((headerGroup) => {\n return headerGroup.headers\n })\n .flat()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getFlatHeaders\",\n },\n )\n\n table.getLeftFlatHeaders = memo(\n () => [table.getLeftHeaderGroups()],\n (left) => {\n return left\n .map((headerGroup) => {\n return headerGroup.headers\n })\n .flat()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getLeftFlatHeaders\",\n },\n )\n\n table.getCenterFlatHeaders = memo(\n () => [table.getCenterHeaderGroups()],\n (left) => {\n return left\n .map((headerGroup) => {\n return headerGroup.headers\n })\n .flat()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getCenterFlatHeaders\",\n },\n )\n\n table.getRightFlatHeaders = memo(\n () => [table.getRightHeaderGroups()],\n (left) => {\n return left\n .map((headerGroup) => {\n return headerGroup.headers\n })\n .flat()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getRightFlatHeaders\",\n },\n )\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(\n () => [table.getCenterFlatHeaders()],\n (flatHeaders) => {\n return flatHeaders.filter((header) => !header.subHeaders?.length)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getCenterLeafHeaders\",\n },\n )\n\n table.getLeftLeafHeaders = memo(\n () => [table.getLeftFlatHeaders()],\n (flatHeaders) => {\n return flatHeaders.filter((header) => !header.subHeaders?.length)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getLeftLeafHeaders\",\n },\n )\n\n table.getRightLeafHeaders = memo(\n () => [table.getRightFlatHeaders()],\n (flatHeaders) => {\n return flatHeaders.filter((header) => !header.subHeaders?.length)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getRightLeafHeaders\",\n },\n )\n\n table.getLeafHeaders = memo(\n () => [\n table.getLeftHeaderGroups(),\n table.getCenterHeaderGroups(),\n table.getRightHeaderGroups(),\n ],\n (left, center, right) => {\n return [\n ...(left[0]?.headers ?? []),\n ...(center[0]?.headers ?? []),\n ...(right[0]?.headers ?? []),\n ]\n .map((header) => {\n return header.getLeafHeaders()\n })\n .flat()\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugHeaders,\n key: process.env.NODE_ENV === \"development\" && \"getLeafHeaders\",\n },\n )\n },\n}\n\nexport function buildHeaderGroups<TData extends RowData>(\n allColumns: Column<TData, unknown>[],\n columnsToGroup: Column<TData, unknown>[],\n table: TableInstance<TData>,\n headerFamily?: \"center\" | \"left\" | \"right\",\n): HeaderGroup<TData>[] {\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0\n\n const findMaxDepth = (columns: Column<TData, unknown>[], depth = 1) => {\n maxDepth = Math.max(maxDepth, depth)\n\n columns\n .filter((column) => column.getIsVisible())\n .forEach((column) => {\n if (column.columns?.length) {\n findMaxDepth(column.columns, depth + 1)\n }\n }, 0)\n }\n\n findMaxDepth(allColumns)\n\n const headerGroups: HeaderGroup<TData>[] = []\n\n const createHeaderGroup = (\n headersToGroup: Header<TData, unknown>[],\n depth: number,\n ) => {\n // The header group we are creating\n const headerGroup: HeaderGroup<TData> = {\n depth,\n headers: [],\n id: [headerFamily, `${depth}`].filter(Boolean).join(\"_\"),\n }\n\n // The parent columns we're going to scan next\n const pendingParentHeaders: Header<TData, unknown>[] = []\n\n // Scan each column for parents\n headersToGroup.forEach((headerToGroup) => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]\n\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth\n\n let column: Column<TData, unknown>\n let isPlaceholder = false\n\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent\n } else {\n // The parent header is repeated\n column = headerToGroup.column\n isPlaceholder = true\n }\n\n if (\n latestPendingParentHeader &&\n latestPendingParentHeader?.column === column\n ) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup)\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n depth,\n id: [headerFamily, depth, column.id, headerToGroup?.id]\n .filter(Boolean)\n .join(\"_\"),\n index: pendingParentHeaders.length,\n isPlaceholder,\n placeholderId: isPlaceholder\n ? `${\n pendingParentHeaders.filter((d) => d.column === column).length\n }`\n : undefined,\n })\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup)\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header)\n }\n\n headerGroup.headers.push(headerToGroup)\n headerToGroup.headerGroup = headerGroup\n })\n\n headerGroups.push(headerGroup)\n\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1)\n }\n }\n\n const bottomHeaders = columnsToGroup.map((column, index) =>\n createHeader(table, column, {\n depth: maxDepth,\n index,\n }),\n )\n\n createHeaderGroup(bottomHeaders, maxDepth - 1)\n\n headerGroups.reverse()\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = (\n headers: Header<TData, unknown>[],\n ): {colSpan: number; rowSpan: number}[] => {\n const filteredHeaders = headers.filter((header) =>\n header.column.getIsVisible(),\n )\n\n return filteredHeaders.map((header) => {\n let colSpan = 0\n let rowSpan = 0\n let childRowSpans = [0]\n\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = []\n\n recurseHeadersForSpans(header.subHeaders).forEach(\n ({colSpan: childColSpan, rowSpan: childRowSpan}) => {\n colSpan += childColSpan\n childRowSpans.push(childRowSpan)\n },\n )\n } else {\n colSpan = 1\n }\n\n const minChildRowSpan = Math.min(...childRowSpans)\n rowSpan = rowSpan + minChildRowSpan\n\n header.colSpan = colSpan\n header.rowSpan = rowSpan\n\n return {colSpan, rowSpan}\n })\n }\n\n recurseHeadersForSpans(headerGroups[0]?.headers ?? [])\n\n return headerGroups\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {ColumnSizing} from \"../features/column-sizing\"\nimport {Expanding} from \"../features/expanding\"\nimport {Filters} from \"../features/filters\"\nimport {Grouping} from \"../features/grouping\"\nimport {Ordering} from \"../features/ordering\"\nimport {Pagination} from \"../features/pagination\"\nimport {Pinning} from \"../features/pinning\"\nimport {RowSelection} from \"../features/row-selection\"\nimport {Sorting} from \"../features/sorting\"\nimport {Visibility} from \"../features/visibility\"\nimport type {\n Column,\n ColumnDef,\n ColumnDefResolved,\n GroupColumnDef,\n InitialTableState,\n Row,\n RowData,\n RowModel,\n TableInstance,\n TableMeta,\n TableOptions,\n TableOptionsResolved,\n TableState,\n Updater,\n} from \"../types\"\nimport {functionalUpdate, memo, type RequiredKeys} from \"../utils\"\n\nimport {createColumn} from \"./column\"\nimport {Headers} from \"./headers\"\n\nexport interface TableFeature {\n createCell?: (cell: any, column: any, row: any, table: any) => any\n createColumn?: (column: any, table: any) => any\n createHeader?: (column: any, table: any) => any\n createRow?: (row: any, table: any) => any\n createTable?: (table: any) => any\n getDefaultColumnDef?: () => any\n getDefaultOptions?: (table: any) => any\n getInitialState?: (initialState?: InitialTableState) => any\n}\n\nconst features = [\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n] as const\n\nexport interface CoreTableState {}\n\nexport interface CoreOptions<TData extends RowData> {\n /**\n * Set this option to override any of the `autoReset...` feature options.\n */\n autoResetAll?: boolean\n\n /**\n * The array of column defs to use for the table.\n *\n * @inheritDoc\n */\n columns: ColumnDef<TData, any>[]\n\n /**\n * The data for the table to display. This array should match the type you\n * provided to `table.setRowType<...>`. Columns can access this data via\n * string/index or a functional accessor. When the `data` option changes\n * reference, the table will reprocess the data.\n */\n data: TData[]\n\n /**\n * Set this option to `true` to output all debugging information to the console.\n */\n debugAll?: boolean\n\n /**\n * Set this option to `true` to output column debugging information to the console.\n */\n debugColumns?: boolean\n\n /**\n * Set this option to `true` to output header debugging information to the console.\n */\n debugHeaders?: boolean\n\n /**\n * Set this option to `true` to output row debugging information to the console.\n */\n debugRows?: boolean\n\n /**\n * Set this option to `true` to output table debugging information to the console.\n */\n debugTable?: boolean\n\n /**\n * Default column options to use for all column defs supplied to the table.\n *\n * @inheritDoc\n */\n defaultColumn?: Partial<ColumnDef<TData>>\n\n /**\n * This required option is a factory for a function that computes and returns the\n * core row model for the table.\n *\n * @inheritDoc\n */\n getCoreRowModel?: (table: TableInstance<any>) => () => RowModel<any>\n\n /**\n * This optional function is used to derive a unique ID for any given row. If not\n * provided the rows index is used (nested rows join together with `.` using their\n * grandparents' index e.g.,`index.index.index`). If you need to identify\n * individual rows that are originating from any server-side operations, it's\n * suggested you use this function to return an ID that makes sense regardless of\n * network IO/ambiguity e.g., a userId, taskId, database ID field, etc.\n *\n * @example getRowId: row => row.userI\n */\n getRowId?: (\n originalRow: TData,\n index: number,\n /** @inheritDoc */\n parent?: Row<TData>,\n ) => string\n\n /**\n * This optional function is used to access the sub rows for any given row. If you\n * are using nested rows, you will need to use this function to return the sub\n * rows object (or undefined) from the row.\n *\n * @example getSubRows: row => row.subRow\n */\n getSubRows?: (originalRow: TData, index: number) => undefined | TData[]\n\n /**\n * Use this option to optionally pass initial state to the table. This state will\n * be used when resetting various table states either automatically by the table\n * (e.g.,`options.autoResetPageIndex`) or via functions like\n * `table.resetRowSelection()`. Most reset functions allow you to optionally pass a\n * flag to reset to a blank/default state instead of the initial state.\n *\n * Table state will not be reset when this object changes, which also means that\n * the initial state object does not need to be stable.\n *\n * @inheritDoc\n */\n initialState?: InitialTableState\n\n /**\n * This option is used to optionally implement the merging of table options.\n *\n * @inheritDoc\n */\n mergeOptions?: (\n /** @inheritDoc */\n defaultOptions: TableOptions<TData>,\n /** @inheritDoc */\n options: Partial<TableOptions<TData>>,\n ) => TableOptions<TData>\n\n /**\n * You can pass any object to `options.meta` and access it anywhere the `table` is\n * available via `table.options.meta`.\n *\n * @inheritDoc\n */\n meta?: TableMeta<TData>\n\n /**\n * The `onStateChange` option can be used to optionally listen to state changes\n * within the table.\n *\n * @inheritDoc\n */\n onStateChange: (updater: Updater<TableState>) => void\n\n /**\n * Value used when the desired value is not found in the data.\n */\n renderFallbackValue: any\n\n /**\n * The `state` option can be used to optionally _control_ part or all of the table\n * state. The state you pass here will merge with and overwrite the internal\n * automatically-managed state to produce the final state for the table. You can\n * also listen to state changes via the `onStateChange` option. > Note: Any state\n * passed in here will override both the internal state and any other\n * `initialState` you provide.\n *\n * @inheritDoc\n */\n state: Partial<TableState>\n}\n\nexport interface CoreInstance<TData extends RowData> {\n /** @internal */\n _features: readonly TableFeature[]\n /** @internal */\n _getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>\n /** @internal */\n _getColumnDefs: () => ColumnDef<TData, unknown>[]\n /** @internal */\n _getCoreRowModel?: () => RowModel<TData>\n /** @internal */\n _getDefaultColumnDef: () => Partial<ColumnDef<TData, unknown>>\n /** @internal */\n _getRowId: (_: TData, index: number, parent?: Row<TData>) => string\n /** @internal */\n _queue: (cb: () => void) => void\n\n /**\n * Returns all columns in the table in their normalized and nested hierarchy.\n *\n * @inheritDoc\n */\n getAllColumns: () => Column<TData, unknown>[]\n\n /**\n * Returns all columns in the table flattened to a single level.\n *\n * @inheritDoc\n */\n getAllFlatColumns: () => Column<TData, unknown>[]\n\n /**\n * Returns all leaf-node columns in the table flattened to a single level. This\n * does not include parent columns.\n *\n * @inheritDoc\n */\n getAllLeafColumns: () => Column<TData, unknown>[]\n\n /**\n * Returns a single column by its ID.\n *\n * @inheritDoc\n */\n getColumn: (columnId: string) => Column<TData, unknown> | undefined\n\n /**\n * Returns the core row model before any processing has been applied.\n *\n * @inheritDoc\n */\n getCoreRowModel: () => RowModel<TData>\n\n /**\n * Returns the row with the given ID.\n *\n * @inheritDoc\n */\n getRow: (id: string, searchAll?: boolean) => Row<TData>\n\n /**\n * Returns the final model after all processing from other used features has been\n * applied. This is the row model that is most commonly used for rendering.\n *\n * @inheritDoc\n */\n getRowModel: () => RowModel<TData>\n\n /**\n * Call this function to get the table's current state. It's recommended to use\n * this function and its state, especially when managing the table state manually.\n * It is the exact same state used internally by the table for every feature and\n * function it provides.\n *\n * @inheritDoc\n */\n getState: () => TableState\n\n /**\n * This is the resolved initial state of the table.\n *\n * @inheritDoc\n */\n initialState: TableState\n\n /**\n * A read-only reference to the table's current options.\n *\n * @inheritDoc\n */\n options: RequiredKeys<TableOptionsResolved<TData>, \"state\">\n\n /**\n * Call this function to reset the table state to the initial state.\n */\n reset: () => void\n\n /**\n * This function can be used to provide new table options.\n *\n * @inheritDoc\n */\n setOptions: (newOptions: Updater<TableOptionsResolved<TData>>) => void\n\n /**\n * Call this function to update the table state.\n *\n * @inheritDoc\n */\n setState: (updater: Updater<TableState>) => void\n\n /**\n * Use this function to update the table options.\n *\n * @inheritDoc\n */\n updateOptions: (options: Partial<TableOptionsResolved<TData>>) => void\n}\n\nexport function createTable<TData extends RowData>(\n options: TableOptionsResolved<TData>,\n): TableInstance<TData> {\n if (options.debugAll || options.debugTable) {\n console.info(\"Creating Table Instance...\")\n }\n\n const table = {_features: features} as unknown as TableInstance<TData>\n\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(table))\n }, {}) as TableOptionsResolved<TData>\n\n const mergeOptions = (options: TableOptionsResolved<TData>) => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {}\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n table._features.forEach((feature) => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const coreInstance: CoreInstance<TData> = {\n _features: features,\n _getAllFlatColumnsById: memo(\n () => [table.getAllFlatColumns()],\n (flatColumns) => {\n return flatColumns.reduce(\n (acc, column) => {\n acc[column.id] = column\n return acc\n },\n {} as Record<string, Column<TData, unknown>>,\n )\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getAllFlatColumnsById\",\n },\n ),\n _getColumnDefs: () => table.options.columns,\n _getDefaultColumnDef: memo(\n () => [table.options.defaultColumn],\n (defaultColumn) => {\n defaultColumn = (defaultColumn ?? {}) as Partial<\n ColumnDef<TData, unknown>\n >\n\n return {\n cell: (props) => props.getValue(),\n\n header: (props: any) => {\n const resolvedColumnDef = props.header.column\n .columnDef as ColumnDefResolved<TData>\n\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey\n }\n\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id\n }\n\n return null\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.())\n }, {}),\n ...defaultColumn,\n } as Partial<ColumnDef<TData, unknown>>\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getDefaultColumnDef\",\n },\n ),\n _getRowId: (row: TData, index: number, parent?: Row<TData>) =>\n table.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join(\".\") : index}`,\n _queue: (cb) => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch((error) =>\n setTimeout(() => {\n throw error\n }),\n )\n }\n },\n\n getAllColumns: memo(\n () => [table._getColumnDefs()],\n (columnDefs) => {\n const recurseColumns = (\n columnDefs: ColumnDef<TData, unknown>[],\n parent?: Column<TData, unknown>,\n depth = 0,\n ): Column<TData, unknown>[] => {\n return columnDefs.map((columnDef) => {\n const column = createColumn(table, columnDef, depth, parent)\n\n const groupingColumnDef = columnDef as GroupColumnDef<\n TData,\n unknown\n >\n\n column.columns = groupingColumnDef.columns\n ? recurseColumns(groupingColumnDef.columns, column, depth + 1)\n : []\n\n return column\n })\n }\n\n return recurseColumns(columnDefs)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getAllColumns\",\n },\n ),\n\n getAllFlatColumns: memo(\n () => [table.getAllColumns()],\n (allColumns) => {\n return allColumns.flatMap((column) => {\n return column.getFlatColumns()\n })\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getAllFlatColumns\",\n },\n ),\n\n getAllLeafColumns: memo(\n () => [table.getAllColumns(), table._getOrderColumnsFn()],\n (allColumns, orderColumns) => {\n const leafColumns = allColumns.flatMap((column) =>\n column.getLeafColumns(),\n )\n return orderColumns(leafColumns)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n key: process.env.NODE_ENV === \"development\" && \"getAllLeafColumns\",\n },\n ),\n\n getColumn: (columnId) => {\n const column = table._getAllFlatColumnsById()[columnId]\n\n if (process.env.NODE_ENV !== \"production\" && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`)\n }\n\n return column\n },\n\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options?.getCoreRowModel?.(table)\n }\n\n return table._getCoreRowModel!()\n },\n\n getRow: (id: string, searchAll?: boolean) => {\n let row = (\n searchAll ? table.getPrePaginationRowModel() : table.getRowModel()\n ).rowsById[id]\n\n if (!row) {\n row = table.getCoreRowModel().rowsById[id]\n if (!row) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(`getRow could not find row with ID: ${id}`)\n }\n throw new Error()\n }\n }\n\n return row\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n getRowModel: () => {\n return table.getPaginationRowModel()\n },\n\n getState: () => {\n return table.options.state as TableState\n },\n\n initialState,\n\n options: {\n ...defaultOptions,\n ...options,\n },\n\n reset: () => {\n table.setState(table.initialState)\n },\n\n setOptions: (updater) => {\n const newOptions = functionalUpdate(updater, table.options)\n table.options = mergeOptions(newOptions) as RequiredKeys<\n TableOptionsResolved<TData>,\n \"state\"\n >\n },\n\n setState: (updater: Updater<TableState>) => {\n table.options.onStateChange?.(updater)\n },\n\n updateOptions: (options) => {\n table.options = {...table.options, ...options}\n },\n }\n\n Object.assign(table, coreInstance)\n\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index]\n feature?.createTable?.(table)\n }\n\n return table\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {\n Cell,\n Column,\n ColumnMeta,\n Row,\n RowData,\n TableInstance,\n} from \"../types\"\nimport {type Getter, memo} from \"../utils\"\n\nexport interface CellContext<\n TData extends RowData,\n TValue,\n TColumnMeta = ColumnMeta,\n> {\n /** @inheritDoc */\n cell: Cell<TData, TValue, TColumnMeta>\n\n /** @inheritDoc */\n column: Column<TData, TValue, TColumnMeta>\n\n /**\n * Returns the value of the cell.\n */\n getValue: Getter<TValue>\n\n /** @inheritDoc */\n row: Row<TData>\n\n /** @inheritDoc */\n table: TableInstance<TData>\n}\n\nexport interface CoreCell<\n TData extends RowData,\n TValue,\n TColumnMeta = ColumnMeta,\n> {\n /**\n * The associated Column object for the cell.\n *\n * @inheritDoc\n */\n column: Column<TData, TValue, TColumnMeta>\n\n /**\n * Returns the rendering context for cell-based components like cells and\n * aggregated cells.\n */\n getContext: () => CellContext<TData, TValue>\n\n /**\n * Returns the value for the cell, accessed via the associated column's accessor\n * key or accessor function.\n */\n getValue: Getter<TValue>\n\n /**\n * The unique ID for the cell across the entire table.\n */\n id: string\n\n /**\n * The associated Row object for the cell.\n *\n * @inheritDoc\n */\n row: Row<TData>\n}\n\nexport function createCell<TData extends RowData, TValue>(\n table: TableInstance<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string,\n): Cell<TData, TValue> {\n const cell: CoreCell<TData, TValue> = {\n column,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n cell: cell as Cell<TData, TValue>,\n column,\n getValue: cell.getValue,\n row,\n table,\n }),\n {\n debug: () => table.options.debugAll,\n key: process.env.NODE_ENV === \"development\" && \"cell.getContext\",\n },\n ),\n getValue: () => row.getValue(columnId),\n id: `${row.id}_${column.id}`,\n row,\n }\n\n table._features.forEach((feature) => {\n feature.createCell?.(cell as Cell<TData, TValue>, column, row, table)\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Cell, Row, RowData, TableInstance} from \"../types\"\nimport {flattenBy, memo} from \"../utils\"\n\nimport {createCell} from \"./cell\"\n\nexport interface CoreRow<TData extends RowData> {\n /** @internal */\n _getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>\n /** @internal */\n _uniqueValuesCache: Record<string, unknown>\n /** @internal */\n _valuesCache: Record<string, unknown>\n\n /**\n * The depth of the row (if nested or grouped) relative to the root row array.\n */\n depth: number\n\n /**\n * Returns all of the cells for the row.\n *\n * @inheritDoc\n */\n getAllCells: () => Cell<TData, unknown>[]\n\n /**\n * Returns the leaf rows for the row, not including any parent rows.\n *\n * @inheritDoc\n */\n getLeafRows: () => Row<TData>[]\n\n /**\n * Returns the parent row for the row, if it exists.\n *\n * @inheritDoc\n */\n getParentRow: () => Row<TData> | undefined\n\n /**\n * Returns the parent rows for the row, all the way up to a root row.\n *\n * @inheritDoc\n */\n getParentRows: () => Row<TData>[]\n\n /**\n * Returns a unique array of values from the row for a given columnId.\n */\n getUniqueValues: <TValue>(columnId: string) => TValue[]\n\n /**\n * Returns the value from the row for a given columnId.\n */\n getValue: <TValue>(columnId: string) => TValue\n\n /**\n * The resolved unique identifier for the row resolved via the `options.getRowId`\n * option. Defaults to the row's index (or relative index if it is a subRow).\n */\n id: string\n\n /**\n * The index of the row within its parent array (or the root data array).\n */\n index: number\n\n /**\n * The original row object provided to the table. If the row is a grouped row, the\n * original row object will be the first original in the group.\n */\n original: TData\n\n /**\n * An array of the original subRows as returned by the `options.getSubRows` option.\n */\n originalSubRows?: TData[]\n\n /**\n * If nested, this row's parent row id.\n */\n parentId?: string\n\n /**\n * An array of subRows for the row as returned and created by the\n * `options.getSubRows` option.\n *\n * @inheritDoc\n */\n subRows: Row<TData>[]\n}\n\nexport const createRow = <TData extends RowData>(\n table: TableInstance<TData>,\n id: string,\n original: TData,\n rowIndex: number,\n depth: number,\n subRows?: Row<TData>[],\n parentId?: string,\n): Row<TData> => {\n const row: CoreRow<TData> = {\n _getAllCellsByColumnId: memo(\n () => [row.getAllCells()],\n (allCells) => {\n return allCells.reduce(\n (acc, cell) => {\n acc[cell.column.id] = cell\n return acc\n },\n {} as Record<string, Cell<TData, unknown>>,\n )\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key:\n process.env.NODE_ENV === \"production\" && \"row.getAllCellsByColumnId\",\n },\n ),\n _uniqueValuesCache: {},\n _valuesCache: {},\n depth,\n getAllCells: memo(\n () => [table.getAllLeafColumns()],\n (leafColumns) => {\n return leafColumns.map((column) => {\n return createCell(table, row as Row<TData>, column, column.id)\n })\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugRows,\n key: process.env.NODE_ENV === \"development\" && \"row.getAllCells\",\n },\n ),\n getLeafRows: () => flattenBy(row.subRows, (d) => d.subRows),\n getParentRow: () =>\n row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n const parentRows: Row<TData>[] = []\n let currentRow = row\n while (true) {\n const parentRow = currentRow.getParentRow()\n if (!parentRow) {\n break\n }\n parentRows.push(parentRow)\n currentRow = parentRow\n }\n return parentRows.reverse()\n },\n getUniqueValues: (columnId) => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)]\n return row._uniqueValuesCache[columnId]\n }\n\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(\n row.original,\n rowIndex,\n )\n\n return row._uniqueValuesCache[columnId] as any\n },\n getValue: (columnId) => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n const column = table.getColumn(columnId)\n\n if (!column?.accessorFn) {\n return undefined\n }\n\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex)\n\n return row._valuesCache[columnId] as any\n },\n id,\n index: rowIndex,\n original,\n parentId,\n subRows: subRows ?? [],\n }\n\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i]\n feature?.createRow?.(row, table)\n }\n\n return row as Row<TData>\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {\n AccessorFn,\n ColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from \"./types\"\nimport type {DeepKeys, DeepValue} from \"./utils\"\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>,\n ) => ColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => ColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => ColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData,\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === \"function\"\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: (column) => column as ColumnDef<TData, unknown>,\n group: (column) => column as ColumnDef<TData, unknown>,\n }\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {createRow} from \"../core/row\"\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\n\nexport function filterRows<TData extends RowData>(\n rows: Row<TData>[],\n filterRowImpl: (row: Row<TData>) => any,\n table: TableInstance<TData>,\n): RowModel<TData> {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nexport function filterRowModelFromLeafs<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => Row<TData>[],\n table: TableInstance<TData>,\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n const rows: Row<TData>[] = []\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]\n\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n )\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows?.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return rows\n }\n\n return {\n flatRows: newFilteredFlatRows,\n rows: recurseFilterRows(rowsToFilter),\n rowsById: newFilteredRowsById,\n }\n}\n\nexport function filterRowModelFromRoot<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => any,\n table: TableInstance<TData>,\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n // Filter from parents downward first\n\n const rows: Row<TData>[] = []\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]\n\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows?.length && depth < maxDepth) {\n const newRow = createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId,\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n rows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return rows\n }\n\n return {\n flatRows: newFilteredFlatRows,\n rows: recurseFilterRows(rowsToFilter),\n rowsById: newFilteredRowsById,\n }\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {createRow} from \"../core/row\"\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nexport function getCoreRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [table.options.data],\n (\n data,\n ): {\n flatRows: Row<TData>[]\n rows: Row<TData>[]\n rowsById: Record<string, Row<TData>>\n } => {\n const rowModel: RowModel<TData> = {\n flatRows: [],\n rows: [],\n rowsById: {},\n }\n\n const accessRows = (\n originalRows: TData[],\n depth = 0,\n parentRow?: Row<TData>,\n ): Row<TData>[] => {\n const rows = [] as Row<TData>[]\n\n originalRows.forEach((originalRow, i) => {\n // Make the row\n const row = createRow(\n table,\n table._getRowId(originalRow, i, parentRow),\n originalRow,\n i,\n depth,\n undefined,\n parentRow?.id,\n )\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row)\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row\n // Push table row into parent\n rows.push(row)\n\n // Get the original subrows\n if (table.options.getSubRows) {\n row.originalSubRows = table.options.getSubRows(originalRow, i)\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row)\n }\n }\n })\n\n return rows\n }\n\n rowModel.rows = accessRows(data)\n\n return rowModel\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getRowModel\",\n onChange: () => {\n table._autoResetPageIndex()\n },\n },\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nexport function getExpandedRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [\n table.getState().expanded,\n table.getPreExpandedRowModel(),\n table.options.paginateExpandedRows,\n ],\n (expanded, rowModel, paginateExpandedRows) => {\n if (\n !rowModel.rows.length ||\n (expanded !== true && !Object.keys(expanded ?? {}).length)\n ) {\n return rowModel\n }\n\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel\n }\n\n return expandRows(rowModel)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getExpandedRowModel\",\n },\n )\n}\n\nexport function expandRows<TData extends RowData>(\n rowModel: RowModel<TData>,\n): {\n flatRows: Row<TData>[]\n rows: Row<TData>[]\n rowsById: Record<string, Row<TData>>\n} {\n const expandedRows: Row<TData>[] = []\n\n const handleRow = (row: Row<TData>) => {\n expandedRows.push(row)\n\n if (row.subRows?.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rowModel.rows.forEach(handleRow)\n\n return {\n flatRows: rowModel.flatRows,\n rows: expandedRows,\n rowsById: rowModel.rowsById,\n }\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {RowData, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nexport function getFacetedMinMaxValues<TData extends RowData>(): (\n table: TableInstance<TData>,\n columnId: string,\n) => () => undefined | [number, number] {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n (facetedRowModel) => {\n if (!facetedRowModel) {\n return undefined\n }\n\n const firstValue =\n facetedRowModel.flatRows[0]?.getUniqueValues(columnId)\n\n if (typeof firstValue === \"undefined\") {\n return undefined\n }\n\n const facetedMinMaxValues: [any, any] = [firstValue, firstValue]\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i].getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]\n\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value\n }\n }\n }\n\n return facetedMinMaxValues\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key:\n process.env.NODE_ENV === \"development\" &&\n `getFacetedMinMaxValues_${columnId}`,\n onChange: () => {},\n },\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nimport {filterRows} from \"./filter-rows-utils\"\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n columnId: string,\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map((d) => d.id).filter((d) => d !== columnId),\n globalFilter ? \"__global__\" : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key:\n process.env.NODE_ENV === \"development\" &&\n `getFacetedRowModel_${columnId}`,\n onChange: () => {},\n },\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {ResolvedColumnFilter} from \"../features/filters\"\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nimport {filterRows} from \"./filter-rows-utils\"\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {}\n rowModel.flatRows[i].columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach((d) => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column.getFilterFn()\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`,\n )\n }\n return\n }\n\n resolvedColumnFilters.push({\n filterFn,\n id: d.id,\n resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\n })\n })\n\n const filterableIds = columnFilters.map((d) => d.id)\n\n const globalFilterFn = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter((column) => column.getCanGlobalFilter())\n\n if (\n globalFilter &&\n globalFilterFn &&\n globallyFilterableColumns.length\n ) {\n filterableIds.push(\"__global__\")\n\n globallyFilterableColumns.forEach((column) => {\n resolvedGlobalFilters.push({\n filterFn: globalFilterFn,\n id: column.id,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ??\n globalFilter,\n })\n })\n }\n\n let currentColumnFilter\n let currentGlobalFilter\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j]\n\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n (filterMeta) => {\n row.columnFiltersMeta[id] = filterMeta\n },\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n (filterMeta) => {\n row.columnFiltersMeta[id] = filterMeta\n },\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getFilteredRowModel\",\n onChange: () => {\n table._autoResetPageIndex()\n },\n },\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {createRow} from \"../core/row\"\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {flattenBy, memo} from \"../utils\"\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter((columnId) =>\n table.getColumn(columnId),\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string,\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map((row) => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = existingGrouping[depth]\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, (row) => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0].original,\n index,\n depth,\n undefined,\n parentId,\n )\n\n Object.assign(row, {\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows,\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n groupingColumnId: columnId,\n groupingValue,\n leafRows,\n subRows,\n })\n\n subRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n },\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach((subRow) => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n flatRows: groupedFlatRows,\n rows: groupedRows,\n rowsById: groupedRowsById,\n }\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getGroupedRowModel\",\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n },\n },\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nimport {expandRows} from \"./get-expanded-row-model\"\n\nexport function getPaginationRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [\n table.getState().pagination,\n table.getPrePaginationRowModel(),\n table.options.paginateExpandedRows\n ? undefined\n : table.getState().expanded,\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const {pageIndex, pageSize} = pagination\n let {rows} = rowModel\n const {flatRows, rowsById} = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n let paginatedRowModel: RowModel<TData>\n\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n flatRows,\n rows,\n rowsById,\n })\n } else {\n paginatedRowModel = {\n flatRows,\n rows,\n rowsById,\n }\n }\n\n paginatedRowModel.flatRows = []\n\n const handleRow = (row: Row<TData>) => {\n paginatedRowModel.flatRows.push(row)\n if (row.subRows.length) {\n row.subRows.forEach(handleRow)\n }\n }\n\n paginatedRowModel.rows.forEach(handleRow)\n\n return paginatedRowModel\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: process.env.NODE_ENV === \"development\" && \"getPaginationRowModel\",\n },\n )\n}\n", "// Modified from https://github.com/tanstack/table\n// MIT License\n// Changes from Qualcomm Technologies, Inc. are provided under the following license:\n// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport type {SortingFn} from \"../features/sorting\"\nimport type {Row, RowData, RowModel, TableInstance} from \"../types\"\nimport {memo} from \"../utils\"\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: TableInstance<TData>,\n) => () => RowModel<TData> {\n return (table) =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter((sort) =>\n table.getColumn(sort.id)?.getCanSort(),\n )\n\n const columnInfoById: Record<\n string,\n {\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n sortUndefined?: false | -1 | 1\n }\n > = {}\n\n availableSorting.forEach((sortEntry) => {\n const column = table.getColumn(sortEntry.id)\n if (!column) {\n return\n }\n\n columnInfoById[sortEntry.id] = {\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n sortUndefined: column.columnDef.sortUndefined,\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map((row) => ({...row}))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]\n const columnInfo = columnInfoById[sortEntry.id]\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? columnInfo.sortUndefined\n : -columnInfo.sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach((row) => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n flatRows: sortedFlatRows,\n rows: sortData(rowModel.rows),\n rowsById: rowModel.rowsById,\n }\n },\n {\n debug: () => table.options.debugAll ?? table.options.debugTable,\n key: \"\",\n onChange: () => {\n table._autoResetPageIndex()\n },\n },\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["table_exports", "__export", "ColumnSizing", "Expanding", "Filters", "Grouping", "Headers", "Ordering", "Pagination", "Pinning", "RowSelection", "Sorting", "Visibility", "aggregationFns", "buildHeaderGroups", "createCell", "createColumn", "createColumnHelper", "createRow", "createTable", "defaultColumnSizing", "expandRows", "filterFns", "filterRowModelFromLeafs", "filterRowModelFromRoot", "filterRows", "flattenBy", "functionalUpdate", "getCoreRowModel", "getExpandedRowModel", "getFacetedMinMaxValues", "getFacetedRowModel", "getFilteredRowModel", "getGroupedRowModel", "getPaginationRowModel", "getSortedRowModel", "isFunction", "isNumberArray", "isRowSelected", "isSubRowSelected", "makeStateUpdater", "memo", "noop", "orderColumns", "passiveEventSupported", "reSplitAlphaNumeric", "safeDocument", "safeWindow", "selectRowsFn", "shouldAutoRemoveFilter", "sortingFns", "__toCommonJS", "safeDocument", "safeWindow", "functionalUpdate", "updater", "input", "noop", "makeStateUpdater", "key", "instance", "old", "isFunction", "d", "isNumberArray", "val", "flattenBy", "arr", "getChildren", "flat", "recurse", "subArr", "item", "children", "memo", "getDeps", "fn", "opts", "deps", "result", "depTime", "newDeps", "dep", "index", "resultTime", "depEndTime", "resultEndTime", "resultFpsPercentage", "pad", "str", "num", "defaultColumnSizing", "getDefaultColumnSizingInfoState", "ColumnSizing", "column", "table", "columnSize", "position", "columns", "index", "d", "prevSiblingColumn", "_", "rest", "header", "sum", "recurse", "prevSiblingHeader", "canResize", "e", "isTouchStartEvent", "startSize", "columnSizingStart", "clientX", "newColumnSizing", "updateOffset", "eventType", "clientXPos", "old", "deltaDirection", "deltaOffset", "deltaPercentage", "columnId", "headerSize", "onMove", "onEnd", "mouseEvents", "safeDocument", "touchEvents", "passiveIfSupported", "passiveEventSupported", "updater", "defaultState", "makeStateUpdater", "state", "passiveSupported", "supported", "options", "noop", "safeWindow", "Expanding", "row", "table", "expanded", "old", "exists", "oldExpanded", "rowId", "_", "rest", "isFullyExpanded", "currentRow", "canExpand", "registered", "queued", "updater", "defaultState", "e", "maxDepth", "id", "splitId", "makeStateUpdater", "state", "includesString", "row", "columnId", "filterValue", "search", "val", "testFalsy", "includesStringSensitive", "equalsString", "arrIncludes", "arrIncludesAll", "arrIncludesSome", "equals", "weakEquals", "inNumberRange", "min", "max", "rowValue", "unsafeMin", "unsafeMax", "parsedMin", "parsedMax", "temp", "filterFns", "Filters", "column", "table", "value", "filterFns", "isFunction", "d", "old", "filterFn", "previousfilter", "newFilter", "functionalUpdate", "shouldAutoRemoveFilter", "newFilterObj", "row", "_table", "globalFilterFn", "updater", "leafColumns", "updateFn", "filter", "defaultState", "makeStateUpdater", "state", "sum", "columnId", "_leafRows", "childRows", "next", "nextValue", "min", "row", "value", "max", "extent", "mean", "leafRows", "count", "median", "values", "isNumberArray", "mid", "nums", "a", "b", "unique", "d", "uniqueCount", "_columnId", "aggregationFns", "Grouping", "cell", "column", "row", "table", "old", "d", "canGroup", "value", "aggregationFns", "isFunction", "columnId", "updater", "defaultState", "props", "makeStateUpdater", "state", "orderColumns", "leafColumns", "grouping", "groupedColumnMode", "nonGroupingColumns", "col", "g", "Ordering", "table", "updater", "defaultState", "memo", "columnOrder", "grouping", "groupedColumnMode", "columns", "orderedColumns", "columnOrderCopy", "columnsCopy", "targetColumnId", "foundIndex", "d", "orderColumns", "makeStateUpdater", "state", "defaultPageIndex", "defaultPageSize", "getDefaultPaginationState", "Pagination", "table", "registered", "queued", "updater", "safeUpdater", "old", "functionalUpdate", "defaultState", "pageIndex", "maxPageIndex", "pageSize", "topRowIndex", "newPageCount", "memo", "pageCount", "pageOptions", "_", "makeStateUpdater", "state", "getDefaultColumnPinningState", "getDefaultRowPinningState", "Pinning", "column", "table", "position", "columnIds", "d", "old", "getIsColumnPinned", "row", "includeLeafRows", "includeParentRows", "leafRowIds", "id", "parentRowIds", "rowIds", "enablePinning", "enableRowPinning", "getIsRowPinned", "memo", "allCells", "left", "right", "leftAndRight", "columnId", "cell", "updater", "defaultState", "pinningState", "allColumns", "visibleRows", "pinnedRowIds", "rowId", "allRows", "top", "bottom", "topAndBottom", "makeStateUpdater", "state", "leafColumnIds", "isLeft", "isRight", "isTop", "isBottom", "RowSelection", "row", "table", "value", "opts", "isSelected", "old", "selectedRowIds", "mutateRowIsSelected", "syncParentRowSelection", "rowSelection", "isRowSelected", "isSubRowSelected", "canSelect", "e", "updater", "defaultState", "preGroupedFlatRows", "resolvedValue", "memo", "rowModel", "selectRowsFn", "isAllRowsSelected", "paginationFlatRows", "isAllPageRowsSelected", "totalSelected", "d", "makeStateUpdater", "state", "id", "includeChildren", "key", "newSelectedFlatRows", "newSelectedRowsById", "recurseRows", "rows", "depth", "selection", "parentRow", "selected", "isAllSubRowsSelected", "allChildrenSelected", "someSelected", "subRow", "subRowChildrenSelected", "reSplitAlphaNumeric", "alphanumeric", "rowA", "rowB", "columnId", "compareAlphanumeric", "toString", "alphanumericCaseSensitive", "text", "compareBasic", "textCaseSensitive", "datetime", "a", "b", "basic", "aStr", "bStr", "aa", "bb", "an", "bn", "combo", "sortingFns", "Sorting", "column", "table", "firstRows", "isString", "row", "value", "sortingFns", "reSplitAlphaNumeric", "isFunction", "desc", "multi", "nextSortingOrder", "hasManualValue", "old", "existingSorting", "d", "existingIndex", "newSorting", "sortAction", "nextDesc", "firstSortDirection", "isSorted", "columnSort", "canSort", "e", "updater", "defaultState", "makeStateUpdater", "state", "Visibility", "column", "table", "value", "old", "e", "row", "memo", "cells", "cell", "left", "center", "right", "makeVisibleColumnsMethod", "key", "getColumns", "d", "columns", "updater", "defaultState", "obj", "makeStateUpdater", "state", "createColumn", "table", "columnDef", "depth", "parent", "resolvedColumnDef", "accessorKey", "id", "accessorFn", "originalRow", "result", "key", "column", "memo", "d", "orderColumns", "leafColumns", "feature", "createHeader", "table", "column", "options", "id", "header", "leafHeaders", "recurseHeader", "h", "feature", "Headers", "memo", "allColumns", "leafColumns", "left", "right", "leftColumns", "columnId", "d", "rightColumns", "centerColumns", "buildHeaderGroups", "orderedLeafColumns", "headerGroups", "headerGroup", "flatHeaders", "center", "columnsToGroup", "headerFamily", "maxDepth", "findMaxDepth", "columns", "depth", "createHeaderGroup", "headersToGroup", "pendingParentHeaders", "headerToGroup", "latestPendingParentHeader", "isLeafHeader", "isPlaceholder", "bottomHeaders", "index", "recurseHeadersForSpans", "headers", "colSpan", "rowSpan", "childRowSpans", "childColSpan", "childRowSpan", "minChildRowSpan", "features", "Headers", "Visibility", "Ordering", "Pinning", "Filters", "Sorting", "Grouping", "Expanding", "Pagination", "RowSelection", "ColumnSizing", "createTable", "options", "table", "defaultOptions", "obj", "feature", "mergeOptions", "initialState", "queued", "queuedTimeout", "coreInstance", "memo", "flatColumns", "acc", "column", "defaultColumn", "props", "resolvedColumnDef", "row", "index", "parent", "cb", "error", "columnDefs", "recurseColumns", "depth", "columnDef", "createColumn", "groupingColumnDef", "allColumns", "orderColumns", "leafColumns", "columnId", "id", "searchAll", "updater", "newOptions", "functionalUpdate", "createCell", "table", "row", "column", "columnId", "cell", "memo", "feature", "createRow", "table", "id", "original", "rowIndex", "depth", "subRows", "parentId", "row", "memo", "allCells", "acc", "cell", "leafColumns", "column", "createCell", "flattenBy", "d", "parentRows", "currentRow", "parentRow", "columnId", "i", "createColumnHelper", "accessor", "column", "filterRows", "rows", "filterRowImpl", "table", "filterRowModelFromLeafs", "filterRowModelFromRoot", "rowsToFilter", "filterRow", "newFilteredFlatRows", "newFilteredRowsById", "maxDepth", "recurseFilterRows", "depth", "i", "row", "newRow", "createRow", "getCoreRowModel", "table", "memo", "data", "rowModel", "accessRows", "originalRows", "depth", "parentRow", "rows", "originalRow", "i", "row", "createRow", "getExpandedRowModel", "table", "memo", "expanded", "rowModel", "paginateExpandedRows", "expandRows", "expandedRows", "handleRow", "row", "getFacetedMinMaxValues", "table", "columnId", "memo", "facetedRowModel", "firstValue", "facetedMinMaxValues", "i", "values", "j", "value", "getFacetedRowModel", "table", "columnId", "memo", "preRowModel", "columnFilters", "globalFilter", "filterableIds", "d", "filterRowsImpl", "row", "i", "filterRows", "getFilteredRowModel", "table", "memo", "rowModel", "columnFilters", "globalFilter", "i", "resolvedColumnFilters", "resolvedGlobalFilters", "d", "column", "filterFn", "filterableIds", "globalFilterFn", "globallyFilterableColumns", "currentColumnFilter", "currentGlobalFilter", "j", "row", "id", "filterMeta", "filterRowsImpl", "filterRows", "getGroupedRowModel", "table", "memo", "grouping", "rowModel", "existingGrouping", "columnId", "groupedFlatRows", "groupedRowsById", "groupUpRecursively", "rows", "depth", "parentId", "row", "rowGroupsMap", "groupBy", "groupingValue", "groupedRows", "index", "id", "subRows", "leafRows", "flattenBy", "createRow", "aggregateFn", "subRow", "groupMap", "map", "resKey", "previous", "getPaginationRowModel", "table", "memo", "pagination", "rowModel", "pageIndex", "pageSize", "rows", "flatRows", "rowsById", "pageStart", "pageEnd", "paginatedRowModel", "expandRows", "handleRow", "row", "getSortedRowModel", "table", "memo", "sorting", "rowModel", "sortingState", "sortedFlatRows", "availableSorting", "sort", "columnInfoById", "sortEntry", "column", "sortData", "rows", "sortedData", "row", "rowA", "rowB", "i", "columnInfo", "isDesc", "sortInt", "aValue", "bValue", "aUndefined", "bUndefined"]
|
|
7
|
+
}
|