devextreme-react 23.2.1-alpha-23255-1813 → 23.2.3
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/cjs/accordion.d.ts +2 -2
- package/cjs/accordion.js +3 -2
- package/cjs/action-sheet.d.ts +2 -2
- package/cjs/action-sheet.js +3 -2
- package/cjs/autocomplete.d.ts +2 -2
- package/cjs/autocomplete.js +5 -3
- package/cjs/bar-gauge.d.ts +22 -22
- package/cjs/bar-gauge.js +3 -2
- package/cjs/box.d.ts +3 -3
- package/cjs/box.js +3 -2
- package/cjs/bullet.d.ts +6 -6
- package/cjs/bullet.js +3 -2
- package/cjs/button-group.d.ts +2 -2
- package/cjs/button-group.js +3 -2
- package/cjs/button.d.ts +2 -2
- package/cjs/button.js +3 -2
- package/cjs/calendar.d.ts +4 -4
- package/cjs/calendar.js +19 -2
- package/cjs/chart.d.ts +133 -134
- package/cjs/chart.js +3 -2
- package/cjs/check-box.d.ts +2 -2
- package/cjs/check-box.js +3 -2
- package/cjs/circular-gauge.d.ts +15 -16
- package/cjs/circular-gauge.js +3 -2
- package/cjs/color-box.d.ts +2 -2
- package/cjs/color-box.js +5 -3
- package/cjs/common/charts.d.ts +3 -3
- package/cjs/common/charts.js +2 -2
- package/cjs/common/data/custom-store.d.ts +2 -2
- package/cjs/common/data/custom-store.js +2 -2
- package/cjs/common/grids.d.ts +2 -2
- package/cjs/common/grids.js +2 -2
- package/cjs/common/index.d.ts +2 -2
- package/cjs/common/index.js +2 -2
- package/cjs/context-menu.d.ts +2 -2
- package/cjs/context-menu.js +3 -2
- package/cjs/core/component-base.d.ts +14 -6
- package/cjs/core/component-base.js +84 -33
- package/cjs/core/component.d.ts +2 -2
- package/cjs/core/component.js +2 -2
- package/cjs/core/config.d.ts +2 -2
- package/cjs/core/config.js +2 -2
- package/cjs/core/configuration/comparer.d.ts +2 -2
- package/cjs/core/configuration/comparer.js +2 -2
- package/cjs/core/configuration/config-node.d.ts +2 -2
- package/cjs/core/configuration/config-node.js +2 -2
- package/cjs/core/configuration/react/element.d.ts +2 -2
- package/cjs/core/configuration/react/element.js +2 -2
- package/cjs/core/configuration/react/templates.d.ts +2 -2
- package/cjs/core/configuration/react/templates.js +2 -2
- package/cjs/core/configuration/react/tree.d.ts +2 -2
- package/cjs/core/configuration/react/tree.js +2 -2
- package/cjs/core/configuration/tree.d.ts +2 -2
- package/cjs/core/configuration/tree.js +2 -2
- package/cjs/core/configuration/utils.d.ts +2 -2
- package/cjs/core/configuration/utils.js +2 -2
- package/cjs/core/extension-component.d.ts +2 -2
- package/cjs/core/extension-component.js +2 -2
- package/cjs/core/helpers.d.ts +14 -3
- package/cjs/core/helpers.js +155 -4
- package/cjs/core/nested-option.d.ts +2 -2
- package/cjs/core/nested-option.js +2 -2
- package/cjs/core/options-manager.d.ts +7 -7
- package/cjs/core/options-manager.js +33 -20
- package/cjs/core/template-manager.d.ts +16 -0
- package/cjs/core/template-manager.js +182 -0
- package/cjs/core/template-wrapper.d.ts +4 -29
- package/cjs/core/template-wrapper.js +94 -98
- package/cjs/core/template.d.ts +2 -2
- package/cjs/core/template.js +2 -2
- package/cjs/core/types.d.ts +69 -0
- package/cjs/core/types.js +15 -0
- package/cjs/core/widget-config.d.ts +2 -2
- package/cjs/core/widget-config.js +2 -2
- package/cjs/data-grid.d.ts +23 -30
- package/cjs/data-grid.js +3 -2
- package/cjs/date-box.d.ts +13 -13
- package/cjs/date-box.js +20 -3
- package/cjs/date-range-box.d.ts +17 -17
- package/cjs/date-range-box.js +25 -3
- package/cjs/defer-rendering.d.ts +5 -3
- package/cjs/defer-rendering.js +3 -2
- package/cjs/diagram.d.ts +2 -2
- package/cjs/diagram.js +3 -2
- package/cjs/draggable.d.ts +2 -2
- package/cjs/draggable.js +3 -2
- package/cjs/drawer.d.ts +2 -2
- package/cjs/drawer.js +3 -2
- package/cjs/drop-down-box.d.ts +2 -2
- package/cjs/drop-down-box.js +5 -3
- package/cjs/drop-down-button.d.ts +3 -10
- package/cjs/drop-down-button.js +12 -2
- package/cjs/file-manager.d.ts +2 -2
- package/cjs/file-manager.js +3 -2
- package/cjs/file-uploader.d.ts +2 -2
- package/cjs/file-uploader.js +3 -2
- package/cjs/filter-builder.d.ts +8 -8
- package/cjs/filter-builder.js +3 -2
- package/cjs/form.d.ts +8 -8
- package/cjs/form.js +3 -2
- package/cjs/funnel.d.ts +20 -20
- package/cjs/funnel.js +3 -2
- package/cjs/gallery.d.ts +2 -2
- package/cjs/gallery.js +3 -2
- package/cjs/gantt.d.ts +6 -6
- package/cjs/gantt.js +5 -2
- package/cjs/html-editor.d.ts +2 -2
- package/cjs/html-editor.js +3 -2
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +2 -2
- package/cjs/linear-gauge.d.ts +15 -16
- package/cjs/linear-gauge.js +3 -2
- package/cjs/list.d.ts +3 -3
- package/cjs/list.js +3 -2
- package/cjs/load-indicator.d.ts +2 -2
- package/cjs/load-indicator.js +3 -2
- package/cjs/load-panel.d.ts +2 -2
- package/cjs/load-panel.js +3 -2
- package/cjs/lookup.d.ts +2 -2
- package/cjs/lookup.js +5 -3
- package/cjs/map.d.ts +2 -2
- package/cjs/map.js +3 -2
- package/cjs/menu.d.ts +2 -2
- package/cjs/menu.js +3 -2
- package/cjs/multi-view.d.ts +2 -2
- package/cjs/multi-view.js +3 -2
- package/cjs/number-box.d.ts +4 -4
- package/cjs/number-box.js +5 -3
- package/cjs/pie-chart.d.ts +28 -29
- package/cjs/pie-chart.js +3 -2
- package/cjs/pivot-grid-field-chooser.d.ts +2 -2
- package/cjs/pivot-grid-field-chooser.js +3 -2
- package/cjs/pivot-grid.d.ts +2 -2
- package/cjs/pivot-grid.js +3 -2
- package/cjs/polar-chart.d.ts +95 -95
- package/cjs/polar-chart.js +3 -2
- package/cjs/popover.d.ts +2 -2
- package/cjs/popover.js +3 -2
- package/cjs/popup.d.ts +2 -2
- package/cjs/popup.js +3 -2
- package/cjs/progress-bar.d.ts +2 -2
- package/cjs/progress-bar.js +3 -2
- package/cjs/radio-group.d.ts +2 -2
- package/cjs/radio-group.js +3 -2
- package/cjs/range-selector.d.ts +49 -50
- package/cjs/range-selector.js +3 -2
- package/cjs/range-slider.d.ts +4 -4
- package/cjs/range-slider.js +3 -2
- package/cjs/recurrence-editor.d.ts +2 -2
- package/cjs/recurrence-editor.js +3 -2
- package/cjs/resizable.d.ts +2 -2
- package/cjs/resizable.js +3 -2
- package/cjs/responsive-box.d.ts +4 -4
- package/cjs/responsive-box.js +3 -2
- package/cjs/sankey.d.ts +11 -11
- package/cjs/sankey.js +3 -2
- package/cjs/scheduler.d.ts +6 -5
- package/cjs/scheduler.js +19 -2
- package/cjs/scroll-view.d.ts +2 -2
- package/cjs/scroll-view.js +3 -2
- package/cjs/select-box.d.ts +2 -2
- package/cjs/select-box.js +5 -3
- package/cjs/slider.d.ts +4 -4
- package/cjs/slider.js +3 -2
- package/cjs/sortable.d.ts +2 -2
- package/cjs/sortable.js +3 -2
- package/cjs/sparkline.d.ts +6 -6
- package/cjs/sparkline.js +3 -2
- package/cjs/speed-dial-action.d.ts +2 -2
- package/cjs/speed-dial-action.js +3 -2
- package/cjs/switch.d.ts +2 -2
- package/cjs/switch.js +3 -2
- package/cjs/tab-panel.d.ts +2 -2
- package/cjs/tab-panel.js +3 -2
- package/cjs/tabs.d.ts +2 -2
- package/cjs/tabs.js +3 -2
- package/cjs/tag-box.d.ts +2 -2
- package/cjs/tag-box.js +5 -3
- package/cjs/text-area.d.ts +2 -2
- package/cjs/text-area.js +5 -3
- package/cjs/text-box.d.ts +2 -2
- package/cjs/text-box.js +5 -3
- package/cjs/tile-view.d.ts +2 -2
- package/cjs/tile-view.js +3 -2
- package/cjs/toast.d.ts +2 -2
- package/cjs/toast.js +3 -2
- package/cjs/toolbar.d.ts +2 -2
- package/cjs/toolbar.js +3 -2
- package/cjs/tooltip.d.ts +2 -2
- package/cjs/tooltip.js +3 -2
- package/cjs/tree-list.d.ts +14 -14
- package/cjs/tree-list.js +3 -2
- package/cjs/tree-map.d.ts +15 -15
- package/cjs/tree-map.js +3 -2
- package/cjs/tree-view.d.ts +3 -3
- package/cjs/tree-view.js +3 -2
- package/cjs/validation-group.d.ts +2 -2
- package/cjs/validation-group.js +3 -2
- package/cjs/validation-summary.d.ts +2 -2
- package/cjs/validation-summary.js +3 -2
- package/cjs/validator.d.ts +8 -8
- package/cjs/validator.js +3 -2
- package/cjs/vector-map.d.ts +21 -21
- package/cjs/vector-map.js +3 -2
- package/core/component/package.json +6 -0
- package/core/config/package.json +6 -0
- package/core/extension-component/package.json +6 -0
- package/core/nested-option/package.json +6 -0
- package/esm/accordion.js +3 -2
- package/esm/action-sheet.js +3 -2
- package/esm/autocomplete.js +5 -3
- package/esm/bar-gauge.js +3 -2
- package/esm/box.js +3 -2
- package/esm/bullet.js +3 -2
- package/esm/button-group.js +3 -2
- package/esm/button.js +3 -2
- package/esm/calendar.js +19 -2
- package/esm/chart.js +3 -2
- package/esm/check-box.js +3 -2
- package/esm/circular-gauge.js +3 -2
- package/esm/color-box.js +5 -3
- package/esm/common/charts.js +2 -2
- package/esm/common/data/custom-store.js +2 -2
- package/esm/common/grids.js +2 -2
- package/esm/common/index.js +2 -2
- package/esm/context-menu.js +3 -2
- package/esm/core/component-base.js +85 -31
- package/esm/core/component.js +2 -2
- package/esm/core/config.js +2 -2
- package/esm/core/configuration/comparer.js +2 -2
- package/esm/core/configuration/config-node.js +2 -2
- package/esm/core/configuration/react/element.js +2 -2
- package/esm/core/configuration/react/templates.js +2 -2
- package/esm/core/configuration/react/tree.js +2 -2
- package/esm/core/configuration/tree.js +2 -2
- package/esm/core/configuration/utils.js +2 -2
- package/esm/core/extension-component.js +2 -2
- package/esm/core/helpers.js +154 -3
- package/esm/core/nested-option.js +2 -2
- package/esm/core/options-manager.js +33 -20
- package/esm/core/template-manager.js +159 -0
- package/esm/core/template-wrapper.js +94 -98
- package/esm/core/template.js +2 -2
- package/esm/core/types.js +14 -0
- package/esm/core/widget-config.js +2 -2
- package/esm/data-grid.js +3 -2
- package/esm/date-box.js +20 -3
- package/esm/date-range-box.js +25 -3
- package/esm/defer-rendering.js +3 -2
- package/esm/diagram.js +3 -2
- package/esm/draggable.js +3 -2
- package/esm/drawer.js +3 -2
- package/esm/drop-down-box.js +5 -3
- package/esm/drop-down-button.js +12 -2
- package/esm/file-manager.js +3 -2
- package/esm/file-uploader.js +3 -2
- package/esm/filter-builder.js +3 -2
- package/esm/form.js +3 -2
- package/esm/funnel.js +3 -2
- package/esm/gallery.js +3 -2
- package/esm/gantt.js +5 -2
- package/esm/html-editor.js +3 -2
- package/esm/index.js +2 -2
- package/esm/linear-gauge.js +3 -2
- package/esm/list.js +3 -2
- package/esm/load-indicator.js +3 -2
- package/esm/load-panel.js +3 -2
- package/esm/lookup.js +5 -3
- package/esm/map.js +3 -2
- package/esm/menu.js +3 -2
- package/esm/multi-view.js +3 -2
- package/esm/number-box.js +5 -3
- package/esm/pie-chart.js +3 -2
- package/esm/pivot-grid-field-chooser.js +3 -2
- package/esm/pivot-grid.js +3 -2
- package/esm/polar-chart.js +3 -2
- package/esm/popover.js +3 -2
- package/esm/popup.js +3 -2
- package/esm/progress-bar.js +3 -2
- package/esm/radio-group.js +3 -2
- package/esm/range-selector.js +3 -2
- package/esm/range-slider.js +3 -2
- package/esm/recurrence-editor.js +3 -2
- package/esm/resizable.js +3 -2
- package/esm/responsive-box.js +3 -2
- package/esm/sankey.js +3 -2
- package/esm/scheduler.js +19 -2
- package/esm/scroll-view.js +3 -2
- package/esm/select-box.js +5 -3
- package/esm/slider.js +3 -2
- package/esm/sortable.js +3 -2
- package/esm/sparkline.js +3 -2
- package/esm/speed-dial-action.js +3 -2
- package/esm/switch.js +3 -2
- package/esm/tab-panel.js +3 -2
- package/esm/tabs.js +3 -2
- package/esm/tag-box.js +5 -3
- package/esm/text-area.js +5 -3
- package/esm/text-box.js +5 -3
- package/esm/tile-view.js +3 -2
- package/esm/toast.js +3 -2
- package/esm/toolbar.js +3 -2
- package/esm/tooltip.js +3 -2
- package/esm/tree-list.js +3 -2
- package/esm/tree-map.js +3 -2
- package/esm/tree-view.js +3 -2
- package/esm/validation-group.js +3 -2
- package/esm/validation-summary.js +3 -2
- package/esm/validator.js +3 -2
- package/esm/vector-map.js +3 -2
- package/package.json +6 -7
- package/cjs/core/dx-template.d.ts +0 -26
- package/cjs/core/dx-template.js +0 -99
- package/cjs/core/templates-manager.d.ts +0 -25
- package/cjs/core/templates-manager.js +0 -88
- package/cjs/core/templates-renderer.d.ts +0 -28
- package/cjs/core/templates-renderer.js +0 -103
- package/cjs/core/templates-store.d.ts +0 -24
- package/cjs/core/templates-store.js +0 -50
- package/esm/core/dx-template.js +0 -77
- package/esm/core/templates-manager.js +0 -67
- package/esm/core/templates-renderer.js +0 -81
- package/esm/core/templates-store.js +0 -47
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* devextreme-react
|
|
3
|
+
* Version: 23.2.3
|
|
4
|
+
* Build date: Tue Nov 28 2023
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
|
|
7
|
+
*
|
|
8
|
+
* This software may be modified and distributed under the terms
|
|
9
|
+
* of the MIT license. See the LICENSE file in the root of the project for details.
|
|
10
|
+
*
|
|
11
|
+
* https://github.com/DevExpress/devextreme-react
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
"use strict";
|
|
15
|
+
var __assign = (this && this.__assign) || function () {
|
|
16
|
+
__assign = Object.assign || function(t) {
|
|
17
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
18
|
+
s = arguments[i];
|
|
19
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
20
|
+
t[p] = s[p];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
return __assign.apply(this, arguments);
|
|
25
|
+
};
|
|
26
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
29
|
+
}) : (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
o[k2] = m[k];
|
|
32
|
+
}));
|
|
33
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
+
}) : function(o, v) {
|
|
36
|
+
o["default"] = v;
|
|
37
|
+
});
|
|
38
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
46
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
47
|
+
if (!m) return o;
|
|
48
|
+
var i = m.call(o), r, ar = [], e;
|
|
49
|
+
try {
|
|
50
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
51
|
+
}
|
|
52
|
+
catch (error) { e = { error: error }; }
|
|
53
|
+
finally {
|
|
54
|
+
try {
|
|
55
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
56
|
+
}
|
|
57
|
+
finally { if (e) throw e.error; }
|
|
58
|
+
}
|
|
59
|
+
return ar;
|
|
60
|
+
};
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
exports.TemplateManager = void 0;
|
|
63
|
+
var React = __importStar(require("react"));
|
|
64
|
+
var events = __importStar(require("devextreme/events"));
|
|
65
|
+
var react_1 = require("react");
|
|
66
|
+
var template_wrapper_1 = require("./template-wrapper");
|
|
67
|
+
var helpers_1 = require("./helpers");
|
|
68
|
+
var component_base_1 = require("./component-base");
|
|
69
|
+
var config_1 = require("./config");
|
|
70
|
+
function normalizeProps(props) {
|
|
71
|
+
if (config_1.getOption('useLegacyTemplateEngine')) {
|
|
72
|
+
var model = props.data;
|
|
73
|
+
if (model && Object.prototype.hasOwnProperty.call(model, 'key')) {
|
|
74
|
+
model.dxkey = model.key;
|
|
75
|
+
}
|
|
76
|
+
return model;
|
|
77
|
+
}
|
|
78
|
+
return props;
|
|
79
|
+
}
|
|
80
|
+
var TemplateManager = function (_a) {
|
|
81
|
+
var init = _a.init;
|
|
82
|
+
var _b = __read(react_1.useState(new helpers_1.TemplateInstantiationModels()), 2), instantiationModels = _b[0], setInstantiationModels = _b[1];
|
|
83
|
+
var _c = __read(react_1.useState(), 2), updateContext = _c[0], setUpdateContext = _c[1];
|
|
84
|
+
var widgetId = react_1.useRef('');
|
|
85
|
+
var templateFactories = react_1.useRef({});
|
|
86
|
+
var subscribeOnRemoval = react_1.useCallback(function (container, onRemoved) {
|
|
87
|
+
if (container.nodeType === Node.ELEMENT_NODE) {
|
|
88
|
+
events.on(container, component_base_1.DX_REMOVE_EVENT, onRemoved);
|
|
89
|
+
}
|
|
90
|
+
}, []);
|
|
91
|
+
var unsubscribeOnRemoval = react_1.useCallback(function (container, onRemoved) {
|
|
92
|
+
if (container.nodeType === Node.ELEMENT_NODE) {
|
|
93
|
+
events.off(container, component_base_1.DX_REMOVE_EVENT, onRemoved);
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
96
|
+
var createMapKey = react_1.useCallback(function (key1, key2) { return ({ key1: key1, key2: key2 }); }, []);
|
|
97
|
+
var getRandomId = react_1.useCallback(function () { return "" + helpers_1.generateID() + helpers_1.generateID() + helpers_1.generateID(); }, []);
|
|
98
|
+
var getRenderFunc = react_1.useCallback(function (templateKey) { return function (_a) {
|
|
99
|
+
var data = _a.model, index = _a.index, container = _a.container, onRendered = _a.onRendered;
|
|
100
|
+
var key = createMapKey(data, container);
|
|
101
|
+
var onRemoved = function () {
|
|
102
|
+
setInstantiationModels(function (currentInstantiationModels) {
|
|
103
|
+
var template = currentInstantiationModels.get(key);
|
|
104
|
+
if (template) {
|
|
105
|
+
currentInstantiationModels.delete(key);
|
|
106
|
+
return currentInstantiationModels.shallowCopy();
|
|
107
|
+
}
|
|
108
|
+
return currentInstantiationModels;
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
var hostWidgetId = widgetId.current;
|
|
112
|
+
setInstantiationModels(function (currentInstantiationModels) {
|
|
113
|
+
currentInstantiationModels.set(key, {
|
|
114
|
+
templateKey: templateKey,
|
|
115
|
+
index: index,
|
|
116
|
+
componentKey: getRandomId(),
|
|
117
|
+
onRendered: function () {
|
|
118
|
+
unsubscribeOnRemoval(container, onRemoved);
|
|
119
|
+
if (hostWidgetId === widgetId.current) {
|
|
120
|
+
onRendered === null || onRendered === void 0 ? void 0 : onRendered();
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
onRemoved: onRemoved,
|
|
124
|
+
});
|
|
125
|
+
return currentInstantiationModels.shallowCopy();
|
|
126
|
+
});
|
|
127
|
+
return container;
|
|
128
|
+
}; }, [unsubscribeOnRemoval, createMapKey]);
|
|
129
|
+
react_1.useMemo(function () {
|
|
130
|
+
function getTemplateFunction(template) {
|
|
131
|
+
switch (template.type) {
|
|
132
|
+
case 'children': return function () { return template.content; };
|
|
133
|
+
case 'render': return function (props) {
|
|
134
|
+
normalizeProps(props);
|
|
135
|
+
return template.content(props.data, props.index);
|
|
136
|
+
};
|
|
137
|
+
case 'component': return function (props) {
|
|
138
|
+
props = normalizeProps(props);
|
|
139
|
+
return React.createElement.bind(null, template.content)(props);
|
|
140
|
+
};
|
|
141
|
+
default: return function () { return React.createElement(React.Fragment); };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function createDXTemplates(templateOptions) {
|
|
145
|
+
var factories = Object.entries(templateOptions)
|
|
146
|
+
.reduce(function (res, _a) {
|
|
147
|
+
var _b;
|
|
148
|
+
var _c = __read(_a, 2), key = _c[0], template = _c[1];
|
|
149
|
+
return (__assign(__assign({}, res), (_b = {}, _b[key] = getTemplateFunction(template), _b)));
|
|
150
|
+
}, {});
|
|
151
|
+
templateFactories.current = factories;
|
|
152
|
+
var dxTemplates = Object.keys(factories)
|
|
153
|
+
.reduce(function (templates, templateKey) {
|
|
154
|
+
templates[templateKey] = { render: getRenderFunc(templateKey) };
|
|
155
|
+
return templates;
|
|
156
|
+
}, {});
|
|
157
|
+
return dxTemplates;
|
|
158
|
+
}
|
|
159
|
+
function clearInstantiationModels() {
|
|
160
|
+
widgetId.current = getRandomId();
|
|
161
|
+
setInstantiationModels(new helpers_1.TemplateInstantiationModels());
|
|
162
|
+
}
|
|
163
|
+
function updateTemplates(onUpdated) {
|
|
164
|
+
setUpdateContext({ onUpdated: onUpdated });
|
|
165
|
+
}
|
|
166
|
+
init({ createDXTemplates: createDXTemplates, clearInstantiationModels: clearInstantiationModels, updateTemplates: updateTemplates });
|
|
167
|
+
}, [init, getRenderFunc]);
|
|
168
|
+
react_1.useEffect(function () {
|
|
169
|
+
if (updateContext) {
|
|
170
|
+
updateContext.onUpdated();
|
|
171
|
+
}
|
|
172
|
+
}, [updateContext]);
|
|
173
|
+
if (instantiationModels.empty) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
return (React.createElement(React.Fragment, null, Array.from(instantiationModels).map(function (_a) {
|
|
177
|
+
var _b = __read(_a, 2), _c = _b[0], data = _c.key1, container = _c.key2, _d = _b[1], index = _d.index, templateKey = _d.templateKey, componentKey = _d.componentKey, onRendered = _d.onRendered, onRemoved = _d.onRemoved;
|
|
178
|
+
subscribeOnRemoval(container, onRemoved);
|
|
179
|
+
return React.createElement(template_wrapper_1.TemplateWrapper, { key: componentKey, templateFactory: templateFactories.current[templateKey], data: data, index: index, container: container, onRemoved: onRemoved, onRendered: onRendered });
|
|
180
|
+
})));
|
|
181
|
+
};
|
|
182
|
+
exports.TemplateManager = TemplateManager;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* devextreme-react
|
|
3
|
-
* Version: 23.2.
|
|
4
|
-
* Build date: Tue
|
|
3
|
+
* Version: 23.2.3
|
|
4
|
+
* Build date: Tue Nov 28 2023
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
|
|
7
7
|
*
|
|
@@ -12,30 +12,5 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import * as React from 'react';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
container: Element;
|
|
18
|
-
onRemoved: () => void;
|
|
19
|
-
onDidMount?: () => void;
|
|
20
|
-
key: string;
|
|
21
|
-
}
|
|
22
|
-
interface ITemplateWrapperState {
|
|
23
|
-
removalListenerRequired: boolean;
|
|
24
|
-
}
|
|
25
|
-
declare type TemplateWrapperRenderer = () => TemplateWrapper;
|
|
26
|
-
declare class TemplateWrapper extends React.PureComponent<ITemplateWrapperProps, ITemplateWrapperState> {
|
|
27
|
-
private readonly _removalListenerRef;
|
|
28
|
-
private element;
|
|
29
|
-
private hiddenElement;
|
|
30
|
-
constructor(props: ITemplateWrapperProps);
|
|
31
|
-
componentDidMount(): void;
|
|
32
|
-
componentDidUpdate(): void;
|
|
33
|
-
componentWillUnmount(): void;
|
|
34
|
-
private get _listenerElement();
|
|
35
|
-
private getPreviousSiblingNode;
|
|
36
|
-
private _subscribeOnRemove;
|
|
37
|
-
private _subscribeOnElementRemoval;
|
|
38
|
-
private _onDxRemove;
|
|
39
|
-
render(): React.ReactNode;
|
|
40
|
-
}
|
|
41
|
-
export { ITemplateWrapperProps, TemplateWrapper, TemplateWrapperRenderer, };
|
|
15
|
+
import { TemplateWrapperProps } from './types';
|
|
16
|
+
export declare const TemplateWrapper: React.NamedExoticComponent<TemplateWrapperProps>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* devextreme-react
|
|
3
|
-
* Version: 23.2.
|
|
4
|
-
* Build date: Tue
|
|
3
|
+
* Version: 23.2.3
|
|
4
|
+
* Build date: Tue Nov 28 2023
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
|
|
7
7
|
*
|
|
@@ -12,21 +12,6 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
"use strict";
|
|
15
|
-
var __extends = (this && this.__extends) || (function () {
|
|
16
|
-
var extendStatics = function (d, b) {
|
|
17
|
-
extendStatics = Object.setPrototypeOf ||
|
|
18
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
19
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
20
|
-
return extendStatics(d, b);
|
|
21
|
-
};
|
|
22
|
-
return function (d, b) {
|
|
23
|
-
if (typeof b !== "function" && b !== null)
|
|
24
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
25
|
-
extendStatics(d, b);
|
|
26
|
-
function __() { this.constructor = d; }
|
|
27
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
28
|
-
};
|
|
29
|
-
})();
|
|
30
15
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
31
16
|
if (k2 === undefined) k2 = k;
|
|
32
17
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -46,95 +31,106 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
46
31
|
__setModuleDefault(result, mod);
|
|
47
32
|
return result;
|
|
48
33
|
};
|
|
34
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
35
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
36
|
+
if (!m) return o;
|
|
37
|
+
var i = m.call(o), r, ar = [], e;
|
|
38
|
+
try {
|
|
39
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
40
|
+
}
|
|
41
|
+
catch (error) { e = { error: error }; }
|
|
42
|
+
finally {
|
|
43
|
+
try {
|
|
44
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
45
|
+
}
|
|
46
|
+
finally { if (e) throw e.error; }
|
|
47
|
+
}
|
|
48
|
+
return ar;
|
|
49
|
+
};
|
|
49
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
51
|
exports.TemplateWrapper = void 0;
|
|
51
|
-
var events = __importStar(require("devextreme/events"));
|
|
52
52
|
var React = __importStar(require("react"));
|
|
53
|
-
var
|
|
53
|
+
var events = __importStar(require("devextreme/events"));
|
|
54
|
+
var react_1 = require("react");
|
|
55
|
+
var react_dom_1 = require("react-dom");
|
|
54
56
|
var component_base_1 = require("./component-base");
|
|
55
|
-
var
|
|
56
|
-
var
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
_this._removalListenerRef = React.createRef();
|
|
66
|
-
_this.state = { removalListenerRequired: false };
|
|
67
|
-
_this._onDxRemove = _this._onDxRemove.bind(_this);
|
|
68
|
-
_this.getPreviousSiblingNode = _this.getPreviousSiblingNode.bind(_this);
|
|
69
|
-
return _this;
|
|
57
|
+
var helpers_1 = require("./helpers");
|
|
58
|
+
var createHiddenNode = function (containerNodeName, ref, defaultElement) {
|
|
59
|
+
var style = { display: 'none' };
|
|
60
|
+
switch (containerNodeName) {
|
|
61
|
+
case 'TABLE':
|
|
62
|
+
return React.createElement("tbody", { style: style, ref: ref });
|
|
63
|
+
case 'TBODY':
|
|
64
|
+
return React.createElement("tr", { style: style, ref: ref });
|
|
65
|
+
default:
|
|
66
|
+
return React.createElement(defaultElement, { style: style, ref: ref });
|
|
70
67
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (
|
|
85
|
-
|
|
68
|
+
};
|
|
69
|
+
var TemplateWrapperComponent = function (_a) {
|
|
70
|
+
var templateFactory = _a.templateFactory, data = _a.data, index = _a.index, container = _a.container, onRemoved = _a.onRemoved, onRendered = _a.onRendered;
|
|
71
|
+
var _b = __read(react_1.useState(false), 2), removalListenerRequired = _b[0], setRemovalListenerRequired = _b[1];
|
|
72
|
+
var isRemovalLocked = react_1.useRef(false);
|
|
73
|
+
var removalLocker = react_1.useMemo(function () { return ({
|
|
74
|
+
lock: function () { isRemovalLocked.current = true; },
|
|
75
|
+
unlock: function () { isRemovalLocked.current = false; },
|
|
76
|
+
}); }, []);
|
|
77
|
+
var element = react_1.useRef();
|
|
78
|
+
var hiddenNodeElement = react_1.useRef();
|
|
79
|
+
var removalListenerElement = react_1.useRef();
|
|
80
|
+
var onTemplateRemoved = react_1.useCallback(function (_, args) {
|
|
81
|
+
if ((args === null || args === void 0 ? void 0 : args.isUnmounting) || isRemovalLocked.current) {
|
|
82
|
+
return;
|
|
86
83
|
}
|
|
87
|
-
if (
|
|
88
|
-
|
|
84
|
+
if (element.current) {
|
|
85
|
+
events.off(element.current, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
89
86
|
}
|
|
90
|
-
if (
|
|
91
|
-
|
|
87
|
+
if (removalListenerElement.current) {
|
|
88
|
+
events.off(removalListenerElement.current, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
92
89
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
TemplateWrapper.prototype.getPreviousSiblingNode = function (node) {
|
|
102
|
-
this.hiddenElement = node;
|
|
103
|
-
this.element = node === null || node === void 0 ? void 0 : node.previousSibling;
|
|
104
|
-
};
|
|
105
|
-
TemplateWrapper.prototype._subscribeOnRemove = function () {
|
|
106
|
-
var node = this.element;
|
|
107
|
-
var removalListenerRequired = this.state.removalListenerRequired;
|
|
108
|
-
if (node && node.nodeType === Node.ELEMENT_NODE) {
|
|
109
|
-
this._subscribeOnElementRemoval(node);
|
|
110
|
-
return;
|
|
90
|
+
onRemoved();
|
|
91
|
+
}, [onRemoved]);
|
|
92
|
+
react_1.useLayoutEffect(function () {
|
|
93
|
+
var el = element.current;
|
|
94
|
+
if (el && el.nodeType === Node.ELEMENT_NODE) {
|
|
95
|
+
events.off(el, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
96
|
+
events.on(el, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
111
97
|
}
|
|
112
|
-
if (!removalListenerRequired) {
|
|
113
|
-
|
|
114
|
-
return;
|
|
98
|
+
else if (!removalListenerRequired) {
|
|
99
|
+
setRemovalListenerRequired(true);
|
|
115
100
|
}
|
|
116
|
-
if (
|
|
117
|
-
|
|
101
|
+
else if (removalListenerElement.current) {
|
|
102
|
+
events.off(removalListenerElement.current, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
103
|
+
events.on(removalListenerElement.current, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
118
104
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
105
|
+
return function () {
|
|
106
|
+
if (element.current) {
|
|
107
|
+
container.appendChild(element.current);
|
|
108
|
+
}
|
|
109
|
+
if (hiddenNodeElement.current) {
|
|
110
|
+
container.appendChild(hiddenNodeElement.current);
|
|
111
|
+
}
|
|
112
|
+
if (removalListenerElement.current) {
|
|
113
|
+
container.appendChild(removalListenerElement.current);
|
|
114
|
+
}
|
|
115
|
+
if (el) {
|
|
116
|
+
events.off(el, component_base_1.DX_REMOVE_EVENT, onTemplateRemoved);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}, [onTemplateRemoved, removalListenerRequired, container]);
|
|
120
|
+
react_1.useEffect(function () {
|
|
121
|
+
onRendered();
|
|
122
|
+
}, [onRendered]);
|
|
123
|
+
var hiddenNode = createHiddenNode(container === null || container === void 0 ? void 0 : container.nodeName, function (node) {
|
|
124
|
+
hiddenNodeElement.current = node;
|
|
125
|
+
element.current = node === null || node === void 0 ? void 0 : node.previousSibling;
|
|
126
|
+
}, 'div');
|
|
127
|
+
var removalListener = removalListenerRequired
|
|
128
|
+
? createHiddenNode(container === null || container === void 0 ? void 0 : container.nodeName, function (node) { removalListenerElement.current = node; }, 'span')
|
|
129
|
+
: undefined;
|
|
130
|
+
return react_dom_1.createPortal(React.createElement(React.Fragment, null,
|
|
131
|
+
React.createElement(helpers_1.RemovalLockerContext.Provider, { value: removalLocker },
|
|
132
|
+
templateFactory({ data: data, index: index, onRendered: onRendered }),
|
|
133
|
+
hiddenNode,
|
|
134
|
+
removalListener)), container);
|
|
135
|
+
};
|
|
136
|
+
exports.TemplateWrapper = react_1.memo(TemplateWrapperComponent);
|
package/cjs/core/template.d.ts
CHANGED
package/cjs/core/template.js
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* devextreme-react
|
|
3
|
+
* Version: 23.2.3
|
|
4
|
+
* Build date: Tue Nov 28 2023
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
|
|
7
|
+
*
|
|
8
|
+
* This software may be modified and distributed under the terms
|
|
9
|
+
* of the MIT license. See the LICENSE file in the root of the project for details.
|
|
10
|
+
*
|
|
11
|
+
* https://github.com/DevExpress/devextreme-react
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { ReactNode } from 'react';
|
|
15
|
+
import { ITemplate } from './configuration/config-node';
|
|
16
|
+
interface DXTemplate {
|
|
17
|
+
render: RenderFunc;
|
|
18
|
+
}
|
|
19
|
+
declare type RenderFunc = (arg: RenderArgs) => HTMLElement;
|
|
20
|
+
interface TemplateArgs {
|
|
21
|
+
data: any;
|
|
22
|
+
index?: number;
|
|
23
|
+
onRendered: () => void;
|
|
24
|
+
}
|
|
25
|
+
export interface RenderArgs {
|
|
26
|
+
model?: any;
|
|
27
|
+
container: any;
|
|
28
|
+
index?: any;
|
|
29
|
+
onRendered?: () => void;
|
|
30
|
+
}
|
|
31
|
+
export interface UpdateLocker {
|
|
32
|
+
lock: () => void;
|
|
33
|
+
unlock: () => void;
|
|
34
|
+
}
|
|
35
|
+
export declare type DXTemplateCollection = Record<string, DXTemplate>;
|
|
36
|
+
export interface TemplateWrapperProps {
|
|
37
|
+
templateFactory: TemplateFunc;
|
|
38
|
+
data: any;
|
|
39
|
+
index: number;
|
|
40
|
+
container: HTMLElement;
|
|
41
|
+
onRendered: () => void;
|
|
42
|
+
onRemoved: () => void;
|
|
43
|
+
}
|
|
44
|
+
export declare type TemplateFunc = (arg: TemplateArgs) => JSX.Element | ReactNode;
|
|
45
|
+
export declare type UpdateTemplateFunc = (onUpdated: () => void) => void;
|
|
46
|
+
export interface InitArgument {
|
|
47
|
+
createDXTemplates: DXTemplateCreator;
|
|
48
|
+
clearInstantiationModels: () => void;
|
|
49
|
+
updateTemplates: UpdateTemplateFunc;
|
|
50
|
+
}
|
|
51
|
+
export interface TemplateManagerUpdateContext {
|
|
52
|
+
onUpdated: () => void;
|
|
53
|
+
}
|
|
54
|
+
export declare type DXTemplateCreator = (templateOptions: Record<string, ITemplate>) => DXTemplateCollection;
|
|
55
|
+
export interface TemplateManagerProps {
|
|
56
|
+
init: (args: InitArgument) => void;
|
|
57
|
+
}
|
|
58
|
+
export interface TemplateInstantiationModel {
|
|
59
|
+
templateKey: string;
|
|
60
|
+
componentKey: string;
|
|
61
|
+
index: any;
|
|
62
|
+
onRendered: () => void;
|
|
63
|
+
onRemoved: () => void;
|
|
64
|
+
}
|
|
65
|
+
export declare type GetRenderFuncFn = (templateKey: string) => RenderFunc;
|
|
66
|
+
export interface DXRemoveCustomArgs {
|
|
67
|
+
isUnmounting: boolean;
|
|
68
|
+
}
|
|
69
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* devextreme-react
|
|
3
|
+
* Version: 23.2.3
|
|
4
|
+
* Build date: Tue Nov 28 2023
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED
|
|
7
|
+
*
|
|
8
|
+
* This software may be modified and distributed under the terms
|
|
9
|
+
* of the MIT license. See the LICENSE file in the root of the project for details.
|
|
10
|
+
*
|
|
11
|
+
* https://github.com/DevExpress/devextreme-react
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
"use strict";
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|