@olympeio-extensions/reactgrid 2.10.0 → 2.10.2

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.
@@ -30,6 +30,12 @@
30
30
  "o": 4,
31
31
  "r": "ff011000000000000002"
32
32
  },
33
+ {
34
+ "l": "019058c8f3141c245b0d",
35
+ "m": "017ebf8fe5c506662098",
36
+ "o": 4,
37
+ "r": "ff011000000000000001"
38
+ },
33
39
  {
34
40
  "l": "019058c8f3141c245b0d",
35
41
  "m": "ff022000000000000000",
@@ -15,6 +15,7 @@
15
15
  },
16
16
  "fd01917526f9215be1d2f0": "",
17
17
  "fd01917fc8e59637d6c72a": false,
18
+ "fd01917fcefb5dcd2ff157": 25,
18
19
  "fd0191802844d247a4947d": false,
19
20
  "fd0191e56049321dba872f": false,
20
21
  "fd0191ec1d5935bc487a65": 0,
@@ -25,6 +26,7 @@
25
26
  "fd01920938e660c98af77c": false,
26
27
  "fd01920938e8f83c56ca0e": false,
27
28
  "fd01923fd12cbb2991bb73": 150,
29
+ "fd01944053c9e791269bb3": 14,
28
30
  "fdff023000000000000011": "RG: ReactGrid",
29
31
  "ff023000000000000011": "RG: ReactGrid"
30
32
  },
@@ -117,7 +119,7 @@
117
119
  {
118
120
  "o": 1,
119
121
  "p": {
120
- "01703376c4a81c0e9d92": "Specifies the height of each row in the grid. If not specified, rows will automatically adjust based on content"
122
+ "01703376c4a81c0e9d92": "Specifies the height of each row in the grid. If not specified, rows will automatically adjust based on content. The minimum supported height is 25px which is the limit provided by the library to maintain readibility."
121
123
  },
122
124
  "t": "01917fcefb5e106d7a05"
123
125
  },
@@ -140,7 +142,7 @@
140
142
  {
141
143
  "o": 1,
142
144
  "p": {
143
- "016d1bb681929c2cc3f1": 14,
145
+ "016d1bb681929c2cc3f1": 15,
144
146
  "016d1bb681929c2cc3f3": true,
145
147
  "0170beccaac4129d72a9": true
146
148
  },
@@ -209,7 +211,7 @@
209
211
  {
210
212
  "o": 1,
211
213
  "p": {
212
- "016d1bb681929c2cc3f1": 10,
214
+ "016d1bb681929c2cc3f1": 11,
213
215
  "016d1bb681929c2cc3f3": true,
214
216
  "0170beccaac4129d72a9": true
215
217
  },
@@ -232,7 +234,7 @@
232
234
  {
233
235
  "o": 1,
234
236
  "p": {
235
- "016d1bb681929c2cc3f1": 11,
237
+ "016d1bb681929c2cc3f1": 12,
236
238
  "016d1bb681929c2cc3f3": true,
237
239
  "0170beccaac4129d72a9": true
238
240
  },
@@ -255,7 +257,7 @@
255
257
  {
256
258
  "o": 1,
257
259
  "p": {
258
- "016d1bb681929c2cc3f1": 12,
260
+ "016d1bb681929c2cc3f1": 13,
259
261
  "016d1bb681929c2cc3f3": true,
260
262
  "0170beccaac4129d72a9": true
261
263
  },
@@ -278,7 +280,7 @@
278
280
  {
279
281
  "o": 1,
280
282
  "p": {
281
- "016d1bb681929c2cc3f1": 13,
283
+ "016d1bb681929c2cc3f1": 14,
282
284
  "016d1bb681929c2cc3f3": true,
283
285
  "0170beccaac4129d72a9": true
284
286
  },
@@ -294,7 +296,7 @@
294
296
  {
295
297
  "o": 1,
296
298
  "p": {
297
- "016d1bb681929c2cc3f1": 15,
299
+ "016d1bb681929c2cc3f1": 16,
298
300
  "016d1bb681929c2cc3f3": false,
299
301
  "0170beccaac4129d72a9": false
300
302
  },
@@ -422,7 +424,7 @@
422
424
  {
423
425
  "o": 1,
424
426
  "p": {
425
- "016d1bb681929c2cc3f1": 9,
427
+ "016d1bb681929c2cc3f1": 10,
426
428
  "016d1bb681929c2cc3f3": true,
427
429
  "0170beccaac4129d72a9": true
428
430
  },
@@ -457,6 +459,28 @@
457
459
  "01703376c4a81c0e9d92": "Trigger this event to force a re-rendering of the grid, even without any data changes. "
458
460
  },
459
461
  "t": "019241e87fc67ded8e47"
462
+ },
463
+ {
464
+ "o": 1,
465
+ "p": {
466
+ "ff023000000000000011": "Font Size"
467
+ },
468
+ "t": "01944053c9e791269bb3"
469
+ },
470
+ {
471
+ "o": 1,
472
+ "p": {
473
+ "016d1bb681929c2cc3f1": 9,
474
+ "016d1bb681929c2cc3f3": true,
475
+ "0170beccaac4129d72a9": true
476
+ },
477
+ "t": "01944053c9e8a38b0b92"
478
+ },
479
+ {
480
+ "o": 1,
481
+ "p": {
482
+ },
483
+ "t": "01944053c9e99d1d6d5f"
460
484
  }
461
485
  ],
462
486
  "optionalOperations": [
@@ -114,6 +114,12 @@
114
114
  "o": 4,
115
115
  "r": "019241e87fc5be4530d1"
116
116
  },
117
+ {
118
+ "l": "019154c4600798f105aa",
119
+ "m": "ff02200000000000000c",
120
+ "o": 4,
121
+ "r": "01944053c9e791269bb3"
122
+ },
117
123
  {
118
124
  "l": "019154c4600798f105aa",
119
125
  "m": "ff02200000000000000e",
@@ -234,6 +240,12 @@
234
240
  "o": 4,
235
241
  "r": "019241e87fc5be4530d1"
236
242
  },
243
+ {
244
+ "l": "019154c4600798f105aa",
245
+ "m": "ff02200000000000000f",
246
+ "o": 4,
247
+ "r": "01944053c9e791269bb3"
248
+ },
237
249
  {
238
250
  "l": "019154c478b5193da182",
239
251
  "m": "01703376c4a81c0e9d93",
@@ -1337,6 +1349,66 @@
1337
1349
  "m": "ff022000000000000000",
1338
1350
  "o": 4,
1339
1351
  "r": "01703376c4a81c0e9d90"
1352
+ },
1353
+ {
1354
+ "l": "01944053c9e791269bb3",
1355
+ "m": "ff022000000000000000",
1356
+ "o": 4,
1357
+ "r": "ff021000000000000005"
1358
+ },
1359
+ {
1360
+ "l": "01944053c9e791269bb3",
1361
+ "m": "ff02200000000000000d",
1362
+ "o": 4,
1363
+ "r": "ff021000000000000013"
1364
+ },
1365
+ {
1366
+ "l": "01944053c9e791269bb3",
1367
+ "m": "ff02200000000000000f",
1368
+ "o": 4,
1369
+ "r": "01944053c9e8a38b0b92"
1370
+ },
1371
+ {
1372
+ "l": "01944053c9e791269bb3",
1373
+ "m": "ff02200000000000000f",
1374
+ "o": 4,
1375
+ "r": "01944053c9e99d1d6d5f"
1376
+ },
1377
+ {
1378
+ "l": "01944053c9e8a38b0b92",
1379
+ "m": "016d1bb681929c2cc3f4",
1380
+ "o": 4,
1381
+ "r": "0164188f5cc0c205bc06"
1382
+ },
1383
+ {
1384
+ "l": "01944053c9e8a38b0b92",
1385
+ "m": "016d1bb681929c2cc3f5",
1386
+ "o": 4,
1387
+ "r": "01944053c9e791269bb3"
1388
+ },
1389
+ {
1390
+ "l": "01944053c9e8a38b0b92",
1391
+ "m": "019131fb930466a1ad7a",
1392
+ "o": 4,
1393
+ "r": "01944053c9e791269bb3"
1394
+ },
1395
+ {
1396
+ "l": "01944053c9e8a38b0b92",
1397
+ "m": "ff022000000000000000",
1398
+ "o": 4,
1399
+ "r": "016d1bb681929c2cc3f0"
1400
+ },
1401
+ {
1402
+ "l": "01944053c9e99d1d6d5f",
1403
+ "m": "01703376c4a81c0e9d93",
1404
+ "o": 4,
1405
+ "r": "01944053c9e791269bb3"
1406
+ },
1407
+ {
1408
+ "l": "01944053c9e99d1d6d5f",
1409
+ "m": "ff022000000000000000",
1410
+ "o": 4,
1411
+ "r": "01703376c4a81c0e9d90"
1340
1412
  }
1341
1413
  ],
1342
1414
  "optionalOperations": [
package/main-node.js CHANGED
@@ -515,13 +515,13 @@ __webpack_require__.r(__webpack_exports__);
515
515
  */
516
516
  function initBox($) {
517
517
  // Listen to the component position and size
518
- (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.combineLatest)([$.observe('X'), $.observe('Y'), $.observe('Width'), $.observe('Height')])
518
+ (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.combineLatest)([$.observe('Width'), $.observe('Height')])
519
519
 
520
520
  // Debounce the changes to avoid to many rerendering
521
521
  .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.throttleTime)(100, undefined, { leading: true, trailing: true }))
522
522
 
523
523
  // Set the final box
524
- .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.tap)(([x, y, width, height]) => $.set('_rgBox', { x, y, width, height })))
524
+ .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.tap)(([width, height]) => $.set('_rgBox', { width, height })))
525
525
 
526
526
  // Run
527
527
  .subscribe();
