igniteui-react-grids
Advanced tools
+170
-177
@@ -1,6 +0,7 @@ | ||
| import * as e from "react"; | ||
| import { IgcGridStateComponent as o, IgcActionStripComponent as t, IgcColumnGroupComponent as a, IgcColumnComponent as r, IgcColumnLayoutComponent as i, IgcGridEditingActionsComponent as l, IgcGridPinningActionsComponent as d, IgcGridToolbarTitleComponent as g, IgcGridToolbarActionsComponent as m, IgcGridToolbarAdvancedFilteringComponent as c, IgcGridToolbarExporterComponent as s, IgcGridToolbarHidingComponent as p, IgcGridToolbarPinningComponent as C, IgcGridComponent as T, IgcHierarchicalGridComponent as u, IgcRowIslandComponent as E, IgcPivotDataSelectorComponent as w, IgcPivotGridComponent as I, IgcTreeGridComponent as h, IgcQueryBuilderHeaderComponent as S, IgcQueryBuilderComponent as x, IgcGridToolbarComponent as D, IgcPaginatorComponent as y } from "igniteui-webcomponents-grids/grids/index.js"; | ||
| import { ColumnPinningPosition as xe, DropPosition as De, FilteringExpressionsTreeType as ye, FilteringLogic as Ge, HorizontalAlignment as Re, IgcBooleanFilteringOperand as ve, IgcByLevelTreeGridMergeStrategy as Pe, IgcDateFilteringOperand as Ae, IgcDateSummaryOperand as be, IgcDateTimeFilteringOperand as Me, IgcDefaultMergeStrategy as Ne, IgcDefaultTreeGridMergeStrategy as He, IgcFilteringExpressionsTree as Fe, IgcFilteringOperand as ke, IgcNoopFilteringStrategy as Oe, IgcNoopPivotDimensionsStrategy as fe, IgcNoopSortingStrategy as Be, IgcNumberFilteringOperand as Ve, IgcNumberSummaryOperand as Le, IgcPivotDateDimension as ze, IgcStringFilteringOperand as Ke, IgcSummaryOperand as Qe, IgcTimeFilteringOperand as We, IgcTimeSummaryOperand as qe, PivotDimensionType as je, RowPinningPosition as Je, SortingDirection as Ue, VerticalAlignment as Xe, registerI18n as Ye, setCurrentI18n as Ze } from "igniteui-webcomponents-grids/grids/index.js"; | ||
| import { createComponent as n } from "./template-renderer.js"; | ||
| const v = { | ||
| import * as React from 'react'; | ||
| import { IgcGridStateComponent, IgcActionStripComponent, IgcColumnGroupComponent, IgcColumnComponent, IgcColumnLayoutComponent, IgcGridEditingActionsComponent, IgcGridPinningActionsComponent, IgcGridToolbarTitleComponent, IgcGridToolbarActionsComponent, IgcGridToolbarAdvancedFilteringComponent, IgcGridToolbarExporterComponent, IgcGridToolbarHidingComponent, IgcGridToolbarPinningComponent, IgcGridComponent, IgcHierarchicalGridComponent, IgcRowIslandComponent, IgcPivotDataSelectorComponent, IgcPivotGridComponent, IgcTreeGridComponent, IgcQueryBuilderHeaderComponent, IgcQueryBuilderComponent, IgcGridToolbarComponent, IgcPaginatorComponent } from 'igniteui-webcomponents-grids/grids/index.js'; | ||
| export { ColumnPinningPosition, DropPosition, FilteringExpressionsTreeType, FilteringLogic, HorizontalAlignment, IgcBooleanFilteringOperand as IgrBooleanFilteringOperand, IgcByLevelTreeGridMergeStrategy as IgrByLevelTreeGridMergeStrategy, IgcDateFilteringOperand as IgrDateFilteringOperand, IgcDateSummaryOperand as IgrDateSummaryOperand, IgcDateTimeFilteringOperand as IgrDateTimeFilteringOperand, IgcDefaultMergeStrategy as IgrDefaultMergeStrategy, IgcDefaultTreeGridMergeStrategy as IgrDefaultTreeGridMergeStrategy, IgcFilteringExpressionsTree as IgrFilteringExpressionsTree, IgcFilteringOperand as IgrFilteringOperand, IgcNoopFilteringStrategy as IgrNoopFilteringStrategy, IgcNoopPivotDimensionsStrategy as IgrNoopPivotDimensionsStrategy, IgcNoopSortingStrategy as IgrNoopSortingStrategy, IgcNumberFilteringOperand as IgrNumberFilteringOperand, IgcNumberSummaryOperand as IgrNumberSummaryOperand, IgcPivotDateDimension as IgrPivotDateDimension, IgcStringFilteringOperand as IgrStringFilteringOperand, IgcSummaryOperand as IgrSummaryOperand, IgcTimeFilteringOperand as IgrTimeFilteringOperand, IgcTimeSummaryOperand as IgrTimeSummaryOperand, PivotDimensionType, RowPinningPosition, SortingDirection, VerticalAlignment, registerI18n, setCurrentI18n } from 'igniteui-webcomponents-grids/grids/index.js'; | ||
| import { createComponent } from './template-renderer.js'; | ||
| const GridPagingMode = { | ||
| /** @deprecated use GridPagingMode union type values directly, e.g. `pagingMode="local"` */ | ||
@@ -10,23 +11,31 @@ Local: "local", | ||
| Remote: "remote" | ||
| }, P = /* @__PURE__ */ n({ | ||
| }; | ||
| const IgrGridState = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-state", | ||
| displayName: "IgrGridState", | ||
| elementClass: o, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcGridStateComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
| onStateParsed: "stateParsed" | ||
| } | ||
| }), A = o, b = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrGridStateModule = IgcGridStateComponent; | ||
| const IgrActionStrip = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-action-strip", | ||
| displayName: "IgrActionStrip", | ||
| elementClass: t, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), M = t, N = /* @__PURE__ */ n({ | ||
| elementClass: IgcActionStripComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrActionStripModule = IgcActionStripComponent; | ||
| const IgrColumnGroup = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-column-group", | ||
| displayName: "IgrColumnGroup", | ||
| elementClass: a, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcColumnGroupComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -47,8 +56,11 @@ onHiddenChange: "hiddenChange", | ||
| } | ||
| }), H = a, F = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrColumnGroupModule = IgcColumnGroupComponent; | ||
| const IgrColumn = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-column", | ||
| displayName: "IgrColumn", | ||
| elementClass: r, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcColumnComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -68,8 +80,11 @@ onHiddenChange: "hiddenChange", | ||
| } | ||
| }), k = r, O = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrColumnModule = IgcColumnComponent; | ||
| const IgrColumnLayout = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-column-layout", | ||
| displayName: "IgrColumnLayout", | ||
| elementClass: i, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcColumnLayoutComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -90,38 +105,56 @@ onHiddenChange: "hiddenChange", | ||
| } | ||
| }), f = i, B = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrColumnLayoutModule = IgcColumnLayoutComponent; | ||
| const IgrGridEditingActions = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-editing-actions", | ||
| displayName: "IgrGridEditingActions", | ||
| elementClass: l, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), V = l, L = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridEditingActionsComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridEditingActionsModule = IgcGridEditingActionsComponent; | ||
| const IgrGridPinningActions = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-pinning-actions", | ||
| displayName: "IgrGridPinningActions", | ||
| elementClass: d, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), z = d, K = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridPinningActionsComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridPinningActionsModule = IgcGridPinningActionsComponent; | ||
| const IgrGridToolbarTitle = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-title", | ||
| displayName: "IgrGridToolbarTitle", | ||
| elementClass: g, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), Q = g, W = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridToolbarTitleComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridToolbarTitleModule = IgcGridToolbarTitleComponent; | ||
| const IgrGridToolbarActions = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-actions", | ||
| displayName: "IgrGridToolbarActions", | ||
| elementClass: m, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), q = m, j = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridToolbarActionsComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridToolbarActionsModule = IgcGridToolbarActionsComponent; | ||
| const IgrGridToolbarAdvancedFiltering = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-advanced-filtering", | ||
| displayName: "IgrGridToolbarAdvancedFiltering", | ||
| elementClass: c, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), J = c, U = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridToolbarAdvancedFilteringComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridToolbarAdvancedFilteringModule = IgcGridToolbarAdvancedFilteringComponent; | ||
| const IgrGridToolbarExporter = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-exporter", | ||
| displayName: "IgrGridToolbarExporter", | ||
| elementClass: s, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcGridToolbarExporterComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -136,8 +169,11 @@ onExportStarted: "exportStarted", | ||
| } | ||
| }), X = s, Y = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrGridToolbarExporterModule = IgcGridToolbarExporterComponent; | ||
| const IgrGridToolbarHiding = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-hiding", | ||
| displayName: "IgrGridToolbarHiding", | ||
| elementClass: p, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcGridToolbarHidingComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -150,8 +186,11 @@ onOpening: "opening", | ||
| } | ||
| }), Z = p, _ = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrGridToolbarHidingModule = IgcGridToolbarHidingComponent; | ||
| const IgrGridToolbarPinning = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar-pinning", | ||
| displayName: "IgrGridToolbarPinning", | ||
| elementClass: C, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcGridToolbarPinningComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -164,8 +203,11 @@ onOpening: "opening", | ||
| } | ||
| }), $ = C, ee = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrGridToolbarPinningModule = IgcGridToolbarPinningComponent; | ||
| const IgrGrid = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid", | ||
| displayName: "IgrGrid", | ||
| elementClass: T, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcGridComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -255,8 +297,11 @@ onDataPreLoad: "dataPreLoad", | ||
| } | ||
| }), ne = T, oe = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrGridModule = IgcGridComponent; | ||
| const IgrHierarchicalGrid = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-hierarchical-grid", | ||
| displayName: "IgrHierarchicalGrid", | ||
| elementClass: u, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcHierarchicalGridComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -339,8 +384,11 @@ onDataPreLoad: "dataPreLoad", | ||
| } | ||
| }), te = u, ae = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrHierarchicalGridModule = IgcHierarchicalGridComponent; | ||
| const IgrRowIsland = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-row-island", | ||
| displayName: "IgrRowIsland", | ||
| elementClass: E, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcRowIslandComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -427,8 +475,11 @@ onGridCreated: "gridCreated", | ||
| } | ||
| }), re = E, ie = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrRowIslandModule = IgcRowIslandComponent; | ||
| const IgrPivotDataSelector = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-pivot-data-selector", | ||
| displayName: "IgrPivotDataSelector", | ||
| elementClass: w, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcPivotDataSelectorComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -440,8 +491,11 @@ onColumnsExpandedChange: "columnsExpandedChange", | ||
| } | ||
| }), le = w, de = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrPivotDataSelectorModule = IgcPivotDataSelectorComponent; | ||
| const IgrPivotGrid = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-pivot-grid", | ||
| displayName: "IgrPivotGrid", | ||
| elementClass: I, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcPivotGridComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -532,8 +586,11 @@ onDimensionsChange: "dimensionsChange", | ||
| } | ||
| }), ge = I, me = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrPivotGridModule = IgcPivotGridComponent; | ||
| const IgrTreeGrid = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-tree-grid", | ||
| displayName: "IgrTreeGrid", | ||
| elementClass: h, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcTreeGridComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -616,14 +673,20 @@ onFilteringExpressionsTreeChange: "filteringExpressionsTreeChange", | ||
| } | ||
| }), ce = h, se = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrTreeGridModule = IgcTreeGridComponent; | ||
| const IgrQueryBuilderHeader = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-query-builder-header", | ||
| displayName: "IgrQueryBuilderHeader", | ||
| elementClass: S, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), pe = S, Ce = /* @__PURE__ */ n({ | ||
| elementClass: IgcQueryBuilderHeaderComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrQueryBuilderHeaderModule = IgcQueryBuilderHeaderComponent; | ||
| const IgrQueryBuilder = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-query-builder", | ||
| displayName: "IgrQueryBuilder", | ||
| elementClass: x, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcQueryBuilderComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -633,14 +696,20 @@ onExpressionTreeChange: "expressionTreeChange" | ||
| renderProps: { searchValueTemplate: "searchValueTemplate" } | ||
| }), Te = x, ue = /* @__PURE__ */ n({ | ||
| }); | ||
| const IgrQueryBuilderModule = IgcQueryBuilderComponent; | ||
| const IgrGridToolbar = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-grid-toolbar", | ||
| displayName: "IgrGridToolbar", | ||
| elementClass: D, | ||
| react: e, | ||
| moveBackOnDelete: !0 | ||
| }), Ee = D, we = /* @__PURE__ */ n({ | ||
| elementClass: IgcGridToolbarComponent, | ||
| react: React, | ||
| moveBackOnDelete: true | ||
| }); | ||
| const IgrGridToolbarModule = IgcGridToolbarComponent; | ||
| const IgrPaginator = /* @__PURE__ */ createComponent({ | ||
| tagName: "igc-paginator", | ||
| displayName: "IgrPaginator", | ||
| elementClass: y, | ||
| react: e, | ||
| moveBackOnDelete: !0, | ||
| elementClass: IgcPaginatorComponent, | ||
| react: React, | ||
| moveBackOnDelete: true, | ||
| events: { | ||
@@ -652,82 +721,6 @@ onPerPageChange: "perPageChange", | ||
| } | ||
| }), Ie = y; | ||
| export { | ||
| xe as ColumnPinningPosition, | ||
| De as DropPosition, | ||
| ye as FilteringExpressionsTreeType, | ||
| Ge as FilteringLogic, | ||
| v as GridPagingMode, | ||
| Re as HorizontalAlignment, | ||
| b as IgrActionStrip, | ||
| M as IgrActionStripModule, | ||
| ve as IgrBooleanFilteringOperand, | ||
| Pe as IgrByLevelTreeGridMergeStrategy, | ||
| F as IgrColumn, | ||
| N as IgrColumnGroup, | ||
| H as IgrColumnGroupModule, | ||
| O as IgrColumnLayout, | ||
| f as IgrColumnLayoutModule, | ||
| k as IgrColumnModule, | ||
| Ae as IgrDateFilteringOperand, | ||
| be as IgrDateSummaryOperand, | ||
| Me as IgrDateTimeFilteringOperand, | ||
| Ne as IgrDefaultMergeStrategy, | ||
| He as IgrDefaultTreeGridMergeStrategy, | ||
| Fe as IgrFilteringExpressionsTree, | ||
| ke as IgrFilteringOperand, | ||
| ee as IgrGrid, | ||
| B as IgrGridEditingActions, | ||
| V as IgrGridEditingActionsModule, | ||
| ne as IgrGridModule, | ||
| L as IgrGridPinningActions, | ||
| z as IgrGridPinningActionsModule, | ||
| P as IgrGridState, | ||
| A as IgrGridStateModule, | ||
| ue as IgrGridToolbar, | ||
| W as IgrGridToolbarActions, | ||
| q as IgrGridToolbarActionsModule, | ||
| j as IgrGridToolbarAdvancedFiltering, | ||
| J as IgrGridToolbarAdvancedFilteringModule, | ||
| U as IgrGridToolbarExporter, | ||
| X as IgrGridToolbarExporterModule, | ||
| Y as IgrGridToolbarHiding, | ||
| Z as IgrGridToolbarHidingModule, | ||
| Ee as IgrGridToolbarModule, | ||
| _ as IgrGridToolbarPinning, | ||
| $ as IgrGridToolbarPinningModule, | ||
| K as IgrGridToolbarTitle, | ||
| Q as IgrGridToolbarTitleModule, | ||
| oe as IgrHierarchicalGrid, | ||
| te as IgrHierarchicalGridModule, | ||
| Oe as IgrNoopFilteringStrategy, | ||
| fe as IgrNoopPivotDimensionsStrategy, | ||
| Be as IgrNoopSortingStrategy, | ||
| Ve as IgrNumberFilteringOperand, | ||
| Le as IgrNumberSummaryOperand, | ||
| we as IgrPaginator, | ||
| Ie as IgrPaginatorModule, | ||
| ie as IgrPivotDataSelector, | ||
| le as IgrPivotDataSelectorModule, | ||
| ze as IgrPivotDateDimension, | ||
| de as IgrPivotGrid, | ||
| ge as IgrPivotGridModule, | ||
| Ce as IgrQueryBuilder, | ||
| se as IgrQueryBuilderHeader, | ||
| pe as IgrQueryBuilderHeaderModule, | ||
| Te as IgrQueryBuilderModule, | ||
| ae as IgrRowIsland, | ||
| re as IgrRowIslandModule, | ||
| Ke as IgrStringFilteringOperand, | ||
| Qe as IgrSummaryOperand, | ||
| We as IgrTimeFilteringOperand, | ||
| qe as IgrTimeSummaryOperand, | ||
| me as IgrTreeGrid, | ||
| ce as IgrTreeGridModule, | ||
| je as PivotDimensionType, | ||
| Je as RowPinningPosition, | ||
| Ue as SortingDirection, | ||
| Xe as VerticalAlignment, | ||
| Ye as registerI18n, | ||
| Ze as setCurrentI18n | ||
| }; | ||
| }); | ||
| const IgrPaginatorModule = IgcPaginatorComponent; | ||
| export { GridPagingMode, IgrActionStrip, IgrActionStripModule, IgrColumn, IgrColumnGroup, IgrColumnGroupModule, IgrColumnLayout, IgrColumnLayoutModule, IgrColumnModule, IgrGrid, IgrGridEditingActions, IgrGridEditingActionsModule, IgrGridModule, IgrGridPinningActions, IgrGridPinningActionsModule, IgrGridState, IgrGridStateModule, IgrGridToolbar, IgrGridToolbarActions, IgrGridToolbarActionsModule, IgrGridToolbarAdvancedFiltering, IgrGridToolbarAdvancedFilteringModule, IgrGridToolbarExporter, IgrGridToolbarExporterModule, IgrGridToolbarHiding, IgrGridToolbarHidingModule, IgrGridToolbarModule, IgrGridToolbarPinning, IgrGridToolbarPinningModule, IgrGridToolbarTitle, IgrGridToolbarTitleModule, IgrHierarchicalGrid, IgrHierarchicalGridModule, IgrPaginator, IgrPaginatorModule, IgrPivotDataSelector, IgrPivotDataSelectorModule, IgrPivotGrid, IgrPivotGridModule, IgrQueryBuilder, IgrQueryBuilderHeader, IgrQueryBuilderHeaderModule, IgrQueryBuilderModule, IgrRowIsland, IgrRowIslandModule, IgrTreeGrid, IgrTreeGridModule }; | ||
| //# sourceMappingURL=grids.js.map |
+1
-1
| { | ||
| "name": "igniteui-react-grids", | ||
| "version": "19.5.0", | ||
| "version": "19.5.1", | ||
| "type": "module", | ||
@@ -5,0 +5,0 @@ "description": "Ignite UI React Grid components.", |
+259
-163
@@ -1,94 +0,124 @@ | ||
| import { createComponent as $ } from "@lit/react"; | ||
| import { noChange as R, html as I } from "lit"; | ||
| import { createPortal as D } from "react-dom"; | ||
| import { directive as G, AsyncDirective as K } from "lit/async-directive.js"; | ||
| const V = "dataContext"; | ||
| let x = !1; | ||
| function B(e) { | ||
| return new Proxy(e, { | ||
| get(t, r, s) { | ||
| return r === V ? (x || (x = !0, console.warn( | ||
| "dataContext is deprecated and template context props are now available as the root object and can be accessed directly" | ||
| )), t) : Reflect.get(t, r, s); | ||
| import { createComponent as createComponent$1 } from '@lit/react'; | ||
| import { noChange, html } from 'lit'; | ||
| import { createPortal } from 'react-dom'; | ||
| import { directive, AsyncDirective } from 'lit/async-directive.js'; | ||
| const DATA_CONTEXT_PROP = "dataContext"; | ||
| let once = false; | ||
| function withDataContext(data) { | ||
| return new Proxy(data, { | ||
| get(target, prop, receiver) { | ||
| if (prop === DATA_CONTEXT_PROP) { | ||
| if (!once) { | ||
| once = true; | ||
| console.warn( | ||
| "dataContext is deprecated and template context props are now available as the root object and can be accessed directly" | ||
| ); | ||
| } | ||
| return target; | ||
| } | ||
| return Reflect.get(target, prop, receiver); | ||
| } | ||
| }); | ||
| } | ||
| function d(e, t, r = /* @__PURE__ */ new WeakSet()) { | ||
| if (Object.is(e, t)) return !0; | ||
| if (P(e) && P(t)) { | ||
| if (e.constructor !== t.constructor) return !1; | ||
| if (r.has(e) && r.has(t)) | ||
| return !0; | ||
| if (r.add(e), r.add(t), b(e) && b(t)) return e.source === t.source && e.flags === t.flags; | ||
| if (e instanceof Map && t instanceof Map) { | ||
| if (e.size !== t.size) return !1; | ||
| for (const [c, u] of e.entries()) { | ||
| let h = !1; | ||
| for (const [j, p] of t.entries()) | ||
| if (d(c, j, r) && d(u, p, r)) { | ||
| h = !0; | ||
| function equal(a, b, visited = /* @__PURE__ */ new WeakSet()) { | ||
| if (Object.is(a, b)) return true; | ||
| if (isObject(a) && isObject(b)) { | ||
| if (a.constructor !== b.constructor) return false; | ||
| if (visited.has(a) && visited.has(b)) { | ||
| return true; | ||
| } | ||
| visited.add(a); | ||
| visited.add(b); | ||
| if (isRegExp(a) && isRegExp(b)) return a.source === b.source && a.flags === b.flags; | ||
| if (a instanceof Map && b instanceof Map) { | ||
| if (a.size !== b.size) return false; | ||
| for (const [keyA, valueA] of a.entries()) { | ||
| let found = false; | ||
| for (const [keyB, valueB] of b.entries()) { | ||
| if (equal(keyA, keyB, visited) && equal(valueA, valueB, visited)) { | ||
| found = true; | ||
| break; | ||
| } | ||
| if (!h) return !1; | ||
| } | ||
| if (!found) return false; | ||
| } | ||
| return !0; | ||
| return true; | ||
| } | ||
| if (e instanceof Set && t instanceof Set) { | ||
| if (e.size !== t.size) return !1; | ||
| for (const c of e) { | ||
| let u = !1; | ||
| for (const h of t) | ||
| if (d(c, h, r)) { | ||
| u = !0; | ||
| if (a instanceof Set && b instanceof Set) { | ||
| if (a.size !== b.size) return false; | ||
| for (const valueA of a) { | ||
| let found = false; | ||
| for (const valueB of b) { | ||
| if (equal(valueA, valueB, visited)) { | ||
| found = true; | ||
| break; | ||
| } | ||
| if (!u) return !1; | ||
| } | ||
| if (!found) return false; | ||
| } | ||
| return !0; | ||
| return true; | ||
| } | ||
| if (Array.isArray(e) && Array.isArray(t)) { | ||
| const c = e.length; | ||
| if (c !== t.length) return !1; | ||
| for (let u = 0; u < c; u++) | ||
| if (!d(e[u], t[u], r)) return !1; | ||
| return !0; | ||
| if (Array.isArray(a) && Array.isArray(b)) { | ||
| const length = a.length; | ||
| if (length !== b.length) return false; | ||
| for (let i = 0; i < length; i++) { | ||
| if (!equal(a[i], b[i], visited)) return false; | ||
| } | ||
| return true; | ||
| } | ||
| if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf(); | ||
| if (e.toString !== Object.prototype.toString) return e.toString() === t.toString(); | ||
| const s = Object.keys(e), a = Object.keys(t); | ||
| if (s.length !== a.length) return !1; | ||
| for (const c of s) | ||
| if (!Object.hasOwn(t, c)) return !1; | ||
| for (const c of s) | ||
| if (!d(e[c], t[c], r)) return !1; | ||
| return r.delete(e), r.delete(t), !0; | ||
| if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); | ||
| if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); | ||
| const aKeys = Object.keys(a); | ||
| const bKeys = Object.keys(b); | ||
| if (aKeys.length !== bKeys.length) return false; | ||
| for (const key of aKeys) { | ||
| if (!Object.hasOwn(b, key)) return false; | ||
| } | ||
| for (const key of aKeys) { | ||
| if (!equal(a[key], b[key], visited)) return false; | ||
| } | ||
| visited.delete(a); | ||
| visited.delete(b); | ||
| return true; | ||
| } | ||
| return !1; | ||
| return false; | ||
| } | ||
| function P(e) { | ||
| return e != null && typeof e == "object"; | ||
| function isObject(value) { | ||
| return value != null && typeof value === "object"; | ||
| } | ||
| function b(e) { | ||
| return e != null && e.constructor === RegExp; | ||
| function isRegExp(value) { | ||
| return value != null && value.constructor === RegExp; | ||
| } | ||
| function F() { | ||
| if (typeof crypto.randomUUID == "function") | ||
| function getUUID() { | ||
| if (typeof crypto.randomUUID === "function") { | ||
| return crypto.randomUUID(); | ||
| const e = new Uint8Array(16); | ||
| crypto.getRandomValues(e), e[6] = e[6] & 15 | 64, e[8] = e[8] & 63 | 128; | ||
| const t = [...e].map((r) => r.toString(16).padStart(2, "0")).join(""); | ||
| return `${t.slice(0, 8)}-${t.slice(8, 12)}-${t.slice(12, 16)}-${t.slice(16, 20)}-${t.slice(20)}`; | ||
| } | ||
| const bytes = new Uint8Array(16); | ||
| crypto.getRandomValues(bytes); | ||
| bytes[6] = bytes[6] & 15 | 64; | ||
| bytes[8] = bytes[8] & 63 | 128; | ||
| const a = [...bytes].map((b) => b.toString(16).padStart(2, "0")).join(""); | ||
| return `${a.slice(0, 8)}-${a.slice(8, 12)}-${a.slice(12, 16)}-${a.slice(16, 20)}-${a.slice(20)}`; | ||
| } | ||
| const w = /* @__PURE__ */ Symbol("renderer-remove"), T = /* @__PURE__ */ Symbol("not-set"); | ||
| function S(e, t, r, s) { | ||
| const REQUEST_REMOVE = /* @__PURE__ */ Symbol("renderer-remove"); | ||
| const NOT_SET = /* @__PURE__ */ Symbol("not-set"); | ||
| function createRequestData(name, data, node, key) { | ||
| return { | ||
| name: e, | ||
| data: t === w ? t : B(t), | ||
| slotName: s !== void 0 ? `${e}${s}` : e, | ||
| node: r | ||
| name, | ||
| data: data === REQUEST_REMOVE ? data : withDataContext(data), | ||
| slotName: key !== void 0 ? `${name}${key}` : name, | ||
| node | ||
| }; | ||
| } | ||
| class L extends K { | ||
| class RequestRenderer extends AsyncDirective { | ||
| constructor() { | ||
| super(...arguments), this._key = F(), this._part = null, this._callback = null, this._state = { previous: T, current: void 0 }; | ||
| super(...arguments); | ||
| this._key = getUUID(); | ||
| this._part = null; | ||
| this._callback = null; | ||
| this._state = { previous: NOT_SET, current: void 0 }; | ||
| } | ||
@@ -98,99 +128,165 @@ get _renderNode() { | ||
| } | ||
| _shouldUpdateNG(t) { | ||
| return !0; | ||
| _shouldUpdateNG(_data) { | ||
| return true; | ||
| } | ||
| _shouldUpdate() { | ||
| const t = this._state.current; | ||
| return Reflect.has(t, "implicit") ? this._shouldUpdateNG(t) : d(this._state.previous, t) ? !1 : (this._state.previous = t, !0); | ||
| const data = this._state.current; | ||
| if (Reflect.has(data, "implicit")) { | ||
| return this._shouldUpdateNG(data); | ||
| } | ||
| if (equal(this._state.previous, data)) { | ||
| return false; | ||
| } | ||
| this._state.previous = data; | ||
| return true; | ||
| } | ||
| render(t, r, s) { | ||
| return R; | ||
| render(_callback, _name, _data) { | ||
| return noChange; | ||
| } | ||
| update(t, [r, s, a]) { | ||
| return this._callback = new WeakRef(r), this._name = s, this._state.current = a, this._part = new WeakRef(t), this.isConnected && r && this._shouldUpdate() && r(S(this._name, this._state.current, this._renderNode, this._key)), R; | ||
| update(part, [callback, name, data]) { | ||
| this._callback = new WeakRef(callback); | ||
| this._name = name; | ||
| this._state.current = data; | ||
| this._part = new WeakRef(part); | ||
| if (this.isConnected && callback && this._shouldUpdate()) { | ||
| callback(createRequestData(this._name, this._state.current, this._renderNode, this._key)); | ||
| } | ||
| return noChange; | ||
| } | ||
| reconnected() { | ||
| const t = this._callback?.deref(); | ||
| t && this._shouldUpdate() && t(S(this._name, this._state.current, this._renderNode, this._key)); | ||
| const callback = this._callback?.deref(); | ||
| if (callback && this._shouldUpdate()) { | ||
| callback(createRequestData(this._name, this._state.current, this._renderNode, this._key)); | ||
| } | ||
| } | ||
| disconnected() { | ||
| const t = this._callback?.deref(); | ||
| t && (t(S(this._name, w, this._renderNode, this._key)), this._state.previous = T); | ||
| const callback = this._callback?.deref(); | ||
| if (callback) { | ||
| callback(createRequestData(this._name, REQUEST_REMOVE, this._renderNode, this._key)); | ||
| this._state.previous = NOT_SET; | ||
| } | ||
| } | ||
| } | ||
| const M = G(L), q = ({ | ||
| react: e, | ||
| tagName: t, | ||
| elementClass: r, | ||
| events: s, | ||
| displayName: a, | ||
| renderProps: c, | ||
| moveBackOnDelete: u | ||
| const requestRenderer = directive(RequestRenderer); | ||
| const createComponent = ({ | ||
| react: React, | ||
| tagName, | ||
| elementClass, | ||
| events, | ||
| displayName, | ||
| renderProps, | ||
| moveBackOnDelete | ||
| }) => { | ||
| if ("register" in r && r.register(), !c && !u) | ||
| return $({ | ||
| react: e, | ||
| tagName: t, | ||
| elementClass: r, | ||
| events: s, | ||
| displayName: a | ||
| if ("register" in elementClass) { | ||
| elementClass.register(); | ||
| } | ||
| if (!renderProps && !moveBackOnDelete) { | ||
| return createComponent$1({ | ||
| react: React, | ||
| tagName, | ||
| elementClass, | ||
| events, | ||
| displayName | ||
| }); | ||
| const j = $({ | ||
| react: e, | ||
| tagName: t, | ||
| elementClass: r, | ||
| events: s ?? {}, | ||
| displayName: a | ||
| } | ||
| const safeEvents = events ?? {}; | ||
| const component = createComponent$1({ | ||
| react: React, | ||
| tagName, | ||
| elementClass, | ||
| events: safeEvents, | ||
| displayName | ||
| }); | ||
| return e.forwardRef((p, y) => { | ||
| const l = e.useRef(/* @__PURE__ */ new Map()), _ = e.useRef(null), O = e.useRef(null), [m, z] = e.useState(/* @__PURE__ */ new Map()), g = {}, N = {}; | ||
| e.useLayoutEffect(() => { | ||
| if (!u) return; | ||
| const n = O.current?.deref(); | ||
| return n && _.current && n !== _.current.parentElement && (n.appendChild(_.current), O.current = null), () => { | ||
| const i = _.current; | ||
| if (!i) return; | ||
| const f = i.ngElementStrategy?.parentElement?.deref(); | ||
| f && f !== i.parentElement && (i.parentElement && (O.current = new WeakRef(i.parentElement)), f.appendChild(i)); | ||
| return React.forwardRef((props, ref) => { | ||
| const listeners = React.useRef(/* @__PURE__ */ new Map()); | ||
| const elementRef = React.useRef(null); | ||
| const projectionParent = React.useRef(null); | ||
| const [renderers, setRenderers] = React.useState(/* @__PURE__ */ new Map()); | ||
| const outProps = {}; | ||
| const portals = {}; | ||
| React.useLayoutEffect(() => { | ||
| if (!moveBackOnDelete) return; | ||
| const prevParent = projectionParent.current?.deref(); | ||
| if (prevParent && elementRef.current && prevParent !== elementRef.current.parentElement) { | ||
| prevParent.appendChild(elementRef.current); | ||
| projectionParent.current = null; | ||
| } | ||
| return () => { | ||
| const element = elementRef.current; | ||
| if (!element) return; | ||
| const creationParent = element.ngElementStrategy?.parentElement?.deref(); | ||
| if (creationParent && creationParent !== element.parentElement) { | ||
| if (element.parentElement) { | ||
| projectionParent.current = new WeakRef(element.parentElement); | ||
| } | ||
| creationParent.appendChild(element); | ||
| } | ||
| }; | ||
| }, [u]); | ||
| const W = (n) => { | ||
| n.data === w ? m.delete(n.slotName) : m.set( | ||
| n.slotName, | ||
| D(N[n.name]?.(n.data), n.node, n.slotName) | ||
| ), z(() => new Map(m)); | ||
| }, A = (n, i, f, C = "") => { | ||
| for (const o in n) { | ||
| const k = C ? `${C}.${o}` : o, E = i?.[o]; | ||
| if (E !== void 0 && typeof E == "string") | ||
| if (l.current.has(k)) | ||
| f[o] = l.current.get(k); | ||
| else { | ||
| N[E] = n[o]; | ||
| const v = Q(W, E); | ||
| f[o] = v, l.current.set(k, v); | ||
| }, [moveBackOnDelete]); | ||
| const renderFunc = (req) => { | ||
| if (req.data === REQUEST_REMOVE) { | ||
| renderers.delete(req.slotName); | ||
| } else { | ||
| renderers.set( | ||
| req.slotName, | ||
| createPortal(portals[req.name]?.(req.data), req.node, req.slotName) | ||
| ); | ||
| } | ||
| setRenderers(() => new Map(renderers)); | ||
| }; | ||
| const processProps = (propMap, propDefinitions, outProps2, prefix = "") => { | ||
| for (const prop in propMap) { | ||
| const fullPropName = prefix ? `${prefix}.${prop}` : prop; | ||
| const rendererName = propDefinitions?.[prop]; | ||
| if (rendererName !== void 0 && typeof rendererName === "string") { | ||
| if (listeners.current.has(fullPropName)) { | ||
| outProps2[prop] = listeners.current.get(fullPropName); | ||
| } else { | ||
| portals[rendererName] = propMap[prop]; | ||
| const patched = createPatched(renderFunc, rendererName); | ||
| outProps2[prop] = patched; | ||
| listeners.current.set(fullPropName, patched); | ||
| } | ||
| else typeof n[o] == "object" && n[o] !== null && i?.[o] && typeof i[o] == "object" ? (f[o] = {}, A( | ||
| n[o], | ||
| i?.[o], | ||
| f[o], | ||
| k | ||
| )) : f[o] = n[o]; | ||
| } else if (typeof propMap[prop] === "object" && propMap[prop] !== null && propDefinitions?.[prop] && typeof propDefinitions[prop] === "object") { | ||
| outProps2[prop] = {}; | ||
| processProps( | ||
| propMap[prop], | ||
| propDefinitions?.[prop], | ||
| outProps2[prop], | ||
| fullPropName | ||
| ); | ||
| } else { | ||
| outProps2[prop] = propMap[prop]; | ||
| } | ||
| } | ||
| }; | ||
| for (const n of l.current.keys()) | ||
| X(p, n) || l.current.delete(n); | ||
| A(p, c ?? {}, g); | ||
| const U = p; | ||
| return l.current.size ? Object.assign(g, { | ||
| children: [...e.Children.toArray(U.children), ...m.values()] | ||
| }) : Object.assign(g, { | ||
| children: e.Children.toArray(U.children) | ||
| }), e.createElement(j, { | ||
| ...g, | ||
| ref: e.useCallback( | ||
| (n) => { | ||
| _.current = n, typeof y == "function" ? y(n) : y !== null && (y.current = n); | ||
| for (const key of listeners.current.keys()) { | ||
| if (!hasNestedProperty(props, key)) { | ||
| listeners.current.delete(key); | ||
| } | ||
| } | ||
| processProps(props, renderProps ?? {}, outProps); | ||
| const propsWithChildren = props; | ||
| if (listeners.current.size) { | ||
| Object.assign(outProps, { | ||
| children: [...React.Children.toArray(propsWithChildren.children), ...renderers.values()] | ||
| }); | ||
| } else { | ||
| Object.assign(outProps, { | ||
| children: React.Children.toArray(propsWithChildren.children) | ||
| }); | ||
| } | ||
| return React.createElement(component, { | ||
| ...outProps, | ||
| ref: React.useCallback( | ||
| (node) => { | ||
| elementRef.current = node; | ||
| if (typeof ref === "function") { | ||
| ref(node); | ||
| } else if (ref !== null) { | ||
| ref.current = node; | ||
| } | ||
| }, | ||
| [y] | ||
| [ref] | ||
| ) | ||
@@ -200,18 +296,18 @@ }); | ||
| }; | ||
| function Q(e, t) { | ||
| return (r) => I`${M(e, t, r)}`; | ||
| function createPatched(callback, propertyName) { | ||
| return (ctx) => html`${requestRenderer(callback, propertyName, ctx)}`; | ||
| } | ||
| function X(e, t) { | ||
| const r = t.split("."); | ||
| let s = e; | ||
| for (const a of r) { | ||
| if (s == null || typeof s != "object") | ||
| return !1; | ||
| s = s[a]; | ||
| function hasNestedProperty(object, path) { | ||
| const parts = path.split("."); | ||
| let current = object; | ||
| for (const part of parts) { | ||
| if (current === void 0 || current === null || typeof current !== "object") { | ||
| return false; | ||
| } | ||
| current = current[part]; | ||
| } | ||
| return s !== void 0; | ||
| return current !== void 0; | ||
| } | ||
| export { | ||
| q as createComponent | ||
| }; | ||
| export { createComponent }; | ||
| //# sourceMappingURL=template-renderer.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"template-renderer.js","sources":["../src/backfills.ts","../src/equal.ts","../src/random-uuid.ts","../src/render-props.ts","../src/react-props.tsx"],"sourcesContent":["const DATA_CONTEXT_PROP = 'dataContext';\nlet once = false;\n\n/**\n * Creates a proxy around template context data that adds back\n * the `dataContext` prop returning the original data\n */\nexport function withDataContext(data: unknown) {\n return new Proxy(data as any, {\n get(target, prop, receiver) {\n if (prop === DATA_CONTEXT_PROP) {\n if (!once) {\n once = true;\n console.warn(\n 'dataContext is deprecated and template context props are now available as the root object and can be accessed directly',\n );\n }\n // return the original object:\n return target;\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\n\ninterface DataContextProp<T> {\n /**\n * @deprecated template context props are now available as the root object and can be accessed directly.\n * E.g. instead of `ctx.dataContext.<prop>` just `ctx.<prop>`\n */\n dataContext: T;\n}\n\nexport type WithDataContext<T> = T extends [infer F, ...infer R]\n ? [F & DataContextProp<F>, ...WithDataContext<R>]\n : [];\n","export function equal<T>(a: unknown, b: T, visited = new WeakSet()): boolean {\n // Early return\n if (Object.is(a, b)) return true;\n\n if (isObject(a) && isObject(b)) {\n if (a.constructor !== b.constructor) return false;\n\n // Circular references\n if (visited.has(a) && visited.has(b)) {\n return true;\n }\n\n visited.add(a);\n visited.add(b);\n\n // RegExp\n if (isRegExp(a) && isRegExp(b)) return a.source === b.source && a.flags === b.flags;\n\n // Maps\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n for (const [keyA, valueA] of a.entries()) {\n let found = false;\n for (const [keyB, valueB] of b.entries()) {\n if (equal(keyA, keyB, visited) && equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Sets\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n for (const valueA of a) {\n let found = false;\n for (const valueB of b) {\n if (equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n const length = a.length;\n if (length !== b.length) return false;\n for (let i = 0; i < length; i++) {\n if (!equal(a[i], b[i], visited)) return false;\n }\n return true;\n }\n\n // toPrimitive\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n // Strings based\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n\n for (const key of aKeys) {\n if (!Object.hasOwn(b, key)) return false;\n }\n\n for (const key of aKeys) {\n if (!equal(a[key as keyof typeof a], b[key as keyof typeof b], visited)) return false;\n }\n\n visited.delete(a);\n visited.delete(b);\n\n return true;\n }\n\n return false;\n}\n\nfunction isObject(value: unknown): value is object {\n return value != null && typeof value === 'object';\n}\n\nfunction isRegExp(value: unknown): value is RegExp {\n return value != null && value.constructor === RegExp;\n}\n","/**\n * Use the function to get a random UUID string when secure context is not guaranteed making crypto.randomUUID unavailable.\n * @returns A random UUID string.\n */\nexport function getUUID(): `${string}-${string}-${string}-${string}-${string}` {\n if (typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n // Secure fallback using crypto.getRandomValues()\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n\n // Set version (4) and variant (RFC 4122)\n bytes[6] = (bytes[6] & 0x0f) | 0x40; // Version 4\n bytes[8] = (bytes[8] & 0x3f) | 0x80; // Variant 1\n\n const a = [...bytes].map((b) => b.toString(16).padStart(2, '0')).join('');\n return `${a.slice(0, 8)}-${a.slice(8, 12)}-${a.slice(12, 16)}-${a.slice(16, 20)}-${a.slice(20)}`;\n}\n","import { noChange } from 'lit';\nimport {\n AsyncDirective,\n type ChildPart,\n type DirectiveParameters,\n directive,\n} from 'lit/async-directive.js';\nimport { withDataContext } from './backfills.js';\nimport { equal } from './equal.js';\nimport { getUUID } from './random-uuid.js';\n\nexport const REQUEST_REMOVE = Symbol('renderer-remove');\nconst NOT_SET = Symbol('not-set');\n\ntype NgState<T> = T & { $implicit: unknown };\ntype RendererState<T> = {\n previous: T;\n current: T;\n};\n\nfunction createRequestData<T>(\n name: string,\n data: T | typeof REQUEST_REMOVE,\n node: Element,\n key?: string,\n): RendererRequest<T> {\n return {\n name,\n data: data === REQUEST_REMOVE ? data : withDataContext(data),\n slotName: key !== undefined ? `${name}${key}` : name,\n node,\n };\n}\n\nexport type RendererRequest<T> = {\n data: T | typeof REQUEST_REMOVE;\n name: string;\n slotName: string;\n node: Element;\n};\n\ntype RendererCallback<T> = (req: RendererRequest<T>) => unknown;\n\nclass RequestRenderer<T> extends AsyncDirective {\n private readonly _key = getUUID();\n private _part: WeakRef<ChildPart> | null = null;\n private _callback: WeakRef<RendererCallback<T>> | null = null;\n\n private _state = { previous: NOT_SET, current: undefined } as RendererState<T>;\n private _name!: string;\n\n private get _renderNode(): Element {\n return this._part?.deref()?.parentNode as Element;\n }\n\n private _shouldUpdateNG(_data: NgState<T>): boolean {\n /* Can't compare implicit, in main use case it'd be the cell value which might repeat,\n be undefined or otherwise unrelated to the template content. Disabled for now. Reevaluate: */\n\n // if (equal(data.$implicit, this._state.previous)) {\n // return false;\n // }\n\n // this._state.previous = data.$implicit as T;\n return true;\n }\n\n private _shouldUpdate(): boolean {\n const data = this._state.current;\n\n if (Reflect.has(data as NgState<T>, 'implicit')) {\n return this._shouldUpdateNG(data as NgState<T>);\n }\n\n if (equal(this._state.previous, data)) {\n return false;\n }\n\n this._state.previous = data;\n return true;\n }\n\n public override render(_callback: any, _name: string, _data: T): symbol {\n return noChange;\n }\n\n public override update(\n part: ChildPart,\n [callback, name, data]: DirectiveParameters<this>,\n ): symbol {\n this._callback = new WeakRef(callback);\n this._name = name;\n this._state.current = data;\n this._part = new WeakRef(part);\n\n if (this.isConnected && callback && this._shouldUpdate()) {\n callback(createRequestData(this._name, this._state.current, this._renderNode, this._key));\n }\n\n return noChange;\n }\n\n protected override reconnected(): void {\n const callback = this._callback?.deref();\n if (callback && this._shouldUpdate()) {\n callback(createRequestData(this._name, this._state.current, this._renderNode, this._key));\n }\n }\n\n protected override disconnected(): void {\n const callback = this._callback?.deref();\n if (callback) {\n callback(createRequestData(this._name, REQUEST_REMOVE as T, this._renderNode, this._key));\n // drop prev, so a reconnect would behave like initial\n this._state.previous = NOT_SET as T;\n }\n }\n}\n\nexport const requestRenderer = directive(RequestRenderer);\n","/** biome-ignore-all lint/complexity/noBannedTypes: use `{}` literals */\n\nimport { createComponent as _createComponent, type EventName, type Options } from '@lit/react';\nimport { html } from 'lit';\nimport type React from 'react';\nimport { createPortal } from 'react-dom';\nimport type { WithDataContext } from './backfills.js';\nimport { REQUEST_REMOVE, type RendererRequest, requestRenderer } from './render-props.js';\n\nexport type { EventName } from '@lit/react';\n\ntype DistributiveOmit<T, K extends string | number | symbol> = T extends any\n ? K extends keyof T\n ? Omit<T, K>\n : T\n : T;\ntype PropsWithoutRef<T> = DistributiveOmit<T, 'ref'>;\n\n// A key value map matching React prop names to event names.\ntype EventNames = Record<string, EventName | string>;\n\n// A map of expected event listener types based on EventNames.\ntype EventListeners<R extends EventNames> = {\n [K in keyof R]?: R[K] extends EventName ? (e: R[K]['__eventType']) => void : (e: Event) => void;\n};\n\ntype ElementProps<I> = Partial<Omit<I, keyof HTMLElement>>;\n\n// Acceptable props to the React component.\ntype ComponentProps<I, E extends EventNames> = Omit<\n React.HTMLAttributes<I>,\n // Prefer type of provided event handler props or those on element over\n // built-in HTMLAttributes\n keyof E | keyof ElementProps<I>\n> &\n EventListeners<E> &\n ElementProps<I>;\n\n/** Mapped type to update the render props callback return type */\ntype WithJsxRenderProps<T, R extends Renderers> = {\n [K in keyof T]: K extends keyof R\n ? NonNullable<T[K]> extends (...args: infer Args) => unknown\n ? (...args: WithDataContext<Args>) => React.ReactNode\n : T[K]\n : T[K];\n};\n\nexport type ReactWebComponent<\n I extends HTMLElement,\n E extends EventNames,\n R extends Renderers,\n> = React.ForwardRefExoticComponent<\n // TODO(augustjk): Remove and use `React.PropsWithoutRef` when\n // https://github.com/preactjs/preact/issues/4124 is fixed.\n PropsWithoutRef<WithJsxRenderProps<ComponentProps<I, E>, R>> & React.RefAttributes<I>\n>;\n\ntype Renderers = Record<string, unknown>;\n\ninterface WrapperOptions<I extends HTMLElement, E extends EventNames, R extends Renderers>\n extends Options<I, E> {\n renderProps?: R;\n moveBackOnDelete?: boolean;\n}\n\nexport const createComponent = <\n I extends HTMLElement,\n E extends EventNames = {},\n R extends Renderers = {},\n>({\n react: React,\n tagName,\n elementClass,\n events,\n displayName,\n renderProps,\n moveBackOnDelete,\n}: WrapperOptions<I, E, R>): ReactWebComponent<I, E, R> => {\n // Register our components\n if ('register' in elementClass) {\n (elementClass as { register: () => void }).register();\n }\n\n if (!renderProps && !moveBackOnDelete) {\n // When R is empty (no renderProps), the component types are equivalent at runtime\n return _createComponent({\n react: React,\n tagName,\n elementClass,\n events,\n displayName,\n }) as unknown as ReactWebComponent<I, E, R>;\n }\n\n type Props = ComponentProps<I, E>;\n\n const safeEvents = events ?? ({} as E);\n const component = _createComponent({\n react: React,\n tagName,\n elementClass,\n events: safeEvents,\n displayName,\n });\n\n type PropsWithRenderProps = WithJsxRenderProps<Props, R>;\n\n return React.forwardRef<I, PropsWithRenderProps>((props, ref) => {\n const listeners = React.useRef(new Map<string, unknown>());\n const elementRef = React.useRef<I | null>(null);\n const projectionParent = React.useRef<WeakRef<HTMLElement> | null>(null);\n const [renderers, setRenderers] = React.useState(new Map<string, unknown>());\n const outProps: Record<string, unknown> = {};\n const portals: Record<string, (data: unknown) => React.ReactNode> = {};\n\n // https://react.dev/learn/reusing-logic-with-custom-hooks#keep-your-custom-hooks-focused-on-concrete-high-level-use-cases\n // Runs once after first render to handle element re-parenting for Angular integration.\n React.useLayoutEffect(() => {\n if (!moveBackOnDelete) return;\n\n // already too late to save elementRef.current?.parentElement, rely on Elements\n // secondary run (likely dev strict mode), move back to projection:\n const prevParent = projectionParent.current?.deref();\n if (prevParent && elementRef.current && prevParent !== elementRef.current.parentElement) {\n prevParent.appendChild(elementRef.current);\n projectionParent.current = null;\n }\n return () => {\n // cleanup **before** component is removed from the DOM\n const element = elementRef.current;\n if (!element) return;\n\n const creationParent = (\n element as I & { ngElementStrategy?: { parentElement?: WeakRef<HTMLElement> } }\n ).ngElementStrategy?.parentElement?.deref();\n if (creationParent && creationParent !== element.parentElement) {\n // move back to original parent\n if (element.parentElement) {\n projectionParent.current = new WeakRef(element.parentElement);\n }\n creationParent.appendChild(element);\n }\n };\n }, [moveBackOnDelete]);\n\n // Don't wrap in an `useCallback` hook since there is no mechanism in React to dispose of the cached function(s),\n // potentially leading to a memory leak/higher memory usage for heavily templated component instances.\n const renderFunc = (req: RendererRequest<unknown>) => {\n if (req.data === REQUEST_REMOVE) {\n renderers.delete(req.slotName);\n } else {\n renderers.set(\n req.slotName,\n createPortal(portals[req.name]?.(req.data), req.node, req.slotName),\n );\n }\n setRenderers(() => new Map(renderers));\n };\n\n const processProps = (\n propMap: Record<string, unknown>,\n propDefinitions: Record<string, unknown>,\n outProps: Record<string, unknown>,\n prefix = '',\n ) => {\n for (const prop in propMap) {\n const fullPropName = prefix ? `${prefix}.${prop}` : prop;\n const rendererName = propDefinitions?.[prop];\n\n if (rendererName !== undefined && typeof rendererName === 'string') {\n if (listeners.current.has(fullPropName)) {\n outProps[prop] = listeners.current.get(fullPropName);\n } else {\n portals[rendererName] = propMap[prop] as (data: unknown) => React.ReactNode;\n const patched = createPatched(renderFunc, rendererName);\n outProps[prop] = patched;\n listeners.current.set(fullPropName, patched);\n }\n } else if (\n typeof propMap[prop] === 'object' &&\n propMap[prop] !== null &&\n propDefinitions?.[prop] &&\n typeof propDefinitions[prop] === 'object'\n ) {\n outProps[prop] = {};\n processProps(\n propMap[prop] as Record<string, unknown>,\n propDefinitions?.[prop] as Record<string, unknown>,\n outProps[prop] as Record<string, unknown>,\n fullPropName,\n );\n } else {\n outProps[prop] = propMap[prop];\n }\n }\n };\n\n for (const key of listeners.current.keys()) {\n if (!hasNestedProperty(props, key)) {\n listeners.current.delete(key);\n }\n }\n\n processProps(props, renderProps ?? {}, outProps);\n\n const propsWithChildren = props as Props & { children?: React.ReactNode };\n if (listeners.current.size) {\n Object.assign(outProps, {\n children: [...React.Children.toArray(propsWithChildren.children), ...renderers.values()],\n });\n } else {\n Object.assign(outProps, {\n children: React.Children.toArray(propsWithChildren.children),\n });\n }\n\n return React.createElement(component, {\n ...outProps,\n ref: React.useCallback(\n (node: I) => {\n elementRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n },\n [ref],\n ),\n } as PropsWithoutRef<ComponentProps<I, E>> & React.RefAttributes<I>);\n });\n};\n\nfunction createPatched(callback: (req: RendererRequest<unknown>) => void, propertyName: string) {\n return (ctx: unknown) => html`${requestRenderer(callback, propertyName, ctx)}`;\n}\n\nfunction hasNestedProperty(object: Record<string, unknown>, path: string): boolean {\n const parts = path.split('.');\n let current: unknown = object;\n for (const part of parts) {\n if (current === undefined || current === null || typeof current !== 'object') {\n return false;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return current !== undefined;\n}\n"],"names":["DATA_CONTEXT_PROP","once","withDataContext","data","target","prop","receiver","equal","a","b","visited","isObject","isRegExp","keyA","valueA","found","keyB","valueB","length","i","aKeys","bKeys","key","value","getUUID","bytes","REQUEST_REMOVE","NOT_SET","createRequestData","name","node","RequestRenderer","AsyncDirective","_data","_callback","_name","noChange","part","callback","requestRenderer","directive","createComponent","React","tagName","elementClass","events","displayName","renderProps","moveBackOnDelete","_createComponent","component","props","ref","listeners","elementRef","projectionParent","renderers","setRenderers","outProps","portals","prevParent","element","creationParent","renderFunc","req","createPortal","processProps","propMap","propDefinitions","prefix","fullPropName","rendererName","patched","createPatched","hasNestedProperty","propsWithChildren","propertyName","ctx","html","object","path","parts","current"],"mappings":"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"} | ||
| {"version":3,"file":"template-renderer.js","sources":["../src/backfills.ts","../src/equal.ts","../src/random-uuid.ts","../src/render-props.ts","../src/react-props.tsx"],"sourcesContent":["const DATA_CONTEXT_PROP = 'dataContext';\nlet once = false;\n\n/**\n * Creates a proxy around template context data that adds back\n * the `dataContext` prop returning the original data\n */\nexport function withDataContext(data: unknown) {\n return new Proxy(data as any, {\n get(target, prop, receiver) {\n if (prop === DATA_CONTEXT_PROP) {\n if (!once) {\n once = true;\n console.warn(\n 'dataContext is deprecated and template context props are now available as the root object and can be accessed directly',\n );\n }\n // return the original object:\n return target;\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\n\ninterface DataContextProp<T> {\n /**\n * @deprecated template context props are now available as the root object and can be accessed directly.\n * E.g. instead of `ctx.dataContext.<prop>` just `ctx.<prop>`\n */\n dataContext: T;\n}\n\nexport type WithDataContext<T> = T extends [infer F, ...infer R]\n ? [F & DataContextProp<F>, ...WithDataContext<R>]\n : [];\n","export function equal<T>(a: unknown, b: T, visited = new WeakSet()): boolean {\n // Early return\n if (Object.is(a, b)) return true;\n\n if (isObject(a) && isObject(b)) {\n if (a.constructor !== b.constructor) return false;\n\n // Circular references\n if (visited.has(a) && visited.has(b)) {\n return true;\n }\n\n visited.add(a);\n visited.add(b);\n\n // RegExp\n if (isRegExp(a) && isRegExp(b)) return a.source === b.source && a.flags === b.flags;\n\n // Maps\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n for (const [keyA, valueA] of a.entries()) {\n let found = false;\n for (const [keyB, valueB] of b.entries()) {\n if (equal(keyA, keyB, visited) && equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Sets\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n for (const valueA of a) {\n let found = false;\n for (const valueB of b) {\n if (equal(valueA, valueB, visited)) {\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Arrays\n if (Array.isArray(a) && Array.isArray(b)) {\n const length = a.length;\n if (length !== b.length) return false;\n for (let i = 0; i < length; i++) {\n if (!equal(a[i], b[i], visited)) return false;\n }\n return true;\n }\n\n // toPrimitive\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n // Strings based\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n\n for (const key of aKeys) {\n if (!Object.hasOwn(b, key)) return false;\n }\n\n for (const key of aKeys) {\n if (!equal(a[key as keyof typeof a], b[key as keyof typeof b], visited)) return false;\n }\n\n visited.delete(a);\n visited.delete(b);\n\n return true;\n }\n\n return false;\n}\n\nfunction isObject(value: unknown): value is object {\n return value != null && typeof value === 'object';\n}\n\nfunction isRegExp(value: unknown): value is RegExp {\n return value != null && value.constructor === RegExp;\n}\n","/**\n * Use the function to get a random UUID string when secure context is not guaranteed making crypto.randomUUID unavailable.\n * @returns A random UUID string.\n */\nexport function getUUID(): `${string}-${string}-${string}-${string}-${string}` {\n if (typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n // Secure fallback using crypto.getRandomValues()\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n\n // Set version (4) and variant (RFC 4122)\n bytes[6] = (bytes[6] & 0x0f) | 0x40; // Version 4\n bytes[8] = (bytes[8] & 0x3f) | 0x80; // Variant 1\n\n const a = [...bytes].map((b) => b.toString(16).padStart(2, '0')).join('');\n return `${a.slice(0, 8)}-${a.slice(8, 12)}-${a.slice(12, 16)}-${a.slice(16, 20)}-${a.slice(20)}`;\n}\n","import { noChange } from 'lit';\nimport {\n AsyncDirective,\n type ChildPart,\n type DirectiveParameters,\n directive,\n} from 'lit/async-directive.js';\nimport { withDataContext } from './backfills.js';\nimport { equal } from './equal.js';\nimport { getUUID } from './random-uuid.js';\n\nexport const REQUEST_REMOVE = Symbol('renderer-remove');\nconst NOT_SET = Symbol('not-set');\n\ntype NgState<T> = T & { $implicit: unknown };\ntype RendererState<T> = {\n previous: T;\n current: T;\n};\n\nfunction createRequestData<T>(\n name: string,\n data: T | typeof REQUEST_REMOVE,\n node: Element,\n key?: string,\n): RendererRequest<T> {\n return {\n name,\n data: data === REQUEST_REMOVE ? data : withDataContext(data),\n slotName: key !== undefined ? `${name}${key}` : name,\n node,\n };\n}\n\nexport type RendererRequest<T> = {\n data: T | typeof REQUEST_REMOVE;\n name: string;\n slotName: string;\n node: Element;\n};\n\ntype RendererCallback<T> = (req: RendererRequest<T>) => unknown;\n\nclass RequestRenderer<T> extends AsyncDirective {\n private readonly _key = getUUID();\n private _part: WeakRef<ChildPart> | null = null;\n private _callback: WeakRef<RendererCallback<T>> | null = null;\n\n private _state = { previous: NOT_SET, current: undefined } as RendererState<T>;\n private _name!: string;\n\n private get _renderNode(): Element {\n return this._part?.deref()?.parentNode as Element;\n }\n\n private _shouldUpdateNG(_data: NgState<T>): boolean {\n /* Can't compare implicit, in main use case it'd be the cell value which might repeat,\n be undefined or otherwise unrelated to the template content. Disabled for now. Reevaluate: */\n\n // if (equal(data.$implicit, this._state.previous)) {\n // return false;\n // }\n\n // this._state.previous = data.$implicit as T;\n return true;\n }\n\n private _shouldUpdate(): boolean {\n const data = this._state.current;\n\n if (Reflect.has(data as NgState<T>, 'implicit')) {\n return this._shouldUpdateNG(data as NgState<T>);\n }\n\n if (equal(this._state.previous, data)) {\n return false;\n }\n\n this._state.previous = data;\n return true;\n }\n\n public override render(_callback: any, _name: string, _data: T): symbol {\n return noChange;\n }\n\n public override update(\n part: ChildPart,\n [callback, name, data]: DirectiveParameters<this>,\n ): symbol {\n this._callback = new WeakRef(callback);\n this._name = name;\n this._state.current = data;\n this._part = new WeakRef(part);\n\n if (this.isConnected && callback && this._shouldUpdate()) {\n callback(createRequestData(this._name, this._state.current, this._renderNode, this._key));\n }\n\n return noChange;\n }\n\n protected override reconnected(): void {\n const callback = this._callback?.deref();\n if (callback && this._shouldUpdate()) {\n callback(createRequestData(this._name, this._state.current, this._renderNode, this._key));\n }\n }\n\n protected override disconnected(): void {\n const callback = this._callback?.deref();\n if (callback) {\n callback(createRequestData(this._name, REQUEST_REMOVE as T, this._renderNode, this._key));\n // drop prev, so a reconnect would behave like initial\n this._state.previous = NOT_SET as T;\n }\n }\n}\n\nexport const requestRenderer = directive(RequestRenderer);\n","/** biome-ignore-all lint/complexity/noBannedTypes: use `{}` literals */\n\nimport { createComponent as _createComponent, type EventName, type Options } from '@lit/react';\nimport { html } from 'lit';\nimport type React from 'react';\nimport { createPortal } from 'react-dom';\nimport type { WithDataContext } from './backfills.js';\nimport { REQUEST_REMOVE, type RendererRequest, requestRenderer } from './render-props.js';\n\nexport type { EventName } from '@lit/react';\n\ntype DistributiveOmit<T, K extends string | number | symbol> = T extends any\n ? K extends keyof T\n ? Omit<T, K>\n : T\n : T;\ntype PropsWithoutRef<T> = DistributiveOmit<T, 'ref'>;\n\n// A key value map matching React prop names to event names.\ntype EventNames = Record<string, EventName | string>;\n\n// A map of expected event listener types based on EventNames.\ntype EventListeners<R extends EventNames> = {\n [K in keyof R]?: R[K] extends EventName ? (e: R[K]['__eventType']) => void : (e: Event) => void;\n};\n\ntype ElementProps<I> = Partial<Omit<I, keyof HTMLElement>>;\n\n// Acceptable props to the React component.\ntype ComponentProps<I, E extends EventNames> = Omit<\n React.HTMLAttributes<I>,\n // Prefer type of provided event handler props or those on element over\n // built-in HTMLAttributes\n keyof E | keyof ElementProps<I>\n> &\n EventListeners<E> &\n ElementProps<I>;\n\n/** Mapped type to update the render props callback return type */\ntype WithJsxRenderProps<T, R extends Renderers> = {\n [K in keyof T]: K extends keyof R\n ? NonNullable<T[K]> extends (...args: infer Args) => unknown\n ? (...args: WithDataContext<Args>) => React.ReactNode\n : T[K]\n : T[K];\n};\n\nexport type ReactWebComponent<\n I extends HTMLElement,\n E extends EventNames,\n R extends Renderers,\n> = React.ForwardRefExoticComponent<\n // TODO(augustjk): Remove and use `React.PropsWithoutRef` when\n // https://github.com/preactjs/preact/issues/4124 is fixed.\n PropsWithoutRef<WithJsxRenderProps<ComponentProps<I, E>, R>> & React.RefAttributes<I>\n>;\n\ntype Renderers = Record<string, unknown>;\n\ninterface WrapperOptions<I extends HTMLElement, E extends EventNames, R extends Renderers>\n extends Options<I, E> {\n renderProps?: R;\n moveBackOnDelete?: boolean;\n}\n\nexport const createComponent = <\n I extends HTMLElement,\n E extends EventNames = {},\n R extends Renderers = {},\n>({\n react: React,\n tagName,\n elementClass,\n events,\n displayName,\n renderProps,\n moveBackOnDelete,\n}: WrapperOptions<I, E, R>): ReactWebComponent<I, E, R> => {\n // Register our components\n if ('register' in elementClass) {\n (elementClass as { register: () => void }).register();\n }\n\n if (!renderProps && !moveBackOnDelete) {\n // When R is empty (no renderProps), the component types are equivalent at runtime\n return _createComponent({\n react: React,\n tagName,\n elementClass,\n events,\n displayName,\n }) as unknown as ReactWebComponent<I, E, R>;\n }\n\n type Props = ComponentProps<I, E>;\n\n const safeEvents = events ?? ({} as E);\n const component = _createComponent({\n react: React,\n tagName,\n elementClass,\n events: safeEvents,\n displayName,\n });\n\n type PropsWithRenderProps = WithJsxRenderProps<Props, R>;\n\n return React.forwardRef<I, PropsWithRenderProps>((props, ref) => {\n const listeners = React.useRef(new Map<string, unknown>());\n const elementRef = React.useRef<I | null>(null);\n const projectionParent = React.useRef<WeakRef<HTMLElement> | null>(null);\n const [renderers, setRenderers] = React.useState(new Map<string, unknown>());\n const outProps: Record<string, unknown> = {};\n const portals: Record<string, (data: unknown) => React.ReactNode> = {};\n\n // https://react.dev/learn/reusing-logic-with-custom-hooks#keep-your-custom-hooks-focused-on-concrete-high-level-use-cases\n // Runs once after first render to handle element re-parenting for Angular integration.\n React.useLayoutEffect(() => {\n if (!moveBackOnDelete) return;\n\n // already too late to save elementRef.current?.parentElement, rely on Elements\n // secondary run (likely dev strict mode), move back to projection:\n const prevParent = projectionParent.current?.deref();\n if (prevParent && elementRef.current && prevParent !== elementRef.current.parentElement) {\n prevParent.appendChild(elementRef.current);\n projectionParent.current = null;\n }\n return () => {\n // cleanup **before** component is removed from the DOM\n const element = elementRef.current;\n if (!element) return;\n\n const creationParent = (\n element as I & { ngElementStrategy?: { parentElement?: WeakRef<HTMLElement> } }\n ).ngElementStrategy?.parentElement?.deref();\n if (creationParent && creationParent !== element.parentElement) {\n // move back to original parent\n if (element.parentElement) {\n projectionParent.current = new WeakRef(element.parentElement);\n }\n creationParent.appendChild(element);\n }\n };\n }, [moveBackOnDelete]);\n\n // Don't wrap in an `useCallback` hook since there is no mechanism in React to dispose of the cached function(s),\n // potentially leading to a memory leak/higher memory usage for heavily templated component instances.\n const renderFunc = (req: RendererRequest<unknown>) => {\n if (req.data === REQUEST_REMOVE) {\n renderers.delete(req.slotName);\n } else {\n renderers.set(\n req.slotName,\n createPortal(portals[req.name]?.(req.data), req.node, req.slotName),\n );\n }\n setRenderers(() => new Map(renderers));\n };\n\n const processProps = (\n propMap: Record<string, unknown>,\n propDefinitions: Record<string, unknown>,\n outProps: Record<string, unknown>,\n prefix = '',\n ) => {\n for (const prop in propMap) {\n const fullPropName = prefix ? `${prefix}.${prop}` : prop;\n const rendererName = propDefinitions?.[prop];\n\n if (rendererName !== undefined && typeof rendererName === 'string') {\n if (listeners.current.has(fullPropName)) {\n outProps[prop] = listeners.current.get(fullPropName);\n } else {\n portals[rendererName] = propMap[prop] as (data: unknown) => React.ReactNode;\n const patched = createPatched(renderFunc, rendererName);\n outProps[prop] = patched;\n listeners.current.set(fullPropName, patched);\n }\n } else if (\n typeof propMap[prop] === 'object' &&\n propMap[prop] !== null &&\n propDefinitions?.[prop] &&\n typeof propDefinitions[prop] === 'object'\n ) {\n outProps[prop] = {};\n processProps(\n propMap[prop] as Record<string, unknown>,\n propDefinitions?.[prop] as Record<string, unknown>,\n outProps[prop] as Record<string, unknown>,\n fullPropName,\n );\n } else {\n outProps[prop] = propMap[prop];\n }\n }\n };\n\n for (const key of listeners.current.keys()) {\n if (!hasNestedProperty(props, key)) {\n listeners.current.delete(key);\n }\n }\n\n processProps(props, renderProps ?? {}, outProps);\n\n const propsWithChildren = props as Props & { children?: React.ReactNode };\n if (listeners.current.size) {\n Object.assign(outProps, {\n children: [...React.Children.toArray(propsWithChildren.children), ...renderers.values()],\n });\n } else {\n Object.assign(outProps, {\n children: React.Children.toArray(propsWithChildren.children),\n });\n }\n\n return React.createElement(component, {\n ...outProps,\n ref: React.useCallback(\n (node: I) => {\n elementRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n },\n [ref],\n ),\n } as PropsWithoutRef<ComponentProps<I, E>> & React.RefAttributes<I>);\n });\n};\n\nfunction createPatched(callback: (req: RendererRequest<unknown>) => void, propertyName: string) {\n return (ctx: unknown) => html`${requestRenderer(callback, propertyName, ctx)}`;\n}\n\nfunction hasNestedProperty(object: Record<string, unknown>, path: string): boolean {\n const parts = path.split('.');\n let current: unknown = object;\n for (const part of parts) {\n if (current === undefined || current === null || typeof current !== 'object') {\n return false;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return current !== undefined;\n}\n"],"names":["_createComponent","outProps"],"mappings":"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"} |
Sorry, the diff of this file is too big to display
4959538
0.26%20122
0.31%