@1771technologies/lytenyte-pro 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/cell-selection/cell-selection-containers.js +5 -5
  2. package/dist/cell-selection/cell-selection-driver.js +9 -9
  3. package/dist/cell-selection/cell-style-row.js +1 -1
  4. package/dist/cell-selection/split-on-pivot.js +1 -1
  5. package/dist/cells/+types.cell.d.ts +13 -0
  6. package/dist/cells/+types.cell.js +1 -0
  7. package/dist/cells/cell-editor.js +2 -2
  8. package/dist/cells/cell-spacer.d.ts +9 -3
  9. package/dist/cells/cell-spacer.js +10 -13
  10. package/dist/cells/cell.js +20 -17
  11. package/dist/cells/use-cell-style.d.ts +3 -0
  12. package/dist/cells/use-cell-style.js +51 -0
  13. package/dist/column-manager/branch.js +4 -4
  14. package/dist/column-manager/column-manager.d.ts +7 -7
  15. package/dist/column-manager/column-manager.js +8 -8
  16. package/dist/column-manager/label.js +1 -1
  17. package/dist/column-manager/leaf.js +4 -4
  18. package/dist/column-manager/move-handle.js +3 -3
  19. package/dist/column-manager/panel.js +1 -1
  20. package/dist/column-manager/root.js +3 -3
  21. package/dist/column-manager/use-column-manager.js +1 -1
  22. package/dist/column-manager/visibility-checkbox.js +3 -3
  23. package/dist/filter-tree/branch.js +3 -3
  24. package/dist/filter-tree/context.d.ts +2 -2
  25. package/dist/filter-tree/hooks/use-filter-tree.js +1 -1
  26. package/dist/filter-tree/inclusion-checkbox.js +1 -1
  27. package/dist/filter-tree/label.js +1 -1
  28. package/dist/filter-tree/leaf.js +3 -3
  29. package/dist/filter-tree/root.js +3 -3
  30. package/dist/grid-box/grid-box.d.ts +5 -5
  31. package/dist/grid-box/grid-box.js +6 -6
  32. package/dist/grid-box/item.js +2 -2
  33. package/dist/grid-box/panel.js +2 -2
  34. package/dist/grid-box/root.d.ts +1 -1
  35. package/dist/grid-box/root.js +3 -3
  36. package/dist/grid.d.ts +8 -8
  37. package/dist/grid.js +12 -12
  38. package/dist/header/header-cell.js +4 -4
  39. package/dist/header/header-group-cell.js +2 -2
  40. package/dist/header/header-row.js +1 -1
  41. package/dist/header/header.js +1 -1
  42. package/dist/header/resize-handler.js +1 -1
  43. package/dist/header/use-header-cell-renderer.js +1 -1
  44. package/dist/icons/index.js +3 -1
  45. package/dist/index.d.ts +4 -4
  46. package/dist/index.js +4 -4
  47. package/dist/listbox/item.js +1 -1
  48. package/dist/listbox/panel.js +1 -1
  49. package/dist/listbox/root.js +1 -1
  50. package/dist/root/dialog-driver.js +1 -1
  51. package/dist/root/popover-driver.js +1 -1
  52. package/dist/root/root.js +5 -5
  53. package/dist/row-data-source-client/pivots/create-agg-model.d.ts +2 -2
  54. package/dist/row-data-source-client/pivots/create-agg-model.js +1 -1
  55. package/dist/row-data-source-client/use-client-data-source-paginated.js +2 -0
  56. package/dist/row-data-source-client/use-client-data-source.js +2 -0
  57. package/dist/row-data-source-client/use-client-tree-data-source.js +2 -0
  58. package/dist/rows/row/context.d.ts +8 -0
  59. package/dist/rows/row/context.js +11 -1
  60. package/dist/rows/row/row.d.ts +1 -1
  61. package/dist/rows/row/row.js +9 -7
  62. package/dist/rows/row/use-row-context-value.d.ts +4 -4
  63. package/dist/rows/row/use-row-context-value.js +18 -3
  64. package/dist/rows/row-detail-row.js +1 -1
  65. package/dist/rows/row-full-width.js +7 -5
  66. package/dist/rows/rows-container.js +1 -1
  67. package/dist/rows/rows-sections.js +3 -3
  68. package/dist/rows/scrollers/native-scroller.js +1 -15
  69. package/dist/sort-manager/root.d.ts +1 -1
  70. package/dist/sort-manager/root.js +1 -1
  71. package/dist/sort-manager/sort-add.js +1 -1
  72. package/dist/sort-manager/sort-apply.js +2 -2
  73. package/dist/sort-manager/sort-cancel.js +2 -2
  74. package/dist/sort-manager/sort-clear.js +1 -1
  75. package/dist/sort-manager/sort-column-select.js +1 -1
  76. package/dist/sort-manager/sort-direction-select.js +1 -1
  77. package/dist/sort-manager/sort-manager.d.ts +11 -11
  78. package/dist/sort-manager/sort-manager.js +12 -12
  79. package/dist/sort-manager/sort-remove.js +1 -1
  80. package/dist/sort-manager/sort-row.d.ts +1 -1
  81. package/dist/sort-manager/sort-row.js +2 -2
  82. package/dist/sort-manager/sort-rows.js +1 -1
  83. package/dist/sort-manager/sort-value-select.js +1 -1
  84. package/dist/state/+types.d.ts +2 -0
  85. package/dist/state/api/cell-root.js +2 -2
  86. package/dist/state/helpers/row-layout/row-layout.js +8 -7
  87. package/dist/state/use-lytenyte.js +12 -2
  88. package/dist/tree-view/root.js +1 -1
  89. package/dist/viewport/viewport.js +2 -2
  90. package/package.json +7 -7
