@apia/query 4.0.102 → 5.0.1

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.
Files changed (41) hide show
  1. package/dist/ListController.d.ts +130 -0
  2. package/dist/ListController.d.ts.map +1 -0
  3. package/dist/ListController.js +453 -0
  4. package/dist/ListController.js.map +1 -0
  5. package/dist/ListFunctionalityController.d.ts +13 -0
  6. package/dist/ListFunctionalityController.d.ts.map +1 -0
  7. package/dist/ListFunctionalityController.js +54 -0
  8. package/dist/ListFunctionalityController.js.map +1 -0
  9. package/dist/ModalListController.d.ts +14 -0
  10. package/dist/ModalListController.d.ts.map +1 -0
  11. package/dist/ModalListController.js +29 -0
  12. package/dist/ModalListController.js.map +1 -0
  13. package/dist/QueriesFunctionalityController.d.ts +262 -0
  14. package/dist/QueriesFunctionalityController.d.ts.map +1 -0
  15. package/dist/QueriesFunctionalityController.js +340 -0
  16. package/dist/QueriesFunctionalityController.js.map +1 -0
  17. package/dist/components/Pagination.d.ts +14 -0
  18. package/dist/components/Pagination.d.ts.map +1 -0
  19. package/dist/components/Pagination.js +65 -0
  20. package/dist/components/Pagination.js.map +1 -0
  21. package/dist/components/modals/ExportModal.js +146 -0
  22. package/dist/components/modals/ExportModal.js.map +1 -0
  23. package/dist/components/modals/FilterTypes.js +53 -0
  24. package/dist/components/modals/FilterTypes.js.map +1 -0
  25. package/dist/components/modals/controllers/ExportController.js +38 -0
  26. package/dist/components/modals/controllers/ExportController.js.map +1 -0
  27. package/dist/index.d.ts +8 -210
  28. package/dist/index.js +7 -624
  29. package/dist/index.js.map +1 -1
  30. package/dist/types.d.ts +10 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/utils/getDateFromString.d.ts +4 -0
  33. package/dist/utils/getDateFromString.d.ts.map +1 -0
  34. package/dist/utils/getDateFromString.js +8 -0
  35. package/dist/utils/getDateFromString.js.map +1 -0
  36. package/dist/utils/getStringFromDate.d.ts +4 -0
  37. package/dist/utils/getStringFromDate.d.ts.map +1 -0
  38. package/dist/utils/getStringFromDate.js +8 -0
  39. package/dist/utils/getStringFromDate.js.map +1 -0
  40. package/package.json +8 -8
  41. package/LICENSE.md +0 -6