@@ -532,8 +532,7 @@ function initBox($) {
532
532
  * @return {!*}
533
533
  */
534
534
  function useBox($) {
535
- return (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_0__.useProperty)($, '_rgBox')
536
- ?? { x: $.get('X'), y: $.get('Y'), width: $.get('Width'), height: $.get('Height') };
535
+ return (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_0__.useProperty)($, '_rgBox') ?? {width: $.get('Width'), height: $.get('Height') };
537
536
  }
538
537
 
539
538
 
package/main-node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main-node.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;ACV8C;AACT;;AAEtB,mCAAmC,yCAAK;;AAEvD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,gBAAgB;AAC/B,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kDAAQ;AAC7B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;ACnCiC;;AAE/B,kCAAkC,yCAAK;;AAEtD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,WAAW;AAC1B,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC,eAAe,yBAAyB;AACxC,eAAe,yBAAyB;AACxC,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;ACxBiC;;AAE/B,oCAAoC,yCAAK;;AAExD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,WAAW;AAC1B,eAAe,gCAAgC;AAC/C,eAAe,gCAAgC;AAC/C,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;;ACtBiC;AACA;;AAE/B,qCAAqC,yCAAK;;AAEzD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA,6CAA6C,gDAAM;AACnD;AACA;;AAEA,qDAAa;;AAEb;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,uDAAuD,uBAAuB;AAC9E,gDAAgD,gDAAM;AACtD;AACA,KAAK;AACL;;AAEA;AACA,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gDAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpG4E;;AAE7D,8CAA8C,+CAAW;;AAExE;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,mBAAmB;AAClC,eAAe,SAAS;AACxB,eAAe,YAAY;AAC3B,eAAe,sBAAsB;AACrC;AACA;AACA,sBAAsB,+CAAW;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA,SAAS;AACT;AACA,yBAAyB,6CAAS;AAClC;AACA;AACA;AACA;AACA,yCAAyC,6CAAS;AAClD;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;;AClCkD;AAC1B;;AAEtB,4CAA4C,+CAAW;;AAEtE;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,mBAAmB;AAClC,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,eAAe,sBAAsB;AACrC,eAAe,kBAAkB;AACjC;AACA;AACA,8BAA8B,kDAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA,aAAa;AACb;AACA,6BAA6B,6CAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAS,6CAA6C,cAAc;AAC7F;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;ACxCkD;;AAEhD,yCAAyC,+CAAW;;AAEnE;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,mBAAmB;AAClC,eAAe,SAAS;AACxB,eAAe,OAAO;AACtB,eAAe,YAAY;AAC3B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA,SAAS;AACT;AACA,yBAAyB,6CAAS;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;;ACvCiC;AACA;;AAE/B,2BAA2B,yCAAK;;AAE/C;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,IAAI;AACnB,eAAe,QAAQ;AACvB,eAAe,sBAAsB;AACrC;AACA;AACA,mBAAmB,gDAAM;AACzB;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;;;;;AClBb;AACwD;AACV;AACA;;;;;;;;;;;;;;;;;;;;ACH9C;AAC6C;;AAE7C;AACwD;;AAExD;AACA;AACA,WAAW,eAAe;AAC1B;AACO;AACP;AACA,IAAI,mDAAa;;AAEjB;AACA,cAAc,kDAAY,mBAAmB,+BAA+B;;AAE5E;AACA,cAAc,yCAAG,8CAA8C,qBAAqB;;AAEpF;AACA;AACA;;AAEA;AACA,WAAW;AACX,YAAY;AACZ;AACO;AACP,WAAW,2DAAW;AACtB,aAAa;AACb;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACiE;;AAEjE;AACA,WAAW,eAAe;AAC1B;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA,wCAAwC,kDAAQ;AAChD;AACA,YAAY,8CAAI,wCAAwC,qBAAqB;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D,yBAAyB;AACtF;AACA;AACA,4EAA4E,2BAA2B;AACvG,6EAA6E,6BAA6B;AAC1G,sEAAsE,sCAAsC;AAC5G;AACA;AACA;AACA;AACA,QAAQ,+CAAK,iCAAiC,YAAY;AAC1D;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAa;AAC7C;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,IAAI,KAAK,kBAAkB;AACvG;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA,kBAAkB,MAAM,GAAG,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB;AACO;AACP,kBAAkB,aAAa,GAAG,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB;AACO;AACP,6BAA6B,mBAAmB;AAChD,gBAAgB,uCAAuC;AACvD;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,YAAY;AACZ;AACO;AACP,6BAA6B,mBAAmB;AAChD;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzSA;AACmC;;AAEnC;AACiC;AACe;AAC0C;AACnD;AACI;;AAE3C;AACA,aAAa,QAAQ;AACrB,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,GAAG;AACjB,cAAc,GAAG;AACjB,cAAc,aAAa;AAC3B;AACO;;AAEP;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA,QAAQ,8CAAI;AACZ;AACA;;AAEA;AACA;AACA,4BAA4B,6DAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA,gBAAgB,8CAAI,8BAA8B,kBAAkB,WAAW,gBAAgB;AAC/F;AACA;;AAEA;AACA;AACA,gBAAgB,gEAAwB;AACxC;AACA;;AAEA;AACA;AACA,gBAAgB,+DAAuB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,oDAAY;AACtC,0BAA0B,oDAAY;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,wDAAa;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAS;AACzC;AACA;;AAEA;AACA;AACA,gBAAgB,wDAAa;AAC7B;AACA,SAAS;;AAET;AACA;AACA;;;;;;;;;;;;;;;;;;AClHqC;;AAErC;AACA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACqC;AACQ;;AAE7C;AACgE;;AAEhE;AACyC;AACO;;AAEhD;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA,8BAA8B,GAAG;AACjC,8BAA8B,GAAG;;AAEjC;AACA,WAAW,mDAAa;AACxB;AACA;AACA,kBAAkB,yCAAG,6BAA6B,sDAAW;AAC7D,kBAAkB,0DAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,kDAAkD;AACzG;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA,iDAAiD,+CAAW;AAC5D;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP,4BAA4B,2DAAW;AACvC;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;A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","sources":["webpack://@olympeio-extensions/reactgrid/webpack/universalModuleDefinition","webpack://@olympeio-extensions/reactgrid/./src/common/RGCreateColumnConfig.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeMetadata.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeProperties.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGroupTuplesByIndexes.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForCloudObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForJSONString.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGWrapObject.js","webpack://@olympeio-extensions/reactgrid/./src/common/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/box.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cells.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/changes.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cloudobjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/columns.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/data.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/rows.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/scroll.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/triggers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/wrappers.js","webpack://@olympeio-extensions/reactgrid/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"jsonpath-plus\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"react\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"rxjs\"","webpack://@olympeio-extensions/reactgrid/external umd \"olympe\"","webpack://@olympeio-extensions/reactgrid/webpack/bootstrap","webpack://@olympeio-extensions/reactgrid/webpack/runtime/compat get default export","webpack://@olympeio-extensions/reactgrid/webpack/runtime/define property getters","webpack://@olympeio-extensions/reactgrid/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/reactgrid/webpack/runtime/make namespace object","webpack://@olympeio-extensions/reactgrid/./src/main-node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/reactgrid\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/reactgrid\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","import { Brick, registerBrick } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGCreateColumnConfig extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {number} rank\n * @param {string} propertyPath\n * @param {string} header\n * @param {number} width\n * @param {string} type\n * @param {string|!Object} options\n * @param {boolean} editable\n * @param {boolean} resizable\n * @param {number} level\n * @param {function(!Object)} setObject\n */\n update(_$, [rank, propertyPath, header, width, type, options, editable, resizable, level], [setObject]) {\n setObject({\n Rank: rank,\n 'Property Path': propertyPath,\n Header: header,\n Width: width,\n Type: type,\n Options: fromJson(options)[0],\n Editable: editable,\n Resizable: resizable,\n Level: level\n });\n }\n}\n\nregisterBrick('01921d9038d9eb72f609', RGCreateColumnConfig);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeMetadata extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object)} setNewCell\n * @param {function(!Object)} setPreviousCell\n * @param {function(string|number)} setRowId\n * @param {function(string|number)} setColumnId\n * @param {function(string)} setType\n */\n update(_$, [change], [setNewCell, setPreviousCell, setRowId, setColumnId, setType]) {\n setNewCell(change.metadata.newCell);\n setPreviousCell(change.metadata.previousCell);\n setRowId(change.metadata.rowId);\n setColumnId(change.metadata.columnId);\n setType(change.metadata.type);\n }\n}\n\nregisterBrick('01920a4d4d8390252c91', RGGetChangeMetadata);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeProperties extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object|!CloudObject)} setObject\n * @param {function(!Object|!CloudObject)} setProperty\n * @param {function(!*)} setNewValue\n * @param {function(!*)} setOldValue\n */\n update(_$, [change], [setObject, setProperty, setNewValue, setOldValue]) {\n setObject(change.object);\n setProperty(change.property);\n setNewValue(change.newValue);\n setOldValue(change.oldValue);\n }\n}\n\nregisterBrick('0192055d7857bd08279c', RGGetChangeProperties);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGGroupTuplesByIndexes extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} data\n * @param {string} indexes\n * @param {function(!Array)} setGroupedData\n */\n update(_$, [data, indexes], [setGroupedData]) {\n // Get the indexes and make the grouping recursively\n const _indexes = indexes.split(',').map(index => parseInt(index));\n setGroupedData(groupBy(data.map(d => rgWrap(d)), _indexes, 0));\n }\n}\n\nregisterBrick('0192288806aa3cc82b95', RGGroupTuplesByIndexes);\n\n/**\n * Group data by indexes, for the given level\n * @param {!Array} wrappers\n * @param {!Array<number>} indexes\n * @param {number} level\n * @return {!Array}\n */\nfunction groupBy(wrappers, indexes, level) {\n // End of recursion\n if(level >= indexes.length || !Array.isArray(wrappers)) {\n return wrappers;\n }\n\n // Get the current working index\n const index = indexes[level] - level;\n\n // Group the data in a Map\n const groupedWrappers = wrappers.reduce((parents, wrapper) => {\n // Split the tuple into parts\n const [wrapped, child] = splitTuple(wrapper, index, level);\n const key = wrapped.rgGetKey();\n\n // If this key is not in a group yet\n if(!parents.has(key)) {\n // Create the new group\n parents.set(key, wrapped);\n }\n\n // If there is a child, add it to the group\n // (group the child itself also)\n if(child) {\n const parent = parents.get(key);\n parent.rgChildren.push(child);\n }\n\n // Done\n return parents;\n }, new Map());\n\n // Apply the grouping on the children\n return Array.from(groupedWrappers.values()).map(({ rgChildren, ...others }) => ({\n rgChildren: groupBy(rgChildren.map(c => rgWrap(c, level + 1)), indexes, level + 1),\n ...others\n }));\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {number} index \n * @param {number} level \n * @return {[!RGWrapper, *]}\n */\nfunction splitTuple(wrapper, index, level) {\n // Real tuple case\n if(wrapper._rgType === 'tuple') {\n // Extract the info\n const tuple = wrapper.rgObject;\n const wrapped = rgWrap(tuple[index], level);\n const before = tuple.slice(0, index);\n const after = tuple.slice(index + 1);\n const child = [...before, ...after];\n \n // Handle all cases\n if(child.length > 1) {\n return [wrapped, child];\n }\n else if(child.length > 0) {\n return [wrapped, child[0]];\n }\n else {\n return [wrapped, null];\n }\n }\n\n // Not a tuple case\n else {\n return [wrapper, null];\n }\n}\n","import { ActionBrick, registerBrick, Transaction, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForCloudObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} executeAsLarge\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, executeAsLarge], [forwardEvent, setErrorFlow]) {\n const t = new Transaction();\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n t.update(change.object, change.property, change.newValue);\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n const promise = executeAsLarge ? t.executeAsLarge() : t.execute();\n promise.then(forwardEvent)\n .catch(error => setErrorFlow(ErrorFlow.create(error.message, 0)));\n }\n}\n\nregisterBrick('01920a8134e1cf0fa551', RGProcessChangesForCloudObjects);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGProcessChangesForJSONString extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {string} json\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n * @param {function(string)} setNewJson\n */\n update(_$, [changes, json], [forwardEvent, setErrorFlow, setNewJson]) {\n const [data, error] = fromJson(json);\n if(!error) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n data[change.metadata.rowId][change.property] = change.newValue;\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n setNewJson(JSON.stringify(data));\n forwardEvent();\n }\n else {\n setErrorFlow(ErrorFlow.create(`input 'json' is not valid, error: ${error.message}`, 0));\n }\n }\n}\n\nregisterBrick('01921e064dbe25faec55', RGProcessChangesForJSONString);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} inPlace\n * @param {Array} data\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, inPlace, data], [forwardEvent, setErrorFlow]) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(!(change.metadata.newCell.validator?.(change.newValue) ?? true)) {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n if(inPlace) {\n changes.forEach(change => {\n change.object[change.property] = change.newValue;\n });\n }\n else {\n changes.forEach(change => {\n data[change.metadata.rowId][change.property] = change.newValue;\n });\n }\n forwardEvent();\n }\n}\n\nregisterBrick('01921e0d2b383c95bd22', RGProcessChangesForObjects);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGWrapObject extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!*} object\n * @param {number} level\n * @param {function(!RGWrapper)} setWrapped\n */\n update(_$, [object, level], [setWrapped]) {\n setWrapped(rgWrap(object, level));\n }\n}\n\nregisterBrick('019232c3d1873de0d259', RGWrapObject);\n","// Re-export\nexport { rgWrap, RGWrapper } from './internal/wrappers';\nexport { RGChange } from './internal/changes';\nexport { fromJson } from './internal/helpers';\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, throttleTime } from 'rxjs';\n\n/**\n * Init the bounding box\n * @param {!BrickContext} $ \n */\nexport function initBox($) {\n // Listen to the component position and size\n combineLatest([$.observe('X'), $.observe('Y'), $.observe('Width'), $.observe('Height')])\n\n // Debounce the changes to avoid to many rerendering\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n\n // Set the final box\n .pipe(tap(([x, y, width, height]) => $.set('_rgBox', { x, y, width, height })))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useBox($) {\n return useProperty($, '_rgBox')\n ?? { x: $.get('X'), y: $.get('Y'), width: $.get('Width'), height: $.get('Height') };\n}\n\n","// Internal\nimport { fromJson, validateEmail, error, warn } from './helpers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initCells($) {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n}\n\n/**\n * Generate a cell for the defined wrapper/column\n * @param {!BrickContext} $\n * @param {!RGWrapper} wrapper\n * @param {number} rowId\n * @param {!Object} column\n * @param {boolean} cellEdition\n * @return {!Object}\n */\nexport function generateCell($, wrapper, rowId, column, cellEdition) {\n try {\n // Get the cell value\n const value = wrapper.__rgGetValue(column['Property Path'] ?? '');\n\n // Get the options\n const [options, optionsError] = fromJson(column.Options);\n if(optionsError) {\n warn(`cannot parse column options, error: ${optionsError.message}`);\n }\n const validator = options.validator ? s => new RegExp(options.validator).test(s) : undefined;\n const common = {\n nonEditable: cellEdition === 'DISABLED' || (cellEdition === 'USE CONFIG' && !column.Editable),\n style: getCellStyle($)\n };\n\n // Generate the cell depending on the type\n switch(column.Type) {\n case 'TEXT': return generateTextCell(value, options, common, column, validator);\n case 'NUMBER': return generateNumberCell(value, options, common);\n case 'EMAIL': return generateEmailCell(value, common, validator);\n case 'DATE': \n case 'TIME': return generateDateTimeCell(value, options, common, column);\n case 'CHECKBOX': return generateCheckboxCell(value, options, common);\n case 'DROPDOWN': return generateDropdownCell(value, options, common, column, $, rowId);\n case 'HEADER': return generateHeaderCell(value, options, common);\n case 'CHEVRON': return generateChevronCell(value, options, common, wrapper, $);\n\n // AUTO case\n default:\n if(value instanceof Date) {\n return generateCell($, wrapper, rowId, { ...column, Type: 'DATE' }, cellEdition);\n }\n switch(typeof value) {\n case 'number': return generateCell($, wrapper, rowId, { ...column, Type: 'NUMBER' }, cellEdition);\n case 'boolean': return generateCell($, wrapper, rowId, { ...column, Type: 'CHECKBOX' }, cellEdition);\n default: return generateCell($, wrapper, rowId, { ...column, Type: 'TEXT', _cast: true }, cellEdition);\n }\n }\n }\n catch(err) {\n error(`cannot generate cell, error: ${err.message}`);\n return errorCell();\n }\n}\n\n/**\n * Get the cell value, depending on its type\n * @param {!Object} cell\n * @return {*}\n */\nexport function getCellValue(cell) {\n switch(cell.type) {\n case 'number': return cell.value;\n case 'date': return cell.date;\n case 'time': return cell.time;\n case 'checkbox': return cell.checked;\n case 'dropdown': return cell.selectedValue;\n default: return cell.text;\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {function(string):boolean} validator \n * @return {!TextCell} \n */\nfunction generateTextCell(value, options, common, column, validator) {\n return {\n type: 'text',\n text: (column._cast ? String(value ?? '') : value ?? ''),\n placeholder: options.placeholder,\n validator: validator,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!NumberCell} \n */\nfunction generateNumberCell(value, options, common) {\n return {\n type: 'number',\n value: value,\n format: new Intl.NumberFormat(options.locale, options.format),\n nanToZero: options.nanToZero,\n hideZero: options.hideZero,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} common \n * @param {function(string):boolean} validator \n * @return {!EmailCell} \n */\nfunction generateEmailCell(value, common, validator) {\n return {\n type: 'email',\n text: value ?? '',\n validator: validator ?? validateEmail,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @return {!DateCell|!TimeCell} \n */\nfunction generateDateTimeCell(value, options, common, column) {\n const type = column.Type.toLowerCase();\n return {\n type: type,\n [type]: value instanceof Date ? value : new Date(value),\n format: new Intl.DateTimeFormat(options.locale, options.format ?? { [`${type}Style`]: 'short' }),\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!CheckboxCell} \n */\nfunction generateCheckboxCell(value, options, common) {\n return {\n type: 'checkbox',\n checked: Boolean(value ?? false),\n checkedText: options.checkedText,\n uncheckedText: options.uncheckedText,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {!BrickContext} $ \n * @param {number} rowId\n * @return {!DropdownCell} \n */\nfunction generateDropdownCell(value, options, common, column, $, rowId) {\n const id = `${rowId}.${column.columnId}`;\n const isOpen = id === $.get('_rgDropdownIsOpen');\n const inputValue = isOpen ? $.get('_rgDropdownInputValue') : '';\n return {\n type: 'dropdown',\n selectedValue: value,\n values: options.values ?? [],\n isDisabled: options.isDisabled,\n isOpen: isOpen,\n inputValue: inputValue,\n ...common\n };\n}\n\n/**\n * Handle the dropdowns internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n */\nexport function handleDropdownCellChange($, change) {\n const id = `${change.rowId}.${change.columnId}`;\n if(change.newCell.isOpen && !change.newCell.isDisabled) {\n $.set('_rgDropdownIsOpen', id);\n $.set('_rgDropdownInputValue', change.newCell.inputValue);\n }\n else {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!HeaderCell} \n */\nfunction generateHeaderCell(value, options, common) {\n return {\n type: 'header',\n text: value ?? options.text ?? '',\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!RGWrapper} wrapper\n * @param {!BrickContext} $ \n * @return {!ChevronCell} \n */\nfunction generateChevronCell(value, options, common, wrapper, $) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n if(!$.has(id)) {\n $.set(id, { isExpanded: options.isExpanded ?? false });\n }\n const state = $.get(id);\n return {\n type: 'chevron',\n text: value ?? options.text ?? '',\n indent: options.indent,\n hasChildren: wrapper.rgChildren.length > 0,\n ...state,\n ...common\n };\n}\n\n/**\n * Handle the chevrons internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n * @param {!RGWrapper} wrapper \n */\nexport function handleChevronCellChange($, change, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n $.set(id, { isExpanded: change.newCell.isExpanded });\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!RGWrapper} wrapper \n * @return {boolean}\n */\nexport function isChevronCellExpanded($, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n return $.get(id)?.isExpanded ?? false;\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!Object}\n */\nexport function getCellStyle($) {\n const borderStyle = { \n color: $.get('Border Color'),\n width: $.get('Border Width') \n };\n return {\n background: $.get('Default Color'),\n border: {\n left: borderStyle,\n top: borderStyle,\n right: borderStyle,\n bottom: borderStyle\n }\n };\n}\n\n/**\n * @return {!TextCell}\n */\nfunction errorCell() {\n return {\n type: 'text',\n text: '!ERROR',\n nonEditable: true,\n style: {\n color: 'red'\n }\n };\n}\n","// Olympe\nimport { ErrorFlow } from 'olympe';\n\n// Internal\nimport { warn } from './helpers';\nimport { getFlattenWrappers } from './wrappers';\nimport { handleDropdownCellChange, handleChevronCellChange, getCellValue } from './cells';\nimport { getColumns } from './columns';\nimport { triggerReload } from './triggers';\n\n/**\n * @typedef {Object} RGChange\n * @property {(!Object|!CloudObject)} object\n * @property {(string|!PropertyModel)} property\n * @property {*} oldValue\n * @property {*} newValue\n * @property {!CellChange} metadata\n */\nexport const RGChange = {};\n\n/**\n * Process the changes event from the reactgrid, and forward it to a lambda\n * @param {!BrickContext} $ \n * @param {!Array} changes \n */\nexport function handleOnCellsChanged($, changes) {\n // Only process changes when a lambda is defined\n const processor = $.get('Process Changes');\n if(!processor) {\n warn('no change is processed, the `Process Changes` lambda is no defined');\n return;\n }\n\n // Adapt the changes to olympe\n let internalStateChanged = false;\n const flattenWrappers = getFlattenWrappers($);\n const _changes = changes\n // Transform the changes to work well with Olympe\n .map(change => {\n // Get the required data\n const wrapper = flattenWrappers[change.rowId].wrapper;\n const columns = getColumns($, wrapper._rgLevel);\n const column = columns.find(c => c.Rank === change.columnId);\n \n // Guard\n if(column === undefined) {\n warn(`no column found for level ${wrapper._rgLevel} and rank ${change.columnId}`);\n return null;\n }\n\n // Handle dropdowns states\n if(change.type === 'dropdown') {\n handleDropdownCellChange($, change);\n internalStateChanged = true;\n }\n\n // Handle chevrons states\n else if(change.type === 'chevron') {\n handleChevronCellChange($, change, wrapper);\n internalStateChanged = true;\n }\n\n // Create the RGChange object\n return {\n object: wrapper.__rgGetObject(column['Property Path']),\n property: wrapper.__rgGetProperty(column['Property Path']),\n oldValue: getCellValue(change.previousCell),\n newValue: getCellValue(change.newCell),\n metadata: change\n };\n })\n // Filter out null change\n .filter(change => change !== null)\n // Filter out the dropdown change that are only about the internal state\n .filter(change => change.metadata.type !== 'dropdown' || change.newValue !== change.oldValue)\n // Filter out the chevron change that are only about the internal state\n .filter(change => change.metadata.type !== 'chevron' || change.newValue !== change.oldValue)\n // Filter out changes with no value, only if there is change with value -> hack to fix paste from excel until a better solution\n .filter((change, _index, all) => change.newValue !== \"\" || all.every(c => c.newValue === \"\"));\n\n // Guard\n if(_changes.length === 0) {\n if(internalStateChanged) {\n triggerReload($);\n }\n return;\n }\n\n // Call the lambda\n const [iFlow, iChanges] = processor.getInputs();\n const [oFlow, oErrorFlow] = processor.getOutputs();\n const processor$ = $.runner(processor);\n processor$.set(iChanges, _changes);\n processor$.trigger(iFlow);\n\n // Wait for the end of it\n Promise.race([\n processor$.waitFor(oFlow), \n processor$.waitFor(oErrorFlow)\n ])\n .then(value => {\n // In case of error, throw it again\n if(value instanceof ErrorFlow) {\n $.throw(value);\n }\n\n // Success\n else {\n triggerReload($);\n }\n })\n\n // Free the lambda\n .finally(() => processor$.destroy());\n}\n","import { CloudObject } from 'olympe';\n\n/**\n * Find an object property based on its name\n * @param {!CloudObject} object\n * @param {string} path\n * @return {!PropertyModel}\n */\nexport function findObjectProperty(object, path) {\n const mapping = getModelPropertiesMapping(object);\n return mapping.get(path);\n}\n\n/**\n * Get all properties name of an object\n * @param {!CloudObject} object\n * @return {!Array<string>}\n */\nexport function getModelPropertiesName(object) {\n const mapping = getModelPropertiesMapping(object);\n return Array.from(mapping.keys());\n}\n\n/**\n * Get an object model properties mapping\n * @param {!CloudObject} object\n * @return {!Map<string, PropertyModel>}\n */\nfunction getModelPropertiesMapping(object) {\n const model = object.getModel();\n if(!modelProperties.has(model.getTag())) {\n const mapping = new Map();\n model.query()\n .follow(CloudObject.propertyRel)\n .executeFromCache()\n .forEach(property => mapping.set(property.name(), property));\n modelProperties.set(model.getTag(), mapping);\n }\n return modelProperties.get(model.getTag());\n}\n\n/**\n * Singleton map for model properties mapping (name <-> instance)\n * @type {!Map<string, !Map<string, PropertyModel>>}\n */\nconst modelProperties = new Map();\n\n","// Olympe\nimport { CloudObject } from 'olympe';\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { defaultWrap } from './wrappers';\nimport { reorderObject, warn } from './helpers';\n\n/**\n * Init the columns\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @return {!Observable}\n */\nexport function initFilteredColumns($, _wrappers) {\n // Internal states\n $.set('_rgColumnWidth', {}); // Column width overrides\n $.set('_rgColumnOrder', {}); // Column order (rank) overrides\n\n // Listen to the config and the _wrappers first object properties\n return combineLatest([\n $.observe('Config', false),\n _wrappers\n .pipe(map(wrappers => (wrappers[0] ?? defaultWrap()).__rgProperties()))\n .pipe(distinctUntilChanged()),\n $.observe('Enable Column Reordering', false),\n $.observe('_rgColumnWidth'),\n $.observe('_rgColumnOrder'),\n $.observe('Default Width')\n ])\n\n // Build the columns\n .pipe(map(([config, properties, ...others]) => {\n // Config is set by the user\n if (config) {\n return [config, ...others];\n }\n\n // Config is auto-generated from the data\n if (properties.length > 0) {\n return [\n properties.map((path, index) => ({ 'Property Path': path, Type: 'AUTO', Rank: index })),\n ...others\n ];\n }\n\n // Empty config\n return [[], ...others];\n }))\n\n // Transform to an array of objects\n .pipe(map(([config, reorderableColumns, columnWidth, columnOrder, defaultWidth]) => {\n return config\n .map(column => column instanceof CloudObject ? column.toObject(true, true) : column)\n .sort((a, b) => getColumnRank(a, columnOrder) - getColumnRank(b, columnOrder))\n .map(column => generateColumn(column, reorderableColumns, columnWidth, defaultWidth));\n }))\n\n // Cache the filtered columns (per level) for quick access\n .pipe(map(columns => {\n const filteredColumns = filterLevelledColumns(columns);\n $.set('_rgFilteredColumns', filteredColumns);\n return filteredColumns;\n }));\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!*}\n */\nexport function useColumns($) {\n const filteredColumns = useProperty($, '_rgFilteredColumns');\n return filteredColumns?.get(0) ?? [];\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} level \n * @return {!Array}\n */\nexport function getColumns($, level) {\n const filteredColumns = $.get('_rgFilteredColumns');\n return filteredColumns?.get(level ?? 0) ?? [];\n}\n\n/**\n * Handle the resizing of columns\n * @param {!BrickContext} $ \n * @param {string} columnId \n * @param {number} width \n */\nexport function handleOnColumnResized($, columnId, width) {\n const currentCols = { ...$.get('_rgColumnWidth') };\n currentCols[columnId] = width;\n $.set('_rgColumnWidth', currentCols);\n}\n\n/**\n * @param {!Array} columns\n * @return {!Map<number, !Array>}\n */\nfunction filterLevelledColumns(columns) {\n // Group the columns by rank and save all levels\n const levels = new Set();\n const perRank = columns.reduce((acc, cur) => {\n const rank = cur.Rank ?? 0;\n if(!acc.has(rank)) {\n acc.set(rank, []);\n }\n acc.get(rank).push(cur);\n levels.add(cur.Level ?? 0);\n return acc;\n }, new Map());\n const allRanks = Array.from(perRank.keys());\n\n // Get the columns for each level\n const filterLevel = level => {\n return allRanks.map(rank => {\n const rankColumns = perRank.get(rank);\n const atLevel = rankColumns.find(column => (column.Level ?? 0) === level);\n const generic = rankColumns.find(column => (column.Level ?? 0) === -1);\n return atLevel ?? generic ?? rankColumns[0];\n });\n };\n\n // Return all levels\n return Array.from(levels.values()).reduce((acc, cur) => acc.set(cur, filterLevel(cur)), new Map());\n}\n\n/**\n * @param {!Object} column\n * @param {boolean} reorderableColumns\n * @param {!Object} columnWidth\n * @param {number} defaultWidth\n * @return {!Object}\n */\nfunction generateColumn(column, reorderableColumns, columnWidth, defaultWidth) {\n if(typeof column.Rank !== 'number') {\n warn(`column rank is missing, using 0 as fallback (column: ${column.Header ?? column['Property Path']})`);\n }\n const rank = column.Rank ?? 0;\n return {\n columnId: rank,\n reorderable: reorderableColumns,\n width: columnWidth?.[rank] ?? column.Width ?? defaultWidth ?? 150,\n resizable: column.Resizable,\n Level: column.Level ?? 0,\n ...column\n };\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} targetColumnId\n * @param {!Array} columnIds\n */\nexport function handleOnColumnsReordered($, targetColumnId, columnIds) {\n const columns = getColumns($, 0);\n const ranks = columns.map(column => column.Rank);\n const targetIndex = ranks.indexOf(targetColumnId);\n const movingIndexes = columnIds.map(id => ranks.indexOf(id));\n const newRanks = reorderObject(ranks, movingIndexes, targetIndex);\n const newOrder = newRanks.reduce((acc, cur, index) => ({ [cur]: index, ...acc }), {});\n $.set('_rgColumnOrder', newOrder);\n}\n\n/**\n * @param {!Object} column\n * @param {!Object} overrides\n * @return {number}\n */\nfunction getColumnRank(column, overrides) {\n return overrides[column.Rank] ?? column.Rank;\n}\n","// Olympe\nimport { QueryResult } from 'olympe';\n\n// Rxjs\nimport { tap, combineLatest, map } from 'rxjs';\n\n// Internal\nimport { warn, fromJson } from './helpers';\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _reload\n * @return {!Observable}\n */\nexport function initData($, _reload) {\n // Listen to the data and for any refresh\n return combineLatest([\n $.observe('Data', false),\n _reload\n ])\n\n // Default values\n .pipe(map(([data]) => data ? data : []))\n\n // Transform to an array\n .pipe(map(data => {\n // The data is already an array\n if (Array.isArray(data)) {\n return data;\n }\n\n // QueryResult case\n if (data instanceof QueryResult) {\n return data.toArray();\n }\n\n // JSON case\n if (typeof data === 'string') {\n const [json, error] = fromJson(data);\n if (!error && Array.isArray(json)) {\n return json;\n }\n }\n\n // Type is not supported\n warn('the `Data` property is not convertible to an array');\n return [];\n }))\n \n // Set the transformed data into _Data\n .pipe(tap(data => $.set('_rgData', data)));\n}\n\n","// Olympe\nimport { getLogger } from '@olympeio/core';\n\n/**\n * Parse a json string without throwing an exception\n * @param {string|!Object} json \n * @return {!Array}\n */\nexport function fromJson(json) {\n try {\n return typeof json === 'string'\n ? [JSON.parse(json), null]\n : [json ?? {}, null];\n }\n catch(err) {\n return [{}, err];\n }\n}\n\n/**\n * Warn message with a default format\n * @param {string} message \n */\nexport function warn(message) {\n getLogger('ReactGrid').warn(`ReactGrid: ${message}`);\n}\n\n/**\n * Error message with a default format\n * @param {string} message \n */\nexport function error(message) {\n getLogger('ReactGrid').error(`ReactGrid: ${message}`);\n}\n\n/**\n * Make a jsonpath-plus path readable\n * @param {string} path\n * @return {string} \n */\nexport function trimPath(path) {\n if(path.startsWith('$') || path.startsWith('.')) {\n return trimPath(path.substring(1));\n }\n if(path.startsWith('[')) {\n return trimPath(path.substring(path.indexOf(']') + 1));\n }\n return path;\n}\n\n/**\n * Test for email format\n * @param {string} text\n * @return {boolean}\n */\nexport function validateEmail(text) {\n return emailRegex.test(text);\n}\n\n// Email regex (https://emailregex.com/)\nconst emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n * Reorders elements in an object by moving specific elements to a new position.\n *\n * @param {Array} values - The original array to reorder.\n * @param {number[]} ids - An array of indices representing the elements to move.\n * @param {number} to - The target index where the selected elements should be moved.\n * @return {Object} - A new object with the specified elements reordered.\n */\nexport function reorderObject(values, ids, to) {\n const reorderedValues = [...values];\n\n // Get elements to move based on the ids\n const elementsToMove = ids.map(index => reorderedValues[index]);\n ids.sort((a, b) => b - a).forEach(index => {\n reorderedValues.splice(index, 1);\n });\n\n // Adjust the target id based on moving forward or backward\n const adjustedTargetId = to >= Math.min(...ids) ? to - elementsToMove.length + 1 : to;\n\n // Insert the elements in target id\n if (elementsToMove.length > 0) {\n reorderedValues.splice(adjustedTargetId, 0, ...elementsToMove);\n }\n\n return reorderedValues;\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { generateCell, getCellStyle } from './cells';\nimport { trimPath } from './helpers';\nimport { getColumns } from './columns';\nimport { getFlattenWrappers } from './wrappers';\n\n/**\n * Init the rows\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @param {!Observable} _filteredColumns \n */\nexport function initRows($, _wrappers, _filteredColumns) {\n // Listen to the _data and the _columns\n combineLatest([\n _wrappers,\n _filteredColumns\n .pipe(distinctUntilChanged(undefined, filteredColumns => {\n // Avoid updating the rows for some changes on the column config: width, resizable, etc.\n return Array.from(filteredColumns.values())\n .flat()\n .map(c => `${c.Header}${c['Property Path']}${c.Type}${c.Options}${c.Rank}${c.Editable}${c.Level}`)\n .join('');\n })),\n $.observe('Row Height', false),\n $.observe('Cell Edition', false),\n $.observe('Disable Header Row', false),\n $.observe('Default Color', false),\n $.observe('Border Color', false),\n $.observe('Border Width', false)\n ])\n\n // Use the reactgrid format for rows\n .pipe(map(([_wrappers, _filteredColumns, rowHeight, cellEdition, removeHeaderRow]) => {\n // Optional header row\n const headerRow = removeHeaderRow ? [] : [{\n rowId: '_header',\n height: rowHeight,\n cells: getColumns($, 0).map(column => {\n const text = column.Header ?? trimPath(column['Property Path'] ?? '');\n const finalText = column.Level === 0 ? text : '';\n return { type: 'header', text: finalText, style: getCellStyle($) };\n })\n }];\n\n // Generate all the rows\n const rows = getFlattenWrappers($).map(({ wrapper, level }, index) => {\n const rowColumns = getColumns($, level);\n return generateRow(wrapper, rowColumns, index, $, rowHeight, cellEdition);\n });\n\n // Final rows\n return [headerRow, rows].flat();\n }))\n\n // Set the final rows\n .pipe(tap(rows => $.set('_rgRows', rows)))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useRows($) {\n return useProperty($, '_rgRows') ?? [];\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {!Array} columns \n * @param {number} index \n * @param {!BrickContext} $ \n * @param {number} rowHeight \n * @param {boolean} cellEdition \n * @return {!Object}\n */\nfunction generateRow(wrapper, columns, index, $, rowHeight, cellEdition) {\n return { \n rowId: index,\n height: rowHeight,\n cells: columns.map(column => generateCell($, wrapper, index, column, cellEdition))\n };\n}\n","// React\nimport { useEffect } from 'react';\nimport { tap, interval } from 'rxjs';\n\n// Internal\nimport { triggerRedraw } from './triggers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initScroll($) {\n // Auto-redraw on scroll (fix fast scrolling issue)\n $.set('_rgLastScroll', 0);\n $.set('_rgLastScrollRedraw', 0);\n interval(1000)\n .pipe(tap(() => {\n if($.get('_rgLastScroll') !== $.get('_rgLastScrollRedraw')) {\n $.set('_rgLastScrollRedraw', $.get('_rgLastScroll'));\n triggerRedraw($);\n }\n }))\n .subscribe();\n}\n\n/**\n * @param {!BrickContext} $\n * @param {!*} ref\n */\nexport function useRedrawAfterScroll($, ref) {\n const registerScroll = () => $.set('_rgLastScroll', Date.now());\n useEffect(() => {\n if (ref.current) {\n ref.current.parentElement.style.overflow = 'visible';\n ref.current.addEventListener('scroll', registerScroll);\n }\n return () => {\n if (ref.current) {\n ref.current.removeEventListener('scroll', registerScroll);\n }\n };\n }, [ref]);\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n/**\n * @param {!BrickContext} $\n * @return {!Observable}\n */\nexport function initTriggers($) {\n return $.observe('Reload', false);\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function useRedraw($) {\n useProperty($, 'Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerRedraw($) {\n $.trigger('Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerReload($) {\n $.trigger('Reload');\n}\n\n","// Olympe\nimport { CloudObject } from 'olympe';\n\n// Rxjs\nimport { tap, map } from 'rxjs';\n\n// Json\nimport { JSONPath } from 'jsonpath-plus';\n\n// Internal\nimport { warn, trimPath } from './helpers';\nimport { getModelPropertiesName, findObjectProperty } from './cloudobjects';\nimport { isChevronCellExpanded } from './cells';\n\n/**\n * @typedef RGWrapper\n * @property {!*} rgObject - The wrapped object\n * @property {!Array} rgChildren - Potential children of the object\n * @property {function():string} rgGetKey - Get a unique key\n * @property {string} _rgType - The type of the wrapped object\n * @property {number} _rgLevel - The level in the hierarchy\n * @property {function():!Array<string>} __rgProperties - Get all the properties name\n * @property {function(string):!*} __rgGetProperty - Get a property by its path\n * @property {function(string):!*} __rgGetValue - Get a value for a path\n * @property {function(string):!*} __rgGetObject - Get the object for a path\n */\nexport const RGWrapper = {};\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _data \n * @return {!Observable}\n */\nexport function initWrappers($, _data) {\n // Observe the data\n return _data\n\n // Wrap all objects\n .pipe(map(data => data.map(d => rgWrap(d))))\n\n // Set the transformed data into _Data\n .pipe(tap(wrappers => $.set('_rgWrappers', wrappers)));\n}\n\n/**\n * @param {!*} object \n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function rgWrap(object, level) {\n // Already wrapped -> rewrap missing properties\n if(object.hasOwnProperty('rgObject')) {\n const missingProps = ['rgChildren', 'rgGetKey', '_rgType', '_rgLevel',\n '__rgProperties', '__rgGetProperty', '__rgGetValue',\n '__rgGetObject'].filter(prop => !object.hasOwnProperty(prop));\n if(missingProps.length > 0) {\n const wrapped = rgWrap(object.rgObject, level ?? 0);\n return missingProps.reduce((acc, cur) => {\n acc[cur] = wrapped[cur];\n return acc;\n }, object);\n }\n return object;\n }\n\n // Tuple case\n if(Array.isArray(object)) {\n return wrapTuple(object, level ?? 0);\n }\n\n // CloudObject case\n if(object instanceof CloudObject) {\n return wrapCloudObject(object, level ?? 0);\n }\n\n // Object case\n if(typeof object === 'object') {\n return wrapObject(object, level ?? 0);\n }\n\n // Wrong type\n warn('some data are not of the following type: Object, CloudObject, Array');\n return defaultWrap(level ?? 0);\n}\n\n/**\n * @param {!Object} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => Object.values(object).join('.'),\n _rgType: 'object',\n _rgLevel: level,\n __rgProperties: () => Object.keys(object),\n __rgGetProperty: path => trimPath(path),\n __rgGetValue: path => JSONPath({ path, json: object, wrap: false }),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!CloudObject} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapCloudObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => object.getTag(),\n _rgType: 'cloudobject',\n _rgLevel: level,\n __rgProperties: () => getModelPropertiesName(object),\n __rgGetProperty: path => findObjectProperty(object, path),\n __rgGetValue: path => object.get(findObjectProperty(object, path)),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!Array} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapTuple(object, level) {\n const wrapped = object.map(o => rgWrap(o, level + 1));\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => `[${wrapped.map(w => w.rgGetKey()).join('.')}]`,\n _rgType: 'tuple',\n _rgLevel: level,\n __rgProperties: () => wrapped.map((w, i) => w.__rgProperties().map(p => `$[${i}].${p}`)).flat(),\n __rgGetProperty: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetProperty(subPath);\n },\n __rgGetValue: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetValue(subPath);\n },\n __rgGetObject: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetObject(subPath);\n }\n };\n}\n\n/**\n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function defaultWrap(level) {\n return wrapObject({}, level ?? 0);\n}\n\n/**\n * @param {string} path \n * @returns {![number, string]} \n */\nfunction splitTuplePath(path) {\n const endBracket = path.indexOf(']');\n const index = parseInt(path.substring(path.indexOf('[') + 1, endBracket));\n const subPath = trimPath(path.substring(endBracket + 1));\n return [index, subPath];\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!Array} wrappers \n * @param {number} level \n * @return {!Array}\n */\nfunction flatten($, wrappers, level) {\n return wrappers.flatMap(wrapper => {\n const isExpanded = isChevronCellExpanded($, wrapper);\n const children = isExpanded ? flatten($, wrapper.rgChildren, level + 1) : [];\n return [{ wrapper, level }, ...children]; \n });\n}\n\n/**\n * @param {!BrickContext} $ \n * @return {!Array}\n */\nexport function getFlattenWrappers($) {\n return flatten($, $.get('_rgWrappers'), 0);\n}\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"jsonpath-plus\");","module.exports = require(\"react\");","module.exports = require(\"rxjs\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\n// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/helpers.js'; import './common/internal/box.js'; import './common/internal/cells.js'; import './common/internal/changes.js'; import './common/internal/cloudobjects.js'; import './common/internal/columns.js'; import './common/internal/data.js'; import './common/internal/helpers.js'; import './common/internal/rows.js'; import './common/internal/scroll.js'; import './common/internal/triggers.js'; import './common/internal/wrappers.js'; import './common/RGCreateColumnConfig.js'; import './common/RGGetChangeMetadata.js'; import './common/RGGetChangeProperties.js'; import './common/RGGroupTuplesByIndexes.js'; import './common/RGProcessChangesForCloudObjects.js'; import './common/RGProcessChangesForJSONString.js'; import './common/RGProcessChangesForObjects.js'; import './common/RGWrapObject.js';\n;\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"main-node.js","mappings":"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A;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAa;AAC7C;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,IAAI,KAAK,kBAAkB;AACvG;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA,kBAAkB,MAAM,GAAG,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB;AACO;AACP,kBAAkB,aAAa,GAAG,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB;AACO;AACP,6BAA6B,mBAAmB;AAChD,gBAAgB,uCAAuC;AACvD;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,YAAY;AACZ;AACO;AACP,6BAA6B,mBAAmB;AAChD;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzSA;AACmC;;AAEnC;AACiC;AACe;AAC0C;AACnD;AACI;;AAE3C;AACA,aAAa,QAAQ;AACrB,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,GAAG;AACjB,cAAc,GAAG;AACjB,cAAc,aAAa;AAC3B;AACO;;AAEP;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA,QAAQ,8CAAI;AACZ;AACA;;AAEA;AACA;AACA,4BAA4B,6DAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA,gBAAgB,8CAAI,8BAA8B,kBAAkB,WAAW,gBAAgB;AAC/F;AACA;;AAEA;AACA;AACA,gBAAgB,gEAAwB;AACxC;AACA;;AAEA;AACA;AACA,gBAAgB,+DAAuB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,oDAAY;AACtC,0BAA0B,oDAAY;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,wDAAa;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAS;AACzC;AACA;;AAEA;AACA;AACA,gBAAgB,wDAAa;AAC7B;AACA,SAAS;;AAET;AACA;AACA;;;;;;;;;;;;;;;;;;AClHqC;;AAErC;AACA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACqC;AACQ;;AAE7C;AACgE;;AAEhE;AACyC;AACO;;AAEhD;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA,8BAA8B,GAAG;AACjC,8BAA8B,GAAG;;AAEjC;AACA,WAAW,mDAAa;AACxB;AACA;AACA,kBAAkB,yCAAG,6BAA6B,sDAAW;AAC7D,kBAAkB,0DAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,kDAAkD;AACzG;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA,iDAAiD,+CAAW;AAC5D;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP,4BAA4B,2DAAW;AACvC;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACO;AACP,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,QAAQ,8CAAI,yDAAyD,yCAAyC;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA;AACA,qBAAqB,uDAAa;AAClC,6DAA6D,sBAAsB,KAAK;AACxF;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChLA;AACqC;;AAErC;AAC+C;;AAE/C;AAC2C;;AAE3C;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA,WAAW,mDAAa;AACxB;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;;AAEjB;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,+CAAW;AAC3C;AACA;;AAEA;AACA;AACA,sCAAsC,kDAAQ;AAC9C;AACA;AACA;AACA;;AAEA;AACA,YAAY,8CAAI;AAChB;AACA,SAAS;AACT;AACA;AACA,cAAc,yCAAG;AACjB;;;;;;;;;;;;;;;;;;;;;;;ACpDA;AAC2C;;AAE3C;AACA;AACA,WAAW,gBAAgB;AAC3B,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACO;AACP,IAAI,yDAAS,iCAAiC,QAAQ;AACtD;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACO;AACP,IAAI,yDAAS,kCAAkC,QAAQ;AACvD;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,sCAAsC,yBAAyB,6BAA6B,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,gCAAgC,GAAG;;AAEvK;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACxFA;AAC6C;;AAE7C;AACqE;;AAErE;AACqD;AAChB;AACE;AACS;;AAEhD;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB;AACO;AACP;AACA,IAAI,mDAAa;AACjB;AACA;AACA,kBAAkB,0DAAoB;AACtC;AACA;AACA;AACA,iCAAiC,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ;AACpH;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;AACA,uBAAuB,oDAAU;AACjC,kDAAkD,kDAAQ;AAC1D;AACA,6BAA6B,wCAAwC,oDAAY;AACjF,iBAAiB;AACjB,aAAa;;AAEb;AACA,yBAAyB,6DAAkB,WAAW,gBAAgB;AACtE,mCAAmC,oDAAU;AAC7C;AACA,aAAa;;AAEb;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;;AAEjB;AACA;AACA;;AAEA;AACA,WAAW;AACX,YAAY;AACZ;AACO;AACP,WAAW,2DAAW;AACtB;;AAEA;AACA,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,qCAAqC,oDAAY;AACjD;AACA;;;;;;;;;;;;;;;;;;;;;AC3FA;AACkC;AACG;;AAErC;AAC2C;;AAE3C;AACA,WAAW,eAAe;AAC1B;AACO;AACP;AACA;AACA;AACA,IAAI,8CAAQ;AACZ,cAAc,yCAAG;AACjB;AACA;AACA,gBAAgB,wDAAa;AAC7B;AACA,SAAS;AACT;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,IAAI;AACf;AACO;AACP;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;ACzCA;AAC6C;;AAE7C;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B;AACO;AACP,IAAI,2DAAW;AACf;;AAEA;AACA,WAAW,eAAe;AAC1B;AACO;AACP;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACqC;;AAErC;AACgC;;AAEhC;AACyC;;AAEzC;AAC2C;AACiC;AAC5B;;AAEhD;AACA;AACA,cAAc,IAAI;AAClB,cAAc,QAAQ;AACtB,cAAc,mBAAmB;AACjC,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,qBAAqB;AACnC,cAAc,qBAAqB;AACnC;AACO;;AAEP;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,cAAc,yCAAG;;AAEjB;AACA,cAAc,yCAAG;AACjB;;AAEA;AACA,WAAW,IAAI;AACf,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,+CAAW;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI,8CAAI;AACR;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kDAAQ;AACzC,8BAA8B,uDAAQ,GAAG,iCAAiC;AAC1E;AACA;AACA;;AAEA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qEAAsB;AACpD,iCAAiC,iEAAkB;AACnD,yCAAyC,iEAAkB;AAC3D;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAyC;AACrE;AACA;AACA,qFAAqF,EAAE,IAAI,EAAE;AAC7F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP,wBAAwB;AACxB;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,oBAAoB,kDAAQ;AAC5B;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,2BAA2B,6DAAqB;AAChD;AACA,kBAAkB,gBAAgB;AAClC,KAAK;AACL;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;;;;;;;;;;;AChMA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACgB;;AAEhB;AAC6B,CAAmC,CAAqC,CAAuC,CAA4C,CAAuC,CAAoC,CAAuC,CAAoC,CAAsC,CAAwC,CAAwC,CAA2C,CAA0C,CAA4C,CAA6C,CAAsD,CAAoD,CAAiD,CAAmC;AAChzB","sources":["webpack://@olympeio-extensions/reactgrid/webpack/universalModuleDefinition","webpack://@olympeio-extensions/reactgrid/./src/common/RGCreateColumnConfig.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeMetadata.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeProperties.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGroupTuplesByIndexes.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForCloudObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForJSONString.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGWrapObject.js","webpack://@olympeio-extensions/reactgrid/./src/common/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/box.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cells.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/changes.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cloudobjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/columns.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/data.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/rows.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/scroll.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/triggers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/wrappers.js","webpack://@olympeio-extensions/reactgrid/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"jsonpath-plus\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"react\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"rxjs\"","webpack://@olympeio-extensions/reactgrid/external umd \"olympe\"","webpack://@olympeio-extensions/reactgrid/webpack/bootstrap","webpack://@olympeio-extensions/reactgrid/webpack/runtime/compat get default export","webpack://@olympeio-extensions/reactgrid/webpack/runtime/define property getters","webpack://@olympeio-extensions/reactgrid/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/reactgrid/webpack/runtime/make namespace object","webpack://@olympeio-extensions/reactgrid/./src/main-node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/reactgrid\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/reactgrid\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","import { Brick, registerBrick } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGCreateColumnConfig extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {number} rank\n * @param {string} propertyPath\n * @param {string} header\n * @param {number} width\n * @param {string} type\n * @param {string|!Object} options\n * @param {boolean} editable\n * @param {boolean} resizable\n * @param {number} level\n * @param {function(!Object)} setObject\n */\n update(_$, [rank, propertyPath, header, width, type, options, editable, resizable, level], [setObject]) {\n setObject({\n Rank: rank,\n 'Property Path': propertyPath,\n Header: header,\n Width: width,\n Type: type,\n Options: fromJson(options)[0],\n Editable: editable,\n Resizable: resizable,\n Level: level\n });\n }\n}\n\nregisterBrick('01921d9038d9eb72f609', RGCreateColumnConfig);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeMetadata extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object)} setNewCell\n * @param {function(!Object)} setPreviousCell\n * @param {function(string|number)} setRowId\n * @param {function(string|number)} setColumnId\n * @param {function(string)} setType\n */\n update(_$, [change], [setNewCell, setPreviousCell, setRowId, setColumnId, setType]) {\n setNewCell(change.metadata.newCell);\n setPreviousCell(change.metadata.previousCell);\n setRowId(change.metadata.rowId);\n setColumnId(change.metadata.columnId);\n setType(change.metadata.type);\n }\n}\n\nregisterBrick('01920a4d4d8390252c91', RGGetChangeMetadata);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeProperties extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object|!CloudObject)} setObject\n * @param {function(!Object|!CloudObject)} setProperty\n * @param {function(!*)} setNewValue\n * @param {function(!*)} setOldValue\n */\n update(_$, [change], [setObject, setProperty, setNewValue, setOldValue]) {\n setObject(change.object);\n setProperty(change.property);\n setNewValue(change.newValue);\n setOldValue(change.oldValue);\n }\n}\n\nregisterBrick('0192055d7857bd08279c', RGGetChangeProperties);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGGroupTuplesByIndexes extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} data\n * @param {string} indexes\n * @param {function(!Array)} setGroupedData\n */\n update(_$, [data, indexes], [setGroupedData]) {\n // Get the indexes and make the grouping recursively\n const _indexes = indexes.split(',').map(index => parseInt(index));\n setGroupedData(groupBy(data.map(d => rgWrap(d)), _indexes, 0));\n }\n}\n\nregisterBrick('0192288806aa3cc82b95', RGGroupTuplesByIndexes);\n\n/**\n * Group data by indexes, for the given level\n * @param {!Array} wrappers\n * @param {!Array<number>} indexes\n * @param {number} level\n * @return {!Array}\n */\nfunction groupBy(wrappers, indexes, level) {\n // End of recursion\n if(level >= indexes.length || !Array.isArray(wrappers)) {\n return wrappers;\n }\n\n // Get the current working index\n const index = indexes[level] - level;\n\n // Group the data in a Map\n const groupedWrappers = wrappers.reduce((parents, wrapper) => {\n // Split the tuple into parts\n const [wrapped, child] = splitTuple(wrapper, index, level);\n const key = wrapped.rgGetKey();\n\n // If this key is not in a group yet\n if(!parents.has(key)) {\n // Create the new group\n parents.set(key, wrapped);\n }\n\n // If there is a child, add it to the group\n // (group the child itself also)\n if(child) {\n const parent = parents.get(key);\n parent.rgChildren.push(child);\n }\n\n // Done\n return parents;\n }, new Map());\n\n // Apply the grouping on the children\n return Array.from(groupedWrappers.values()).map(({ rgChildren, ...others }) => ({\n rgChildren: groupBy(rgChildren.map(c => rgWrap(c, level + 1)), indexes, level + 1),\n ...others\n }));\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {number} index \n * @param {number} level \n * @return {[!RGWrapper, *]}\n */\nfunction splitTuple(wrapper, index, level) {\n // Real tuple case\n if(wrapper._rgType === 'tuple') {\n // Extract the info\n const tuple = wrapper.rgObject;\n const wrapped = rgWrap(tuple[index], level);\n const before = tuple.slice(0, index);\n const after = tuple.slice(index + 1);\n const child = [...before, ...after];\n \n // Handle all cases\n if(child.length > 1) {\n return [wrapped, child];\n }\n else if(child.length > 0) {\n return [wrapped, child[0]];\n }\n else {\n return [wrapped, null];\n }\n }\n\n // Not a tuple case\n else {\n return [wrapper, null];\n }\n}\n","import { ActionBrick, registerBrick, Transaction, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForCloudObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} executeAsLarge\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, executeAsLarge], [forwardEvent, setErrorFlow]) {\n const t = new Transaction();\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n t.update(change.object, change.property, change.newValue);\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n const promise = executeAsLarge ? t.executeAsLarge() : t.execute();\n promise.then(forwardEvent)\n .catch(error => setErrorFlow(ErrorFlow.create(error.message, 0)));\n }\n}\n\nregisterBrick('01920a8134e1cf0fa551', RGProcessChangesForCloudObjects);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGProcessChangesForJSONString extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {string} json\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n * @param {function(string)} setNewJson\n */\n update(_$, [changes, json], [forwardEvent, setErrorFlow, setNewJson]) {\n const [data, error] = fromJson(json);\n if(!error) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n data[change.metadata.rowId][change.property] = change.newValue;\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n setNewJson(JSON.stringify(data));\n forwardEvent();\n }\n else {\n setErrorFlow(ErrorFlow.create(`input 'json' is not valid, error: ${error.message}`, 0));\n }\n }\n}\n\nregisterBrick('01921e064dbe25faec55', RGProcessChangesForJSONString);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} inPlace\n * @param {Array} data\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, inPlace, data], [forwardEvent, setErrorFlow]) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(!(change.metadata.newCell.validator?.(change.newValue) ?? true)) {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n if(inPlace) {\n changes.forEach(change => {\n change.object[change.property] = change.newValue;\n });\n }\n else {\n changes.forEach(change => {\n data[change.metadata.rowId][change.property] = change.newValue;\n });\n }\n forwardEvent();\n }\n}\n\nregisterBrick('01921e0d2b383c95bd22', RGProcessChangesForObjects);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGWrapObject extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!*} object\n * @param {number} level\n * @param {function(!RGWrapper)} setWrapped\n */\n update(_$, [object, level], [setWrapped]) {\n setWrapped(rgWrap(object, level));\n }\n}\n\nregisterBrick('019232c3d1873de0d259', RGWrapObject);\n","// Re-export\nexport { rgWrap, RGWrapper } from './internal/wrappers';\nexport { RGChange } from './internal/changes';\nexport { fromJson } from './internal/helpers';\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, throttleTime } from 'rxjs';\n\n/**\n * Init the bounding box\n * @param {!BrickContext} $ \n */\nexport function initBox($) {\n // Listen to the component position and size\n combineLatest([$.observe('Width'), $.observe('Height')])\n\n // Debounce the changes to avoid to many rerendering\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n\n // Set the final box\n .pipe(tap(([width, height]) => $.set('_rgBox', { width, height })))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useBox($) {\n return useProperty($, '_rgBox') ?? {width: $.get('Width'), height: $.get('Height') };\n}\n\n","// Internal\nimport { fromJson, validateEmail, error, warn } from './helpers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initCells($) {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n}\n\n/**\n * Generate a cell for the defined wrapper/column\n * @param {!BrickContext} $\n * @param {!RGWrapper} wrapper\n * @param {number} rowId\n * @param {!Object} column\n * @param {boolean} cellEdition\n * @return {!Object}\n */\nexport function generateCell($, wrapper, rowId, column, cellEdition) {\n try {\n // Get the cell value\n const value = wrapper.__rgGetValue(column['Property Path'] ?? '');\n\n // Get the options\n const [options, optionsError] = fromJson(column.Options);\n if(optionsError) {\n warn(`cannot parse column options, error: ${optionsError.message}`);\n }\n const validator = options.validator ? s => new RegExp(options.validator).test(s) : undefined;\n const common = {\n nonEditable: cellEdition === 'DISABLED' || (cellEdition === 'USE CONFIG' && !column.Editable),\n style: getCellStyle($)\n };\n\n // Generate the cell depending on the type\n switch(column.Type) {\n case 'TEXT': return generateTextCell(value, options, common, column, validator);\n case 'NUMBER': return generateNumberCell(value, options, common);\n case 'EMAIL': return generateEmailCell(value, common, validator);\n case 'DATE': \n case 'TIME': return generateDateTimeCell(value, options, common, column);\n case 'CHECKBOX': return generateCheckboxCell(value, options, common);\n case 'DROPDOWN': return generateDropdownCell(value, options, common, column, $, rowId);\n case 'HEADER': return generateHeaderCell(value, options, common);\n case 'CHEVRON': return generateChevronCell(value, options, common, wrapper, $);\n\n // AUTO case\n default:\n if(value instanceof Date) {\n return generateCell($, wrapper, rowId, { ...column, Type: 'DATE' }, cellEdition);\n }\n switch(typeof value) {\n case 'number': return generateCell($, wrapper, rowId, { ...column, Type: 'NUMBER' }, cellEdition);\n case 'boolean': return generateCell($, wrapper, rowId, { ...column, Type: 'CHECKBOX' }, cellEdition);\n default: return generateCell($, wrapper, rowId, { ...column, Type: 'TEXT', _cast: true }, cellEdition);\n }\n }\n }\n catch(err) {\n error(`cannot generate cell, error: ${err.message}`);\n return errorCell();\n }\n}\n\n/**\n * Get the cell value, depending on its type\n * @param {!Object} cell\n * @return {*}\n */\nexport function getCellValue(cell) {\n switch(cell.type) {\n case 'number': return cell.value;\n case 'date': return cell.date;\n case 'time': return cell.time;\n case 'checkbox': return cell.checked;\n case 'dropdown': return cell.selectedValue;\n default: return cell.text;\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {function(string):boolean} validator \n * @return {!TextCell} \n */\nfunction generateTextCell(value, options, common, column, validator) {\n return {\n type: 'text',\n text: (column._cast ? String(value ?? '') : value ?? ''),\n placeholder: options.placeholder,\n validator: validator,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!NumberCell} \n */\nfunction generateNumberCell(value, options, common) {\n return {\n type: 'number',\n value: value,\n format: new Intl.NumberFormat(options.locale, options.format),\n nanToZero: options.nanToZero,\n hideZero: options.hideZero,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} common \n * @param {function(string):boolean} validator \n * @return {!EmailCell} \n */\nfunction generateEmailCell(value, common, validator) {\n return {\n type: 'email',\n text: value ?? '',\n validator: validator ?? validateEmail,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @return {!DateCell|!TimeCell} \n */\nfunction generateDateTimeCell(value, options, common, column) {\n const type = column.Type.toLowerCase();\n return {\n type: type,\n [type]: value instanceof Date ? value : new Date(value),\n format: new Intl.DateTimeFormat(options.locale, options.format ?? { [`${type}Style`]: 'short' }),\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!CheckboxCell} \n */\nfunction generateCheckboxCell(value, options, common) {\n return {\n type: 'checkbox',\n checked: Boolean(value ?? false),\n checkedText: options.checkedText,\n uncheckedText: options.uncheckedText,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {!BrickContext} $ \n * @param {number} rowId\n * @return {!DropdownCell} \n */\nfunction generateDropdownCell(value, options, common, column, $, rowId) {\n const id = `${rowId}.${column.columnId}`;\n const isOpen = id === $.get('_rgDropdownIsOpen');\n const inputValue = isOpen ? $.get('_rgDropdownInputValue') : '';\n return {\n type: 'dropdown',\n selectedValue: value,\n values: options.values ?? [],\n isDisabled: options.isDisabled,\n isOpen: isOpen,\n inputValue: inputValue,\n ...common\n };\n}\n\n/**\n * Handle the dropdowns internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n */\nexport function handleDropdownCellChange($, change) {\n const id = `${change.rowId}.${change.columnId}`;\n if(change.newCell.isOpen && !change.newCell.isDisabled) {\n $.set('_rgDropdownIsOpen', id);\n $.set('_rgDropdownInputValue', change.newCell.inputValue);\n }\n else {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!HeaderCell} \n */\nfunction generateHeaderCell(value, options, common) {\n return {\n type: 'header',\n text: value ?? options.text ?? '',\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!RGWrapper} wrapper\n * @param {!BrickContext} $ \n * @return {!ChevronCell} \n */\nfunction generateChevronCell(value, options, common, wrapper, $) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n if(!$.has(id)) {\n $.set(id, { isExpanded: options.isExpanded ?? false });\n }\n const state = $.get(id);\n return {\n type: 'chevron',\n text: value ?? options.text ?? '',\n indent: options.indent,\n hasChildren: wrapper.rgChildren.length > 0,\n ...state,\n ...common\n };\n}\n\n/**\n * Handle the chevrons internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n * @param {!RGWrapper} wrapper \n */\nexport function handleChevronCellChange($, change, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n $.set(id, { isExpanded: change.newCell.isExpanded });\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!RGWrapper} wrapper \n * @return {boolean}\n */\nexport function isChevronCellExpanded($, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n return $.get(id)?.isExpanded ?? false;\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!Object}\n */\nexport function getCellStyle($) {\n const borderStyle = { \n color: $.get('Border Color'),\n width: $.get('Border Width') \n };\n return {\n background: $.get('Default Color'),\n border: {\n left: borderStyle,\n top: borderStyle,\n right: borderStyle,\n bottom: borderStyle\n }\n };\n}\n\n/**\n * @return {!TextCell}\n */\nfunction errorCell() {\n return {\n type: 'text',\n text: '!ERROR',\n nonEditable: true,\n style: {\n color: 'red'\n }\n };\n}\n","// Olympe\nimport { ErrorFlow } from 'olympe';\n\n// Internal\nimport { warn } from './helpers';\nimport { getFlattenWrappers } from './wrappers';\nimport { handleDropdownCellChange, handleChevronCellChange, getCellValue } from './cells';\nimport { getColumns } from './columns';\nimport { triggerReload } from './triggers';\n\n/**\n * @typedef {Object} RGChange\n * @property {(!Object|!CloudObject)} object\n * @property {(string|!PropertyModel)} property\n * @property {*} oldValue\n * @property {*} newValue\n * @property {!CellChange} metadata\n */\nexport const RGChange = {};\n\n/**\n * Process the changes event from the reactgrid, and forward it to a lambda\n * @param {!BrickContext} $ \n * @param {!Array} changes \n */\nexport function handleOnCellsChanged($, changes) {\n // Only process changes when a lambda is defined\n const processor = $.get('Process Changes');\n if(!processor) {\n warn('no change is processed, the `Process Changes` lambda is no defined');\n return;\n }\n\n // Adapt the changes to olympe\n let internalStateChanged = false;\n const flattenWrappers = getFlattenWrappers($);\n const _changes = changes\n // Transform the changes to work well with Olympe\n .map(change => {\n // Get the required data\n const wrapper = flattenWrappers[change.rowId].wrapper;\n const columns = getColumns($, wrapper._rgLevel);\n const column = columns.find(c => c.Rank === change.columnId);\n \n // Guard\n if(column === undefined) {\n warn(`no column found for level ${wrapper._rgLevel} and rank ${change.columnId}`);\n return null;\n }\n\n // Handle dropdowns states\n if(change.type === 'dropdown') {\n handleDropdownCellChange($, change);\n internalStateChanged = true;\n }\n\n // Handle chevrons states\n else if(change.type === 'chevron') {\n handleChevronCellChange($, change, wrapper);\n internalStateChanged = true;\n }\n\n // Create the RGChange object\n return {\n object: wrapper.__rgGetObject(column['Property Path']),\n property: wrapper.__rgGetProperty(column['Property Path']),\n oldValue: getCellValue(change.previousCell),\n newValue: getCellValue(change.newCell),\n metadata: change\n };\n })\n // Filter out null change\n .filter(change => change !== null)\n // Filter out the dropdown change that are only about the internal state\n .filter(change => change.metadata.type !== 'dropdown' || change.newValue !== change.oldValue)\n // Filter out the chevron change that are only about the internal state\n .filter(change => change.metadata.type !== 'chevron' || change.newValue !== change.oldValue)\n // Filter out changes with no value, only if there is change with value -> hack to fix paste from excel until a better solution\n .filter((change, _index, all) => change.newValue !== \"\" || all.every(c => c.newValue === \"\"));\n\n // Guard\n if(_changes.length === 0) {\n if(internalStateChanged) {\n triggerReload($);\n }\n return;\n }\n\n // Call the lambda\n const [iFlow, iChanges] = processor.getInputs();\n const [oFlow, oErrorFlow] = processor.getOutputs();\n const processor$ = $.runner(processor);\n processor$.set(iChanges, _changes);\n processor$.trigger(iFlow);\n\n // Wait for the end of it\n Promise.race([\n processor$.waitFor(oFlow), \n processor$.waitFor(oErrorFlow)\n ])\n .then(value => {\n // In case of error, throw it again\n if(value instanceof ErrorFlow) {\n $.throw(value);\n }\n\n // Success\n else {\n triggerReload($);\n }\n })\n\n // Free the lambda\n .finally(() => processor$.destroy());\n}\n","import { CloudObject } from 'olympe';\n\n/**\n * Find an object property based on its name\n * @param {!CloudObject} object\n * @param {string} path\n * @return {!PropertyModel}\n */\nexport function findObjectProperty(object, path) {\n const mapping = getModelPropertiesMapping(object);\n return mapping.get(path);\n}\n\n/**\n * Get all properties name of an object\n * @param {!CloudObject} object\n * @return {!Array<string>}\n */\nexport function getModelPropertiesName(object) {\n const mapping = getModelPropertiesMapping(object);\n return Array.from(mapping.keys());\n}\n\n/**\n * Get an object model properties mapping\n * @param {!CloudObject} object\n * @return {!Map<string, PropertyModel>}\n */\nfunction getModelPropertiesMapping(object) {\n const model = object.getModel();\n if(!modelProperties.has(model.getTag())) {\n const mapping = new Map();\n model.query()\n .follow(CloudObject.propertyRel)\n .executeFromCache()\n .forEach(property => mapping.set(property.name(), property));\n modelProperties.set(model.getTag(), mapping);\n }\n return modelProperties.get(model.getTag());\n}\n\n/**\n * Singleton map for model properties mapping (name <-> instance)\n * @type {!Map<string, !Map<string, PropertyModel>>}\n */\nconst modelProperties = new Map();\n\n","// Olympe\nimport { CloudObject } from 'olympe';\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { defaultWrap } from './wrappers';\nimport { reorderObject, warn } from './helpers';\n\n/**\n * Init the columns\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @return {!Observable}\n */\nexport function initFilteredColumns($, _wrappers) {\n // Internal states\n $.set('_rgColumnWidth', {}); // Column width overrides\n $.set('_rgColumnOrder', {}); // Column order (rank) overrides\n\n // Listen to the config and the _wrappers first object properties\n return combineLatest([\n $.observe('Config', false),\n _wrappers\n .pipe(map(wrappers => (wrappers[0] ?? defaultWrap()).__rgProperties()))\n .pipe(distinctUntilChanged()),\n $.observe('Enable Column Reordering', false),\n $.observe('_rgColumnWidth'),\n $.observe('_rgColumnOrder'),\n $.observe('Default Width')\n ])\n\n // Build the columns\n .pipe(map(([config, properties, ...others]) => {\n // Config is set by the user\n if (config) {\n return [config, ...others];\n }\n\n // Config is auto-generated from the data\n if (properties.length > 0) {\n return [\n properties.map((path, index) => ({ 'Property Path': path, Type: 'AUTO', Rank: index })),\n ...others\n ];\n }\n\n // Empty config\n return [[], ...others];\n }))\n\n // Transform to an array of objects\n .pipe(map(([config, reorderableColumns, columnWidth, columnOrder, defaultWidth]) => {\n return config\n .map(column => column instanceof CloudObject ? column.toObject(true, true) : column)\n .sort((a, b) => getColumnRank(a, columnOrder) - getColumnRank(b, columnOrder))\n .map(column => generateColumn(column, reorderableColumns, columnWidth, defaultWidth));\n }))\n\n // Cache the filtered columns (per level) for quick access\n .pipe(map(columns => {\n const filteredColumns = filterLevelledColumns(columns);\n $.set('_rgFilteredColumns', filteredColumns);\n return filteredColumns;\n }));\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!*}\n */\nexport function useColumns($) {\n const filteredColumns = useProperty($, '_rgFilteredColumns');\n return filteredColumns?.get(0) ?? [];\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} level \n * @return {!Array}\n */\nexport function getColumns($, level) {\n const filteredColumns = $.get('_rgFilteredColumns');\n return filteredColumns?.get(level ?? 0) ?? [];\n}\n\n/**\n * Handle the resizing of columns\n * @param {!BrickContext} $ \n * @param {string} columnId \n * @param {number} width \n */\nexport function handleOnColumnResized($, columnId, width) {\n const currentCols = { ...$.get('_rgColumnWidth') };\n currentCols[columnId] = width;\n $.set('_rgColumnWidth', currentCols);\n}\n\n/**\n * @param {!Array} columns\n * @return {!Map<number, !Array>}\n */\nfunction filterLevelledColumns(columns) {\n // Group the columns by rank and save all levels\n const levels = new Set();\n const perRank = columns.reduce((acc, cur) => {\n const rank = cur.Rank ?? 0;\n if(!acc.has(rank)) {\n acc.set(rank, []);\n }\n acc.get(rank).push(cur);\n levels.add(cur.Level ?? 0);\n return acc;\n }, new Map());\n const allRanks = Array.from(perRank.keys());\n\n // Get the columns for each level\n const filterLevel = level => {\n return allRanks.map(rank => {\n const rankColumns = perRank.get(rank);\n const atLevel = rankColumns.find(column => (column.Level ?? 0) === level);\n const generic = rankColumns.find(column => (column.Level ?? 0) === -1);\n return atLevel ?? generic ?? rankColumns[0];\n });\n };\n\n // Return all levels\n return Array.from(levels.values()).reduce((acc, cur) => acc.set(cur, filterLevel(cur)), new Map());\n}\n\n/**\n * @param {!Object} column\n * @param {boolean} reorderableColumns\n * @param {!Object} columnWidth\n * @param {number} defaultWidth\n * @return {!Object}\n */\nfunction generateColumn(column, reorderableColumns, columnWidth, defaultWidth) {\n if(typeof column.Rank !== 'number') {\n warn(`column rank is missing, using 0 as fallback (column: ${column.Header ?? column['Property Path']})`);\n }\n const rank = column.Rank ?? 0;\n return {\n columnId: rank,\n reorderable: reorderableColumns,\n width: columnWidth?.[rank] ?? column.Width ?? defaultWidth ?? 150,\n resizable: column.Resizable,\n Level: column.Level ?? 0,\n ...column\n };\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} targetColumnId\n * @param {!Array} columnIds\n */\nexport function handleOnColumnsReordered($, targetColumnId, columnIds) {\n const columns = getColumns($, 0);\n const ranks = columns.map(column => column.Rank);\n const targetIndex = ranks.indexOf(targetColumnId);\n const movingIndexes = columnIds.map(id => ranks.indexOf(id));\n const newRanks = reorderObject(ranks, movingIndexes, targetIndex);\n const newOrder = newRanks.reduce((acc, cur, index) => ({ [cur]: index, ...acc }), {});\n $.set('_rgColumnOrder', newOrder);\n}\n\n/**\n * @param {!Object} column\n * @param {!Object} overrides\n * @return {number}\n */\nfunction getColumnRank(column, overrides) {\n return overrides[column.Rank] ?? column.Rank;\n}\n","// Olympe\nimport { QueryResult } from 'olympe';\n\n// Rxjs\nimport { tap, combineLatest, map } from 'rxjs';\n\n// Internal\nimport { warn, fromJson } from './helpers';\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _reload\n * @return {!Observable}\n */\nexport function initData($, _reload) {\n // Listen to the data and for any refresh\n return combineLatest([\n $.observe('Data', false),\n _reload\n ])\n\n // Default values\n .pipe(map(([data]) => data ? data : []))\n\n // Transform to an array\n .pipe(map(data => {\n // The data is already an array\n if (Array.isArray(data)) {\n return data;\n }\n\n // QueryResult case\n if (data instanceof QueryResult) {\n return data.toArray();\n }\n\n // JSON case\n if (typeof data === 'string') {\n const [json, error] = fromJson(data);\n if (!error && Array.isArray(json)) {\n return json;\n }\n }\n\n // Type is not supported\n warn('the `Data` property is not convertible to an array');\n return [];\n }))\n \n // Set the transformed data into _Data\n .pipe(tap(data => $.set('_rgData', data)));\n}\n\n","// Olympe\nimport { getLogger } from '@olympeio/core';\n\n/**\n * Parse a json string without throwing an exception\n * @param {string|!Object} json \n * @return {!Array}\n */\nexport function fromJson(json) {\n try {\n return typeof json === 'string'\n ? [JSON.parse(json), null]\n : [json ?? {}, null];\n }\n catch(err) {\n return [{}, err];\n }\n}\n\n/**\n * Warn message with a default format\n * @param {string} message \n */\nexport function warn(message) {\n getLogger('ReactGrid').warn(`ReactGrid: ${message}`);\n}\n\n/**\n * Error message with a default format\n * @param {string} message \n */\nexport function error(message) {\n getLogger('ReactGrid').error(`ReactGrid: ${message}`);\n}\n\n/**\n * Make a jsonpath-plus path readable\n * @param {string} path\n * @return {string} \n */\nexport function trimPath(path) {\n if(path.startsWith('$') || path.startsWith('.')) {\n return trimPath(path.substring(1));\n }\n if(path.startsWith('[')) {\n return trimPath(path.substring(path.indexOf(']') + 1));\n }\n return path;\n}\n\n/**\n * Test for email format\n * @param {string} text\n * @return {boolean}\n */\nexport function validateEmail(text) {\n return emailRegex.test(text);\n}\n\n// Email regex (https://emailregex.com/)\nconst emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n * Reorders elements in an object by moving specific elements to a new position.\n *\n * @param {Array} values - The original array to reorder.\n * @param {number[]} ids - An array of indices representing the elements to move.\n * @param {number} to - The target index where the selected elements should be moved.\n * @return {Object} - A new object with the specified elements reordered.\n */\nexport function reorderObject(values, ids, to) {\n const reorderedValues = [...values];\n\n // Get elements to move based on the ids\n const elementsToMove = ids.map(index => reorderedValues[index]);\n ids.sort((a, b) => b - a).forEach(index => {\n reorderedValues.splice(index, 1);\n });\n\n // Adjust the target id based on moving forward or backward\n const adjustedTargetId = to >= Math.min(...ids) ? to - elementsToMove.length + 1 : to;\n\n // Insert the elements in target id\n if (elementsToMove.length > 0) {\n reorderedValues.splice(adjustedTargetId, 0, ...elementsToMove);\n }\n\n return reorderedValues;\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { generateCell, getCellStyle } from './cells';\nimport { trimPath } from './helpers';\nimport { getColumns } from './columns';\nimport { getFlattenWrappers } from './wrappers';\n\n/**\n * Init the rows\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @param {!Observable} _filteredColumns \n */\nexport function initRows($, _wrappers, _filteredColumns) {\n // Listen to the _data and the _columns\n combineLatest([\n _wrappers,\n _filteredColumns\n .pipe(distinctUntilChanged(undefined, filteredColumns => {\n // Avoid updating the rows for some changes on the column config: width, resizable, etc.\n return Array.from(filteredColumns.values())\n .flat()\n .map(c => `${c.Header}${c['Property Path']}${c.Type}${c.Options}${c.Rank}${c.Editable}${c.Level}`)\n .join('');\n })),\n $.observe('Row Height', false),\n $.observe('Cell Edition', false),\n $.observe('Disable Header Row', false),\n $.observe('Default Color', false),\n $.observe('Border Color', false),\n $.observe('Border Width', false)\n ])\n\n // Use the reactgrid format for rows\n .pipe(map(([_wrappers, _filteredColumns, rowHeight, cellEdition, removeHeaderRow]) => {\n // Optional header row\n const headerRow = removeHeaderRow ? [] : [{\n rowId: '_header',\n height: rowHeight,\n cells: getColumns($, 0).map(column => {\n const text = column.Header ?? trimPath(column['Property Path'] ?? '');\n const finalText = column.Level === 0 ? text : '';\n return { type: 'header', text: finalText, style: getCellStyle($) };\n })\n }];\n\n // Generate all the rows\n const rows = getFlattenWrappers($).map(({ wrapper, level }, index) => {\n const rowColumns = getColumns($, level);\n return generateRow(wrapper, rowColumns, index, $, rowHeight, cellEdition);\n });\n\n // Final rows\n return [headerRow, rows].flat();\n }))\n\n // Set the final rows\n .pipe(tap(rows => $.set('_rgRows', rows)))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useRows($) {\n return useProperty($, '_rgRows') ?? [];\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {!Array} columns \n * @param {number} index \n * @param {!BrickContext} $ \n * @param {number} rowHeight \n * @param {boolean} cellEdition \n * @return {!Object}\n */\nfunction generateRow(wrapper, columns, index, $, rowHeight, cellEdition) {\n return { \n rowId: index,\n height: rowHeight,\n cells: columns.map(column => generateCell($, wrapper, index, column, cellEdition))\n };\n}\n","// React\nimport { useEffect } from 'react';\nimport { tap, interval } from 'rxjs';\n\n// Internal\nimport { triggerRedraw } from './triggers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initScroll($) {\n // Auto-redraw on scroll (fix fast scrolling issue)\n $.set('_rgLastScroll', 0);\n $.set('_rgLastScrollRedraw', 0);\n interval(1000)\n .pipe(tap(() => {\n if($.get('_rgLastScroll') !== $.get('_rgLastScrollRedraw')) {\n $.set('_rgLastScrollRedraw', $.get('_rgLastScroll'));\n triggerRedraw($);\n }\n }))\n .subscribe();\n}\n\n/**\n * @param {!BrickContext} $\n * @param {!*} ref\n */\nexport function useRedrawAfterScroll($, ref) {\n const registerScroll = () => $.set('_rgLastScroll', Date.now());\n useEffect(() => {\n if (ref.current) {\n ref.current.parentElement.style.overflow = 'visible';\n ref.current.addEventListener('scroll', registerScroll);\n }\n return () => {\n if (ref.current) {\n ref.current.removeEventListener('scroll', registerScroll);\n }\n };\n }, [ref]);\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n/**\n * @param {!BrickContext} $\n * @return {!Observable}\n */\nexport function initTriggers($) {\n return $.observe('Reload', false);\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function useRedraw($) {\n useProperty($, 'Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerRedraw($) {\n $.trigger('Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerReload($) {\n $.trigger('Reload');\n}\n\n","// Olympe\nimport { CloudObject } from 'olympe';\n\n// Rxjs\nimport { tap, map } from 'rxjs';\n\n// Json\nimport { JSONPath } from 'jsonpath-plus';\n\n// Internal\nimport { warn, trimPath } from './helpers';\nimport { getModelPropertiesName, findObjectProperty } from './cloudobjects';\nimport { isChevronCellExpanded } from './cells';\n\n/**\n * @typedef RGWrapper\n * @property {!*} rgObject - The wrapped object\n * @property {!Array} rgChildren - Potential children of the object\n * @property {function():string} rgGetKey - Get a unique key\n * @property {string} _rgType - The type of the wrapped object\n * @property {number} _rgLevel - The level in the hierarchy\n * @property {function():!Array<string>} __rgProperties - Get all the properties name\n * @property {function(string):!*} __rgGetProperty - Get a property by its path\n * @property {function(string):!*} __rgGetValue - Get a value for a path\n * @property {function(string):!*} __rgGetObject - Get the object for a path\n */\nexport const RGWrapper = {};\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _data \n * @return {!Observable}\n */\nexport function initWrappers($, _data) {\n // Observe the data\n return _data\n\n // Wrap all objects\n .pipe(map(data => data.map(d => rgWrap(d))))\n\n // Set the transformed data into _Data\n .pipe(tap(wrappers => $.set('_rgWrappers', wrappers)));\n}\n\n/**\n * @param {!*} object \n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function rgWrap(object, level) {\n // Already wrapped -> rewrap missing properties\n if(object.hasOwnProperty('rgObject')) {\n const missingProps = ['rgChildren', 'rgGetKey', '_rgType', '_rgLevel',\n '__rgProperties', '__rgGetProperty', '__rgGetValue',\n '__rgGetObject'].filter(prop => !object.hasOwnProperty(prop));\n if(missingProps.length > 0) {\n const wrapped = rgWrap(object.rgObject, level ?? 0);\n return missingProps.reduce((acc, cur) => {\n acc[cur] = wrapped[cur];\n return acc;\n }, object);\n }\n return object;\n }\n\n // Tuple case\n if(Array.isArray(object)) {\n return wrapTuple(object, level ?? 0);\n }\n\n // CloudObject case\n if(object instanceof CloudObject) {\n return wrapCloudObject(object, level ?? 0);\n }\n\n // Object case\n if(typeof object === 'object') {\n return wrapObject(object, level ?? 0);\n }\n\n // Wrong type\n warn('some data are not of the following type: Object, CloudObject, Array');\n return defaultWrap(level ?? 0);\n}\n\n/**\n * @param {!Object} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => Object.values(object).join('.'),\n _rgType: 'object',\n _rgLevel: level,\n __rgProperties: () => Object.keys(object),\n __rgGetProperty: path => trimPath(path),\n __rgGetValue: path => JSONPath({ path, json: object, wrap: false }),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!CloudObject} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapCloudObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => object.getTag(),\n _rgType: 'cloudobject',\n _rgLevel: level,\n __rgProperties: () => getModelPropertiesName(object),\n __rgGetProperty: path => findObjectProperty(object, path),\n __rgGetValue: path => object.get(findObjectProperty(object, path)),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!Array} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapTuple(object, level) {\n const wrapped = object.map(o => rgWrap(o, level + 1));\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => `[${wrapped.map(w => w.rgGetKey()).join('.')}]`,\n _rgType: 'tuple',\n _rgLevel: level,\n __rgProperties: () => wrapped.map((w, i) => w.__rgProperties().map(p => `$[${i}].${p}`)).flat(),\n __rgGetProperty: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetProperty(subPath);\n },\n __rgGetValue: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetValue(subPath);\n },\n __rgGetObject: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetObject(subPath);\n }\n };\n}\n\n/**\n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function defaultWrap(level) {\n return wrapObject({}, level ?? 0);\n}\n\n/**\n * @param {string} path \n * @returns {![number, string]} \n */\nfunction splitTuplePath(path) {\n const endBracket = path.indexOf(']');\n const index = parseInt(path.substring(path.indexOf('[') + 1, endBracket));\n const subPath = trimPath(path.substring(endBracket + 1));\n return [index, subPath];\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!Array} wrappers \n * @param {number} level \n * @return {!Array}\n */\nfunction flatten($, wrappers, level) {\n return wrappers.flatMap(wrapper => {\n const isExpanded = isChevronCellExpanded($, wrapper);\n const children = isExpanded ? flatten($, wrapper.rgChildren, level + 1) : [];\n return [{ wrapper, level }, ...children]; \n });\n}\n\n/**\n * @param {!BrickContext} $ \n * @return {!Array}\n */\nexport function getFlattenWrappers($) {\n return flatten($, $.get('_rgWrappers'), 0);\n}\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"jsonpath-plus\");","module.exports = require(\"react\");","module.exports = require(\"rxjs\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\n// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/helpers.js'; import './common/internal/box.js'; import './common/internal/cells.js'; import './common/internal/changes.js'; import './common/internal/cloudobjects.js'; import './common/internal/columns.js'; import './common/internal/data.js'; import './common/internal/helpers.js'; import './common/internal/rows.js'; import './common/internal/scroll.js'; import './common/internal/triggers.js'; import './common/internal/wrappers.js'; import './common/RGCreateColumnConfig.js'; import './common/RGGetChangeMetadata.js'; import './common/RGGetChangeProperties.js'; import './common/RGGroupTuplesByIndexes.js'; import './common/RGProcessChangesForCloudObjects.js'; import './common/RGProcessChangesForJSONString.js'; import './common/RGProcessChangesForObjects.js'; import './common/RGWrapObject.js';\n;\n"],"names":[],"sourceRoot":""}
package/main-web.js CHANGED
@@ -45,6 +45,12 @@ __webpack_require__.r(__webpack_exports__);
45
45
  /* harmony import */ var _common_internal_cells__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../common/internal/cells */ "./src/common/internal/cells.js");