package/dist/grid.js CHANGED
@@ -1,15 +1,15 @@
1
- import { Cell } from "./cells/cell";
2
- import { Header } from "./header/header";
3
- import { HeaderCell } from "./header/header-cell";
4
- import { HeaderGroupCell } from "./header/header-group-cell";
5
- import { HeaderRow } from "./header/header-row";
6
- import { Root } from "./root/root";
7
- import { RowFullWidth } from "./rows/row-full-width";
8
- import { Row } from "./rows/row/row";
9
- import { RowsContainer } from "./rows/rows-container";
10
- import { RowsBottom, RowsCenter, RowsTop } from "./rows/rows-sections";
11
- import { useLyteNyte } from "./state/use-lytenyte";
12
- import { Viewport } from "./viewport/viewport";
1
+ import { Cell } from "./cells/cell.js";
2
+ import { Header } from "./header/header.js";
3
+ import { HeaderCell } from "./header/header-cell.js";
4
+ import { HeaderGroupCell } from "./header/header-group-cell.js";
5
+ import { HeaderRow } from "./header/header-row.js";
6
+ import { Root } from "./root/root.js";
7
+ import { RowFullWidth } from "./rows/row-full-width.js";
8
+ import { Row } from "./rows/row/row.js";
9
+ import { RowsContainer } from "./rows/rows-container.js";
10
+ import { RowsBottom, RowsCenter, RowsTop } from "./rows/rows-sections.js";
11
+ import { useLyteNyte } from "./state/use-lytenyte.js";
12
+ import { Viewport } from "./viewport/viewport.js";
13
13
  export const Grid = {
14
14
  Root,
15
15
  Header,
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  import { COLUMN_MARKER_ID, HeaderCellReact } from "@1771technologies/lytenyte-shared";
5
5
  import { fastDeepMemo, useCombinedRefs, } from "@1771technologies/lytenyte-react-hooks";
6
- import { useHeaderCellRenderer } from "./use-header-cell-renderer";
7
- import { ResizeHandler } from "./resize-handler";
8
- import { useDragMove } from "./use-drag-move";
6
+ import { useHeaderCellRenderer } from "./use-header-cell-renderer.js";
7
+ import { ResizeHandler } from "./resize-handler.js";
8
+ import { useDragMove } from "./use-drag-move.js";
9
9
  const HeaderCellImpl = forwardRef(function HeaderCell({ cell, resizerAs, resizerStyle, resizerClassName, children, ...props }, forwarded) {
10
10
  const grid = useGridRoot().grid;
11
11
  const ctx = grid.state;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  import { HeaderGroupCellReact } from "@1771technologies/lytenyte-shared";
5
5
  import { fastDeepMemo, useCombinedRefs } from "@1771technologies/lytenyte-react-hooks";
6
- import { useDragMove } from "./use-drag-move";
6
+ import { useDragMove } from "./use-drag-move.js";
7
7
  const HeaderGroupCellImpl = forwardRef(function HeaderCell({ cell, children, ...props }, forwarded) {
8
8
  const grid = useGridRoot().grid;
9
9
  const ctx = grid.state;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { fastDeepMemo } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useGridRoot } from "../context";
4
+ import { useGridRoot } from "../context.js";
5
5
  import { HeaderRowReact } from "@1771technologies/lytenyte-shared";
6
6
  const HeaderRowImpl = forwardRef(function HeaderRow(props, forwarded) {
7
7
  const maxRow = useGridRoot().grid.view.get().header.maxRow;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  import { fastDeepMemo } from "@1771technologies/lytenyte-react-hooks";
5
5
  import { HeaderReact } from "@1771technologies/lytenyte-shared";
6
6
  const HeaderImpl = forwardRef(function Header(props, forwarded) {
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import {} from "react";
4
4
  import { DEFAULT_COLUMN_WIDTH_MAX, DEFAULT_COLUMN_WIDTH_MIN, getColIndexFromEl, getTranslate, sizeFromCoord, } from "@1771technologies/lytenyte-shared";
5
- import { useGridRoot } from "../context";
5
+ import { useGridRoot } from "../context.js";
6
6
  import { getComputedStyle, isHTMLElement } from "@1771technologies/lytenyte-dom-utils";
7
7
  import { clamp, getClientX } from "@1771technologies/lytenyte-js-utils";
8
8
  export function ResizeHandler({ as, cell, xPositions, style, className, }) {
@@ -1,6 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  function DefaultRenderer(p) {
5
5
  return _jsx(_Fragment, { children: p.column.name ?? p.column.id });
6
6
  }
@@ -1 +1,3 @@
1
- export { AddIcon, AddSmallIcon, AggregateIcon, AggregationIcon, ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightCurvedIcon, ArrowRightIcon, ArrowUpIcon, AutosizeIcon, BackIcon, BookmarkIcon, BooleanIcon, CalendarIcon, ChartIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, Close2Icon, CloseIcon, CollapseGroupIcon, Columns2Icon, ColumnsIcon, CopyIcon, CornerRadiusIcon, CustomizeThemeIcon, CutIcon, CsvIcon, DeleteIcon, DocsIcon, DownloadIcon, Drag2Icon, DragDotsIcon, DragDotsSmallIcon, DragIcon, DuplicateIcon, EditIcon, EmailIcon, ExcelIcon, ExpandGroupIcon, ExpandIcon, Expression2Icon, ExpressionIcon, ExternalLinkIcon, File2Icon, FileIcon, FilterIcon, FolderIcon, GlobeIcon, GridViewIcon, GroupByColIcon, HamburgerIcon, HelpIcon, HiddenIcon, HistoryIcon, ImportIcon, LinkIcon, ListViewIcon, LoadingIcon, LocationIcon, ModalIcon, MoreIcon, MoreVerticalIcon, MultilineIcon, NumberIcon, PasteIcon, PieIcon, PinColumnIcon, RefreshIcon, SearchIcon, SettingsIcon, ShareIcon, SingleLineIcon, Sort2Icon, SortIcon, SpacingHIcon, SpacingIcon, StickColumnIcon, SwapIcon, TagIcon, TaskIcon, TextIcon, ThemesIcon, Tickmark2Icon, TickmarkIcon, TimeIcon, UploadIcon, UserIcon, ViewIcon, } from "@1771technologies/lytenyte-core/icons";
1
+ export { AddIcon, AddSmallIcon, AggregateIcon, AggregationIcon, ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightCurvedIcon, ArrowRightIcon, ArrowUpIcon, AutosizeIcon, BackIcon, BookmarkIcon, BooleanIcon, CalendarIcon, ChartIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, Close2Icon, CloseIcon, CollapseGroupIcon, Columns2Icon, ColumnsIcon, CopyIcon, CornerRadiusIcon, CustomizeThemeIcon, CutIcon, CsvIcon, DeleteIcon, DocsIcon, DownloadIcon, Drag2Icon, DragDotsIcon, DragDotsSmallIcon, DragIcon, DuplicateIcon, EditIcon, EmailIcon, ExcelIcon, ExpandGroupIcon, ExpandIcon, Expression2Icon, ExpressionIcon, ExternalLinkIcon, File2Icon, FileIcon, FilterIcon, FolderIcon, GlobeIcon, GridViewIcon, GroupByColIcon, HamburgerIcon, HelpIcon, HiddenIcon, HistoryIcon, ImportIcon, LinkIcon, ListViewIcon, LoadingIcon, LocationIcon, ModalIcon, MoreIcon, MoreVerticalIcon, MultilineIcon, NumberIcon, PasteIcon, PieIcon, PinColumnIcon, RefreshIcon, SearchIcon, SettingsIcon, ShareIcon, SingleLineIcon, Sort2Icon, SortIcon, SpacingHIcon, SpacingIcon, StickColumnIcon, SwapIcon, TagIcon, TaskIcon, TextIcon, ThemesIcon, Tickmark2Icon, TickmarkIcon, TimeIcon, UploadIcon, UserIcon, ViewIcon,
2
+ // eslint-disable-next-line import/extensions
3
+ } from "@1771technologies/lytenyte-core/icons";
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { GridBox } from "./grid-box/grid-box.js";
7
7
  export { DropWrap } from "@1771technologies/lytenyte-dragon";
8
8
  export { activateLicense } from "./license.js";
9
9
  export { measureText } from "@1771technologies/lytenyte-shared";
10
- export { makeClientDataSource, useClientRowDataSource, } from "./row-data-source-client/use-client-data-source";
11
- export { makeClientDataSourcePaginated, useClientRowDataSourcePaginated, } from "./row-data-source-client/use-client-data-source-paginated";
12
- export { makeClientTreeDataSource, useClientTreeDataSource, } from "./row-data-source-client/use-client-tree-data-source";
13
- export { makeServerDataSource, useServerDataSource, } from "./row-data-source-server/use-server-data-source";
10
+ export { makeClientDataSource, useClientRowDataSource, } from "./row-data-source-client/use-client-data-source.js";
11
+ export { makeClientDataSourcePaginated, useClientRowDataSourcePaginated, } from "./row-data-source-client/use-client-data-source-paginated.js";
12
+ export { makeClientTreeDataSource, useClientTreeDataSource, } from "./row-data-source-client/use-client-tree-data-source.js";
13
+ export { makeServerDataSource, useServerDataSource, } from "./row-data-source-server/use-server-data-source.js";
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ export { GridBox } from "./grid-box/grid-box.js";
7
7
  export { DropWrap } from "@1771technologies/lytenyte-dragon";
8
8
  export { activateLicense } from "./license.js";
9
9
  export { measureText } from "@1771technologies/lytenyte-shared";
10
- export { makeClientDataSource, useClientRowDataSource, } from "./row-data-source-client/use-client-data-source";
11
- export { makeClientDataSourcePaginated, useClientRowDataSourcePaginated, } from "./row-data-source-client/use-client-data-source-paginated";
12
- export { makeClientTreeDataSource, useClientTreeDataSource, } from "./row-data-source-client/use-client-tree-data-source";
13
- export { makeServerDataSource, useServerDataSource, } from "./row-data-source-server/use-server-data-source";
10
+ export { makeClientDataSource, useClientRowDataSource, } from "./row-data-source-client/use-client-data-source.js";
11
+ export { makeClientDataSourcePaginated, useClientRowDataSourcePaginated, } from "./row-data-source-client/use-client-data-source-paginated.js";
12
+ export { makeClientTreeDataSource, useClientTreeDataSource, } from "./row-data-source-client/use-client-tree-data-source.js";
13
+ export { makeServerDataSource, useServerDataSource, } from "./row-data-source-server/use-server-data-source.js";
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useListboxContext } from "./context";
3
+ import { useListboxContext } from "./context.js";
4
4
  import { getTabbables } from "@1771technologies/lytenyte-dom-utils";
5
5
  export const Item = forwardRef(function Item(props, forwarded) {
6
6
  const ctx = useListboxContext();
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useEffect, useState } from "react";
3
- import { useListboxContext } from "./context";
3
+ import { useListboxContext } from "./context.js";
4
4
  import { useCombinedRefs } from "@1771technologies/lytenyte-react-hooks";
5
5
  import { getTabbables } from "@1771technologies/lytenyte-dom-utils";
6
6
  export const Panel = forwardRef(function Panel(props, forwarded) {
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
- import { context } from "./context";
3
+ import { context } from "./context.js";
4
4
  export function Root(props) {
5
5
  const value = useMemo(() => {
6
6
  return {
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useGridRoot } from "../context";
2
+ import { useGridRoot } from "../context.js";
3
3
  export function DialogDriver() {
4
4
  const grid = useGridRoot().grid;
5
5
  const openFrameState = grid.internal.dialogFrames.useValue();
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useGridRoot } from "../context";
2
+ import { useGridRoot } from "../context.js";
3
3
  export function PopoverDriver() {
4
4
  const grid = useGridRoot().grid;
5
5
  const openFrameState = grid.internal.popoverFrames.useValue();
package/dist/root/root.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useLayoutEffect, useMemo } from "react";
3
3
  import { useEvent, useMeasure } from "@1771technologies/lytenyte-react-hooks";
4
- import { RootProvider } from "../context";
5
- import { DialogDriver } from "./dialog-driver";
6
- import { PopoverDriver } from "./popover-driver";
7
- import { CellSelectionDriver } from "../cell-selection/cell-selection-driver";
8
- import { hasAValidLicense } from "../license";
4
+ import { RootProvider } from "../context.js";
5
+ import { DialogDriver } from "./dialog-driver.js";
6
+ import { PopoverDriver } from "./popover-driver.js";
7
+ import { CellSelectionDriver } from "../cell-selection/cell-selection-driver.js";
8
+ import { hasAValidLicense } from "../license.js";
9
9
  export function Root({ grid, children, ...events }) {
10
10
  useEffect(() => {
11
11
  if (hasAValidLicense)
@@ -1,6 +1,6 @@
1
- import { type Column, type ColumnPivotModel } from "../../+types";
1
+ import { type Column, type ColumnPivotModel } from "../../+types.js";
2
2
  export declare function createAggModel<T>(model: ColumnPivotModel<T>, columns: Column<T>[], separator: string): {
3
3
  [k: string]: {
4
- readonly fn: import("../../+types").AggModelFn<T>;
4
+ readonly fn: import("../../+types.js").AggModelFn<T>;
5
5
  };
6
6
  };
@@ -1,4 +1,4 @@
1
- import {} from "../../+types";
1
+ import {} from "../../+types.js";
2
2
  export function createAggModel(model, columns, separator) {
3
3
  const aggFunToId = new Map(model.values.map((c) => [c.field, c.aggFn]));
4
4
  const aggModel = columns
@@ -333,6 +333,7 @@ export function makeClientDataSourcePaginated(p) {
333
333
  continue;
334
334
  }
335
335
  d[source] = next;
336
+ cache.delete(source);
336
337
  }
337
338
  }
338
339
  data.set([...d]);
@@ -459,6 +460,7 @@ export function makeClientDataSourcePaginated(p) {
459
460
  data.set(d);
460
461
  const grid = grid$();
461
462
  grid?.state.rowDataStore.rowClearCache();
463
+ cache.clear();
462
464
  },
463
465
  rowData: (section) => {
464
466
  const d = [];
@@ -428,6 +428,7 @@ export function makeClientDataSource(p) {
428
428
  continue;
429
429
  }
430
430
  d[source] = next;
431
+ cache.delete(source);
431
432
  }
432
433
  }
433
434
  data.set([...d]);
@@ -534,6 +535,7 @@ export function makeClientDataSource(p) {
534
535
  data.set(d);
535
536
  const grid = peek(grid$);
536
537
  grid?.state.rowDataStore.rowClearCache();
538
+ cache.clear();
537
539
  },
538
540
  rowData: (section) => {
539
541
  const d = [];
@@ -277,6 +277,7 @@ export function makeClientTreeDataSource(p) {
277
277
  continue;
278
278
  }
279
279
  d[source] = next;
280
+ cache.delete(source);
280
281
  }
281
282
  }
282
283
  data.set([...d]);
@@ -383,6 +384,7 @@ export function makeClientTreeDataSource(p) {
383
384
  data.set(d);
384
385
  const grid = peek(grid$);
385
386
  grid?.state.rowDataStore.rowClearCache();
387
+ cache.clear();
386
388
  },
387
389
  rowExpand: (expansions) => {
388
390
  const grid = peek(grid$);
@@ -1,6 +1,14 @@
1
+ import type { CellRendererFn, ColumnBase, RowNode } from "../../+types";
1
2
  export interface RowMetaData {
2
3
  readonly selected: boolean;
3
4
  readonly indeterminate: boolean;
5
+ readonly colBounds: [number, number];
6
+ readonly row: RowNode<any> | null;
7
+ readonly xPositions: Uint32Array;
8
+ readonly yPositions: Uint32Array;
9
+ readonly base: ColumnBase<any>;
10
+ readonly renderers: Record<string, CellRendererFn<any>>;
11
+ readonly rtl: boolean;
4
12
  }
5
13
  export declare const RowContext: import("react").Context<RowMetaData>;
6
14
  export declare const useRowMeta: () => RowMetaData;
@@ -1,3 +1,13 @@
1
1
  import { createContext, useContext } from "react";
2
- export const RowContext = createContext({ selected: false, indeterminate: false });
2
+ export const RowContext = createContext({
3
+ selected: false,
4
+ indeterminate: false,
5
+ colBounds: [0, 0],
6
+ row: null,
7
+ xPositions: new Uint32Array(),
8
+ yPositions: new Uint32Array(),
9
+ base: null,
10
+ renderers: null,
11
+ rtl: false,
12
+ });
3
13
  export const useRowMeta = () => useContext(RowContext);
@@ -1,4 +1,4 @@
1
- import type { RowNormalRowLayout } from "../../+types";
1
+ import type { RowNormalRowLayout } from "../../+types.js";
2
2
  import { type DropWrapProps } from "@1771technologies/lytenyte-shared";
3
3
  export interface RowProps extends Omit<DropWrapProps, "accepted"> {
4
4
  readonly row: RowNormalRowLayout<any>;
@@ -1,18 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, memo } from "react";
3
- import { useGridRoot } from "../../context";
4
- import { RowDetailRow } from "../row-detail-row";
3
+ import { useGridRoot } from "../../context.js";
4
+ import { RowDetailRow } from "../row-detail-row.js";
5
5
  import { RowReact } from "@1771technologies/lytenyte-shared";
6
- import { useRowContextValue } from "./use-row-context-value";
7
- import { RowContext } from "./context";
6
+ import { useRowContextValue } from "./use-row-context-value.js";
7
+ import { RowContext } from "./context.js";
8
8
  import { equal } from "@1771technologies/lytenyte-js-utils";
9
- import { CellSpacerNoPin } from "../../cells/cell-spacer";
9
+ import { CellSpacerNoPin } from "../../cells/cell-spacer.js";
10
10
  const empty = [];
11
11
  const RowImpl = forwardRef(function Rows({ row, ...props }, forwarded) {
12
12
  const ctx = useGridRoot().grid;
13
- const rowMeta = useRowContextValue(ctx, row.row);
13
+ const yPos = ctx.state.yPositions.useValue();
14
+ const rowMeta = useRowContextValue(ctx, row.row, yPos);
15
+ const hasSpans = ctx.internal.hasSpans.useValue();
14
16
  const accepted = props.accepted ?? empty;
15
- return (_jsx(RowContext.Provider, { value: rowMeta, children: _jsxs(RowReact, { ...props, ref: forwarded, accepted: accepted, gridId: ctx.state.gridId.useValue(), rowIndex: row.rowIndex, rowFirstPinBottom: row.rowFirstPinBottom, rowLastPinTop: row.rowLastPinTop, rowIsFocusRow: row.rowIsFocusRow ?? false, yPositions: ctx.state.yPositions.useValue(), "data-ln-row-selected": rowMeta.selected, children: [_jsx(CellSpacerNoPin, {}), props.children, _jsx(RowDetailRow, { layout: row })] }) }));
17
+ return (_jsx(RowContext.Provider, { value: rowMeta, children: _jsxs(RowReact, { ...props, ref: forwarded, accepted: accepted, gridId: ctx.state.gridId.useValue(), rowIndex: row.rowIndex, rowFirstPinBottom: row.rowFirstPinBottom, rowLastPinTop: row.rowLastPinTop, rowIsFocusRow: row.rowIsFocusRow ?? false, rowPin: row.rowPin, topOffset: ctx.view.useValue().rows.rowTopTotalHeight, yPositions: yPos, hasSpans: hasSpans, "data-ln-row-selected": rowMeta.selected, children: [_jsx(CellSpacerNoPin, { xPositions: rowMeta.xPositions }), props.children, _jsx(RowDetailRow, { layout: row })] }) }));
16
18
  });
17
19
  export const Row = memo(RowImpl, (prev, next) => {
18
20
  const { row: rowP, ...propsP } = prev;
@@ -1,6 +1,6 @@
1
- import type { Grid, GridAtomReadonlyUnwatchable, RowNode } from "../../+types";
2
- import type { InternalAtoms } from "../../state/+types";
3
- import type { RowMetaData } from "./context";
1
+ import type { Grid, GridAtomReadonlyUnwatchable, RowNode } from "../../+types.js";
2
+ import type { InternalAtoms } from "../../state/+types.js";
3
+ import type { RowMetaData } from "./context.js";
4
4
  export declare function useRowContextValue(grid: Grid<any> & {
5
5
  internal: InternalAtoms;
6
- }, row: GridAtomReadonlyUnwatchable<RowNode<any> | null>): RowMetaData;
6
+ }, row: GridAtomReadonlyUnwatchable<RowNode<any> | null>, yPositions: Uint32Array): RowMetaData;
@@ -1,8 +1,13 @@
1
1
  import { useEffect, useMemo, useState } from "react";
2
- export function useRowContextValue(grid, row) {
2
+ export function useRowContextValue(grid, row, yPositions) {
3
3
  const r = row.useValue();
4
+ const xPositions = grid.state.xPositions.useValue();
4
5
  const [indeterminate, setIndeterminate] = useState(false);
5
6
  const [selected, setSelected] = useState(false);
7
+ const colBounds = grid.internal.colBounds.useValue();
8
+ const rtl = grid.state.rtl.useValue();
9
+ const base = grid.state.columnBase.useValue();
10
+ const renderers = grid.state.cellRenderers.useValue();
6
11
  useEffect(() => {
7
12
  function handleSelection() {
8
13
  if (!r)
@@ -23,7 +28,17 @@ export function useRowContextValue(grid, row) {
23
28
  return grid.state.rowSelectedIds.watch(() => handleSelection());
24
29
  }, [grid.state.rowDataSource, grid.state.rowSelectedIds, r]);
25
30
  const value = useMemo(() => {
26
- return { selected, indeterminate };
27
- }, [indeterminate, selected]);
31
+ return {
32
+ selected,
33
+ indeterminate,
34
+ colBounds,
35
+ row: r,
36
+ xPositions,
37
+ yPositions,
38
+ rtl,
39
+ base,
40
+ renderers,
41
+ };
42
+ }, [base, colBounds, indeterminate, r, renderers, rtl, selected, xPositions, yPositions]);
28
43
  return value;
29
44
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getNearestRow, getRowIndexFromEl, SCROLL_WIDTH_VARIABLE_USE, sizeFromCoord, } from "@1771technologies/lytenyte-shared";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  import { useEffect, useState } from "react";
5
5
  import { getTabbables, isHTMLElement } from "@1771technologies/lytenyte-dom-utils";
6
6
  export function RowDetailRow({ layout, }) {
@@ -1,17 +1,19 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { fastDeepMemo } from "@1771technologies/lytenyte-react-hooks";
4
- import { useGridRoot } from "../context";
4
+ import { useGridRoot } from "../context.js";
5
5
  import { RowFullWidthReact } from "@1771technologies/lytenyte-shared";
6
- import { RowDetailRow } from "./row-detail-row";
7
- import { useRowContextValue } from "./row/use-row-context-value";
6
+ import { RowDetailRow } from "./row-detail-row.js";
7
+ import { useRowContextValue } from "./row/use-row-context-value.js";
8
8
  const empty = [];
9
9
  const RowFullWidthImpl = forwardRef(function RowFullWidth({ row: layout, space, children, ...props }, forwarded) {
10
10
  const grid = useGridRoot().grid;
11
11
  const Renderer = grid.state.rowFullWidthRenderer.useValue().fn;
12
12
  const row = layout.row.useValue();
13
- const meta = useRowContextValue(grid, layout.row);
14
- return (_jsx(RowFullWidthReact, { ...props, ref: forwarded, accepted: props.accepted ?? empty, detail: _jsx(RowDetailRow, { layout: layout }), detailHeight: grid.api.rowDetailRenderedHeight(row ?? ""), gridId: grid.state.gridId.useValue(), rtl: grid.state.rtl.useValue(), rowFirstPinBottom: layout.rowFirstPinBottom, rowLastPinTop: layout.rowLastPinTop, rowIndex: layout.rowIndex, rowIsFocusRow: layout.rowIsFocusRow ?? false, yPositions: grid.state.yPositions.useValue(), space: space, "data-ln-row-selected": meta.selected, children: children ??
13
+ const yPositions = grid.state.yPositions.useValue();
14
+ const hasSpans = grid.internal.hasSpans.useValue();
15
+ const meta = useRowContextValue(grid, layout.row, yPositions);
16
+ return (_jsx(RowFullWidthReact, { ...props, ref: forwarded, accepted: props.accepted ?? empty, detail: _jsx(RowDetailRow, { layout: layout }), detailHeight: grid.api.rowDetailRenderedHeight(row ?? ""), gridId: grid.state.gridId.useValue(), rtl: meta.rtl, hasSpans: hasSpans, rowFirstPinBottom: layout.rowFirstPinBottom, rowLastPinTop: layout.rowLastPinTop, rowIndex: layout.rowIndex, rowIsFocusRow: layout.rowIsFocusRow ?? false, rowPin: layout.rowPin, topOffset: grid.view.useValue().rows.rowTopTotalHeight, yPositions: yPositions, space: space, "data-ln-row-selected": meta.selected, children: children ??
15
17
  (row ? (_jsx(Renderer, { grid: grid, row: row, rowIndex: layout.rowIndex, rowSelected: meta.selected, rowIndeterminate: meta.indeterminate })) : null) }));
16
18
  });
17
19
  export const RowFullWidth = fastDeepMemo(RowFullWidthImpl);
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { useGridRoot } from "../context";
3
+ import { useGridRoot } from "../context.js";
4
4
  import { fastDeepMemo } from "@1771technologies/lytenyte-react-hooks";
5
5
  import { RowsContainerReact } from "@1771technologies/lytenyte-shared";
6
6
  export const RowsContainer = fastDeepMemo(forwardRef(function Rows(props, forwarded) {
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { fastDeepMemo } from "@1771technologies/lytenyte-react-hooks";
4
- import { useGridRoot } from "../context";
5
- import { NativeScroller } from "./scrollers/native-scroller";
4
+ import { useGridRoot } from "../context.js";
5
+ import { NativeScroller } from "./scrollers/native-scroller.js";
6
6
  import { RowsBottomReact, RowsCenterReact, RowsTopReact } from "@1771technologies/lytenyte-shared";
7
- import { CellSelectionBottom, CellSelectionCenter, CellSelectionTop, } from "../cell-selection/cell-selection-containers";
7
+ import { CellSelectionBottom, CellSelectionCenter, CellSelectionTop, } from "../cell-selection/cell-selection-containers.js";
8
8
  export const RowsTop = fastDeepMemo(forwardRef(function RowsTop(props, forwarded) {
9
9
  const cx = useGridRoot().grid;
10
10
  const view = cx.view.useValue().rows;
@@ -1,18 +1,4 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useGridRoot } from "../../context";
3
- import { sizeFromCoord } from "@1771technologies/lytenyte-shared";
4
2
  export function NativeScroller(props) {
5
- const cx = useGridRoot().grid;
6
- const view = cx.view.useValue().rows;
7
- const yPos = cx.state.yPositions.useValue();
8
- let offset = yPos[view.rowFirstCenter] - view.rowTopTotalHeight;
9
- if (view.rowFocusedIndex != null && view.rowFocusedIndex < view.rowFirstCenter) {
10
- const size = sizeFromCoord(view.rowFocusedIndex, yPos);
11
- offset -= size;
12
- }
13
- const offsetPx = `${offset}px`;
14
- return (_jsx("div", { role: "presentation", style: {
15
- transform: `translate3d(0px, ${offset}px, 0px)`,
16
- "--ln-y-offset": offsetPx,
17
- }, children: props.children }));
3
+ return _jsx("div", { role: "presentation", children: props.children });
18
4
  }
@@ -1,3 +1,3 @@
1
1
  import { type PropsWithChildren } from "react";
2
- import { type SortManagerContext } from "./context";
2
+ import { type SortManagerContext } from "./context.js";
3
3
  export declare function Root({ sortItems, setSortItems, grid, mode, children, }: PropsWithChildren<SortManagerContext>): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
- import { context } from "./context";
3
+ import { context } from "./context.js";
4
4
  export function Root({ sortItems, setSortItems, grid, mode, children, }) {
5
5
  const value = useMemo(() => {
6
6
  return {
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortRowCtx } from "./context";
4
+ import { useSortRowCtx } from "./context.js";
5
5
  export const SortAdd = forwardRef(function SortAdd({ as: as, ...props }, forwarded) {
6
6
  const row = useSortRowCtx();
7
7
  const renderer = useSlot({
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEvent, useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortManagerCtx } from "./context";
4
+ import { useSortManagerCtx } from "./context.js";
5
5
  import { itemsWithIdToMap } from "@1771technologies/lytenyte-js-utils";
6
- import { sortItemsToSortModel } from "./utils/sort-item-to-sort-model";
6
+ import { sortItemsToSortModel } from "./utils/sort-item-to-sort-model.js";
7
7
  export const SortApply = forwardRef(function SortApply({ as, ...props }, forwarded) {
8
8
  const ctx = useSortManagerCtx();
9
9
  const onApply = useEvent(() => {
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEvent, useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortManagerCtx } from "./context";
5
- import { sortModelToSortItems } from "./utils/sort-model-to-sort-items";
4
+ import { useSortManagerCtx } from "./context.js";
5
+ import { sortModelToSortItems } from "./utils/sort-model-to-sort-items.js";
6
6
  import { itemsWithIdToMap } from "@1771technologies/lytenyte-js-utils";
7
7
  export const SortCancel = forwardRef(function SortCancel({ as, ...props }, forwarded) {
8
8
  const ctx = useSortManagerCtx();
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEvent, useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortManagerCtx } from "./context";
4
+ import { useSortManagerCtx } from "./context.js";
5
5
  export const SortClear = forwardRef(function SortClear({ as, ...props }, forwarded) {
6
6
  const ctx = useSortManagerCtx();
7
7
  const onClear = useEvent(() => {
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortRowCtx } from "./context";
4
+ import { useSortRowCtx } from "./context.js";
5
5
  export const SortColumnSelect = forwardRef(function SortColumnSelect({ as, ...props }, forwarded) {
6
6
  const row = useSortRowCtx();
7
7
  const el = (_jsxs("select", { "aria-label": "Select column to sort", value: row.columnItem?.value ?? "", onChange: (e) => {
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useSlot } from "@1771technologies/lytenyte-react-hooks";
3
3
  import { forwardRef } from "react";
4
- import { useSortRowCtx } from "./context";
4
+ import { useSortRowCtx } from "./context.js";
5
5
  export const SortDirectionSelect = forwardRef(function SortDirectionSelect({ as, ...props }, forwarded) {
6
6
  const row = useSortRowCtx();
7
7
  const el = (_jsx("select", { "aria-label": "Select sort direction", value: row.sortDirectionSelected?.value ?? "", onChange: (e) => {
@@ -1,16 +1,16 @@
1
- import { Root } from "./root";
2
- import { useSortManager } from "./hooks/use-sort-manager";
1
+ import { Root } from "./root.js";
2
+ import { useSortManager } from "./hooks/use-sort-manager.js";
3
3
  export declare const SortManager: {
4
4
  Root: typeof Root;
5
- Row: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-row").SortRowProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
+ Row: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-row.js").SortRowProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
6
6
  Rows: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
7
- ColumnSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-column-select").SortColumnSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
8
- ValueSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-value-select").SortValueSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
9
- DirectionSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-direction-select").SortDirectionSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
10
- Add: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-add").SortAddProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
11
- Remove: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-remove").SortRemoveProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
12
- Cancel: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-cancel").SortCancelProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
13
- Clear: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-clear").SortClearProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
14
- Apply: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-apply").SortApplyProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
7
+ ColumnSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-column-select.js").SortColumnSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
8
+ ValueSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-value-select.js").SortValueSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
9
+ DirectionSelect: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("./sort-direction-select.js").SortDirectionSelectProps, "ref"> & import("react").RefAttributes<HTMLSelectElement>>;
10
+ Add: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-add.js").SortAddProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
11
+ Remove: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-remove.js").SortRemoveProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
12
+ Cancel: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-cancel.js").SortCancelProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
13
+ Clear: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-clear.js").SortClearProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
14
+ Apply: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("./sort-apply.js").SortApplyProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
15
15
  useSortManager: typeof useSortManager;
16
16
  };