@simple-table/solid 3.0.3 → 3.0.6
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/dist/cjs/index.js +1 -1
- package/dist/index.es.js +1 -1
- package/dist/types/core/src/core/rendering/RenderOrchestrator.d.ts +7 -0
- package/dist/types/core/src/managers/ScrollManager.d.ts +3 -0
- package/dist/types/core/src/utils/rowProcessing.d.ts +19 -0
- package/dist/types/solid/src/index.d.ts +0 -1
- package/dist/types/solid/src/types.d.ts +7 -4
- package/package.json +2 -2
- package/dist/types/solid/src/defaultHeadersFromCore.d.ts +0 -5
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("solid-js/web"),r=require("solid-js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("solid-js/web"),r=require("solid-js"),n=require("simple-table-core");function t(e,r){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(t=Object.getOwnPropertySymbols(e);o<t.length;o++)r.indexOf(t[o])<0&&Object.prototype.propertyIsEnumerable.call(e,t[o])&&(n[t[o]]=e[t[o]])}return n}function o(r){return n=>{const t=document.createElement("div");return e.render(()=>e.createComponent(r,n),t),t}}function d(r){const n=document.createElement("div");return e.render(()=>r,n),n}function a(r){const n=document.createElement("div");return e.render(()=>r,n),n.innerHTML}function i(e){return"function"==typeof e}function s(e){const{cellRenderer:r,headerRenderer:n,children:d,nestedTable:a}=e,i=t(e,["cellRenderer","headerRenderer","children","nestedTable"]),c=Object.assign({},i);if(r&&(c.cellRenderer=o(r)),n&&(c.headerRenderer=o(n)),d&&(c.children=d.map(s)),a){const e=Object.assign(Object.assign({},a),{rows:[]});c.nestedTable=l(e)}return c}function l(e){const{defaultHeaders:r,rows:n,footerRenderer:l,emptyStateRenderer:c,errorStateRenderer:u,loadingStateRenderer:f,tableEmptyStateRenderer:m,headerDropdown:p,columnEditorConfig:b,icons:R,onColumnOrderChange:g,onColumnWidthChange:O,onHeaderEdit:S,onColumnSelect:y}=e,j=t(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","ref","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),h=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},j),{rows:n,defaultHeaders:r.map(s)}),g?{onColumnOrderChange:e=>g(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),S?{onHeaderEdit:(e,r)=>S(e,r)}:{}),y?{onColumnSelect:e=>y(e)}:{});if(void 0!==l&&(h.footerRenderer=o(l)),void 0!==c)if(i(c))h.emptyStateRenderer=o(c);else{const e=c;h.emptyStateRenderer=()=>d(e)}if(void 0!==u)if(i(u))h.errorStateRenderer=o(u);else{const e=u;h.errorStateRenderer=()=>d(e)}if(void 0!==f)if(i(f))h.loadingStateRenderer=o(f);else{const e=f;h.loadingStateRenderer=()=>d(e)}return void 0!==m&&(h.tableEmptyStateRenderer=null===m?null:d(m)),void 0!==p&&(h.headerDropdown=o(p)),void 0!==b&&(h.columnEditorConfig=function(e){const{rowRenderer:r,customRenderer:n}=e,d=t(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},d),r?{rowRenderer:o(r)}:{}),n?{customRenderer:o(n)}:{})}(b)),void 0!==R&&(h.icons=function(e){const r={};for(const[n,t]of Object.entries(e))null!=t&&(r[n]="string"==typeof t||t instanceof HTMLElement||t instanceof SVGElement?t:a(t));return r}(R)),h}"function"==typeof SuppressedError&&SuppressedError;var c=e.template("<div>");Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return n.asRows}}),exports.SimpleTable=function(t){let o,d=null;return r.onMount(()=>{d=new n.SimpleTableVanilla(o,l(t)),d.mount(),t.ref&&t.ref(d.getAPI())}),r.createEffect(()=>{d&&d.update(l(t))}),r.onCleanup(()=>{null==d||d.destroy(),d=null}),a=c(),"function"==typeof o?e.use(o,a):o=a,a;var a};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{render as e,createComponent as r,use as
|
|
1
|
+
import{render as e,createComponent as r,use as n,template as t}from"solid-js/web";import{onMount as o,createEffect as d,onCleanup as i}from"solid-js";import{SimpleTableVanilla as a}from"simple-table-core";export{asRows}from"simple-table-core";function s(e,r){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(t=Object.getOwnPropertySymbols(e);o<t.length;o++)r.indexOf(t[o])<0&&Object.prototype.propertyIsEnumerable.call(e,t[o])&&(n[t[o]]=e[t[o]])}return n}function l(n){return t=>{const o=document.createElement("div");return e(()=>r(n,t),o),o}}function c(r){const n=document.createElement("div");return e(()=>r,n),n}function u(r){const n=document.createElement("div");return e(()=>r,n),n.innerHTML}function f(e){return"function"==typeof e}function m(e){const{cellRenderer:r,headerRenderer:n,children:t,nestedTable:o}=e,d=s(e,["cellRenderer","headerRenderer","children","nestedTable"]),i=Object.assign({},d);if(r&&(i.cellRenderer=l(r)),n&&(i.headerRenderer=l(n)),t&&(i.children=t.map(m)),o){const e=Object.assign(Object.assign({},o),{rows:[]});i.nestedTable=p(e)}return i}function p(e){const{defaultHeaders:r,rows:n,footerRenderer:t,emptyStateRenderer:o,errorStateRenderer:d,loadingStateRenderer:i,tableEmptyStateRenderer:a,headerDropdown:p,columnEditorConfig:R,icons:g,onColumnOrderChange:b,onColumnWidthChange:O,onHeaderEdit:S,onColumnSelect:y}=e,h=s(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","ref","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),j=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},h),{rows:n,defaultHeaders:r.map(m)}),b?{onColumnOrderChange:e=>b(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),S?{onHeaderEdit:(e,r)=>S(e,r)}:{}),y?{onColumnSelect:e=>y(e)}:{});if(void 0!==t&&(j.footerRenderer=l(t)),void 0!==o)if(f(o))j.emptyStateRenderer=l(o);else{const e=o;j.emptyStateRenderer=()=>c(e)}if(void 0!==d)if(f(d))j.errorStateRenderer=l(d);else{const e=d;j.errorStateRenderer=()=>c(e)}if(void 0!==i)if(f(i))j.loadingStateRenderer=l(i);else{const e=i;j.loadingStateRenderer=()=>c(e)}return void 0!==a&&(j.tableEmptyStateRenderer=null===a?null:c(a)),void 0!==p&&(j.headerDropdown=l(p)),void 0!==R&&(j.columnEditorConfig=function(e){const{rowRenderer:r,customRenderer:n}=e,t=s(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},t),r?{rowRenderer:l(r)}:{}),n?{customRenderer:l(n)}:{})}(R)),void 0!==g&&(j.icons=function(e){const r={};for(const[n,t]of Object.entries(e))null!=t&&(r[n]="string"==typeof t||t instanceof HTMLElement||t instanceof SVGElement?t:u(t));return r}(g)),j}"function"==typeof SuppressedError&&SuppressedError;var R=t("<div>");function g(e){let r,t=null;return o(()=>{t=new a(r,p(e)),t.mount(),e.ref&&e.ref(t.getAPI())}),d(()=>{t&&t.update(p(e))}),i(()=>{null==t||t.destroy(),t=null}),s=R(),"function"==typeof r?n(r,s):r=s,s;var s}export{g as SimpleTable};
|
|
2
2
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -92,6 +92,13 @@ export declare class RenderOrchestrator {
|
|
|
92
92
|
private lastRowsRef;
|
|
93
93
|
private flattenedRowsCache;
|
|
94
94
|
private lastProcessedResult;
|
|
95
|
+
/** Fingerprint for skipping pagination + height-map work on vertical scroll frames. */
|
|
96
|
+
private processRowsScrollReuseKey;
|
|
97
|
+
private processRowsScrollReuseBase;
|
|
98
|
+
/** Last painted virtual row range on scroll-raf; when unchanged, DOM work is redundant (native scroll moves content). */
|
|
99
|
+
private lastScrollRafPaintedRange;
|
|
100
|
+
/** Reuse normalized headers across scroll frames when layout inputs are unchanged. */
|
|
101
|
+
private scrollRafHeadersMemo;
|
|
95
102
|
constructor();
|
|
96
103
|
getCachedFlattenResult(): FlattenRowsResult | null;
|
|
97
104
|
getLastProcessedResult(): ProcessRowsResult | null;
|
|
@@ -19,10 +19,13 @@ export declare class ScrollManager {
|
|
|
19
19
|
private subscribers;
|
|
20
20
|
private lastScrollTop;
|
|
21
21
|
private scrollTimeoutId;
|
|
22
|
+
/** Coalesce scroll-driven subscriber notifications to one rAF (avoids sync storms + reflow). */
|
|
23
|
+
private notifySubscribersRafId;
|
|
22
24
|
constructor(config: ScrollManagerConfig);
|
|
23
25
|
updateConfig(config: Partial<ScrollManagerConfig>): void;
|
|
24
26
|
subscribe(callback: StateChangeCallback): () => void;
|
|
25
27
|
private notifySubscribers;
|
|
28
|
+
private scheduleNotifySubscribersFromScroll;
|
|
26
29
|
handleScroll(scrollTop: number, scrollLeft: number, containerHeight: number, contentHeight: number): void;
|
|
27
30
|
setScrolling(isScrolling: boolean): void;
|
|
28
31
|
getState(): ScrollManagerState;
|
|
@@ -34,3 +34,22 @@ export interface ProcessRowsResult {
|
|
|
34
34
|
heightMap: CumulativeHeightMap | undefined;
|
|
35
35
|
}
|
|
36
36
|
export declare function processRows(config: ProcessRowsConfig): ProcessRowsResult;
|
|
37
|
+
/** Layout inputs that do not depend on scroll position (reuse across scroll-raf frames). */
|
|
38
|
+
export interface ProcessRowsScrollReuseBase {
|
|
39
|
+
currentTableRows: TableRow[];
|
|
40
|
+
paginatedHeightOffsets: HeightOffsets | undefined;
|
|
41
|
+
heightMap: CumulativeHeightMap | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Recomputes only viewport-dependent fields when pagination, height map, and row list
|
|
45
|
+
* are unchanged (vertical scroll only). Avoids re-running applyPagination and
|
|
46
|
+
* buildCumulativeHeightMap on every scroll frame.
|
|
47
|
+
*/
|
|
48
|
+
export declare function recomputeProcessRowsViewport(base: ProcessRowsScrollReuseBase, config: {
|
|
49
|
+
contentHeight: number | undefined;
|
|
50
|
+
rowHeight: number;
|
|
51
|
+
scrollTop: number;
|
|
52
|
+
scrollDirection?: "up" | "down" | "none";
|
|
53
|
+
enableStickyParents: boolean;
|
|
54
|
+
rowGrouping?: Accessor[];
|
|
55
|
+
}): ProcessRowsResult;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { SimpleTable } from "./SimpleTable";
|
|
2
2
|
export { asRows } from "simple-table-core";
|
|
3
|
-
export { defaultHeaderFromCore, defaultHeadersFromCore, mapToSolidHeaderObjects, } from "./defaultHeadersFromCore";
|
|
4
3
|
export type { SimpleTableSolidProps, TableInstance, SolidHeaderObject, SolidColumnEditorConfig, SolidIconsConfig, SolidIconElement, SolidCellRenderer, SolidHeaderRenderer, SolidFooterRenderer, SolidHeaderDropdown, SolidColumnEditorRowRenderer, SolidColumnEditorCustomRenderer, SolidLoadingStateRenderer, SolidErrorStateRenderer, SolidEmptyStateRenderer, } from "./types";
|
|
5
4
|
export type { Accessor, AggregationConfig, AggregationType, BoundingBox, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnEditorConfig, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, DragHandlerProps, EmptyStateRenderer, EmptyStateRendererProps, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FooterRendererProps, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderObject, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, OnRowGroupExpandProps, OnSortProps, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowState, SetHeaderRenameProps, SharedTableProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, TableAPI, TableFilterState, TableHeaderProps, TableRowProps, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, } from "simple-table-core";
|
|
@@ -35,8 +35,7 @@ export interface SolidColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRe
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Column definition for `defaultHeaders`: core column metadata with Solid-only
|
|
38
|
-
* renderer fields.
|
|
39
|
-
* `mapToSolidHeaderObjects`.
|
|
38
|
+
* renderer fields. `defaultHeaders` also accepts plain `HeaderObject[]` from shared configs.
|
|
40
39
|
*/
|
|
41
40
|
export interface SolidHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
|
|
42
41
|
cellRenderer?: SolidCellRenderer;
|
|
@@ -44,10 +43,14 @@ export interface SolidHeaderObject extends Omit<HeaderObject, "cellRenderer" | "
|
|
|
44
43
|
children?: SolidHeaderObject[];
|
|
45
44
|
nestedTable?: Omit<SimpleTableSolidProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
|
|
46
45
|
}
|
|
47
|
-
export interface SimpleTableSolidProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons"> {
|
|
48
|
-
defaultHeaders: SolidHeaderObject
|
|
46
|
+
export interface SimpleTableSolidProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
|
|
47
|
+
defaultHeaders: ReadonlyArray<HeaderObject | SolidHeaderObject>;
|
|
49
48
|
/** Row data: domain objects or core `Row[]`; cast inside the adapter. */
|
|
50
49
|
rows: ReadonlyArray<Row> | ReadonlyArray<object>;
|
|
50
|
+
onColumnOrderChange?: (newHeaders: SolidHeaderObject[]) => void;
|
|
51
|
+
onColumnWidthChange?: (headers: SolidHeaderObject[]) => void;
|
|
52
|
+
onHeaderEdit?: (header: SolidHeaderObject, newLabel: string) => void;
|
|
53
|
+
onColumnSelect?: (header: SolidHeaderObject) => void;
|
|
51
54
|
footerRenderer?: SolidFooterRenderer;
|
|
52
55
|
loadingStateRenderer?: SolidLoadingStateRenderer;
|
|
53
56
|
errorStateRenderer?: SolidErrorStateRenderer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simple-table/solid",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.6",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/index.es.js",
|
|
6
6
|
"types": "dist/types/solid/src/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"solid-js": ">=1.0.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"simple-table-core": "3.0.
|
|
31
|
+
"simple-table-core": "3.0.6"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/preset-typescript": "^7.28.5",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { HeaderObject } from "simple-table-core";
|
|
2
|
-
import type { SolidHeaderObject } from "./types";
|
|
3
|
-
export declare function defaultHeaderFromCore(header: HeaderObject): SolidHeaderObject;
|
|
4
|
-
export declare function defaultHeadersFromCore(headers: readonly HeaderObject[]): SolidHeaderObject[];
|
|
5
|
-
export declare function mapToSolidHeaderObjects(columns: readonly object[]): SolidHeaderObject[];
|