46
46
  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); }
47
47
 
48
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
49
+ 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."); }
50
+ 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; } }
51
+ 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; }
52
+ 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; } }
53
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
48
54
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
49
55
  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); } }
50
56
  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
@@ -115,6 +121,7 @@ var RGReactGrid = /*#__PURE__*/function (_ReactBrick) {
115
121
  var box = (0,_common_internal_box__WEBPACK_IMPORTED_MODULE_10__.useBox)($);
116
122
  var hidden = (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_2__.useProperty)($, 'Hidden');
117
123
  var allowContentOverflow = (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_2__.useProperty)($, 'Allow Content Overflow');
124
+ var fontSize = (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_2__.useProperty)($, 'Font Size');
118
125
 
119
126
  // Data
120
127
  var rows = (0,_common_internal_rows__WEBPACK_IMPORTED_MODULE_9__.useRows)($);
@@ -133,21 +140,39 @@ var RGReactGrid = /*#__PURE__*/function (_ReactBrick) {
133
140
  var stickRight = (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_2__.useProperty)($, 'Sticky Right Columns');
134
141
 
135
142
  // Redraw hook
136
- var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(null);
143
+ var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();
137
144
  (0,_common_internal_scroll__WEBPACK_IMPORTED_MODULE_13__.useRedrawAfterScroll)($, containerRef);
138
145
  (0,_common_internal_triggers__WEBPACK_IMPORTED_MODULE_12__.useRedraw)($);
139
146
 
147
+ // Compute the global position of the grid to set the editor cell in the right place
148
+ var _useState = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)({
149
+ x: 0,
150
+ y: 0
151
+ }),
152
+ _useState2 = _slicedToArray(_useState, 2),
153
+ gridPosition = _useState2[0],
154
+ setGridPosition = _useState2[1];
155
+ var updateBoxPosition = (0,react__WEBPACK_IMPORTED_MODULE_3__.useCallback)(function () {
156
+ var _containerRef$current;
157
+ var rect = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.getBoundingClientRect();
158
+ setGridPosition({
159
+ x: rect.left,
160
+ y: rect.top
161
+ });
162
+ }, []);
163
+
140
164
  // Render the grid
141
165
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement("div", {
142
166
  ref: containerRef,
143
- className: styled_jsx_style__WEBPACK_IMPORTED_MODULE_0___default().dynamic([["2269089546", [hidden ? 'none' : 'inline-block', box.width, box.height, allowContentOverflow ? 'visible' : 'scroll', -box.x, -box.y]]])
167
+ className: styled_jsx_style__WEBPACK_IMPORTED_MODULE_0___default().dynamic([["3744793249", [hidden ? 'none' : 'inline-block', box.width, box.height, allowContentOverflow ? 'visible' : 'scroll', fontSize, -gridPosition.x, -gridPosition.y, fontSize]]])
144
168
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(_silevis_reactgrid__WEBPACK_IMPORTED_MODULE_4__.ReactGrid
145
169
  // Data
146
170
  , {
147
171
  rows: rows,
148
172
  columns: columns,
149
173
  onCellsChanged: _common_internal_changes__WEBPACK_IMPORTED_MODULE_11__.handleOnCellsChanged.bind(undefined, $),
150
- enableFillHandle: fillHandle
174
+ enableFillHandle: fillHandle,
175
+ onFocusLocationChanged: updateBoxPosition // Compute the global position of the grid to set the editor cell in the right place
151
176
 
152
177
  // Sticky
153
178
  ,
@@ -170,9 +195,9 @@ var RGReactGrid = /*#__PURE__*/function (_ReactBrick) {
170
195
  ,
171
196
  onColumnsReordered: _common_internal_columns__WEBPACK_IMPORTED_MODULE_8__.handleOnColumnsReordered.bind(undefined, $)
172
197
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement((styled_jsx_style__WEBPACK_IMPORTED_MODULE_0___default()), {
173
- id: "2269089546",
174
- dynamic: [hidden ? 'none' : 'inline-block', box.width, box.height, allowContentOverflow ? 'visible' : 'scroll', -box.x, -box.y]
175
- }, "div.__jsx-style-dynamic-selector{display:".concat(hidden ? 'none' : 'inline-block', ";width:").concat(box.width, "px;height:").concat(box.height, "px;overflow:").concat(allowContentOverflow ? 'visible' : 'scroll', ";font-family:'Roboto',sans-serif;}div.__jsx-style-dynamic-selector .rg-celleditor{-webkit-transform:translate(").concat(-box.x, "px,").concat(-box.y, "px);-ms-transform:translate(").concat(-box.x, "px,").concat(-box.y, "px);transform:translate(").concat(-box.x, "px,").concat(-box.y, "px);}div.__jsx-style-dynamic-selector .rg-pane{box-shadow:0px 4px 6px rgba(0,0,0,0.1);background-color:#fff;}div.__jsx-style-dynamic-selector .rg-cell{padding:10px;border-bottom:1px solid #e0e0e0;font-size:14px;color:rgba(0,0,0,0.87);-webkit-transition:background-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out;}div.__jsx-style-dynamic-selector .rg-header-cell{background-color:#f5f5f5;font-weight:500;color:rgba(0,0,0,0.87);font-size:14px;border-bottom:1px solid #e0e0e0;padding:12px;}div.__jsx-style-dynamic-selector .rg-number-cell{text-align:right;padding-right:12px;font-family:'Roboto Mono',monospace;color:rgba(0,0,0,0.87);}div.__jsx-style-dynamic-selector .rg-text-cell{text-align:left;font-size:14px;color:rgba(0,0,0,0.87);padding-left:12px;}div.__jsx-style-dynamic-selector .rg-cell:hover{background-color:#f5f5f5;}div.__jsx-style-dynamic-selector::-webkit-scrollbar{display:block;width:8px;height:8px;}div.__jsx-style-dynamic-selector::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,0.2);border-radius:4px;}div.__jsx-style-dynamic-selector::-webkit-scrollbar-track{background-color:#f0f0f0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbWFya2V0cGxhY2UvcmVhY3RncmlkL3NyYy93ZWIvUkdSZWFjdEdyaWQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNHZ0MsQUFJa0UsQUFTK0MsQUFLMUMsQUFNN0IsQUFTWSxBQVVSLEFBUUQsQUFRUyxBQUtYLEFBS3NCLEFBSVgsYUFoRE8sQ0F3Q3RCLEVBYkssQ0FSSSxPQXNCUixDQWhDSyxBQTBCcEIsQUFjQSxNQXJCOEIsRUFpQlIsRUFIdEIsQ0F0QnlDLENBeENBLEVBY2YsRUFnQkksSUFUWCxNQTZDbkIsR0FqQnNCLE1BM0JRLENBUDlCLEdBZ0JtQixRQVVXLEFBUzlCLEVBakQwQyxLQStCTixJQVRhLFlBbUJqRCxnQkFUaUIsQ0EvQnlCLFlBZ0MxQywwQkEvQnFDLCtCQXFCckMsQ0FwQkEsK0VBS0EiLCJmaWxlIjoiL2J1aWxkcy9tYXJrZXRwbGFjZS9yZWFjdGdyaWQvc3JjL3dlYi9SR1JlYWN0R3JpZC5qc3giLCJzb3VyY2VzQ29udGVudCI6WyIvLyBPbHltcGVcbmltcG9ydCB7IHJlZ2lzdGVyQnJpY2sgfSBmcm9tICdvbHltcGUnO1xuaW1wb3J0IHsgUmVhY3RCcmljaywgdXNlUHJvcGVydHkgfSBmcm9tICdAb2x5bXBlaW8vY29yZSc7XG5cbi8vIFJlYWN0XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RHcmlkIH0gZnJvbSAnQHNpbGV2aXMvcmVhY3RncmlkJztcbmltcG9ydCAnQHNpbGV2aXMvcmVhY3RncmlkL3N0eWxlcy5jc3MnO1xuXG4vLyBJbnRlcm5hbFxuaW1wb3J0IHsgaW5pdERhdGEgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvZGF0YSc7XG5pbXBvcnQgeyBpbml0V3JhcHBlcnMgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvd3JhcHBlcnMnO1xuaW1wb3J0IHsgaW5pdEZpbHRlcmVkQ29sdW1ucywgdXNlQ29sdW1ucywgaGFuZGxlT25Db2x1bW5SZXNpemVkLCBoYW5kbGVPbkNvbHVtbnNSZW9yZGVyZWQgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvY29sdW1ucyc7XG5pbXBvcnQgeyBpbml0Um93cywgdXNlUm93cyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9yb3dzJztcbmltcG9ydCB7IGluaXRCb3gsIHVzZUJveCB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9ib3gnO1xuaW1wb3J0IHsgaGFuZGxlT25DZWxsc0NoYW5nZWQgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvY2hhbmdlcyc7XG5pbXBvcnQgeyBpbml0VHJpZ2dlcnMsIHVzZVJlZHJhdyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC90cmlnZ2Vycyc7XG5pbXBvcnQgeyBpbml0U2Nyb2xsLCB1c2VSZWRyYXdBZnRlclNjcm9sbCB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9zY3JvbGwnO1xuaW1wb3J0IHsgaW5pdENlbGxzIH0gZnJvbSAnLi4vY29tbW9uL2ludGVybmFsL2NlbGxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUkdSZWFjdEdyaWQgZXh0ZW5kcyBSZWFjdEJyaWNrIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIGluaXQoJCkge1xuICAgICAgICAvLyBEYXRhL0NvbmZpZyB0byBSb3dzL0NvbHVtbnMgZmxvd1xuICAgICAgICBpbml0Q2VsbHMoJCk7XG4gICAgICAgIGNvbnN0IF9yZWxvYWQgPSBpbml0VHJpZ2dlcnMoJCk7XG4gICAgICAgIGNvbnN0IF9kYXRhID0gaW5pdERhdGEoJCwgX3JlbG9hZCk7XG4gICAgICAgIGNvbnN0IF93cmFwcGVycyA9IGluaXRXcmFwcGVycygkLCBfZGF0YSk7XG4gICAgICAgIGNvbnN0IF9maWx0ZXJlZENvbHVtbnMgPSBpbml0RmlsdGVyZWRDb2x1bW5zKCQsIF93cmFwcGVycyk7XG4gICAgICAgIGluaXRSb3dzKCQsIF93cmFwcGVycywgX2ZpbHRlcmVkQ29sdW1ucyk7XG5cbiAgICAgICAgLy8gQm91bmRpbmcgYm94IGZsb3dcbiAgICAgICAgaW5pdEJveCgkKTtcblxuICAgICAgICAvLyBTY3JvbGwgXG4gICAgICAgIGluaXRTY3JvbGwoJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgc3RhdGljIGdldFJlYWN0Q29tcG9uZW50KCQpIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIC8vIERpc3BsYXlcbiAgICAgICAgICAgIGNvbnN0IGJveCA9IHVzZUJveCgkKTtcbiAgICAgICAgICAgIGNvbnN0IGhpZGRlbiA9IHVzZVByb3BlcnR5KCQsICdIaWRkZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93Q29udGVudE92ZXJmbG93ID0gdXNlUHJvcGVydHkoJCwgJ0FsbG93IENvbnRlbnQgT3ZlcmZsb3cnKTtcblxuICAgICAgICAgICAgLy8gRGF0YVxuICAgICAgICAgICAgY29uc3Qgcm93cyA9IHVzZVJvd3MoJCk7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gdXNlQ29sdW1ucygkKTtcblxuICAgICAgICAgICAgLy8gQmVoYXZpb3JzXG4gICAgICAgICAgICBjb25zdCByYW5nZVNlbGVjdGlvbiA9IHVzZVByb3BlcnR5KCQsICdFbmFibGUgUmFuZ2UgU2VsZWN0aW9uJyk7XG4gICAgICAgICAgICBjb25zdCByb3dTZWxlY3Rpb24gPSB1c2VQcm9wZXJ0eSgkLCAnRW5hYmxlIFJvdyBTZWxlY3Rpb24nKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbFNlbGVjdGlvbiA9IHVzZVByb3BlcnR5KCQsICdFbmFibGUgQ29sdW1uIFNlbGVjdGlvbicpO1xuICAgICAgICAgICAgY29uc3QgZmlsbEhhbmRsZSA9IHVzZVByb3BlcnR5KCQsICdFbmFibGUgRmlsbCBIYW5kbGUnKTtcblxuICAgICAgICAgICAgLy8gU3RpY2t5XG4gICAgICAgICAgICBjb25zdCBzdGlja1RvcCA9IHVzZVByb3BlcnR5KCQsICdTdGlja3kgVG9wIFJvd3MnKTtcbiAgICAgICAgICAgIGNvbnN0IHN0aWNrQm90dG9tID0gdXNlUHJvcGVydHkoJCwgJ1N0aWNreSBCb3R0b20gUm93cycpO1xuICAgICAgICAgICAgY29uc3Qgc3RpY2tMZWZ0ID0gdXNlUHJvcGVydHkoJCwgJ1N0aWNreSBMZWZ0IENvbHVtbnMnKTtcbiAgICAgICAgICAgIGNvbnN0IHN0aWNrUmlnaHQgPSB1c2VQcm9wZXJ0eSgkLCAnU3RpY2t5IFJpZ2h0IENvbHVtbnMnKTtcblxuICAgICAgICAgICAgLy8gUmVkcmF3IGhvb2tcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICAgICAgICAgIHVzZVJlZHJhd0FmdGVyU2Nyb2xsKCQsIGNvbnRhaW5lclJlZik7XG4gICAgICAgICAgICB1c2VSZWRyYXcoJCk7XG5cbiAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgZ3JpZFxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgey8qIFJlYWN0R3JpZCBjb21wb25lbnQgKi99XG4gICAgICAgICAgICAgICAgICAgIDxSZWFjdEdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9e3Jvd3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DZWxsc0NoYW5nZWQ9e2hhbmRsZU9uQ2VsbHNDaGFuZ2VkLmJpbmQodW5kZWZpbmVkLCAkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGxIYW5kbGU9e2ZpbGxIYW5kbGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0aWNreVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5TGVmdENvbHVtbnM9e3N0aWNrTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJpZ2h0Q29sdW1ucz17c3RpY2tSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVRvcFJvd3M9e3N0aWNrVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Qm90dG9tUm93cz17c3RpY2tCb3R0b219XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUmFuZ2VTZWxlY3Rpb249e3JhbmdlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29sdW1uU2VsZWN0aW9uPXtjb2xTZWxlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb249e3Jvd1NlbGVjdGlvbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzaXppbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sdW1uUmVzaXplZD17aGFuZGxlT25Db2x1bW5SZXNpemVkLmJpbmQodW5kZWZpbmVkLCAkKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVvcmRlcmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgb25Db2x1bW5zUmVvcmRlcmVkPXtoYW5kbGVPbkNvbHVtbnNSZW9yZGVyZWQuYmluZCh1bmRlZmluZWQsICQpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIHsvKiBTdHlsaW5nICovfVxuICAgICAgICAgICAgICAgICAgICA8c3R5bGUganN4PntgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXcmFwcGVyIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJHtoaWRkZW4gPyAnbm9uZScgOiAnaW5saW5lLWJsb2NrJ307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICR7Ym94LndpZHRofXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJHtib3guaGVpZ2h0fXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAke2FsbG93Q29udGVudE92ZXJmbG93ID8gJ3Zpc2libGUnIDogJ3Njcm9sbCd9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFjazogcHV0IHRoZSBlZGl0b3IgY2VsbCBpbiB0aGUgcmlnaHQgcGxhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHstYm94Lnh9cHgsICR7LWJveC55fXB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFuZSBzdHlsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYgOmdsb2JhbCgucmctcGFuZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhbCBjZWxsIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIZWFkZXIgY2VsbCBzdHlsaW5nIHRvIG1hdGNoIE1VSSBUYWJsZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1oZWFkZXItY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIGNlbGwgc3R5bGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2IDpnbG9iYWwoLnJnLW51bWJlci1jZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0IGNlbGwgc3R5bGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2IDpnbG9iYWwoLnJnLXRleHQtY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG92ZXIgZWZmZWN0IGZvciBjZWxscyB0byBsb29rIGxpa2UgTVVJIFRhYmxlIHJvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsKTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Nyb2xsYmFyIHN0eWxpbmcgdG8gbWF0Y2ggTVVJJ3Mgc2Nyb2xsYmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBgfTwvc3R5bGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxucmVnaXN0ZXJCcmljaygnMDE5MTU0YzQ2MDA3OThmMTA1YWEnLCBSR1JlYWN0R3JpZCk7XG4iXX0= */\n/*@ sourceURL=/builds/marketplace/reactgrid/src/web/RGReactGrid.jsx */")));
198
+ id: "3744793249",
199
+ dynamic: [hidden ? 'none' : 'inline-block', box.width, box.height, allowContentOverflow ? 'visible' : 'scroll', fontSize, -gridPosition.x, -gridPosition.y, fontSize]
200
+ }, "div.__jsx-style-dynamic-selector{display:".concat(hidden ? 'none' : 'inline-block', ";width:").concat(box.width, "px;height:").concat(box.height, "px;overflow:").concat(allowContentOverflow ? 'visible' : 'scroll', ";font-family:'Roboto',sans-serif;}div.__jsx-style-dynamic-selector .rg-celleditor{font-size:").concat(fontSize, "px !important;-webkit-transform:translate(").concat(-gridPosition.x, "px,").concat(-gridPosition.y, "px);-ms-transform:translate(").concat(-gridPosition.x, "px,").concat(-gridPosition.y, "px);transform:translate(").concat(-gridPosition.x, "px,").concat(-gridPosition.y, "px);}div.__jsx-style-dynamic-selector .rg-pane{box-shadow:0px 4px 6px rgba(0,0,0,0.1);background-color:#fff;}div.__jsx-style-dynamic-selector .rg-cell{padding:10px;font-size:").concat(fontSize, "px !important;border-bottom:1px solid #e0e0e0;color:rgba(0,0,0,0.87);-webkit-transition:background-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out;}div.__jsx-style-dynamic-selector .rg-header-cell{background-color:#f5f5f5;font-weight:500;color:rgba(0,0,0,0.87);font-size:14px;border-bottom:1px solid #e0e0e0;padding:12px;}div.__jsx-style-dynamic-selector .rg-number-cell{text-align:right;padding-right:14px;color:rgba(0,0,0,0.87);padding-left:12px;}div.__jsx-style-dynamic-selector .rg-text-cell{text-align:left;color:rgba(0,0,0,0.87);padding-left:12px;}div.__jsx-style-dynamic-selector .rg-cell:hover{background-color:#f5f5f5;}div.__jsx-style-dynamic-selector::-webkit-scrollbar{display:block;width:8px;height:8px;}div.__jsx-style-dynamic-selector::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,0.2);border-radius:4px;}div.__jsx-style-dynamic-selector::-webkit-scrollbar-track{background-color:#f0f0f0;}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbWFya2V0cGxhY2UvcmVhY3RncmlkL3NyYy93ZWIvUkdSZWFjdEdyaWQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStHZ0MsQUFJa0UsQUFTZSxBQU1WLEFBTTdCLEFBU1ksQUFVUixBQVFELEFBT1MsQUFLWCxBQUtzQixBQUlYLGFBL0MyQixDQXVDMUMsRUFaZ0IsQ0FSUCxPQXFCUixDQS9CSyxBQXlCcEIsQUFjQSxRQUpzQixFQUh0QixDQXJCOEIsQ0F6Q1csRUFlZixBQWtDSixFQWxCUSxVQW1DOUIsQ0F6RHdGLEtBeUN4RixFQVJzQixFQTFCdEIsR0FnQm1CLENBVmlCLFNBckJNLEdBMEMxQyxFQVZvQyxrQkFWTixjQVdiLENBaEN5QixRQXNCTyxJQVdqRCwwQkFoQ3FDLGdDQUNyQyxvQ0FxQkEsK0ZBZkEiLCJmaWxlIjoiL2J1aWxkcy9tYXJrZXRwbGFjZS9yZWFjdGdyaWQvc3JjL3dlYi9SR1JlYWN0R3JpZC5qc3giLCJzb3VyY2VzQ29udGVudCI6WyIvLyBPbHltcGVcbmltcG9ydCB7IHJlZ2lzdGVyQnJpY2sgfSBmcm9tICdvbHltcGUnO1xuaW1wb3J0IHsgUmVhY3RCcmljaywgdXNlUHJvcGVydHkgfSBmcm9tICdAb2x5bXBlaW8vY29yZSc7XG5cbi8vIFJlYWN0XG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RHcmlkIH0gZnJvbSAnQHNpbGV2aXMvcmVhY3RncmlkJztcbmltcG9ydCAnQHNpbGV2aXMvcmVhY3RncmlkL3N0eWxlcy5jc3MnO1xuXG4vLyBJbnRlcm5hbFxuaW1wb3J0IHsgaW5pdERhdGEgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvZGF0YSc7XG5pbXBvcnQgeyBpbml0V3JhcHBlcnMgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvd3JhcHBlcnMnO1xuaW1wb3J0IHsgaW5pdEZpbHRlcmVkQ29sdW1ucywgdXNlQ29sdW1ucywgaGFuZGxlT25Db2x1bW5SZXNpemVkLCBoYW5kbGVPbkNvbHVtbnNSZW9yZGVyZWQgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvY29sdW1ucyc7XG5pbXBvcnQgeyBpbml0Um93cywgdXNlUm93cyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9yb3dzJztcbmltcG9ydCB7IGluaXRCb3gsIHVzZUJveCB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9ib3gnO1xuaW1wb3J0IHsgaGFuZGxlT25DZWxsc0NoYW5nZWQgfSBmcm9tICcuLi9jb21tb24vaW50ZXJuYWwvY2hhbmdlcyc7XG5pbXBvcnQgeyBpbml0VHJpZ2dlcnMsIHVzZVJlZHJhdyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC90cmlnZ2Vycyc7XG5pbXBvcnQgeyBpbml0U2Nyb2xsLCB1c2VSZWRyYXdBZnRlclNjcm9sbCB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC9zY3JvbGwnO1xuaW1wb3J0IHsgaW5pdENlbGxzIH0gZnJvbSAnLi4vY29tbW9uL2ludGVybmFsL2NlbGxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUkdSZWFjdEdyaWQgZXh0ZW5kcyBSZWFjdEJyaWNrIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIGluaXQoJCkge1xuICAgICAgICAvLyBEYXRhL0NvbmZpZyB0byBSb3dzL0NvbHVtbnMgZmxvd1xuICAgICAgICBpbml0Q2VsbHMoJCk7XG4gICAgICAgIGNvbnN0IF9yZWxvYWQgPSBpbml0VHJpZ2dlcnMoJCk7XG4gICAgICAgIGNvbnN0IF9kYXRhID0gaW5pdERhdGEoJCwgX3JlbG9hZCk7XG4gICAgICAgIGNvbnN0IF93cmFwcGVycyA9IGluaXRXcmFwcGVycygkLCBfZGF0YSk7XG4gICAgICAgIGNvbnN0IF9maWx0ZXJlZENvbHVtbnMgPSBpbml0RmlsdGVyZWRDb2x1bW5zKCQsIF93cmFwcGVycyk7XG4gICAgICAgIGluaXRSb3dzKCQsIF93cmFwcGVycywgX2ZpbHRlcmVkQ29sdW1ucyk7XG5cbiAgICAgICAgLy8gQm91bmRpbmcgYm94IGZsb3dcbiAgICAgICAgaW5pdEJveCgkKTtcblxuICAgICAgICAvLyBTY3JvbGwgXG4gICAgICAgIGluaXRTY3JvbGwoJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgc3RhdGljIGdldFJlYWN0Q29tcG9uZW50KCQpIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIC8vIERpc3BsYXlcbiAgICAgICAgICAgIGNvbnN0IGJveCA9IHVzZUJveCgkKTtcbiAgICAgICAgICAgIGNvbnN0IGhpZGRlbiA9IHVzZVByb3BlcnR5KCQsICdIaWRkZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93Q29udGVudE92ZXJmbG93ID0gdXNlUHJvcGVydHkoJCwgJ0FsbG93IENvbnRlbnQgT3ZlcmZsb3cnKTtcbiAgICAgICAgICAgIGNvbnN0IGZvbnRTaXplID0gdXNlUHJvcGVydHkoJCwgJ0ZvbnQgU2l6ZScpO1xuXG4gICAgICAgICAgICAvLyBEYXRhXG4gICAgICAgICAgICBjb25zdCByb3dzID0gdXNlUm93cygkKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSB1c2VDb2x1bW5zKCQpO1xuXG4gICAgICAgICAgICAvLyBCZWhhdmlvcnNcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0aW9uID0gdXNlUHJvcGVydHkoJCwgJ0VuYWJsZSBSYW5nZSBTZWxlY3Rpb24nKTtcbiAgICAgICAgICAgIGNvbnN0IHJvd1NlbGVjdGlvbiA9IHVzZVByb3BlcnR5KCQsICdFbmFibGUgUm93IFNlbGVjdGlvbicpO1xuICAgICAgICAgICAgY29uc3QgY29sU2VsZWN0aW9uID0gdXNlUHJvcGVydHkoJCwgJ0VuYWJsZSBDb2x1bW4gU2VsZWN0aW9uJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxsSGFuZGxlID0gdXNlUHJvcGVydHkoJCwgJ0VuYWJsZSBGaWxsIEhhbmRsZScpO1xuXG4gICAgICAgICAgICAvLyBTdGlja3lcbiAgICAgICAgICAgIGNvbnN0IHN0aWNrVG9wID0gdXNlUHJvcGVydHkoJCwgJ1N0aWNreSBUb3AgUm93cycpO1xuICAgICAgICAgICAgY29uc3Qgc3RpY2tCb3R0b20gPSB1c2VQcm9wZXJ0eSgkLCAnU3RpY2t5IEJvdHRvbSBSb3dzJyk7XG4gICAgICAgICAgICBjb25zdCBzdGlja0xlZnQgPSB1c2VQcm9wZXJ0eSgkLCAnU3RpY2t5IExlZnQgQ29sdW1ucycpO1xuICAgICAgICAgICAgY29uc3Qgc3RpY2tSaWdodCA9IHVzZVByb3BlcnR5KCQsICdTdGlja3kgUmlnaHQgQ29sdW1ucycpO1xuXG4gICAgICAgICAgICAvLyBSZWRyYXcgaG9va1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XG4gICAgICAgICAgICB1c2VSZWRyYXdBZnRlclNjcm9sbCgkLCBjb250YWluZXJSZWYpO1xuICAgICAgICAgICAgdXNlUmVkcmF3KCQpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBnbG9iYWwgcG9zaXRpb24gb2YgdGhlIGdyaWQgdG8gc2V0IHRoZSBlZGl0b3IgY2VsbCBpbiB0aGUgcmlnaHQgcGxhY2VcbiAgICAgICAgICAgIGNvbnN0IFtncmlkUG9zaXRpb24sIHNldEdyaWRQb3NpdGlvbl0gPSB1c2VTdGF0ZSh7IHg6IDAsIHk6IDAgfSk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVCb3hQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gY29udGFpbmVyUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIHNldEdyaWRQb3NpdGlvbih7IHg6IHJlY3QubGVmdCwgeTogcmVjdC50b3AgfSk7XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgZ3JpZFxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgey8qIFJlYWN0R3JpZCBjb21wb25lbnQgKi99XG4gICAgICAgICAgICAgICAgICAgIDxSZWFjdEdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9e3Jvd3N9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DZWxsc0NoYW5nZWQ9e2hhbmRsZU9uQ2VsbHNDaGFuZ2VkLmJpbmQodW5kZWZpbmVkLCAkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGxIYW5kbGU9e2ZpbGxIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzTG9jYXRpb25DaGFuZ2VkPXt1cGRhdGVCb3hQb3NpdGlvbn0gLy8gQ29tcHV0ZSB0aGUgZ2xvYmFsIHBvc2l0aW9uIG9mIHRoZSBncmlkIHRvIHNldCB0aGUgZWRpdG9yIGNlbGwgaW4gdGhlIHJpZ2h0IHBsYWNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0aWNreVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5TGVmdENvbHVtbnM9e3N0aWNrTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJpZ2h0Q29sdW1ucz17c3RpY2tSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVRvcFJvd3M9e3N0aWNrVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Qm90dG9tUm93cz17c3RpY2tCb3R0b219XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUmFuZ2VTZWxlY3Rpb249e3JhbmdlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29sdW1uU2VsZWN0aW9uPXtjb2xTZWxlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVSb3dTZWxlY3Rpb249e3Jvd1NlbGVjdGlvbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzaXppbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ29sdW1uUmVzaXplZD17aGFuZGxlT25Db2x1bW5SZXNpemVkLmJpbmQodW5kZWZpbmVkLCAkKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVvcmRlcmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgb25Db2x1bW5zUmVvcmRlcmVkPXtoYW5kbGVPbkNvbHVtbnNSZW9yZGVyZWQuYmluZCh1bmRlZmluZWQsICQpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIHsvKiBTdHlsaW5nICovfVxuICAgICAgICAgICAgICAgICAgICA8c3R5bGUganN4PntgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXcmFwcGVyIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJHtoaWRkZW4gPyAnbm9uZScgOiAnaW5saW5lLWJsb2NrJ307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICR7Ym94LndpZHRofXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJHtib3guaGVpZ2h0fXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAke2FsbG93Q29udGVudE92ZXJmbG93ID8gJ3Zpc2libGUnIDogJ3Njcm9sbCd9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFjazogcHV0IHRoZSBlZGl0b3IgY2VsbCBpbiB0aGUgcmlnaHQgcGxhY2UsIGJhc2VkIG9uIHRoZSBjb21wdXRlZCBnbG9iYWwgcG9zaXRpb24gb2YgdGhlIGdyaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAke2ZvbnRTaXplfXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHstZ3JpZFBvc2l0aW9uLnh9cHgsICR7LWdyaWRQb3NpdGlvbi55fXB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFuZSBzdHlsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYgOmdsb2JhbCgucmctcGFuZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhbCBjZWxsIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7Zm9udFNpemV9cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlYWRlciBjZWxsIHN0eWxpbmcgdG8gbWF0Y2ggTVVJIFRhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZGl2IDpnbG9iYWwoLnJnLWhlYWRlci1jZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgY2VsbCBzdHlsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXYgOmdsb2JhbCgucmctbnVtYmVyLWNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGV4dCBjZWxsIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy10ZXh0LWNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG92ZXIgZWZmZWN0IGZvciBjZWxscyB0byBsb29rIGxpa2UgTVVJIFRhYmxlIHJvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA6Z2xvYmFsKC5yZy1jZWxsKTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Nyb2xsYmFyIHN0eWxpbmcgdG8gbWF0Y2ggTVVJJ3Mgc2Nyb2xsYmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBgfTwvc3R5bGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxucmVnaXN0ZXJCcmljaygnMDE5MTU0YzQ2MDA3OThmMTA1YWEnLCBSR1JlYWN0R3JpZCk7XG4iXX0= */\n/*@ sourceURL=/builds/marketplace/reactgrid/src/web/RGReactGrid.jsx */")));
176
201
  };
177
202
  }