package/dist/index.js CHANGED
@@ -1,625 +1,8 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { observer } from 'mobx-react-lite';
3
- import { Pagination as Pagination$1, DateInput } from '@apia/components';
4
- import { getLabel, EventEmitter, getDateFormat, arrayOrArray, Url } from '@apia/util';
5
- import { ApiaApi, makeApiaUrl } from '@apia/api';
6
- import { Cell, TableController, Row } from '@apia/table2-controller';
7
- import { makeObservable, observable, runInAction } from 'mobx';
8
- import { Input, Label, Box } from '@apia/theme';
9
- import dayjs from 'dayjs';
10
- import { notify } from '@apia/notifications';
11
-
12
- const labels = {
13
- deleteFilters: getLabel("btnClearFilter").text,
14
- firstPage: getLabel("btnNavFirst").text,
15
- information: getLabel("lblGridNotNum").text,
16
- lastPage: getLabel("btnNavLast").text,
17
- nextPage: getLabel("btnNavNext").text,
18
- maximize: getLabel("lblMaximizeWindow").text,
19
- minimize: getLabel("lblMinimizeWindow").text,
20
- moreData: getLabel("lblMoreData").text,
21
- page: getLabel("lblPage").text,
22
- pageInputInstructions: getLabel("btnNavFirst").text,
23
- previousPage: getLabel("btnNavPrev").text,
24
- refresh: getLabel("btnAct").text,
25
- totalRecords: getLabel("lblTotReg").text,
26
- totalRecordsReached: getLabel("msgTotRegReached").text
27
- };
28
- const Pagination = observer(
29
- ({ controller }) => {
30
- return /* @__PURE__ */ jsx(
31
- Pagination$1,
32
- {
33
- currentPage: controller.state.navigation.currentPage,
34
- onPageChange: (page) => {
35
- controller.page(page);
36
- },
37
- onRefresh: () => {
38
- controller.refresh();
39
- },
40
- pageCount: controller.state.navigation.pagesCount,
41
- recordsCount: controller.state.navigation.registers,
42
- appliedFilters: controller.table.getFilters().filter((c) => c.hasValue()).length,
43
- areAllFiltersApplied: controller.state.areAllFiltersApplied,
44
- onDeleteFilters: () => controller.clearFilters(),
45
- labels,
46
- isMaximized: controller.state.isMaximized,
47
- onMaximize: () => {
48
- controller.state.isMaximized = !controller.state.isMaximized;
49
- if (controller.state.isMaximized) {
50
- document.querySelector(".twoColumnsList")?.classList.add("maximized");
51
- } else {
52
- document.querySelector(".twoColumnsList")?.classList.remove("maximized");
53
- }
54
- }
55
- }
56
- );
57
- }
58
- );
59
-
60
- class HeaderCell extends Cell {
61
- constructor(definition) {
62
- super({
63
- colName: definition.name,
64
- content: definition.title,
65
- isHidden: definition.isHidden
66
- });
67
- this.definition = definition;
68
- makeObservable(this, { definition: observable });
69
- }
70
- updateDefinition(newDef) {
71
- Object.assign(this, newDef);
72
- }
73
- }
74
-
75
- class FilterCell extends Cell {
76
- constructor(colName, filter) {
77
- super({
78
- colName,
79
- tag: "td"
80
- });
81
- this.filter = filter;
82
- makeObservable(this, { filter: observable });
83
- }
84
- }
85
-
86
- var __defProp$4 = Object.defineProperty;
87
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
88
- var __publicField$4 = (obj, key, value) => {
89
- __defNormalProp$4(obj, key + "" , value);
90
- return value;
91
- };
92
- class Filter extends EventEmitter {
93
- constructor(properties) {
94
- super();
95
- __publicField$4(this, "state");
96
- this.state = {
97
- ...properties,
98
- value: properties.initialValue || ""
99
- };
100
- makeObservable(this, { state: observable });
101
- }
102
- focus() {
103
- }
104
- clear() {
105
- this.state.value = "";
106
- this.emit("change", null);
107
- }
108
- fire(ev) {
109
- this.emit(ev, null);
110
- }
111
- hasValue() {
112
- return !!this.state.value;
113
- }
114
- getValue() {
115
- return this.state.value;
116
- }
117
- getState(prop) {
118
- return this.state[prop];
119
- }
120
- setValue(value) {
121
- this.state.value = value;
122
- this.emit("change", null);
123
- }
124
- updateDefinition(def) {
125
- Object.assign(this.state, def);
126
- }
127
- validate() {
128
- return !this.state.isRequired || !!this.state.value;
129
- }
130
- }
131
-
132
- class ListCell extends Cell {
133
- constructor(colName, definition) {
134
- super({
135
- colName,
136
- className: definition.className,
137
- content: definition.text
138
- });
139
- this.definition = definition;
140
- }
141
- updateDefinition(definition) {
142
- this.state.className = definition.className;
143
- this.state.content = definition.text;
144
- }
145
- }
146
-
147
- const InputFilter = observer(({ filter }) => {
148
- return /* @__PURE__ */ jsx(
149
- Input,
150
- {
151
- value: filter.getValue(),
152
- onChange: (ev) => {
153
- filter.setValue(ev.target.value);
154
- },
155
- onKeyDown: (ev) => {
156
- if (ev.code === "Enter") {
157
- filter.fire("enter");
158
- }
159
- },
160
- onBlur: () => {
161
- filter.fire("blur");
162
- }
163
- }
164
- );
165
- });
166
-
167
- const DateFilter = observer(({ filter, inline }) => {
168
- if (inline) {
169
- return /* @__PURE__ */ jsx(
170
- DateInput,
171
- {
172
- value: filter.getValue(),
173
- onChange: (ev) => {
174
- filter.setValue(ev);
175
- }
176
- }
177
- );
178
- }
179
- return /* @__PURE__ */ jsxs(Label, { children: [
180
- filter.getState("title"),
181
- /* @__PURE__ */ jsx(
182
- DateInput,
183
- {
184
- value: filter.getValue(),
185
- onChange: (ev) => {
186
- filter.setValue(ev);
187
- }
188
- }
189
- )
190
- ] });
191
- });
192
-
193
- const DateRangeFilter$1 = observer(
194
- ({ filter, inline }) => {
195
- if (inline) {
196
- return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex" }, children: [
197
- /* @__PURE__ */ jsx(
198
- DateInput,
199
- {
200
- value: filter.getValueFrom(),
201
- onChange: (ev) => {
202
- return filter.setValueFrom(ev);
203
- }
204
- }
205
- ),
206
- /* @__PURE__ */ jsx(
207
- DateInput,
208
- {
209
- value: filter.getValueTo(),
210
- onChange: (ev) => {
211
- return filter.setValueTo(ev);
212
- }
213
- }
214
- )
215
- ] });
216
- }
217
- return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex" }, children: [
218
- /* @__PURE__ */ jsxs(Label, { children: [
219
- "Desde",
220
- /* @__PURE__ */ jsx(
221
- DateInput,
222
- {
223
- value: filter.getValueFrom(),
224
- onChange: (ev) => {
225
- return filter.setValueFrom(ev);
226
- }
227
- }
228
- )
229
- ] }),
230
- /* @__PURE__ */ jsxs(Label, { children: [
231
- "Hasta",
232
- /* @__PURE__ */ jsx(
233
- DateInput,
234
- {
235
- value: filter.getValueTo(),
236
- onChange: (ev) => {
237
- return filter.setValueTo(ev);
238
- }
239
- }
240
- )
241
- ] })
242
- ] });
243
- }
244
- );
245
-
246
- const FilterRender = observer(({ filter, inline }) => {
247
- switch (filter?.getState("type")) {
248
- case "INPUT":
249
- return /* @__PURE__ */ jsx(InputFilter, { filter, inline });
250
- case "DATE":
251
- return /* @__PURE__ */ jsx(DateFilter, { filter, inline });
252
- case "DATERANGE":
253
- return /* @__PURE__ */ jsx(DateRangeFilter$1, { filter, inline });
254
- }
255
- return /* @__PURE__ */ jsx(Input, { disabled: true });
256
- });
257
-
258
- var __defProp$3 = Object.defineProperty;
259
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
260
- var __publicField$3 = (obj, key, value) => {
261
- __defNormalProp$3(obj, key + "" , value);
262
- return value;
263
- };
264
- const FilterRenderer = ({ cell }) => {
265
- return cell instanceof FilterCell ? /* @__PURE__ */ jsx(FilterRender, { filter: cell.filter, inline: true }) : cell.getState("content");
266
- };
267
- class FiltersPlugin {
268
- constructor() {
269
- __publicField$3(this, "getRenderers", () => ({
270
- cell: FilterRenderer
271
- }));
272
- }
273
- }
274
-
275
- const dateFormat = getDateFormat();
276
- class DateRangeFilter extends Filter {
277
- setValue() {
278
- throw new Error("Cannot set value on range filter");
279
- }
280
- clear() {
281
- this.state.value = "";
282
- this.state.valueTo = "";
283
- this.emit("change", null);
284
- }
285
- checkDatesOrder(from, to) {
286
- if (!from || !to) {
287
- return true;
288
- }
289
- const fromDate = dayjs(from, dateFormat);
290
- const toDate = dayjs(to, dateFormat);
291
- const isValid = !fromDate.isAfter(toDate);
292
- if (!isValid) {
293
- notify({ message: "Fecha desde no puede ser mayor que fecha hasta" });
294
- }
295
- return isValid;
296
- }
297
- hasValue() {
298
- return !!this.state.value || !!this.state.valueTo;
299
- }
300
- getValue() {
301
- return `${this.state.value || ""}~${this.state.valueTo || ""}`;
302
- }
303
- getValueFrom() {
304
- return this.state.value;
305
- }
306
- getValueTo() {
307
- return this.state.valueTo;
308
- }
309
- setValueFrom(value) {
310
- if (this.checkDatesOrder(value, this.state.valueTo)) {
311
- this.state.value = value;
312
- this.emit("change", null);
313
- return true;
314
- }
315
- return false;
316
- }
317
- setValueTo(value) {
318
- if (this.checkDatesOrder(this.state.value, value)) {
319
- this.state.valueTo = value;
320
- this.emit("change", null);
321
- return true;
322
- }
323
- return false;
324
- }
325
- validate() {
326
- return !this.state.isRequired || !!this.state.value && !!this.state.valueTo;
327
- }
328
- }
329
-
330
- var __defProp$2 = Object.defineProperty;
331
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
332
- var __publicField$2 = (obj, key, value) => {
333
- __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
334
- return value;
335
- };
336
- class ListTableController extends EventEmitter {
337
- constructor(list) {
338
- super();
339
- this.list = list;
340
- __publicField$2(this, "controller");
341
- __publicField$2(this, "columnsMap", /* @__PURE__ */ new Map());
342
- __publicField$2(this, "filtersMap", /* @__PURE__ */ new Map());
343
- __publicField$2(this, "listeners", /* @__PURE__ */ new Map());
344
- this.controller = new TableController();
345
- this.controller.setPlugins((c) => [...c, new FiltersPlugin()]);
346
- this.init();
347
- }
348
- init() {
349
- this.controller.head.addRow(new Row("header"));
350
- this.controller.head.addRow(
351
- new Row("filters").setState("isHidden", true).setState("domProperties", { className: "filtersRow" })
352
- );
353
- }
354
- clear() {
355
- this.controller.body.clear();
356
- }
357
- fromGenericTable(table) {
358
- this.controller.setState("allowEdition", table.behavior.allowEdition);
359
- this.controller.setState("allowSelection", table.behavior.allowSelection);
360
- this.controller.setState(
361
- "isSelectionMultiple",
362
- table.behavior.isMultipleSelection
363
- );
364
- const columns = arrayOrArray(table.columns);
365
- const filters = arrayOrArray(table.filters);
366
- this.columnsMap.clear();
367
- for (const filter of filters) {
368
- if (this.filtersMap.get(filter.name)) {
369
- this.filtersMap.get(filter.name)?.updateDefinition(filter);
370
- } else {
371
- this.filtersMap.set(filter.name, this.makeFilter(filter));
372
- }
373
- }
374
- for (const key of this.filtersMap.keys()) {
375
- if (!filters.find((c) => c.name === key)) {
376
- this.removeFilter(key);
377
- }
378
- }
379
- this.controller.head.rows[0].cells.splice(columns.length);
380
- this.controller.head.rows[1].cells.splice(columns.length);
381
- let i;
382
- for (i = 0; i < columns.length; i++) {
383
- const column = columns[i];
384
- const colName = column.name;
385
- if (!this.controller.head.rows[0].cells[i]) {
386
- this.controller.head.rows[0].addCell(new HeaderCell(column));
387
- } else {
388
- this.controller.head.rows[0].cells[i].updateDefinition(
389
- column
390
- );
391
- }
392
- const filter = filters.find((c) => c.columnName === colName);
393
- if (this.controller.head.rows[1].cells[i]) {
394
- this.controller.head.rows[1].cells[i].setState(
395
- "colName",
396
- colName
397
- );
398
- this.controller.head.rows[1].cells[i].filter = this.filtersMap.get(
399
- filter?.name || "nohayfiltrodefinidiparaestacolumna"
400
- );
401
- } else {
402
- this.controller.head.rows[1].addCell(
403
- new FilterCell(
404
- colName,
405
- this.filtersMap.get(
406
- filter?.name || "nohayfiltrodefinidiparaestacolumna"
407
- )
408
- )
409
- );
410
- }
411
- this.columnsMap.set(
412
- colName,
413
- this.controller.head.rows[0].cells[i]
414
- );
415
- }
416
- const rows = arrayOrArray(table.rows);
417
- this.controller.body.rows.splice(rows.length);
418
- for (let i2 = 0; i2 < rows.length; i2++) {
419
- if (!this.controller.body.rows[i2]) {
420
- this.controller.body.addRow(new Row(rows[i2].id));
421
- } else {
422
- this.controller.body.rows[i2].setState("id", rows[i2].id);
423
- }
424
- this.controller.body.rows[i2].cells.splice(columns.length);
425
- for (let j = 0; j < columns.length; j++) {
426
- if (this.controller.body.rows[i2].cells[j]) {
427
- this.controller.body.rows[i2].cells[j].updateDefinition(
428
- arrayOrArray(rows[i2].cells)[j]
429
- );
430
- } else {
431
- this.controller.body.rows[i2].addCell(
432
- new ListCell(columns[j].name, arrayOrArray(rows[i2].cells)[j])
433
- );
434
- }
435
- }
436
- }
437
- }
438
- getFilter(filterName) {
439
- return this.filtersMap.get(filterName);
440
- }
441
- getFilters() {
442
- return [...this.filtersMap.values()];
443
- }
444
- removeFilter(filterName) {
445
- this.filtersMap.delete(filterName);
446
- this.listeners.get(filterName)?.forEach((listener) => listener());
447
- this.listeners.delete(filterName);
448
- }
449
- makeFilter(filter) {
450
- let inst;
451
- if (filter.type === "DATERANGE")
452
- inst = new DateRangeFilter(filter);
453
- else
454
- inst = new Filter(filter);
455
- const listenBlur = () => this.emit("filterBlur", inst);
456
- const listenChange = () => this.emit("filterChange", inst);
457
- const listenEnter = () => this.emit("filterPressEnter", inst);
458
- inst.on("blur", listenBlur);
459
- inst.on("change", listenChange);
460
- inst.on("enter", listenEnter);
461
- this.listeners.set(inst.getState("name"), [
462
- listenBlur,
463
- listenChange,
464
- listenEnter
465
- ]);
466
- return inst;
467
- }
468
- }
469
-
470
- var __defProp$1 = Object.defineProperty;
471
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
472
- var __publicField$1 = (obj, key, value) => {
473
- __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
474
- return value;
475
- };
476
- class ListController {
477
- constructor(env, configuration) {
478
- this.env = env;
479
- this.configuration = configuration;
480
- __publicField$1(this, "table");
481
- __publicField$1(this, "state", {
482
- areAllFiltersApplied: true,
483
- navigation: { currentPage: 0, pagesCount: 0, registers: 0 },
484
- fncId: -1,
485
- isFavorite: false,
486
- isMaximized: false
487
- });
488
- __publicField$1(this, "refreshTimeout", -1);
489
- this.table = new ListTableController(this);
490
- this.initializeFavoriteAction();
491
- if (configuration?.refreshOnStartup !== false) {
492
- this.refresh();
493
- }
494
- this.table.on("filterChange", (filter) => {
495
- this.state.areAllFiltersApplied = false;
496
- if (filter.getState("runAutomatically")) {
497
- this.throttleRefresh();
498
- }
499
- });
500
- this.table.on("filterPressEnter", () => {
501
- this.refresh();
502
- });
503
- this.table.on("filterBlur", () => {
504
- console.log("blur");
505
- });
506
- makeObservable(this, { state: observable });
507
- }
508
- throttleRefresh() {
509
- clearTimeout(this.refreshTimeout);
510
- this.refreshTimeout = setTimeout(() => {
511
- this.refresh();
512
- }, 100);
513
- }
514
- getAjaxParameters() {
515
- return { ajaxUrl: this.env.window.URL_REQUEST_AJAX };
516
- }
517
- async clearFilters() {
518
- runInAction(() => {
519
- this.table.getFilters().forEach((c) => c.clear());
520
- this.throttleRefresh();
521
- });
522
- }
523
- async page(pageNumber) {
524
- if (this.validateFilters()) {
525
- const result = await ApiaApi.post(
526
- makeApiaUrl({
527
- action: "refresh",
528
- page: pageNumber,
529
- ...this.getAjaxParameters()
530
- })
531
- );
532
- if (result?.data?.list) {
533
- this.processRefreshResult(result.data);
534
- }
535
- }
536
- }
537
- validateFilters() {
538
- const invalidFilters = this.table.getFilters().filter((c) => !c.validate());
539
- if (invalidFilters.length) {
540
- this.table.clear();
541
- notify({
542
- title: getLabel("titWarning").text,
543
- message: getLabel("msgQryFilterRequiredList", {
544
- text: {
545
- TOK1: invalidFilters.map((c) => c.getState("title")).join(", ")
546
- }
547
- }).text
548
- });
549
- }
550
- return invalidFilters.length === 0;
551
- }
552
- async refresh() {
553
- if (this.validateFilters()) {
554
- this.state.areAllFiltersApplied = true;
555
- const result = await ApiaApi.post(
556
- makeApiaUrl({
557
- action: "refresh",
558
- ...this.getAjaxParameters()
559
- }),
560
- {
561
- postData: {
562
- ...this.table.getFilters().reduce(
563
- (acc, cur) => ({
564
- ...acc,
565
- [`filter_${cur.getState("name")}`]: cur.getValue()
566
- }),
567
- {}
568
- )
569
- },
570
- postDataTreatement: "stringify",
571
- stringifyOptions: { arrayFormat: "repeat" }
572
- }
573
- );
574
- if (result?.data?.list) {
575
- this.processRefreshResult(result.data);
576
- }
577
- }
578
- }
579
- async initializeFavoriteAction() {
580
- this.state.fncId = Number.parseInt(
581
- String(new Url(window.location.href).getParameter("favFncId"))
582
- );
583
- const res = await ApiaApi.post(
584
- makeApiaUrl({ action: "loadFavoriteState", favFncId: this.state.fncId })
585
- );
586
- if (res?.data) {
587
- this.state.isFavorite = res.data.isFavorite;
588
- }
589
- }
590
- async toggleFavoriteFunctionality() {
591
- const res = await ApiaApi.post(makeApiaUrl({ action: "toggleFavorite", favFncId: this.state.fncId }));
592
- if (res?.data) {
593
- this.state.isFavorite = res.data.isFavorite;
594
- }
595
- }
596
- processRefreshResult(result) {
597
- this.table.fromGenericTable(result.list);
598
- this.state.navigation = result.list.navigation;
599
- }
600
- }
601
-
602
- var __defProp = Object.defineProperty;
603
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
604
- var __publicField = (obj, key, value) => {
605
- __defNormalProp(obj, key + "" , value);
606
- return value;
607
- };
608
- class ModalListController extends ListController {
609
- constructor(env, configuration) {
610
- super(env, { ...configuration, refreshOnStartup: false });
611
- __publicField(this, "tabId", Date.now());
612
- }
613
- getAjaxParameters() {
614
- return { ajaxUrl: this.configuration.ajaxUrl, tabId: this.tabId };
615
- }
616
- initializeFavoriteAction() {
617
- return Promise.resolve();
618
- }
619
- toggleFavoriteFunctionality() {
620
- return Promise.resolve();
621
- }
622
- }
623
-
624
- export { ListController, ModalListController, Pagination };
1
+ export { Pagination } from './components/Pagination.js';
2
+ export { ListController } from './ListController.js';
3
+ export { ModalListController } from './ModalListController.js';
4
+ export { ListFunctionalityController } from './ListFunctionalityController.js';
5
+ export { QueriesFunctionalityController } from './QueriesFunctionalityController.js';
6
+ export { getDateFromString } from './utils/getStringFromDate.js';
7
+ export { getStringFromDate } from './utils/getDateFromString.js';
625
8
  //# sourceMappingURL=index.js.map