react-pivottable-plus 1.0.14 → 1.0.18
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/README.md +2 -0
- package/dist/PivotTableUI.js +147 -213
- package/dist/PivotTableUI.js.map +1 -1
- package/dist/TableRenderers.js +273 -49
- package/dist/TableRenderers.js.map +1 -1
- package/dist/core/CellPipeline.js +167 -0
- package/dist/core/CellPipeline.js.map +1 -0
- package/dist/core/ColumnEngine.js +299 -0
- package/dist/core/ColumnEngine.js.map +1 -0
- package/dist/core/EventBus.js +109 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/ModuleRegistry.js +140 -0
- package/dist/core/ModuleRegistry.js.map +1 -0
- package/dist/core/PivotCore.js +254 -0
- package/dist/core/PivotCore.js.map +1 -0
- package/dist/core/PivotEngine.js +151 -0
- package/dist/core/PivotEngine.js.map +1 -0
- package/dist/core/StateManager.js +142 -0
- package/dist/core/StateManager.js.map +1 -0
- package/dist/core/VirtualScroller.js +138 -0
- package/dist/core/VirtualScroller.js.map +1 -0
- package/dist/core/api/ColumnApi.js +162 -0
- package/dist/core/api/ColumnApi.js.map +1 -0
- package/dist/core/api/GridApi.js +208 -0
- package/dist/core/api/GridApi.js.map +1 -0
- package/dist/core/index.js +89 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/rowModels/ClientSideRowModel.js +177 -0
- package/dist/core/rowModels/ClientSideRowModel.js.map +1 -0
- package/dist/core/rowModels/index.js +13 -0
- package/dist/core/rowModels/index.js.map +1 -0
- package/dist/hooks/useColumnResize.js +112 -0
- package/dist/hooks/useColumnResize.js.map +1 -0
- package/dist/hooks/usePivot.js +68 -155
- package/dist/hooks/usePivot.js.map +1 -1
- package/dist/modules/FilterModule.js +156 -0
- package/dist/modules/FilterModule.js.map +1 -0
- package/dist/modules/PaginationModule.js +115 -0
- package/dist/modules/PaginationModule.js.map +1 -0
- package/dist/modules/SortModule.js +88 -0
- package/dist/modules/SortModule.js.map +1 -0
- package/dist/modules/ThemeModule.js +83 -0
- package/dist/modules/ThemeModule.js.map +1 -0
- package/dist/modules/VirtualizationModule.js +89 -0
- package/dist/modules/VirtualizationModule.js.map +1 -0
- package/dist/modules/index.js +41 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/react/index.js +13 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/usePivotGrid.js +116 -0
- package/dist/react/usePivotGrid.js.map +1 -0
- package/dist/renderers/RadixUI.js +1 -1
- package/dist/renderers/RadixUI.js.map +1 -1
- package/dist/renderers/ShadcnDashboardUI.js +1 -1
- package/dist/renderers/ShadcnDashboardUI.js.map +1 -1
- package/dist/renderers/TailwindUI.js +1 -1
- package/dist/renderers/TailwindUI.js.map +1 -1
- package/package.json +8 -5
- package/pivottable.css +69 -12
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ColumnEngine = exports.COLUMN_DEF_DEFAULTS = void 0;
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
11
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
12
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
13
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
14
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
15
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
16
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
|
+
/**
|
|
20
|
+
* ColumnEngine — Motor de columnas para pivot tables.
|
|
21
|
+
*
|
|
22
|
+
* En una pivot table, las "columnas" no son estáticas como en AG Grid.
|
|
23
|
+
* Son generadas dinámicamente de las combinaciones de datos.
|
|
24
|
+
* ColumnDef aquí define cómo se comporta cada ATRIBUTO del dataset
|
|
25
|
+
* cuando aparece como columna, fila, o filtro.
|
|
26
|
+
*
|
|
27
|
+
* Uso:
|
|
28
|
+
* const engine = new ColumnEngine([
|
|
29
|
+
* { field: 'Country', headerName: 'País', sortable: true, filterable: true, width: 120 },
|
|
30
|
+
* { field: 'Year', sortable: true, pinned: 'left' },
|
|
31
|
+
* { field: 'Sales', headerName: 'Ventas', valueFormatter: v => `$${v}`, width: 100 },
|
|
32
|
+
* ]);
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
// Defaults para ColumnDef
|
|
36
|
+
var COLUMN_DEF_DEFAULTS = exports.COLUMN_DEF_DEFAULTS = {
|
|
37
|
+
headerName: null,
|
|
38
|
+
// null = usar field name
|
|
39
|
+
sortable: true,
|
|
40
|
+
filterable: true,
|
|
41
|
+
width: null,
|
|
42
|
+
// null = auto
|
|
43
|
+
minWidth: 50,
|
|
44
|
+
maxWidth: null,
|
|
45
|
+
flex: null,
|
|
46
|
+
// null = no flex
|
|
47
|
+
pinned: null,
|
|
48
|
+
// 'left' | 'right' | null
|
|
49
|
+
hide: false,
|
|
50
|
+
lockPosition: false,
|
|
51
|
+
// true = no se puede reordenar
|
|
52
|
+
lockVisible: false,
|
|
53
|
+
// true = no se puede ocultar
|
|
54
|
+
cellRenderer: null,
|
|
55
|
+
// Custom render function for cells of this attribute
|
|
56
|
+
valueFormatter: null,
|
|
57
|
+
// Custom format function
|
|
58
|
+
cellStyle: null,
|
|
59
|
+
// Dynamic cell style
|
|
60
|
+
cellClass: null,
|
|
61
|
+
// Dynamic cell class
|
|
62
|
+
headerClass: null,
|
|
63
|
+
// CSS class for header
|
|
64
|
+
tooltipField: null,
|
|
65
|
+
// Field to show as tooltip
|
|
66
|
+
suppressMenu: false,
|
|
67
|
+
// true = no mostrar menú de filtro
|
|
68
|
+
// Pivot-specific:
|
|
69
|
+
allowAsDimension: true,
|
|
70
|
+
// Puede ser fila o columna
|
|
71
|
+
allowAsValue: true,
|
|
72
|
+
// Puede ser valor (aggregator)
|
|
73
|
+
defaultZone: null // 'row' | 'col' | 'val' | 'unused'
|
|
74
|
+
};
|
|
75
|
+
var ColumnEngine = exports.ColumnEngine = /*#__PURE__*/function () {
|
|
76
|
+
function ColumnEngine() {
|
|
77
|
+
var columnDefs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
78
|
+
_classCallCheck(this, ColumnEngine);
|
|
79
|
+
this._columns = new Map();
|
|
80
|
+
this._order = []; // field names en orden
|
|
81
|
+
var _iterator = _createForOfIteratorHelper(columnDefs),
|
|
82
|
+
_step;
|
|
83
|
+
try {
|
|
84
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
85
|
+
var def = _step.value;
|
|
86
|
+
this.addColumn(def);
|
|
87
|
+
}
|
|
88
|
+
} catch (err) {
|
|
89
|
+
_iterator.e(err);
|
|
90
|
+
} finally {
|
|
91
|
+
_iterator.f();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Agregar o actualizar una definición de columna.
|
|
97
|
+
*/
|
|
98
|
+
return _createClass(ColumnEngine, [{
|
|
99
|
+
key: "addColumn",
|
|
100
|
+
value: function addColumn(def) {
|
|
101
|
+
if (!def.field) {
|
|
102
|
+
throw new Error('[ColumnEngine] ColumnDef must have a "field" property.');
|
|
103
|
+
}
|
|
104
|
+
var merged = _objectSpread(_objectSpread({}, COLUMN_DEF_DEFAULTS), def);
|
|
105
|
+
if (!merged.headerName) merged.headerName = merged.field;
|
|
106
|
+
this._columns.set(def.field, merged);
|
|
107
|
+
if (!this._order.includes(def.field)) {
|
|
108
|
+
this._order.push(def.field);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Setear todas las definiciones de columna (reemplaza existentes).
|
|
114
|
+
*/
|
|
115
|
+
}, {
|
|
116
|
+
key: "setColumnDefs",
|
|
117
|
+
value: function setColumnDefs(defs) {
|
|
118
|
+
this._columns.clear();
|
|
119
|
+
this._order = [];
|
|
120
|
+
var _iterator2 = _createForOfIteratorHelper(defs),
|
|
121
|
+
_step2;
|
|
122
|
+
try {
|
|
123
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
124
|
+
var def = _step2.value;
|
|
125
|
+
this.addColumn(def);
|
|
126
|
+
}
|
|
127
|
+
} catch (err) {
|
|
128
|
+
_iterator2.e(err);
|
|
129
|
+
} finally {
|
|
130
|
+
_iterator2.f();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Obtener definición de columna por field.
|
|
136
|
+
*/
|
|
137
|
+
}, {
|
|
138
|
+
key: "getColumn",
|
|
139
|
+
value: function getColumn(field) {
|
|
140
|
+
return this._columns.get(field) || null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Obtener todas las definiciones.
|
|
145
|
+
*/
|
|
146
|
+
}, {
|
|
147
|
+
key: "getColumnDefs",
|
|
148
|
+
value: function getColumnDefs() {
|
|
149
|
+
var _this = this;
|
|
150
|
+
return this._order.map(function (field) {
|
|
151
|
+
return _this._columns.get(field);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Obtener solo definiciones visibles.
|
|
157
|
+
*/
|
|
158
|
+
}, {
|
|
159
|
+
key: "getVisibleColumns",
|
|
160
|
+
value: function getVisibleColumns() {
|
|
161
|
+
return this.getColumnDefs().filter(function (col) {
|
|
162
|
+
return !col.hide;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Obtener definición o un default genérico para campos sin ColumnDef.
|
|
168
|
+
*/
|
|
169
|
+
}, {
|
|
170
|
+
key: "getColumnOrDefault",
|
|
171
|
+
value: function getColumnOrDefault(field) {
|
|
172
|
+
return this._columns.get(field) || _objectSpread(_objectSpread({}, COLUMN_DEF_DEFAULTS), {}, {
|
|
173
|
+
field: field,
|
|
174
|
+
headerName: field
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Mover columna de posición.
|
|
180
|
+
*/
|
|
181
|
+
}, {
|
|
182
|
+
key: "moveColumn",
|
|
183
|
+
value: function moveColumn(fromField, toIndex) {
|
|
184
|
+
var fromIndex = this._order.indexOf(fromField);
|
|
185
|
+
if (fromIndex === -1) return;
|
|
186
|
+
this._order.splice(fromIndex, 1);
|
|
187
|
+
this._order.splice(toIndex, 0, fromField);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Setear visibilidad de una columna.
|
|
192
|
+
*/
|
|
193
|
+
}, {
|
|
194
|
+
key: "setColumnVisible",
|
|
195
|
+
value: function setColumnVisible(field, visible) {
|
|
196
|
+
var col = this._columns.get(field);
|
|
197
|
+
if (col && !col.lockVisible) {
|
|
198
|
+
col.hide = !visible;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Setear ancho de una columna.
|
|
204
|
+
*/
|
|
205
|
+
}, {
|
|
206
|
+
key: "setColumnWidth",
|
|
207
|
+
value: function setColumnWidth(field, width) {
|
|
208
|
+
var col = this._columns.get(field);
|
|
209
|
+
if (col) {
|
|
210
|
+
col.width = Math.max(col.minWidth, col.maxWidth ? Math.min(width, col.maxWidth) : width);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Auto-size columnas (placeholder — necesita integración con DOM).
|
|
216
|
+
*/
|
|
217
|
+
}, {
|
|
218
|
+
key: "autoSizeColumns",
|
|
219
|
+
value: function autoSizeColumns() {
|
|
220
|
+
var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
221
|
+
var targets = fields || this._order;
|
|
222
|
+
var _iterator3 = _createForOfIteratorHelper(targets),
|
|
223
|
+
_step3;
|
|
224
|
+
try {
|
|
225
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
226
|
+
var field = _step3.value;
|
|
227
|
+
var col = this._columns.get(field);
|
|
228
|
+
if (col) {
|
|
229
|
+
col.width = null; // Reset to auto
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
} catch (err) {
|
|
233
|
+
_iterator3.e(err);
|
|
234
|
+
} finally {
|
|
235
|
+
_iterator3.f();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Setear pin de columna.
|
|
241
|
+
*/
|
|
242
|
+
}, {
|
|
243
|
+
key: "setColumnPinned",
|
|
244
|
+
value: function setColumnPinned(field, pinned) {
|
|
245
|
+
var col = this._columns.get(field);
|
|
246
|
+
if (col && !col.lockPosition) {
|
|
247
|
+
col.pinned = pinned; // 'left' | 'right' | null
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Obtener columnas que pueden ser dimensiones (filas/cols).
|
|
253
|
+
*/
|
|
254
|
+
}, {
|
|
255
|
+
key: "getDimensionColumns",
|
|
256
|
+
value: function getDimensionColumns() {
|
|
257
|
+
return this.getColumnDefs().filter(function (col) {
|
|
258
|
+
return col.allowAsDimension;
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Obtener columnas que pueden ser valores (aggregator).
|
|
264
|
+
*/
|
|
265
|
+
}, {
|
|
266
|
+
key: "getValueColumns",
|
|
267
|
+
value: function getValueColumns() {
|
|
268
|
+
return this.getColumnDefs().filter(function (col) {
|
|
269
|
+
return col.allowAsValue;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Verificar si existe una definición para un campo.
|
|
275
|
+
*/
|
|
276
|
+
}, {
|
|
277
|
+
key: "has",
|
|
278
|
+
value: function has(field) {
|
|
279
|
+
return this._columns.has(field);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Obtener el cellPipeline config específico para un campo.
|
|
284
|
+
* Permite que cada columna tenga su propio cellRenderer/valueFormatter.
|
|
285
|
+
*/
|
|
286
|
+
}, {
|
|
287
|
+
key: "getCellPipelineFor",
|
|
288
|
+
value: function getCellPipelineFor(field) {
|
|
289
|
+
var col = this.getColumnOrDefault(field);
|
|
290
|
+
var config = {};
|
|
291
|
+
if (col.valueFormatter) config.valueFormatter = col.valueFormatter;
|
|
292
|
+
if (col.cellRenderer) config.cellRenderer = col.cellRenderer;
|
|
293
|
+
if (col.cellStyle) config.cellStyle = col.cellStyle;
|
|
294
|
+
if (col.cellClass) config.cellClass = col.cellClass;
|
|
295
|
+
return Object.keys(config).length > 0 ? config : null;
|
|
296
|
+
}
|
|
297
|
+
}]);
|
|
298
|
+
}();
|
|
299
|
+
//# sourceMappingURL=ColumnEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnEngine.js","names":["COLUMN_DEF_DEFAULTS","exports","headerName","sortable","filterable","width","minWidth","maxWidth","flex","pinned","hide","lockPosition","lockVisible","cellRenderer","valueFormatter","cellStyle","cellClass","headerClass","tooltipField","suppressMenu","allowAsDimension","allowAsValue","defaultZone","ColumnEngine","columnDefs","arguments","length","undefined","_classCallCheck","_columns","Map","_order","_iterator","_createForOfIteratorHelper","_step","s","n","done","def","value","addColumn","err","e","f","_createClass","key","field","Error","merged","_objectSpread","set","includes","push","setColumnDefs","defs","clear","_iterator2","_step2","getColumn","get","getColumnDefs","_this","map","getVisibleColumns","filter","col","getColumnOrDefault","moveColumn","fromField","toIndex","fromIndex","indexOf","splice","setColumnVisible","visible","setColumnWidth","Math","max","min","autoSizeColumns","fields","targets","_iterator3","_step3","setColumnPinned","getDimensionColumns","getValueColumns","has","getCellPipelineFor","config","Object","keys"],"sources":["../../src/core/ColumnEngine.js"],"sourcesContent":["/**\n * ColumnEngine — Motor de columnas para pivot tables.\n *\n * En una pivot table, las \"columnas\" no son estáticas como en AG Grid.\n * Son generadas dinámicamente de las combinaciones de datos.\n * ColumnDef aquí define cómo se comporta cada ATRIBUTO del dataset\n * cuando aparece como columna, fila, o filtro.\n *\n * Uso:\n * const engine = new ColumnEngine([\n * { field: 'Country', headerName: 'País', sortable: true, filterable: true, width: 120 },\n * { field: 'Year', sortable: true, pinned: 'left' },\n * { field: 'Sales', headerName: 'Ventas', valueFormatter: v => `$${v}`, width: 100 },\n * ]);\n */\n\n// Defaults para ColumnDef\nconst COLUMN_DEF_DEFAULTS = {\n headerName: null, // null = usar field name\n sortable: true,\n filterable: true,\n width: null, // null = auto\n minWidth: 50,\n maxWidth: null,\n flex: null, // null = no flex\n pinned: null, // 'left' | 'right' | null\n hide: false,\n lockPosition: false, // true = no se puede reordenar\n lockVisible: false, // true = no se puede ocultar\n cellRenderer: null, // Custom render function for cells of this attribute\n valueFormatter: null, // Custom format function\n cellStyle: null, // Dynamic cell style\n cellClass: null, // Dynamic cell class\n headerClass: null, // CSS class for header\n tooltipField: null, // Field to show as tooltip\n suppressMenu: false, // true = no mostrar menú de filtro\n // Pivot-specific:\n allowAsDimension: true, // Puede ser fila o columna\n allowAsValue: true, // Puede ser valor (aggregator)\n defaultZone: null, // 'row' | 'col' | 'val' | 'unused'\n};\n\nexport class ColumnEngine {\n constructor(columnDefs = []) {\n this._columns = new Map();\n this._order = []; // field names en orden\n\n for (const def of columnDefs) {\n this.addColumn(def);\n }\n }\n\n /**\n * Agregar o actualizar una definición de columna.\n */\n addColumn(def) {\n if (!def.field) {\n throw new Error('[ColumnEngine] ColumnDef must have a \"field\" property.');\n }\n const merged = { ...COLUMN_DEF_DEFAULTS, ...def };\n if (!merged.headerName) merged.headerName = merged.field;\n this._columns.set(def.field, merged);\n if (!this._order.includes(def.field)) {\n this._order.push(def.field);\n }\n }\n\n /**\n * Setear todas las definiciones de columna (reemplaza existentes).\n */\n setColumnDefs(defs) {\n this._columns.clear();\n this._order = [];\n for (const def of defs) {\n this.addColumn(def);\n }\n }\n\n /**\n * Obtener definición de columna por field.\n */\n getColumn(field) {\n return this._columns.get(field) || null;\n }\n\n /**\n * Obtener todas las definiciones.\n */\n getColumnDefs() {\n return this._order.map(field => this._columns.get(field));\n }\n\n /**\n * Obtener solo definiciones visibles.\n */\n getVisibleColumns() {\n return this.getColumnDefs().filter(col => !col.hide);\n }\n\n /**\n * Obtener definición o un default genérico para campos sin ColumnDef.\n */\n getColumnOrDefault(field) {\n return this._columns.get(field) || { ...COLUMN_DEF_DEFAULTS, field, headerName: field };\n }\n\n /**\n * Mover columna de posición.\n */\n moveColumn(fromField, toIndex) {\n const fromIndex = this._order.indexOf(fromField);\n if (fromIndex === -1) return;\n this._order.splice(fromIndex, 1);\n this._order.splice(toIndex, 0, fromField);\n }\n\n /**\n * Setear visibilidad de una columna.\n */\n setColumnVisible(field, visible) {\n const col = this._columns.get(field);\n if (col && !col.lockVisible) {\n col.hide = !visible;\n }\n }\n\n /**\n * Setear ancho de una columna.\n */\n setColumnWidth(field, width) {\n const col = this._columns.get(field);\n if (col) {\n col.width = Math.max(col.minWidth, col.maxWidth ? Math.min(width, col.maxWidth) : width);\n }\n }\n\n /**\n * Auto-size columnas (placeholder — necesita integración con DOM).\n */\n autoSizeColumns(fields = null) {\n const targets = fields || this._order;\n for (const field of targets) {\n const col = this._columns.get(field);\n if (col) {\n col.width = null; // Reset to auto\n }\n }\n }\n\n /**\n * Setear pin de columna.\n */\n setColumnPinned(field, pinned) {\n const col = this._columns.get(field);\n if (col && !col.lockPosition) {\n col.pinned = pinned; // 'left' | 'right' | null\n }\n }\n\n /**\n * Obtener columnas que pueden ser dimensiones (filas/cols).\n */\n getDimensionColumns() {\n return this.getColumnDefs().filter(col => col.allowAsDimension);\n }\n\n /**\n * Obtener columnas que pueden ser valores (aggregator).\n */\n getValueColumns() {\n return this.getColumnDefs().filter(col => col.allowAsValue);\n }\n\n /**\n * Verificar si existe una definición para un campo.\n */\n has(field) {\n return this._columns.has(field);\n }\n\n /**\n * Obtener el cellPipeline config específico para un campo.\n * Permite que cada columna tenga su propio cellRenderer/valueFormatter.\n */\n getCellPipelineFor(field) {\n const col = this.getColumnOrDefault(field);\n const config = {};\n if (col.valueFormatter) config.valueFormatter = col.valueFormatter;\n if (col.cellRenderer) config.cellRenderer = col.cellRenderer;\n if (col.cellStyle) config.cellStyle = col.cellStyle;\n if (col.cellClass) config.cellClass = col.cellClass;\n return Object.keys(config).length > 0 ? config : null;\n }\n}\n\nexport { COLUMN_DEF_DEFAULTS };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EventBus = void 0;
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
9
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
10
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
11
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
12
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
13
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
|
+
/**
|
|
17
|
+
* EventBus — Sistema de eventos con nombre para el Headless Core.
|
|
18
|
+
* Permite suscribirse a eventos específicos (filterChanged, sortChanged, etc.)
|
|
19
|
+
* y también a un evento genérico 'stateChanged' para re-renders de React.
|
|
20
|
+
*/
|
|
21
|
+
var EventBus = exports.EventBus = /*#__PURE__*/function () {
|
|
22
|
+
function EventBus() {
|
|
23
|
+
_classCallCheck(this, EventBus);
|
|
24
|
+
this._listeners = {};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Suscribirse a un evento.
|
|
29
|
+
* @param {string} event - Nombre del evento (e.g. 'filterChanged', 'stateChanged')
|
|
30
|
+
* @param {Function} callback - Función a ejecutar
|
|
31
|
+
* @returns {Function} Función para desuscribirse
|
|
32
|
+
*/
|
|
33
|
+
return _createClass(EventBus, [{
|
|
34
|
+
key: "on",
|
|
35
|
+
value: function on(event, callback) {
|
|
36
|
+
var _this = this;
|
|
37
|
+
if (!this._listeners[event]) {
|
|
38
|
+
this._listeners[event] = new Set();
|
|
39
|
+
}
|
|
40
|
+
this._listeners[event].add(callback);
|
|
41
|
+
return function () {
|
|
42
|
+
return _this.off(event, callback);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Desuscribirse de un evento.
|
|
48
|
+
*/
|
|
49
|
+
}, {
|
|
50
|
+
key: "off",
|
|
51
|
+
value: function off(event, callback) {
|
|
52
|
+
if (this._listeners[event]) {
|
|
53
|
+
this._listeners[event]["delete"](callback);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Emitir un evento a todos los suscriptores.
|
|
59
|
+
* @param {string} event - Nombre del evento
|
|
60
|
+
* @param {*} payload - Datos del evento
|
|
61
|
+
*/
|
|
62
|
+
}, {
|
|
63
|
+
key: "emit",
|
|
64
|
+
value: function emit(event, payload) {
|
|
65
|
+
if (this._listeners[event]) {
|
|
66
|
+
var _iterator = _createForOfIteratorHelper(this._listeners[event]),
|
|
67
|
+
_step;
|
|
68
|
+
try {
|
|
69
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
70
|
+
var cb = _step.value;
|
|
71
|
+
try {
|
|
72
|
+
cb(payload);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
console.error("[EventBus] Error in listener for \"".concat(event, "\":"), e);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} catch (err) {
|
|
78
|
+
_iterator.e(err);
|
|
79
|
+
} finally {
|
|
80
|
+
_iterator.f();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Suscribirse a un evento una sola vez.
|
|
87
|
+
*/
|
|
88
|
+
}, {
|
|
89
|
+
key: "once",
|
|
90
|
+
value: function once(event, callback) {
|
|
91
|
+
var _this2 = this;
|
|
92
|
+
var _wrappedCb = function wrappedCb(payload) {
|
|
93
|
+
_this2.off(event, _wrappedCb);
|
|
94
|
+
callback(payload);
|
|
95
|
+
};
|
|
96
|
+
return this.on(event, _wrappedCb);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Eliminar todos los listeners.
|
|
101
|
+
*/
|
|
102
|
+
}, {
|
|
103
|
+
key: "destroy",
|
|
104
|
+
value: function destroy() {
|
|
105
|
+
this._listeners = {};
|
|
106
|
+
}
|
|
107
|
+
}]);
|
|
108
|
+
}();
|
|
109
|
+
//# sourceMappingURL=EventBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventBus.js","names":["EventBus","exports","_classCallCheck","_listeners","_createClass","key","value","on","event","callback","_this","Set","add","off","emit","payload","_iterator","_createForOfIteratorHelper","_step","s","n","done","cb","e","console","error","concat","err","f","once","_this2","wrappedCb","destroy"],"sources":["../../src/core/EventBus.js"],"sourcesContent":["/**\n * EventBus — Sistema de eventos con nombre para el Headless Core.\n * Permite suscribirse a eventos específicos (filterChanged, sortChanged, etc.)\n * y también a un evento genérico 'stateChanged' para re-renders de React.\n */\nexport class EventBus {\n constructor() {\n this._listeners = {};\n }\n\n /**\n * Suscribirse a un evento.\n * @param {string} event - Nombre del evento (e.g. 'filterChanged', 'stateChanged')\n * @param {Function} callback - Función a ejecutar\n * @returns {Function} Función para desuscribirse\n */\n on(event, callback) {\n if (!this._listeners[event]) {\n this._listeners[event] = new Set();\n }\n this._listeners[event].add(callback);\n return () => this.off(event, callback);\n }\n\n /**\n * Desuscribirse de un evento.\n */\n off(event, callback) {\n if (this._listeners[event]) {\n this._listeners[event].delete(callback);\n }\n }\n\n /**\n * Emitir un evento a todos los suscriptores.\n * @param {string} event - Nombre del evento\n * @param {*} payload - Datos del evento\n */\n emit(event, payload) {\n if (this._listeners[event]) {\n for (const cb of this._listeners[event]) {\n try {\n cb(payload);\n } catch (e) {\n console.error(`[EventBus] Error in listener for \"${event}\":`, e);\n }\n }\n }\n }\n\n /**\n * Suscribirse a un evento una sola vez.\n */\n once(event, callback) {\n const wrappedCb = (payload) => {\n this.off(event, wrappedCb);\n callback(payload);\n };\n return this.on(event, wrappedCb);\n }\n\n /**\n * Eliminar todos los listeners.\n */\n destroy() {\n this._listeners = {};\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAJA,IAKaA,QAAQ,GAAAC,OAAA,CAAAD,QAAA;EACjB,SAAAA,SAAA,EAAc;IAAAE,eAAA,OAAAF,QAAA;IACV,IAAI,CAACG,UAAU,GAAG,CAAC,CAAC;EACxB;;EAEA;AACJ;AACA;AACA;AACA;AACA;EALI,OAAAC,YAAA,CAAAJ,QAAA;IAAAK,GAAA;IAAAC,KAAA,EAMA,SAAAC,EAAEA,CAACC,KAAK,EAAEC,QAAQ,EAAE;MAAA,IAAAC,KAAA;MAChB,IAAI,CAAC,IAAI,CAACP,UAAU,CAACK,KAAK,CAAC,EAAE;QACzB,IAAI,CAACL,UAAU,CAACK,KAAK,CAAC,GAAG,IAAIG,GAAG,CAAC,CAAC;MACtC;MACA,IAAI,CAACR,UAAU,CAACK,KAAK,CAAC,CAACI,GAAG,CAACH,QAAQ,CAAC;MACpC,OAAO;QAAA,OAAMC,KAAI,CAACG,GAAG,CAACL,KAAK,EAAEC,QAAQ,CAAC;MAAA;IAC1C;;IAEA;AACJ;AACA;EAFI;IAAAJ,GAAA;IAAAC,KAAA,EAGA,SAAAO,GAAGA,CAACL,KAAK,EAAEC,QAAQ,EAAE;MACjB,IAAI,IAAI,CAACN,UAAU,CAACK,KAAK,CAAC,EAAE;QACxB,IAAI,CAACL,UAAU,CAACK,KAAK,CAAC,UAAO,CAACC,QAAQ,CAAC;MAC3C;IACJ;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAAJ,GAAA;IAAAC,KAAA,EAKA,SAAAQ,IAAIA,CAACN,KAAK,EAAEO,OAAO,EAAE;MACjB,IAAI,IAAI,CAACZ,UAAU,CAACK,KAAK,CAAC,EAAE;QAAA,IAAAQ,SAAA,GAAAC,0BAAA,CACP,IAAI,CAACd,UAAU,CAACK,KAAK,CAAC;UAAAU,KAAA;QAAA;UAAvC,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAyC;YAAA,IAA9BC,EAAE,GAAAJ,KAAA,CAAAZ,KAAA;YACT,IAAI;cACAgB,EAAE,CAACP,OAAO,CAAC;YACf,CAAC,CAAC,OAAOQ,CAAC,EAAE;cACRC,OAAO,CAACC,KAAK,uCAAAC,MAAA,CAAsClB,KAAK,UAAMe,CAAC,CAAC;YACpE;UACJ;QAAC,SAAAI,GAAA;UAAAX,SAAA,CAAAO,CAAA,CAAAI,GAAA;QAAA;UAAAX,SAAA,CAAAY,CAAA;QAAA;MACL;IACJ;;IAEA;AACJ;AACA;EAFI;IAAAvB,GAAA;IAAAC,KAAA,EAGA,SAAAuB,IAAIA,CAACrB,KAAK,EAAEC,QAAQ,EAAE;MAAA,IAAAqB,MAAA;MAClB,IAAMC,UAAS,GAAG,SAAZA,SAASA,CAAIhB,OAAO,EAAK;QAC3Be,MAAI,CAACjB,GAAG,CAACL,KAAK,EAAEuB,UAAS,CAAC;QAC1BtB,QAAQ,CAACM,OAAO,CAAC;MACrB,CAAC;MACD,OAAO,IAAI,CAACR,EAAE,CAACC,KAAK,EAAEuB,UAAS,CAAC;IACpC;;IAEA;AACJ;AACA;EAFI;IAAA1B,GAAA;IAAAC,KAAA,EAGA,SAAA0B,OAAOA,CAAA,EAAG;MACN,IAAI,CAAC7B,UAAU,GAAG,CAAC,CAAC;IACxB;EAAC;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ModuleRegistry = void 0;
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
9
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
11
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
12
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
13
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
14
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
16
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
17
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
19
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
20
|
+
/**
|
|
21
|
+
* ModuleRegistry — Registro y ciclo de vida de módulos.
|
|
22
|
+
* Cada módulo implementa: { id, init(engine), destroy(), getApi() }
|
|
23
|
+
*/
|
|
24
|
+
var ModuleRegistry = exports.ModuleRegistry = /*#__PURE__*/function () {
|
|
25
|
+
function ModuleRegistry(engine) {
|
|
26
|
+
_classCallCheck(this, ModuleRegistry);
|
|
27
|
+
this.engine = engine;
|
|
28
|
+
this._modules = new Map();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Registrar un módulo (factory o instancia).
|
|
33
|
+
* @param {Function|Object} moduleOrFactory - Si es función, se llama para crear la instancia.
|
|
34
|
+
*/
|
|
35
|
+
return _createClass(ModuleRegistry, [{
|
|
36
|
+
key: "register",
|
|
37
|
+
value: function register(moduleOrFactory) {
|
|
38
|
+
var mod = typeof moduleOrFactory === 'function' ? moduleOrFactory() : moduleOrFactory;
|
|
39
|
+
if (!mod.id) {
|
|
40
|
+
throw new Error('[ModuleRegistry] Module must have an "id" property.');
|
|
41
|
+
}
|
|
42
|
+
if (this._modules.has(mod.id)) {
|
|
43
|
+
var _this$_modules$get$de, _this$_modules$get;
|
|
44
|
+
console.warn("[ModuleRegistry] Module \"".concat(mod.id, "\" already registered. Replacing."));
|
|
45
|
+
(_this$_modules$get$de = (_this$_modules$get = this._modules.get(mod.id)).destroy) === null || _this$_modules$get$de === void 0 || _this$_modules$get$de.call(_this$_modules$get);
|
|
46
|
+
}
|
|
47
|
+
this._modules.set(mod.id, mod);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Inicializar todos los módulos registrados.
|
|
52
|
+
*/
|
|
53
|
+
}, {
|
|
54
|
+
key: "initAll",
|
|
55
|
+
value: function initAll() {
|
|
56
|
+
var _iterator = _createForOfIteratorHelper(this._modules),
|
|
57
|
+
_step;
|
|
58
|
+
try {
|
|
59
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
60
|
+
var _mod$init;
|
|
61
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
62
|
+
mod = _step$value[1];
|
|
63
|
+
(_mod$init = mod.init) === null || _mod$init === void 0 || _mod$init.call(mod, this.engine);
|
|
64
|
+
}
|
|
65
|
+
} catch (err) {
|
|
66
|
+
_iterator.e(err);
|
|
67
|
+
} finally {
|
|
68
|
+
_iterator.f();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Obtener un módulo por su ID.
|
|
74
|
+
*/
|
|
75
|
+
}, {
|
|
76
|
+
key: "getModule",
|
|
77
|
+
value: function getModule(id) {
|
|
78
|
+
return this._modules.get(id) || null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Recolectar todas las APIs de los módulos para inyectarlas en GridApi.
|
|
83
|
+
* @returns {Object} Objeto con todos los métodos combinados
|
|
84
|
+
*/
|
|
85
|
+
}, {
|
|
86
|
+
key: "collectApis",
|
|
87
|
+
value: function collectApis() {
|
|
88
|
+
var apis = {};
|
|
89
|
+
var _iterator2 = _createForOfIteratorHelper(this._modules),
|
|
90
|
+
_step2;
|
|
91
|
+
try {
|
|
92
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
93
|
+
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
94
|
+
mod = _step2$value[1];
|
|
95
|
+
if (mod.getApi) {
|
|
96
|
+
Object.assign(apis, mod.getApi());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
} catch (err) {
|
|
100
|
+
_iterator2.e(err);
|
|
101
|
+
} finally {
|
|
102
|
+
_iterator2.f();
|
|
103
|
+
}
|
|
104
|
+
return apis;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Verificar si un módulo está registrado.
|
|
109
|
+
*/
|
|
110
|
+
}, {
|
|
111
|
+
key: "has",
|
|
112
|
+
value: function has(id) {
|
|
113
|
+
return this._modules.has(id);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Destruir todos los módulos.
|
|
118
|
+
*/
|
|
119
|
+
}, {
|
|
120
|
+
key: "destroyAll",
|
|
121
|
+
value: function destroyAll() {
|
|
122
|
+
var _iterator3 = _createForOfIteratorHelper(this._modules),
|
|
123
|
+
_step3;
|
|
124
|
+
try {
|
|
125
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
126
|
+
var _mod$destroy;
|
|
127
|
+
var _step3$value = _slicedToArray(_step3.value, 2),
|
|
128
|
+
mod = _step3$value[1];
|
|
129
|
+
(_mod$destroy = mod.destroy) === null || _mod$destroy === void 0 || _mod$destroy.call(mod);
|
|
130
|
+
}
|
|
131
|
+
} catch (err) {
|
|
132
|
+
_iterator3.e(err);
|
|
133
|
+
} finally {
|
|
134
|
+
_iterator3.f();
|
|
135
|
+
}
|
|
136
|
+
this._modules.clear();
|
|
137
|
+
}
|
|
138
|
+
}]);
|
|
139
|
+
}();
|
|
140
|
+
//# sourceMappingURL=ModuleRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleRegistry.js","names":["ModuleRegistry","exports","engine","_classCallCheck","_modules","Map","_createClass","key","value","register","moduleOrFactory","mod","id","Error","has","_this$_modules$get$de","_this$_modules$get","console","warn","concat","get","destroy","call","set","initAll","_iterator","_createForOfIteratorHelper","_step","s","n","done","_mod$init","_step$value","_slicedToArray","init","err","e","f","getModule","collectApis","apis","_iterator2","_step2","_step2$value","getApi","Object","assign","destroyAll","_iterator3","_step3","_mod$destroy","_step3$value","clear"],"sources":["../../src/core/ModuleRegistry.js"],"sourcesContent":["/**\n * ModuleRegistry — Registro y ciclo de vida de módulos.\n * Cada módulo implementa: { id, init(engine), destroy(), getApi() }\n */\nexport class ModuleRegistry {\n constructor(engine) {\n this.engine = engine;\n this._modules = new Map();\n }\n\n /**\n * Registrar un módulo (factory o instancia).\n * @param {Function|Object} moduleOrFactory - Si es función, se llama para crear la instancia.\n */\n register(moduleOrFactory) {\n const mod = typeof moduleOrFactory === 'function' ? moduleOrFactory() : moduleOrFactory;\n\n if (!mod.id) {\n throw new Error('[ModuleRegistry] Module must have an \"id\" property.');\n }\n\n if (this._modules.has(mod.id)) {\n console.warn(`[ModuleRegistry] Module \"${mod.id}\" already registered. Replacing.`);\n this._modules.get(mod.id).destroy?.();\n }\n\n this._modules.set(mod.id, mod);\n }\n\n /**\n * Inicializar todos los módulos registrados.\n */\n initAll() {\n for (const [, mod] of this._modules) {\n mod.init?.(this.engine);\n }\n }\n\n /**\n * Obtener un módulo por su ID.\n */\n getModule(id) {\n return this._modules.get(id) || null;\n }\n\n /**\n * Recolectar todas las APIs de los módulos para inyectarlas en GridApi.\n * @returns {Object} Objeto con todos los métodos combinados\n */\n collectApis() {\n const apis = {};\n for (const [, mod] of this._modules) {\n if (mod.getApi) {\n Object.assign(apis, mod.getApi());\n }\n }\n return apis;\n }\n\n /**\n * Verificar si un módulo está registrado.\n */\n has(id) {\n return this._modules.has(id);\n }\n\n /**\n * Destruir todos los módulos.\n */\n destroyAll() {\n for (const [, mod] of this._modules) {\n mod.destroy?.();\n }\n this._modules.clear();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|