178
203
  }]);
@@ -685,13 +710,13 @@ __webpack_require__.r(__webpack_exports__);
685
710
  */
686
711
  function initBox($) {
687
712
  // Listen to the component position and size
688
- (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.combineLatest)([$.observe('X'), $.observe('Y'), $.observe('Width'), $.observe('Height')])
713
+ (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.combineLatest)([$.observe('Width'), $.observe('Height')])
689
714
 
690
715
  // Debounce the changes to avoid to many rerendering
691
716
  .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.throttleTime)(100, undefined, { leading: true, trailing: true }))
692
717
 
693
718
  // Set the final box
694
- .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.tap)(([x, y, width, height]) => $.set('_rgBox', { x, y, width, height })))
719
+ .pipe((0,rxjs__WEBPACK_IMPORTED_MODULE_1__.tap)(([width, height]) => $.set('_rgBox', { width, height })))
695
720
 
696
721
  // Run
697
722
  .subscribe();
@@ -702,8 +727,7 @@ function initBox($) {
702
727
  * @return {!*}
703
728
  */
704
729
  function useBox($) {
705
- return (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_0__.useProperty)($, '_rgBox')
706
- ?? { x: $.get('X'), y: $.get('Y'), width: $.get('Width'), height: $.get('Height') };
730
+ return (0,_olympeio_core__WEBPACK_IMPORTED_MODULE_0__.useProperty)($, '_rgBox') ?? {width: $.get('Width'), height: $.get('Height') };
707
731
  }
708
732
 
709
733
 
package/main-web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main-web.js","mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAa;AAC7C;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,IAAI,KAAK,kBAAkB;AACvG;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA,kBAAkB,MAAM,GAAG,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB;AACO;AACP,kBAAkB,aAAa,GAAG,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB;AACO;AACP,6BAA6B,mBAAmB;AAChD,gBAAgB,uCAAuC;AACvD;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,YAAY;AACZ;AACO;AACP,6BAA6B,mBAAmB;AAChD;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzSA;AACmC;;AAEnC;AACiC;AACe;AAC0C;AACnD;AACI;;AAE3C;AACA,aAAa,QAAQ;AACrB,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,GAAG;AACjB,cAAc,GAAG;AACjB,cAAc,aAAa;AAC3B;AACO;;AAEP;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA,QAAQ,8CAAI;AACZ;AACA;;AAEA;AACA;AACA,4BAA4B,6DAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA,gBAAgB,8CAAI,8BAA8B,kBAAkB,WAAW,gBAAgB;AAC/F;AACA;;AAEA;AACA;AACA,gBAAgB,gEAAwB;AACxC;AACA;;AAEA;AACA;AACA,gBAAgB,+DAAuB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,oDAAY;AACtC,0BAA0B,oDAAY;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,wDAAa;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAS;AACzC;AACA;;AAEA;AACA;AACA,gBAAgB,wDAAa;AAC7B;AACA,SAAS;;AAET;AACA;AACA;;;;;;;;;;;;;;;;;;AClHqC;;AAErC;AACA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACqC;AACQ;;AAE7C;AACgE;;AAEhE;AACyC;AACO;;AAEhD;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA,8BAA8B,GAAG;AACjC,8BAA8B,GAAG;;AAEjC;AACA,WAAW,mDAAa;AACxB;AACA;AACA,kBAAkB,yCAAG,6BAA6B,sDAAW;AAC7D,kBAAkB,0DAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,kDAAkD;AACzG;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA,iDAAiD,+CAAW;AAC5D;AACA;AACA,SAAS;;AAET;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP,4BAA4B,2DAAW;AACvC;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACO;AACP,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,W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","sources":["webpack://@olympeio-extensions/reactgrid/webpack/universalModuleDefinition","webpack://@olympeio-extensions/reactgrid/./src/web/RGReactGrid.jsx","webpack://@olympeio-extensions/reactgrid/./src/common/RGCreateColumnConfig.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeMetadata.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeProperties.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGroupTuplesByIndexes.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForCloudObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForJSONString.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGWrapObject.js","webpack://@olympeio-extensions/reactgrid/./src/common/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/box.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cells.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/changes.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cloudobjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/columns.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/data.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/rows.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/scroll.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/triggers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/wrappers.js","webpack://@olympeio-extensions/reactgrid/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"@silevis/reactgrid\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"@silevis/reactgrid/styles.css\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"jsonpath-plus\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"react\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"rxjs\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"styled-jsx/style\"","webpack://@olympeio-extensions/reactgrid/external umd \"olympe\"","webpack://@olympeio-extensions/reactgrid/webpack/bootstrap","webpack://@olympeio-extensions/reactgrid/webpack/runtime/compat get default export","webpack://@olympeio-extensions/reactgrid/webpack/runtime/define property getters","webpack://@olympeio-extensions/reactgrid/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/reactgrid/webpack/runtime/make namespace object","webpack://@olympeio-extensions/reactgrid/./src/main-web.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/reactgrid\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/reactgrid\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","// Olympe\nimport { registerBrick } from 'olympe';\nimport { ReactBrick, useProperty } from '@olympeio/core';\n\n// React\nimport React, { useRef } from 'react';\nimport { ReactGrid } from '@silevis/reactgrid';\nimport '@silevis/reactgrid/styles.css';\n\n// Internal\nimport { initData } from '../common/internal/data';\nimport { initWrappers } from '../common/internal/wrappers';\nimport { initFilteredColumns, useColumns, handleOnColumnResized, handleOnColumnsReordered } from '../common/internal/columns';\nimport { initRows, useRows } from '../common/internal/rows';\nimport { initBox, useBox } from '../common/internal/box';\nimport { handleOnCellsChanged } from '../common/internal/changes';\nimport { initTriggers, useRedraw } from '../common/internal/triggers';\nimport { initScroll, useRedrawAfterScroll } from '../common/internal/scroll';\nimport { initCells } from '../common/internal/cells';\n\nexport default class RGReactGrid extends ReactBrick {\n\n /**\n * @override\n */\n init($) {\n // Data/Config to Rows/Columns flow\n initCells($);\n const _reload = initTriggers($);\n const _data = initData($, _reload);\n const _wrappers = initWrappers($, _data);\n const _filteredColumns = initFilteredColumns($, _wrappers);\n initRows($, _wrappers, _filteredColumns);\n\n // Bounding box flow\n initBox($);\n\n // Scroll \n initScroll($);\n }\n\n /**\n * @override\n */\n static getReactComponent($) {\n return () => {\n // Display\n const box = useBox($);\n const hidden = useProperty($, 'Hidden');\n const allowContentOverflow = useProperty($, 'Allow Content Overflow');\n\n // Data\n const rows = useRows($);\n const columns = useColumns($);\n\n // Behaviors\n const rangeSelection = useProperty($, 'Enable Range Selection');\n const rowSelection = useProperty($, 'Enable Row Selection');\n const colSelection = useProperty($, 'Enable Column Selection');\n const fillHandle = useProperty($, 'Enable Fill Handle');\n\n // Sticky\n const stickTop = useProperty($, 'Sticky Top Rows');\n const stickBottom = useProperty($, 'Sticky Bottom Rows');\n const stickLeft = useProperty($, 'Sticky Left Columns');\n const stickRight = useProperty($, 'Sticky Right Columns');\n\n // Redraw hook\n const containerRef = useRef(null);\n useRedrawAfterScroll($, containerRef);\n useRedraw($);\n\n // Render the grid\n return (\n <div ref={containerRef}>\n {/* ReactGrid component */}\n <ReactGrid\n // Data\n rows={rows}\n columns={columns}\n onCellsChanged={handleOnCellsChanged.bind(undefined, $)}\n enableFillHandle={fillHandle}\n\n // Sticky\n stickyLeftColumns={stickLeft}\n stickyRightColumns={stickRight}\n stickyTopRows={stickTop}\n stickyBottomRows={stickBottom}\n\n // Selection\n enableRangeSelection={rangeSelection}\n enableColumnSelection={colSelection}\n enableRowSelection={rowSelection}\n\n // Resizing\n onColumnResized={handleOnColumnResized.bind(undefined, $)}\n\n // Reordering\n onColumnsReordered={handleOnColumnsReordered.bind(undefined, $)}\n />\n\n {/* Styling */}\n <style jsx>{`\n // Wrapper styling\n div {\n display: ${hidden ? 'none' : 'inline-block'};\n width: ${box.width}px;\n height: ${box.height}px;\n overflow: ${allowContentOverflow ? 'visible' : 'scroll'};\n font-family: 'Roboto', sans-serif;\n }\n\n // Hack: put the editor cell in the right place\n div :global(.rg-celleditor) {\n transform: translate(${-box.x}px, ${-box.y}px);\n }\n\n // Pane styling\n div :global(.rg-pane) {\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n background-color: #fff; \n }\n\n // General cell styling\n div :global(.rg-cell) {\n padding: 10px;\n border-bottom: 1px solid #e0e0e0;\n font-size: 14px;\n color: rgba(0, 0, 0, 0.87);\n transition: background-color 0.2s ease-in-out;\n }\n\n // Header cell styling to match MUI Table header\n div :global(.rg-header-cell) {\n background-color: #f5f5f5;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.87);\n font-size: 14px;\n border-bottom: 1px solid #e0e0e0;\n padding: 12px;\n }\n\n // Number cell styling\n div :global(.rg-number-cell) {\n text-align: right;\n padding-right: 12px;\n font-family: 'Roboto Mono', monospace;\n color: rgba(0, 0, 0, 0.87);\n }\n\n // Text cell styling\n div :global(.rg-text-cell) {\n text-align: left;\n font-size: 14px;\n color: rgba(0, 0, 0, 0.87);\n padding-left: 12px;\n }\n\n // Hover effect for cells to look like MUI Table rows\n div :global(.rg-cell):hover {\n background-color: #f5f5f5;\n }\n\n // Scrollbar styling to match MUI's scrollbars\n div::-webkit-scrollbar {\n display: block;\n width: 8px;\n height: 8px;\n }\n div::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n }\n div::-webkit-scrollbar-track {\n background-color: #f0f0f0;\n }\n `}</style>\n </div>\n );\n };\n }\n}\n\nregisterBrick('019154c4600798f105aa', RGReactGrid);\n","import { Brick, registerBrick } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGCreateColumnConfig extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {number} rank\n * @param {string} propertyPath\n * @param {string} header\n * @param {number} width\n * @param {string} type\n * @param {string|!Object} options\n * @param {boolean} editable\n * @param {boolean} resizable\n * @param {number} level\n * @param {function(!Object)} setObject\n */\n update(_$, [rank, propertyPath, header, width, type, options, editable, resizable, level], [setObject]) {\n setObject({\n Rank: rank,\n 'Property Path': propertyPath,\n Header: header,\n Width: width,\n Type: type,\n Options: fromJson(options)[0],\n Editable: editable,\n Resizable: resizable,\n Level: level\n });\n }\n}\n\nregisterBrick('01921d9038d9eb72f609', RGCreateColumnConfig);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeMetadata extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object)} setNewCell\n * @param {function(!Object)} setPreviousCell\n * @param {function(string|number)} setRowId\n * @param {function(string|number)} setColumnId\n * @param {function(string)} setType\n */\n update(_$, [change], [setNewCell, setPreviousCell, setRowId, setColumnId, setType]) {\n setNewCell(change.metadata.newCell);\n setPreviousCell(change.metadata.previousCell);\n setRowId(change.metadata.rowId);\n setColumnId(change.metadata.columnId);\n setType(change.metadata.type);\n }\n}\n\nregisterBrick('01920a4d4d8390252c91', RGGetChangeMetadata);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeProperties extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object|!CloudObject)} setObject\n * @param {function(!Object|!CloudObject)} setProperty\n * @param {function(!*)} setNewValue\n * @param {function(!*)} setOldValue\n */\n update(_$, [change], [setObject, setProperty, setNewValue, setOldValue]) {\n setObject(change.object);\n setProperty(change.property);\n setNewValue(change.newValue);\n setOldValue(change.oldValue);\n }\n}\n\nregisterBrick('0192055d7857bd08279c', RGGetChangeProperties);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGGroupTuplesByIndexes extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} data\n * @param {string} indexes\n * @param {function(!Array)} setGroupedData\n */\n update(_$, [data, indexes], [setGroupedData]) {\n // Get the indexes and make the grouping recursively\n const _indexes = indexes.split(',').map(index => parseInt(index));\n setGroupedData(groupBy(data.map(d => rgWrap(d)), _indexes, 0));\n }\n}\n\nregisterBrick('0192288806aa3cc82b95', RGGroupTuplesByIndexes);\n\n/**\n * Group data by indexes, for the given level\n * @param {!Array} wrappers\n * @param {!Array<number>} indexes\n * @param {number} level\n * @return {!Array}\n */\nfunction groupBy(wrappers, indexes, level) {\n // End of recursion\n if(level >= indexes.length || !Array.isArray(wrappers)) {\n return wrappers;\n }\n\n // Get the current working index\n const index = indexes[level] - level;\n\n // Group the data in a Map\n const groupedWrappers = wrappers.reduce((parents, wrapper) => {\n // Split the tuple into parts\n const [wrapped, child] = splitTuple(wrapper, index, level);\n const key = wrapped.rgGetKey();\n\n // If this key is not in a group yet\n if(!parents.has(key)) {\n // Create the new group\n parents.set(key, wrapped);\n }\n\n // If there is a child, add it to the group\n // (group the child itself also)\n if(child) {\n const parent = parents.get(key);\n parent.rgChildren.push(child);\n }\n\n // Done\n return parents;\n }, new Map());\n\n // Apply the grouping on the children\n return Array.from(groupedWrappers.values()).map(({ rgChildren, ...others }) => ({\n rgChildren: groupBy(rgChildren.map(c => rgWrap(c, level + 1)), indexes, level + 1),\n ...others\n }));\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {number} index \n * @param {number} level \n * @return {[!RGWrapper, *]}\n */\nfunction splitTuple(wrapper, index, level) {\n // Real tuple case\n if(wrapper._rgType === 'tuple') {\n // Extract the info\n const tuple = wrapper.rgObject;\n const wrapped = rgWrap(tuple[index], level);\n const before = tuple.slice(0, index);\n const after = tuple.slice(index + 1);\n const child = [...before, ...after];\n \n // Handle all cases\n if(child.length > 1) {\n return [wrapped, child];\n }\n else if(child.length > 0) {\n return [wrapped, child[0]];\n }\n else {\n return [wrapped, null];\n }\n }\n\n // Not a tuple case\n else {\n return [wrapper, null];\n }\n}\n","import { ActionBrick, registerBrick, Transaction, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForCloudObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} executeAsLarge\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, executeAsLarge], [forwardEvent, setErrorFlow]) {\n const t = new Transaction();\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n t.update(change.object, change.property, change.newValue);\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n const promise = executeAsLarge ? t.executeAsLarge() : t.execute();\n promise.then(forwardEvent)\n .catch(error => setErrorFlow(ErrorFlow.create(error.message, 0)));\n }\n}\n\nregisterBrick('01920a8134e1cf0fa551', RGProcessChangesForCloudObjects);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGProcessChangesForJSONString extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {string} json\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n * @param {function(string)} setNewJson\n */\n update(_$, [changes, json], [forwardEvent, setErrorFlow, setNewJson]) {\n const [data, error] = fromJson(json);\n if(!error) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n data[change.metadata.rowId][change.property] = change.newValue;\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n setNewJson(JSON.stringify(data));\n forwardEvent();\n }\n else {\n setErrorFlow(ErrorFlow.create(`input 'json' is not valid, error: ${error.message}`, 0));\n }\n }\n}\n\nregisterBrick('01921e064dbe25faec55', RGProcessChangesForJSONString);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} inPlace\n * @param {Array} data\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, inPlace, data], [forwardEvent, setErrorFlow]) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(!(change.metadata.newCell.validator?.(change.newValue) ?? true)) {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n if(inPlace) {\n changes.forEach(change => {\n change.object[change.property] = change.newValue;\n });\n }\n else {\n changes.forEach(change => {\n data[change.metadata.rowId][change.property] = change.newValue;\n });\n }\n forwardEvent();\n }\n}\n\nregisterBrick('01921e0d2b383c95bd22', RGProcessChangesForObjects);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGWrapObject extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!*} object\n * @param {number} level\n * @param {function(!RGWrapper)} setWrapped\n */\n update(_$, [object, level], [setWrapped]) {\n setWrapped(rgWrap(object, level));\n }\n}\n\nregisterBrick('019232c3d1873de0d259', RGWrapObject);\n","// Re-export\nexport { rgWrap, RGWrapper } from './internal/wrappers';\nexport { RGChange } from './internal/changes';\nexport { fromJson } from './internal/helpers';\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, throttleTime } from 'rxjs';\n\n/**\n * Init the bounding box\n * @param {!BrickContext} $ \n */\nexport function initBox($) {\n // Listen to the component position and size\n combineLatest([$.observe('X'), $.observe('Y'), $.observe('Width'), $.observe('Height')])\n\n // Debounce the changes to avoid to many rerendering\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n\n // Set the final box\n .pipe(tap(([x, y, width, height]) => $.set('_rgBox', { x, y, width, height })))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useBox($) {\n return useProperty($, '_rgBox')\n ?? { x: $.get('X'), y: $.get('Y'), width: $.get('Width'), height: $.get('Height') };\n}\n\n","// Internal\nimport { fromJson, validateEmail, error, warn } from './helpers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initCells($) {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n}\n\n/**\n * Generate a cell for the defined wrapper/column\n * @param {!BrickContext} $\n * @param {!RGWrapper} wrapper\n * @param {number} rowId\n * @param {!Object} column\n * @param {boolean} cellEdition\n * @return {!Object}\n */\nexport function generateCell($, wrapper, rowId, column, cellEdition) {\n try {\n // Get the cell value\n const value = wrapper.__rgGetValue(column['Property Path'] ?? '');\n\n // Get the options\n const [options, optionsError] = fromJson(column.Options);\n if(optionsError) {\n warn(`cannot parse column options, error: ${optionsError.message}`);\n }\n const validator = options.validator ? s => new RegExp(options.validator).test(s) : undefined;\n const common = {\n nonEditable: cellEdition === 'DISABLED' || (cellEdition === 'USE CONFIG' && !column.Editable),\n style: getCellStyle($)\n };\n\n // Generate the cell depending on the type\n switch(column.Type) {\n case 'TEXT': return generateTextCell(value, options, common, column, validator);\n case 'NUMBER': return generateNumberCell(value, options, common);\n case 'EMAIL': return generateEmailCell(value, common, validator);\n case 'DATE': \n case 'TIME': return generateDateTimeCell(value, options, common, column);\n case 'CHECKBOX': return generateCheckboxCell(value, options, common);\n case 'DROPDOWN': return generateDropdownCell(value, options, common, column, $, rowId);\n case 'HEADER': return generateHeaderCell(value, options, common);\n case 'CHEVRON': return generateChevronCell(value, options, common, wrapper, $);\n\n // AUTO case\n default:\n if(value instanceof Date) {\n return generateCell($, wrapper, rowId, { ...column, Type: 'DATE' }, cellEdition);\n }\n switch(typeof value) {\n case 'number': return generateCell($, wrapper, rowId, { ...column, Type: 'NUMBER' }, cellEdition);\n case 'boolean': return generateCell($, wrapper, rowId, { ...column, Type: 'CHECKBOX' }, cellEdition);\n default: return generateCell($, wrapper, rowId, { ...column, Type: 'TEXT', _cast: true }, cellEdition);\n }\n }\n }\n catch(err) {\n error(`cannot generate cell, error: ${err.message}`);\n return errorCell();\n }\n}\n\n/**\n * Get the cell value, depending on its type\n * @param {!Object} cell\n * @return {*}\n */\nexport function getCellValue(cell) {\n switch(cell.type) {\n case 'number': return cell.value;\n case 'date': return cell.date;\n case 'time': return cell.time;\n case 'checkbox': return cell.checked;\n case 'dropdown': return cell.selectedValue;\n default: return cell.text;\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {function(string):boolean} validator \n * @return {!TextCell} \n */\nfunction generateTextCell(value, options, common, column, validator) {\n return {\n type: 'text',\n text: (column._cast ? String(value ?? '') : value ?? ''),\n placeholder: options.placeholder,\n validator: validator,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!NumberCell} \n */\nfunction generateNumberCell(value, options, common) {\n return {\n type: 'number',\n value: value,\n format: new Intl.NumberFormat(options.locale, options.format),\n nanToZero: options.nanToZero,\n hideZero: options.hideZero,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} common \n * @param {function(string):boolean} validator \n * @return {!EmailCell} \n */\nfunction generateEmailCell(value, common, validator) {\n return {\n type: 'email',\n text: value ?? '',\n validator: validator ?? validateEmail,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @return {!DateCell|!TimeCell} \n */\nfunction generateDateTimeCell(value, options, common, column) {\n const type = column.Type.toLowerCase();\n return {\n type: type,\n [type]: value instanceof Date ? value : new Date(value),\n format: new Intl.DateTimeFormat(options.locale, options.format ?? { [`${type}Style`]: 'short' }),\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!CheckboxCell} \n */\nfunction generateCheckboxCell(value, options, common) {\n return {\n type: 'checkbox',\n checked: Boolean(value ?? false),\n checkedText: options.checkedText,\n uncheckedText: options.uncheckedText,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {!BrickContext} $ \n * @param {number} rowId\n * @return {!DropdownCell} \n */\nfunction generateDropdownCell(value, options, common, column, $, rowId) {\n const id = `${rowId}.${column.columnId}`;\n const isOpen = id === $.get('_rgDropdownIsOpen');\n const inputValue = isOpen ? $.get('_rgDropdownInputValue') : '';\n return {\n type: 'dropdown',\n selectedValue: value,\n values: options.values ?? [],\n isDisabled: options.isDisabled,\n isOpen: isOpen,\n inputValue: inputValue,\n ...common\n };\n}\n\n/**\n * Handle the dropdowns internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n */\nexport function handleDropdownCellChange($, change) {\n const id = `${change.rowId}.${change.columnId}`;\n if(change.newCell.isOpen && !change.newCell.isDisabled) {\n $.set('_rgDropdownIsOpen', id);\n $.set('_rgDropdownInputValue', change.newCell.inputValue);\n }\n else {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!HeaderCell} \n */\nfunction generateHeaderCell(value, options, common) {\n return {\n type: 'header',\n text: value ?? options.text ?? '',\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!RGWrapper} wrapper\n * @param {!BrickContext} $ \n * @return {!ChevronCell} \n */\nfunction generateChevronCell(value, options, common, wrapper, $) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n if(!$.has(id)) {\n $.set(id, { isExpanded: options.isExpanded ?? false });\n }\n const state = $.get(id);\n return {\n type: 'chevron',\n text: value ?? options.text ?? '',\n indent: options.indent,\n hasChildren: wrapper.rgChildren.length > 0,\n ...state,\n ...common\n };\n}\n\n/**\n * Handle the chevrons internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n * @param {!RGWrapper} wrapper \n */\nexport function handleChevronCellChange($, change, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n $.set(id, { isExpanded: change.newCell.isExpanded });\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!RGWrapper} wrapper \n * @return {boolean}\n */\nexport function isChevronCellExpanded($, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n return $.get(id)?.isExpanded ?? false;\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!Object}\n */\nexport function getCellStyle($) {\n const borderStyle = { \n color: $.get('Border Color'),\n width: $.get('Border Width') \n };\n return {\n background: $.get('Default Color'),\n border: {\n left: borderStyle,\n top: borderStyle,\n right: borderStyle,\n bottom: borderStyle\n }\n };\n}\n\n/**\n * @return {!TextCell}\n */\nfunction errorCell() {\n return {\n type: 'text',\n text: '!ERROR',\n nonEditable: true,\n style: {\n color: 'red'\n }\n };\n}\n","// Olympe\nimport { ErrorFlow } from 'olympe';\n\n// Internal\nimport { warn } from './helpers';\nimport { getFlattenWrappers } from './wrappers';\nimport { handleDropdownCellChange, handleChevronCellChange, getCellValue } from './cells';\nimport { getColumns } from './columns';\nimport { triggerReload } from './triggers';\n\n/**\n * @typedef {Object} RGChange\n * @property {(!Object|!CloudObject)} object\n * @property {(string|!PropertyModel)} property\n * @property {*} oldValue\n * @property {*} newValue\n * @property {!CellChange} metadata\n */\nexport const RGChange = {};\n\n/**\n * Process the changes event from the reactgrid, and forward it to a lambda\n * @param {!BrickContext} $ \n * @param {!Array} changes \n */\nexport function handleOnCellsChanged($, changes) {\n // Only process changes when a lambda is defined\n const processor = $.get('Process Changes');\n if(!processor) {\n warn('no change is processed, the `Process Changes` lambda is no defined');\n return;\n }\n\n // Adapt the changes to olympe\n let internalStateChanged = false;\n const flattenWrappers = getFlattenWrappers($);\n const _changes = changes\n // Transform the changes to work well with Olympe\n .map(change => {\n // Get the required data\n const wrapper = flattenWrappers[change.rowId].wrapper;\n const columns = getColumns($, wrapper._rgLevel);\n const column = columns.find(c => c.Rank === change.columnId);\n \n // Guard\n if(column === undefined) {\n warn(`no column found for level ${wrapper._rgLevel} and rank ${change.columnId}`);\n return null;\n }\n\n // Handle dropdowns states\n if(change.type === 'dropdown') {\n handleDropdownCellChange($, change);\n internalStateChanged = true;\n }\n\n // Handle chevrons states\n else if(change.type === 'chevron') {\n handleChevronCellChange($, change, wrapper);\n internalStateChanged = true;\n }\n\n // Create the RGChange object\n return {\n object: wrapper.__rgGetObject(column['Property Path']),\n property: wrapper.__rgGetProperty(column['Property Path']),\n oldValue: getCellValue(change.previousCell),\n newValue: getCellValue(change.newCell),\n metadata: change\n };\n })\n // Filter out null change\n .filter(change => change !== null)\n // Filter out the dropdown change that are only about the internal state\n .filter(change => change.metadata.type !== 'dropdown' || change.newValue !== change.oldValue)\n // Filter out the chevron change that are only about the internal state\n .filter(change => change.metadata.type !== 'chevron' || change.newValue !== change.oldValue)\n // Filter out changes with no value, only if there is change with value -> hack to fix paste from excel until a better solution\n .filter((change, _index, all) => change.newValue !== \"\" || all.every(c => c.newValue === \"\"));\n\n // Guard\n if(_changes.length === 0) {\n if(internalStateChanged) {\n triggerReload($);\n }\n return;\n }\n\n // Call the lambda\n const [iFlow, iChanges] = processor.getInputs();\n const [oFlow, oErrorFlow] = processor.getOutputs();\n const processor$ = $.runner(processor);\n processor$.set(iChanges, _changes);\n processor$.trigger(iFlow);\n\n // Wait for the end of it\n Promise.race([\n processor$.waitFor(oFlow), \n processor$.waitFor(oErrorFlow)\n ])\n .then(value => {\n // In case of error, throw it again\n if(value instanceof ErrorFlow) {\n $.throw(value);\n }\n\n // Success\n else {\n triggerReload($);\n }\n })\n\n // Free the lambda\n .finally(() => processor$.destroy());\n}\n","import { CloudObject } from 'olympe';\n\n/**\n * Find an object property based on its name\n * @param {!CloudObject} object\n * @param {string} path\n * @return {!PropertyModel}\n */\nexport function findObjectProperty(object, path) {\n const mapping = getModelPropertiesMapping(object);\n return mapping.get(path);\n}\n\n/**\n * Get all properties name of an object\n * @param {!CloudObject} object\n * @return {!Array<string>}\n */\nexport function getModelPropertiesName(object) {\n const mapping = getModelPropertiesMapping(object);\n return Array.from(mapping.keys());\n}\n\n/**\n * Get an object model properties mapping\n * @param {!CloudObject} object\n * @return {!Map<string, PropertyModel>}\n */\nfunction getModelPropertiesMapping(object) {\n const model = object.getModel();\n if(!modelProperties.has(model.getTag())) {\n const mapping = new Map();\n model.query()\n .follow(CloudObject.propertyRel)\n .executeFromCache()\n .forEach(property => mapping.set(property.name(), property));\n modelProperties.set(model.getTag(), mapping);\n }\n return modelProperties.get(model.getTag());\n}\n\n/**\n * Singleton map for model properties mapping (name <-> instance)\n * @type {!Map<string, !Map<string, PropertyModel>>}\n */\nconst modelProperties = new Map();\n\n","// Olympe\nimport { CloudObject } from 'olympe';\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { defaultWrap } from './wrappers';\nimport { reorderObject, warn } from './helpers';\n\n/**\n * Init the columns\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @return {!Observable}\n */\nexport function initFilteredColumns($, _wrappers) {\n // Internal states\n $.set('_rgColumnWidth', {}); // Column width overrides\n $.set('_rgColumnOrder', {}); // Column order (rank) overrides\n\n // Listen to the config and the _wrappers first object properties\n return combineLatest([\n $.observe('Config', false),\n _wrappers\n .pipe(map(wrappers => (wrappers[0] ?? defaultWrap()).__rgProperties()))\n .pipe(distinctUntilChanged()),\n $.observe('Enable Column Reordering', false),\n $.observe('_rgColumnWidth'),\n $.observe('_rgColumnOrder'),\n $.observe('Default Width')\n ])\n\n // Build the columns\n .pipe(map(([config, properties, ...others]) => {\n // Config is set by the user\n if (config) {\n return [config, ...others];\n }\n\n // Config is auto-generated from the data\n if (properties.length > 0) {\n return [\n properties.map((path, index) => ({ 'Property Path': path, Type: 'AUTO', Rank: index })),\n ...others\n ];\n }\n\n // Empty config\n return [[], ...others];\n }))\n\n // Transform to an array of objects\n .pipe(map(([config, reorderableColumns, columnWidth, columnOrder, defaultWidth]) => {\n return config\n .map(column => column instanceof CloudObject ? column.toObject(true, true) : column)\n .sort((a, b) => getColumnRank(a, columnOrder) - getColumnRank(b, columnOrder))\n .map(column => generateColumn(column, reorderableColumns, columnWidth, defaultWidth));\n }))\n\n // Cache the filtered columns (per level) for quick access\n .pipe(map(columns => {\n const filteredColumns = filterLevelledColumns(columns);\n $.set('_rgFilteredColumns', filteredColumns);\n return filteredColumns;\n }));\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!*}\n */\nexport function useColumns($) {\n const filteredColumns = useProperty($, '_rgFilteredColumns');\n return filteredColumns?.get(0) ?? [];\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} level \n * @return {!Array}\n */\nexport function getColumns($, level) {\n const filteredColumns = $.get('_rgFilteredColumns');\n return filteredColumns?.get(level ?? 0) ?? [];\n}\n\n/**\n * Handle the resizing of columns\n * @param {!BrickContext} $ \n * @param {string} columnId \n * @param {number} width \n */\nexport function handleOnColumnResized($, columnId, width) {\n const currentCols = { ...$.get('_rgColumnWidth') };\n currentCols[columnId] = width;\n $.set('_rgColumnWidth', currentCols);\n}\n\n/**\n * @param {!Array} columns\n * @return {!Map<number, !Array>}\n */\nfunction filterLevelledColumns(columns) {\n // Group the columns by rank and save all levels\n const levels = new Set();\n const perRank = columns.reduce((acc, cur) => {\n const rank = cur.Rank ?? 0;\n if(!acc.has(rank)) {\n acc.set(rank, []);\n }\n acc.get(rank).push(cur);\n levels.add(cur.Level ?? 0);\n return acc;\n }, new Map());\n const allRanks = Array.from(perRank.keys());\n\n // Get the columns for each level\n const filterLevel = level => {\n return allRanks.map(rank => {\n const rankColumns = perRank.get(rank);\n const atLevel = rankColumns.find(column => (column.Level ?? 0) === level);\n const generic = rankColumns.find(column => (column.Level ?? 0) === -1);\n return atLevel ?? generic ?? rankColumns[0];\n });\n };\n\n // Return all levels\n return Array.from(levels.values()).reduce((acc, cur) => acc.set(cur, filterLevel(cur)), new Map());\n}\n\n/**\n * @param {!Object} column\n * @param {boolean} reorderableColumns\n * @param {!Object} columnWidth\n * @param {number} defaultWidth\n * @return {!Object}\n */\nfunction generateColumn(column, reorderableColumns, columnWidth, defaultWidth) {\n if(typeof column.Rank !== 'number') {\n warn(`column rank is missing, using 0 as fallback (column: ${column.Header ?? column['Property Path']})`);\n }\n const rank = column.Rank ?? 0;\n return {\n columnId: rank,\n reorderable: reorderableColumns,\n width: columnWidth?.[rank] ?? column.Width ?? defaultWidth ?? 150,\n resizable: column.Resizable,\n Level: column.Level ?? 0,\n ...column\n };\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} targetColumnId\n * @param {!Array} columnIds\n */\nexport function handleOnColumnsReordered($, targetColumnId, columnIds) {\n const columns = getColumns($, 0);\n const ranks = columns.map(column => column.Rank);\n const targetIndex = ranks.indexOf(targetColumnId);\n const movingIndexes = columnIds.map(id => ranks.indexOf(id));\n const newRanks = reorderObject(ranks, movingIndexes, targetIndex);\n const newOrder = newRanks.reduce((acc, cur, index) => ({ [cur]: index, ...acc }), {});\n $.set('_rgColumnOrder', newOrder);\n}\n\n/**\n * @param {!Object} column\n * @param {!Object} overrides\n * @return {number}\n */\nfunction getColumnRank(column, overrides) {\n return overrides[column.Rank] ?? column.Rank;\n}\n","// Olympe\nimport { QueryResult } from 'olympe';\n\n// Rxjs\nimport { tap, combineLatest, map } from 'rxjs';\n\n// Internal\nimport { warn, fromJson } from './helpers';\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _reload\n * @return {!Observable}\n */\nexport function initData($, _reload) {\n // Listen to the data and for any refresh\n return combineLatest([\n $.observe('Data', false),\n _reload\n ])\n\n // Default values\n .pipe(map(([data]) => data ? data : []))\n\n // Transform to an array\n .pipe(map(data => {\n // The data is already an array\n if (Array.isArray(data)) {\n return data;\n }\n\n // QueryResult case\n if (data instanceof QueryResult) {\n return data.toArray();\n }\n\n // JSON case\n if (typeof data === 'string') {\n const [json, error] = fromJson(data);\n if (!error && Array.isArray(json)) {\n return json;\n }\n }\n\n // Type is not supported\n warn('the `Data` property is not convertible to an array');\n return [];\n }))\n \n // Set the transformed data into _Data\n .pipe(tap(data => $.set('_rgData', data)));\n}\n\n","// Olympe\nimport { getLogger } from '@olympeio/core';\n\n/**\n * Parse a json string without throwing an exception\n * @param {string|!Object} json \n * @return {!Array}\n */\nexport function fromJson(json) {\n try {\n return typeof json === 'string'\n ? [JSON.parse(json), null]\n : [json ?? {}, null];\n }\n catch(err) {\n return [{}, err];\n }\n}\n\n/**\n * Warn message with a default format\n * @param {string} message \n */\nexport function warn(message) {\n getLogger('ReactGrid').warn(`ReactGrid: ${message}`);\n}\n\n/**\n * Error message with a default format\n * @param {string} message \n */\nexport function error(message) {\n getLogger('ReactGrid').error(`ReactGrid: ${message}`);\n}\n\n/**\n * Make a jsonpath-plus path readable\n * @param {string} path\n * @return {string} \n */\nexport function trimPath(path) {\n if(path.startsWith('$') || path.startsWith('.')) {\n return trimPath(path.substring(1));\n }\n if(path.startsWith('[')) {\n return trimPath(path.substring(path.indexOf(']') + 1));\n }\n return path;\n}\n\n/**\n * Test for email format\n * @param {string} text\n * @return {boolean}\n */\nexport function validateEmail(text) {\n return emailRegex.test(text);\n}\n\n// Email regex (https://emailregex.com/)\nconst emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n * Reorders elements in an object by moving specific elements to a new position.\n *\n * @param {Array} values - The original array to reorder.\n * @param {number[]} ids - An array of indices representing the elements to move.\n * @param {number} to - The target index where the selected elements should be moved.\n * @return {Object} - A new object with the specified elements reordered.\n */\nexport function reorderObject(values, ids, to) {\n const reorderedValues = [...values];\n\n // Get elements to move based on the ids\n const elementsToMove = ids.map(index => reorderedValues[index]);\n ids.sort((a, b) => b - a).forEach(index => {\n reorderedValues.splice(index, 1);\n });\n\n // Adjust the target id based on moving forward or backward\n const adjustedTargetId = to >= Math.min(...ids) ? to - elementsToMove.length + 1 : to;\n\n // Insert the elements in target id\n if (elementsToMove.length > 0) {\n reorderedValues.splice(adjustedTargetId, 0, ...elementsToMove);\n }\n\n return reorderedValues;\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { generateCell, getCellStyle } from './cells';\nimport { trimPath } from './helpers';\nimport { getColumns } from './columns';\nimport { getFlattenWrappers } from './wrappers';\n\n/**\n * Init the rows\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @param {!Observable} _filteredColumns \n */\nexport function initRows($, _wrappers, _filteredColumns) {\n // Listen to the _data and the _columns\n combineLatest([\n _wrappers,\n _filteredColumns\n .pipe(distinctUntilChanged(undefined, filteredColumns => {\n // Avoid updating the rows for some changes on the column config: width, resizable, etc.\n return Array.from(filteredColumns.values())\n .flat()\n .map(c => `${c.Header}${c['Property Path']}${c.Type}${c.Options}${c.Rank}${c.Editable}${c.Level}`)\n .join('');\n })),\n $.observe('Row Height', false),\n $.observe('Cell Edition', false),\n $.observe('Disable Header Row', false),\n $.observe('Default Color', false),\n $.observe('Border Color', false),\n $.observe('Border Width', false)\n ])\n\n // Use the reactgrid format for rows\n .pipe(map(([_wrappers, _filteredColumns, rowHeight, cellEdition, removeHeaderRow]) => {\n // Optional header row\n const headerRow = removeHeaderRow ? [] : [{\n rowId: '_header',\n height: rowHeight,\n cells: getColumns($, 0).map(column => {\n const text = column.Header ?? trimPath(column['Property Path'] ?? '');\n const finalText = column.Level === 0 ? text : '';\n return { type: 'header', text: finalText, style: getCellStyle($) };\n })\n }];\n\n // Generate all the rows\n const rows = getFlattenWrappers($).map(({ wrapper, level }, index) => {\n const rowColumns = getColumns($, level);\n return generateRow(wrapper, rowColumns, index, $, rowHeight, cellEdition);\n });\n\n // Final rows\n return [headerRow, rows].flat();\n }))\n\n // Set the final rows\n .pipe(tap(rows => $.set('_rgRows', rows)))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useRows($) {\n return useProperty($, '_rgRows') ?? [];\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {!Array} columns \n * @param {number} index \n * @param {!BrickContext} $ \n * @param {number} rowHeight \n * @param {boolean} cellEdition \n * @return {!Object}\n */\nfunction generateRow(wrapper, columns, index, $, rowHeight, cellEdition) {\n return { \n rowId: index,\n height: rowHeight,\n cells: columns.map(column => generateCell($, wrapper, index, column, cellEdition))\n };\n}\n","// React\nimport { useEffect } from 'react';\nimport { tap, interval } from 'rxjs';\n\n// Internal\nimport { triggerRedraw } from './triggers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initScroll($) {\n // Auto-redraw on scroll (fix fast scrolling issue)\n $.set('_rgLastScroll', 0);\n $.set('_rgLastScrollRedraw', 0);\n interval(1000)\n .pipe(tap(() => {\n if($.get('_rgLastScroll') !== $.get('_rgLastScrollRedraw')) {\n $.set('_rgLastScrollRedraw', $.get('_rgLastScroll'));\n triggerRedraw($);\n }\n }))\n .subscribe();\n}\n\n/**\n * @param {!BrickContext} $\n * @param {!*} ref\n */\nexport function useRedrawAfterScroll($, ref) {\n const registerScroll = () => $.set('_rgLastScroll', Date.now());\n useEffect(() => {\n if (ref.current) {\n ref.current.parentElement.style.overflow = 'visible';\n ref.current.addEventListener('scroll', registerScroll);\n }\n return () => {\n if (ref.current) {\n ref.current.removeEventListener('scroll', registerScroll);\n }\n };\n }, [ref]);\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n/**\n * @param {!BrickContext} $\n * @return {!Observable}\n */\nexport function initTriggers($) {\n return $.observe('Reload', false);\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function useRedraw($) {\n useProperty($, 'Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerRedraw($) {\n $.trigger('Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerReload($) {\n $.trigger('Reload');\n}\n\n","// Olympe\nimport { CloudObject } from 'olympe';\n\n// Rxjs\nimport { tap, map } from 'rxjs';\n\n// Json\nimport { JSONPath } from 'jsonpath-plus';\n\n// Internal\nimport { warn, trimPath } from './helpers';\nimport { getModelPropertiesName, findObjectProperty } from './cloudobjects';\nimport { isChevronCellExpanded } from './cells';\n\n/**\n * @typedef RGWrapper\n * @property {!*} rgObject - The wrapped object\n * @property {!Array} rgChildren - Potential children of the object\n * @property {function():string} rgGetKey - Get a unique key\n * @property {string} _rgType - The type of the wrapped object\n * @property {number} _rgLevel - The level in the hierarchy\n * @property {function():!Array<string>} __rgProperties - Get all the properties name\n * @property {function(string):!*} __rgGetProperty - Get a property by its path\n * @property {function(string):!*} __rgGetValue - Get a value for a path\n * @property {function(string):!*} __rgGetObject - Get the object for a path\n */\nexport const RGWrapper = {};\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _data \n * @return {!Observable}\n */\nexport function initWrappers($, _data) {\n // Observe the data\n return _data\n\n // Wrap all objects\n .pipe(map(data => data.map(d => rgWrap(d))))\n\n // Set the transformed data into _Data\n .pipe(tap(wrappers => $.set('_rgWrappers', wrappers)));\n}\n\n/**\n * @param {!*} object \n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function rgWrap(object, level) {\n // Already wrapped -> rewrap missing properties\n if(object.hasOwnProperty('rgObject')) {\n const missingProps = ['rgChildren', 'rgGetKey', '_rgType', '_rgLevel',\n '__rgProperties', '__rgGetProperty', '__rgGetValue',\n '__rgGetObject'].filter(prop => !object.hasOwnProperty(prop));\n if(missingProps.length > 0) {\n const wrapped = rgWrap(object.rgObject, level ?? 0);\n return missingProps.reduce((acc, cur) => {\n acc[cur] = wrapped[cur];\n return acc;\n }, object);\n }\n return object;\n }\n\n // Tuple case\n if(Array.isArray(object)) {\n return wrapTuple(object, level ?? 0);\n }\n\n // CloudObject case\n if(object instanceof CloudObject) {\n return wrapCloudObject(object, level ?? 0);\n }\n\n // Object case\n if(typeof object === 'object') {\n return wrapObject(object, level ?? 0);\n }\n\n // Wrong type\n warn('some data are not of the following type: Object, CloudObject, Array');\n return defaultWrap(level ?? 0);\n}\n\n/**\n * @param {!Object} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => Object.values(object).join('.'),\n _rgType: 'object',\n _rgLevel: level,\n __rgProperties: () => Object.keys(object),\n __rgGetProperty: path => trimPath(path),\n __rgGetValue: path => JSONPath({ path, json: object, wrap: false }),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!CloudObject} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapCloudObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => object.getTag(),\n _rgType: 'cloudobject',\n _rgLevel: level,\n __rgProperties: () => getModelPropertiesName(object),\n __rgGetProperty: path => findObjectProperty(object, path),\n __rgGetValue: path => object.get(findObjectProperty(object, path)),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!Array} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapTuple(object, level) {\n const wrapped = object.map(o => rgWrap(o, level + 1));\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => `[${wrapped.map(w => w.rgGetKey()).join('.')}]`,\n _rgType: 'tuple',\n _rgLevel: level,\n __rgProperties: () => wrapped.map((w, i) => w.__rgProperties().map(p => `$[${i}].${p}`)).flat(),\n __rgGetProperty: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetProperty(subPath);\n },\n __rgGetValue: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetValue(subPath);\n },\n __rgGetObject: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetObject(subPath);\n }\n };\n}\n\n/**\n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function defaultWrap(level) {\n return wrapObject({}, level ?? 0);\n}\n\n/**\n * @param {string} path \n * @returns {![number, string]} \n */\nfunction splitTuplePath(path) {\n const endBracket = path.indexOf(']');\n const index = parseInt(path.substring(path.indexOf('[') + 1, endBracket));\n const subPath = trimPath(path.substring(endBracket + 1));\n return [index, subPath];\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!Array} wrappers \n * @param {number} level \n * @return {!Array}\n */\nfunction flatten($, wrappers, level) {\n return wrappers.flatMap(wrapper => {\n const isExpanded = isChevronCellExpanded($, wrapper);\n const children = isExpanded ? flatten($, wrapper.rgChildren, level + 1) : [];\n return [{ wrapper, level }, ...children]; \n });\n}\n\n/**\n * @param {!BrickContext} $ \n * @return {!Array}\n */\nexport function getFlattenWrappers($) {\n return flatten($, $.get('_rgWrappers'), 0);\n}\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"@silevis/reactgrid\");","module.exports = require(\"@silevis/reactgrid/styles.css\");","module.exports = require(\"jsonpath-plus\");","module.exports = require(\"react\");","module.exports = require(\"rxjs\");","module.exports = require(\"styled-jsx/style\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/helpers.js'; import './common/internal/box.js'; import './common/internal/cells.js'; import './common/internal/changes.js'; import './common/internal/cloudobjects.js'; import './common/internal/columns.js'; import './common/internal/data.js'; import './common/internal/helpers.js'; import './common/internal/rows.js'; import './common/internal/scroll.js'; import './common/internal/triggers.js'; import './common/internal/wrappers.js'; import './common/RGCreateColumnConfig.js'; import './common/RGGetChangeMetadata.js'; import './common/RGGetChangeProperties.js'; import './common/RGGroupTuplesByIndexes.js'; import './common/RGProcessChangesForCloudObjects.js'; import './common/RGProcessChangesForJSONString.js'; import './common/RGProcessChangesForObjects.js'; import './common/RGWrapObject.js';\n;\nimport './web/RGReactGrid.jsx';\n\n"],"names":["registerBrick","ReactBrick","useProperty","React","useRef","ReactGrid","initData","initWrappers","initFilteredColumns","useColumns","handleOnColumnResized","handleOnColumnsReordered","initRows","useRows","initBox","useBox","handleOnCellsChanged","initTriggers","useRedraw","initScroll","useRedrawAfterScroll","initCells","RGReactGrid","_ReactBrick","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","init","$","_reload","_data","_wrappers","_filteredColumns","getReactComponent","box","hidden","allowContentOverflow","rows","columns","rangeSelection","rowSelection","colSelection","fillHandle","stickTop","stickBottom","stickLeft","stickRight","containerRef","createElement","ref","className","_JSXStyle","dynamic","width","height","x","y","onCellsChanged","bind","undefined","enableFillHandle","stickyLeftColumns","stickyRightColumns","stickyTopRows","stickyBottomRows","enableRangeSelection","enableColumnSelection","enableRowSelection","onColumnResized","onColumnsReordered","id","concat","default"],"sourceRoot":""}
1
+ {"version":3,"file":"main-web.js","mappings":"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ACA;AACA;;AAEA;AACA,wCAAwC,kDAAQ;AAChD;AACA,YAAY,8CAAI,wCAAwC,qBAAqB;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D,yBAAyB;AACtF;AACA;AACA,4EAA4E,2BAA2B;AACvG,6EAA6E,6BAA6B;AAC1G,sEAAsE,sCAAsC;AAC5G;AACA;AACA;AACA;AACA,QAAQ,+CAAK,iCAAiC,YAAY;AAC1D;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,0BAA0B;AACrC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAa;AAC7C;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,IAAI,KAAK,kBAAkB;AACvG;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA,kBAAkB,MAAM,GAAG,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB;AACO;AACP,kBAAkB,aAAa,GAAG,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA,oBAAoB,yCAAyC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB;AACO;AACP,6BAA6B,mBAAmB;AAChD,gBAAgB,uCAAuC;AACvD;;AAEA;AACA,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,YAAY;AACZ;AACO;AACP,6BAA6B,mBAAmB;AAChD;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzSA;AACmC;;AAEnC;AACiC;AACe;AAC0C;AACnD;AACI;;AAE3C;AACA,aAAa,QAAQ;AACrB,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,GAAG;AACjB,cAAc,GAAG;AACjB,cAAc,aAAa;AAC3B;AACO;;AAEP;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA,QAAQ,8CAAI;AACZ;AACA;;AAEA;AACA;AACA,4BAA4B,6DAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA,gBAAgB,8CAAI,8BAA8B,kBAAkB,WAAW,gBAAgB;AAC/F;AACA;;AAEA;AACA;AACA,gBAAgB,gEAAwB;AACxC;AACA;;AAEA;AACA;AACA,gBAAgB,+DAAuB;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,oDAAY;AACtC,0BAA0B,oDAAY;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,wDAAa;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAS;AACzC;AACA;;AAEA;AACA;AACA,gBAAgB,wDAAa;AAC7B;AACA,SAAS;;AAET;AACA;AACA;;;;;;;;;;;;;;;;;;AClHqC;;AAErC;AACA;AACA,WAAW,cAAc;AACzB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACqC;AACQ;;AAE7C;AACgE;;AAEhE;AACyC;AACO;;AAEhD;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,aAAa;AACxB,YAAY;AACZ;AACO;AACP;AACA,8BAA8B,GAAG;AACjC,8BAA8B,GAAG;;AAEjC;AACA,WAAW,mDAAa;AACxB;AACA;AACA,kBAAkB,yCAAG,6BAA6B,sDAAW;AAC7D,kBAAkB,0DAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,yCAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;AA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","sources":["webpack://@olympeio-extensions/reactgrid/webpack/universalModuleDefinition","webpack://@olympeio-extensions/reactgrid/./src/web/RGReactGrid.jsx","webpack://@olympeio-extensions/reactgrid/./src/common/RGCreateColumnConfig.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeMetadata.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGetChangeProperties.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGGroupTuplesByIndexes.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForCloudObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForJSONString.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGProcessChangesForObjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/RGWrapObject.js","webpack://@olympeio-extensions/reactgrid/./src/common/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/box.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cells.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/changes.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/cloudobjects.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/columns.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/data.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/helpers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/rows.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/scroll.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/triggers.js","webpack://@olympeio-extensions/reactgrid/./src/common/internal/wrappers.js","webpack://@olympeio-extensions/reactgrid/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"@silevis/reactgrid\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"@silevis/reactgrid/styles.css\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"jsonpath-plus\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"react\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"rxjs\"","webpack://@olympeio-extensions/reactgrid/external commonjs \"styled-jsx/style\"","webpack://@olympeio-extensions/reactgrid/external umd \"olympe\"","webpack://@olympeio-extensions/reactgrid/webpack/bootstrap","webpack://@olympeio-extensions/reactgrid/webpack/runtime/compat get default export","webpack://@olympeio-extensions/reactgrid/webpack/runtime/define property getters","webpack://@olympeio-extensions/reactgrid/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/reactgrid/webpack/runtime/make namespace object","webpack://@olympeio-extensions/reactgrid/./src/main-web.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/reactgrid\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/reactgrid\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","// Olympe\nimport { registerBrick } from 'olympe';\nimport { ReactBrick, useProperty } from '@olympeio/core';\n\n// React\nimport React, {useCallback, useRef, useState} from 'react';\nimport { ReactGrid } from '@silevis/reactgrid';\nimport '@silevis/reactgrid/styles.css';\n\n// Internal\nimport { initData } from '../common/internal/data';\nimport { initWrappers } from '../common/internal/wrappers';\nimport { initFilteredColumns, useColumns, handleOnColumnResized, handleOnColumnsReordered } from '../common/internal/columns';\nimport { initRows, useRows } from '../common/internal/rows';\nimport { initBox, useBox } from '../common/internal/box';\nimport { handleOnCellsChanged } from '../common/internal/changes';\nimport { initTriggers, useRedraw } from '../common/internal/triggers';\nimport { initScroll, useRedrawAfterScroll } from '../common/internal/scroll';\nimport { initCells } from '../common/internal/cells';\n\nexport default class RGReactGrid extends ReactBrick {\n\n /**\n * @override\n */\n init($) {\n // Data/Config to Rows/Columns flow\n initCells($);\n const _reload = initTriggers($);\n const _data = initData($, _reload);\n const _wrappers = initWrappers($, _data);\n const _filteredColumns = initFilteredColumns($, _wrappers);\n initRows($, _wrappers, _filteredColumns);\n\n // Bounding box flow\n initBox($);\n\n // Scroll \n initScroll($);\n }\n\n /**\n * @override\n */\n static getReactComponent($) {\n return () => {\n // Display\n const box = useBox($);\n const hidden = useProperty($, 'Hidden');\n const allowContentOverflow = useProperty($, 'Allow Content Overflow');\n const fontSize = useProperty($, 'Font Size');\n\n // Data\n const rows = useRows($);\n const columns = useColumns($);\n\n // Behaviors\n const rangeSelection = useProperty($, 'Enable Range Selection');\n const rowSelection = useProperty($, 'Enable Row Selection');\n const colSelection = useProperty($, 'Enable Column Selection');\n const fillHandle = useProperty($, 'Enable Fill Handle');\n\n // Sticky\n const stickTop = useProperty($, 'Sticky Top Rows');\n const stickBottom = useProperty($, 'Sticky Bottom Rows');\n const stickLeft = useProperty($, 'Sticky Left Columns');\n const stickRight = useProperty($, 'Sticky Right Columns');\n\n // Redraw hook\n const containerRef = useRef();\n useRedrawAfterScroll($, containerRef);\n useRedraw($);\n\n // Compute the global position of the grid to set the editor cell in the right place\n const [gridPosition, setGridPosition] = useState({ x: 0, y: 0 });\n const updateBoxPosition = useCallback(() => {\n const rect = containerRef.current?.getBoundingClientRect();\n setGridPosition({ x: rect.left, y: rect.top });\n }, []);\n\n // Render the grid\n return (\n <div ref={containerRef}>\n {/* ReactGrid component */}\n <ReactGrid\n // Data\n rows={rows}\n columns={columns}\n onCellsChanged={handleOnCellsChanged.bind(undefined, $)}\n enableFillHandle={fillHandle}\n onFocusLocationChanged={updateBoxPosition} // Compute the global position of the grid to set the editor cell in the right place\n\n // Sticky\n stickyLeftColumns={stickLeft}\n stickyRightColumns={stickRight}\n stickyTopRows={stickTop}\n stickyBottomRows={stickBottom}\n\n // Selection\n enableRangeSelection={rangeSelection}\n enableColumnSelection={colSelection}\n enableRowSelection={rowSelection}\n\n // Resizing\n onColumnResized={handleOnColumnResized.bind(undefined, $)}\n\n // Reordering\n onColumnsReordered={handleOnColumnsReordered.bind(undefined, $)}\n />\n\n {/* Styling */}\n <style jsx>{`\n // Wrapper styling\n div {\n display: ${hidden ? 'none' : 'inline-block'};\n width: ${box.width}px;\n height: ${box.height}px;\n overflow: ${allowContentOverflow ? 'visible' : 'scroll'};\n font-family: 'Roboto', sans-serif;\n }\n\n // Hack: put the editor cell in the right place, based on the computed global position of the grid\n div :global(.rg-celleditor) {\n font-size: ${fontSize}px !important;\n transform: translate(${-gridPosition.x}px, ${-gridPosition.y}px);\n }\n\n // Pane styling\n div :global(.rg-pane) {\n box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);\n background-color: #fff; \n }\n\n // General cell styling\n div :global(.rg-cell) {\n padding: 10px;\n font-size: ${fontSize}px !important;\n border-bottom: 1px solid #e0e0e0;\n color: rgba(0, 0, 0, 0.87);\n transition: background-color 0.2s ease-in-out;\n }\n\n // Header cell styling to match MUI Table header\n div :global(.rg-header-cell) {\n background-color: #f5f5f5;\n font-weight: 500;\n color: rgba(0, 0, 0, 0.87);\n font-size: 14px;\n border-bottom: 1px solid #e0e0e0;\n padding: 12px;\n }\n\n // Number cell styling\n div :global(.rg-number-cell) {\n text-align: right;\n padding-right: 14px;\n color: rgba(0, 0, 0, 0.87);\n padding-left: 12px;\n }\n\n // Text cell styling\n div :global(.rg-text-cell) {\n text-align: left;\n color: rgba(0, 0, 0, 0.87);\n padding-left: 12px;\n }\n\n // Hover effect for cells to look like MUI Table rows\n div :global(.rg-cell):hover {\n background-color: #f5f5f5;\n }\n\n // Scrollbar styling to match MUI's scrollbars\n div::-webkit-scrollbar {\n display: block;\n width: 8px;\n height: 8px;\n }\n div::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n }\n div::-webkit-scrollbar-track {\n background-color: #f0f0f0;\n }\n `}</style>\n </div>\n );\n };\n }\n}\n\nregisterBrick('019154c4600798f105aa', RGReactGrid);\n","import { Brick, registerBrick } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGCreateColumnConfig extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {number} rank\n * @param {string} propertyPath\n * @param {string} header\n * @param {number} width\n * @param {string} type\n * @param {string|!Object} options\n * @param {boolean} editable\n * @param {boolean} resizable\n * @param {number} level\n * @param {function(!Object)} setObject\n */\n update(_$, [rank, propertyPath, header, width, type, options, editable, resizable, level], [setObject]) {\n setObject({\n Rank: rank,\n 'Property Path': propertyPath,\n Header: header,\n Width: width,\n Type: type,\n Options: fromJson(options)[0],\n Editable: editable,\n Resizable: resizable,\n Level: level\n });\n }\n}\n\nregisterBrick('01921d9038d9eb72f609', RGCreateColumnConfig);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeMetadata extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object)} setNewCell\n * @param {function(!Object)} setPreviousCell\n * @param {function(string|number)} setRowId\n * @param {function(string|number)} setColumnId\n * @param {function(string)} setType\n */\n update(_$, [change], [setNewCell, setPreviousCell, setRowId, setColumnId, setType]) {\n setNewCell(change.metadata.newCell);\n setPreviousCell(change.metadata.previousCell);\n setRowId(change.metadata.rowId);\n setColumnId(change.metadata.columnId);\n setType(change.metadata.type);\n }\n}\n\nregisterBrick('01920a4d4d8390252c91', RGGetChangeMetadata);\n","import { Brick, registerBrick } from 'olympe';\n\nexport default class RGGetChangeProperties extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!RGChange} change\n * @param {function(!Object|!CloudObject)} setObject\n * @param {function(!Object|!CloudObject)} setProperty\n * @param {function(!*)} setNewValue\n * @param {function(!*)} setOldValue\n */\n update(_$, [change], [setObject, setProperty, setNewValue, setOldValue]) {\n setObject(change.object);\n setProperty(change.property);\n setNewValue(change.newValue);\n setOldValue(change.oldValue);\n }\n}\n\nregisterBrick('0192055d7857bd08279c', RGGetChangeProperties);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGGroupTuplesByIndexes extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} data\n * @param {string} indexes\n * @param {function(!Array)} setGroupedData\n */\n update(_$, [data, indexes], [setGroupedData]) {\n // Get the indexes and make the grouping recursively\n const _indexes = indexes.split(',').map(index => parseInt(index));\n setGroupedData(groupBy(data.map(d => rgWrap(d)), _indexes, 0));\n }\n}\n\nregisterBrick('0192288806aa3cc82b95', RGGroupTuplesByIndexes);\n\n/**\n * Group data by indexes, for the given level\n * @param {!Array} wrappers\n * @param {!Array<number>} indexes\n * @param {number} level\n * @return {!Array}\n */\nfunction groupBy(wrappers, indexes, level) {\n // End of recursion\n if(level >= indexes.length || !Array.isArray(wrappers)) {\n return wrappers;\n }\n\n // Get the current working index\n const index = indexes[level] - level;\n\n // Group the data in a Map\n const groupedWrappers = wrappers.reduce((parents, wrapper) => {\n // Split the tuple into parts\n const [wrapped, child] = splitTuple(wrapper, index, level);\n const key = wrapped.rgGetKey();\n\n // If this key is not in a group yet\n if(!parents.has(key)) {\n // Create the new group\n parents.set(key, wrapped);\n }\n\n // If there is a child, add it to the group\n // (group the child itself also)\n if(child) {\n const parent = parents.get(key);\n parent.rgChildren.push(child);\n }\n\n // Done\n return parents;\n }, new Map());\n\n // Apply the grouping on the children\n return Array.from(groupedWrappers.values()).map(({ rgChildren, ...others }) => ({\n rgChildren: groupBy(rgChildren.map(c => rgWrap(c, level + 1)), indexes, level + 1),\n ...others\n }));\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {number} index \n * @param {number} level \n * @return {[!RGWrapper, *]}\n */\nfunction splitTuple(wrapper, index, level) {\n // Real tuple case\n if(wrapper._rgType === 'tuple') {\n // Extract the info\n const tuple = wrapper.rgObject;\n const wrapped = rgWrap(tuple[index], level);\n const before = tuple.slice(0, index);\n const after = tuple.slice(index + 1);\n const child = [...before, ...after];\n \n // Handle all cases\n if(child.length > 1) {\n return [wrapped, child];\n }\n else if(child.length > 0) {\n return [wrapped, child[0]];\n }\n else {\n return [wrapped, null];\n }\n }\n\n // Not a tuple case\n else {\n return [wrapper, null];\n }\n}\n","import { ActionBrick, registerBrick, Transaction, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForCloudObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} executeAsLarge\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, executeAsLarge], [forwardEvent, setErrorFlow]) {\n const t = new Transaction();\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n t.update(change.object, change.property, change.newValue);\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n const promise = executeAsLarge ? t.executeAsLarge() : t.execute();\n promise.then(forwardEvent)\n .catch(error => setErrorFlow(ErrorFlow.create(error.message, 0)));\n }\n}\n\nregisterBrick('01920a8134e1cf0fa551', RGProcessChangesForCloudObjects);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\nimport { fromJson } from './helpers';\n\nexport default class RGProcessChangesForJSONString extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {string} json\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n * @param {function(string)} setNewJson\n */\n update(_$, [changes, json], [forwardEvent, setErrorFlow, setNewJson]) {\n const [data, error] = fromJson(json);\n if(!error) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(change.metadata.newCell.validator?.(change.newValue) ?? true) {\n data[change.metadata.rowId][change.property] = change.newValue;\n }\n else {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n setNewJson(JSON.stringify(data));\n forwardEvent();\n }\n else {\n setErrorFlow(ErrorFlow.create(`input 'json' is not valid, error: ${error.message}`, 0));\n }\n }\n}\n\nregisterBrick('01921e064dbe25faec55', RGProcessChangesForJSONString);\n","import { ActionBrick, registerBrick, ErrorFlow } from 'olympe';\n\nexport default class RGProcessChangesForObjects extends ActionBrick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array<!RGChange>} changes\n * @param {boolean} inPlace\n * @param {Array} data\n * @param {function()} forwardEvent\n * @param {function(!ErrorFlow)} setErrorFlow\n */\n update(_$, [changes, inPlace, data], [forwardEvent, setErrorFlow]) {\n const errors = ['No changes applied because:'];\n changes.forEach(change => {\n if(!(change.metadata.newCell.validator?.(change.newValue) ?? true)) {\n errors.push(`This value is not valid: ${change.newValue}`);\n }\n });\n if(errors.length > 1) {\n setErrorFlow(ErrorFlow.create(errors.join('\\n'), 1));\n return;\n }\n if(inPlace) {\n changes.forEach(change => {\n change.object[change.property] = change.newValue;\n });\n }\n else {\n changes.forEach(change => {\n data[change.metadata.rowId][change.property] = change.newValue;\n });\n }\n forwardEvent();\n }\n}\n\nregisterBrick('01921e0d2b383c95bd22', RGProcessChangesForObjects);\n","import { Brick, registerBrick } from 'olympe';\nimport { rgWrap, RGWrapper } from './helpers';\n\nexport default class RGWrapObject extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!*} object\n * @param {number} level\n * @param {function(!RGWrapper)} setWrapped\n */\n update(_$, [object, level], [setWrapped]) {\n setWrapped(rgWrap(object, level));\n }\n}\n\nregisterBrick('019232c3d1873de0d259', RGWrapObject);\n","// Re-export\nexport { rgWrap, RGWrapper } from './internal/wrappers';\nexport { RGChange } from './internal/changes';\nexport { fromJson } from './internal/helpers';\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, throttleTime } from 'rxjs';\n\n/**\n * Init the bounding box\n * @param {!BrickContext} $ \n */\nexport function initBox($) {\n // Listen to the component position and size\n combineLatest([$.observe('Width'), $.observe('Height')])\n\n // Debounce the changes to avoid to many rerendering\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n\n // Set the final box\n .pipe(tap(([width, height]) => $.set('_rgBox', { width, height })))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useBox($) {\n return useProperty($, '_rgBox') ?? {width: $.get('Width'), height: $.get('Height') };\n}\n\n","// Internal\nimport { fromJson, validateEmail, error, warn } from './helpers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initCells($) {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n}\n\n/**\n * Generate a cell for the defined wrapper/column\n * @param {!BrickContext} $\n * @param {!RGWrapper} wrapper\n * @param {number} rowId\n * @param {!Object} column\n * @param {boolean} cellEdition\n * @return {!Object}\n */\nexport function generateCell($, wrapper, rowId, column, cellEdition) {\n try {\n // Get the cell value\n const value = wrapper.__rgGetValue(column['Property Path'] ?? '');\n\n // Get the options\n const [options, optionsError] = fromJson(column.Options);\n if(optionsError) {\n warn(`cannot parse column options, error: ${optionsError.message}`);\n }\n const validator = options.validator ? s => new RegExp(options.validator).test(s) : undefined;\n const common = {\n nonEditable: cellEdition === 'DISABLED' || (cellEdition === 'USE CONFIG' && !column.Editable),\n style: getCellStyle($)\n };\n\n // Generate the cell depending on the type\n switch(column.Type) {\n case 'TEXT': return generateTextCell(value, options, common, column, validator);\n case 'NUMBER': return generateNumberCell(value, options, common);\n case 'EMAIL': return generateEmailCell(value, common, validator);\n case 'DATE': \n case 'TIME': return generateDateTimeCell(value, options, common, column);\n case 'CHECKBOX': return generateCheckboxCell(value, options, common);\n case 'DROPDOWN': return generateDropdownCell(value, options, common, column, $, rowId);\n case 'HEADER': return generateHeaderCell(value, options, common);\n case 'CHEVRON': return generateChevronCell(value, options, common, wrapper, $);\n\n // AUTO case\n default:\n if(value instanceof Date) {\n return generateCell($, wrapper, rowId, { ...column, Type: 'DATE' }, cellEdition);\n }\n switch(typeof value) {\n case 'number': return generateCell($, wrapper, rowId, { ...column, Type: 'NUMBER' }, cellEdition);\n case 'boolean': return generateCell($, wrapper, rowId, { ...column, Type: 'CHECKBOX' }, cellEdition);\n default: return generateCell($, wrapper, rowId, { ...column, Type: 'TEXT', _cast: true }, cellEdition);\n }\n }\n }\n catch(err) {\n error(`cannot generate cell, error: ${err.message}`);\n return errorCell();\n }\n}\n\n/**\n * Get the cell value, depending on its type\n * @param {!Object} cell\n * @return {*}\n */\nexport function getCellValue(cell) {\n switch(cell.type) {\n case 'number': return cell.value;\n case 'date': return cell.date;\n case 'time': return cell.time;\n case 'checkbox': return cell.checked;\n case 'dropdown': return cell.selectedValue;\n default: return cell.text;\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {function(string):boolean} validator \n * @return {!TextCell} \n */\nfunction generateTextCell(value, options, common, column, validator) {\n return {\n type: 'text',\n text: (column._cast ? String(value ?? '') : value ?? ''),\n placeholder: options.placeholder,\n validator: validator,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!NumberCell} \n */\nfunction generateNumberCell(value, options, common) {\n return {\n type: 'number',\n value: value,\n format: new Intl.NumberFormat(options.locale, options.format),\n nanToZero: options.nanToZero,\n hideZero: options.hideZero,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} common \n * @param {function(string):boolean} validator \n * @return {!EmailCell} \n */\nfunction generateEmailCell(value, common, validator) {\n return {\n type: 'email',\n text: value ?? '',\n validator: validator ?? validateEmail,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @return {!DateCell|!TimeCell} \n */\nfunction generateDateTimeCell(value, options, common, column) {\n const type = column.Type.toLowerCase();\n return {\n type: type,\n [type]: value instanceof Date ? value : new Date(value),\n format: new Intl.DateTimeFormat(options.locale, options.format ?? { [`${type}Style`]: 'short' }),\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!CheckboxCell} \n */\nfunction generateCheckboxCell(value, options, common) {\n return {\n type: 'checkbox',\n checked: Boolean(value ?? false),\n checkedText: options.checkedText,\n uncheckedText: options.uncheckedText,\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!Object} column\n * @param {!BrickContext} $ \n * @param {number} rowId\n * @return {!DropdownCell} \n */\nfunction generateDropdownCell(value, options, common, column, $, rowId) {\n const id = `${rowId}.${column.columnId}`;\n const isOpen = id === $.get('_rgDropdownIsOpen');\n const inputValue = isOpen ? $.get('_rgDropdownInputValue') : '';\n return {\n type: 'dropdown',\n selectedValue: value,\n values: options.values ?? [],\n isDisabled: options.isDisabled,\n isOpen: isOpen,\n inputValue: inputValue,\n ...common\n };\n}\n\n/**\n * Handle the dropdowns internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n */\nexport function handleDropdownCellChange($, change) {\n const id = `${change.rowId}.${change.columnId}`;\n if(change.newCell.isOpen && !change.newCell.isDisabled) {\n $.set('_rgDropdownIsOpen', id);\n $.set('_rgDropdownInputValue', change.newCell.inputValue);\n }\n else {\n $.set('_rgDropdownIsOpen', '');\n $.set('_rgDropdownInputValue', '');\n }\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @return {!HeaderCell} \n */\nfunction generateHeaderCell(value, options, common) {\n return {\n type: 'header',\n text: value ?? options.text ?? '',\n ...common\n };\n}\n\n/**\n * @param {*} value \n * @param {!Object} options \n * @param {!Object} common \n * @param {!RGWrapper} wrapper\n * @param {!BrickContext} $ \n * @return {!ChevronCell} \n */\nfunction generateChevronCell(value, options, common, wrapper, $) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n if(!$.has(id)) {\n $.set(id, { isExpanded: options.isExpanded ?? false });\n }\n const state = $.get(id);\n return {\n type: 'chevron',\n text: value ?? options.text ?? '',\n indent: options.indent,\n hasChildren: wrapper.rgChildren.length > 0,\n ...state,\n ...common\n };\n}\n\n/**\n * Handle the chevrons internal states\n * @param {!BrickContext} $ \n * @param {!CellChange} change \n * @param {!RGWrapper} wrapper \n */\nexport function handleChevronCellChange($, change, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n $.set(id, { isExpanded: change.newCell.isExpanded });\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!RGWrapper} wrapper \n * @return {boolean}\n */\nexport function isChevronCellExpanded($, wrapper) {\n const id = `_rgChevron.${wrapper.rgGetKey()}`;\n return $.get(id)?.isExpanded ?? false;\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!Object}\n */\nexport function getCellStyle($) {\n const borderStyle = { \n color: $.get('Border Color'),\n width: $.get('Border Width') \n };\n return {\n background: $.get('Default Color'),\n border: {\n left: borderStyle,\n top: borderStyle,\n right: borderStyle,\n bottom: borderStyle\n }\n };\n}\n\n/**\n * @return {!TextCell}\n */\nfunction errorCell() {\n return {\n type: 'text',\n text: '!ERROR',\n nonEditable: true,\n style: {\n color: 'red'\n }\n };\n}\n","// Olympe\nimport { ErrorFlow } from 'olympe';\n\n// Internal\nimport { warn } from './helpers';\nimport { getFlattenWrappers } from './wrappers';\nimport { handleDropdownCellChange, handleChevronCellChange, getCellValue } from './cells';\nimport { getColumns } from './columns';\nimport { triggerReload } from './triggers';\n\n/**\n * @typedef {Object} RGChange\n * @property {(!Object|!CloudObject)} object\n * @property {(string|!PropertyModel)} property\n * @property {*} oldValue\n * @property {*} newValue\n * @property {!CellChange} metadata\n */\nexport const RGChange = {};\n\n/**\n * Process the changes event from the reactgrid, and forward it to a lambda\n * @param {!BrickContext} $ \n * @param {!Array} changes \n */\nexport function handleOnCellsChanged($, changes) {\n // Only process changes when a lambda is defined\n const processor = $.get('Process Changes');\n if(!processor) {\n warn('no change is processed, the `Process Changes` lambda is no defined');\n return;\n }\n\n // Adapt the changes to olympe\n let internalStateChanged = false;\n const flattenWrappers = getFlattenWrappers($);\n const _changes = changes\n // Transform the changes to work well with Olympe\n .map(change => {\n // Get the required data\n const wrapper = flattenWrappers[change.rowId].wrapper;\n const columns = getColumns($, wrapper._rgLevel);\n const column = columns.find(c => c.Rank === change.columnId);\n \n // Guard\n if(column === undefined) {\n warn(`no column found for level ${wrapper._rgLevel} and rank ${change.columnId}`);\n return null;\n }\n\n // Handle dropdowns states\n if(change.type === 'dropdown') {\n handleDropdownCellChange($, change);\n internalStateChanged = true;\n }\n\n // Handle chevrons states\n else if(change.type === 'chevron') {\n handleChevronCellChange($, change, wrapper);\n internalStateChanged = true;\n }\n\n // Create the RGChange object\n return {\n object: wrapper.__rgGetObject(column['Property Path']),\n property: wrapper.__rgGetProperty(column['Property Path']),\n oldValue: getCellValue(change.previousCell),\n newValue: getCellValue(change.newCell),\n metadata: change\n };\n })\n // Filter out null change\n .filter(change => change !== null)\n // Filter out the dropdown change that are only about the internal state\n .filter(change => change.metadata.type !== 'dropdown' || change.newValue !== change.oldValue)\n // Filter out the chevron change that are only about the internal state\n .filter(change => change.metadata.type !== 'chevron' || change.newValue !== change.oldValue)\n // Filter out changes with no value, only if there is change with value -> hack to fix paste from excel until a better solution\n .filter((change, _index, all) => change.newValue !== \"\" || all.every(c => c.newValue === \"\"));\n\n // Guard\n if(_changes.length === 0) {\n if(internalStateChanged) {\n triggerReload($);\n }\n return;\n }\n\n // Call the lambda\n const [iFlow, iChanges] = processor.getInputs();\n const [oFlow, oErrorFlow] = processor.getOutputs();\n const processor$ = $.runner(processor);\n processor$.set(iChanges, _changes);\n processor$.trigger(iFlow);\n\n // Wait for the end of it\n Promise.race([\n processor$.waitFor(oFlow), \n processor$.waitFor(oErrorFlow)\n ])\n .then(value => {\n // In case of error, throw it again\n if(value instanceof ErrorFlow) {\n $.throw(value);\n }\n\n // Success\n else {\n triggerReload($);\n }\n })\n\n // Free the lambda\n .finally(() => processor$.destroy());\n}\n","import { CloudObject } from 'olympe';\n\n/**\n * Find an object property based on its name\n * @param {!CloudObject} object\n * @param {string} path\n * @return {!PropertyModel}\n */\nexport function findObjectProperty(object, path) {\n const mapping = getModelPropertiesMapping(object);\n return mapping.get(path);\n}\n\n/**\n * Get all properties name of an object\n * @param {!CloudObject} object\n * @return {!Array<string>}\n */\nexport function getModelPropertiesName(object) {\n const mapping = getModelPropertiesMapping(object);\n return Array.from(mapping.keys());\n}\n\n/**\n * Get an object model properties mapping\n * @param {!CloudObject} object\n * @return {!Map<string, PropertyModel>}\n */\nfunction getModelPropertiesMapping(object) {\n const model = object.getModel();\n if(!modelProperties.has(model.getTag())) {\n const mapping = new Map();\n model.query()\n .follow(CloudObject.propertyRel)\n .executeFromCache()\n .forEach(property => mapping.set(property.name(), property));\n modelProperties.set(model.getTag(), mapping);\n }\n return modelProperties.get(model.getTag());\n}\n\n/**\n * Singleton map for model properties mapping (name <-> instance)\n * @type {!Map<string, !Map<string, PropertyModel>>}\n */\nconst modelProperties = new Map();\n\n","// Olympe\nimport { CloudObject } from 'olympe';\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { defaultWrap } from './wrappers';\nimport { reorderObject, warn } from './helpers';\n\n/**\n * Init the columns\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @return {!Observable}\n */\nexport function initFilteredColumns($, _wrappers) {\n // Internal states\n $.set('_rgColumnWidth', {}); // Column width overrides\n $.set('_rgColumnOrder', {}); // Column order (rank) overrides\n\n // Listen to the config and the _wrappers first object properties\n return combineLatest([\n $.observe('Config', false),\n _wrappers\n .pipe(map(wrappers => (wrappers[0] ?? defaultWrap()).__rgProperties()))\n .pipe(distinctUntilChanged()),\n $.observe('Enable Column Reordering', false),\n $.observe('_rgColumnWidth'),\n $.observe('_rgColumnOrder'),\n $.observe('Default Width')\n ])\n\n // Build the columns\n .pipe(map(([config, properties, ...others]) => {\n // Config is set by the user\n if (config) {\n return [config, ...others];\n }\n\n // Config is auto-generated from the data\n if (properties.length > 0) {\n return [\n properties.map((path, index) => ({ 'Property Path': path, Type: 'AUTO', Rank: index })),\n ...others\n ];\n }\n\n // Empty config\n return [[], ...others];\n }))\n\n // Transform to an array of objects\n .pipe(map(([config, reorderableColumns, columnWidth, columnOrder, defaultWidth]) => {\n return config\n .map(column => column instanceof CloudObject ? column.toObject(true, true) : column)\n .sort((a, b) => getColumnRank(a, columnOrder) - getColumnRank(b, columnOrder))\n .map(column => generateColumn(column, reorderableColumns, columnWidth, defaultWidth));\n }))\n\n // Cache the filtered columns (per level) for quick access\n .pipe(map(columns => {\n const filteredColumns = filterLevelledColumns(columns);\n $.set('_rgFilteredColumns', filteredColumns);\n return filteredColumns;\n }));\n}\n\n/**\n * @param {!BrickContext} $\n * @return {!*}\n */\nexport function useColumns($) {\n const filteredColumns = useProperty($, '_rgFilteredColumns');\n return filteredColumns?.get(0) ?? [];\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} level \n * @return {!Array}\n */\nexport function getColumns($, level) {\n const filteredColumns = $.get('_rgFilteredColumns');\n return filteredColumns?.get(level ?? 0) ?? [];\n}\n\n/**\n * Handle the resizing of columns\n * @param {!BrickContext} $ \n * @param {string} columnId \n * @param {number} width \n */\nexport function handleOnColumnResized($, columnId, width) {\n const currentCols = { ...$.get('_rgColumnWidth') };\n currentCols[columnId] = width;\n $.set('_rgColumnWidth', currentCols);\n}\n\n/**\n * @param {!Array} columns\n * @return {!Map<number, !Array>}\n */\nfunction filterLevelledColumns(columns) {\n // Group the columns by rank and save all levels\n const levels = new Set();\n const perRank = columns.reduce((acc, cur) => {\n const rank = cur.Rank ?? 0;\n if(!acc.has(rank)) {\n acc.set(rank, []);\n }\n acc.get(rank).push(cur);\n levels.add(cur.Level ?? 0);\n return acc;\n }, new Map());\n const allRanks = Array.from(perRank.keys());\n\n // Get the columns for each level\n const filterLevel = level => {\n return allRanks.map(rank => {\n const rankColumns = perRank.get(rank);\n const atLevel = rankColumns.find(column => (column.Level ?? 0) === level);\n const generic = rankColumns.find(column => (column.Level ?? 0) === -1);\n return atLevel ?? generic ?? rankColumns[0];\n });\n };\n\n // Return all levels\n return Array.from(levels.values()).reduce((acc, cur) => acc.set(cur, filterLevel(cur)), new Map());\n}\n\n/**\n * @param {!Object} column\n * @param {boolean} reorderableColumns\n * @param {!Object} columnWidth\n * @param {number} defaultWidth\n * @return {!Object}\n */\nfunction generateColumn(column, reorderableColumns, columnWidth, defaultWidth) {\n if(typeof column.Rank !== 'number') {\n warn(`column rank is missing, using 0 as fallback (column: ${column.Header ?? column['Property Path']})`);\n }\n const rank = column.Rank ?? 0;\n return {\n columnId: rank,\n reorderable: reorderableColumns,\n width: columnWidth?.[rank] ?? column.Width ?? defaultWidth ?? 150,\n resizable: column.Resizable,\n Level: column.Level ?? 0,\n ...column\n };\n}\n\n/**\n * @param {!BrickContext} $\n * @param {number} targetColumnId\n * @param {!Array} columnIds\n */\nexport function handleOnColumnsReordered($, targetColumnId, columnIds) {\n const columns = getColumns($, 0);\n const ranks = columns.map(column => column.Rank);\n const targetIndex = ranks.indexOf(targetColumnId);\n const movingIndexes = columnIds.map(id => ranks.indexOf(id));\n const newRanks = reorderObject(ranks, movingIndexes, targetIndex);\n const newOrder = newRanks.reduce((acc, cur, index) => ({ [cur]: index, ...acc }), {});\n $.set('_rgColumnOrder', newOrder);\n}\n\n/**\n * @param {!Object} column\n * @param {!Object} overrides\n * @return {number}\n */\nfunction getColumnRank(column, overrides) {\n return overrides[column.Rank] ?? column.Rank;\n}\n","// Olympe\nimport { QueryResult } from 'olympe';\n\n// Rxjs\nimport { tap, combineLatest, map } from 'rxjs';\n\n// Internal\nimport { warn, fromJson } from './helpers';\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _reload\n * @return {!Observable}\n */\nexport function initData($, _reload) {\n // Listen to the data and for any refresh\n return combineLatest([\n $.observe('Data', false),\n _reload\n ])\n\n // Default values\n .pipe(map(([data]) => data ? data : []))\n\n // Transform to an array\n .pipe(map(data => {\n // The data is already an array\n if (Array.isArray(data)) {\n return data;\n }\n\n // QueryResult case\n if (data instanceof QueryResult) {\n return data.toArray();\n }\n\n // JSON case\n if (typeof data === 'string') {\n const [json, error] = fromJson(data);\n if (!error && Array.isArray(json)) {\n return json;\n }\n }\n\n // Type is not supported\n warn('the `Data` property is not convertible to an array');\n return [];\n }))\n \n // Set the transformed data into _Data\n .pipe(tap(data => $.set('_rgData', data)));\n}\n\n","// Olympe\nimport { getLogger } from '@olympeio/core';\n\n/**\n * Parse a json string without throwing an exception\n * @param {string|!Object} json \n * @return {!Array}\n */\nexport function fromJson(json) {\n try {\n return typeof json === 'string'\n ? [JSON.parse(json), null]\n : [json ?? {}, null];\n }\n catch(err) {\n return [{}, err];\n }\n}\n\n/**\n * Warn message with a default format\n * @param {string} message \n */\nexport function warn(message) {\n getLogger('ReactGrid').warn(`ReactGrid: ${message}`);\n}\n\n/**\n * Error message with a default format\n * @param {string} message \n */\nexport function error(message) {\n getLogger('ReactGrid').error(`ReactGrid: ${message}`);\n}\n\n/**\n * Make a jsonpath-plus path readable\n * @param {string} path\n * @return {string} \n */\nexport function trimPath(path) {\n if(path.startsWith('$') || path.startsWith('.')) {\n return trimPath(path.substring(1));\n }\n if(path.startsWith('[')) {\n return trimPath(path.substring(path.indexOf(']') + 1));\n }\n return path;\n}\n\n/**\n * Test for email format\n * @param {string} text\n * @return {boolean}\n */\nexport function validateEmail(text) {\n return emailRegex.test(text);\n}\n\n// Email regex (https://emailregex.com/)\nconst emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n/**\n * Reorders elements in an object by moving specific elements to a new position.\n *\n * @param {Array} values - The original array to reorder.\n * @param {number[]} ids - An array of indices representing the elements to move.\n * @param {number} to - The target index where the selected elements should be moved.\n * @return {Object} - A new object with the specified elements reordered.\n */\nexport function reorderObject(values, ids, to) {\n const reorderedValues = [...values];\n\n // Get elements to move based on the ids\n const elementsToMove = ids.map(index => reorderedValues[index]);\n ids.sort((a, b) => b - a).forEach(index => {\n reorderedValues.splice(index, 1);\n });\n\n // Adjust the target id based on moving forward or backward\n const adjustedTargetId = to >= Math.min(...ids) ? to - elementsToMove.length + 1 : to;\n\n // Insert the elements in target id\n if (elementsToMove.length > 0) {\n reorderedValues.splice(adjustedTargetId, 0, ...elementsToMove);\n }\n\n return reorderedValues;\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n// Rxjs\nimport { tap, combineLatest, map, distinctUntilChanged } from 'rxjs';\n\n// Internal\nimport { generateCell, getCellStyle } from './cells';\nimport { trimPath } from './helpers';\nimport { getColumns } from './columns';\nimport { getFlattenWrappers } from './wrappers';\n\n/**\n * Init the rows\n * @param {!BrickContext} $ \n * @param {!Observable} _wrappers \n * @param {!Observable} _filteredColumns \n */\nexport function initRows($, _wrappers, _filteredColumns) {\n // Listen to the _data and the _columns\n combineLatest([\n _wrappers,\n _filteredColumns\n .pipe(distinctUntilChanged(undefined, filteredColumns => {\n // Avoid updating the rows for some changes on the column config: width, resizable, etc.\n return Array.from(filteredColumns.values())\n .flat()\n .map(c => `${c.Header}${c['Property Path']}${c.Type}${c.Options}${c.Rank}${c.Editable}${c.Level}`)\n .join('');\n })),\n $.observe('Row Height', false),\n $.observe('Cell Edition', false),\n $.observe('Disable Header Row', false),\n $.observe('Default Color', false),\n $.observe('Border Color', false),\n $.observe('Border Width', false)\n ])\n\n // Use the reactgrid format for rows\n .pipe(map(([_wrappers, _filteredColumns, rowHeight, cellEdition, removeHeaderRow]) => {\n // Optional header row\n const headerRow = removeHeaderRow ? [] : [{\n rowId: '_header',\n height: rowHeight,\n cells: getColumns($, 0).map(column => {\n const text = column.Header ?? trimPath(column['Property Path'] ?? '');\n const finalText = column.Level === 0 ? text : '';\n return { type: 'header', text: finalText, style: getCellStyle($) };\n })\n }];\n\n // Generate all the rows\n const rows = getFlattenWrappers($).map(({ wrapper, level }, index) => {\n const rowColumns = getColumns($, level);\n return generateRow(wrapper, rowColumns, index, $, rowHeight, cellEdition);\n });\n\n // Final rows\n return [headerRow, rows].flat();\n }))\n\n // Set the final rows\n .pipe(tap(rows => $.set('_rgRows', rows)))\n\n // Run \n .subscribe();\n}\n\n/**\n * @param {!BrickContext}\n * @return {!*}\n */\nexport function useRows($) {\n return useProperty($, '_rgRows') ?? [];\n}\n\n/**\n * @param {!RGWrapper} wrapper \n * @param {!Array} columns \n * @param {number} index \n * @param {!BrickContext} $ \n * @param {number} rowHeight \n * @param {boolean} cellEdition \n * @return {!Object}\n */\nfunction generateRow(wrapper, columns, index, $, rowHeight, cellEdition) {\n return { \n rowId: index,\n height: rowHeight,\n cells: columns.map(column => generateCell($, wrapper, index, column, cellEdition))\n };\n}\n","// React\nimport { useEffect } from 'react';\nimport { tap, interval } from 'rxjs';\n\n// Internal\nimport { triggerRedraw } from './triggers';\n\n/**\n * @param {!BrickContext} $\n */\nexport function initScroll($) {\n // Auto-redraw on scroll (fix fast scrolling issue)\n $.set('_rgLastScroll', 0);\n $.set('_rgLastScrollRedraw', 0);\n interval(1000)\n .pipe(tap(() => {\n if($.get('_rgLastScroll') !== $.get('_rgLastScrollRedraw')) {\n $.set('_rgLastScrollRedraw', $.get('_rgLastScroll'));\n triggerRedraw($);\n }\n }))\n .subscribe();\n}\n\n/**\n * @param {!BrickContext} $\n * @param {!*} ref\n */\nexport function useRedrawAfterScroll($, ref) {\n const registerScroll = () => $.set('_rgLastScroll', Date.now());\n useEffect(() => {\n if (ref.current) {\n ref.current.parentElement.style.overflow = 'visible';\n ref.current.addEventListener('scroll', registerScroll);\n }\n return () => {\n if (ref.current) {\n ref.current.removeEventListener('scroll', registerScroll);\n }\n };\n }, [ref]);\n}\n\n","// Olympe\nimport { useProperty } from '@olympeio/core';\n\n/**\n * @param {!BrickContext} $\n * @return {!Observable}\n */\nexport function initTriggers($) {\n return $.observe('Reload', false);\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function useRedraw($) {\n useProperty($, 'Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerRedraw($) {\n $.trigger('Redraw');\n}\n\n/**\n * @param {!BrickContext} $\n */\nexport function triggerReload($) {\n $.trigger('Reload');\n}\n\n","// Olympe\nimport { CloudObject } from 'olympe';\n\n// Rxjs\nimport { tap, map } from 'rxjs';\n\n// Json\nimport { JSONPath } from 'jsonpath-plus';\n\n// Internal\nimport { warn, trimPath } from './helpers';\nimport { getModelPropertiesName, findObjectProperty } from './cloudobjects';\nimport { isChevronCellExpanded } from './cells';\n\n/**\n * @typedef RGWrapper\n * @property {!*} rgObject - The wrapped object\n * @property {!Array} rgChildren - Potential children of the object\n * @property {function():string} rgGetKey - Get a unique key\n * @property {string} _rgType - The type of the wrapped object\n * @property {number} _rgLevel - The level in the hierarchy\n * @property {function():!Array<string>} __rgProperties - Get all the properties name\n * @property {function(string):!*} __rgGetProperty - Get a property by its path\n * @property {function(string):!*} __rgGetValue - Get a value for a path\n * @property {function(string):!*} __rgGetObject - Get the object for a path\n */\nexport const RGWrapper = {};\n\n/**\n * Init the internal data state, make sure it is an array\n * @param {!BrickContext} $ \n * @param {!Observable} _data \n * @return {!Observable}\n */\nexport function initWrappers($, _data) {\n // Observe the data\n return _data\n\n // Wrap all objects\n .pipe(map(data => data.map(d => rgWrap(d))))\n\n // Set the transformed data into _Data\n .pipe(tap(wrappers => $.set('_rgWrappers', wrappers)));\n}\n\n/**\n * @param {!*} object \n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function rgWrap(object, level) {\n // Already wrapped -> rewrap missing properties\n if(object.hasOwnProperty('rgObject')) {\n const missingProps = ['rgChildren', 'rgGetKey', '_rgType', '_rgLevel',\n '__rgProperties', '__rgGetProperty', '__rgGetValue',\n '__rgGetObject'].filter(prop => !object.hasOwnProperty(prop));\n if(missingProps.length > 0) {\n const wrapped = rgWrap(object.rgObject, level ?? 0);\n return missingProps.reduce((acc, cur) => {\n acc[cur] = wrapped[cur];\n return acc;\n }, object);\n }\n return object;\n }\n\n // Tuple case\n if(Array.isArray(object)) {\n return wrapTuple(object, level ?? 0);\n }\n\n // CloudObject case\n if(object instanceof CloudObject) {\n return wrapCloudObject(object, level ?? 0);\n }\n\n // Object case\n if(typeof object === 'object') {\n return wrapObject(object, level ?? 0);\n }\n\n // Wrong type\n warn('some data are not of the following type: Object, CloudObject, Array');\n return defaultWrap(level ?? 0);\n}\n\n/**\n * @param {!Object} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => Object.values(object).join('.'),\n _rgType: 'object',\n _rgLevel: level,\n __rgProperties: () => Object.keys(object),\n __rgGetProperty: path => trimPath(path),\n __rgGetValue: path => JSONPath({ path, json: object, wrap: false }),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!CloudObject} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapCloudObject(object, level) {\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => object.getTag(),\n _rgType: 'cloudobject',\n _rgLevel: level,\n __rgProperties: () => getModelPropertiesName(object),\n __rgGetProperty: path => findObjectProperty(object, path),\n __rgGetValue: path => object.get(findObjectProperty(object, path)),\n __rgGetObject: () => object\n };\n}\n\n/**\n * @param {!Array} object \n * @param {number} level \n * @return {!RGWrapper} \n */\nfunction wrapTuple(object, level) {\n const wrapped = object.map(o => rgWrap(o, level + 1));\n return {\n rgObject: object,\n rgChildren: [],\n rgGetKey: () => `[${wrapped.map(w => w.rgGetKey()).join('.')}]`,\n _rgType: 'tuple',\n _rgLevel: level,\n __rgProperties: () => wrapped.map((w, i) => w.__rgProperties().map(p => `$[${i}].${p}`)).flat(),\n __rgGetProperty: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetProperty(subPath);\n },\n __rgGetValue: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetValue(subPath);\n },\n __rgGetObject: path => {\n const [index, subPath] = splitTuplePath(path);\n return wrapped[index].__rgGetObject(subPath);\n }\n };\n}\n\n/**\n * @param {number=} level \n * @return {!RGWrapper} \n */\nexport function defaultWrap(level) {\n return wrapObject({}, level ?? 0);\n}\n\n/**\n * @param {string} path \n * @returns {![number, string]} \n */\nfunction splitTuplePath(path) {\n const endBracket = path.indexOf(']');\n const index = parseInt(path.substring(path.indexOf('[') + 1, endBracket));\n const subPath = trimPath(path.substring(endBracket + 1));\n return [index, subPath];\n}\n\n/**\n * @param {!BrickContext} $ \n * @param {!Array} wrappers \n * @param {number} level \n * @return {!Array}\n */\nfunction flatten($, wrappers, level) {\n return wrappers.flatMap(wrapper => {\n const isExpanded = isChevronCellExpanded($, wrapper);\n const children = isExpanded ? flatten($, wrapper.rgChildren, level + 1) : [];\n return [{ wrapper, level }, ...children]; \n });\n}\n\n/**\n * @param {!BrickContext} $ \n * @return {!Array}\n */\nexport function getFlattenWrappers($) {\n return flatten($, $.get('_rgWrappers'), 0);\n}\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"@silevis/reactgrid\");","module.exports = require(\"@silevis/reactgrid/styles.css\");","module.exports = require(\"jsonpath-plus\");","module.exports = require(\"react\");","module.exports = require(\"rxjs\");","module.exports = require(\"styled-jsx/style\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/helpers.js'; import './common/internal/box.js'; import './common/internal/cells.js'; import './common/internal/changes.js'; import './common/internal/cloudobjects.js'; import './common/internal/columns.js'; import './common/internal/data.js'; import './common/internal/helpers.js'; import './common/internal/rows.js'; import './common/internal/scroll.js'; import './common/internal/triggers.js'; import './common/internal/wrappers.js'; import './common/RGCreateColumnConfig.js'; import './common/RGGetChangeMetadata.js'; import './common/RGGetChangeProperties.js'; import './common/RGGroupTuplesByIndexes.js'; import './common/RGProcessChangesForCloudObjects.js'; import './common/RGProcessChangesForJSONString.js'; import './common/RGProcessChangesForObjects.js'; import './common/RGWrapObject.js';\n;\nimport './web/RGReactGrid.jsx';\n\n"],"names":["registerBrick","ReactBrick","useProperty","React","useCallback","useRef","useState","ReactGrid","initData","initWrappers","initFilteredColumns","useColumns","handleOnColumnResized","handleOnColumnsReordered","initRows","useRows","initBox","useBox","handleOnCellsChanged","initTriggers","useRedraw","initScroll","useRedrawAfterScroll","initCells","RGReactGrid","_ReactBrick","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","init","$","_reload","_data","_wrappers","_filteredColumns","getReactComponent","box","hidden","allowContentOverflow","fontSize","rows","columns","rangeSelection","rowSelection","colSelection","fillHandle","stickTop","stickBottom","stickLeft","stickRight","containerRef","_useState","x","y","_useState2","_slicedToArray","gridPosition","setGridPosition","updateBoxPosition","_containerRef$current","rect","current","getBoundingClientRect","left","top","createElement","ref","className","_JSXStyle","dynamic","width","height","onCellsChanged","bind","undefined","enableFillHandle","onFocusLocationChanged","stickyLeftColumns","stickyRightColumns","stickyTopRows","stickyBottomRows","enableRangeSelection","enableColumnSelection","enableRowSelection","onColumnResized","onColumnsReordered","id","concat","default"],"sourceRoot":""}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@olympeio-extensions/reactgrid","version":"2.10.0","main":"main-node.js","browser":"main-web.js","dependencies":{"@olympeio/core":"2.10.0","@olympeio/runtime-node":"~9.10.0","@olympeio/runtime-web":"~9.10.0","@silevis/reactgrid":"^4.1.8","babel-loader":"^9.1.3","jsonpath-plus":"^9.0.0","react":"17.0.2","react-dom":"17.0.2","rxjs":"7.8.1","styled-jsx":"^5.1.6"},"codeAsData":"codeAsData"}
1
+ {"name":"@olympeio-extensions/reactgrid","version":"2.10.2","main":"main-node.js","browser":"main-web.js","dependencies":{"@olympeio/core":"2.10.1","@olympeio/runtime-node":"~9.10.0","@olympeio/runtime-web":"~9.10.0","@silevis/reactgrid":"^4.1.8","babel-loader":"^9.1.3","jsonpath-plus":"^9.0.0","react":"17.0.2","react-dom":"17.0.2","rxjs":"7.8.1","styled-jsx":"^5.1.6"},"codeAsData":"codeAsData"}