@easydata/crud 1.4.12 → 1.4.17

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 (61) hide show
  1. package/dist/browser/easydata.css +2186 -2181
  2. package/dist/browser/easydata.css.map +1 -1
  3. package/dist/browser/easydata.js +10903 -11624
  4. package/dist/browser/easydata.js.map +1 -1
  5. package/dist/browser/easydata.min.css +3 -1
  6. package/dist/browser/easydata.min.js +1 -1
  7. package/dist/browser/easydata.min.js.map +1 -1
  8. package/dist/bundles/easydata.crud.js +8447 -8429
  9. package/dist/bundles/easydata.crud.js.map +1 -1
  10. package/dist/bundles/easydata.crud.min.js +1 -1
  11. package/dist/bundles/easydata.crud.min.js.map +1 -1
  12. package/dist/lib/filter/data_filter.d.ts +6 -6
  13. package/dist/lib/filter/data_filter.js +1 -0
  14. package/dist/lib/filter/text_data_filter.d.ts +16 -16
  15. package/dist/lib/filter/text_data_filter.js +122 -122
  16. package/dist/lib/form/entity_edit_form.d.ts +20 -20
  17. package/dist/lib/form/entity_edit_form.js +133 -133
  18. package/dist/lib/form/entity_edit_form.js.map +1 -1
  19. package/dist/lib/form/entity_form_builder.d.ts +27 -27
  20. package/dist/lib/form/entity_form_builder.js +440 -440
  21. package/dist/lib/form/entity_form_builder.js.map +1 -1
  22. package/dist/lib/i18n/text_resources.d.ts +1 -1
  23. package/dist/lib/i18n/text_resources.js +31 -31
  24. package/dist/lib/main/data_context.d.ts +45 -45
  25. package/dist/lib/main/data_context.js +167 -167
  26. package/dist/lib/main/data_context.js.map +1 -1
  27. package/dist/lib/main/easy_data_server_loader.d.ts +11 -11
  28. package/dist/lib/main/easy_data_server_loader.js +43 -43
  29. package/dist/lib/public_api.d.ts +16 -16
  30. package/dist/lib/public_api.js +16 -14
  31. package/dist/lib/public_api.js.map +1 -1
  32. package/dist/lib/utils/utils.d.ts +4 -4
  33. package/dist/lib/utils/utils.js +24 -24
  34. package/dist/lib/utils/utils.js.map +1 -1
  35. package/dist/lib/validators/datetime_validator.d.ts +6 -6
  36. package/dist/lib/validators/datetime_validator.js +45 -43
  37. package/dist/lib/validators/datetime_validator.js.map +1 -1
  38. package/dist/lib/validators/required_validator.d.ts +6 -6
  39. package/dist/lib/validators/required_validator.js +36 -34
  40. package/dist/lib/validators/required_validator.js.map +1 -1
  41. package/dist/lib/validators/type_validator.d.ts +6 -6
  42. package/dist/lib/validators/type_validator.js +46 -44
  43. package/dist/lib/validators/type_validator.js.map +1 -1
  44. package/dist/lib/validators/validator.d.ts +9 -9
  45. package/dist/lib/validators/validator.js +6 -6
  46. package/dist/lib/views/easy_data_view_dispatcher.d.ts +18 -18
  47. package/dist/lib/views/easy_data_view_dispatcher.js +113 -113
  48. package/dist/lib/views/entity_data_view.d.ts +23 -23
  49. package/dist/lib/views/entity_data_view.js +224 -224
  50. package/dist/lib/views/entity_data_view.js.map +1 -1
  51. package/dist/lib/views/options.d.ts +14 -14
  52. package/dist/lib/views/options.js +1 -0
  53. package/dist/lib/views/root_data_view.d.ts +9 -9
  54. package/dist/lib/views/root_data_view.js +48 -48
  55. package/dist/lib/views/root_data_view.js.map +1 -1
  56. package/dist/lib/widgets/progress_bar.d.ts +6 -6
  57. package/dist/lib/widgets/progress_bar.js +15 -15
  58. package/dist/lib/widgets/text_filter_widget.d.ts +24 -24
  59. package/dist/lib/widgets/text_filter_widget.js +213 -213
  60. package/package.json +28 -27
  61. package/webpack.config.js +12 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://easydataCRUD/webpack/universalModuleDefinition","webpack://easydataCRUD/webpack/bootstrap","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/browser_utils.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/types/data_type.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/types/entity_attr_kind.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/types/editor_tag.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_method.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_request.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/string_utils.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/i18n/i18n.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/utils.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_action_result.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_client.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/meta/meta_entity.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/meta/value_editor.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/meta/meta_data.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/aggr_settings.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_column.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_row.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/easy_data_table.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/easy_guid.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/event/event_emitter.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/liquid.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/i18n/load_default_locale_settings.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/public_api.js","webpack://easydataCRUD/./src/filter/text_data_filter.ts","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/ui-utils.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/mask.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/dom_elem_builder.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/drag_manager.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_options.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/calendar.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/date_time_picker.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_calendar.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/time_picker.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_time_picker.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/default_date_time_picker.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/dialog_service.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/default_dialog_service.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/i18n/text_resources.js","webpack://easydataCRUD/d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/public_api.js","webpack://easydataCRUD/./src/utils/utils.ts","webpack://easydataCRUD/./src/validators/validator.ts","webpack://easydataCRUD/./src/validators/datetime_validator.ts","webpack://easydataCRUD/./src/form/entity_edit_form.ts","webpack://easydataCRUD/./src/widgets/text_filter_widget.ts","webpack://easydataCRUD/./src/form/entity_form_builder.ts","webpack://easydataCRUD/./src/widgets/progress_bar.ts","webpack://easydataCRUD/./src/main/easy_data_server_loader.ts","webpack://easydataCRUD/./src/main/data_context.ts","webpack://easydataCRUD/./src/validators/type_validator.ts","webpack://easydataCRUD/./src/validators/required_validator.ts","webpack://easydataCRUD/./src/views/entity_data_view.ts","webpack://easydataCRUD/./src/views/root_data_view.ts","webpack://easydataCRUD/./src/views/easy_data_view_dispatcher.ts","webpack://easydataCRUD/./src/i18n/text_resources.ts","webpack://easydataCRUD/./src/public_api.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA;AAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC,yC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,qC;;AC7CO;AACP;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,4C;;ACNO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC,uC;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+CAA+C,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;ACzDO;AACP;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;AC/B8C;AACP;AACvC;AACA;AACA;AACO,IAAI,SAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAK;AACjB;AACA;AACA;AACA;AACA,kCAAkC,WAAK,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,WAAK,cAAc;AACxD;AACA,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iDAAiD;AAClE,QAAQ,WAAK;AACb;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAK,cAAc;AAC9C;AACA,8BAA8B,WAAK,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,WAAK,cAAc;AACxD;AACA;AACA;AACA,QAAQ,WAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAK,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA,eAAe,WAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB,EAAE;AAC7D,mCAAmC,qBAAqB,EAAE;AAC1D;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,SAAI,KAAK,SAAI,KAAK;AACrB,gC;;ACpduC;AACO;AACV;AAC7B,IAAI,WAAK;AAChB;AACA;AACA,6BAA6B,QAAQ,0BAA0B,iCAAiC,EAAE;AAClG;AACA;AACA;AACA,gBAAgB,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AACtD;AACA;AACA;AACA,gBAAgB,QAAQ,SAAS,QAAQ,OAAO,QAAQ;AACxD;AACA;AACA,yBAAyB,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AAC/D,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,QAAQ;AACnE;AACA;AACA;AACA;AACA,qBAAqB,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0BAA0B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,QAAQ,qBAAqB,QAAQ;AAC3H,6CAA6C,QAAQ,kBAAkB,QAAQ;AAC/E,yBAAyB,QAAQ,sBAAsB,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAiB;AACtC;AACA;AACA;AACA;AACA,SAAS;AACT,eAAe,aAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,kBAAkB,SAAI;AACtB,iBAAiB,SAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAI;AACnD;AACA;AACA;AACA,CAAC,EAAE,WAAK,KAAK,WAAK,KAAK;AACvB,iC;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,8C;;ACvBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACuC;AACiB;AACb;AACE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B,IAAI,sBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAK,2BAA2B;AACxD;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,yCAAyC,6CAA6C;AACtF,kDAAkD;AAClD;AACA;AACA;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACqB;AACtB,uC;;ACjK8C;AACa;AACpB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qBAAqB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oCAAoC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,0BAA0B,EAAE;AACnF;AACA;AACA,CAAC;AACqB;AACtB,IAAI,0BAAc;AAClB;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,WAAK;AAClC;AACA,8BAA8B,WAAK;AACnC,8BAA8B,WAAK;AACnC,8BAA8B,WAAK;AACnC,gCAAgC,WAAK;AACrC,8BAA8B,WAAK;AACnC,gCAAgC,WAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,uC;;AC9IgD;AACF;AAC9C;AACA;AACA;AACA,IAAI,wBAAW;AACf;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB,wC;;AChEoC;AACG;AACS;AACF;AACa;AACd;AAC7C;AACA;AACA;AACA,IAAI,kBAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,mBAAmB,0BAAc;AACjC;AACA;AACA,mBAAmB,wBAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA,8BAA8B,SAAI;AAClC;AACA;AACA;AACA,iCAAiC,WAAK,8BAA8B,yDAAyD;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,8BAA8B,SAAI;AAClC;AACA;AACA,iCAAiC,WAAK,8BAA8B,sDAAsD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA,8BAA8B,SAAI;AAClC,iCAAiC,WAAK;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kCAAkC,WAAK,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA,8BAA8B,SAAI;AAClC,0CAA0C,WAAK;AAC/C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAI;AAC1B;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS,OAAO,QAAQ;AACzE;AACA,6CAA6C,SAAS,WAAW,QAAQ;AACzE,6CAA6C,SAAS,WAAW,QAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAI;AACjC;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmB;AACpB,qC;;AC1eA,IAAI,oBAAQ,IAAI,SAAI,IAAI,SAAI;AAC5B,IAAI,oBAAQ;AACZ,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAQ,EAAE,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAQ,CAAC,oBAAQ,GAAG,SAAS,sEAAsE;AACtH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA,sCAAsC,6BAA6B,EAAE;AACrE;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B,yC;;AChM8C;AACP;AAChC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C,IAAI,sBAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAK,yBAAyB,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,IAAI,0BAAc;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,iCAAiC,sBAAU;AAC3C;AACA;AACA;AACA,sBAAsB,sBAAU;AAChC;AACA;AACA;AACA;AACA,aAAa,QAAQ,OAAO,QAAQ,WAAW,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAS,QAAQ,OAAO,QAAQ,WAAW,QAAQ,8BAA8B,EAAE;AACvH,wCAAwC,cAAc,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,uC;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;AACnB,oC;;AC5C+C;AACV;AACS;AACP;AACvC,IAAI,6BAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAAc;AAC1C;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,mCAAmC,yCAAyC,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD,gCAAgC,kCAAkC;AAClE,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC,yBAAyB,WAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,2C;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmB;AACpB,qC;;ACnB8C;AAC9C;AACA;AACA;AACA,IAAI,0BAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qCAAqC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc;AAChD,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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BACV,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gCAC/B,OAAO,IAAI,CAAC;6BACf;yBACJ;qBACJ;iBACJ;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,KAAkB,UAAgC,EAAhC,UAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAhC,cAAgC,EAAhC,IAAgC,EAAE;gBAA/C,IAAM,GAAG;gBACV,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;oBACnB,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC7B;aACJ;YAED,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;YAEvD,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,qBAAC;AAAD,CAAC;;;;;;;AC3H8C;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,QAAQ,qCAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,eAAe;AACf;AACA,uBAAuB,eAAM;AAC7B,eAAe;AACf;AACA;AACA;AACA,SAAS,eAAM;AACf,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACA;AACP,oC;;AClOO,SAAS,SAAI;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;AC/FA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,sBAAsB,SAAI,IAAI,SAAI;AAClC,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AAC8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;AACrC,IAAI,uCAAsB;AAC1B,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAI;AACZ;AACA;AACA;AACA,CAAC;AACiC;AAClC;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;;ACjTuC;AACY;AACD;AAClD;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,IAAI,wBAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,gDAAgD,EAAE;AAClD;AACA,6CAA6C,qBAAqB;AAClE;AACA,gBAAgB,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACO,wBAAwB,wBAAW;AAC1C,wC;;AC7WO;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C,6C;;ACNgD;AACM;AACtD;AACO,mBAAmB,QAAQ;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B,aAAa;AACb;AACA;AACA,yBAAyB,SAAI;AAC7B,+BAA+B;AAC/B;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAI;AACvB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6CAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC,mD;;ACzIwD;AACK;AAC7D;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA,aAAa,eAAe;AAC5B;AACA,aAAa,eAAe;AAC5B;AACA,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI,4BAAU;AACd;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,gBAAgB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACqB;AACtB,IAAI,gCAAc;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA,4BAA4B,4BAAU;AACtC;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA,8BAA8B,4BAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,6C;;AC3JA,IAAI,gBAAQ,IAAI,SAAI,IAAI,SAAI;AAC5B,IAAI,gBAAQ;AACZ,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAQ;AACnB;AACA,IAAI,sBAAc,IAAI,SAAI,IAAI,SAAI;AAClC,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AAC8E;AACZ;AAChB;AACqB;AACf;AACc;AACJ;AAClE;AACA;AACA;AACA,IAAI,kBAAQ;AACZ;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK;AAChC;AACA,6BAA6B,KAAK;AAClC;AACA;AACA;AACA;AACA,6BAA6B,WAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0BAAY;AAC5C,qCAAqC,6CAAqB;AAC1D,2BAA2B,gCAAc;AACzC;AACA;AACA;AACA;AACA,8BAA8B,WAAK,cAAc;AACjD,4BAA4B,WAAK,cAAc;AAC/C,qBAAqB,WAAK,UAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,QAAQ,WAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,qBAAqB,QAAQ,SAAS,gBAAQ,CAAC,gBAAQ,GAAG,0CAA0C,QAAQ;AAC5G;AACA,QAAQ,WAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,yBAAyB,sBAAc,CAAC,WAAK,uBAAuB,WAAK,wBAAwB,WAAK;AACtG,YAAY,QAAQ;AACpB;AACA,QAAQ,WAAK;AACb;AACA,yCAAyC,gBAAQ,CAAC,gBAAQ,GAAG;AAC7D;AACA,SAAS;AACT,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,kCAAkC,EAAE;AAChG,QAAQ,WAAK;AACb;AACA;AACA;AACA,YAAY,aAAa;AACzB;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,UAAU;AAC9C,gDAAgD,WAAW;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,iBAAiB;AACvF;AACA;AACA,mCAAmC,6BAA6B,EAAE;AAClE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oCAAoC,sBAAsB,EAAE;AAC5D,iCAAiC,kBAAkB,EAAE;AACrD,6CAA6C,sBAAsB,EAAE;AACrE;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA,sCAAsC,KAAK;AAC3C;AACA;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA,SAAS;AACT;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA,+EAA+E,iBAAiB;AAChG;AACA;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA;AACA,aAAa;AACb,yCAAyC,sBAAsB,UAAU,EAAE;AAC3E;AACA;AACA,YAAY,KAAK;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,sEAAsE,gBAAgB,EAAE;AACxF;AACA;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,YAAY,IAAI,YAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,qCAAqC,6BAA6B,EAAE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,SAAI;AACxC,2BAA2B,mBAAmB;AAC9C,2BAA2B,kBAAkB;AAC7C,2BAA2B,MAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,gDAAgD,oBAAoB;AACpE;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,4BAA4B,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,EAAE,EAAE;AACjB;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC,sDAAsD,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,iBAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB,qC;;AC7pCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB,oC;;AC7B0D;AAC1D,IAAI,+BAAc;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B,4C;;AC1GA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACyD;AACR;AACZ;AACtC,IAAI,gCAAe;AACnB,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD,kCAAkC,SAAI;AACtC;AACA,uBAAuB,yBAAyB;AAChD,8BAA8B,SAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+CAA+C,EAAE;AACvG;AACA,QAAQ,KAAK;AACb;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAS;AACtD;AACA;AACA;AACA;AACA,yBAAyB,SAAI;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,iDAAiD;AACjD;AACA;AACA;AACA,SAAS;AACT,kDAAkD,8BAA8B,GAAG,EAAE,EAAE,EAAE;AACzF,iDAAiD;AACjD;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,+DAA+D;AAC/D;AACA,2CAA2C,EAAE;AAC7C;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb,iDAAiD;AACjD;AACA,oDAAoD;AACpD;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/B,iDAAiD;AACjD;AACA;AACA;AACA,SAAS;AACT,kDAAkD,8BAA8B,GAAG,EAAE,EAAE,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,cAAc;AACrC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,QAAQ;AACiB;AAC3B,4C;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB,uC;;AC1BA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACY;AACP;AAC3C,IAAI,qCAAiB;AACrB,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA,kDAAkD,yCAAyC,EAAE;AAC7F;AACA,6BAA6B,KAAK;AAClC;AACA;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE;AAC3B;AACA,iDAAiD;AACjD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE,EAAE,EAAE;AAC3B;AACA;AACA;AACA,qBAAqB,SAAI;AACzB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,CAAC,UAAU;AACiB;AAC7B,+C;;AChFA,IAAI,gCAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACqC;AACY;AACE;AACC;AACK;AACA;AAC1D,IAAI,8CAAqB;AACzB,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,8CAA8C;AAC9C;AACA,kBAAkB,SAAI;AACtB;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE;AACvB;AACA,qDAAqD;AACrD;AACA,sBAAsB,SAAI;AAC1B;AACA;AACA;AACA,aAAa;AACb,yBAAyB,EAAE;AAC3B;AACA,iDAAiD;AACjD;AACA,kBAAkB,SAAI;AACtB;AACA;AACA;AACA,SAAS;AACT,qBAAqB,EAAE;AACvB;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,gCAAe;AAClC;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,qCAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,+BAAc;AACiB;AACjC,oD;;AC9HO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD,0C;;ACNA,IAAI,8BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACoD;AACI;AACP;AAClD,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA,sCAAsC,gCAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sCAAsC,gCAAS,+HAA+H,gCAAS,kCAAkC,gCAAS,oGAAoG,gCAAS,kCAAkC,gCAAS;AAC1X;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gCAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gCAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,oCAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4CAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,gBAAgB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC+B;AAChC,IAAI,oCAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAK;AAC7B;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,0BAA0B,gCAAS;AACnC;AACA,+CAA+C;AAC/C,mDAAmD,EAAE;AACrD,+CAA+C;AAC/C,0BAA0B,gCAAS;AACnC;AACA;AACA,8BAA8B,gCAAS;AACvC,iDAAiD;AACjD,8BAA8B,gCAAS;AACvC,4CAA4C,EAAE;AAC9C;AACA;AACA,uDAAuD;AACvD,kCAAkC,gCAAS;AAC3C;AACA;AACA,qBAAqB;AACrB,iCAAiC,EAAE;AACnC,aAAa;AACb;AACA,2BAA2B,gCAAS;AACpC;AACA,aAAa;AACb;AACA;AACA,8BAA8B,gCAAS;AACvC;AACA;AACA,+BAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gCAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,SAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,mBAAmB;AACrG;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA,wDAAwD;AACxD;AACA;AACA,6DAA6D,SAAI;AACjE;AACA;AACA,qBAAqB,EAAE,EAAE;AACzB,aAAa;AACb,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA,iCAAiC,gCAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+BAA+B,EAAE;AAC5E;AACA;AACA;AACA,2CAA2C,gCAAgC,EAAE;AAC7E;AACA;AACA,oBAAoB,KAAK;AACzB,sBAAsB,gCAAS;AAC/B,4CAA4C;AAC5C,sBAAsB,gCAAS;AAC/B;AACA;AACA;AACA;AACA,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB,IAAI,4CAAqB;AACzB,IAAI,8BAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB,2CAA2C;AAC3C;AACA,qBAAqB,EAAE;AACvB;AACA;AACA,0BAA0B,gCAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAa;AACkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B,kD;;AC/fsC;AACtC;AACA,IAAI,SAAI;AACR,wBAAwB,mBAAmB,IAAI,kBAAkB,KAAK,MAAM;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0C;;ACbA;AACiC;AACQ;AACA;AACM;AAC/C;AAC0C;AACQ;AACA;AACQ;AACL;AACR;AAC7C;AACsC;AACG;AACJ;AACR;AACI;AACjC;AACiD;AACR;AACV;AACyC;AACxE;AACA,kBAAkB,oBAAoB;AACnB;AACnB,sC;;AC1BsC;AACI;AAE1C,IAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,IAAM,kBAAkB,GAAG,OAAO,CAAC;AAE5B,IAAM,yBAAyB,GAAG,UAAC,KAAe;IACrD,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;QACtB,OAAO,kBAAkB,CAAC;IAE9B,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;QACtB,OAAO,kBAAkB,CAAC;IAE9B,OAAU,kBAAkB,SAAI,kBAAoB,CAAC;AACzD,CAAC;AAEM,IAAM,qBAAqB,GAAG,UAAC,KAAe;IACjD,IAAM,QAAQ,GAAG,SAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1C,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;QACtB,OAAO,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","file":"easydata.crud.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"easydataCRUD\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"easydataCRUD\"] = factory();\n\telse\n\t\troot[\"easydataCRUD\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","export var browserUtils;\r\n(function (browserUtils) {\r\n var _isFirefox = null;\r\n var _isIE = null;\r\n function IsIE() {\r\n // return eval('/*@cc_on!@*/false || !!document.documentMode');\r\n if (_isIE === null) {\r\n var ua = navigator.userAgent;\r\n /* MSIE used to detect old browsers and Trident used to newer ones*/\r\n _isIE = ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\r\n }\r\n return _isIE;\r\n }\r\n browserUtils.IsIE = IsIE;\r\n function IsEdge() {\r\n return !IsIE() && eval('!!window.StyleMedia');\r\n }\r\n browserUtils.IsEdge = IsEdge;\r\n function IsFirefox() {\r\n if (_isFirefox === null) {\r\n var ua = navigator.userAgent;\r\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\r\n }\r\n return _isFirefox;\r\n }\r\n browserUtils.IsFirefox = IsFirefox;\r\n var _detectedIsMobileMode = false;\r\n var _isMobileMode = undefined;\r\n var detectIsMobileMode = function () {\r\n var oldValue = isMobileMode();\r\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches\r\n || window.matchMedia('only screen and (max-height: 420px)').matches;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n };\r\n detectIsMobileMode();\r\n window.addEventListener('resize', function () { return detectIsMobileMode(); });\r\n function isMobileMode() {\r\n if (_isMobileMode !== undefined) {\r\n return _isMobileMode;\r\n }\r\n else {\r\n return _detectedIsMobileMode;\r\n }\r\n }\r\n browserUtils.isMobileMode = isMobileMode;\r\n function setIsMobileMode(value) {\r\n var oldValue = isMobileMode();\r\n _isMobileMode = value;\r\n var newValue = isMobileMode();\r\n if (newValue !== oldValue && mobileModeChangeHandler) {\r\n mobileModeChangeHandler(newValue);\r\n }\r\n }\r\n browserUtils.setIsMobileMode = setIsMobileMode;\r\n var mobileModeChangeHandler;\r\n function onMobileModeChanged(callback) {\r\n mobileModeChangeHandler = callback;\r\n }\r\n browserUtils.onMobileModeChanged = onMobileModeChanged;\r\n function getMobileCssClass() {\r\n return isMobileMode() ? 'k-mobile' : null;\r\n }\r\n browserUtils.getMobileCssClass = getMobileCssClass;\r\n})(browserUtils || (browserUtils = {}));\r\n//# sourceMappingURL=browser_utils.js.map","/** Represents the common types of the data. */\r\nexport var DataType;\r\n(function (DataType) {\r\n /** Unknown type value*/\r\n DataType[DataType[\"Unknown\"] = 0] = \"Unknown\";\r\n /** String value*/\r\n DataType[DataType[\"String\"] = 1] = \"String\";\r\n /** 8-bit integer value */\r\n DataType[DataType[\"Byte\"] = 2] = \"Byte\";\r\n /** 16-bit integer value */\r\n DataType[DataType[\"Word\"] = 3] = \"Word\";\r\n /** 32-bit integer value */\r\n DataType[DataType[\"Int32\"] = 4] = \"Int32\";\r\n /** 64-bit integer value */\r\n DataType[DataType[\"Int64\"] = 5] = \"Int64\";\r\n /** Boolean value */\r\n DataType[DataType[\"Bool\"] = 6] = \"Bool\";\r\n /** Floating-point numeric value */\r\n DataType[DataType[\"Float\"] = 7] = \"Float\";\r\n /** Money value */\r\n DataType[DataType[\"Currency\"] = 8] = \"Currency\";\r\n /** Binary-coded decimal value */\r\n DataType[DataType[\"BCD\"] = 9] = \"BCD\";\r\n /** Date value */\r\n DataType[DataType[\"Date\"] = 10] = \"Date\";\r\n /** Time value */\r\n DataType[DataType[\"Time\"] = 11] = \"Time\";\r\n /** Date and time value */\r\n DataType[DataType[\"DateTime\"] = 12] = \"DateTime\";\r\n /** Autoincrement 32-bit integer value */\r\n DataType[DataType[\"Autoinc\"] = 13] = \"Autoinc\";\r\n /** MEMO value (text with unlimited length) */\r\n DataType[DataType[\"Memo\"] = 14] = \"Memo\";\r\n /** BLOB value (any data with unlimited length) */\r\n DataType[DataType[\"Blob\"] = 15] = \"Blob\";\r\n /** Fixed character value */\r\n DataType[DataType[\"FixedChar\"] = 16] = \"FixedChar\";\r\n /** The unique identifier */\r\n DataType[DataType[\"Guid\"] = 17] = \"Guid\";\r\n /*-------- Spatial data types ----------*/\r\n /** Any geometry data */\r\n DataType[DataType[\"Geometry\"] = 18] = \"Geometry\";\r\n /** Any data that represents some geography objects</summary> */\r\n DataType[DataType[\"Geography\"] = 19] = \"Geography\";\r\n})(DataType || (DataType = {}));\r\n//# sourceMappingURL=data_type.js.map","export var EntityAttrKind;\r\n(function (EntityAttrKind) {\r\n EntityAttrKind[EntityAttrKind[\"Data\"] = 0] = \"Data\";\r\n EntityAttrKind[EntityAttrKind[\"Virtual\"] = 1] = \"Virtual\";\r\n EntityAttrKind[EntityAttrKind[\"Lookup\"] = 2] = \"Lookup\";\r\n})(EntityAttrKind || (EntityAttrKind = {}));\r\n//# sourceMappingURL=entity_attr_kind.js.map","export var EditorTag = {\r\n /** Unknown tag value */\r\n Unknown: \"Unknown\",\r\n /** Edit tag value */\r\n Edit: \"EDIT\",\r\n /** DateTime tag value */\r\n DateTime: \"DATETIME\",\r\n /** List tag value */\r\n List: \"LIST\",\r\n /** CustomList tag value */\r\n CustomList: \"CUSTOMLIST\",\r\n /** File tag value */\r\n File: \"FILE\"\r\n};\r\n//# sourceMappingURL=editor_tag.js.map","export var HttpMethod;\r\n(function (HttpMethod) {\r\n HttpMethod[\"Trace\"] = \"TRACE\";\r\n HttpMethod[\"Options\"] = \"OPTIONS\";\r\n HttpMethod[\"Get\"] = \"GET\";\r\n HttpMethod[\"Put\"] = \"PUT\";\r\n HttpMethod[\"Post\"] = \"POST\";\r\n HttpMethod[\"Delete\"] = \"DELETE\";\r\n})(HttpMethod || (HttpMethod = {}));\r\n//# sourceMappingURL=http_method.js.map","var HttpRequest = /** @class */ (function () {\r\n function HttpRequest(xhr, descriptor) {\r\n this.xhr = xhr;\r\n this.method = descriptor.method;\r\n this.url = descriptor.url;\r\n this.headers = descriptor.headers;\r\n this.queryParams = descriptor.queryParams;\r\n this.data = descriptor.data;\r\n }\r\n HttpRequest.prototype.setHeader = function (name, value) {\r\n this.headers[name] = value;\r\n };\r\n HttpRequest.prototype.setQueryParam = function (name, value) {\r\n this.queryParams[name] = value;\r\n };\r\n HttpRequest.prototype.getXMLHttpRequest = function () {\r\n return this.xhr;\r\n };\r\n HttpRequest.prototype.getResponseHeaders = function () {\r\n if (this.xhr.readyState == this.xhr.HEADERS_RECEIVED) {\r\n var headers = this.xhr.getAllResponseHeaders();\r\n var arr = headers.trim().split(/[\\r\\n]+/);\r\n // Create a map of header names to values\r\n var headerMap = {};\r\n for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {\r\n var line = arr_1[_i];\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n headerMap[header] = value;\r\n }\r\n return headerMap;\r\n }\r\n return {};\r\n };\r\n HttpRequest.prototype.open = function () {\r\n var _this = this;\r\n if (this.xhr.readyState !== this.xhr.UNSENT)\r\n return;\r\n var url = this.url;\r\n if (this.queryParams && Object.keys(this.queryParams).length > 0) {\r\n url += encodeURI('?' + Object.keys(this.queryParams)\r\n .map(function (param) { return param + '=' + _this.queryParams[param]; })\r\n .join('&'));\r\n }\r\n this.xhr.open(this.method, url, true);\r\n this.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\r\n for (var header in this.headers) {\r\n this.xhr.setRequestHeader(header, this.headers[header]);\r\n }\r\n };\r\n HttpRequest.prototype.abort = function () {\r\n this.xhr.abort();\r\n };\r\n return HttpRequest;\r\n}());\r\nexport { HttpRequest };\r\n//# sourceMappingURL=http_request.js.map","export function repeatString(str, times) {\r\n var result = \"\";\r\n for (var i = 0; i < times; i++) {\r\n result += str;\r\n }\r\n return result;\r\n}\r\nexport function reverseString(str) {\r\n return str.split(\"\").reverse().join(\"\");\r\n}\r\nexport function strEndsWith(str, symbol) {\r\n return str && str.lastIndexOf(symbol) == (str.length - symbol.length);\r\n}\r\n/**\r\n * Adds two paths and returns the result\r\n * Correctly processes leading and trailing slashes\r\n * @param path1\r\n * @param path2\r\n */\r\nexport function combinePath(path1, path2) {\r\n var result = path1;\r\n if (result != null && result.length > 0) {\r\n if (result.charAt(result.length - 1) != '/')\r\n result += \"/\";\r\n result += path2;\r\n }\r\n else {\r\n result = path2;\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=string_utils.js.map","import { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\n/**\r\n * Contains internatialization functionality.\r\n */\r\nexport var i18n;\r\n(function (i18n) {\r\n var englishUSLocaleSettings = {\r\n shortDateFormat: 'MM/dd/yyyy',\r\n longDateFormat: 'dd MMM, yyyy',\r\n editDateFormat: 'MM/dd/yyyy',\r\n shortTimeFormat: 'HH:mm',\r\n editTimeFormat: 'HH:mm',\r\n longTimeFormat: 'HH:mm:ss',\r\n shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n longMonthNames: ['January', 'February', 'March', 'April', 'May', 'June',\r\n 'July', 'August', 'September', 'October', 'November', 'December'],\r\n shortWeekDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n longWeekDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n decimalSeparator: '.',\r\n currency: 'USD'\r\n };\r\n var defaultLocale = {\r\n localeId: 'en-US',\r\n englishName: 'English',\r\n displayName: 'English',\r\n texts: {\r\n ButtonOK: 'OK',\r\n ButtonCancel: 'Cancel',\r\n Yes: 'Yes',\r\n No: 'No',\r\n True: 'True',\r\n False: 'False'\r\n },\r\n settings: englishUSLocaleSettings\r\n };\r\n var allLocales = {\r\n 'en-US': defaultLocale\r\n };\r\n var currentLocale;\r\n var mappers = [];\r\n function mapInfo(info) {\r\n for (var _i = 0, mappers_1 = mappers; _i < mappers_1.length; _i++) {\r\n var mapper = mappers_1[_i];\r\n mapper(info);\r\n }\r\n }\r\n function addMapper(mapper) {\r\n mappers.push(mapper);\r\n }\r\n i18n.addMapper = addMapper;\r\n /**\r\n * Gets added locales with their names.\r\n * @returns The locales.\r\n */\r\n function getLocales() {\r\n var result = [];\r\n for (var locale in allLocales) {\r\n result.push({\r\n locale: locale,\r\n englishName: allLocales[locale].englishName,\r\n displayName: allLocales[locale].displayName\r\n });\r\n }\r\n return result.sort(function (a, b) {\r\n if (a.englishName > b.englishName) {\r\n return 1;\r\n }\r\n else if (a.englishName === b.englishName) {\r\n return 0;\r\n }\r\n return -1;\r\n });\r\n }\r\n i18n.getLocales = getLocales;\r\n /**\r\n * Gets the current locale ID.\r\n * @returns The locale.\r\n */\r\n function getCurrentLocale() {\r\n return currentLocale.localeId;\r\n }\r\n i18n.getCurrentLocale = getCurrentLocale;\r\n /**\r\n * Sets the curent locale.\r\n * @deprecated Use setCurrentLocale instead\r\n * @param l The locale.\r\n */\r\n function setLocale(l) {\r\n console.warn('This method is deprecated. Use setCurrentLocale instead');\r\n setCurrentLocale(l);\r\n }\r\n i18n.setLocale = setLocale;\r\n /**\r\n * Sets the curent locale.\r\n * @param localeId The locale.\r\n */\r\n function setCurrentLocale(localeId) {\r\n var newLocale = allLocales[localeId];\r\n if (newLocale) {\r\n utils.assignDeep(currentLocale, newLocale);\r\n }\r\n else {\r\n currentLocale.englishName = localeId;\r\n currentLocale.displayName = localeId;\r\n currentLocale.texts = utils.assignDeep({}, defaultLocale.texts);\r\n }\r\n currentLocale.localeId = localeId;\r\n }\r\n i18n.setCurrentLocale = setCurrentLocale;\r\n /**\r\n * Returns localized text by the key defined in parameter.\r\n * Here we get the text of the resource string assigned to CmdClickToAddCondition key:\r\n *\r\n ```\r\n const text = i18n.getText('CmdClickToAddCondition')\r\n ```\r\n * @param args The keys of the resource string.\r\n * @returns Text of the resource defined by key or null if the key is not found\r\n *\r\n */\r\n function getText() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var textsObj = currentLocale.texts;\r\n var resText = '';\r\n if (args && args.length) {\r\n var argLength = args.length;\r\n for (var i = 0; i < argLength; i++) {\r\n resText = textsObj[args[i]];\r\n if (typeof resText === 'object') {\r\n textsObj = resText;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return resText;\r\n }\r\n i18n.getText = getText;\r\n function getLocaleSettings() {\r\n return currentLocale.settings;\r\n }\r\n i18n.getLocaleSettings = getLocaleSettings;\r\n function getOneLocaleSetting(key) {\r\n return currentLocale.settings[key];\r\n }\r\n i18n.getOneLocaleSetting = getOneLocaleSetting;\r\n function getShortMonthName(monthNum) {\r\n var settings = getLocaleSettings();\r\n if (monthNum > 0 && monthNum < 13) {\r\n return settings.shortMonthNames[monthNum - 1];\r\n }\r\n else {\r\n throw 'Wrong month number: ' + monthNum;\r\n }\r\n }\r\n i18n.getShortMonthName = getShortMonthName;\r\n function getLongMonthName(monthNum) {\r\n var settings = getLocaleSettings();\r\n if (monthNum > 0 && monthNum < 13) {\r\n return settings.longMonthNames[monthNum - 1];\r\n }\r\n else {\r\n throw 'Wrong month number: ' + monthNum;\r\n }\r\n }\r\n i18n.getLongMonthName = getLongMonthName;\r\n function getShortWeekDayName(dayNum) {\r\n var settings = getLocaleSettings();\r\n if (dayNum > 0 && dayNum < 8) {\r\n return settings.shortWeekDayNames.length >= dayNum\r\n ? settings.shortWeekDayNames[dayNum - 1]\r\n : dayNum.toString();\r\n }\r\n else {\r\n throw 'Wrong month number: ' + dayNum;\r\n }\r\n }\r\n i18n.getShortWeekDayName = getShortWeekDayName;\r\n function getLongWeekDayName(dayNum) {\r\n var settings = getLocaleSettings();\r\n if (dayNum > 0 && dayNum < 8) {\r\n return settings.longWeekDayNames.length >= dayNum\r\n ? settings.longWeekDayNames[dayNum - 1]\r\n : dayNum.toString();\r\n }\r\n else {\r\n throw 'Wrong month number: ' + dayNum;\r\n }\r\n }\r\n i18n.getLongWeekDayName = getLongWeekDayName;\r\n /**\r\n * Updates the locale settings (date/time formats, separators, etc) for the specified locale.\r\n * @param settingsToUpdate a LocaleSettings object\r\n */\r\n function updateLocaleSettings(settingsToUpdate) {\r\n if (!currentLocale.settings) {\r\n currentLocale.settings = utils.assignDeep({}, englishUSLocaleSettings);\r\n }\r\n currentLocale.settings = utils.assignDeep(currentLocale.settings, settingsToUpdate);\r\n }\r\n i18n.updateLocaleSettings = updateLocaleSettings;\r\n /**\r\n * Updates the texts for the current locale\r\n * @param texts A plain JS object that contains textual resources\r\n */\r\n function updateLocaleTexts(texts) {\r\n if (typeof texts !== 'object') {\r\n console.error('Wrong parameter type in updateLocaleTexts function call.' +\r\n 'The first parameter (localeId) is not necessary. Use updateLocaleTexts(texts) instead');\r\n return;\r\n }\r\n mapInfo({ localeId: currentLocale.localeId, texts: texts });\r\n utils.assignDeep(currentLocale.texts, texts);\r\n }\r\n i18n.updateLocaleTexts = updateLocaleTexts;\r\n function updateDefaultTexts(texts) {\r\n for (var localeId in allLocales) {\r\n var locale = allLocales[localeId];\r\n locale.texts = utils.assignDeep({}, texts, locale.texts);\r\n }\r\n currentLocale.texts = utils.assignDeep({}, texts, currentLocale.texts);\r\n }\r\n i18n.updateDefaultTexts = updateDefaultTexts;\r\n /**\r\n * Updates the information for the specified locale.\r\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\r\n * If the locale does exist yet - it will be added\r\n * @param localeInfo a LocaleInfo object that contains the locale settings and textual resources\r\n */\r\n function updateLocaleInfo(localeId, localeData) {\r\n mapInfo(localeData);\r\n var localeInfoToUpdate = currentLocale;\r\n if (localeId) {\r\n if (!localeData.localeId) {\r\n localeData.localeId = localeId;\r\n }\r\n localeInfoToUpdate = allLocales[localeId];\r\n if (!localeInfoToUpdate) {\r\n localeInfoToUpdate = utils.assignDeep({}, defaultLocale);\r\n allLocales[localeId] = localeInfoToUpdate;\r\n }\r\n }\r\n utils.assignDeep(localeInfoToUpdate, localeData);\r\n }\r\n i18n.updateLocaleInfo = updateLocaleInfo;\r\n /**\r\n * Adds the locale.\r\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\r\n * If the locale does exist yet - it will be created\r\n * @param localeInfo - a LocaleInfo object that contains the locale settings and textual resources\r\n */\r\n function addLocale(localeId, localeInfo) {\r\n updateLocaleInfo(localeId, localeInfo);\r\n }\r\n i18n.addLocale = addLocale;\r\n /**\r\n * Overwrites some locale settings (date/time formats) with the formats used in browser's current language\r\n */\r\n function determineSettingsByLocale(localeId) {\r\n var now = new Date(2020, 5, 7, 19, 34, 56, 88);\r\n var dateOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n var dateStr = now.toLocaleDateString(localeId, dateOptions);\r\n var timeStr = now.toLocaleTimeString(localeId, timeOptions);\r\n var dateFormat = dateStr\r\n .replace('07', 'dd')\r\n .replace('7', 'd')\r\n .replace('06', 'MM')\r\n .replace('6', 'M')\r\n .replace('2020', 'yyyy')\r\n .replace('20', 'yy');\r\n var timeFormat = timeStr\r\n .replace('19', 'HH')\r\n .replace('07', 'hh')\r\n .replace('7', 'h')\r\n .replace('34', 'mm')\r\n .replace('56', 'ss')\r\n .replace('PM', 'tt');\r\n if (!currentLocale.settings) {\r\n currentLocale.settings = {};\r\n }\r\n var localeSettings = {\r\n shortDateFormat: dateFormat,\r\n shortTimeFormat: timeFormat\r\n };\r\n updateLocaleSettings(localeSettings);\r\n }\r\n function loadBrowserLocaleSettings() {\r\n var lang = typeof navigator === 'object' ? navigator.language : undefined;\r\n determineSettingsByLocale(lang);\r\n }\r\n function resetLocales() {\r\n if (!currentLocale) {\r\n currentLocale = utils.assignDeep({}, defaultLocale);\r\n loadBrowserLocaleSettings();\r\n }\r\n }\r\n i18n.resetLocales = resetLocales;\r\n function dateTimeToStr(dateTime, dataType, format) {\r\n if (format) {\r\n if (format == 'd') {\r\n format = buildShortDateTimeFormat(DataType.Date);\r\n }\r\n else if (format == 'D') {\r\n format = buildLongDateTimeFormat(DataType.Date);\r\n }\r\n else if (format == 'f') {\r\n format = buildShortDateTimeFormat(DataType.DateTime);\r\n }\r\n else if (format == 'F') {\r\n format = buildLongDateTimeFormat(DataType.DateTime);\r\n }\r\n }\r\n else {\r\n format = buildShortDateTimeFormat(dataType);\r\n }\r\n return utils.dateTimeToStr(dateTime, format);\r\n }\r\n i18n.dateTimeToStr = dateTimeToStr;\r\n function buildShortDateTimeFormat(dataType) {\r\n var localeSettings = getLocaleSettings();\r\n var format;\r\n switch (dataType) {\r\n case DataType.Date:\r\n format = localeSettings.shortDateFormat;\r\n break;\r\n case DataType.Time:\r\n format = localeSettings.shortTimeFormat;\r\n break;\r\n default:\r\n format = localeSettings.shortDateFormat + ' ' + localeSettings.shortTimeFormat;\r\n break;\r\n }\r\n return format;\r\n }\r\n function buildLongDateTimeFormat(dataType) {\r\n var localeSettings = getLocaleSettings();\r\n var format;\r\n switch (dataType) {\r\n case DataType.Date:\r\n format = localeSettings.longDateFormat;\r\n break;\r\n case DataType.Time:\r\n format = localeSettings.longTimeFormat;\r\n break;\r\n default:\r\n format = localeSettings.longDateFormat + ' ' + localeSettings.longTimeFormat;\r\n break;\r\n }\r\n return format;\r\n }\r\n function numberToStr(number, format) {\r\n if (format && format.length > 0) {\r\n var type = format.charAt(0).toUpperCase();\r\n if (type === 'S') {\r\n return formatWithSequence(number, format.slice(1));\r\n }\r\n else if (['D', 'F', 'C'].indexOf(type) >= 0) {\r\n var locale = getCurrentLocale();\r\n return number.toLocaleString(locale, getNumberFormatOptions(format));\r\n }\r\n else {\r\n return convertWithMask(Math.trunc(number), format);\r\n }\r\n }\r\n var localeSettings = getLocaleSettings();\r\n return utils.numberToStr(number, localeSettings.decimalSeparator);\r\n }\r\n i18n.numberToStr = numberToStr;\r\n function booleanToStr(bool, format) {\r\n if (format && format.length > 0) {\r\n var type = format.charAt(0).toUpperCase();\r\n if (type === 'S') {\r\n var values = format.slice(1).split('|');\r\n if (values.length > 1) {\r\n var value = values[(bool) ? 1 : 0];\r\n return i18n.getText(value) || value;\r\n }\r\n }\r\n }\r\n return \"\" + bool;\r\n }\r\n i18n.booleanToStr = booleanToStr;\r\n var cachedSequenceFormats = {};\r\n function formatWithSequence(number, format) {\r\n if (!cachedSequenceFormats[format]) {\r\n // parse and save in cache format values \r\n var values_2 = format.split('|')\r\n .filter(function (v) { return v.length > 0; })\r\n .map(function (v) { return v.split('='); });\r\n cachedSequenceFormats[format] = {};\r\n if (values_2.length > 0) {\r\n if (values_2[0].length > 1) {\r\n for (var _i = 0, values_1 = values_2; _i < values_1.length; _i++) {\r\n var value = values_1[_i];\r\n cachedSequenceFormats[format][Number.parseInt(value[1])] = value[0];\r\n }\r\n }\r\n else {\r\n values_2.forEach(function (value, index) {\r\n cachedSequenceFormats[format][index] = value[0];\r\n });\r\n }\r\n }\r\n }\r\n var values = cachedSequenceFormats[format];\r\n if (values[number] !== undefined) {\r\n var value = values[number];\r\n return i18n.getText(value) || value;\r\n }\r\n return number.toString();\r\n }\r\n function convertWithMask(number, mask) {\r\n var value = number.toString();\r\n var result = '';\r\n var index = value.length - 1;\r\n for (var i = mask.length - 1; i >= 0; i--) {\r\n var ch = mask.charAt(i);\r\n if (ch === '#' || ch === '0') {\r\n if (index >= 0) {\r\n result += value.charAt(index);\r\n index--;\r\n }\r\n else {\r\n if (ch === '0') {\r\n result += 0;\r\n }\r\n }\r\n }\r\n else {\r\n result += ch;\r\n }\r\n }\r\n return result.split('').reverse().join('');\r\n }\r\n function getNumberFormatOptions(format) {\r\n var localeSettings = getLocaleSettings();\r\n var type = format[0].toUpperCase();\r\n var digits = (format.length > 1)\r\n ? Number.parseInt(format.slice(1))\r\n : type == 'D' ? 1 : 2;\r\n switch (type) {\r\n case 'D':\r\n return {\r\n style: 'decimal',\r\n useGrouping: false,\r\n minimumIntegerDigits: digits\r\n };\r\n case 'C':\r\n return {\r\n style: 'currency',\r\n currency: localeSettings.currency,\r\n minimumFractionDigits: digits\r\n };\r\n default:\r\n return {\r\n style: 'decimal',\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits\r\n };\r\n }\r\n }\r\n})(i18n || (i18n = {}));\r\n//# sourceMappingURL=i18n.js.map","import * as strf from './string_utils';\r\nimport { DataType } from '../types/data_type';\r\nimport { i18n } from '../i18n/i18n';\r\nexport var utils;\r\n(function (utils) {\r\n function getAllDataTypes() {\r\n return Object.values(DataType).filter(function (item) { return typeof item === \"number\"; });\r\n }\r\n utils.getAllDataTypes = getAllDataTypes;\r\n function getDateDataTypes() {\r\n return [DataType.Time, DataType.Date, DataType.DateTime];\r\n }\r\n utils.getDateDataTypes = getDateDataTypes;\r\n function getStringDataTypes() {\r\n return [DataType.String, DataType.Memo, DataType.FixedChar];\r\n }\r\n utils.getStringDataTypes = getStringDataTypes;\r\n var _numericTypes = [DataType.Byte, DataType.Word, DataType.Int32,\r\n DataType.Int64, DataType.Float, DataType.Currency, DataType.Autoinc];\r\n function getNumericDataTypes() {\r\n return _numericTypes;\r\n }\r\n utils.getNumericDataTypes = getNumericDataTypes;\r\n var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64, DataType.Autoinc];\r\n //-------------- object functions -------------------\r\n /**\r\n * Copy the content of all objests passed in `args` parameters into `target`\r\n * and returns the result\r\n * NB: This function copies only the first level properties.\r\n * For a deep copy please use `assignDeep`\r\n * @param target - the target object\r\n * @param args - an array of the source objects\r\n */\r\n function assign(target) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n for (var i = 0; i < args.length; i++) {\r\n var source = args[i];\r\n if (source) {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n utils.assign = assign;\r\n /**\r\n * Copy the content of all objests passed in `args` parameters into `target`\r\n * and returns the result\r\n * NB: This function make a deep copy -\r\n * so `assignDeep` will be called recursively for all object properties\r\n * on the first level.\r\n * @param target - the target object\r\n * @param sources - an array of the source objects\r\n */\r\n function assignDeep(target) {\r\n var sources = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n sources[_i - 1] = arguments[_i];\r\n }\r\n return assignDeepCore(new WeakMap(), target, sources);\r\n }\r\n utils.assignDeep = assignDeep;\r\n function assignDeepCore(hashSet, target, sources) {\r\n if (!target) {\r\n target = {};\r\n }\r\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\r\n var source = sources_1[_i];\r\n if (source) {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n var sourceVal = source[key];\r\n if (sourceVal !== null && typeof sourceVal === 'object') {\r\n if (hashSet.has(sourceVal)) {\r\n target[key] = hashSet.get(sourceVal);\r\n }\r\n else {\r\n if (Array.isArray(sourceVal)) {\r\n target[key] = createArrayFrom(sourceVal);\r\n hashSet.set(sourceVal, target[key]);\r\n }\r\n else {\r\n if (typeof target[key] == 'undefined' || target[key] == null) {\r\n target[key] = Object.create(Object.getPrototypeOf(sourceVal));\r\n }\r\n hashSet.set(sourceVal, target[key]);\r\n assignDeepCore(hashSet, target[key], [sourceVal]);\r\n }\r\n }\r\n }\r\n else {\r\n target[key] = sourceVal;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n function getIfDefined(value, defaultValue) {\r\n return (typeof value !== 'undefined') ? value : defaultValue;\r\n }\r\n utils.getIfDefined = getIfDefined;\r\n function IsDefinedAndNotNull(value) {\r\n return typeof value !== 'undefined' && value !== null;\r\n }\r\n utils.IsDefinedAndNotNull = IsDefinedAndNotNull;\r\n function copyArrayTo(collection1, collection2) {\r\n var len1 = collection1.length;\r\n var len2 = collection2.length;\r\n for (var i = 0; i < len1 && i < len2; i++) {\r\n collection2[i] = collection1[i];\r\n }\r\n }\r\n utils.copyArrayTo = copyArrayTo;\r\n function createArrayFrom(collection) {\r\n var result = [];\r\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\r\n var item = collection_1[_i];\r\n result.push(item);\r\n }\r\n return result;\r\n }\r\n utils.createArrayFrom = createArrayFrom;\r\n /**\r\n * Searches an array of the objects which implement ItemWithId by ID\r\n * Returs the found object or null.\r\n * @param array\r\n * @param id\r\n */\r\n function findItemById(array, id) {\r\n var arrLength = array.length;\r\n for (var idx = 0; idx < arrLength; idx++) {\r\n if (array[idx].id === id)\r\n return array[idx];\r\n }\r\n return null;\r\n }\r\n utils.findItemById = findItemById;\r\n function findItemIndexById(array, id) {\r\n var arrLength = array.length;\r\n for (var idx = 0; idx < arrLength; idx++) {\r\n if (array[idx].id === id)\r\n return idx;\r\n }\r\n return -1;\r\n }\r\n utils.findItemIndexById = findItemIndexById;\r\n /**\r\n * Searches an array of the objects which implement ItemWithId by ID\r\n * Returs the index of the found element, or -1 if nothing was found.\r\n * @param array\r\n * @param id\r\n */\r\n function indexOfArrayItem(arr, item) {\r\n if (arr.indexOf) {\r\n return arr.indexOf(item);\r\n }\r\n else {\r\n var len = arr.length;\r\n for (var i = 0; i < len; i++) {\r\n if (item == arr[i]) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n }\r\n utils.indexOfArrayItem = indexOfArrayItem;\r\n /**\r\n * Moves an item in some array to a new position\r\n * @param array\r\n * @param index1\r\n * @param index2\r\n */\r\n function moveArrayItem(array, index1, index2) {\r\n if (index1 >= array.length) {\r\n throw 'Index out of bounds: ' + index1;\r\n }\r\n if (index2 >= array.length) {\r\n index2 = array.length - 1;\r\n }\r\n var item = array.splice(index1, 1)[0];\r\n array.splice(index2, 0, item);\r\n }\r\n utils.moveArrayItem = moveArrayItem;\r\n /**\r\n * Searches for a particular item in the array are removes that item if found.\r\n * @param arr\r\n * @param value\r\n */\r\n function removeArrayItem(arr, value) {\r\n var index = arr.indexOf(value);\r\n if (index != -1) {\r\n return arr.splice(index, 1)[0];\r\n }\r\n }\r\n utils.removeArrayItem = removeArrayItem;\r\n function insertArrayItem(arr, index, value) {\r\n arr.splice(index, 0, value);\r\n }\r\n utils.insertArrayItem = insertArrayItem;\r\n function fillArray(arr, value, start, end) {\r\n if (start === void 0) { start = 0; }\r\n var len = arr.length >>> 0;\r\n var relativeStart = start >> 0;\r\n var k = relativeStart < 0 ?\r\n Math.max(len + relativeStart, 0) :\r\n Math.min(relativeStart, len);\r\n var relativeEnd = end === undefined ?\r\n len : end >> 0;\r\n var final = relativeEnd < 0 ?\r\n Math.max(len + relativeEnd, 0) :\r\n Math.min(relativeEnd, len);\r\n while (k < final) {\r\n arr[k] = value;\r\n k++;\r\n }\r\n return arr;\r\n }\r\n utils.fillArray = fillArray;\r\n //------------ DOM utils ------------\r\n /**\r\n * Calculates the shift on which we need to move our element horizontally\r\n * to find current window\r\n * @param absLeft\r\n * @param width\r\n */\r\n function shiftToFitWindow(absLeft, width) {\r\n var body = document.getElementsByTagName('body')[0];\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || body.clientWidth;\r\n var absRight = absLeft + width;\r\n var shift = 0;\r\n if (absRight > winWidth) {\r\n shift = winWidth - absRight - 10;\r\n if (absLeft + shift < 0) {\r\n shift = 10 - absLeft;\r\n }\r\n }\r\n return shift;\r\n }\r\n utils.shiftToFitWindow = shiftToFitWindow;\r\n /**\r\n * Returns `true` if the value passed in the parameter is an object\r\n * @param val\r\n */\r\n function isObject(val) {\r\n if (val === null) {\r\n return false;\r\n }\r\n return ((typeof val === 'function') || (typeof val === 'object'));\r\n }\r\n utils.isObject = isObject;\r\n /**\r\n * Returns `true` if the `DataType` value passed in the parameter\r\n * represents some numeric type\r\n * @param dtype\r\n */\r\n function isNumericType(dtype) {\r\n var index = _numericTypes.indexOf(dtype);\r\n return (index >= 0);\r\n }\r\n utils.isNumericType = isNumericType;\r\n /**\r\n * Returns `true` if the `DataType` value passed in the parameter\r\n * represents some numeric type\r\n * @param dtype\r\n */\r\n function isIntType(dtype) {\r\n var index = _intTypes.indexOf(dtype);\r\n return (index >= 0);\r\n }\r\n utils.isIntType = isIntType;\r\n /**\r\n * Returns `true` if the value passed in the parameter is an a numeric value\r\n * @param val\r\n */\r\n function isNumeric(val) {\r\n return !isNaN(parseFloat(val)) && isFinite(val);\r\n }\r\n utils.isNumeric = isNumeric;\r\n /**\r\n * Returns `true` if two data types passed in parameters\r\n * are compatible - so it's safe to copy the values between\r\n * two expressions with these two types\r\n * @param type1\r\n * @param type2\r\n */\r\n function areCompatibleDataTypes(type1, type2) {\r\n return typeof type1 == \"undefined\" || typeof type2 == \"undefined\" || type1 == DataType.Unknown || type2 == DataType.Unknown\r\n || (type1 == type2) || (type1 == DataType.Date && type2 == DataType.DateTime)\r\n || (type1 == DataType.DateTime && type2 == DataType.Date);\r\n }\r\n utils.areCompatibleDataTypes = areCompatibleDataTypes;\r\n /**\r\n * Returns `true` if the property with named `propName`\r\n * in the object `obj` has some value\r\n * @param obj\r\n * @param propName\r\n */\r\n function isPropSet(obj, propName) {\r\n return obj[propName] || obj[propName.toLowerCase()] || obj[propName.toUpperCase()];\r\n }\r\n utils.isPropSet = isPropSet;\r\n //-------------- ID generator -----------\r\n var prefixIdLen = 4;\r\n var symbols = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n var magicTicks = 636712160627685350;\r\n /**\r\n * Generates an unique ID\r\n */\r\n function generateId(prefix) {\r\n if (!prefix) {\r\n prefix = 'easy';\r\n }\r\n var prfx = (prefix.length > prefixIdLen) ? squeezeMoniker(prefix, prefixIdLen) : prefix;\r\n if (prfx && prfx.length > 0) {\r\n prfx += \"-\";\r\n }\r\n //adding 2 random symbols\r\n var randValue = strf.repeatString(\"\", 2);\r\n ;\r\n var maxSymbolIndex = symbols.length - 1;\r\n randValue = replaceAtString(randValue, 0, symbols[getRandomInt(0, maxSymbolIndex)]);\r\n randValue = replaceAtString(randValue, 1, symbols[getRandomInt(0, maxSymbolIndex)]);\r\n //generating main ID part (64-base representation of the current value of the time ticks)\r\n var ticksNum64 = intToNum36(getNowTicks() - magicTicks);\r\n return prfx + randValue + ticksNum64;\r\n }\r\n utils.generateId = generateId;\r\n function intToNum36(value) {\r\n var targetBase = 36;\r\n var i = 14;\r\n var buffer = strf.repeatString(\"\", i);\r\n var rest = value;\r\n do {\r\n buffer = replaceAtString(buffer, i--, symbols[rest % targetBase]);\r\n rest = Math.floor(rest /= targetBase);\r\n } while (rest > 0);\r\n return strf.reverseString(buffer.trim());\r\n }\r\n function squeezeMoniker(str, maxlen) {\r\n var parts = str.split('-');\r\n var pml = 1;\r\n var ptt = maxlen;\r\n if (parts.length < maxlen) {\r\n pml = maxlen / parts.length;\r\n ptt = parts.length;\r\n }\r\n var result = \"\";\r\n for (var i = 0; i < ptt; i++) {\r\n result += squeeze(parts[i], pml);\r\n }\r\n return result;\r\n }\r\n function squeeze(str, maxlen) {\r\n var len = str.length;\r\n if (len > maxlen) {\r\n var step = len / maxlen;\r\n var result = \"\";\r\n result += str[0];\r\n var nextIndex = step;\r\n var ch = void 0;\r\n for (var i = 1; i < len; i++) {\r\n ch = str[i];\r\n if (i + 1 > nextIndex) {\r\n result += ch;\r\n nextIndex += step;\r\n }\r\n }\r\n return result;\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n function replaceAtString(str, index, value) {\r\n return str.substr(0, index) + value + str.substr(index + value.length);\r\n }\r\n function getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n }\r\n function getNowTicks() {\r\n return (621355968e9 + (new Date()).getTime() * 1e4);\r\n }\r\n function safeParseInt(str) {\r\n var res = parseInt(str);\r\n if (isNaN(res))\r\n throw \"\\\"\" + str + \"\\\" is not a valid number\";\r\n return res;\r\n }\r\n function getDaysInMonth(month, year) {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n // ------------- date/time functions -------------------\r\n // TO DO: improve to process all datetime cases\r\n function strToDateTime(value, format) {\r\n if (!value || value.length == 0)\r\n return new Date();\r\n var normalizedValue = value.replace(/[^a-zA-Z0-9_]/g, '-');\r\n var normalizedFormat = format.replace(/[^a-zA-Z0-9_]/g, '-');\r\n var formatItems = normalizedFormat.split('-');\r\n var dateItems = normalizedValue.split('-');\r\n var monthIndex = formatItems.indexOf(\"MM\");\r\n var dayIndex = formatItems.indexOf(\"dd\");\r\n var yearIndex = formatItems.indexOf(\"yyyy\");\r\n var hourIndex = formatItems.indexOf(\"HH\");\r\n var minutesIndex = formatItems.indexOf(\"mm\");\r\n var secondsIndex = formatItems.indexOf(\"ss\");\r\n var today = new Date();\r\n try {\r\n var year = yearIndex > -1 && yearIndex < dateItems.length\r\n ? safeParseInt(dateItems[yearIndex])\r\n : today.getFullYear();\r\n var month = monthIndex > -1 && monthIndex < dateItems.length\r\n ? safeParseInt(dateItems[monthIndex]) - 1\r\n : today.getMonth() - 1;\r\n if (month > 11)\r\n throw '';\r\n var day = dayIndex > -1 && dayIndex < dateItems.length\r\n ? safeParseInt(dateItems[dayIndex])\r\n : today.getDate();\r\n if (day > getDaysInMonth(month, year))\r\n throw '';\r\n var hour = hourIndex > -1 && hourIndex < dateItems.length\r\n ? safeParseInt(dateItems[hourIndex])\r\n : 0;\r\n if (hour > 23)\r\n throw '';\r\n var minute = minutesIndex > -1 && minutesIndex < dateItems.length\r\n ? safeParseInt(dateItems[minutesIndex])\r\n : 0;\r\n if (minute > 59)\r\n throw '';\r\n var second = secondsIndex > -1 && secondsIndex < dateItems.length\r\n ? safeParseInt(dateItems[secondsIndex])\r\n : 0;\r\n if (second > 59)\r\n throw '';\r\n return new Date(year, month, day, hour, minute, second);\r\n }\r\n catch (_a) {\r\n throw value + \" is not a valid date.\";\r\n }\r\n }\r\n utils.strToDateTime = strToDateTime;\r\n function strToTime(str) {\r\n var timeItems = str.split(':');\r\n try {\r\n var hour = timeItems.length > 0 ? safeParseInt(timeItems[0]) : 0;\r\n if (hour > 23)\r\n throw '';\r\n var minute = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\r\n if (minute > 59)\r\n throw '';\r\n var second = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\r\n if (second > 59)\r\n throw '';\r\n return new Date(0, 0, 0, hour, minute, second);\r\n }\r\n catch (_a) {\r\n throw str + \" is not a valid time.\";\r\n }\r\n }\r\n utils.strToTime = strToTime;\r\n var DT_FORMAT_RGEX = /\\[([^\\]]+)]|y{2,4}|M{1,4}|d{1,2}|H{1,2}|h{1,2}|m{2}|s{2}|t{2}/g;\r\n /**\r\n * Returns string representation of the date/time value according to the custom format (second parameter)\r\n * The format is compatible with the one used in .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings\r\n * @param date\r\n * @param format\r\n */\r\n function dateTimeToStr(date, format) {\r\n var year = date.getFullYear();\r\n var yearStr = year.toString();\r\n var month = date.getMonth() + 1;\r\n var day = date.getDate();\r\n var hour = date.getHours();\r\n var minute = date.getMinutes();\r\n var second = date.getSeconds();\r\n var hour12 = hour % 12 || 12; //the remainder of the division by 12. Or 12 if it's 0\r\n var isPm = hour > 11;\r\n var matches = {\r\n yyyy: yearStr,\r\n yy: yearStr.substring(yearStr.length - 2),\r\n MMMM: i18n.getLongMonthName(month),\r\n MMM: i18n.getShortMonthName(month),\r\n MM: (month < 10) ? '0' + month : month.toString(),\r\n M: month.toString(),\r\n dd: (day < 10) ? '0' + day : day.toString(),\r\n d: day.toString(),\r\n HH: (hour < 10) ? '0' + hour : hour.toString(),\r\n H: hour.toString(),\r\n hh: (hour12 < 10) ? '0' + hour12 : hour12.toString(),\r\n h: hour12.toString(),\r\n tt: isPm ? 'PM' : 'AM',\r\n mm: (minute < 10) ? '0' + minute : minute.toString(),\r\n ss: (second < 10) ? '0' + second : second.toString()\r\n };\r\n return format.replace(DT_FORMAT_RGEX, function (match, $1) {\r\n return $1 || matches[match];\r\n });\r\n }\r\n utils.dateTimeToStr = dateTimeToStr;\r\n /**\r\n * Converts a numeric value to the string taking into the account the decimal separator\r\n * @param value - the number to convert\r\n * @param decimalSeparator - the symbol that represents decimal separator. If not specified the function gets the one from the current locale settings.\r\n */\r\n function numberToStr(number, decimalSeparator) {\r\n decimalSeparator = decimalSeparator || i18n.getLocaleSettings().decimalSeparator;\r\n return number.toString().replace('.', decimalSeparator);\r\n }\r\n utils.numberToStr = numberToStr;\r\n})(utils || (utils = {}));\r\n//# sourceMappingURL=utils.js.map","var HttpActionResult = /** @class */ (function () {\r\n function HttpActionResult(request, promise) {\r\n this.request = request;\r\n this.promise = promise;\r\n }\r\n HttpActionResult.prototype.getPromise = function () {\r\n return this.promise;\r\n };\r\n HttpActionResult.prototype.getRequest = function () {\r\n return this.request;\r\n };\r\n HttpActionResult.prototype.then = function (onfulfilled, onrejected) {\r\n return this.promise.then(onfulfilled, onrejected);\r\n };\r\n HttpActionResult.prototype.catch = function (onrejected) {\r\n return this.promise.catch(onrejected);\r\n };\r\n HttpActionResult.prototype.finally = function (onfinally) {\r\n return this.promise.finally(onfinally);\r\n };\r\n return HttpActionResult;\r\n}());\r\nexport { HttpActionResult };\r\n//# sourceMappingURL=http_action_result.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport { utils } from '../utils/utils';\r\nimport { HttpActionResult } from './http_action_result';\r\nimport { HttpMethod } from './http_method';\r\nimport { HttpRequest } from './http_request';\r\nvar HttpResponseError = /** @class */ (function (_super) {\r\n __extends(HttpResponseError, _super);\r\n function HttpResponseError(status, message) {\r\n var _this = _super.call(this, message) || this;\r\n _this.status = status;\r\n return _this;\r\n }\r\n return HttpResponseError;\r\n}(Error));\r\nexport { HttpResponseError };\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n this.defaultHeaders = {};\r\n this.customPayload = undefined;\r\n }\r\n Object.defineProperty(HttpClient.prototype, \"responseBody\", {\r\n /** Gets the response body for the latest request */\r\n get: function () {\r\n return this._responseBody;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(HttpMethod.Get, url, null, options);\r\n };\r\n HttpClient.prototype.post = function (url, data, options) {\r\n return this.send(HttpMethod.Post, url, data, options);\r\n };\r\n HttpClient.prototype.put = function (url, data, options) {\r\n return this.send(HttpMethod.Put, url, data, options);\r\n };\r\n HttpClient.prototype.delete = function (url, data, options) {\r\n return this.send(HttpMethod.Delete, url, data, options);\r\n };\r\n HttpClient.prototype.send = function (method, url, data, options) {\r\n var _this = this;\r\n options = options || {};\r\n var dataType = options.dataType || 'json';\r\n var contentType = options.contentType || (dataType !== 'form-data')\r\n ? 'application/json'\r\n : null;\r\n if (data && dataType != 'form-data' && this.customPayload) {\r\n data.data = utils.assignDeep(data.data || {}, this.customPayload);\r\n }\r\n var XHR = ('onload' in new XMLHttpRequest())\r\n ? XMLHttpRequest\r\n : window[\"XDomainRequest\"]; //IE support\r\n var xhr = new XHR();\r\n var desc = {\r\n method: method,\r\n url: url,\r\n headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),\r\n queryParams: options.queryParams || {},\r\n data: data\r\n };\r\n if (contentType)\r\n desc.headers['Content-Type'] = contentType;\r\n var request = new HttpRequest(xhr, desc);\r\n if (this.beforeEachRequest) {\r\n console.warn(\"HttpClient: 'beforeEachRequest' is deprecated and will be removed in future updates.\\n Use 'onRequest' instead\");\r\n this.beforeEachRequest(request);\r\n }\r\n if (this.onRequest) {\r\n this.onRequest(request);\r\n }\r\n var dataToSend = (request.data && typeof request.data !== 'string'\r\n && dataType == 'json')\r\n ? JSON.stringify(request.data)\r\n : request.data;\r\n request.open();\r\n return new HttpActionResult(request, new Promise(function (resolve, reject) {\r\n if (options.responseType)\r\n xhr.responseType = options.responseType;\r\n xhr.onerror = function (error) {\r\n reject(new HttpResponseError(xhr.status, xhr.responseText));\r\n };\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState != 4)\r\n return; //we process only the state change to DONE(4)\r\n var responseContentType = xhr.getResponseHeader('Content-Type') || '';\r\n var status = xhr.status;\r\n if (status === 0) {\r\n reject(new HttpResponseError(status, \"Network error or the request was aborted\"));\r\n }\r\n else if (status >= 200 && status < 400) {\r\n //Success\r\n var responseObj = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\r\n ? xhr.response\r\n : (responseContentType.indexOf('application/json') == 0\r\n ? JSON.parse(xhr.responseText)\r\n : xhr.responseText);\r\n _this._responseBody = responseObj;\r\n if (_this.onResponse) {\r\n _this.onResponse(xhr);\r\n }\r\n resolve(responseObj);\r\n }\r\n else {\r\n //Error\r\n var rtPromise = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\r\n ? HttpClient.decodeArrayBuffer(xhr.response)\r\n : Promise.resolve(xhr.responseText);\r\n rtPromise.then(function (responseText) {\r\n var responseObj = (responseContentType.indexOf('application/json') == 0)\r\n ? JSON.parse(responseText)\r\n : responseText;\r\n _this._responseBody = responseObj;\r\n var message = responseObj.message ||\r\n (status == 404\r\n ? \"No such endpoint: \" + url\r\n : responseObj);\r\n reject(new HttpResponseError(status, message));\r\n });\r\n }\r\n };\r\n xhr.send(dataToSend);\r\n }));\r\n };\r\n HttpClient.decodeArrayBuffer = function (uintArray) {\r\n var reader = new FileReader();\r\n return new Promise(function (resolve) {\r\n reader.onloadend = function () {\r\n if (reader.readyState == FileReader.DONE) {\r\n resolve(reader.result);\r\n }\r\n };\r\n reader.readAsText(new Blob([uintArray]));\r\n });\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=http_client.js.map","import { DataType } from '../types/data_type';\r\nimport { EntityAttrKind } from '../types/entity_attr_kind';\r\nimport { utils } from '../utils/utils';\r\n/**\r\n * Represents one entity.\r\n */\r\nvar MetaEntity = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaEntity(parent) {\r\n /** Returns false if this entity is read-only */\r\n this.isEditable = true;\r\n this.name = \"\";\r\n this.caption = \"\";\r\n this.description = \"\";\r\n this.parent = parent;\r\n this.attributes = new Array();\r\n this.subEntities = new Array();\r\n }\r\n /**\r\n * Loads entity from its JSON representation object.\r\n * @param model The Data Model.\r\n * @param dto The JSON representation object.\r\n */\r\n MetaEntity.prototype.loadFromData = function (model, dto) {\r\n if (dto) {\r\n this.id = dto.id;\r\n this.name = dto.name;\r\n this.captionPlural = dto.namePlur;\r\n this.caption = dto.name;\r\n this.description = dto.desc;\r\n if (typeof (dto.ied) !== 'undefined')\r\n this.isEditable = dto.ied;\r\n this.subEntities = new Array();\r\n if (dto.ents) {\r\n for (var i = 0; i < dto.ents.length; i++) {\r\n var newEntity = model.createEntity(this);\r\n newEntity.loadFromData(model, dto.ents[i]);\r\n this.subEntities.push(newEntity);\r\n }\r\n }\r\n this.attributes = new Array();\r\n if (dto.attrs) {\r\n for (var i = 0; i < dto.attrs.length; i++) {\r\n var newAttr = model.createEntityAttr(this);\r\n newAttr.loadFromData(model, dto.attrs[i]);\r\n this.attributes.push(newAttr);\r\n }\r\n }\r\n }\r\n };\r\n MetaEntity.prototype.scan = function (processAttribute, processEntity) {\r\n var opts = { stop: false };\r\n var internalProcessEntity = function (entity) {\r\n if (processEntity)\r\n processEntity(entity, opts);\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var i = 0; (i < attrCount) && !opts.stop; i++) {\r\n var attr = entity.attributes[i];\r\n if (processAttribute) {\r\n processAttribute(attr, opts);\r\n }\r\n if (opts.stop)\r\n return;\r\n }\r\n }\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var i = 0; (i < subEntityCount) && !opts.stop; i++) {\r\n internalProcessEntity(entity.subEntities[i]);\r\n }\r\n }\r\n };\r\n internalProcessEntity(this);\r\n };\r\n MetaEntity.prototype.getFirstPrimaryAttr = function () {\r\n return this.getPrimaryAttrs()[0];\r\n };\r\n MetaEntity.prototype.getPrimaryAttrs = function () {\r\n return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });\r\n };\r\n return MetaEntity;\r\n}());\r\nexport { MetaEntity };\r\nvar MetaEntityAttr = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaEntityAttr(entity) {\r\n this.id = \"\";\r\n this.caption = \"{Unrecognized attribute}\";\r\n this.dataType = DataType.String;\r\n this.size = 0;\r\n this.isPrimaryKey = false;\r\n this.isForeignKey = false;\r\n this.isNullable = true;\r\n this.showOnView = true;\r\n this.isEditable = true;\r\n this.showOnCreate = true;\r\n this.showOnEdit = true;\r\n this.showInLookup = false;\r\n this.lookupAttr = \"\";\r\n this.expr = \"\";\r\n this.entity = entity;\r\n this.kind = EntityAttrKind.Data;\r\n }\r\n /**\r\n * Loads entity attribute from JSON representation object.\r\n * @param model The Data Model.\r\n * @param dto The JSON representation object.\r\n */\r\n MetaEntityAttr.prototype.loadFromData = function (model, dto) {\r\n if (dto) {\r\n this.id = dto.id;\r\n this.description = dto.desc;\r\n this.caption = dto.cptn;\r\n this.dataType = dto.dtype;\r\n this.isPrimaryKey = dto.ipk;\r\n this.isForeignKey = dto.ifk;\r\n this.size = dto.size;\r\n this.lookupAttr = dto.lattr;\r\n this.lookupEntity = dto.lent;\r\n this.dataAttr = dto.dattr;\r\n this.lookupDataAttr = dto.ldattr;\r\n var isDataType = utils.getDateDataTypes().indexOf(this.dataType);\r\n this.defaultValue = dto.defVal && isDataType ? new Date(dto.defVal) : dto.defVal;\r\n this.isNullable = utils.getIfDefined(dto.nul, this.isNullable);\r\n this.isEditable = utils.getIfDefined(dto.ied, this.isEditable);\r\n this.showOnView = utils.getIfDefined(dto.ivis || dto.sov, this.showOnView);\r\n this.showOnCreate = utils.getIfDefined(dto.soc, this.showOnCreate);\r\n this.showOnEdit = utils.getIfDefined(dto.soe, this.showOnEdit);\r\n this.showInLookup = utils.getIfDefined(dto.sil, this.showInLookup);\r\n this.kind = dto.kind;\r\n this.displayFormat = dto.dfmt;\r\n if (dto.udata)\r\n this.userData = dto.udata;\r\n if (dto.edtr) {\r\n this.defaultEditor = model.getEditorById(dto.edtr) || model.createValueEditor();\r\n }\r\n }\r\n };\r\n return MetaEntityAttr;\r\n}());\r\nexport { MetaEntityAttr };\r\n//# sourceMappingURL=meta_entity.js.map","import { EditorTag } from '../types/editor_tag';\r\nimport { DataType } from '../types/data_type';\r\n/**\r\n * Represents a value editor.\r\n */\r\nvar ValueEditor = /** @class */ (function () {\r\n /** The default constructor. */\r\n function ValueEditor() {\r\n this.id = \"\";\r\n this.tag = EditorTag.Unknown;\r\n this.resType = DataType.Unknown;\r\n this.defValue = \"\";\r\n }\r\n /**\r\n * Loads value editor from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n ValueEditor.prototype.loadFromData = function (data) {\r\n if (data) {\r\n this.id = data.id;\r\n this.tag = data.tag;\r\n this.defValue = data.defval;\r\n this.resType = data.rtype;\r\n this.accept = data.accept;\r\n this.multiline = data.multiline;\r\n if (data.subType) {\r\n this.resType = data.subType;\r\n }\r\n if (data.name) {\r\n this.name = data.name;\r\n }\r\n if (data.values) {\r\n this.values = data.values;\r\n }\r\n }\r\n };\r\n ValueEditor.prototype.getValueText = function (value) {\r\n var result = \"\";\r\n if (!this.values)\r\n return result;\r\n if (Array.isArray(value)) {\r\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\r\n var item = _a[_i];\r\n if (value.indexOf(item.id) >= 0) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n else {\r\n for (var _b = 0, _c = this.values; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n if (item.id === value) {\r\n result += item.text + ',';\r\n }\r\n }\r\n }\r\n if (result) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n return result;\r\n };\r\n return ValueEditor;\r\n}());\r\nexport { ValueEditor };\r\n//# sourceMappingURL=value_editor.js.map","import { i18n } from '../i18n/i18n';\r\nimport { utils } from '../utils/utils';\r\nimport { EditorTag } from '../types/editor_tag';\r\nimport { DataType } from '../types/data_type';\r\nimport { MetaEntity, MetaEntityAttr } from './meta_entity';\r\nimport { ValueEditor } from './value_editor';\r\n/**\r\n * Represents a data model\r\n */\r\nvar MetaData = /** @class */ (function () {\r\n /** The default constructor. */\r\n function MetaData() {\r\n this.mainEntity = null;\r\n this.id = '__none';\r\n this.name = 'Empty model';\r\n this.rootEntity = this.createEntity();\r\n this.displayFormats = new Map();\r\n }\r\n /**\r\n * Gets the main entity of model\r\n * @return The main entity.\r\n */\r\n MetaData.prototype.getMainEntity = function () {\r\n return this.mainEntity;\r\n };\r\n MetaData.prototype.createEntity = function (parent) {\r\n return new MetaEntity(parent);\r\n };\r\n MetaData.prototype.createEntityAttr = function (parent) {\r\n return new MetaEntityAttr(parent);\r\n };\r\n MetaData.prototype.createValueEditor = function () {\r\n return new ValueEditor();\r\n };\r\n /**\r\n * Loads data model from JSON.\r\n * @param stringJson The JSON string.\r\n */\r\n MetaData.prototype.loadFromJSON = function (stringJson) {\r\n var model = JSON.parse(stringJson);\r\n this.loadFromData(model);\r\n };\r\n /**\r\n * Loads data model from its JSON representation object.\r\n * @param data The JSON representation object.\r\n */\r\n MetaData.prototype.loadFromData = function (data) {\r\n this.id = data.id;\r\n this.name = data.name;\r\n this.version = data.vers;\r\n //Editors\r\n this.editors = new Array();\r\n if (data.editors) {\r\n for (var i = 0; i < data.editors.length; i++) {\r\n var newEditor = this.createValueEditor();\r\n newEditor.loadFromData(data.editors[i]);\r\n this.editors.push(newEditor);\r\n }\r\n }\r\n //rootEntity\r\n this.rootEntity.loadFromData(this, data.entroot);\r\n //DataFormats\r\n this.displayFormats = new Map();\r\n if (data.displayFormats) {\r\n for (var dtypeStr in data.displayFormats) {\r\n var dtype = DataType[dtypeStr];\r\n var formats = data.displayFormats[dtypeStr] || new Array();\r\n this.displayFormats.set(dtype, formats);\r\n }\r\n }\r\n };\r\n /**\r\n * Gets the display formats.\r\n * @returns The display formats.\r\n */\r\n MetaData.prototype.getDisplayFormats = function () {\r\n return this.displayFormats;\r\n };\r\n /**\r\n * Gets the display formats for type\r\n * @param type The type\r\n * @returns An array of display formats\r\n */\r\n MetaData.prototype.getDisplayFormatsForType = function (type) {\r\n if (this.displayFormats.has(type)) {\r\n return this.displayFormats.get(type);\r\n }\r\n return [];\r\n };\r\n /**\r\n * Gets the default display format for the provided type\r\n * @param type The type\r\n * @returns The default type format or null\r\n */\r\n MetaData.prototype.getDefaultFormat = function (type) {\r\n if (this.displayFormats.has(type)) {\r\n return this.displayFormats.get(type).filter(function (f) { return f.isdef; })[0];\r\n }\r\n return null;\r\n };\r\n /**\r\n * Sets data to data model.\r\n * @param model Its JSON representation object or JSON string.\r\n */\r\n MetaData.prototype.setData = function (model) {\r\n if (typeof model === 'string') {\r\n this.loadFromJSON(model);\r\n }\r\n else {\r\n this.loadFromData(model);\r\n }\r\n };\r\n /**\r\n * Checks wether the data model is empty.\r\n * @returns `true` if the data model is empty, otherwise `false`.\r\n */\r\n MetaData.prototype.isEmpty = function () {\r\n return this.rootEntity.subEntities.length === 0 && this.rootEntity.attributes.length === 0;\r\n };\r\n /**\r\n * Gets ID of the data model.\r\n * @returns The ID.\r\n */\r\n MetaData.prototype.getId = function () {\r\n return this.id;\r\n };\r\n /**\r\n * Gets name of the data model.\r\n * @returns The name.\r\n */\r\n MetaData.prototype.getName = function () {\r\n return this.name;\r\n };\r\n /**\r\n * Gets root entity of the data model.\r\n * @returns The root entity.\r\n */\r\n MetaData.prototype.getRootEntity = function () {\r\n return this.rootEntity;\r\n };\r\n /**\r\n * Finds editor by its ID.\r\n * @param editorId The editor ID.\r\n * @returns The value editor or `null`.\r\n */\r\n MetaData.prototype.getEditorById = function (editorId) {\r\n for (var _i = 0, _a = this.editors; _i < _a.length; _i++) {\r\n var editor = _a[_i];\r\n if (editor.id === editorId) {\r\n return editor;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\r\n * @param attrId The attribute ID.\r\n * @returns The attribute or `null`.\r\n */\r\n MetaData.prototype.getAttributeById = function (attrId) {\r\n var attr = this.getEntityAttrById(this.getRootEntity(), attrId);\r\n if (!attr) {\r\n return null;\r\n }\r\n return attr;\r\n };\r\n /**\r\n * Checks wether attribute contains such property.\r\n * @param attrId The attribute ID.\r\n * @param propName The property name.\r\n * @returns `true` if the attribute contains the property, otherwise `false`.\r\n */\r\n MetaData.prototype.checkAttrProperty = function (attrId, propName) {\r\n var attribute = this.getAttributeById(attrId);\r\n if (attribute) {\r\n if (typeof attribute[propName] === 'undefined') {\r\n throw 'No such property: ' + propName;\r\n }\r\n if (attribute[propName]) {\r\n return true;\r\n }\r\n else if (attribute.lookupAttr) {\r\n attrId = attribute.lookupAttr;\r\n attribute = this.getAttributeById(attrId);\r\n return attribute && attribute[propName];\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else\r\n return false;\r\n };\r\n /**\r\n * Gets entity attribute by its ID.\r\n * This function runs through all attributes inside specified entity and all its sub-entities.\r\n * @param entity\r\n * @param attrId\r\n * @returns The attribute or `null`.\r\n */\r\n MetaData.prototype.getEntityAttrById = function (entity, attrId) {\r\n var idx;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (idx = 0; idx < attrCount; idx++) {\r\n if (entity.attributes[idx].id == attrId) {\r\n return entity.attributes[idx];\r\n }\r\n }\r\n }\r\n var res;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (idx = 0; idx < subEntityCount; idx++) {\r\n res = this.getEntityAttrById(entity.subEntities[idx], attrId);\r\n if (res)\r\n return res;\r\n }\r\n }\r\n return null;\r\n };\r\n MetaData.prototype.listByEntityWithFilter = function (entity, filterFunc) {\r\n var result = new Array();\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n caption = i18n.getText('Entities', ent.name);\r\n if (!caption) {\r\n caption = ent.caption;\r\n }\r\n var newEnt = utils.assign(this.createEntity(), { id: ent.name, text: caption, items: [], isEntity: true });\r\n newEnt.items = this.listByEntityWithFilter(ent, filterFunc);\r\n if (newEnt.items.length > 0)\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n caption = i18n.getText('Attributes', attr.id);\r\n if (!caption)\r\n caption = attr.caption;\r\n var newEnt = utils.assign(this.createEntity(), { id: attr.id, text: caption, dataType: attr.dataType });\r\n result.push(newEnt);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n MetaData.prototype.listByEntity = function (entity, opts, filterFunc) {\r\n opts = opts || {};\r\n var resultEntities = [];\r\n var resultAttributes = [];\r\n var caption;\r\n var ent = null;\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\r\n ent = entity.subEntities[entIdx];\r\n if (!filterFunc || filterFunc(ent, null)) {\r\n caption = i18n.getText('Entities', ent.name) || ent.caption;\r\n var newEnt = utils.assign(this.createEntity(), {\r\n id: ent.name,\r\n text: caption,\r\n items: [],\r\n isEntity: true,\r\n description: ent.description\r\n });\r\n var newOpts = utils.assign({}, opts);\r\n newOpts.includeRootData = false;\r\n newEnt.items = this.listByEntity(ent, newOpts, filterFunc);\r\n if (newEnt.items.length > 0) {\r\n resultEntities.push(newEnt);\r\n }\r\n }\r\n }\r\n }\r\n var attr = null;\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\r\n attr = entity.attributes[attrIdx];\r\n if (!filterFunc || filterFunc(entity, attr)) {\r\n caption = i18n.getText('Attributes', attr.id) || attr.caption;\r\n resultAttributes.push(utils.assign(this.createEntityAttr(entity), {\r\n id: attr.id, text: caption,\r\n dataType: attr.dataType, lookupAttr: attr.lookupAttr,\r\n description: attr.description\r\n }));\r\n }\r\n }\r\n }\r\n var sortCheck = function (a, b) {\r\n if (a.text.toLowerCase() == b.text.toLowerCase()) {\r\n return 0;\r\n }\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) {\r\n return 1;\r\n }\r\n return -1;\r\n };\r\n if (opts.sortEntities) {\r\n resultEntities.sort(sortCheck);\r\n resultAttributes.sort(sortCheck);\r\n }\r\n var result;\r\n if (!opts.attrPlacement || opts.attrPlacement == 0) {\r\n result = resultEntities.concat(resultAttributes);\r\n }\r\n else {\r\n result = resultAttributes.concat(resultEntities);\r\n }\r\n if (opts.attrPlacement == 2) {\r\n result.sort(sortCheck);\r\n }\r\n if (opts.includeRootData) {\r\n caption = i18n.getText('Entities', entity.name);\r\n if (!caption)\r\n caption = entity.caption;\r\n return { id: entity.name, text: caption, items: result };\r\n }\r\n else {\r\n return result;\r\n }\r\n };\r\n /**\r\n * Clears data model.\r\n */\r\n MetaData.prototype.clear = function () {\r\n this.rootEntity = this.createEntity();\r\n this.editors = [];\r\n this.version = '';\r\n };\r\n /**\r\n * Add default value editors.\r\n */\r\n MetaData.prototype.addDefaultValueEditors = function () {\r\n var ve;\r\n ve = this.addOrUpdateValueEditor('_DTE', EditorTag.Edit, DataType.String);\r\n ve.defValue = '';\r\n this.addOrUpdateValueEditor('_DPDE', EditorTag.DateTime, DataType.DateTime);\r\n this.addOrUpdateValueEditor('_DPTE', EditorTag.DateTime, DataType.DateTime);\r\n };\r\n /**\r\n * Add or update a value editor.\r\n * @param id The id.\r\n * @param tag The tag.\r\n * @param resType The result type.\r\n * @returns The value editor.\r\n */\r\n MetaData.prototype.addOrUpdateValueEditor = function (id, tag, resType) {\r\n var ve = utils.findItemById(this.editors, id);\r\n if (!ve) {\r\n ve = this.createValueEditor();\r\n ve.id = id;\r\n this.editors.push(ve);\r\n }\r\n ve.tag = tag;\r\n ve.resType = resType;\r\n return ve;\r\n };\r\n /**\r\n * Gets entities tree.\r\n * @param opts The options.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to options and the filter function\r\n */\r\n MetaData.prototype.getEntitiesTree = function (opts, filterFunc) {\r\n return this.listByEntity(this.getRootEntity(), opts, filterFunc);\r\n };\r\n /**\r\n * Gets entities tree due to filter.\r\n * @param filterFunc The filter function.\r\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\r\n * @returns The tree of the entities and their attributes according to the filter function\r\n */\r\n MetaData.prototype.getEntitiesTreeWithFilter = function (filterFunc) {\r\n return this.listByEntityWithFilter(this.getRootEntity(), filterFunc);\r\n };\r\n /**\r\n * Finds full entity path by attribute\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @returns The path.\r\n */\r\n MetaData.prototype.getFullEntityPathByAttr = function (attrId, sep) {\r\n sep = sep || ' ';\r\n return this.getEntityPathByAttr(this.getRootEntity(), attrId, sep, true);\r\n };\r\n /**\r\n * Finds entity path by attribute\r\n * @param entity The entity.\r\n * @param attrId The attribute id.\r\n * @param sep The separator.\r\n * @param root The root option.\r\n * @returns The path.\r\n */\r\n MetaData.prototype.getEntityPathByAttr = function (entity, attrId, sep, root) {\r\n if (!entity)\r\n return '';\r\n sep = sep || ' ';\r\n var entityCaption = '';\r\n if (entity.caption && !root) {\r\n var entityText = i18n.getText('Entities', entity.caption);\r\n entityCaption = entityText ? entityText : entity.caption;\r\n }\r\n if (entity.attributes) {\r\n var attrCount = entity.attributes.length;\r\n for (var i = 0; i < attrCount; i++) {\r\n if (entity.attributes[i].id == attrId) {\r\n return entityCaption;\r\n }\r\n }\r\n }\r\n if (entity.subEntities) {\r\n var subEntityCount = entity.subEntities.length;\r\n for (var i = 0; i < subEntityCount; i++) {\r\n var ent = entity.subEntities[i];\r\n var res = this.getEntityPathByAttr(ent, attrId, sep, false);\r\n if (res !== '') {\r\n if (entityCaption !== '')\r\n res = entityCaption + sep + res;\r\n return res;\r\n }\r\n }\r\n }\r\n return '';\r\n };\r\n /**\r\n * Gets the attribute text.\r\n * @param attr The attribute.\r\n * @param format The format.\r\n * @returns Formatted text.\r\n */\r\n MetaData.prototype.getAttributeText = function (attr, format) {\r\n var attrText = i18n.getText('Attributes', attr.id);\r\n if (!attrText) {\r\n attrText = attr.caption;\r\n }\r\n if (!format) {\r\n return attrText;\r\n }\r\n var result = '';\r\n var entityPath = this.getFullEntityPathByAttr(attr.id, ' ');\r\n if (entityPath) {\r\n result = format.replace(new RegExp('{attr}', 'g'), attrText);\r\n result = result.replace(new RegExp('{entity}', 'g'), entityPath);\r\n }\r\n else {\r\n result = attrText;\r\n }\r\n return result.trim();\r\n };\r\n /**\r\n * Scans model's entity tree and calls the callback functions for each attribute and entity.\r\n * @param processAttribute The callback function which is called for each attribute in model's entity tree.\r\n * The processed attribute is passed in the first function parameter.\r\n * @param processEntity The callback function which is called for each entity in tree.\r\n * The processed entity is passed in the first function parameter.\r\n */\r\n MetaData.prototype.runThroughEntities = function (processAttribute, processEntity) {\r\n this.getRootEntity().scan(processAttribute, processEntity);\r\n };\r\n /**\r\n * Finds first attribute by filter.\r\n * @param filterFunc The filter function. Takes EntityAttr object in parameter and returns boolean\r\n */\r\n MetaData.prototype.getFirstAttributeByFilter = function (filterFunc) {\r\n var res = null;\r\n this.runThroughEntities(function (attr, opts) {\r\n if (filterFunc(attr)) {\r\n opts.stop = true;\r\n res = attr;\r\n }\r\n }, null);\r\n return res;\r\n };\r\n return MetaData;\r\n}());\r\nexport { MetaData };\r\n//# sourceMappingURL=meta_data.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n/**\r\n * Defines aggregations settings for the current context.\r\n * Group, aggregate columns, grand totals, etc.\r\n */\r\nvar AggregationSettings = /** @class */ (function () {\r\n function AggregationSettings(colStore) {\r\n this.colStore = colStore;\r\n this.aggregates = [];\r\n this.groups = [];\r\n this.useGrandTotals = false;\r\n this.useRecordCount = false;\r\n this._caseSensitiveGroups = false;\r\n this.COUNT_FIELD_NAME = 'GRPRECCNT';\r\n }\r\n Object.defineProperty(AggregationSettings.prototype, \"caseSensitiveGroups\", {\r\n get: function () {\r\n return this._caseSensitiveGroups;\r\n },\r\n set: function (value) {\r\n this._caseSensitiveGroups = value;\r\n this.updateCompareProc();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n AggregationSettings.prototype.updateCompareProc = function () {\r\n this.compareValues = this._caseSensitiveGroups\r\n ? this.strictCompare\r\n : this.caseInsensitiveCompare;\r\n };\r\n AggregationSettings.prototype.addGroup = function (settings) {\r\n var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);\r\n if (!this.colStore.validateColumns(cols))\r\n throw \"Invalid columns: \" + cols;\r\n if (this.hasColumnsInUse(cols))\r\n throw \"Can't add same columns to different groups/aggregates\";\r\n this.groups.push(__assign({ columns: cols }, settings));\r\n return this;\r\n };\r\n AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {\r\n var colId = typeof colIndexOrId == 'string'\r\n ? colIndexOrId\r\n : this.colStore.getColumnIds(colIndexOrId, colIndexOrId)[0];\r\n if (this.hasColumnsInUse([colId]) || !this.colStore.validateAggregate(colId, funcId))\r\n throw 'Invalid aggregation function for the column: ' + colId;\r\n this.aggregates.push({ colId: colId, funcId: funcId });\r\n return this;\r\n };\r\n AggregationSettings.prototype.addGrandTotals = function () {\r\n this.useGrandTotals = true;\r\n return this;\r\n };\r\n AggregationSettings.prototype.addCounts = function () {\r\n this.useRecordCount = true;\r\n return this;\r\n };\r\n AggregationSettings.prototype.getGroups = function () {\r\n var _this = this;\r\n var cols = [];\r\n var mappedGrops = this.groups.map(function (grp) {\r\n cols = cols.concat(grp.columns);\r\n return __assign(__assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });\r\n });\r\n return mappedGrops;\r\n };\r\n AggregationSettings.prototype.getInternalGroups = function () {\r\n return this.groups;\r\n };\r\n AggregationSettings.prototype.lastGroup = function () {\r\n var groups = this.getGroups();\r\n return groups[groups.length - 1];\r\n };\r\n AggregationSettings.prototype.getAggregates = function () {\r\n return this.aggregates;\r\n };\r\n AggregationSettings.prototype.hasAggregates = function () {\r\n return this.aggregates.length > 0;\r\n };\r\n AggregationSettings.prototype.hasGroups = function () {\r\n return this.groups.length > 0;\r\n };\r\n AggregationSettings.prototype.hasGrandTotals = function () {\r\n return this.useGrandTotals;\r\n };\r\n AggregationSettings.prototype.hasRecordCount = function () {\r\n return this.useRecordCount;\r\n };\r\n AggregationSettings.prototype.isEmpty = function () {\r\n return !(this.hasAggregates() || this.hasGroups() ||\r\n this.hasAggregates() || this.hasRecordCount());\r\n };\r\n AggregationSettings.prototype.drop = function () {\r\n console.warn('\"drop()\" method is obsolete. Use \"clear()\" instead');\r\n this.clear();\r\n };\r\n AggregationSettings.prototype.clear = function () {\r\n this.groups = [];\r\n this.aggregates = [];\r\n this.useGrandTotals = false;\r\n this.useRecordCount = false;\r\n this.caseSensitiveGroups = false;\r\n return this;\r\n };\r\n /**\r\n * Checks if all columns from the list passed in the parameter are \"unused\".\r\n * Here \"unused column\" means a column that is included neither in any group nor in the aggregates list.\r\n * @param cols - the array of column IDs\r\n * @returns true if all columns in the list are not used anywhere, othervise - fals\r\n */\r\n AggregationSettings.prototype.hasColumnsInUse = function (cols) {\r\n for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {\r\n var group = _a[_i];\r\n var interCols = group.columns\r\n .filter(function (c) { return cols.indexOf(c) >= 0; });\r\n if (interCols.length > 0)\r\n return true;\r\n }\r\n for (var _b = 0, _c = this.aggregates; _b < _c.length; _b++) {\r\n var aggr = _c[_b];\r\n if (cols.indexOf(aggr.colId) >= 0)\r\n return true;\r\n }\r\n return false;\r\n };\r\n AggregationSettings.prototype.needAggrCalculation = function () {\r\n return (this.hasAggregates() || this.hasRecordCount())\r\n && (this.hasGrandTotals() || this.hasGroups());\r\n };\r\n AggregationSettings.prototype.saveToData = function () {\r\n return {\r\n groups: Array.from(this.groups),\r\n ugt: this.useGrandTotals,\r\n urc: this.useRecordCount,\r\n csg: this.caseSensitiveGroups,\r\n aggregates: Array.from(this.aggregates)\r\n };\r\n };\r\n AggregationSettings.prototype.loadFromData = function (data) {\r\n if (data) {\r\n if (typeof data.ugt !== 'undefined')\r\n this.useGrandTotals = data.ugt;\r\n if (typeof data.urc !== 'undefined')\r\n this.useRecordCount = data.urc;\r\n if (typeof data.csg !== 'undefined')\r\n this.caseSensitiveGroups = data.csg;\r\n if (data.groups) {\r\n this.groups = Array.from(data.groups);\r\n }\r\n if (data.aggregates) {\r\n this.aggregates = Array.from(data.aggregates);\r\n }\r\n }\r\n };\r\n AggregationSettings.prototype.buildGroupKey = function (group, row) {\r\n var caseInsensitive = !this.caseSensitiveGroups;\r\n var result = {};\r\n if (group) {\r\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\r\n var colId = _a[_i];\r\n var keyVal = row.getValue(colId);\r\n if (caseInsensitive && typeof (keyVal) === 'string') {\r\n keyVal = keyVal.toLowerCase();\r\n }\r\n result[colId] = keyVal;\r\n }\r\n }\r\n return result;\r\n };\r\n //returns true if value1 == value2\r\n AggregationSettings.prototype.strictCompare = function (value1, value2) {\r\n return value1 === value2;\r\n };\r\n //makes a case insensative comparision of two values and return true if there are equal\r\n AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {\r\n var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;\r\n var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;\r\n return val1 === val2;\r\n };\r\n return AggregationSettings;\r\n}());\r\nexport { AggregationSettings };\r\n//# sourceMappingURL=aggr_settings.js.map","import { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\nexport var ColumnAlignment;\r\n(function (ColumnAlignment) {\r\n ColumnAlignment[ColumnAlignment[\"None\"] = 0] = \"None\";\r\n ColumnAlignment[ColumnAlignment[\"Left\"] = 1] = \"Left\";\r\n ColumnAlignment[ColumnAlignment[\"Center\"] = 2] = \"Center\";\r\n ColumnAlignment[ColumnAlignment[\"Right\"] = 3] = \"Right\";\r\n})(ColumnAlignment || (ColumnAlignment = {}));\r\nvar DataColumn = /** @class */ (function () {\r\n function DataColumn(desc) {\r\n if (!desc)\r\n throw Error(\"Options are required\");\r\n if (!desc.id)\r\n throw Error(\"Field Id is required\");\r\n if (!desc.label)\r\n throw Error(\"Label is required\");\r\n this.id = desc.id;\r\n this.type = utils.getIfDefined(desc.type, DataType.String);\r\n this.label = desc.label;\r\n this.originAttrId = desc.originAttrId;\r\n this.isAggr = desc.isAggr || false;\r\n this.displayFormat = desc.dfmt;\r\n this.groupFooterColumnTemplate = desc.gfct;\r\n this.style = desc.style || {};\r\n this.description = desc.description;\r\n this.calculatedWidth = 0;\r\n }\r\n return DataColumn;\r\n}());\r\nexport { DataColumn };\r\nvar DataColumnList = /** @class */ (function () {\r\n function DataColumnList() {\r\n this.items = [];\r\n this.mapper = {};\r\n this._dateColumnIdx = [];\r\n }\r\n Object.defineProperty(DataColumnList.prototype, \"count\", {\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DataColumnList.prototype.add = function (colOrDesc) {\r\n var col;\r\n if (colOrDesc instanceof DataColumn) {\r\n col = colOrDesc;\r\n }\r\n else {\r\n col = new DataColumn(colOrDesc);\r\n }\r\n var index = this.items.length;\r\n this.items.push(col);\r\n this.mapper[col.id] = index;\r\n if ([DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0) {\r\n this._dateColumnIdx.push(index);\r\n }\r\n return index;\r\n };\r\n DataColumnList.prototype.updateDateColumnIdx = function () {\r\n this._dateColumnIdx = this.getItems()\r\n .filter(function (col) { return [DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0; })\r\n .map(function (col, index) { return index; });\r\n };\r\n DataColumnList.prototype.put = function (index, col) {\r\n if (index >= 0 && index < this.count) {\r\n this.items[index] = col;\r\n this.updateDateColumnIdx();\r\n }\r\n };\r\n DataColumnList.prototype.move = function (col, newIndex) {\r\n var oldIndex = this.items.indexOf(col);\r\n if (oldIndex >= 0 && oldIndex != newIndex) {\r\n utils.moveArrayItem(this.items, oldIndex, newIndex);\r\n this.updateDateColumnIdx();\r\n }\r\n };\r\n DataColumnList.prototype.get = function (index) {\r\n if (index >= 0 && index < this.count) {\r\n return this.items[index];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DataColumnList.prototype.getIndex = function (id) {\r\n return this.mapper[id];\r\n };\r\n DataColumnList.prototype.getItems = function () {\r\n return this.items;\r\n };\r\n DataColumnList.prototype.getDateColumnIndexes = function () {\r\n return this._dateColumnIdx;\r\n };\r\n DataColumnList.prototype.removeAt = function (index) {\r\n var col = this.get(index);\r\n this.items.splice(index, 1);\r\n var removeDate = this._dateColumnIdx.indexOf(index);\r\n if (removeDate >= 0) {\r\n this._dateColumnIdx.splice(removeDate, 1);\r\n }\r\n delete this.mapper[col.id];\r\n };\r\n DataColumnList.prototype.clear = function () {\r\n this.items = [];\r\n this._dateColumnIdx = [];\r\n this.mapper = {};\r\n };\r\n return DataColumnList;\r\n}());\r\nexport { DataColumnList };\r\n//# sourceMappingURL=data_column.js.map","var DataRow = /** @class */ (function () {\r\n function DataRow(columns, values) {\r\n this.columns = columns;\r\n this.values = values;\r\n }\r\n DataRow.prototype.toArray = function () {\r\n return Array.from(this.values);\r\n };\r\n DataRow.prototype.size = function () {\r\n return this.values.length;\r\n };\r\n DataRow.prototype.getValue = function (colIdOrIndex) {\r\n var index;\r\n if (typeof colIdOrIndex === \"string\") {\r\n index = this.columns.getIndex(colIdOrIndex);\r\n if (index === undefined) {\r\n throw new RangeError(\"No column with id '\" + colIdOrIndex + \"'\");\r\n }\r\n }\r\n else {\r\n index = colIdOrIndex;\r\n }\r\n if (index >= this.values.length)\r\n throw new RangeError(\"Out of range: \" + index);\r\n return this.values[index];\r\n };\r\n DataRow.prototype.setValue = function (colIdOrIndex, value) {\r\n var index;\r\n if (typeof colIdOrIndex === \"string\") {\r\n index = this.columns.getIndex(colIdOrIndex);\r\n if (index === undefined) {\r\n throw new RangeError(\"No column with id '\" + colIdOrIndex + \"'\");\r\n }\r\n }\r\n else {\r\n index = colIdOrIndex;\r\n }\r\n if (index >= this.values.length)\r\n throw new RangeError(\"Out of range: \" + index);\r\n this.values[index] = value;\r\n };\r\n return DataRow;\r\n}());\r\nexport { DataRow };\r\n//# sourceMappingURL=data_row.js.map","import { DataColumnList } from './data_column';\r\nimport { DataRow } from './data_row';\r\nimport { DataType } from '../types/data_type';\r\nimport { utils } from '../utils/utils';\r\nvar EasyDataTable = /** @class */ (function () {\r\n function EasyDataTable(options) {\r\n this._chunkSize = 1000;\r\n this._elasticChunks = false;\r\n this.cachedRows = [];\r\n this.total = 0;\r\n this.loader = null;\r\n this.needTotal = true;\r\n this.isInMemory = false;\r\n options = options || {};\r\n this._chunkSize = options.chunkSize || this._chunkSize;\r\n this._elasticChunks = options.elasticChunks || this._elasticChunks;\r\n this.loader = options.loader;\r\n if (typeof options.inMemory !== 'undefined') {\r\n this.isInMemory = options.inMemory;\r\n }\r\n if (this.isInMemory) {\r\n this.needTotal = false;\r\n }\r\n this._columns = new DataColumnList();\r\n this.onUpdate = options.onUpdate;\r\n if (options.columns) {\r\n for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {\r\n var colDesc = _a[_i];\r\n this._columns.add(colDesc);\r\n }\r\n }\r\n if (options.rows) {\r\n for (var _b = 0, _c = options.rows; _b < _c.length; _b++) {\r\n var rowData = _c[_b];\r\n var row = this.createRow(rowData);\r\n this.addRow(row);\r\n }\r\n }\r\n this.needTotal = !this._elasticChunks;\r\n }\r\n Object.defineProperty(EasyDataTable.prototype, \"columns\", {\r\n get: function () {\r\n return this._columns;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EasyDataTable.prototype, \"chunkSize\", {\r\n get: function () {\r\n return this._chunkSize;\r\n },\r\n set: function (value) {\r\n this._chunkSize = value;\r\n this.total = 0;\r\n this.needTotal = !this.elasticChunks;\r\n this.cachedRows = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(EasyDataTable.prototype, \"elasticChunks\", {\r\n get: function () {\r\n return this._elasticChunks;\r\n },\r\n set: function (value) {\r\n this._elasticChunks = value;\r\n this.total = 0;\r\n this.needTotal = !this.elasticChunks;\r\n this.cachedRows = [];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EasyDataTable.prototype.getRows = function (params) {\r\n var _this = this;\r\n var fromIndex = 0, count = this._chunkSize;\r\n if (params) {\r\n if ('page' in params) {\r\n fromIndex = params.pageSize * (params.page - 1);\r\n count = params.pageSize;\r\n }\r\n else {\r\n fromIndex = params.offset;\r\n count = params.limit;\r\n }\r\n }\r\n var endIndex = fromIndex + count; //the first index of the next page\r\n //if we don't calculate total on this request\r\n if (!this.needTotal && !this.elasticChunks) {\r\n if (fromIndex >= this.total) {\r\n return Promise.resolve([]);\r\n }\r\n if (endIndex > this.total) {\r\n endIndex = this.total;\r\n }\r\n }\r\n if (this.isInMemory && endIndex > this.cachedRows.length) {\r\n endIndex = this.cachedRows.length;\r\n }\r\n var allChunksCached = endIndex <= this.cachedRows.length;\r\n if (allChunksCached) {\r\n return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));\r\n }\r\n //if loader is not defined\r\n if (!this.loader) {\r\n throw \"Loader is not defined. Can't get the rows from \" + fromIndex + \" to \" + endIndex;\r\n }\r\n // we need total only for the first request\r\n var needTotal = this.needTotal;\r\n if (this.needTotal) {\r\n this.needTotal = false;\r\n }\r\n var offset = this.cachedRows.length;\r\n var limit = endIndex - offset;\r\n if (limit < this._chunkSize) {\r\n limit = this._chunkSize;\r\n }\r\n var resultPromise = this.loader.loadChunk({\r\n offset: offset,\r\n limit: limit,\r\n needTotal: needTotal\r\n })\r\n .then(function (result) {\r\n if (needTotal) {\r\n _this.total = result.total;\r\n }\r\n Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());\r\n if (endIndex > _this.cachedRows.length) {\r\n endIndex = _this.cachedRows.length;\r\n }\r\n if (_this.elasticChunks) {\r\n var count_1 = result.table.getCachedCount();\r\n if (count_1 < limit) {\r\n _this.total = _this.cachedRows.length;\r\n }\r\n }\r\n _this.fireUpdated();\r\n return _this.cachedRows.slice(fromIndex, endIndex);\r\n });\r\n return resultPromise;\r\n };\r\n EasyDataTable.prototype.getRow = function (index) {\r\n return this.getRows({ offset: index, limit: 1 })\r\n .then(function (rows) { return rows.length > 0 ? rows[0] : null; });\r\n };\r\n EasyDataTable.prototype.getTotal = function () {\r\n return this.total;\r\n };\r\n EasyDataTable.prototype.setTotal = function (total) {\r\n this.total = total;\r\n this.needTotal = false;\r\n };\r\n EasyDataTable.prototype.getCachedCount = function () {\r\n return this.cachedRows.length;\r\n };\r\n EasyDataTable.prototype.clear = function () {\r\n this.columns.clear();\r\n this.cachedRows = [];\r\n this.total = 0;\r\n this.needTotal = !this._elasticChunks;\r\n this.fireUpdated();\r\n };\r\n EasyDataTable.prototype.createRow = function (dataOrRow) {\r\n var _this = this;\r\n var dateIdx = this._columns.getDateColumnIndexes();\r\n var values = new Array(this._columns.count);\r\n var getValue = dataOrRow instanceof DataRow\r\n ? function (colId) { return dataOrRow.getValue(colId); }\r\n : function (colId) { return dataOrRow[colId]; };\r\n if (dataOrRow) {\r\n this.columns.getItems().forEach(function (column) {\r\n var value = getValue(column.id);\r\n var index = _this.columns.getIndex(column.id);\r\n values[index] = (dateIdx.indexOf(index) >= 0)\r\n ? _this.mapDate(value, column.type)\r\n : value;\r\n });\r\n }\r\n return new DataRow(this._columns, values);\r\n };\r\n EasyDataTable.prototype.mapDate = function (value, dtype) {\r\n if (value) {\r\n var result = new Date(value);\r\n if (isNaN(result.getTime())\r\n && dtype == DataType.Time) {\r\n result = utils.strToTime(value);\r\n }\r\n return result;\r\n }\r\n return null;\r\n };\r\n EasyDataTable.prototype.addRow = function (rowOrValues) {\r\n var newRow;\r\n if (Array.isArray(rowOrValues)) {\r\n var values = rowOrValues;\r\n var dateIdx = this._columns.getDateColumnIndexes();\r\n if (dateIdx.length > 0) {\r\n for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {\r\n var idx = dateIdx_1[_i];\r\n if (values[idx]) {\r\n values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);\r\n }\r\n }\r\n }\r\n newRow = new DataRow(this._columns, values);\r\n }\r\n else {\r\n newRow = this.createRow(rowOrValues);\r\n }\r\n this.cachedRows.push(newRow);\r\n var cachedTotal = this.getCachedCount();\r\n if (cachedTotal > this.total) {\r\n this.total = cachedTotal;\r\n }\r\n return newRow;\r\n };\r\n EasyDataTable.prototype.getCachedRows = function () {\r\n return this.cachedRows;\r\n };\r\n EasyDataTable.prototype.totalIsKnown = function () {\r\n if (this.elasticChunks) {\r\n var count = this.getCachedCount();\r\n return count === this.total;\r\n }\r\n return !this.needTotal;\r\n };\r\n EasyDataTable.prototype.fireUpdated = function () {\r\n if (this.onUpdate) {\r\n this.onUpdate(this);\r\n }\r\n };\r\n return EasyDataTable;\r\n}());\r\nexport { EasyDataTable };\r\n//# sourceMappingURL=easy_data_table.js.map","/**\r\n * EasyData representation of GUID.\r\n */\r\nvar EasyGuid = /** @class */ (function () {\r\n function EasyGuid() {\r\n }\r\n /**\r\n * Generates new GUID.\r\n * @returns The string representation of GUID.\r\n */\r\n EasyGuid.newGuid = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n };\r\n return EasyGuid;\r\n}());\r\nexport { EasyGuid };\r\n//# sourceMappingURL=easy_guid.js.map","import { EasyGuid } from '../utils/easy_guid';\r\n/**\r\n * The representation of event emitter.\r\n */\r\nvar EventEmitter = /** @class */ (function () {\r\n /**\r\n * The default constructor.\r\n * @param source The source.\r\n */\r\n function EventEmitter(source) {\r\n this.silentMode = 0;\r\n this.events = new Array();\r\n this.source = source;\r\n }\r\n /**\r\n * Subscries to the event.\r\n * @param eventType The event type.\r\n * @param callback The callback.\r\n * @returns The subscribtion ID.\r\n */\r\n EventEmitter.prototype.subscribe = function (eventType, callback) {\r\n var event = this.getEventRecByType(eventType);\r\n var eventCallback = {\r\n id: EasyGuid.newGuid(),\r\n callback: callback\r\n };\r\n if (event) {\r\n event.eventCallbacks.push(eventCallback);\r\n }\r\n else {\r\n event = {\r\n type: eventType,\r\n eventCallbacks: new Array(eventCallback)\r\n };\r\n this.events.push(event);\r\n }\r\n return eventCallback.id;\r\n };\r\n /**\r\n * Unsubsribes from the event.\r\n * @param eventType The event type.\r\n * @param callbackId The subscribtion ID.\r\n */\r\n EventEmitter.prototype.unsubscribe = function (eventType, callbackId) {\r\n var event = this.getEventRecByType(eventType);\r\n if (event) {\r\n var index = -1;\r\n for (index = 0; index < event.eventCallbacks.length; index++) {\r\n if (event.eventCallbacks[index].id === callbackId) {\r\n break;\r\n }\r\n }\r\n if (index >= 0) {\r\n event.eventCallbacks.splice(index, 1);\r\n }\r\n }\r\n };\r\n /**\r\n * Fires the event.\r\n * @param eventType The event type.\r\n * @param data The event data.\r\n * @param postpone The postpone.\r\n * @param force To fire force. If value is `true`, ignores silent mode.\r\n */\r\n EventEmitter.prototype.fire = function (eventType, data, postpone, force) {\r\n if (postpone === void 0) { postpone = 0; }\r\n if (force === void 0) { force = false; }\r\n if (this.silentMode && !force) {\r\n return;\r\n }\r\n var eventRec = this.getEventRecByType(eventType);\r\n if (eventRec) {\r\n var eqevent_1 = {\r\n type: eventType,\r\n source: this.source,\r\n data: data\r\n };\r\n var emitAllFunc = function () {\r\n for (var _i = 0, _a = eventRec.eventCallbacks; _i < _a.length; _i++) {\r\n var callback = _a[_i];\r\n callback.callback(eqevent_1);\r\n }\r\n };\r\n if (postpone > 0) {\r\n setTimeout(emitAllFunc, postpone);\r\n }\r\n else {\r\n emitAllFunc();\r\n }\r\n }\r\n };\r\n /**\r\n * Enters to silent mode.\r\n */\r\n EventEmitter.prototype.enterSilentMode = function () {\r\n this.silentMode++;\r\n };\r\n /**\r\n * Exits from silent mode.\r\n */\r\n EventEmitter.prototype.exitSilentMode = function () {\r\n if (this.silentMode) {\r\n this.silentMode--;\r\n }\r\n };\r\n /**\r\n * Checks if emitter is in silent mode.\r\n * @return `true`, if silent mode is enable.\r\n */\r\n EventEmitter.prototype.isSilent = function () {\r\n return this.silentMode > 0;\r\n };\r\n EventEmitter.prototype.getEventRecByType = function (eventType) {\r\n for (var _i = 0, _a = this.events; _i < _a.length; _i++) {\r\n var event_1 = _a[_i];\r\n if (event_1.type == eventType) {\r\n return event_1;\r\n }\r\n }\r\n return null;\r\n };\r\n return EventEmitter;\r\n}());\r\nexport { EventEmitter };\r\n//# sourceMappingURL=event_emitter.js.map","export var liquid;\r\n(function (liquid) {\r\n function renderLiquidTemplate(template, vars) {\r\n var result = template;\r\n if (vars) {\r\n for (var v in vars) {\r\n var liquidVarRegexp = new RegExp('\\{\\{' + v + '\\}\\}', 'g');\r\n result = result.replace(liquidVarRegexp, vars[v]);\r\n }\r\n }\r\n return result;\r\n }\r\n liquid.renderLiquidTemplate = renderLiquidTemplate;\r\n})(liquid || (liquid = {}));\r\n//# sourceMappingURL=liquid.js.map","import { i18n } from './i18n';\r\ni18n.resetLocales();\r\n//# sourceMappingURL=load_default_locale_settings.js.map","//types\r\nexport * from './types/data_type';\r\nexport * from './types/entity_attr_kind';\r\nexport * from './types/editor_tag';\r\n//http\r\nexport * from './http/http_method';\r\nexport * from './http/http_request';\r\nexport * from './http/http_client';\r\n//meta data\r\nexport * from './meta/meta_data';\r\nexport * from './meta/meta_entity';\r\nexport * from './meta/value_editor';\r\nexport * from './data/aggr_settings';\r\nexport * from './data/data_column';\r\nexport * from './data/data_row';\r\nexport * from './data/easy_data_table';\r\n//event\r\nexport * from './event/event_emitter';\r\n//i18n\r\nexport * from './i18n/i18n';\r\n//utils\r\nexport * from './utils/easy_guid';\r\nexport * from './utils/string_utils';\r\nexport * from './utils/utils';\r\nexport * from './utils/liquid';\r\nimport './i18n/load_default_locale_settings';\r\nif (typeof Object.values !== 'function') {\r\n Object.values = function (obj) {\r\n return Object.keys(obj).map(function (key) { return obj[key]; });\r\n };\r\n}\r\nif (typeof Math.trunc !== 'function') {\r\n Math.trunc = function (x) {\r\n if (isNaN(x)) {\r\n return NaN;\r\n }\r\n if (x > 0) {\r\n return Math.floor(x);\r\n }\r\n return Math.ceil(x);\r\n };\r\n}\r\n//# sourceMappingURL=public_api.js.map","import { \r\n DataLoader, DataRow, \r\n EasyDataTable, utils as dataUtils \r\n} from '@easydata/core';\r\n\r\nimport { DataFilter } from './data_filter';\r\n\r\nexport class TextDataFilter implements DataFilter {\r\n private filterValue = '';\r\n\r\n //turns off client-side search\r\n //for test purposes\r\n private justServerSide = false;\r\n\r\n constructor (\r\n private loader: DataLoader, \r\n private sourceTable: EasyDataTable, \r\n private sourceId: string,\r\n private isLookup = false) {\r\n }\r\n\r\n public getValue() {\r\n return this.filterValue;\r\n }\r\n \r\n public apply(value: string): Promise<EasyDataTable> {\r\n this.filterValue = value;\r\n\r\n if (this.filterValue) {\r\n return this.applyCore();\r\n }\r\n else {\r\n return this.clear();\r\n }\r\n }\r\n\r\n public clear(): Promise<EasyDataTable> {\r\n this.filterValue = '';\r\n return Promise.resolve(this.sourceTable);\r\n }\r\n\r\n private applyCore(): Promise<EasyDataTable> {\r\n if (this.sourceTable.getTotal() == this.sourceTable.getCachedCount() && !this.justServerSide) {\r\n return this.applyInMemoryFilter();\r\n }\r\n else {\r\n const filters = [\r\n { class: \"__substring\", value: this.filterValue }\r\n ]\r\n return this.loader.loadChunk({ \r\n offset: 0, \r\n limit: this.sourceTable.chunkSize, \r\n needTotal: true, \r\n filters: filters,\r\n sourceId: this.sourceId,\r\n lookup: this.isLookup\r\n } as any)\r\n .then(data => {\r\n const filteredTable = new EasyDataTable({\r\n chunkSize: this.sourceTable.chunkSize,\r\n loader: {\r\n loadChunk: (params) => this.loader\r\n .loadChunk({ ...params, filters: filters, sourceId: this.sourceId, lookup: this.isLookup } as any)\r\n }\r\n });\r\n\r\n for (const col of this.sourceTable.columns.getItems()) {\r\n filteredTable.columns.add(col);\r\n }\r\n\r\n filteredTable.setTotal(data.total);\r\n\r\n for (const row of data.table.getCachedRows()) {\r\n filteredTable.addRow(row);\r\n }\r\n\r\n return filteredTable;\r\n })\r\n }\r\n }\r\n\r\n private applyInMemoryFilter(): Promise<EasyDataTable> {\r\n return new Promise((resolve, reject) => {\r\n const filteredTable = new EasyDataTable({\r\n chunkSize: this.sourceTable.chunkSize,\r\n inMemory: true\r\n });\r\n\r\n for(const col of this.sourceTable.columns.getItems()) {\r\n filteredTable.columns.add(col);\r\n } \r\n \r\n const words = this.filterValue.split('||').map(w => w.trim().toLowerCase());\r\n const suitableColumns = this.sourceTable.columns.getItems()\r\n .filter(col => dataUtils.isNumericType(col.type) \r\n || dataUtils.getStringDataTypes().indexOf(col.type) >= 0)\r\n const hasEnterance = (row: DataRow) => {\r\n for (const col of suitableColumns) {\r\n const value = row.getValue(col.id);\r\n if (value) {\r\n const normalized = value.toString().toLowerCase();\r\n\r\n for(const word of words) {\r\n if (normalized.indexOf(word) >= 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n for (const row of this.sourceTable.getCachedRows()) {\r\n if (hasEnterance(row)) {\r\n filteredTable.addRow(row); \r\n }\r\n }\r\n\r\n filteredTable.setTotal(filteredTable.getCachedCount());\r\n\r\n resolve(filteredTable);\r\n });\r\n } \r\n}","import { browserUtils } from './browser_utils';\r\n/**\r\n * Wraps all the elements inside \"parent\" by \"wrapper\" element\r\n * @param parent The element to add wrapper to.\r\n * @param wrapper The element that will wrap child elements.\r\n */\r\nexport function wrapInner(parent, wrapper) {\r\n parent.appendChild(wrapper);\r\n while (parent.firstChild !== wrapper) {\r\n wrapper.appendChild(parent.firstChild);\r\n }\r\n}\r\n/**\r\n * Creates ands adds a new [[HTMLElement]] to \"parent\"\r\n * @param parent The element to add new element to.\r\n * @param tag Html tag of the new element.\r\n * @param options The options. In particular, options.cssClass sets the new element class.\r\n * @returns New element.\r\n */\r\nexport function addElement(parent, tag, options) {\r\n var element = document.createElement(tag);\r\n var opts = options || {};\r\n if (opts.cssClass) {\r\n element.className = opts.cssClass;\r\n }\r\n parent.appendChild(element);\r\n return element;\r\n}\r\n/**\r\n * Adds css class to the html element.\r\n * @param element The element to add css class to.\r\n * @param className The name of the css class to be added.\r\n */\r\nexport function addCssClass(element, className) {\r\n element.className = (element.className)\r\n ? element.className + ' ' + className\r\n : className;\r\n}\r\n/**\r\n * Hides the html element.\r\n * @param element The element to be hidden.\r\n */\r\nexport function hideElement(element) {\r\n element.style.display = 'none';\r\n}\r\n/**\r\n * Shows the html element.\r\n * @param element The element to be shown.\r\n * @param display The value of \"display\" style to be set. Default value is \"block\".\r\n */\r\nexport function showElement(element, display) {\r\n if (!display) {\r\n display = '';\r\n }\r\n element.style.display = display;\r\n}\r\n/**\r\n * Hides the \"first\" element and shows the \"second\".\r\n * @param first The element to be hidden.\r\n * @param second The element to be shown.\r\n * @param options The options. The following options are applied:\r\n * - display - the value of \"display\" style to be set. Default value is \"block\"\r\n * - duration - the duration of fading in and out\r\n * - complete - the callback to be called when toggle is complete\r\n */\r\nexport function toggleVisibility(first, second, options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n if (!options.display) {\r\n options.display = '';\r\n }\r\n if (!options.duration) {\r\n options.duration = 200;\r\n }\r\n //TODO: later we need to make it fading in and out\r\n hideElement(first);\r\n showElement(second, options.display);\r\n if (options.complete) {\r\n options.complete();\r\n }\r\n}\r\n/**\r\n * Checks if element is visible\r\n * @param element The element to check.\r\n * @returns `true` if visible, otherwise - `false`.\r\n */\r\nexport function isVisible(element) {\r\n return element.style.display != 'none'\r\n && element.offsetWidth != 0\r\n && element.offsetHeight != 0;\r\n}\r\nexport function createBrowserEvent(eventName) {\r\n var event;\r\n if (typeof (Event) === 'function') {\r\n event = new Event(eventName);\r\n }\r\n else {\r\n event = document.createEvent('Event');\r\n event.initEvent(eventName, true, true);\r\n }\r\n return event;\r\n}\r\nexport function getViewportSize() {\r\n var width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n var height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n}\r\nexport function getDocSize() {\r\n if (browserUtils.IsIE())\r\n return getWinSize();\r\n var width = Math.max(document.documentElement.clientWidth, document.body.clientWidth || 0);\r\n var height = Math.max(document.documentElement.clientHeight, document.body.clientHeight || 0);\r\n return {\r\n width: width,\r\n height: height\r\n };\r\n}\r\nexport function getScrollPos() {\r\n var body = document.body;\r\n var docElem = document.documentElement;\r\n return {\r\n top: window.pageYOffset || docElem.scrollTop || body.scrollTop,\r\n left: window.pageXOffset || docElem.scrollLeft || body.scrollLeft\r\n };\r\n}\r\nexport function getElementAbsolutePos(element) {\r\n var res = { x: 0, y: 0 };\r\n if (element !== null) {\r\n var position = offset(element);\r\n res = { x: position.left, y: position.top };\r\n }\r\n return res;\r\n}\r\nfunction offset(element) {\r\n var defaultBoundingClientRect = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\r\n var box;\r\n try {\r\n box = element.getBoundingClientRect();\r\n }\r\n catch (_a) {\r\n box = defaultBoundingClientRect;\r\n }\r\n var body = document.body;\r\n var docElem = document.documentElement;\r\n var scollPos = getScrollPos();\r\n var scrollTop = scollPos.top;\r\n var scrollLeft = scollPos.left;\r\n var clientTop = docElem.clientTop || body.clientTop || 0;\r\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n var top = box.top + scrollTop - clientTop;\r\n var left = box.left + scrollLeft - clientLeft;\r\n return { top: Math.round(top), left: Math.round(left) };\r\n}\r\nexport function getWinSize() {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n };\r\n}\r\nexport function slideDown(target, duration, callback) {\r\n target.style.removeProperty('display');\r\n var display = window.getComputedStyle(target).display;\r\n if (display === 'none')\r\n display = 'block';\r\n target.style.display = display;\r\n var height = target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0 + 'px';\r\n target.style.paddingTop = 0 + 'px';\r\n target.style.paddingBottom = 0 + 'px';\r\n target.style.marginTop = 0 + 'px';\r\n target.style.marginBottom = 0 + 'px';\r\n target.offsetHeight;\r\n target.style.boxSizing = 'border-box';\r\n target.style.transitionProperty = \"height, margin, padding\";\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.height = height + 'px';\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n window.setTimeout(function () {\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n target.style.removeProperty('box-sizing');\r\n if (callback) {\r\n callback();\r\n }\r\n }, duration);\r\n}\r\nexport function slideUp(target, duration, callback) {\r\n target.style.transitionProperty = 'height, margin, padding';\r\n target.style.transitionDuration = duration + 'ms';\r\n target.style.boxSizing = 'border-box';\r\n target.style.height = target.offsetHeight + 'px';\r\n target.offsetHeight;\r\n target.style.overflow = 'hidden';\r\n target.style.height = 0 + 'px';\r\n target.style.paddingTop = 0 + 'px';\r\n target.style.paddingBottom = 0 + 'px';\r\n target.style.marginTop = 0 + 'px';\r\n target.style.marginBottom = 0 + 'px';\r\n window.setTimeout(function () {\r\n target.style.display = 'none';\r\n target.style.removeProperty('height');\r\n target.style.removeProperty('padding-top');\r\n target.style.removeProperty('padding-bottom');\r\n target.style.removeProperty('margin-top');\r\n target.style.removeProperty('margin-bottom');\r\n target.style.removeProperty('overflow');\r\n target.style.removeProperty('transition-duration');\r\n target.style.removeProperty('transition-property');\r\n target.style.removeProperty('box-sizing');\r\n if (callback) {\r\n callback();\r\n }\r\n }, duration);\r\n}\r\nexport var eqCssPrefix = 'eqjs';\r\nexport var eqCssMobile = 'eqjs-mobile';\r\n//# sourceMappingURL=ui-utils.js.map","export function mask(input, maskPattern) {\r\n var d = { 9: '[0-9]', a: '[a-z]' };\r\n var mask = maskPattern.split('');\r\n var keyDownHandler = function (e) {\r\n // backspace key or delete key\r\n if (e.keyCode === 8 || e.keyCode === 46) {\r\n e.preventDefault();\r\n var mskd = [];\r\n var startSelection = input.selectionStart;\r\n if (startSelection == 0)\r\n return;\r\n var selection = startSelection;\r\n var onlyLodash = true;\r\n for (var index = mask.length - 1; index >= 0; index--) {\r\n var el = mask[index];\r\n if (d[el]) {\r\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\r\n if (t && index != startSelection - 1) {\r\n onlyLodash = false;\r\n }\r\n if (index === startSelection - 1)\r\n selection--;\r\n mskd.push(t && index != startSelection - 1\r\n ? input.value.charAt(index)\r\n : '_');\r\n }\r\n else {\r\n if (index === selection - 1)\r\n selection--;\r\n if (startSelection - 1 === index)\r\n startSelection--;\r\n mskd.push(el);\r\n }\r\n }\r\n input.value = !onlyLodash ? mskd.reverse().join('') : '';\r\n input.selectionStart = input.selectionEnd = selection < 0 ? 0 : selection;\r\n var event_1 = document.createEvent('Event');\r\n event_1.initEvent('input', true, true);\r\n input.dispatchEvent(event_1);\r\n }\r\n };\r\n var keyPressHandler = function (e) {\r\n var char = String.fromCharCode(e.charCode);\r\n if (char) {\r\n e.preventDefault();\r\n var mskd_1 = [];\r\n var selectionStart_1 = input.selectionStart;\r\n var selection_1 = selectionStart_1;\r\n mask.forEach(function (el, index) {\r\n if (d[el]) {\r\n var ch = (index != selectionStart_1)\r\n ? input.value.charAt(index)\r\n : char;\r\n var t = new RegExp(d[el], 'i').test(ch);\r\n mskd_1.push(t ? ch : '_');\r\n if (t && selectionStart_1 === index)\r\n selection_1++;\r\n }\r\n else {\r\n mskd_1.push(el);\r\n if (selection_1 === index)\r\n selection_1++;\r\n if (selectionStart_1 === index)\r\n selectionStart_1++;\r\n }\r\n });\r\n input.value = mskd_1.join('');\r\n input.selectionStart = input.selectionEnd = selection_1;\r\n var event_2 = document.createEvent('Event');\r\n event_2.initEvent('input', true, true);\r\n input.dispatchEvent(event_2);\r\n }\r\n };\r\n var inputHandler = function (e) {\r\n if (e.type === 'focus' && input.value !== '')\r\n return;\r\n var mskd = [];\r\n var startSelection = input.selectionStart;\r\n mask.forEach(function (el, index) {\r\n if (d[el]) {\r\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\r\n mskd.push(t ? input.value.charAt(index) : '_');\r\n }\r\n else {\r\n mskd.push(el);\r\n }\r\n });\r\n input.value = mskd.join('');\r\n input.selectionStart = input.selectionEnd = startSelection;\r\n };\r\n input.addEventListener('keydown', keyDownHandler);\r\n input.addEventListener('keypress', keyPressHandler);\r\n input.addEventListener('input', inputHandler);\r\n input.addEventListener('focus', inputHandler);\r\n}\r\n//# sourceMappingURL=mask.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { mask } from './mask';\r\nvar DomElementBuilder = /** @class */ (function () {\r\n function DomElementBuilder(tag, parent) {\r\n if (typeof tag === \"string\") {\r\n this.element = document.createElement(tag);\r\n }\r\n else {\r\n this.element = tag;\r\n }\r\n if (parent && this.element.parentElement !== parent) {\r\n parent.appendChild(this.element);\r\n }\r\n }\r\n DomElementBuilder.prototype.addChild = function (tag, childBuilder) {\r\n var builder = domel(tag, this.element);\r\n if (childBuilder) {\r\n childBuilder(builder);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.addChildElement = function (element) {\r\n if (element) {\r\n this.element.appendChild(element);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.attr = function (attrId, attrValue) {\r\n this.element.setAttribute(attrId, attrValue);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.id = function (value) {\r\n return this.attr(\"id\", value);\r\n };\r\n DomElementBuilder.prototype.focus = function () {\r\n this.element.focus();\r\n return this;\r\n };\r\n DomElementBuilder.prototype.title = function (value) {\r\n return this.attr('title', value);\r\n };\r\n DomElementBuilder.prototype.data = function (dataId, dataValue) {\r\n if (dataValue === void 0) { dataValue = null; }\r\n if (dataValue === null) {\r\n this.element.removeAttribute('data-' + dataId);\r\n return this;\r\n }\r\n else {\r\n return this.attr('data-' + dataId, dataValue);\r\n }\r\n };\r\n DomElementBuilder.prototype.show = function () {\r\n return this.removeStyle('display');\r\n };\r\n DomElementBuilder.prototype.hide = function (toHide) {\r\n if (toHide === void 0) { toHide = true; }\r\n return (toHide) ? this.setStyle('display', 'none') : this;\r\n };\r\n DomElementBuilder.prototype.visible = function (isVisible) {\r\n if (isVisible === void 0) { isVisible = true; }\r\n return isVisible ? this.setStyle('visibility', 'visible') : this.setStyle('visibility', 'hidden');\r\n };\r\n DomElementBuilder.prototype.isVisible = function () {\r\n return !!(this.element.offsetWidth || this.element.offsetHeight || this.element.getClientRects().length);\r\n };\r\n DomElementBuilder.prototype.addClass = function (className) {\r\n var classNames = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n classNames[_i - 1] = arguments[_i];\r\n }\r\n if (className) {\r\n var fullList = __spreadArrays(className.trim().split(\" \"), classNames);\r\n for (var i = 0; i < fullList.length; i++)\r\n this.element.classList.add(fullList[i]);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.removeClass = function (className) {\r\n var classNames = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n classNames[_i - 1] = arguments[_i];\r\n }\r\n if (className) {\r\n var fullList = __spreadArrays(className.trim().split(\" \"), classNames);\r\n for (var i = 0; i < fullList.length; i++)\r\n this.element.classList.remove(fullList[i]);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.toggleClass = function (className, force) {\r\n if (force === void 0) { force = undefined; }\r\n if (className) {\r\n this.element.classList.toggle(className, force);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.on = function (eventType, listener) {\r\n var eventTypes = eventType.split(' ');\r\n for (var i = 0; i < eventTypes.length; i++) {\r\n this.element.addEventListener(eventTypes[i], listener);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.off = function (eventType, listener) {\r\n var eventTypes = eventType.split(' ');\r\n for (var i = 0; i < eventTypes.length; i++) {\r\n this.element.removeEventListener(eventTypes[i], listener);\r\n }\r\n return this;\r\n };\r\n DomElementBuilder.prototype.setStyle = function (styleId, styleValue) {\r\n this.element.style.setProperty(styleId, styleValue);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.removeStyle = function (styleId) {\r\n this.element.style.removeProperty(styleId);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.text = function (text) {\r\n this.element.innerText = text;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.html = function (html) {\r\n this.element.innerHTML = html;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.clear = function () {\r\n var oldElem = this.element;\r\n this.element = document.createElement(this.element.tagName);\r\n oldElem.replaceWith(this.element);\r\n };\r\n DomElementBuilder.prototype.addText = function (text) {\r\n var textEl = document.createTextNode(text);\r\n this.element.appendChild(textEl);\r\n return this;\r\n };\r\n DomElementBuilder.prototype.addHtml = function (html) {\r\n this.element.innerHTML += html;\r\n return this;\r\n };\r\n DomElementBuilder.prototype.toDOM = function () {\r\n return this.element;\r\n };\r\n DomElementBuilder.prototype.appendTo = function (parent) {\r\n if (parent) {\r\n parent.appendChild(this.element);\r\n }\r\n return this;\r\n };\r\n return DomElementBuilder;\r\n}());\r\nexport { DomElementBuilder };\r\nvar DomTextAreaElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomTextAreaElementBuilder, _super);\r\n function DomTextAreaElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"textarea\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomTextAreaElementBuilder.prototype.name = function (value) {\r\n this.element.name = value;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.rows = function (rows) {\r\n this.element.rows = rows;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.cols = function (cols) {\r\n this.element.cols = cols;\r\n return this;\r\n };\r\n DomTextAreaElementBuilder.prototype.value = function (value) {\r\n this.element.value = value;\r\n return this;\r\n };\r\n return DomTextAreaElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomTextAreaElementBuilder };\r\nvar DomInputElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomInputElementBuilder, _super);\r\n function DomInputElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"input\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomInputElementBuilder.prototype.name = function (value) {\r\n this.element.name = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.type = function (value) {\r\n this.element.type = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.size = function (value) {\r\n this.element.size = value;\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.value = function (value) {\r\n if (value instanceof Date) {\r\n this.element.valueAsDate = value;\r\n }\r\n else if (typeof value === \"number\") {\r\n this.element.valueAsNumber = value;\r\n }\r\n else {\r\n this.element.value = value;\r\n }\r\n return this;\r\n };\r\n DomInputElementBuilder.prototype.mask = function (maskPattern) {\r\n mask(this.element, maskPattern);\r\n return this;\r\n };\r\n return DomInputElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomInputElementBuilder };\r\nvar DomSelectElementBuilder = /** @class */ (function (_super) {\r\n __extends(DomSelectElementBuilder, _super);\r\n function DomSelectElementBuilder(element, parent) {\r\n var _this = this;\r\n if (element) {\r\n _this = _super.call(this, element, parent) || this;\r\n }\r\n else {\r\n _this = _super.call(this, \"select\", parent) || this;\r\n }\r\n return _this;\r\n }\r\n DomSelectElementBuilder.prototype.addOption = function (value) {\r\n var option = document.createElement('option');\r\n if (typeof value === \"string\") {\r\n option.value = value;\r\n option.innerHTML = value;\r\n }\r\n else {\r\n option.value = value.value;\r\n option.innerHTML = value.title || value.value;\r\n option.selected = value.selected || false;\r\n }\r\n this.element.appendChild(option);\r\n return this;\r\n };\r\n DomSelectElementBuilder.prototype.value = function (value) {\r\n this.element.value = value;\r\n return this;\r\n };\r\n return DomSelectElementBuilder;\r\n}(DomElementBuilder));\r\nexport { DomSelectElementBuilder };\r\nexport function domel(tag, parent) {\r\n if (tag === \"div\" || tag instanceof HTMLDivElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n if (tag === \"span\" || tag instanceof HTMLSpanElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"a\" || tag instanceof HTMLAnchorElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"button\" || tag instanceof HTMLButtonElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"img\" || tag instanceof HTMLImageElement) {\r\n return new DomElementBuilder(tag, parent);\r\n }\r\n else if (tag === \"input\" || tag instanceof HTMLInputElement) {\r\n return new DomInputElementBuilder(tag instanceof HTMLInputElement ? tag : null, parent);\r\n }\r\n else if (tag === \"textarea\" || tag instanceof HTMLTextAreaElement) {\r\n return new DomTextAreaElementBuilder(tag instanceof HTMLTextAreaElement ? tag : null, parent);\r\n }\r\n else if (tag === \"select\" || tag instanceof HTMLSelectElement) {\r\n return new DomSelectElementBuilder(tag instanceof HTMLSelectElement ? tag : null, parent);\r\n }\r\n return new DomElementBuilder(tag, parent);\r\n}\r\n//# sourceMappingURL=dom_elem_builder.js.map","import { utils } from '@easydata/core';\r\nimport { getElementAbsolutePos } from './ui-utils';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nvar touchEventIsDefined = typeof TouchEvent !== 'undefined';\r\nexport var DropEffect;\r\n(function (DropEffect) {\r\n DropEffect[\"None\"] = \"none\";\r\n DropEffect[\"Allow\"] = \"allow\";\r\n DropEffect[\"Forbid\"] = \"forbid\";\r\n})(DropEffect || (DropEffect = {}));\r\nvar EqDragEvent = /** @class */ (function () {\r\n function EqDragEvent(item, dragImage, sourceEvent) {\r\n this.dropEffect = DropEffect.Allow;\r\n this.pageX = 0;\r\n this.pageY = 0;\r\n this.item = item;\r\n this.dragImage = dragImage;\r\n this.data = item.data;\r\n this.sourceEvent = sourceEvent;\r\n if (sourceEvent && sourceEvent instanceof MouseEvent) {\r\n this.pageX = sourceEvent.pageX,\r\n this.pageY = sourceEvent.pageY;\r\n }\r\n if (sourceEvent && touchEventIsDefined && sourceEvent instanceof TouchEvent\r\n && sourceEvent.touches[0]) {\r\n this.pageX = sourceEvent.touches[0].pageX,\r\n this.pageY = sourceEvent.touches[0].pageY;\r\n }\r\n }\r\n return EqDragEvent;\r\n}());\r\nexport { EqDragEvent };\r\nvar Position = /** @class */ (function () {\r\n function Position(ev) {\r\n if (ev && ev instanceof MouseEvent) {\r\n this.x = ev.pageX,\r\n this.y = ev.pageY;\r\n }\r\n if (ev && touchEventIsDefined && ev instanceof TouchEvent && ev.touches[0]) {\r\n this.x = ev.touches[0].pageX,\r\n this.y = ev.touches[0].pageY;\r\n }\r\n }\r\n return Position;\r\n}());\r\nvar DragManager = /** @class */ (function () {\r\n function DragManager() {\r\n this.delta = 5;\r\n this.draggableItem = null;\r\n this.dragImage = null;\r\n this.finishedSuccessfully = false;\r\n this.mouseDownPosition = null;\r\n this.containerDescriptors = [];\r\n this.containerDescriptorIndex = -1;\r\n this.dropEffect = DropEffect.None;\r\n this.classPrefix = 'eqjs-drop';\r\n this.DRAG_DISABLED_ATTR = 'drag-disabled';\r\n }\r\n DragManager.prototype.registerDraggableItem = function (descriptor) {\r\n var _this = this;\r\n var element = descriptor.element;\r\n if (!element) {\r\n throw Error(\"Element in draggle item is null or undefined\");\r\n }\r\n element.ondragstart = function () {\r\n return false;\r\n };\r\n var detectDragging = function (ev) {\r\n if (element.hasAttribute(_this.DRAG_DISABLED_ATTR)) {\r\n return;\r\n }\r\n ev.preventDefault();\r\n if (ev instanceof MouseEvent) {\r\n ev.stopPropagation();\r\n }\r\n var cursorPosition = new Position(ev);\r\n if (Math.abs(cursorPosition.x - _this.mouseDownPosition.x) > _this.delta\r\n || Math.abs(cursorPosition.y - _this.mouseDownPosition.y) > _this.delta) {\r\n startDragging(ev);\r\n }\r\n };\r\n var mouseMoveEventListener = function (ev) {\r\n _this.mouseMoveDragListener(ev);\r\n };\r\n var startDragging = function (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n element.removeEventListener('mousemove', detectDragging);\r\n element.removeEventListener('touchmove', detectDragging);\r\n _this.finishedSuccessfully = false;\r\n if (descriptor.beforeDragStart)\r\n descriptor.beforeDragStart();\r\n _this.dragImage = domel('div')\r\n .setStyle('position', 'absolute')\r\n .setStyle('z-index', '65530')\r\n .toDOM();\r\n document.body.appendChild(_this.dragImage);\r\n _this.dragImage.appendChild(element.cloneNode(true));\r\n if (descriptor.renderer) {\r\n descriptor.renderer(_this.dragImage);\r\n }\r\n _this.dropEffect = DropEffect.None;\r\n _this.updateCusror(_this.dropEffect);\r\n _this.updateImageClass(_this.dropEffect);\r\n _this.draggableItem = {\r\n element: element,\r\n scope: descriptor.scope,\r\n data: descriptor.data\r\n };\r\n _this.updateDragItemPosition(ev);\r\n var event = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n event.dropEffect = _this.dropEffect;\r\n if (descriptor.onDragStart) {\r\n descriptor.onDragStart(event);\r\n }\r\n if (_this.dropEffect !== event.dropEffect) {\r\n _this.dropEffect = event.dropEffect;\r\n _this.updateImageClass(_this.dropEffect);\r\n }\r\n document.addEventListener('mousemove', mouseMoveEventListener, true);\r\n document.addEventListener('touchmove', mouseMoveEventListener, true);\r\n };\r\n var mouseDownListener = function (ev) {\r\n if (touchEventIsDefined && ev instanceof TouchEvent) {\r\n ev.preventDefault();\r\n }\r\n _this.mouseDownPosition = new Position(ev);\r\n element.addEventListener('mousemove', detectDragging);\r\n element.addEventListener('touchmove', detectDragging);\r\n document.addEventListener('mouseup', mouseUpListener);\r\n document.addEventListener('touchend', mouseUpListener);\r\n };\r\n element.addEventListener('mousedown', mouseDownListener);\r\n element.addEventListener('touchstart', mouseDownListener);\r\n var mouseUpListener = function (ev) {\r\n _this.mouseDownPosition = null;\r\n element.removeEventListener('mousemove', detectDragging);\r\n element.removeEventListener('touchmove', detectDragging);\r\n document.removeEventListener('mousemove', mouseMoveEventListener, true);\r\n document.removeEventListener('touchmove', mouseMoveEventListener, true);\r\n if (_this.draggableItem) {\r\n endDraggind(ev);\r\n }\r\n };\r\n var endDraggind = function (ev) {\r\n try {\r\n if (_this.containerDescriptorIndex >= 0) {\r\n var dropContDesc = _this.containerDescriptors[_this.containerDescriptorIndex];\r\n var container = {\r\n element: dropContDesc.element,\r\n scopes: dropContDesc.scopes,\r\n data: dropContDesc.data\r\n };\r\n var event_1 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n try {\r\n if (container.scopes.indexOf(_this.draggableItem.scope) >= 0\r\n && _this.dropEffect === DropEffect.Allow) {\r\n _this.finishedSuccessfully = true;\r\n if (dropContDesc.onDrop) {\r\n dropContDesc.onDrop(container, event_1);\r\n }\r\n }\r\n }\r\n finally {\r\n if (dropContDesc.onDragLeave) {\r\n dropContDesc.onDragLeave(container, event_1);\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n try {\r\n var event_2 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\r\n event_2.data.finishedSuccessfully = _this.finishedSuccessfully;\r\n if (descriptor.onDragEnd) {\r\n descriptor.onDragEnd(event_2);\r\n }\r\n }\r\n finally {\r\n _this.draggableItem = null;\r\n if (_this.dragImage && _this.dragImage.parentElement) {\r\n _this.dragImage.parentElement.removeChild(_this.dragImage);\r\n }\r\n _this.dragImage = null;\r\n _this.finishedSuccessfully = false;\r\n document.removeEventListener('mouseup', mouseUpListener);\r\n document.removeEventListener('touchend', mouseUpListener);\r\n }\r\n }\r\n };\r\n };\r\n DragManager.prototype.registerDropContainer = function (descriptor) {\r\n var element = descriptor.element;\r\n if (!element) {\r\n throw Error(\"Element in drop container is null or undefined\");\r\n }\r\n this.containerDescriptors.push(descriptor);\r\n };\r\n DragManager.prototype.removeDropContainer = function (descriptorOrSlot) {\r\n var descs = this.containerDescriptors\r\n .filter(function (desc) { return desc === descriptorOrSlot\r\n || desc.element == descriptorOrSlot; });\r\n if (descs) {\r\n for (var _i = 0, descs_1 = descs; _i < descs_1.length; _i++) {\r\n var desc = descs_1[_i];\r\n utils.removeArrayItem(this.containerDescriptors, desc);\r\n }\r\n }\r\n };\r\n DragManager.prototype.mouseMoveDragListener = function (ev) {\r\n if (ev instanceof MouseEvent) {\r\n ev.preventDefault();\r\n }\r\n ev.stopPropagation();\r\n this.updateDragItemPosition(ev);\r\n if (this.containerDescriptorIndex == -1) {\r\n for (var i = 0; i < this.containerDescriptors.length; i++) {\r\n var descriptor = this.containerDescriptors[i];\r\n if (this.detectDragEnterEvent(descriptor.element, ev)) {\r\n this.containerDescriptorIndex = i;\r\n break;\r\n }\r\n }\r\n if (this.containerDescriptorIndex >= 0) {\r\n this.dragEnterEvent(ev);\r\n }\r\n }\r\n else {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n if (this.detectDragLeaveEvent(descriptor.element, ev)) {\r\n this.dragLeaveEvent(ev);\r\n this.containerDescriptorIndex = -1;\r\n }\r\n }\r\n if (this.containerDescriptorIndex >= 0) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_3 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_3.dropEffect = this.dropEffect;\r\n if (descriptor.onDragOver) {\r\n descriptor.onDragOver(container, event_3);\r\n }\r\n }\r\n }\r\n };\r\n DragManager.prototype.updateCusror = function (dropEffect) {\r\n switch (dropEffect) {\r\n case DropEffect.Allow:\r\n this.setCursorStyle(this.dragImage, 'grabbing');\r\n break;\r\n case DropEffect.Forbid:\r\n this.setCursorStyle(this.dragImage, 'no-drop');\r\n break;\r\n default:\r\n this.setCursorStyle(this.dragImage, 'grabbing');\r\n break;\r\n }\r\n };\r\n DragManager.prototype.updateImageClass = function (dropEffect) {\r\n this.dragImage.classList.remove(this.classPrefix + \"-allow\");\r\n this.dragImage.classList.remove(this.classPrefix + \"-forbid\");\r\n this.dragImage.classList.remove(this.classPrefix + \"-none\");\r\n switch (dropEffect) {\r\n case DropEffect.Allow:\r\n this.dragImage.classList.add(this.classPrefix + \"-allow\");\r\n break;\r\n case DropEffect.None:\r\n this.dragImage.classList.add(this.classPrefix + \"-none\");\r\n break;\r\n case DropEffect.Forbid:\r\n this.dragImage.classList.add(this.classPrefix + \"-forbid\");\r\n break;\r\n default:\r\n this.dragImage.classList.add(this.classPrefix + \"-none\");\r\n break;\r\n }\r\n };\r\n DragManager.prototype.setCursorStyle = function (element, cursor) {\r\n if (element) {\r\n element.style.cursor = cursor;\r\n for (var i = 0; i < element.children.length; i++) {\r\n this.setCursorStyle(element.children[i], cursor);\r\n }\r\n }\r\n };\r\n DragManager.prototype.updateDragItemPosition = function (ev) {\r\n if (this.dragImage) {\r\n var pos = new Position(ev);\r\n this.dragImage.style.top = (pos.y - this.dragImage.offsetHeight / 2) + 'px';\r\n this.dragImage.style.left = (pos.x - this.dragImage.offsetWidth / 2) + 'px';\r\n }\r\n };\r\n DragManager.prototype.dragEnterEvent = function (ev) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_4 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_4.dropEffect = DropEffect.Allow;\r\n if (descriptor.onDragEnter) {\r\n descriptor.onDragEnter(container, event_4);\r\n }\r\n this.dropEffect = event_4.dropEffect;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n else {\r\n if (this.dropEffect !== DropEffect.Forbid) {\r\n this.dropEffect = DropEffect.None;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n }\r\n };\r\n DragManager.prototype.dragLeaveEvent = function (ev) {\r\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\r\n var container = {\r\n element: descriptor.element,\r\n scopes: descriptor.scopes,\r\n data: descriptor.data\r\n };\r\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\r\n var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\r\n event_5.dropEffect = DropEffect.None;\r\n if (descriptor.onDragLeave) {\r\n descriptor.onDragLeave(container, event_5);\r\n }\r\n this.dropEffect = event_5.dropEffect;\r\n this.updateCusror(this.dropEffect);\r\n this.updateImageClass(this.dropEffect);\r\n }\r\n };\r\n DragManager.prototype.detectDragEnterEvent = function (container, ev) {\r\n var containerPos = getElementAbsolutePos(container);\r\n var pos = new Position(ev);\r\n if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {\r\n return false;\r\n }\r\n if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n DragManager.prototype.detectDragLeaveEvent = function (container, ev) {\r\n var containerPos = getElementAbsolutePos(container);\r\n var pos = new Position(ev);\r\n if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight\r\n && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n return DragManager;\r\n}());\r\nexport { DragManager };\r\n//global variable\r\nexport var eqDragManager = new DragManager();\r\n//# sourceMappingURL=drag_manager.js.map","export var AutoResizeColumns;\r\n(function (AutoResizeColumns) {\r\n AutoResizeColumns[AutoResizeColumns[\"Always\"] = 0] = \"Always\";\r\n AutoResizeColumns[AutoResizeColumns[\"Once\"] = 1] = \"Once\";\r\n AutoResizeColumns[AutoResizeColumns[\"Never\"] = 2] = \"Never\";\r\n})(AutoResizeColumns || (AutoResizeColumns = {}));\r\n//# sourceMappingURL=easy_grid_options.js.map","import { i18n, DataType } from '@easydata/core';\r\nimport { GridColumnAlign } from './easy_grid_columns';\r\nvar cssPrefix = \"keg\";\r\nexport var DFMT_REGEX = /{0:(.*?)}/g;\r\nexport var CellRendererType;\r\n(function (CellRendererType) {\r\n CellRendererType[CellRendererType[\"STRING\"] = 1] = \"STRING\";\r\n CellRendererType[CellRendererType[\"NUMBER\"] = 2] = \"NUMBER\";\r\n CellRendererType[CellRendererType[\"DATETIME\"] = 3] = \"DATETIME\";\r\n CellRendererType[CellRendererType[\"BOOL\"] = 4] = \"BOOL\";\r\n})(CellRendererType || (CellRendererType = {}));\r\nvar StringCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var text = value ? value.toString().replace(/\\n/g, '\\u21B5 ') : '';\r\n cellValueElement.innerText = text;\r\n cellValueElement.title = text;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-left\");\r\n }\r\n};\r\nvar NumberCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var strValue = (value || '').toString();\r\n if (typeof value == 'number') {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n strValue = value.toLocaleString();\r\n }\r\n }\r\n cellValueElement.innerText = strValue;\r\n cellValueElement.title = strValue;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-right\");\r\n }\r\n};\r\nvar DateTimeCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n var isDate = Object.prototype.toString.call(value) === '[object Date]';\r\n var strValue = (value || '').toString();\r\n if (isDate) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.dateTimeToStr(value, column.type, $1);\r\n });\r\n }\r\n else {\r\n var locale = i18n.getCurrentLocale();\r\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\r\n switch (column.type) {\r\n case DataType.Date:\r\n strValue = value.toLocaleDateString(locale);\r\n break;\r\n case DataType.Time:\r\n strValue = value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n case DataType.DateTime:\r\n strValue = value.toLocaleDateString(locale) + \" \" + value.toLocaleTimeString(locale, timeOptions);\r\n break;\r\n }\r\n }\r\n }\r\n cellValueElement.innerText = strValue;\r\n cellValueElement.title = strValue;\r\n if (column.align == GridColumnAlign.NONE) {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-align-right\");\r\n }\r\n};\r\nvar BoolCellRendererDefault = function (value, column, cellValueElement, rowElement) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\r\n return i18n.booleanToStr(value, $1);\r\n });\r\n return StringCellRendererDefault(strValue, column, cellValueElement, rowElement);\r\n }\r\n else {\r\n cellValueElement.classList.add(cssPrefix + \"-cell-value-bool\");\r\n cellValueElement.classList.add(cssPrefix + \"-\" + (value ? 'cell-value-true' : 'cell-value-false'));\r\n }\r\n};\r\nvar GridCellRendererStore = /** @class */ (function () {\r\n function GridCellRendererStore(options) {\r\n this.renderers = {};\r\n this.defaultRenderers = {};\r\n this.registerRenderer('StringDefault', StringCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);\r\n this.registerRenderer('NumberDefault', NumberCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);\r\n this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);\r\n this.registerRenderer('BoolDefault', BoolCellRendererDefault);\r\n this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);\r\n }\r\n GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {\r\n var cellType = this.getCellType(columnType);\r\n return this.defaultRenderers[CellRendererType[cellType]];\r\n };\r\n GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {\r\n return this.defaultRenderers[CellRendererType[rendererType]];\r\n };\r\n GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {\r\n if (renderer) {\r\n this.defaultRenderers[CellRendererType[cellType]] = renderer;\r\n }\r\n };\r\n GridCellRendererStore.prototype.getRenderer = function (name) {\r\n return this.renderers[name];\r\n };\r\n GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {\r\n this.renderers[name] = renderer;\r\n };\r\n GridCellRendererStore.prototype.getCellType = function (dataType) {\r\n switch (dataType) {\r\n case DataType.Autoinc:\r\n case DataType.Byte:\r\n case DataType.Word:\r\n case DataType.Currency:\r\n case DataType.Float:\r\n case DataType.Int32:\r\n case DataType.Int64:\r\n return CellRendererType.NUMBER;\r\n case DataType.Date:\r\n case DataType.DateTime:\r\n case DataType.Time:\r\n return CellRendererType.DATETIME;\r\n case DataType.Bool:\r\n return CellRendererType.BOOL;\r\n default:\r\n return CellRendererType.STRING;\r\n }\r\n };\r\n return GridCellRendererStore;\r\n}());\r\nexport { GridCellRendererStore };\r\n//# sourceMappingURL=easy_grid_cell_renderer.js.map","import { utils, ColumnAlignment } from '@easydata/core';\r\nimport { CellRendererType } from \"./easy_grid_cell_renderer\";\r\nvar DEFAULT_WIDTH_STRING = 250;\r\nvar ROW_NUM_WIDTH = 60;\r\nexport var GridColumnAlign;\r\n(function (GridColumnAlign) {\r\n GridColumnAlign[GridColumnAlign[\"NONE\"] = 1] = \"NONE\";\r\n GridColumnAlign[GridColumnAlign[\"LEFT\"] = 2] = \"LEFT\";\r\n GridColumnAlign[GridColumnAlign[\"CENTER\"] = 3] = \"CENTER\";\r\n GridColumnAlign[GridColumnAlign[\"RIGHT\"] = 4] = \"RIGHT\";\r\n})(GridColumnAlign || (GridColumnAlign = {}));\r\nfunction MapAlignment(alignment) {\r\n switch (alignment) {\r\n case ColumnAlignment.Left:\r\n return GridColumnAlign.LEFT;\r\n case ColumnAlignment.Center:\r\n return GridColumnAlign.CENTER;\r\n case ColumnAlignment.Right:\r\n return GridColumnAlign.RIGHT;\r\n default:\r\n return GridColumnAlign.NONE;\r\n }\r\n}\r\nvar GridColumn = /** @class */ (function () {\r\n function GridColumn(column, grid, isRowNum) {\r\n if (isRowNum === void 0) { isRowNum = false; }\r\n this._label = null;\r\n this._description = null;\r\n //public left: number;\r\n this.align = GridColumnAlign.NONE;\r\n this.isVisible = true;\r\n this.isRowNum = false;\r\n this.dataColumn = column;\r\n this.grid = grid;\r\n var widthOptions = grid.options.columnWidths || {};\r\n if (column) {\r\n if (column.style.alignment) {\r\n this.align = MapAlignment(column.style.alignment);\r\n }\r\n this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;\r\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);\r\n this._description = column.description;\r\n }\r\n else if (isRowNum) {\r\n this.isRowNum = true;\r\n this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;\r\n this._label = '';\r\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(CellRendererType.NUMBER);\r\n }\r\n if (grid && grid.options && grid.options.onGetCellRenderer) {\r\n this.cellRenderer = grid.options.onGetCellRenderer(this, this.cellRenderer) || this.cellRenderer;\r\n }\r\n }\r\n Object.defineProperty(GridColumn.prototype, \"label\", {\r\n get: function () {\r\n return this._label ? this._label : this.isRowNum ? '' : this.dataColumn.label;\r\n },\r\n set: function (value) {\r\n this._label = this.label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ;\r\n Object.defineProperty(GridColumn.prototype, \"description\", {\r\n /** Get column description. */\r\n get: function () {\r\n return this._description;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(GridColumn.prototype, \"type\", {\r\n get: function () {\r\n return this.dataColumn ? this.dataColumn.type : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return GridColumn;\r\n}());\r\nexport { GridColumn };\r\nvar GridColumnList = /** @class */ (function () {\r\n function GridColumnList(columnList, grid) {\r\n this.items = [];\r\n this.grid = grid;\r\n this.sync(columnList);\r\n }\r\n GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {\r\n if (hasRowNumCol === void 0) { hasRowNumCol = true; }\r\n this.clear();\r\n var rowNumCol = new GridColumn(null, this.grid, true);\r\n this.add(rowNumCol);\r\n if (!hasRowNumCol) {\r\n rowNumCol.isVisible = false;\r\n }\r\n if (columnList) {\r\n for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {\r\n var column = _a[_i];\r\n var col = new GridColumn(column, this.grid);\r\n if (this.grid.options.onSyncGridColumn) {\r\n this.grid.options.onSyncGridColumn(col);\r\n }\r\n this.add(col);\r\n }\r\n }\r\n };\r\n Object.defineProperty(GridColumnList.prototype, \"count\", {\r\n get: function () {\r\n return this.items.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n GridColumnList.prototype.add = function (col) {\r\n var index = this.items.length;\r\n this.items.push(col);\r\n return index;\r\n };\r\n GridColumnList.prototype.put = function (index, col) {\r\n if (index >= 0 && index < this.items.length) {\r\n this.items[index] = col;\r\n }\r\n };\r\n GridColumnList.prototype.move = function (col, newIndex) {\r\n var oldIndex = this.items.indexOf(col);\r\n if (oldIndex >= 0 && oldIndex != newIndex)\r\n utils.moveArrayItem(this.items, oldIndex, newIndex);\r\n };\r\n GridColumnList.prototype.get = function (index) {\r\n if (index >= 0 && index < this.items.length) {\r\n return this.items[index];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n // public getIndex(name: string) : number {\r\n // return this.mapper[name];\r\n // }\r\n GridColumnList.prototype.getItems = function () {\r\n return this.items;\r\n };\r\n GridColumnList.prototype.removeAt = function (index) {\r\n var col = this.get(index);\r\n this.items.splice(index, 1);\r\n //delete this.mapper[col.name];\r\n };\r\n GridColumnList.prototype.clear = function () {\r\n this.items = [];\r\n //this.mapper = {};\r\n };\r\n return GridColumnList;\r\n}());\r\nexport { GridColumnList };\r\n//# sourceMappingURL=easy_grid_columns.js.map","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { EventEmitter, DataRow, utils, i18n, DataType } from '@easydata/core';\r\nimport { eqDragManager, DropEffect } from '../utils/drag_manager';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { getElementAbsolutePos, eqCssPrefix } from '../utils/ui-utils';\r\nimport { AutoResizeColumns } from './easy_grid_options';\r\nimport { GridColumnList, GridColumnAlign } from './easy_grid_columns';\r\nimport { GridCellRendererStore } from './easy_grid_cell_renderer';\r\nvar DEFAULT_ROW_HEIGHT = 36;\r\nvar DEFAULT_ROW_COUNT = 15;\r\n/** Represents a grid widget with columns rows, paging, custom rendering and more */\r\nvar EasyGrid = /** @class */ (function () {\r\n /** Creates and initializes all internal properties of the grid object */\r\n function EasyGrid(options) {\r\n this.cssPrefix = \"keg\";\r\n this.pagination = { page: 1, pageSize: 30, total: 0 };\r\n this.paginationOptions = {\r\n maxButtonCount: 10,\r\n useBootstrap: false //true\r\n };\r\n this.defaultDataGridOptions = {\r\n slot: null,\r\n dataTable: null,\r\n fixHeightOnFirstRender: false,\r\n syncGridColumns: true,\r\n useRowNumeration: true,\r\n allowDragDrop: false,\r\n aggregates: {\r\n settings: null,\r\n calculator: null\r\n },\r\n paging: {\r\n enabled: true,\r\n pageSize: 30,\r\n pageSizeItems: [20, 30, 50, 100, 200]\r\n },\r\n columnWidths: {\r\n autoResize: AutoResizeColumns.Always,\r\n stringColumns: {\r\n min: 100,\r\n max: 500,\r\n default: 250\r\n },\r\n numberColumns: {\r\n min: 60,\r\n default: 120\r\n },\r\n boolColumns: {\r\n min: 50,\r\n default: 80\r\n },\r\n dateColumns: {\r\n min: 80,\r\n default: 200\r\n },\r\n otherColumns: {\r\n min: 100,\r\n max: 500,\r\n default: 250\r\n },\r\n rowNumColumn: {\r\n min: 40,\r\n default: 60\r\n }\r\n },\r\n showPlusButton: false,\r\n viewportRowsCount: null,\r\n showActiveRow: true\r\n };\r\n this.rowsOnPagePromise = null;\r\n this.containerInitialHeight = 0;\r\n this.firstRender = true;\r\n this.prevRowTotals = null;\r\n this.landingIndex = -1;\r\n this.landingSlot = domel('div')\r\n .addClass(this.cssPrefix + \"-col-landing-slot\")\r\n .addChildElement(domel('div')\r\n .toDOM())\r\n .toDOM();\r\n this._activeRowIndex = -1;\r\n if (options && options.paging) {\r\n options.paging = utils.assign(this.defaultDataGridOptions.paging, options.paging);\r\n }\r\n this.options = this.mergeOptions(options);\r\n this.processColumnWidthsOptions();\r\n if (!this.options.slot)\r\n throw Error('\"slot\" parameter is required to initialize EasyDataGrid');\r\n if (!this.options.dataTable)\r\n throw Error('\"dataTable\" parameter is required to initialize EasyDataGrid');\r\n this.dataTable = options.dataTable;\r\n this.eventEmitter = new EventEmitter(this);\r\n this.cellRendererStore = new GridCellRendererStore(options);\r\n this.columns = new GridColumnList(this.dataTable.columns, this);\r\n this.setSlot(this.options.slot);\r\n this.init(this.options);\r\n }\r\n EasyGrid.prototype.mergeOptions = function (options) {\r\n var colWidthOptions = utils.assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);\r\n var pagingOptions = utils.assignDeep({}, this.defaultDataGridOptions.paging, options.paging);\r\n var result = utils.assign({}, this.defaultDataGridOptions, options);\r\n result.columnWidths = colWidthOptions;\r\n result.paging = pagingOptions;\r\n return result;\r\n };\r\n EasyGrid.prototype.processColumnWidthsOptions = function () {\r\n var widthOptions = this.options.columnWidths;\r\n if (!widthOptions)\r\n return;\r\n //string columns\r\n utils.getStringDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);\r\n });\r\n //numeric columns\r\n utils.getNumericDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);\r\n });\r\n //bool columns\r\n widthOptions[DataType.Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[DataType.Bool]);\r\n //date columns\r\n utils.getDateDataTypes().forEach(function (dataType) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);\r\n });\r\n //other columns\r\n var knownTypes = __spreadArrays(utils.getStringDataTypes(), utils.getNumericDataTypes(), utils.getDateDataTypes(), [\r\n DataType.Bool\r\n ]);\r\n utils.getAllDataTypes().forEach(function (dataType) {\r\n if (!(dataType in knownTypes)) {\r\n widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);\r\n }\r\n });\r\n widthOptions[DataType.Unknown] = widthOptions.otherColumns;\r\n };\r\n EasyGrid.prototype.setSlot = function (slot) {\r\n if (typeof slot === 'string') {\r\n if (slot.length) {\r\n if (slot[0] === '#') {\r\n this.slot = document.getElementById(slot.substring(1));\r\n }\r\n else if (slot[0] === '.') {\r\n var result = document.getElementsByClassName(slot.substring(1));\r\n if (result.length)\r\n this.slot = result[0];\r\n }\r\n else {\r\n throw Error('Unrecognized slot parameter ' +\r\n '(Must be id, class or HTMLElement): ' + slot);\r\n }\r\n }\r\n }\r\n else {\r\n this.slot = slot;\r\n }\r\n };\r\n /** Initializes grid widget according to the options passed in the parameter */\r\n EasyGrid.prototype.init = function (options) {\r\n var _this = this;\r\n if (options.onInit) {\r\n this.addEventListener('init', options.onInit);\r\n }\r\n if (options.onRowClick) {\r\n this.addEventListener('rowClick', options.onRowClick);\r\n }\r\n if (options.onRowDbClick) {\r\n this.addEventListener('rowDbClick', options.onRowDbClick);\r\n }\r\n if (options.onPlusButtonClick) {\r\n this.addEventListener('plusButtonClick', options.onPlusButtonClick);\r\n }\r\n if (options.onColumnChanged) {\r\n this.addEventListener('columnChanged', options.onColumnChanged);\r\n }\r\n if (options.onColumnDeleted) {\r\n this.addEventListener('columnDeleted', options.onColumnDeleted);\r\n }\r\n if (options.onColumnMoved) {\r\n this.addEventListener('columnMoved', options.onColumnMoved);\r\n }\r\n if (options.onPageChanged) {\r\n this.addEventListener('pageChanged', options.onPageChanged);\r\n }\r\n if (options.onActiveRowChanged) {\r\n this.addEventListener('activeRowChanged', options.onActiveRowChanged);\r\n }\r\n this.addEventListener('pageChanged', function (ev) { return _this.activeRowIndex = -1; });\r\n utils.assignDeep(this.paginationOptions, options.pagination);\r\n this.pagination.pageSize = this.options.paging.pageSize\r\n || this.pagination.pageSize;\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDropContainer({\r\n element: this.slot,\r\n scopes: [\"gridColumnMove\"],\r\n onDragEnter: function (_, ev) {\r\n _this.slot.classList.add(eqCssPrefix + \"-drophover\");\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragOver: function (_, ev) {\r\n _this.showLandingSlot(ev.pageX, ev.pageY);\r\n },\r\n onDragLeave: function (_, ev) {\r\n ev.dropEffect = DropEffect.Forbid;\r\n _this.slot.classList.remove(eqCssPrefix + \"-drophover\");\r\n _this.hideLandingSlot();\r\n },\r\n onDrop: function (_, ev) {\r\n _this.dataTable.columns.move(ev.data.column, _this.landingIndex);\r\n _this.refresh();\r\n _this.fireEvent({\r\n type: 'columnMoved',\r\n columnId: ev.data.column.id,\r\n newIndex: _this.landingIndex\r\n });\r\n }\r\n });\r\n }\r\n this.refresh();\r\n this.fireEvent('init');\r\n };\r\n /** Fires a grid event. You can pass either an event type\r\n * (like 'init', 'rowClick', 'pageChanged', etc )\r\n * or a ready-to-use grid event object\r\n * */\r\n EasyGrid.prototype.fireEvent = function (event) {\r\n if (typeof event === \"string\") {\r\n this.eventEmitter.fire(event);\r\n }\r\n else {\r\n this.eventEmitter.fire(event.type, event);\r\n }\r\n };\r\n /** Allows to set the data (represented by a EasyDataTable object)\r\n * or to replace the existing one associated with the grid */\r\n EasyGrid.prototype.setData = function (data) {\r\n this.dataTable = data;\r\n this.clear();\r\n this.refresh();\r\n };\r\n /** Returns the EasyDataTable object associated with the grid via `setData()` call */\r\n EasyGrid.prototype.getData = function () {\r\n return this.dataTable;\r\n };\r\n /** Gets the list of grid columns */\r\n EasyGrid.prototype.getColumns = function () {\r\n return this.columns;\r\n };\r\n /** This function is called when the grid is destroyed */\r\n EasyGrid.prototype.destroy = function () {\r\n this.slot.innerHTML = \"\";\r\n };\r\n /** Clears the current DOM object and re-renders everything from the scratch */\r\n EasyGrid.prototype.refresh = function () {\r\n this.clearDOM();\r\n this.render();\r\n };\r\n EasyGrid.prototype.clearDOM = function () {\r\n this.slot.innerHTML = '';\r\n };\r\n /** Clears all DOM object in the grid and return it to its initial state */\r\n EasyGrid.prototype.clear = function () {\r\n this.pagination.page = 1;\r\n this.clearDOM();\r\n };\r\n /** Renders the grid */\r\n EasyGrid.prototype.render = function () {\r\n var _this = this;\r\n if (!this.hasData() && !this.options.showPlusButton)\r\n return;\r\n this.containerInitialHeight = this.slot.clientHeight;\r\n this.rootDiv = document.createElement('div');\r\n this.rootDiv.style.width = '100%';\r\n this.rootDiv.classList.add(this.cssPrefix + \"-root\");\r\n this.columns.sync(this.dataTable.columns, this.options.useRowNumeration);\r\n this.renderHeader();\r\n this.rootDiv.appendChild(this.headerDiv);\r\n this.renderBody();\r\n this.rootDiv.appendChild(this.bodyDiv);\r\n this.renderFooter();\r\n this.rootDiv.appendChild(this.footerDiv);\r\n var gridContainer = document.createElement('div');\r\n gridContainer.classList.add(this.cssPrefix + \"-container\");\r\n gridContainer.appendChild(this.rootDiv);\r\n this.slot.appendChild(gridContainer);\r\n var needAutoResize = this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\r\n if (this.rowsOnPagePromise) {\r\n this.rowsOnPagePromise\r\n .then(function () { return _this.updateHeight(); })\r\n .then(function () {\r\n _this.firstRender = false;\r\n _this.rowsOnPagePromise = null;\r\n });\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.updateHeight()\r\n .then(function () {\r\n _this.firstRender = false;\r\n if (needAutoResize) {\r\n _this.resizeColumns();\r\n }\r\n });\r\n }, 100);\r\n }\r\n };\r\n EasyGrid.prototype.updateHeight = function () {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n if (_this.options.viewportRowsCount) {\r\n var firstRow = _this.bodyCellContainerDiv.firstElementChild;\r\n var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;\r\n var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;\r\n var viewportHeight_1 = rowHeight * rowCount;\r\n domel(_this.bodyViewportDiv)\r\n .setStyle('height', viewportHeight_1 + \"px\");\r\n setTimeout(function () {\r\n var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;\r\n viewportHeight_1 = viewportHeight_1 + sbHeight;\r\n domel(_this.bodyViewportDiv)\r\n .setStyle('height', viewportHeight_1 + \"px\");\r\n resolve();\r\n }, 100);\r\n return;\r\n }\r\n else if (_this.containerInitialHeight > 0) {\r\n // comment for now since it does not work in all cases\r\n // const bodyHeight = this.containerInitialHeight - this.headerDiv.offsetHeight - this.footerDiv.offsetHeight;\r\n // domel(this.bodyDiv)\r\n // .setStyle('height', `${bodyHeight}px`);\r\n }\r\n resolve();\r\n })\r\n .then(function () {\r\n if (_this.options.fixHeightOnFirstRender && _this.firstRender) {\r\n _this.slot.style.height = _this.slot.offsetHeight + \"px\";\r\n }\r\n });\r\n };\r\n EasyGrid.prototype.getContainerWidth = function () {\r\n return this.columns.getItems()\r\n .filter(function (col) { return col.isVisible; })\r\n .map(function (col) { return col.width; })\r\n .reduce(function (sum, current) { return sum + current; });\r\n };\r\n EasyGrid.prototype.renderHeader = function () {\r\n var _this = this;\r\n this.headerDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-header\")\r\n .toDOM();\r\n this.headerViewportDiv = domel('div', this.headerDiv)\r\n .addClass(this.cssPrefix + \"-header-viewport\")\r\n .toDOM();\r\n this.headerCellContainerDiv = domel('div', this.headerViewportDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-container\")\r\n .toDOM();\r\n this.headerRowDiv = domel('div', this.headerCellContainerDiv)\r\n .addClass(this.cssPrefix + \"-header-row\")\r\n .toDOM();\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var hd = _this.renderColumnHeader(column, index);\r\n _this.headerRowDiv.appendChild(hd);\r\n if (column.isRowNum) {\r\n domel(hd)\r\n .addChildElement(_this.renderHeaderButtons());\r\n }\r\n });\r\n var containerWidth = this.getContainerWidth();\r\n domel(this.headerCellContainerDiv)\r\n .setStyle('width', containerWidth + \"px\");\r\n };\r\n EasyGrid.prototype.hasData = function () {\r\n return this.dataTable.columns.count > 0;\r\n };\r\n EasyGrid.prototype.renderColumnHeader = function (column, index) {\r\n var _this = this;\r\n var colBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-header-cell\")\r\n .data('col-idx', \"\" + index)\r\n .setStyle('width', column.width + \"px\");\r\n if (column.dataColumn) {\r\n colBuilder\r\n .data('col-id', \"\" + column.dataColumn.id);\r\n }\r\n var colDiv = colBuilder.toDOM();\r\n domel('div', colDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-resize\");\r\n if (!column.isRowNum) {\r\n domel('div', colDiv)\r\n .addClass(this.cssPrefix + \"-header-cell-label\")\r\n .text(column.label);\r\n }\r\n if (column.description) {\r\n domel('div', colDiv)\r\n .addClass('question-mark')\r\n .title(column.description);\r\n }\r\n if (this.options.allowDragDrop) {\r\n eqDragManager.registerDraggableItem({\r\n element: colDiv,\r\n scope: \"gridColumnMove\",\r\n data: { column: column },\r\n renderer: function (dragImage) {\r\n dragImage.innerHTML = '';\r\n var attrLabel = document.createElement('div');\r\n attrLabel.innerText = column.label;\r\n dragImage.classList.add(_this.cssPrefix + \"-sortable-helper\");\r\n dragImage.appendChild(attrLabel);\r\n },\r\n onDragStart: function (ev) {\r\n ev.dropEffect = DropEffect.Allow;\r\n }\r\n });\r\n }\r\n return colDiv;\r\n };\r\n EasyGrid.prototype.renderBody = function () {\r\n var _this = this;\r\n this.bodyDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-body\")\r\n .toDOM();\r\n this.bodyViewportDiv = domel('div', this.bodyDiv)\r\n .addClass(this.cssPrefix + \"-body-viewport\")\r\n .attr('tabIndex', '0')\r\n .toDOM();\r\n this.bodyCellContainerDiv = domel('div', this.bodyViewportDiv)\r\n .addClass(this.cssPrefix + \"-cell-container\")\r\n .toDOM();\r\n var showAggrs = this.canShowAggregates();\r\n if (this.dataTable) {\r\n this.showProgress();\r\n this.rowsOnPagePromise = this.getRowsToRender()\r\n .then(function (rows) {\r\n _this.pagination.total = _this.dataTable.getTotal();\r\n _this.hideProgress();\r\n //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)\r\n _this.bodyCellContainerDiv.innerHTML = '';\r\n _this.prevRowTotals = null;\r\n var rowsToRender = 0;\r\n if (rows.length) {\r\n var groups_1 = showAggrs\r\n ? _this.options.aggregates.settings.getGroups()\r\n : [];\r\n rowsToRender = (rows.length < _this.pagination.pageSize)\r\n ? rows.length\r\n : _this.pagination.pageSize;\r\n rows.forEach(function (row, index) {\r\n if (showAggrs)\r\n _this.updateTotalsState(groups_1, row);\r\n //we don't actually render the last row\r\n if (index < rowsToRender) {\r\n var tr = _this.renderRow(row, index);\r\n _this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n });\r\n var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;\r\n if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {\r\n var row = new DataRow(_this.dataTable.columns, new Array(_this.dataTable.columns.count));\r\n _this.updateTotalsState(groups_1, row, true);\r\n }\r\n }\r\n var needAutoResize = _this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\r\n if (needAutoResize) {\r\n _this.resizeColumns();\r\n }\r\n else {\r\n var containerWidth = _this.getContainerWidth();\r\n domel(_this.bodyCellContainerDiv)\r\n .setStyle('width', containerWidth + \"px\");\r\n }\r\n return rowsToRender;\r\n })\r\n .catch(function (error) { console.error(error); return 0; });\r\n }\r\n this.bodyViewportDiv.addEventListener('scroll', function (ev) {\r\n domel(_this.headerViewportDiv)\r\n .setStyle('margin-left', \"-\" + _this.bodyViewportDiv.scrollLeft + \"px\");\r\n });\r\n this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));\r\n };\r\n EasyGrid.prototype.isLastPage = function () {\r\n if (this.dataTable.elasticChunks) {\r\n return this.dataTable.totalIsKnown()\r\n && (this.pagination.page * this.pagination.pageSize) >= this.pagination.total;\r\n }\r\n return this.pagination.page * this.pagination.pageSize >= this.pagination.total;\r\n };\r\n EasyGrid.prototype.canShowAggregates = function () {\r\n if (!this.options || !this.options.aggregates || !this.options.aggregates.settings)\r\n return false;\r\n var aggrSettings = this.options.aggregates.settings;\r\n var result = (aggrSettings.hasAggregates() || aggrSettings.hasRecordCount())\r\n && (aggrSettings.hasGroups() || aggrSettings.hasGrandTotals());\r\n return result;\r\n };\r\n EasyGrid.prototype.updateTotalsState = function (groups, newRow, isLast) {\r\n if (isLast === void 0) { isLast = false; }\r\n var aggrSettings = this.options.aggregates.settings;\r\n if (this.prevRowTotals && aggrSettings.hasGroups()) {\r\n var changeLevel = -1;\r\n for (var level = 1; level <= groups.length; level++) {\r\n var group = groups[level - 1];\r\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\r\n var col = _a[_i];\r\n if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {\r\n changeLevel = level;\r\n break;\r\n }\r\n }\r\n if (changeLevel !== -1)\r\n break;\r\n }\r\n if (changeLevel !== -1) {\r\n for (var level = groups.length; level >= changeLevel; level--) {\r\n var row = new DataRow(this.dataTable.columns, this.prevRowTotals.toArray());\r\n var tr = this.renderTotalsRow(level, row);\r\n this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n }\r\n }\r\n if (isLast && aggrSettings.hasGrandTotals() && aggrSettings.hasAggregates()) {\r\n var tr = this.renderTotalsRow(0, newRow);\r\n this.bodyCellContainerDiv.appendChild(tr);\r\n }\r\n this.prevRowTotals = newRow;\r\n };\r\n EasyGrid.prototype.applyGroupColumnTemplate = function (template, value, count) {\r\n var result = template.replace(/{{\\s*GroupValue\\s*}}/g, value ? \"\" + value : '-');\r\n result = result.replace(/{{\\s*GroupCount\\s*}}/g, count ? \"\" + count : '-');\r\n return result;\r\n };\r\n EasyGrid.prototype.renderTotalsRow = function (level, row) {\r\n var _this = this;\r\n var aggrSettings = this.options.aggregates.settings;\r\n var group = (level > 0)\r\n ? aggrSettings.getGroups()[level - 1]\r\n : { columns: [], aggregates: aggrSettings.getAggregates() };\r\n var rowBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-row\")\r\n .addClass(this.cssPrefix + \"-row-totals\")\r\n .addClass(this.cssPrefix + \"-totals-lv\" + level)\r\n .data('totals-level', \"\" + level)\r\n .attr('tabindex', '-1');\r\n var rowElement = rowBuilder.toDOM();\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var val = '';\r\n var colIndex = !column.isRowNum\r\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\r\n : -1;\r\n if (!column.isRowNum && column.dataColumn) {\r\n if (group.columns.indexOf(column.dataColumn.id) >= 0) {\r\n val = row.getValue(colIndex);\r\n }\r\n ;\r\n }\r\n if (colIndex == _this.dataTable.columns.count - 1) {\r\n val = '. . . . . .';\r\n }\r\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\r\n });\r\n var aggrContainer = this.options.aggregates.calculator.getAggrContainer();\r\n var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });\r\n var key = aggrSettings.buildGroupKey(group, row);\r\n aggrContainer.getAggregateData(level, key)\r\n .then(function (values) {\r\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\r\n var aggrColId = aggrCols_1[_i];\r\n row.setValue(aggrColId, values[aggrColId]);\r\n }\r\n rowElement.innerHTML = '';\r\n _this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var val = '';\r\n var colIndex = !column.isRowNum\r\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\r\n : -1;\r\n if (!column.isRowNum) {\r\n var isLastGroupColumn = false;\r\n if (column.dataColumn) {\r\n var groupColIndex = group.columns.indexOf(column.dataColumn.id);\r\n var aggrColIndex = aggrCols.indexOf(column.dataColumn.id);\r\n if (level > 0) {\r\n isLastGroupColumn = groupColIndex == group.columns.length - 1;\r\n }\r\n else {\r\n //if it's a grand total row consider first column as the last group column\r\n isLastGroupColumn = colIndex == 0;\r\n }\r\n if (groupColIndex >= 0 || aggrColIndex >= 0) {\r\n val = row.getValue(colIndex);\r\n }\r\n ;\r\n }\r\n var groupFooterTemplate = '';\r\n if (level > 0) {\r\n groupFooterTemplate = column.dataColumn.groupFooterColumnTemplate;\r\n //set the default template for the last grouping column\r\n if (!groupFooterTemplate && aggrSettings.hasRecordCount() && isLastGroupColumn) {\r\n groupFooterTemplate = '{{GroupValue}} ({{GroupCount}})';\r\n }\r\n }\r\n if (groupFooterTemplate) {\r\n var cellDiv_1 = _this.renderCell(column, index, val, rowElement);\r\n var innerCell = cellDiv_1.firstChild;\r\n val = innerCell.innerHTML;\r\n val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);\r\n }\r\n }\r\n var cellDiv = _this.renderCell(column, index, val, rowElement);\r\n rowElement.appendChild(cellDiv);\r\n });\r\n })\r\n .catch(function (error) { return console.error(error); });\r\n return rowElement;\r\n };\r\n EasyGrid.prototype.onViewportKeydown = function (ev) {\r\n if (this.options.showActiveRow) {\r\n var rowCount = this.bodyCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-row\").length;\r\n var newValue = void 0;\r\n switch (ev.key) {\r\n case 'ArrowLeft':\r\n break;\r\n case 'ArrowRight':\r\n break;\r\n case 'ArrowUp':\r\n ev.preventDefault();\r\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? rowCount - 1 : this.activeRowIndex - 1;\r\n this.activeRowIndex = newValue >= 0 ? newValue : 0;\r\n break;\r\n case 'ArrowDown':\r\n ev.preventDefault();\r\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? 0 : this.activeRowIndex + 1;\r\n this.activeRowIndex = newValue < rowCount ? newValue : rowCount - 1;\r\n break;\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.ensureRowVisibility = function (rowOrIndex) {\r\n var row = typeof rowOrIndex === 'number'\r\n ? this.getDataRow(rowOrIndex)\r\n : rowOrIndex;\r\n if (row) {\r\n var rowRect = row.getBoundingClientRect();\r\n var viewportRect = this.bodyViewportDiv.getBoundingClientRect();\r\n var rowTop = rowRect.top - viewportRect.top;\r\n var rowBottom = rowRect.bottom - viewportRect.top;\r\n var viewportHeight = this.bodyViewportDiv.clientHeight;\r\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n if (rowTop > 0 &&\r\n rowBottom <= viewportHeight &&\r\n rowRect.top > 0 &&\r\n rowRect.bottom < windowHeight) {\r\n return;\r\n }\r\n if (rowTop < 0) {\r\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowTop;\r\n }\r\n else if (rowBottom > viewportHeight) {\r\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowBottom - viewportHeight;\r\n }\r\n rowRect = row.getBoundingClientRect();\r\n if (rowRect.top < 0) {\r\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.top;\r\n }\r\n else if (rowRect.bottom > windowHeight) {\r\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.bottom - windowHeight;\r\n }\r\n }\r\n };\r\n /** Returns a promise with the list of the rows to render on one page.\r\n * The list contains pageSize+1 row to make it possible\r\n * to render the totals row (if it appears to be on the edge between pages)\r\n */\r\n EasyGrid.prototype.getRowsToRender = function () {\r\n if (this.options.paging.enabled === false) {\r\n return Promise.resolve(this.dataTable.getCachedRows());\r\n }\r\n return this.dataTable.getRows({\r\n offset: (this.pagination.page - 1) * this.pagination.pageSize,\r\n limit: this.pagination.pageSize + 1\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n return [];\r\n });\r\n };\r\n EasyGrid.prototype.renderFooter = function () {\r\n var _this = this;\r\n this.footerDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-footer\")\r\n .toDOM();\r\n if (this.rowsOnPagePromise) {\r\n this.rowsOnPagePromise.then(function (count) {\r\n _this.footerDiv.innerHTML = '';\r\n _this.footerPaginateDiv = _this.renderPageNavigator();\r\n _this.footerDiv.appendChild(_this.footerPaginateDiv);\r\n var pageInfoBlock = _this.renderPageInfoBlock(count);\r\n _this.footerDiv.appendChild(pageInfoBlock);\r\n });\r\n }\r\n };\r\n EasyGrid.prototype.renderPageInfoBlock = function (count) {\r\n var pageInfoDiv = domel('div')\r\n .addClass(this.cssPrefix + \"-page-info\")\r\n .toDOM();\r\n var rowCount = this.dataTable.getTotal();\r\n if (rowCount > 0) {\r\n var fistPageRecordNum = count\r\n ? (this.pagination.page - 1) * this.pagination.pageSize + 1\r\n : 0;\r\n var lastPageRecordNum = count\r\n ? fistPageRecordNum + count - 1\r\n : 0;\r\n var totalStr = this.dataTable.getTotal().toString();\r\n if (this.dataTable.elasticChunks) {\r\n var count_1 = this.dataTable.getCachedCount();\r\n var total = this.dataTable.getTotal();\r\n if (count_1 !== total)\r\n totalStr = '?';\r\n }\r\n pageInfoDiv.innerHTML = i18n.getText('GridPageInfo')\r\n .replace('{FirstPageRecordNum}', \"<span>\" + fistPageRecordNum.toString() + \"</span>\")\r\n .replace('{LastPageRecordNum}', \"<span>\" + lastPageRecordNum.toString() + \"</span>\")\r\n .replace('{Total}', \"<span>\" + totalStr + \"</span>\");\r\n }\r\n return pageInfoDiv;\r\n };\r\n EasyGrid.prototype.showProgress = function () {\r\n };\r\n EasyGrid.prototype.hideProgress = function () {\r\n };\r\n EasyGrid.prototype.getLocalIndexByGlobal = function (index) {\r\n if (this.pagination) {\r\n return index % this.pagination.pageSize;\r\n }\r\n else {\r\n return index;\r\n }\r\n };\r\n EasyGrid.prototype.getGlobalIndexByLocal = function (index) {\r\n if (this.pagination) {\r\n return (this.pagination.page - 1) * this.pagination.pageSize + index;\r\n }\r\n else {\r\n return index;\r\n }\r\n };\r\n EasyGrid.prototype.renderRow = function (row, index) {\r\n var _this = this;\r\n var indexGlobal = this.getGlobalIndexByLocal(index);\r\n var rowBuilder = domel('div')\r\n .addClass(this.cssPrefix + \"-row\")\r\n .addClass(this.cssPrefix + \"-row-\" + (index % 2 == 1 ? 'odd' : 'even'))\r\n .data('row-idx', \"\" + indexGlobal)\r\n .attr('tabindex', '-1')\r\n .on('click', function (ev) {\r\n _this.activeRowIndex = index;\r\n _this.fireEvent({\r\n type: 'rowClick',\r\n row: row,\r\n rowIndex: index,\r\n sourceEvent: ev\r\n });\r\n })\r\n .on('dblclick', function (ev) {\r\n _this.fireEvent({\r\n type: 'rowDbClick',\r\n row: row,\r\n rowIndex: index,\r\n sourceEvent: ev\r\n });\r\n });\r\n if (index == 0) {\r\n rowBuilder.addClass(this.cssPrefix + \"-row-first\");\r\n }\r\n var rowElement = rowBuilder.toDOM();\r\n if (this.options.showActiveRow && index == this.activeRowIndex) {\r\n rowBuilder.addClass(this.cssPrefix + \"-row-active\");\r\n }\r\n this.columns.getItems().forEach(function (column, index) {\r\n if (!column.isVisible) {\r\n return;\r\n }\r\n var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);\r\n var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);\r\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\r\n });\r\n return rowElement;\r\n };\r\n EasyGrid.prototype.renderCell = function (column, colIndex, value, rowElement) {\r\n var builder = domel('div')\r\n .addClass(this.cssPrefix + \"-cell\")\r\n .data('col-idx', \"\" + colIndex)\r\n .attr('tabindex', '-1')\r\n .setStyle('width', column.width + \"px\");\r\n if (column.align == GridColumnAlign.LEFT) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-left\");\r\n }\r\n else if (column.align == GridColumnAlign.RIGHT) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-right\");\r\n }\r\n else if (column.align == GridColumnAlign.CENTER) {\r\n builder.addClass(this.cssPrefix + \"-cell-align-center\");\r\n }\r\n var cellElement = builder.toDOM();\r\n var valueCell = cellElement.appendChild(domel('div')\r\n .addClass(this.cssPrefix + \"-cell-value\")\r\n .toDOM());\r\n if (column.cellRenderer) {\r\n column.cellRenderer(value, column, valueCell, rowElement);\r\n }\r\n return cellElement;\r\n };\r\n /** Sets current grid pages (if paging is used) */\r\n EasyGrid.prototype.setPage = function (page) {\r\n this.pagination.page = page;\r\n this.fireEvent({ type: \"pageChanged\", page: page });\r\n this.refresh();\r\n this.bodyViewportDiv.focus();\r\n };\r\n EasyGrid.prototype.renderPageNavigator = function () {\r\n var _this = this;\r\n var paginateDiv = document.createElement('div');\r\n paginateDiv.className = this.cssPrefix + \"-pagination-wrapper\";\r\n var rowCount = this.dataTable.getTotal();\r\n if (this.options.paging && this.options.paging.enabled && rowCount > 0) {\r\n var prefix_1 = this.paginationOptions.useBootstrap ? '' : this.cssPrefix + \"-\";\r\n var buttonClickHandler_1 = function (ev) {\r\n var element = ev.target;\r\n if (element.hasAttribute('data-page')) {\r\n var page = parseInt(element.getAttribute('data-page'));\r\n _this.setPage(page);\r\n }\r\n };\r\n var renderPageCell = function (pageIndex, content, disabled, extreme, active) {\r\n var li = document.createElement('li');\r\n li.className = prefix_1 + \"page-item\";\r\n if (!extreme) {\r\n if (active) {\r\n li.className += ' active';\r\n }\r\n var a_1 = document.createElement('a');\r\n a_1.setAttribute('href', 'javascript:void(0)');\r\n a_1.innerHTML = content || pageIndex.toString();\r\n a_1.setAttribute(\"data-page\", \"\" + pageIndex);\r\n a_1.className = prefix_1 + \"page-link\";\r\n a_1.addEventListener(\"click\", buttonClickHandler_1);\r\n li.appendChild(a_1);\r\n return li;\r\n }\r\n var a = document.createElement('span');\r\n a.setAttribute('aria-hidden', 'true');\r\n a.className = prefix_1 + \"page-link\";\r\n if (disabled) {\r\n li.className += ' disabled';\r\n }\r\n else {\r\n if (_this.paginationOptions.useBootstrap) {\r\n a = document.createElement('a');\r\n a.setAttribute('href', 'javascript:void(0)');\r\n a.setAttribute(\"data-page\", \"\" + pageIndex);\r\n }\r\n else {\r\n var newA = document.createElement('a');\r\n newA.setAttribute('href', 'javascript:void(0)');\r\n newA.setAttribute('data-page', \"\" + pageIndex);\r\n a = newA;\r\n }\r\n a.className = prefix_1 + \"page-link\";\r\n a.addEventListener(\"click\", buttonClickHandler_1);\r\n }\r\n a.innerHTML = content;\r\n li.appendChild(a);\r\n return li;\r\n };\r\n if (this.dataTable.elasticChunks) {\r\n var pageIndex = this.pagination.page || 1;\r\n var ul = document.createElement('ul');\r\n ul.className = prefix_1 + \"pagination\";\r\n var cell = renderPageCell(pageIndex - 1, '&laquo;', pageIndex == 1, true, false);\r\n ul.appendChild(cell);\r\n cell = renderPageCell(pageIndex + 1, '&raquo;', this.isLastPage(), true, false);\r\n ul.appendChild(cell);\r\n paginateDiv.appendChild(ul);\r\n }\r\n else {\r\n if (this.pagination.total > this.pagination.pageSize) {\r\n var pageIndex = this.pagination.page || 1;\r\n var pageCount = Math.ceil(this.pagination.total / this.pagination.pageSize) || 1;\r\n var maxButtonCount = this.paginationOptions.maxButtonCount || 10;\r\n var zeroBasedIndex = pageIndex - 1;\r\n var firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\r\n var lastPageIndex = firstPageIndex + maxButtonCount - 1;\r\n if (lastPageIndex > pageCount) {\r\n lastPageIndex = pageCount;\r\n }\r\n var ul = document.createElement('ul');\r\n ul.className = prefix_1 + \"pagination\";\r\n var cell = renderPageCell(firstPageIndex - 1, '&laquo;', firstPageIndex == 1, true, false);\r\n ul.appendChild(cell);\r\n for (var i = firstPageIndex; i <= lastPageIndex; i++) {\r\n cell = renderPageCell(i, i.toString(), false, false, i == pageIndex);\r\n ul.appendChild(cell);\r\n }\r\n cell = renderPageCell(lastPageIndex + 1, '&raquo;', lastPageIndex == pageCount, true, false);\r\n ul.appendChild(cell);\r\n paginateDiv.appendChild(ul);\r\n }\r\n }\r\n if (this.options.paging.allowPageSizeChange) {\r\n var selectChangeHandler = function (ev) {\r\n var newValue = parseInt(ev.target.value);\r\n _this.pagination.pageSize = newValue;\r\n _this.pagination.page = 1;\r\n _this.refresh();\r\n };\r\n var pageSizes = document.createElement('div');\r\n pageSizes.className = this.cssPrefix + \"-page-sizes\";\r\n var selectSize = document.createElement('div');\r\n selectSize.className = \"kfrm-select \" + this.cssPrefix + \"-page-sizes-select\";\r\n pageSizes.appendChild(selectSize);\r\n var sel_1 = document.createElement('select');\r\n var selOptions = this.options.paging.pageSizeItems || [];\r\n var selSet = new Set(selOptions);\r\n selSet.add(this.options.paging.pageSize || 20);\r\n Array.from(selSet).forEach(function (el) {\r\n var option = document.createElement(\"option\");\r\n option.value = el.toString();\r\n option.text = el.toString();\r\n sel_1.appendChild(option);\r\n });\r\n sel_1.value = (this.pagination.pageSize || 20).toString();\r\n selectSize.appendChild(sel_1);\r\n sel_1.addEventListener('change', selectChangeHandler);\r\n var labelDiv = document.createElement('div');\r\n labelDiv.className = this.cssPrefix + \"-page-sizes-label\";\r\n pageSizes.appendChild(labelDiv);\r\n var label = document.createElement('span');\r\n label.innerText = i18n.getText('GridItemsPerPage');\r\n labelDiv.appendChild(label);\r\n paginateDiv.appendChild(pageSizes);\r\n }\r\n }\r\n return paginateDiv;\r\n };\r\n EasyGrid.prototype.addEventListener = function (eventType, handler) {\r\n return this.eventEmitter.subscribe(eventType, function (event) { return handler(event.data); });\r\n };\r\n EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {\r\n this.eventEmitter.unsubscribe(eventType, handlerId);\r\n };\r\n EasyGrid.prototype.renderHeaderButtons = function () {\r\n var _this = this;\r\n if (this.options.showPlusButton) {\r\n return domel('div')\r\n .addClass(this.cssPrefix + \"-header-btn-plus\")\r\n .title(this.options.plusButtonTitle || 'Add')\r\n .addChild('a', function (builder) { return builder\r\n .attr('href', 'javascript:void(0)')\r\n .on('click', function (e) {\r\n e.preventDefault();\r\n _this.fireEvent({\r\n type: 'plusButtonClick',\r\n sourceEvent: e\r\n });\r\n }); })\r\n .toDOM();\r\n }\r\n return domel('span')\r\n .addText('#')\r\n .toDOM();\r\n };\r\n EasyGrid.prototype.showLandingSlot = function (pageX, pageY) {\r\n var colElems = this.headerRowDiv.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-table-col]\");\r\n var cols = [];\r\n for (var i = 1; i < colElems.length; i++) {\r\n var rowElem = colElems[i];\r\n if (rowElem.style.display === 'none')\r\n continue;\r\n cols.push(rowElem);\r\n }\r\n if (cols.length === 0) {\r\n this.landingIndex = 0;\r\n this.headerRowDiv.appendChild(this.landingSlot);\r\n return;\r\n }\r\n var landingPos = getElementAbsolutePos(this.landingSlot);\r\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth) {\r\n return;\r\n }\r\n var newLandingIndex = this.landingIndex;\r\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\r\n var col = cols_1[_i];\r\n var colPos = getElementAbsolutePos(col);\r\n var width = col.offsetWidth;\r\n if (pageX > colPos.x && pageX < colPos.x + width) {\r\n // -1 as we don't need to count add button here\r\n newLandingIndex = parseInt(col.getAttribute('data-col-idx')) - 1;\r\n }\r\n }\r\n if (newLandingIndex != this.landingIndex) {\r\n this.landingIndex = newLandingIndex;\r\n if (this.landingIndex < cols.length) {\r\n this.headerRowDiv.insertBefore(this.landingSlot, cols[this.landingIndex]);\r\n }\r\n else {\r\n this.headerRowDiv.appendChild(this.landingSlot);\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.hideLandingSlot = function () {\r\n var _this = this;\r\n this.landingIndex = -1;\r\n setTimeout(function () {\r\n if (_this.landingSlot.parentElement) {\r\n _this.landingSlot.parentElement.removeChild(_this.landingSlot);\r\n }\r\n }, 10);\r\n };\r\n Object.defineProperty(EasyGrid.prototype, \"activeRowIndex\", {\r\n get: function () {\r\n return this._activeRowIndex;\r\n },\r\n set: function (value) {\r\n if (value !== this._activeRowIndex) {\r\n var oldValue = this._activeRowIndex;\r\n this._activeRowIndex = value;\r\n this.updateActiveRow();\r\n this.fireEvent({\r\n type: 'activeRowChanged',\r\n oldValue: oldValue,\r\n newValue: this.activeRowIndex,\r\n rowIndex: this.getGlobalIndexByLocal(this.activeRowIndex)\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EasyGrid.prototype.updateActiveRow = function () {\r\n var _this = this;\r\n if (this.options.showActiveRow) {\r\n var rows = this.bodyCellContainerDiv.querySelectorAll(\"[class*=\" + this.cssPrefix + \"-row-active]\");\r\n rows.forEach(function (el) { el.classList.remove(_this.cssPrefix + \"-row-active\"); });\r\n var activeRow = this.getActiveRow();\r\n if (activeRow) {\r\n activeRow.classList.add(this.cssPrefix + \"-row-active\");\r\n this.ensureRowVisibility(this.activeRowIndex);\r\n }\r\n }\r\n };\r\n EasyGrid.prototype.getActiveRow = function () {\r\n return this.getDataRow(this.activeRowIndex);\r\n };\r\n EasyGrid.prototype.getDataRow = function (index) {\r\n var rows = Array.from(this.bodyCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-row:not(.\" + this.cssPrefix + \"-row-totals)\"));\r\n if (index >= 0 && index < rows.length)\r\n return rows[index];\r\n return null;\r\n };\r\n /** Makes the grid focused for keyboard events */\r\n EasyGrid.prototype.focus = function () {\r\n this.bodyViewportDiv.focus();\r\n };\r\n /** Resizes columns according to the data they represent */\r\n EasyGrid.prototype.resizeColumns = function () {\r\n if (this.options.columnWidths.autoResize === AutoResizeColumns.Never)\r\n return;\r\n var containerWidth = this.bodyCellContainerDiv.style.width;\r\n this.bodyCellContainerDiv.style.visibility = 'hidden';\r\n this.bodyCellContainerDiv.style.width = '1px';\r\n //this.headerRowDiv.style.visibility = 'hidden';\r\n this.headerRowDiv.style.width = '1px';\r\n var sumWidth = 0;\r\n var columns = this.columns.getItems();\r\n var headerCells = this.headerCellContainerDiv.querySelectorAll(\".\" + this.cssPrefix + \"-header-cell\");\r\n var headerIdx = 0;\r\n var _loop_1 = function (idx) {\r\n var column = columns[idx];\r\n if (!column.isVisible)\r\n return \"continue\";\r\n var calculatedWidth = this_1.options.columnWidths.autoResize !== AutoResizeColumns.Always && column.dataColumn\r\n ? column.dataColumn.calculatedWidth\r\n : 0;\r\n var cellValues = this_1.bodyCellContainerDiv.querySelectorAll(\".\" + this_1.cssPrefix + \"-cell[data-col-idx=\\\"\" + idx + \"\\\"] > .\" + this_1.cssPrefix + \"-cell-value\");\r\n var maxWidth = 0;\r\n if (calculatedWidth > 0) {\r\n sumWidth += calculatedWidth;\r\n column.width = calculatedWidth;\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = calculatedWidth + \"px\";\r\n });\r\n headerCells[headerIdx].style.width = calculatedWidth + \"px\";\r\n }\r\n else {\r\n if (cellValues.length == 0) {\r\n headerCells[headerIdx].style.width = null;\r\n headerCells[headerIdx].style.whiteSpace = 'nowrap';\r\n }\r\n maxWidth = headerCells[headerIdx].offsetWidth;\r\n if (cellValues.length > 0) {\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = null;\r\n var width = value.parentElement.offsetWidth;\r\n if (width > maxWidth) {\r\n maxWidth = width;\r\n }\r\n });\r\n maxWidth += 3;\r\n var maxOption = column.isRowNum\r\n ? this_1.options.columnWidths.rowNumColumn.max || 500\r\n : this_1.options.columnWidths[column.dataColumn.type].max || 2000;\r\n var minOption = column.isRowNum\r\n ? this_1.options.columnWidths.rowNumColumn.min || 0\r\n : this_1.options.columnWidths[column.dataColumn.type].min || 20;\r\n if (maxWidth > maxOption) {\r\n maxWidth = maxOption;\r\n }\r\n if (maxWidth < minOption) {\r\n maxWidth = minOption;\r\n }\r\n if (utils.isNumericType(column.type)) {\r\n //increase the calculated width in 1.3 times for numeric columns\r\n maxWidth = Math.round(maxWidth * 1.3);\r\n }\r\n sumWidth += maxWidth;\r\n column.width = maxWidth;\r\n cellValues.forEach(function (value) {\r\n value.parentElement.style.width = maxWidth + \"px\";\r\n });\r\n headerCells[headerIdx].style.width = maxWidth + \"px\";\r\n if (column.dataColumn) {\r\n column.dataColumn.calculatedWidth = maxWidth;\r\n }\r\n }\r\n else {\r\n sumWidth += maxWidth;\r\n }\r\n }\r\n headerIdx++;\r\n };\r\n var this_1 = this;\r\n for (var idx = 0; idx < this.columns.count; idx++) {\r\n _loop_1(idx);\r\n }\r\n if (sumWidth > 0) {\r\n this.bodyCellContainerDiv.style.width = sumWidth + \"px\";\r\n this.headerCellContainerDiv.style.width = sumWidth + \"px\";\r\n }\r\n else {\r\n this.bodyCellContainerDiv.style.width = containerWidth;\r\n this.headerCellContainerDiv.style.width = containerWidth;\r\n }\r\n this.bodyCellContainerDiv.style.visibility = null;\r\n this.headerRowDiv.removeAttribute('style');\r\n };\r\n return EasyGrid;\r\n}());\r\nexport { EasyGrid };\r\n//# sourceMappingURL=easy_grid.js.map","var Calendar = /** @class */ (function () {\r\n function Calendar(slot, options) {\r\n this.slot = slot;\r\n this.options = options || {};\r\n if (!this.options.yearRange) {\r\n this.options.yearRange = 'c-10:c+10';\r\n }\r\n }\r\n Object.defineProperty(Calendar.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp-cal';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Calendar.prototype.setDate = function (date) {\r\n this.currentDate = new Date(date);\r\n };\r\n Calendar.prototype.getDate = function () {\r\n return new Date(this.currentDate);\r\n };\r\n Calendar.prototype.dateChanged = function (apply) {\r\n if (this.options.onDateChanged) {\r\n this.options.onDateChanged(this.currentDate, apply);\r\n }\r\n };\r\n return Calendar;\r\n}());\r\nexport { Calendar };\r\n//# sourceMappingURL=calendar.js.map","import { getElementAbsolutePos } from '../utils/ui-utils';\r\nvar DateTimePicker = /** @class */ (function () {\r\n function DateTimePicker(options) {\r\n this.calendar = null;\r\n this.timePicker = null;\r\n this.options = options;\r\n this.render();\r\n }\r\n Object.defineProperty(DateTimePicker.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DateTimePicker.prototype.setDateTime = function (dateTime) {\r\n this.currentDateTime = new Date(dateTime);\r\n if (this.calendar) {\r\n this.calendar.setDate(this.currentDateTime);\r\n }\r\n if (this.timePicker) {\r\n this.timePicker.setTime(this.currentDateTime);\r\n }\r\n };\r\n DateTimePicker.prototype.getDateTime = function () {\r\n return new Date(this.currentDateTime);\r\n };\r\n DateTimePicker.prototype.render = function () {\r\n var _this = this;\r\n if (this.options.showCalendar) {\r\n this.calendar = this.createCalendar({\r\n yearRange: this.options.yearRange,\r\n showDateTimeInput: this.options.showDateTimeInput,\r\n timePickerIsUsed: this.options.showTimePicker,\r\n oneClickDateSelection: this.options.oneClickDateSelection,\r\n onDateChanged: function (date, apply) {\r\n _this.currentDateTime = date;\r\n if (_this.timePicker) {\r\n _this.timePicker.setTime(_this.currentDateTime);\r\n }\r\n if (_this.options.showTimePicker) {\r\n _this.dateTimeChanged();\r\n }\r\n if (apply) {\r\n _this.apply(_this.currentDateTime);\r\n }\r\n }\r\n });\r\n if (this.calendar)\r\n this.calendar.render();\r\n }\r\n if (this.options.showTimePicker) {\r\n this.timePicker = this.createTimePicker({\r\n onTimeChanged: function (time) {\r\n _this.currentDateTime.setHours(time.getHours());\r\n _this.currentDateTime.setMinutes(time.getMinutes());\r\n if (_this.calendar) {\r\n _this.calendar.setDate(_this.currentDateTime);\r\n }\r\n _this.dateTimeChanged();\r\n }\r\n });\r\n if (this.timePicker)\r\n this.timePicker.render();\r\n }\r\n this.setDateTime(new Date());\r\n };\r\n DateTimePicker.prototype.createCalendar = function (options) {\r\n return null;\r\n };\r\n DateTimePicker.prototype.createTimePicker = function (options) {\r\n return null;\r\n };\r\n DateTimePicker.prototype.show = function (anchor) {\r\n if (this.options.beforeShow) {\r\n this.options.beforeShow();\r\n }\r\n var pos = getElementAbsolutePos(anchor || document.body);\r\n this.slot.style.top = pos.y + anchor.clientHeight + 'px';\r\n this.slot.style.left = pos.x + 'px';\r\n };\r\n DateTimePicker.prototype.apply = function (date) {\r\n if (this.options.onApply) {\r\n this.options.onApply(date);\r\n }\r\n this.destroy();\r\n };\r\n DateTimePicker.prototype.cancel = function () {\r\n if (this.options.onCancel) {\r\n this.options.onCancel();\r\n }\r\n this.destroy();\r\n };\r\n DateTimePicker.prototype.destroy = function () {\r\n if (this.slot && this.slot.parentElement) {\r\n this.slot.parentElement.removeChild(this.slot);\r\n }\r\n };\r\n DateTimePicker.prototype.dateTimeChanged = function () {\r\n if (this.options.onDateTimeChanged) {\r\n this.options.onDateTimeChanged(this.currentDateTime);\r\n }\r\n };\r\n return DateTimePicker;\r\n}());\r\nexport { DateTimePicker };\r\n//# sourceMappingURL=date_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { Calendar } from './calendar';\r\nvar DefaultCalendar = /** @class */ (function (_super) {\r\n __extends(DefaultCalendar, _super);\r\n function DefaultCalendar(slot, options) {\r\n var _this = _super.call(this, slot, options) || this;\r\n _this.daysOfWeek = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n _this.months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n _this.calendarBody = null;\r\n _this.isManualInputChanging = false;\r\n for (var i = 0; i < _this.daysOfWeek.length; i++) {\r\n _this.daysOfWeek[i] = i18n.getShortWeekDayName(i + 1);\r\n }\r\n for (var i = 0; i < _this.months.length; i++) {\r\n _this.months[i] = i18n.getLongMonthName(i + 1);\r\n }\r\n return _this;\r\n }\r\n DefaultCalendar.prototype.setDate = function (date) {\r\n _super.prototype.setDate.call(this, date);\r\n this.selectedMonth = this.currentDate.getMonth();\r\n this.selectedYear = this.currentDate.getFullYear();\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.render = function () {\r\n var _this = this;\r\n var header = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-header\");\r\n if (this.options.showDateTimeInput) {\r\n header\r\n .addChildElement(this.renderManualDateInput());\r\n }\r\n else {\r\n header\r\n .addChild('span', function (builder) { return _this.headerTextElem = builder.toDOM(); });\r\n }\r\n domel(this.slot)\r\n .addChildElement(this.renderCalendarButtons());\r\n this.calendarBody = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-body\")\r\n .toDOM();\r\n };\r\n DefaultCalendar.prototype.getInputDateFormat = function () {\r\n var settings = i18n.getLocaleSettings();\r\n return (this.options.timePickerIsUsed)\r\n ? settings.editDateFormat + \" \" + settings.editTimeFormat\r\n : settings.editDateFormat;\r\n };\r\n DefaultCalendar.prototype.renderManualDateInput = function () {\r\n var _this = this;\r\n var format = this.getInputDateFormat();\r\n var builder = domel('input')\r\n .attr('placeholder', format)\r\n .addClass(this.cssPrefix + \"-header-input\");\r\n builder\r\n .mask(format.replace('yyyy', '9999')\r\n .replace('MM', '99')\r\n .replace('dd', '99')\r\n .replace('HH', '99')\r\n .replace('mm', '99')\r\n .replace('ss', '99'))\r\n .on('input', function (ev) {\r\n builder.removeClass('error');\r\n try {\r\n _this.isManualInputChanging = true;\r\n var newDate = dataUtils.strToDateTime(_this.manualInputElem.value, format);\r\n _this.currentDate = newDate;\r\n _this.jump(_this.currentDate.getFullYear(), _this.currentDate.getMonth());\r\n _this.dateChanged(false);\r\n }\r\n catch (e) {\r\n builder.addClass('error');\r\n }\r\n finally {\r\n _this.isManualInputChanging = false;\r\n }\r\n })\r\n .on('keydown', function (ev) {\r\n if (ev.keyCode === 13) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (_this.manualInputElem.className.indexOf('error') < 0\r\n && !_this.isManualInputChanging)\r\n _this.dateChanged(true);\r\n }\r\n })\r\n .on('focus', function () {\r\n setTimeout(function () {\r\n _this.manualInputElem.selectionStart = 0;\r\n _this.manualInputElem.selectionEnd = 0;\r\n }, 50);\r\n });\r\n this.manualInputElem = builder.toDOM();\r\n return this.manualInputElem;\r\n };\r\n DefaultCalendar.prototype.updateDisplayedDateValue = function () {\r\n if (this.manualInputElem) {\r\n if (!this.isManualInputChanging) {\r\n var format = this.getInputDateFormat();\r\n this.manualInputElem.value = dataUtils.dateTimeToStr(this.currentDate, format);\r\n this.manualInputElem.focus();\r\n }\r\n }\r\n else if (this.headerTextElem) {\r\n var locale = i18n.getCurrentLocale();\r\n this.headerTextElem.innerText = this.currentDate.toLocaleString(locale == 'en' ? undefined : locale, {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n });\r\n }\r\n };\r\n DefaultCalendar.prototype.renderCalendarButtons = function () {\r\n var _this = this;\r\n var builder = domel('nav')\r\n .addClass(this.cssPrefix + \"-nav\")\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-prev\")\r\n .on('click', function () {\r\n _this.prev();\r\n })\r\n .addChild('span', function (builder) { return builder.html('&lsaquo;'); }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-selectors\")\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-month\")\r\n .addChild('select', function (builder) {\r\n builder\r\n .on('change', function () {\r\n _this.jump(_this.selectedYear, parseInt(_this.selectMonthElem.value));\r\n });\r\n var _loop_1 = function (i) {\r\n builder.addChild('option', function (builder) { return builder\r\n .attr('value', i.toString())\r\n .text(_this.months[i]); });\r\n };\r\n for (var i = 0; i < _this.months.length; i++) {\r\n _loop_1(i);\r\n }\r\n _this.selectMonthElem = builder.toDOM();\r\n }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-year\")\r\n .addChild('select', function (builder) { return _this.selectYearElem = builder\r\n .on('change', function () {\r\n _this.jump(parseInt(_this.selectYearElem.value), _this.selectedMonth);\r\n })\r\n .toDOM(); }); }); })\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-nav-next\")\r\n .on('click', function () {\r\n _this.next();\r\n })\r\n .addChild('span', function (builder) { return builder.html('&rsaquo;'); }); });\r\n return builder.toDOM();\r\n };\r\n DefaultCalendar.prototype.prev = function () {\r\n this.selectedYear = (this.selectedMonth === 0) ? this.selectedYear - 1 : this.selectedYear;\r\n this.selectedMonth = (this.selectedMonth === 0) ? 11 : this.selectedMonth - 1;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.next = function () {\r\n this.selectedYear = (this.selectedMonth === 11) ? this.selectedYear + 1 : this.selectedYear;\r\n this.selectedMonth = (this.selectedMonth + 1) % 12;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.rerenderSelectYear = function () {\r\n var match = /c-(\\d*):c\\+(\\d*)/g.exec(this.options.yearRange);\r\n var minusYear = 0;\r\n var plusYear = 1;\r\n if (match !== null) {\r\n minusYear = parseInt(match[1]);\r\n plusYear = parseInt(match[2]);\r\n }\r\n this.selectYearElem.innerHTML = '';\r\n for (var i = 0; i <= minusYear + plusYear; i++) {\r\n var op = document.createElement(\"option\");\r\n var year = this.selectedYear - minusYear + i;\r\n op.value = year.toString();\r\n op.innerText = year.toString();\r\n this.selectYearElem.appendChild(op);\r\n }\r\n };\r\n DefaultCalendar.prototype.jump = function (year, month) {\r\n this.selectedYear = year;\r\n this.selectedMonth = month;\r\n this.rerenderMonth();\r\n };\r\n DefaultCalendar.prototype.rerenderMonth = function () {\r\n var _this = this;\r\n //header text\r\n this.updateDisplayedDateValue();\r\n this.rerenderSelectYear();\r\n var firstDay = (new Date(this.selectedYear, this.selectedMonth)).getDay();\r\n var daysInMonth = new Date(this.selectedYear, this.selectedMonth + 1, 0).getDate();\r\n this.calendarBody.innerHTML = \"\";\r\n this.selectYearElem.value = this.selectedYear.toString();\r\n this.selectMonthElem.value = this.selectedMonth.toString();\r\n this.daysOfWeek.forEach(function (day, idx) {\r\n domel('div', _this.calendarBody)\r\n .addClass(_this.cssPrefix + \"-weekday\")\r\n .addClass(idx == 0 || idx == 6 ? _this.cssPrefix + \"-weekend\" : '')\r\n .text(day);\r\n });\r\n // Add empty cells before first day\r\n for (var i = 0; i < firstDay; i++) {\r\n domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day-empty\");\r\n }\r\n // Add all month days\r\n var today = new Date();\r\n for (var day = 1; day <= daysInMonth; day++) {\r\n var builder = domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day\")\r\n .attr('data-date', day.toString())\r\n .text(day.toString())\r\n .on('click', function (e) {\r\n _this.currentDate.setFullYear(_this.selectedYear);\r\n _this.currentDate.setMonth(_this.selectedMonth);\r\n _this.currentDate.setDate(parseInt(e.target.getAttribute('data-date')));\r\n _this.dateChanged(_this.options.oneClickDateSelection);\r\n });\r\n if (day === today.getDate() && this.selectedYear === today.getFullYear() && this.selectedMonth === today.getMonth()) {\r\n builder.addClass(this.cssPrefix + \"-day-current\");\r\n }\r\n if (day === this.currentDate.getDate() && this.selectedYear === this.currentDate.getFullYear() && this.selectedMonth === this.currentDate.getMonth()) {\r\n builder.addClass(this.cssPrefix + \"-day-selected\");\r\n }\r\n var dayOfWeek = (firstDay + day - 1) % 7;\r\n if (dayOfWeek == 0 || dayOfWeek == 6) {\r\n builder.addClass(this.cssPrefix + \"-weekend\");\r\n }\r\n }\r\n // Add empty cells after last day\r\n var cellsDrawnInLastRow = (firstDay + daysInMonth) % 7;\r\n var cellsToDraw = cellsDrawnInLastRow == 0 ? 0 : 7 - cellsDrawnInLastRow;\r\n for (var i = 0; i < cellsToDraw; i++) {\r\n domel('div', this.calendarBody)\r\n .addClass(this.cssPrefix + \"-day-empty\");\r\n }\r\n };\r\n DefaultCalendar.prototype.dateChanged = function (apply) {\r\n _super.prototype.dateChanged.call(this, apply);\r\n this.rerenderMonth();\r\n };\r\n return DefaultCalendar;\r\n}(Calendar));\r\nexport { DefaultCalendar };\r\n//# sourceMappingURL=default_calendar.js.map","var TimePicker = /** @class */ (function () {\r\n function TimePicker(slot, options) {\r\n this.slot = slot;\r\n this.options = options || {};\r\n }\r\n Object.defineProperty(TimePicker.prototype, \"cssPrefix\", {\r\n get: function () {\r\n return 'kdtp-tp';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TimePicker.prototype.setTime = function (time) {\r\n this.currentTime = new Date(time);\r\n };\r\n TimePicker.prototype.getTime = function () {\r\n return new Date(this.currentTime);\r\n };\r\n TimePicker.prototype.timeChanged = function () {\r\n if (this.options.onTimeChanged) {\r\n this.options.onTimeChanged(this.currentTime);\r\n }\r\n };\r\n return TimePicker;\r\n}());\r\nexport { TimePicker };\r\n//# sourceMappingURL=time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { TimePicker } from './time_picker';\r\nvar DefaultTimePicker = /** @class */ (function (_super) {\r\n __extends(DefaultTimePicker, _super);\r\n function DefaultTimePicker() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultTimePicker.prototype.setTime = function (time) {\r\n _super.prototype.setTime.call(this, time);\r\n this.updateDisplayedTime();\r\n this.hoursInput.valueAsNumber = time.getHours();\r\n this.minutesInput.valueAsNumber = time.getMinutes();\r\n };\r\n DefaultTimePicker.prototype.render = function () {\r\n var _this = this;\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-time\")\r\n .addChild('span', function (builder) { return _this.timeText = builder.toDOM(); })\r\n .toDOM();\r\n var slidersBuilder = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-sliders\");\r\n slidersBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-time-row\")\r\n .title('Hours')\r\n .addChild('input', function (builder) { return _this.hoursInput = builder\r\n .addClass(_this.cssPrefix + \"-input-hours\")\r\n .type('range')\r\n .attr('min', '0')\r\n .attr('max', '23')\r\n .attr('step', '1')\r\n .on('input', function (e) {\r\n _this.currentTime.setHours(_this.hoursInput.valueAsNumber);\r\n _this.updateDisplayedTime();\r\n _this.timeChanged();\r\n })\r\n .toDOM(); }); });\r\n slidersBuilder\r\n .addChild('div', function (builder) { return builder\r\n .addClass(_this.cssPrefix + \"-time-row\")\r\n .title('Minutes')\r\n .addChild('input', function (builder) { return _this.minutesInput = builder\r\n .addClass(_this.cssPrefix + \"-input-minutes\")\r\n .type('range')\r\n .attr('min', '0')\r\n .attr('max', '59')\r\n .attr('step', '1')\r\n .on('input', function (e) {\r\n _this.currentTime.setMinutes(_this.minutesInput.valueAsNumber);\r\n _this.updateDisplayedTime();\r\n _this.timeChanged();\r\n })\r\n .toDOM(); }); });\r\n return this.slot;\r\n };\r\n DefaultTimePicker.prototype.updateDisplayedTime = function () {\r\n var locale = i18n.getCurrentLocale();\r\n var timeToDraw = this.currentTime.toLocaleString(locale == 'en' ? undefined : locale, {\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n });\r\n this.timeText.innerText = timeToDraw;\r\n };\r\n return DefaultTimePicker;\r\n}(TimePicker));\r\nexport { DefaultTimePicker };\r\n//# sourceMappingURL=default_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n } from '@easydata/core';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nimport { DateTimePicker } from './date_time_picker';\r\nimport { DefaultCalendar } from './default_calendar';\r\nimport { DefaultTimePicker } from './default_time_picker';\r\nimport { getElementAbsolutePos } from '../utils/ui-utils';\r\nvar DefaultDateTimePicker = /** @class */ (function (_super) {\r\n __extends(DefaultDateTimePicker, _super);\r\n function DefaultDateTimePicker() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultDateTimePicker.prototype.render = function () {\r\n var _this = this;\r\n var sb = domel('div', document.body)\r\n .addClass(\"\" + this.cssPrefix)\r\n .attr('tabIndex', '0')\r\n .setStyle('position', 'absolute')\r\n .setStyle('top', '-1000px')\r\n .setStyle('left', '-1000px')\r\n .on('keydown', function (ev) {\r\n if (ev.keyCode === 27) { // ESC is pressed\r\n _this.cancel();\r\n }\r\n else if (ev.keyCode === 13) { // Enter is pressed\r\n _this.apply(_this.getDateTime());\r\n }\r\n return false;\r\n });\r\n if (this.options.zIndex) {\r\n sb.setStyle('z-index', \"\" + this.options.zIndex);\r\n }\r\n this.slot = sb.toDOM();\r\n _super.prototype.render.call(this);\r\n this.renderButtons();\r\n this.globalMouseDownHandler = function (e) {\r\n var event = window.event || e;\r\n var o = event.srcElement || event.target;\r\n var isOutside = !_this.slot.contains(event.target);\r\n if (isOutside) {\r\n document.removeEventListener('mousedown', _this.globalMouseDownHandler, true);\r\n _this.cancel();\r\n }\r\n return true;\r\n };\r\n };\r\n DefaultDateTimePicker.prototype.renderButtons = function () {\r\n var _this = this;\r\n var builder = domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-buttons\")\r\n .addChild('button', function (b) { return _this.nowButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-now\")\r\n .text(i18n.getText('ButtonNow'))\r\n .on('click', function () {\r\n _this.setDateTime(new Date());\r\n _this.dateTimeChanged();\r\n return false;\r\n })\r\n .toDOM(); });\r\n if (this.options.showTimePicker || !this.options.oneClickDateSelection) {\r\n builder.addChild('button', function (b) { return _this.submitButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-apply\")\r\n .text(i18n.getText('ButtonApply'))\r\n .on('click', function () {\r\n _this.apply(_this.getDateTime());\r\n return false;\r\n })\r\n .toDOM(); });\r\n }\r\n builder.addChild('button', function (b) { return _this.submitButton = b\r\n .addClass(_this.cssPrefix + \"-button \" + _this.cssPrefix + \"-button-cancel\")\r\n .text(i18n.getText('ButtonCancel'))\r\n .on('click', function () {\r\n _this.cancel();\r\n return false;\r\n })\r\n .toDOM(); });\r\n };\r\n DefaultDateTimePicker.prototype.createCalendar = function (options) {\r\n this.calendarSlot =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-cal\")\r\n .toDOM();\r\n return new DefaultCalendar(this.calendarSlot, options);\r\n };\r\n DefaultDateTimePicker.prototype.createTimePicker = function (options) {\r\n this.timePickerSlot =\r\n domel('div', this.slot)\r\n .addClass(this.cssPrefix + \"-tp\")\r\n .toDOM();\r\n return new DefaultTimePicker(this.timePickerSlot, options);\r\n };\r\n DefaultDateTimePicker.prototype.show = function (anchor) {\r\n var _this = this;\r\n if (this.options.showDateTimeInput) {\r\n if (this.options.beforeShow) {\r\n this.options.beforeShow();\r\n }\r\n var anchorPos = getElementAbsolutePos(anchor || document.body);\r\n var parentPos = getElementAbsolutePos(anchor ? anchor.parentElement || anchor : document.body);\r\n this.slot.style.top = parentPos.y + 'px';\r\n this.slot.style.left = anchorPos.x + 'px';\r\n }\r\n else {\r\n _super.prototype.show.call(this, anchor);\r\n this.slot.focus();\r\n }\r\n setTimeout(function () {\r\n document.addEventListener('mousedown', _this.globalMouseDownHandler, true);\r\n }, 1);\r\n };\r\n return DefaultDateTimePicker;\r\n}(DateTimePicker));\r\nexport { DefaultDateTimePicker };\r\n//# sourceMappingURL=default_date_time_picker.js.map","export var DialogFooterAlignment;\r\n(function (DialogFooterAlignment) {\r\n DialogFooterAlignment[DialogFooterAlignment[\"Left\"] = 1] = \"Left\";\r\n DialogFooterAlignment[DialogFooterAlignment[\"Center\"] = 2] = \"Center\";\r\n DialogFooterAlignment[DialogFooterAlignment[\"Right\"] = 3] = \"Right\";\r\n})(DialogFooterAlignment || (DialogFooterAlignment = {}));\r\n//# sourceMappingURL=dialog_service.js.map","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { i18n, utils, liquid } from '@easydata/core';\r\nimport { DialogFooterAlignment } from './dialog_service';\r\nimport { domel } from '../utils/dom_elem_builder';\r\nvar cssPrefix = \"kdlg\";\r\nvar DefaultDialogService = /** @class */ (function () {\r\n function DefaultDialogService() {\r\n }\r\n DefaultDialogService.prototype.openConfirm = function (title, content, callback) {\r\n var _this = this;\r\n var template = \"<div id=\\\"\" + cssPrefix + \"-dialog-confirm\\\">\" + content + \"</div>\";\r\n var options = {\r\n title: title,\r\n closable: false,\r\n submitable: true,\r\n cancelable: true,\r\n body: template\r\n };\r\n if (callback) {\r\n options.onSubmit = function () {\r\n callback(true);\r\n };\r\n options.onCancel = function () {\r\n callback(false);\r\n };\r\n this.open(options);\r\n return;\r\n }\r\n return new Promise(function (resolve) {\r\n options.onSubmit = function () {\r\n resolve(true);\r\n };\r\n options.onCancel = function () {\r\n resolve(false);\r\n };\r\n _this.open(options);\r\n });\r\n };\r\n DefaultDialogService.prototype.openPrompt = function (title, content, defVal, callback) {\r\n var _this = this;\r\n var template = \"<div id=\\\"\" + cssPrefix + \"-dialog-form\\\" class=\\\"kfrm-form\\\">\\n <div class=\\\"kfrm-fields label-above\\\">\\n <label for=\\\"\" + cssPrefix + \"-dialog-form-input\\\" id=\\\"\" + cssPrefix + \"-dialog-form-content\\\">\" + content + \"</label>\\n <input type=\\\"text\\\" name=\\\"\" + cssPrefix + \"-dialog-form-input\\\" id=\\\"\" + cssPrefix + \"-dialog-form-input\\\" />\\n </div>\\n </div>\";\r\n var options = {\r\n title: title,\r\n submitable: true,\r\n closable: true,\r\n cancelable: true,\r\n submitOnEnter: true,\r\n body: template,\r\n arrangeParents: false,\r\n beforeOpen: function () {\r\n var input = document.getElementById(cssPrefix + \"-dialog-form-input\");\r\n if (defVal) {\r\n input.value = defVal;\r\n }\r\n input.focus();\r\n }\r\n };\r\n var processInput = function (callback) {\r\n var input = document.getElementById(cssPrefix + \"-dialog-form-input\");\r\n var result = input.value;\r\n if (result && result.replace(/\\s/g, '').length > 0) {\r\n callback(result);\r\n return true;\r\n }\r\n input.classList.add('eqjs-invalid');\r\n return false;\r\n };\r\n if (callback) {\r\n options.onSubmit = function () {\r\n return processInput(callback);\r\n };\r\n options.onCancel = function () {\r\n callback(\"\");\r\n };\r\n this.open(options);\r\n return;\r\n }\r\n return new Promise(function (resolve) {\r\n options.onSubmit = function () {\r\n return processInput(resolve);\r\n };\r\n options.onCancel = function () {\r\n resolve(\"\");\r\n };\r\n _this.open(options);\r\n });\r\n };\r\n DefaultDialogService.prototype.open = function (options, data) {\r\n var _this = this;\r\n var dialog = new DefaultDialog(options, data);\r\n var onDestroy = options.onDestroy;\r\n options.onDestroy = function (dlg) {\r\n _this.untrack(dlg);\r\n onDestroy && onDestroy(dlg);\r\n };\r\n dialog.open();\r\n this.track(dialog);\r\n return dialog;\r\n };\r\n DefaultDialogService.prototype.createSet = function (options) {\r\n return new DefaultDialogSet(options, this);\r\n };\r\n DefaultDialogService.prototype.untrack = function (dlg) {\r\n var index = DefaultDialogService.openDialogs.indexOf(dlg);\r\n if (index >= 0) {\r\n DefaultDialogService.openDialogs.splice(index, 1);\r\n }\r\n };\r\n DefaultDialogService.prototype.track = function (dlg) {\r\n DefaultDialogService.openDialogs.push(dlg);\r\n };\r\n DefaultDialogService.prototype.openProgress = function (options) {\r\n var _this = this;\r\n var dialog = new DefaultProgressDialog(options);\r\n var onDestroy = options.onDestroy;\r\n options.onDestroy = function (dlg) {\r\n _this.untrack(dlg);\r\n onDestroy && onDestroy(dlg);\r\n };\r\n dialog.open();\r\n this.track(dialog);\r\n return dialog;\r\n };\r\n DefaultDialogService.prototype.getAllDialogs = function () {\r\n return Array.from(DefaultDialogService.openDialogs);\r\n };\r\n DefaultDialogService.prototype.closeAllDialogs = function () {\r\n for (var _i = 0, _a = Array.from(DefaultDialogService.openDialogs); _i < _a.length; _i++) {\r\n var dialog = _a[_i];\r\n dialog.close();\r\n }\r\n };\r\n DefaultDialogService.openDialogs = [];\r\n return DefaultDialogService;\r\n}());\r\nexport { DefaultDialogService };\r\nvar DefaultDialog = /** @class */ (function () {\r\n function DefaultDialog(options, data) {\r\n var _this = this;\r\n this.options = options;\r\n this.submitHandler = function (token) {\r\n if (_this.options.onSubmit && _this.options.onSubmit(_this, token) === false) {\r\n return false;\r\n }\r\n _this.destroy();\r\n return true;\r\n };\r\n this.cancelHandler = function () {\r\n if (_this.options.onCancel) {\r\n _this.options.onCancel(_this);\r\n }\r\n _this.destroy();\r\n };\r\n this.keydownHandler = function (ev) {\r\n if (ev.keyCode == 13 && _this.isActiveDialog()) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n if (_this.submitHandler()) {\r\n window.removeEventListener('keydown', _this.keydownHandler, false);\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n this.dialogId = utils.generateId('dlg');\r\n this.data = data;\r\n this.slot =\r\n domel('div', document.body)\r\n .attr('tab-index', '-1')\r\n .data('dialog-id', this.dialogId)\r\n .addClass(cssPrefix + \"-modal\", 'is-active')\r\n .focus()\r\n .addChild('div', function (b) { return b\r\n .addClass('kdlg-modal-background'); })\r\n .addChild('div', function (b) { return _this.windowElement = b\r\n .addClass(cssPrefix + \"-modal-window\")\r\n .addChild('header', function (b) {\r\n _this.headerElement = b\r\n .addClass(cssPrefix + \"-header\")\r\n .addChild('p', function (b) { return b\r\n .addClass(cssPrefix + \"-header-title\")\r\n .addText(options.title); })\r\n .toDOM();\r\n if (options.closable !== false)\r\n b.addChild('button', function (b) { return b\r\n .addClass(cssPrefix + \"-modal-close\")\r\n .on('click', function () {\r\n _this.cancelHandler();\r\n })\r\n .focus(); });\r\n })\r\n .addChild('div', function (b) {\r\n b.addClass(cssPrefix + \"-alert-container\");\r\n _this.alertElement = b.toDOM();\r\n })\r\n .addChild('section', function (b) {\r\n _this.bodyElement = b\r\n .addClass(cssPrefix + \"-body\")\r\n .toDOM();\r\n if (typeof options.body === 'string') {\r\n var html = liquid.renderLiquidTemplate(options.body, data);\r\n b.addHtml(html);\r\n }\r\n else {\r\n b.addChildElement(options.body);\r\n }\r\n })\r\n .addChild('footer', function (b) {\r\n var alignClass = null;\r\n if (options.footerAlignment && options.footerAlignment == DialogFooterAlignment.Center) {\r\n alignClass = 'align-center';\r\n }\r\n else {\r\n alignClass = 'align-right';\r\n }\r\n _this.footerElement = b\r\n .addClass(cssPrefix + \"-footer\")\r\n .toDOM();\r\n b.addClass(alignClass);\r\n if (options.submitable === false)\r\n return;\r\n b.addChild('button', function (bb) {\r\n bb.id(_this.dialogId + '-btn-submit')\r\n .addClass('kfrm-button', 'is-info')\r\n .addText(options.submitButtonText || i18n.getText('ButtonOK'));\r\n if (options.recaptchaSiteKey) {\r\n bb.data('sitekey', options.recaptchaSiteKey);\r\n bb.addClass('g-recaptcha');\r\n bb.on('click', function (e) {\r\n if (grecaptcha) {\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute(options.recaptchaSiteKey, { action: 'submit' })\r\n .then(function (token) {\r\n _this.submitHandler(token);\r\n });\r\n });\r\n }\r\n else {\r\n _this.submitHandler();\r\n }\r\n });\r\n }\r\n else {\r\n bb.on('click', function (e) {\r\n _this.submitHandler();\r\n });\r\n }\r\n bb.focus();\r\n });\r\n if (options.cancelable !== false)\r\n b.addChild('button', function (bb) { return bb\r\n .id(_this.dialogId + '-btn-cancel')\r\n .addClass('kfrm-button')\r\n .addText(options.cancelButtonText || i18n.getText('ButtonCancel'))\r\n .on('click', function (e) {\r\n _this.cancelHandler();\r\n }); });\r\n })\r\n .toDOM(); })\r\n .toDOM();\r\n }\r\n DefaultDialog.prototype.getData = function () {\r\n return this.data;\r\n };\r\n DefaultDialog.prototype.getRootElement = function () {\r\n return this.slot;\r\n };\r\n DefaultDialog.prototype.getSubmitButtonElement = function () {\r\n return document.getElementById(this.dialogId + '-btn-submit');\r\n };\r\n DefaultDialog.prototype.getCancelButtonElement = function () {\r\n return document.getElementById(this.dialogId + '-btn-cancel');\r\n };\r\n DefaultDialog.prototype.open = function () {\r\n var _this = this;\r\n if (this.options.beforeOpen) {\r\n this.options.beforeOpen(this);\r\n }\r\n domel(this.slot).show();\r\n if (this.options.arrangeParents) {\r\n this.arrangeParents(true);\r\n }\r\n var windowDiv = this.slot\r\n .querySelector(\".\" + cssPrefix + \"-modal-window\");\r\n if (this.options.height) {\r\n windowDiv.style.height = typeof this.options.height === 'string'\r\n ? this.options.height\r\n : this.options.height + \"px\";\r\n }\r\n if (this.options.width) {\r\n windowDiv.style.width = typeof this.options.width === 'string'\r\n ? this.options.width\r\n : this.options.width + \"px\";\r\n }\r\n if (this.options.submitOnEnter) {\r\n window.addEventListener('keydown', this.keydownHandler, false);\r\n }\r\n //clear alert on change in any input element \r\n this.slot.querySelectorAll('input')\r\n .forEach(function (element) {\r\n return element.addEventListener('input', function () {\r\n _this.clearAlert();\r\n if (_this.options.onInput) {\r\n _this.options.onInput(_this);\r\n }\r\n });\r\n });\r\n if (this.options.onShow) {\r\n this.options.onShow(this);\r\n }\r\n };\r\n DefaultDialog.prototype.submit = function () {\r\n this.submitHandler();\r\n };\r\n DefaultDialog.prototype.cancel = function () {\r\n this.cancelHandler();\r\n };\r\n DefaultDialog.prototype.close = function () {\r\n this.destroy();\r\n };\r\n DefaultDialog.prototype.disableButtons = function () {\r\n var buttons = this.slot.querySelectorAll('button');\r\n buttons.forEach(function (button) { return button.disabled = true; });\r\n };\r\n DefaultDialog.prototype.enableButtons = function () {\r\n var buttons = this.slot.querySelectorAll('button');\r\n buttons.forEach(function (button) { return button.disabled = false; });\r\n };\r\n DefaultDialog.prototype.showAlert = function (text, reason, replace) {\r\n var alert = domel('div')\r\n .addClass(cssPrefix + \"-alert \" + (reason || ''))\r\n .addChild('span', function (b) { return b\r\n .addClass(cssPrefix + \"-alert-closebtn\")\r\n .text('×')\r\n .on('click', function (ev) {\r\n var alert = ev.target.parentElement;\r\n alert.parentElement.removeChild(alert);\r\n }); })\r\n .addText(text)\r\n .toDOM();\r\n if (replace === true) {\r\n this.clearAlert();\r\n }\r\n this.alertElement.appendChild(alert);\r\n };\r\n DefaultDialog.prototype.clearAlert = function () {\r\n this.alertElement.innerHTML = '';\r\n };\r\n DefaultDialog.prototype.destroy = function () {\r\n var elem = document.querySelectorAll(\"[data-dialog-id=\\\"\" + this.dialogId + \"\\\"]\");\r\n if (elem.length <= 0)\r\n return;\r\n if (this.options.arrangeParents) {\r\n this.arrangeParents(false);\r\n }\r\n document.body.removeChild(this.slot);\r\n if (this.options.submitOnEnter) {\r\n window.removeEventListener('keydown', this.keydownHandler, false);\r\n }\r\n if (this.options.onDestroy) {\r\n this.options.onDestroy(this);\r\n }\r\n };\r\n DefaultDialog.prototype.isActiveDialog = function () {\r\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal');\r\n return windowDivs[windowDivs.length - 1] === this.slot;\r\n };\r\n DefaultDialog.prototype.arrangeParents = function (turnOn) {\r\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal-window');\r\n for (var i = 0; i < windowDivs.length - 1; i++) {\r\n if (turnOn) {\r\n var offset = i == 0 ? 20 : i * 40 + 20;\r\n domel(windowDivs[i])\r\n .setStyle('margin-top', offset + \"px\")\r\n .setStyle('margin-left', offset + \"px\");\r\n }\r\n else {\r\n domel(windowDivs[i])\r\n .removeStyle('margin-top')\r\n .removeStyle('margin-left');\r\n }\r\n }\r\n };\r\n return DefaultDialog;\r\n}());\r\nexport { DefaultDialog };\r\nvar DefaultProgressDialog = /** @class */ (function (_super) {\r\n __extends(DefaultProgressDialog, _super);\r\n function DefaultProgressDialog(options, data) {\r\n var _this = this;\r\n var contentElement;\r\n var progressElement;\r\n var body = domel('div')\r\n .addChild('div', function (b) { return contentElement = b\r\n .text(options.content || '')\r\n .toDOM(); })\r\n .addChild('div', function (b) {\r\n b\r\n .addClass(cssPrefix + \"-progress-line\")\r\n .addChild('div', function (b) {\r\n progressElement = b\r\n .addClass('fill')\r\n .toDOM();\r\n if (options.determinated) {\r\n b.setStyle('width', '0%');\r\n }\r\n else {\r\n b.addClass('indeterminate');\r\n }\r\n });\r\n })\r\n .toDOM();\r\n _this = _super.call(this, {\r\n title: options.title,\r\n body: body,\r\n beforeOpen: options.beforeOpen,\r\n onSubmit: options.onSubmit,\r\n width: options.width,\r\n height: options.height,\r\n submitable: false,\r\n cancelable: false,\r\n closable: false,\r\n onDestroy: options.onDestroy\r\n }, data) || this;\r\n _this.contentElement = contentElement;\r\n _this.progressElement = progressElement;\r\n return _this;\r\n }\r\n DefaultProgressDialog.prototype.updateContent = function (content) {\r\n this.contentElement.innerText = content;\r\n };\r\n DefaultProgressDialog.prototype.updateProgress = function (progress) {\r\n var _this = this;\r\n progress = this.in01(progress);\r\n this.progressElement.style.width = progress * 100 + \"%\";\r\n if (progress === 1) {\r\n // postpone for 0.5s for smooth closing\r\n setTimeout(function () {\r\n _this.submit();\r\n }, 500);\r\n }\r\n };\r\n DefaultProgressDialog.prototype.in01 = function (num) {\r\n if (num > 1)\r\n return 1;\r\n if (num < 0)\r\n return 0;\r\n return num;\r\n };\r\n return DefaultProgressDialog;\r\n}(DefaultDialog));\r\nexport { DefaultProgressDialog };\r\nvar DefaultDialogSet = /** @class */ (function () {\r\n function DefaultDialogSet(options, dialogService) {\r\n this.options = options;\r\n this.dialogService = dialogService;\r\n this.currentDialog = null;\r\n this.currentIndex = 0;\r\n this.options = options;\r\n this.dialogService = dialogService;\r\n }\r\n DefaultDialogSet.prototype.getCurrent = function () {\r\n return this.currentDialog;\r\n };\r\n DefaultDialogSet.prototype.openNext = function (data) {\r\n return this.open(this.currentIndex + 1, data);\r\n };\r\n DefaultDialogSet.prototype.openPrev = function (data) {\r\n return this.open(this.currentIndex - 1, data);\r\n };\r\n DefaultDialogSet.prototype.open = function (page, data) {\r\n if (page < 0) {\r\n this.currentIndex = 0;\r\n }\r\n else if (page >= this.options.length) {\r\n this.currentIndex = this.options.length - 1;\r\n }\r\n else {\r\n this.currentIndex = page;\r\n }\r\n if (this.currentDialog) {\r\n try {\r\n this.currentDialog.close();\r\n }\r\n catch (e) { }\r\n }\r\n var dlgOptions = this.options[this.currentIndex];\r\n this.currentDialog = this.dialogService.open(dlgOptions, data);\r\n return this.currentDialog;\r\n };\r\n DefaultDialogSet.prototype.close = function () {\r\n if (this.currentDialog) {\r\n this.currentDialog.close();\r\n this.currentDialog = null;\r\n }\r\n };\r\n return DefaultDialogSet;\r\n}());\r\nexport { DefaultDialogSet };\r\n//# sourceMappingURL=default_dialog_service.js.map","import { i18n } from '@easydata/core';\r\nfunction addEasyDataUITexts() {\r\n i18n.updateDefaultTexts({\r\n GridPageInfo: '{FirstPageRecordNum} - {LastPageRecordNum} of {Total} records',\r\n GridItemsPerPage: 'items per page',\r\n ButtonOK: \"OK\",\r\n ButtonCancel: \"Cancel\",\r\n ButtonApply: 'Apply',\r\n ButtonNow: 'Now',\r\n LblTotal: 'Total'\r\n });\r\n}\r\naddEasyDataUITexts();\r\n//# sourceMappingURL=text_resources.js.map","// grid\r\nexport * from './grid/easy_grid';\r\nexport * from './grid/easy_grid_options';\r\nexport * from './grid/easy_grid_columns';\r\nexport * from './grid/easy_grid_cell_renderer';\r\n//datetimepicker\r\nexport * from './datetimepicker/calendar';\r\nexport * from './datetimepicker/date_time_picker';\r\nexport * from './datetimepicker/default_calendar';\r\nexport * from './datetimepicker/default_date_time_picker';\r\nexport * from './datetimepicker/default_time_picker';\r\nexport * from './datetimepicker/time_picker';\r\n// utils\r\nexport * from './utils/browser_utils';\r\nexport * from './utils/dom_elem_builder';\r\nexport * from './utils/drag_manager';\r\nexport * from './utils/mask';\r\nexport * from './utils/ui-utils';\r\n//dialogs\r\nexport * from './dialogs/default_dialog_service';\r\nexport * from './dialogs/dialog_service';\r\nimport './i18n/text_resources';\r\nimport { DefaultDialogService } from './dialogs/default_dialog_service';\r\n// export dialogs to use outside of context as global\r\nvar dialogs = new DefaultDialogService();\r\nexport { dialogs };\r\n//# sourceMappingURL=public_api.js.map","import { i18n } from '@easydata/core';\r\nimport { DataType } from '@easydata/core';\r\n\r\nconst internalDateFormat = 'yyyy-MM-dd';\r\nconst internalTimeFormat = 'HH:mm';\r\n\r\nexport const getInternalDateTimeFormat = (dtype: DataType): string => {\r\n if (dtype == DataType.Date)\r\n return internalDateFormat;\r\n\r\n if (dtype == DataType.Time)\r\n return internalTimeFormat;\r\n\r\n return `${internalDateFormat}T${internalTimeFormat}`;\r\n}\r\n\r\nexport const getEditDateTimeFormat = (dtype: DataType): string => {\r\n const settings = i18n.getLocaleSettings();\r\n if (dtype == DataType.Date)\r\n return settings.editDateFormat;\r\n\r\n if (dtype == DataType.Time)\r\n return settings.editTimeFormat;\r\n\r\n return `${settings.editDateFormat} ${settings.editTimeFormat}`;\r\n}\r\n\r\nexport const setLocation = (path: string) => {\r\n const state = window.history.state;\r\n history.pushState(state, document.title, path)\r\n window.dispatchEvent(new Event('ed_set_location'));\r\n}","import { MetaEntityAttr } from '@easydata/core';\r\n\r\nexport interface ValidationResult {\r\n successed: boolean;\r\n messages?: string[];\r\n}\r\n\r\nexport abstract class Validator {\r\n\r\n public name: string;\r\n\r\n public abstract validate(attr: MetaEntityAttr, value: any): ValidationResult;\r\n \r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from './validator';\r\n\r\nimport { getEditDateTimeFormat } from '../utils/utils';\r\n\r\nexport class DateTimeValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'DateTime';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n\r\n if (!dataUtils.IsDefinedAndNotNull(value) || value == '')\r\n return { successed: true };\r\n\r\n if (dataUtils.getDateDataTypes().indexOf(attr.dataType) >= 0) {\r\n try {\r\n const editFormat = getEditDateTimeFormat(attr.dataType);\r\n const newDate = dataUtils.strToDateTime(value, editFormat);\r\n }\r\n catch {\r\n return {\r\n successed: false,\r\n messages: [i18n.getText('DateTimeError')]\r\n }\r\n }\r\n }\r\n\r\n \r\n return { successed: true };\r\n }\r\n}","import { \r\n DataType, utils as dataUtils, \r\n MetaEntityAttr, \r\n} from '@easydata/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { DataContext } from '../main/data_context';\r\n\r\nimport { ValidationResult, Validator } from '../validators/validator';\r\n\r\nimport * as crudUtils from '../utils/utils';\r\nimport { DateTimeValidator } from '../validators/datetime_validator';\r\n\r\nexport class EntityEditForm {\r\n private errorsDiv: HTMLElement;\r\n\r\n private html: HTMLElement;\r\n\r\n constructor(private context: DataContext) { \r\n }\r\n\r\n private validators: Validator[] = [ new DateTimeValidator() ];\r\n\r\n public getHtml() {\r\n return this.html;\r\n }\r\n\r\n private setHtmlInt(html: HTMLElement) {\r\n this.html = html;\r\n this.errorsDiv = this.html.querySelector('.errors-block');\r\n }\r\n\r\n public validate(): boolean {\r\n this.clearErrors();\r\n\r\n const inputs = Array.from(this.html.querySelectorAll<HTMLInputElement | HTMLSelectElement>('input, select'));\r\n let isValid = true;\r\n for(const input of inputs) {\r\n const attr = this.context.getMetaData().getAttributeById(input.name);\r\n\r\n if (input.type === 'checkbox')\r\n continue;\r\n\r\n const result = this.validateValue(attr, input.value);\r\n if (!result.successed) {\r\n if (isValid) {\r\n domel(this.errorsDiv)\r\n .addChild('ul');\r\n }\r\n\r\n isValid = false;\r\n\r\n for(const message of result.messages) {\r\n this.errorsDiv.firstElementChild.innerHTML += `<li>${attr.caption}: ${message}</li>`;\r\n }\r\n }\r\n \r\n this.markInputValid(input, result.successed);\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n public getData(): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n const filePromises: Promise<any>[] = [];\r\n const inputs = Array.from(this.html\r\n .querySelectorAll<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>('input, select, textarea'));\r\n\r\n let obj = {};\r\n for (const input of inputs) {\r\n const property = input.name.substring(input.name.lastIndexOf('.') + 1);\r\n const attr = this.context.getMetaData().getAttributeById(input.name);\r\n\r\n if (input.type === 'checkbox') {\r\n obj[property] = (input as HTMLInputElement).checked;\r\n }\r\n else if (input.type === 'file') {\r\n filePromises.push(this.fileToBase64((input as HTMLInputElement).files[0])\r\n .then(content => obj[property] = content));\r\n }\r\n else {\r\n obj[property] = this.mapValue(attr.dataType, input.value);\r\n }\r\n }\r\n\r\n Promise.all(filePromises)\r\n .then(() => resolve(obj))\r\n .catch((e) => reject(e));\r\n });\r\n }\r\n\r\n private fileToBase64(file: File): Promise<string> {\r\n return new Promise<string>((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const result = reader.result.toString();\r\n resolve(result.substring(result.indexOf(',') + 1));\r\n } \r\n reader.onerror = error => reject(error);\r\n })\r\n }\r\n\r\n public useValidator(...validator: Validator[]) {\r\n this.useValidators(validator);\r\n }\r\n\r\n public useValidators(validators: Validator[]) {\r\n this.validators = this.validators.concat(validators);\r\n }\r\n\r\n private mapValue(type: DataType, value: string) {\r\n if (dataUtils.getDateDataTypes().indexOf(type) >= 0) {\r\n if (type !== DataType.Time && value && value.length) {\r\n const editFormat = crudUtils.getEditDateTimeFormat(type);\r\n const internalFormat = crudUtils.getInternalDateTimeFormat(type);\r\n\r\n const date = dataUtils.strToDateTime(value, editFormat);\r\n return dataUtils.dateTimeToStr(date, internalFormat)\r\n } \r\n\r\n return value && value.length ? value : null;\r\n }\r\n\r\n if (dataUtils.isIntType(type))\r\n return parseInt(value);\r\n\r\n if (dataUtils.isNumericType(type))\r\n return parseFloat(value);\r\n\r\n return value;\r\n }\r\n\r\n private clearErrors() {\r\n this.errorsDiv.innerHTML = '';\r\n\r\n this.html.querySelectorAll('input, select').forEach(el => {\r\n el.classList.remove('is-valid');\r\n el.classList.remove('is-invalid');\r\n });\r\n }\r\n\r\n private markInputValid(input: HTMLElement, valid: boolean) {\r\n input.classList.add(valid ? 'is-valid' : 'is-invalid');\r\n }\r\n\r\n private validateValue(attr: MetaEntityAttr, value: any): ValidationResult {\r\n const result = { successed: true, messages: []}\r\n for(const validator of this.validators) {\r\n const res = validator.validate(attr, value);\r\n if (!res.successed) {\r\n result.successed = false;\r\n result.messages = result.messages.concat(res.messages);\r\n }\r\n }\r\n\r\n return result;\r\n } \r\n}\r\n","import { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { \r\n browserUtils, CellRendererType,\r\n domel, EasyGrid, \r\n GridCellRenderer, GridColumn, DFMT_REGEX\r\n} from '@easydata/ui';\r\nimport { DataFilter } from '../filter/data_filter';\r\n\r\nexport interface TextFilterWidgetOptions {\r\n focus?: boolean,\r\n instantMode?: boolean;\r\n instantTimeout?: number\r\n}\r\n\r\nexport class TextFilterWidget {\r\n private options = {\r\n focus: false,\r\n instantMode: false,\r\n instantTimeout: 1000\r\n }\r\n\r\n constructor(\r\n private slot: HTMLElement, \r\n private grid: EasyGrid, \r\n private filter: DataFilter,\r\n options?: TextFilterWidgetOptions) {\r\n\r\n this.options = dataUtils.assignDeep(this.options, options || {});\r\n\r\n const stringDefRenderer = this.grid.cellRendererStore\r\n .getDefaultRendererByType(CellRendererType.STRING);\r\n this.grid.cellRendererStore\r\n .setDefaultRenderer(CellRendererType.STRING, (value, column, cellElement, rowElement) => \r\n this.highlightCellRenderer(stringDefRenderer, value, column, cellElement, rowElement));\r\n\r\n const numDefRenderer = this.grid.cellRendererStore\r\n .getDefaultRendererByType(CellRendererType.NUMBER);\r\n this.grid.cellRendererStore\r\n .setDefaultRenderer(CellRendererType.NUMBER, (value, column, cellElement, rowElement) => \r\n this.highlightCellRenderer(numDefRenderer, value, column, cellElement, rowElement));\r\n\r\n this.render();\r\n }\r\n\r\n private filterInput: HTMLInputElement;\r\n\r\n private render() { \r\n const horizClass = browserUtils.IsIE() \r\n ? 'kfrm-fields-ie is-horizontal' \r\n : 'kfrm-fields is-horizontal';\r\n\r\n const isEdgeOrIE = browserUtils.IsIE() || browserUtils.IsEdge();\r\n \r\n domel(this.slot)\r\n .addClass(horizClass)\r\n .addChild('div', b => {\r\n b\r\n .addClass('control')\r\n .addChild('input', b => { \r\n this.filterInput = b.toDOM();\r\n b \r\n .attr('placeholder', i18n.getText('SearchInputPlaceholder'))\r\n .type('text')\r\n\r\n b.on('keydown', this.inputKeydownHandler.bind(this))\r\n\r\n if (this.options.instantMode) {\r\n b.on('keyup', this.inputKeyupHandler.bind(this));\r\n }\r\n });\r\n\r\n if (!isEdgeOrIE) {\r\n b \r\n .addClass('has-icons-right')\r\n .addChild('span', b => {\r\n b\r\n .addClass('icon')\r\n .addClass('is-right')\r\n .addClass('is-clickable')\r\n .html('&#x1F5D9;')\r\n .on('click', this.clearButtonClickHander.bind(this));\r\n });\r\n }\r\n });\r\n\r\n if (!this.options.instantMode) {\r\n domel(this.slot)\r\n .addChild('button', b => b\r\n .addClass('kfrm-button')\r\n .addText(i18n.getText('SearchBtn'))\r\n .on('click', this.searchButtonClickHandler.bind(this))\r\n );\r\n }\r\n\r\n if (this.options.focus) {\r\n this.filterInput.focus();\r\n }\r\n }\r\n\r\n private applyFilterTimeout: any;\r\n\r\n private inputKeydownHandler(ev: Event) {\r\n if ((ev as KeyboardEvent).keyCode == 13) {\r\n this.applyFilter(true);\r\n }\r\n }\r\n\r\n private inputKeyupHandler() {\r\n if (this.applyFilterTimeout) {\r\n clearTimeout(this.applyFilterTimeout);\r\n }\r\n\r\n this.applyFilterTimeout = setTimeout(() => {\r\n this.applyFilter(true);\r\n }, this.options.instantTimeout);\r\n }\r\n\r\n private clearButtonClickHander() {\r\n this.filterInput.value = '';\r\n this.filterInput.focus();\r\n\r\n this.applyFilter(true);\r\n }\r\n\r\n private searchButtonClickHandler() {\r\n this.applyFilter(true);\r\n }\r\n\r\n public applyFilter(checkChange : boolean) : boolean {\r\n if (this.applyFilterTimeout) {\r\n clearTimeout(this.applyFilterTimeout);\r\n }\r\n\r\n const filterValue = this.filter.getValue();\r\n if (!checkChange || filterValue != this.filterInput.value) {\r\n this.filter.apply(this.filterInput.value)\r\n .then(data => {\r\n this.grid.setData(data);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private highlightCellRenderer(defaultRenderer: GridCellRenderer, value: any, column: GridColumn, cellElement: HTMLElement, rowElement: HTMLElement) { \r\n if (dataUtils.isNumericType(column.type) \r\n || dataUtils.getStringDataTypes().indexOf(column.type) >= 0) \r\n {\r\n if (value) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n value = column.dataColumn.displayFormat.replace(DFMT_REGEX, (_, $1) => {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n value = value.toLocaleString();\r\n }\r\n\r\n \r\n const result = this.highlightText(value.toString());\r\n if (result instanceof HTMLElement) {\r\n cellElement.title = value;\r\n cellElement.appendChild(result);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n defaultRenderer(value, column, cellElement, rowElement);\r\n }\r\n\r\n private highlightText(content: string): HTMLElement | string{\r\n const normalizedContent = content.toLowerCase();\r\n const filterValue = this.filter.getValue().toString();\r\n if (filterValue && filterValue.length > 0 && content && content.length > 0) {\r\n \r\n const indexInMas = [];\r\n const words = filterValue.split('||').map(w => w.trim().toLowerCase());\r\n for(let i = 0; i < words.length; i++) {\r\n let pos = 0;\r\n const lowerWord = words[i];\r\n if (!lowerWord.length)\r\n continue;\r\n if (lowerWord === normalizedContent) {\r\n const highlightSpan = document.createElement('span');\r\n highlightSpan.style.backgroundColor = 'yellow';\r\n highlightSpan.innerText = content;\r\n \r\n return highlightSpan;\r\n }\r\n while (pos < content.length - 1) {\r\n const index = normalizedContent.indexOf(lowerWord, pos);\r\n if (index >= 0) {\r\n indexInMas.push({index: index, length: words[i].length});\r\n pos = index + lowerWord.length;\r\n } else {\r\n pos++;\r\n }\r\n }\r\n }\r\n \r\n if (indexInMas.length > 0) {\r\n \r\n //sort array item by index\r\n indexInMas.sort((item1, item2) => {\r\n \r\n if (item1.index > item2.index) {\r\n return 1;\r\n } \r\n else if (item1.index == item2.index2) {\r\n return 0;\r\n } \r\n else {\r\n return -1;\r\n }\r\n \r\n });\r\n \r\n //remove intersecting gaps\r\n for(let i = 0; i < indexInMas.length - 1;) {\r\n const delta = indexInMas[i + 1].index - (indexInMas[i].index + indexInMas[i].length);\r\n if (delta < 0) {\r\n const addDelta = indexInMas[i + 1].length + delta;\r\n if (addDelta > 0) {\r\n indexInMas[i].length += addDelta;\r\n }\r\n indexInMas.splice(i + 1, 1);\r\n } else {\r\n i++;\r\n }\r\n }\r\n \r\n const div = document.createElement('div');\r\n for (let i = 0; i < indexInMas.length; i++) {\r\n if (i === 0) {\r\n const text = document.createTextNode(content.substring(0, indexInMas[i].index));\r\n div.appendChild(text);\r\n }\r\n \r\n const highlightSpan = document.createElement('span');\r\n highlightSpan.style.backgroundColor = 'yellow';\r\n highlightSpan.innerText = content.substring(indexInMas[i].index,\r\n indexInMas[i].index + indexInMas[i].length)\r\n \r\n div.appendChild(highlightSpan);\r\n\r\n const text = (i < indexInMas.length - 1) \r\n ? document.createTextNode(content.substring(indexInMas[i].index\r\n + indexInMas[i].length, indexInMas[i + 1].index))\r\n : document.createTextNode(content.substring(indexInMas[i].index\r\n + indexInMas[i].length));\r\n\r\n div.appendChild(text);\r\n }\r\n \r\n return div;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n}","import { \r\n DataRow, DataType, EasyDataTable, \r\n EditorTag, EntityAttrKind, i18n, \r\n MetaEntityAttr, utils as dataUtils,\r\n ValueEditor\r\n} from '@easydata/core';\r\n\r\nimport { \r\n browserUtils, DateTimePickerOptions, \r\n DefaultDateTimePicker, DefaultDialogService, \r\n domel, DomElementBuilder, EasyGrid \r\n} from '@easydata/ui';\r\n\r\nimport * as crudUtils from '../utils/utils';\r\n\r\nimport { DataContext } from '../main/data_context';\r\nimport { EntityEditForm } from './entity_edit_form';\r\nimport { TextFilterWidget } from '../widgets/text_filter_widget';\r\n\r\nconst isIE = browserUtils.IsIE();\r\n\r\nexport type FormBuildParams = {\r\n values?: DataRow,\r\n isEditForm?: boolean;\r\n};\r\n\r\nexport class EntityEditFormBuilder {\r\n private form: EntityEditForm;\r\n\r\n constructor(private context: DataContext, private params?: FormBuildParams) {\r\n this.params = params || {};\r\n this.reset();\r\n }\r\n\r\n public reset() {\r\n this.form = new EntityEditForm(this.context);\r\n }\r\n\r\n private setupLookupField(parent: HTMLElement, attr: MetaEntityAttr, readOnly: boolean, value: any): void {\r\n const lookupEntity = this.context.getMetaData().getRootEntity()\r\n .subEntities.filter(ent => ent.id == attr.lookupEntity)[0];\r\n const dataAttr = this.context.getMetaData().getAttributeById(attr.dataAttr);\r\n\r\n if (!dataAttr) return;\r\n\r\n readOnly = readOnly || !dataAttr.isEditable;\r\n\r\n value = this.params.values\r\n ? this.params.values.getValue(dataAttr.id)\r\n : undefined;\r\n\r\n const horizClass = isIE\r\n ? 'kfrm-fields-ie is-horizontal'\r\n : 'kfrm-fields is-horizontal';\r\n\r\n let inputEl: HTMLInputElement;\r\n domel(parent)\r\n .addChild('div', b => {\r\n b\r\n .addClass(horizClass)\r\n .addChild('input', b => {\r\n inputEl = b.toDOM();\r\n b.attr('readonly', '');\r\n\r\n b.name(dataAttr.id)\r\n b.type(this.resolveInputType(dataAttr.dataType));\r\n\r\n b.value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString() : '');\r\n });\r\n\r\n if (!readOnly)\r\n b.addChild('button', b => b\r\n .addClass('kfrm-button')\r\n .attr('title', i18n.getText('NavigationBtnTitle'))\r\n .addText('...')\r\n .on('click', (ev) => {\r\n const lookupTable = new EasyDataTable({\r\n loader: {\r\n loadChunk: (chunkParams) => this.context.getDataLoader()\r\n .loadChunk({ ...chunkParams, id: lookupEntity.id } as any)\r\n }\r\n });\r\n\r\n this.context.getDataLoader()\r\n .loadChunk({ offset: 0, limit: 1000, needTotal: true, sourceId: lookupEntity.id } as any)\r\n .then(data => {\r\n for (const col of data.table.columns.getItems()) {\r\n const attrs = lookupEntity.attributes.filter(attr =>\r\n attr.id == col.id && (attr.isPrimaryKey || attr.showInLookup));\r\n\r\n if (attrs.length) {\r\n lookupTable.columns.add(col);\r\n }\r\n }\r\n\r\n lookupTable.setTotal(data.total);\r\n\r\n for (const row of data.table.getCachedRows()) {\r\n lookupTable.addRow(row);\r\n }\r\n\r\n const ds = new DefaultDialogService();\r\n let gridSlot: HTMLElement = null;\r\n\r\n let selectedSlot: HTMLElement = null;\r\n\r\n let widgetSlot: HTMLElement;\r\n const slot = domel('div')\r\n .addClass(`kfrm-form`)\r\n .addChild('div', b => b\r\n .addClass(`kfrm-field`)\r\n .addChild('label', b => b\r\n .addText(i18n.getText('LookupSelectedItem'))\r\n .toDOM()\r\n )\r\n .addChild('div', b => selectedSlot = b\r\n .addText('None')\r\n .toDOM()\r\n )\r\n )\r\n .addChild('div', b => widgetSlot = b.toDOM())\r\n .addChild('div', b => b\r\n .addClass('kfrm-control')\r\n .addChild('div', b => gridSlot = b.toDOM())\r\n )\r\n .toDOM();\r\n\r\n let selectedValue = inputEl.value;\r\n\r\n const getValue = (row: DataRow | any, colId: string) => {\r\n\r\n if (row instanceof DataRow) {\r\n return row.getValue(colId);\r\n }\r\n\r\n const property = colId.substring(colId.lastIndexOf('.') + 1);\r\n return row[property]\r\n }\r\n\r\n const updateSelectedValue = (row: DataRow | any) => {\r\n selectedSlot.innerHTML = lookupTable.columns\r\n .getItems()\r\n .map(col => {\r\n return `<b>${col.label}:</b> ${getValue(row, col.id)}`\r\n })\r\n .join(', ');\r\n }\r\n\r\n if (selectedValue) {\r\n const attr = lookupEntity.getFirstPrimaryAttr();\r\n const key = attr.id.substring(attr.id.lastIndexOf('.') + 1);\r\n this.context.fetchRecord({[key]: selectedValue}, lookupEntity.id)\r\n .then(data => {\r\n if (data.entity) {\r\n updateSelectedValue(data.entity);\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n const lookupGrid = new EasyGrid({\r\n slot: gridSlot,\r\n dataTable: lookupTable,\r\n fixHeightOnFirstRender: true,\r\n paging: {\r\n pageSize: 10\r\n },\r\n onActiveRowChanged: (ev) => {\r\n lookupGrid.getData().getRow(ev.rowIndex)\r\n .then((row) => {\r\n selectedValue = row.getValue(attr.lookupDataAttr);\r\n updateSelectedValue(row);\r\n });\r\n }\r\n });\r\n\r\n ds.open({\r\n title: i18n.getText('LookupDlgCaption')\r\n .replace('{entity}', lookupEntity.caption),\r\n body: slot,\r\n arrangeParents: true,\r\n beforeOpen: () => {\r\n const dataFilter = this.context.createFilter(lookupEntity.id, lookupGrid.getData(), true);\r\n new TextFilterWidget(widgetSlot, lookupGrid, dataFilter,\r\n { instantMode: true, focus: true });\r\n },\r\n onSubmit: () => {\r\n inputEl.value = selectedValue;\r\n return true;\r\n },\r\n onDestroy: () => {\r\n lookupGrid.destroy();\r\n // return focus on button\r\n b.toDOM().focus();\r\n }\r\n });\r\n });\r\n })\r\n );\r\n });\r\n }\r\n\r\n private setupDateTimeField(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean, hidden: boolean) {\r\n const horizClass = isIE\r\n ? 'kfrm-fields-ie is-horizontal'\r\n : 'kfrm-fields is-horizontal';\r\n\r\n const editFormat = crudUtils.getEditDateTimeFormat(attr.dataType);\r\n\r\n let inputEl: HTMLInputElement;\r\n let btnEl: HTMLButtonElement;\r\n\r\n const mask = editFormat\r\n .replace('yyyy', '9999')\r\n .replace('MM', '99')\r\n .replace('dd', '99')\r\n .replace('HH', '99')\r\n .replace('mm', '99')\r\n .replace('ss', '99')\r\n\r\n domel(parent)\r\n .addChild('div', b => {\r\n b\r\n .addClass(horizClass)\r\n .addChild('input', b => {\r\n inputEl = b.toDOM();\r\n\r\n b.name(attr.id)\r\n b.type(hidden ? 'hidden' : this.resolveInputType(attr.dataType));\r\n\r\n if (readOnly) {\r\n b.attr('readonly', '');\r\n }\r\n else {\r\n b.mask(mask)\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n .on('input', ev => {\r\n b.removeClass('is-invalid');\r\n try {\r\n const newDate = dataUtils.strToDateTime(inputEl.value, editFormat);\r\n }\r\n catch (e) {\r\n b.addClass('is-invalid');\r\n }\r\n finally {\r\n\r\n }\r\n })\r\n .on('blur', ev => {\r\n if (inputEl.value === mask.replace(/[9]/g, '_')) {\r\n inputEl.value = '';\r\n }\r\n });\r\n }\r\n\r\n b.value((dataUtils.IsDefinedAndNotNull(value)\r\n ? dataUtils.dateTimeToStr(value, editFormat)\r\n : ''))\r\n });\r\n\r\n if (!readOnly)\r\n b.addChild('button', b => btnEl = b\r\n .addClass('kfrm-button')\r\n .attr('title', i18n.getText(attr.dataType !== DataType.Time\r\n ? 'CalendarBtnTitle'\r\n : 'TimerBtnTitle'))\r\n .addChild('i', b => b.addClass(attr.dataType !== DataType.Time\r\n ? 'ed-calendar-icon'\r\n : 'ed-timer-icon'))\r\n .on('click', (ev) => {\r\n\r\n let value: Date;\r\n try {\r\n value = inputEl.value.length\r\n ? attr.dataType !== DataType.Time\r\n ? dataUtils.strToDateTime(inputEl.value, editFormat)\r\n : dataUtils.strToTime(inputEl.value)\r\n : new Date(new Date().setSeconds(0));\r\n }\r\n catch {\r\n value = new Date(new Date().setSeconds(0));\r\n }\r\n\r\n const pickerOptions: DateTimePickerOptions = {\r\n zIndex: 9999999999,\r\n showCalendar: attr.dataType !== DataType.Time,\r\n showTimePicker: attr.dataType !== DataType.Date,\r\n onApply: (dateTime: Date) => {\r\n dateTime.setSeconds(0);\r\n dateTime.setMilliseconds(0);\r\n\r\n inputEl.value = dataUtils.dateTimeToStr(dateTime, editFormat);\r\n\r\n }\r\n };\r\n\r\n const dtp = new DefaultDateTimePicker(pickerOptions);\r\n dtp.setDateTime(value);\r\n dtp.show(ev.target as HTMLElement);\r\n\r\n }).toDOM()\r\n );\r\n });\r\n }\r\n\r\n private setupListField(parent: HTMLElement, attr: MetaEntityAttr, value: any, values: any, readOnly: boolean) {\r\n domel(parent)\r\n .addChild('div', b => b\r\n .addClass('kfrm-select full-width')\r\n .addChild('select', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n b.attr('name', attr.id)\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n if (values) {\r\n for (let i = 0; i < values.length; i++) {\r\n const val = values[i];\r\n b.addOption({\r\n value: val.id,\r\n title: val.text,\r\n selected: i === 0\r\n });\r\n }\r\n }\r\n b.value(value);\r\n })\r\n );\r\n }\r\n\r\n private setupFileField(parent: HTMLElement, attr: MetaEntityAttr, readOnly: boolean, accept: string) {\r\n domel(parent)\r\n .addChild('input', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n\r\n b.name(attr.id)\r\n .type(this.resolveInputType(attr.dataType));\r\n\r\n b.attr('accept', accept);\r\n });\r\n }\r\n\r\n private setupTextField(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean, hidden : boolean) {\r\n domel(parent)\r\n .addChild('input', b => {\r\n if (readOnly) {\r\n b.attr('readonly', '');\r\n }\r\n b.type(hidden ? 'hidden' : this.resolveInputType(attr.dataType));\r\n\r\n b.name(attr.id)\r\n .type(this.resolveInputType(attr.dataType));\r\n\r\n if (attr.dataType == DataType.Bool) {\r\n if (value)\r\n b.attr('checked', '');\r\n } \r\n else {\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n .value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString()\r\n : '');\r\n }\r\n });\r\n }\r\n\r\n private setupTextArea(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean) {\r\n // feature: modify size in value editor ??\r\n domel(parent)\r\n .addChild('textarea', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n \r\n b.attr('name', attr.id)\r\n b.setStyle('height', `120px`)\r\n b.value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString()\r\n : '');\r\n });\r\n }\r\n\r\n private addFormField(parent: HTMLElement, attr: MetaEntityAttr) {\r\n const value = (this.params.values && attr.kind !== EntityAttrKind.Lookup)\r\n ? this.params.values.getValue(attr.id)\r\n : !this.params.isEditForm\r\n ? attr.defaultValue\r\n : undefined;\r\n\r\n const editor = this.resolveEditor(attr);\r\n\r\n const readOnly = this.params.isEditForm && (attr.isPrimaryKey || !attr.isEditable);\r\n const required = !attr.isNullable;\r\n \r\n if (isIE) {\r\n parent = domel('div', parent)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n\r\n domel(parent)\r\n .addChild('label', b => {\r\n b.attr('for', attr.id);\r\n b.addHtml(`${attr.caption} ${required ? '<sup style=\"color: red\">*</sup>' : ''}: `);\r\n\r\n if (attr.description) {\r\n b.addChild('div', b => b\r\n .attr('title', attr.description)\r\n .addClass('question-mark')\r\n .setStyle('vertical-align', 'middle')\r\n .setStyle('display', 'inline-block')\r\n );\r\n }\r\n });\r\n \r\n const hidden = attr.isPrimaryKey;\r\n \r\n if (attr.kind === EntityAttrKind.Lookup) {\r\n this.setupLookupField(parent, attr, readOnly, value);\r\n return;\r\n }\r\n\r\n switch (editor.tag) {\r\n case EditorTag.DateTime:\r\n this.setupDateTimeField(parent, attr, value, readOnly, hidden);\r\n break;\r\n\r\n case EditorTag.List:\r\n this.setupListField(parent, attr, value, editor.values, readOnly);\r\n break;\r\n\r\n case EditorTag.File:\r\n this.setupFileField(parent, attr, readOnly, editor.accept);\r\n break;\r\n\r\n case EditorTag.Edit:\r\n default:\r\n if (editor.multiline) {\r\n this.setupTextArea(parent, attr, value, readOnly);\r\n }\r\n else {\r\n this.setupTextField(parent, attr, value, readOnly, hidden);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private resolveInputType(dataType: DataType): string {\r\n if (dataType === DataType.Bool)\r\n return 'checkbox';\r\n\r\n if (dataType === DataType.Blob)\r\n return 'file';\r\n\r\n return 'text';\r\n }\r\n\r\n private resolveEditor(attr: MetaEntityAttr): ValueEditor {\r\n let editor = attr.defaultEditor || new ValueEditor();\r\n if (editor.tag == EditorTag.Unknown) {\r\n if (dataUtils.getDateDataTypes().indexOf(attr.dataType) >= 0) {\r\n editor.tag = EditorTag.DateTime;\r\n }\r\n else {\r\n editor.tag = EditorTag.Edit;\r\n }\r\n }\r\n\r\n return editor;\r\n }\r\n\r\n private applySumbit(ev: KeyboardEvent): boolean {\r\n if (ev.keyCode === 13) {\r\n this.sumbitCallback && this.sumbitCallback();\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private sumbitCallback: () => void;\r\n\r\n public onSubmit(sumbitCallback: () => void) {\r\n this.sumbitCallback = sumbitCallback;\r\n return this;\r\n }\r\n\r\n public build(): EntityEditForm {\r\n let fb: DomElementBuilder<HTMLDivElement>;\r\n const formHtml =\r\n domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', b => b\r\n .addClass(`errors-block`)\r\n .toDOM()\r\n )\r\n .addChild('div', b => {\r\n b.addClass(`${isIE\r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right'\r\n : 'kfrm-fields col-a-1 label-align-right'}`);\r\n\r\n fb = b;\r\n })\r\n .toDOM();\r\n\r\n this.form['setHtmlInt'](formHtml);\r\n\r\n for (const attr of this.context.getActiveEntity().attributes) { \r\n if (!this.params.isEditForm && !attr.showOnCreate)\r\n continue;\r\n\r\n if (!attr.isPrimaryKey && this.params.isEditForm && !attr.showOnEdit) {\r\n continue;\r\n }\r\n\r\n this.addFormField(fb.toDOM(), attr)\r\n }\r\n\r\n return this.form;\r\n }\r\n}","export class ProgressBar {\r\n\r\n constructor(private slot: HTMLElement) {\r\n this.hide();\r\n this.slot.classList.add('ed-progress-bar');\r\n }\r\n\r\n public show() {\r\n this.slot.style.removeProperty('display');\r\n }\r\n\r\n public hide() {\r\n this.slot.style.display = 'none';\r\n }\r\n}","import { \r\n DataChunkDescriptor, \r\n DataLoader, EasyDataTable \r\n} from '@easydata/core';\r\n\r\nimport { DataContext } from './data_context';\r\n\r\nexport class EasyDataServerLoader implements DataLoader {\r\n constructor(protected context: DataContext) {\r\n\r\n }\r\n\r\n loadChunk(params: DataChunkDescriptor | any) {\r\n const url = this.context.resolveEndpoint('FetchDataset', \r\n { sourceId: params.sourceId || this.context.getActiveEntity().id });\r\n delete params.sourceId;\r\n\r\n this.context.startProcess();\r\n const http = this.context.getHttpClient();\r\n return http.post(url, params)\r\n .then((result) => {\r\n\r\n const dataTable = new EasyDataTable({\r\n chunkSize: 1000\r\n });\r\n\r\n const resultSet = result.resultSet;\r\n for(const col of resultSet.cols) {\r\n dataTable.columns.add(col);\r\n }\r\n\r\n for(const row of resultSet.rows) {\r\n dataTable.addRow(row);\r\n }\r\n \r\n let totalRecords = 0;\r\n if (result.meta && result.meta.totalRecords) {\r\n totalRecords = result.meta.totalRecords; \r\n }\r\n\r\n return {\r\n table: dataTable,\r\n total: totalRecords,\r\n hasNext: !params.needTotal \r\n || params.offset + params.limit < totalRecords\r\n }\r\n \r\n })\r\n .finally(() => {\r\n this.context.endProcess();\r\n });\r\n }\r\n\r\n}","import { \r\n HttpClient, MetaData,\r\n MetaEntity, combinePath, \r\n EasyDataTable, EasyDataTableOptions,\r\n DataLoader\r\n} from '@easydata/core';\r\nimport { DataFilter } from '../filter/data_filter';\r\nimport { TextDataFilter } from '../filter/text_data_filter';\r\n\r\nimport { EasyDataServerLoader } from './easy_data_server_loader';\r\n\r\ntype EasyDataEndpointKey = \r\n 'GetMetaData' |\r\n 'FetchDataset' | \r\n 'FetchRecord' |\r\n 'CreateRecord' |\r\n 'UpdateRecord' |\r\n 'DeleteRecord' ;\r\n\r\n\r\ninterface CompoundRecordKey { \r\n [key: string]: string \r\n}\r\n \r\nexport interface EasyDataContextOptions {\r\n metaDataId?: string;\r\n endpoint?: string;\r\n dataTable?: EasyDataTableOptions,\r\n onProcessStart?: () => void;\r\n onProcessEnd?: () => void;\r\n}\r\n\r\nexport class DataContext {\r\n private endpoints: Map<string, string> = new Map<string, string>();\r\n\r\n private http: HttpClient;\r\n\r\n private model: MetaData;\r\n\r\n private data: EasyDataTable;\r\n\r\n private dataLoader: EasyDataServerLoader;\r\n\r\n private activeEntity: MetaEntity;\r\n\r\n private options: EasyDataContextOptions;\r\n\r\n constructor(options?: EasyDataContextOptions) {\r\n this.options = options || {};\r\n\r\n this.http = new HttpClient();\r\n this.model = new MetaData();\r\n this.model.id = options.metaDataId || '__default';\r\n\r\n this.dataLoader = new EasyDataServerLoader(this);\r\n const dataTableOptions = {\r\n loader: this.dataLoader,\r\n ...options.dataTable\r\n };\r\n\r\n this.data = new EasyDataTable(dataTableOptions);\r\n\r\n this.setDefaultEndpoints(this.options.endpoint || '/api/easydata');\r\n }\r\n\r\n public getActiveEntity() {\r\n return this.activeEntity;\r\n }\r\n\r\n public setActiveSource(entityId: string) {\r\n this.activeEntity = this.model.getRootEntity().subEntities\r\n .filter(e => e.id == entityId)[0];\r\n }\r\n\r\n public getMetaData(): MetaData {\r\n return this.model;\r\n }\r\n\r\n public getData() {\r\n return this.data;\r\n }\r\n\r\n public getDataLoader(): DataLoader {\r\n return this.dataLoader;\r\n }\r\n\r\n public createFilter(): DataFilter\r\n public createFilter(sourceId: string, data: EasyDataTable, isLookup?: boolean): DataFilter\r\n public createFilter(sourceId?: string, data?: EasyDataTable, isLookup?: boolean): DataFilter {\r\n return new TextDataFilter(\r\n this.dataLoader, \r\n data || this.getData(), \r\n sourceId || this.activeEntity.id, \r\n isLookup);\r\n }\r\n\r\n public loadMetaData(): Promise<MetaData> {\r\n const url = this.resolveEndpoint('GetMetaData');\r\n this.startProcess();\r\n return this.http.get(url) \r\n .then(result => {\r\n if (result.model) {\r\n this.model.loadFromData(result.model);\r\n }\r\n\r\n return this.model;\r\n })\r\n .catch(error => { \r\n console.error(`Error: ${error.message}. Source: ${error.sourceError}`);\r\n return null;\r\n })\r\n .finally(() => {\r\n this.endProcess();\r\n });\r\n }\r\n\r\n public getHttpClient() {\r\n return this.http;\r\n }\r\n\r\n public fetchDataset() {\r\n this.data.clear();\r\n return this.dataLoader.loadChunk({offset: 0, limit: this.data.chunkSize, needTotal: true})\r\n .then(result => { \r\n for(const col of result.table.columns.getItems()) {\r\n this.data.columns.add(col);\r\n }\r\n\r\n this.data.setTotal(result.total);\r\n\r\n for(const row of result.table.getCachedRows()) {\r\n this.data.addRow(row);\r\n }\r\n\r\n return this.data;\r\n })\r\n }\r\n\r\n public fetchRecord(keys : CompoundRecordKey, sourceId?: string) {\r\n const url = this.resolveEndpoint('FetchRecord', { sourceId: sourceId || this.activeEntity.id });\r\n \r\n this.startProcess();\r\n return this.http.get(url, { queryParams: keys})\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public createRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('CreateRecord', \r\n { sourceId: sourceId || this.activeEntity.id });\r\n\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json' })\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public updateRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('UpdateRecord', { sourceId: sourceId || this.activeEntity.id });\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json' })\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public deleteRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('DeleteRecord', { sourceId: sourceId || this.activeEntity.id });\r\n\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json'})\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public setEndpoint(key: EasyDataEndpointKey, value: string) : void\r\n public setEndpoint(key: EasyDataEndpointKey | string, value: string) : void {\r\n this.endpoints.set(key, value);\r\n }\r\n\r\n public setEnpointIfNotExist(key: EasyDataEndpointKey, value: string): void\r\n public setEnpointIfNotExist(key: EasyDataEndpointKey | string, value: string): void {\r\n if (!this.endpoints.has(key))\r\n this.endpoints.set(key, value);\r\n }\r\n\r\n private endpointVarsRegex = /\\{.*?\\}/g;\r\n\r\n public resolveEndpoint(endpointKey: EasyDataEndpointKey, options?: any): string \r\n public resolveEndpoint(endpointKey: EasyDataEndpointKey | string, options?: any) : string {\r\n options = options || {};\r\n\r\n let result = this.endpoints.get(endpointKey);\r\n if (!result) {\r\n throw endpointKey + ' endpoint is not defined'; \r\n }\r\n\r\n let matches = result.match(this.endpointVarsRegex);\r\n if (matches) {\r\n for (let match of matches) {\r\n let opt = match.substring(1, match.length - 1);\r\n let optVal = options[opt];\r\n if (!optVal) {\r\n if (opt == 'modelId') {\r\n optVal = this.model.getId();\r\n }\r\n else if (opt == 'sourceId') {\r\n optVal = this.activeEntity.id;\r\n }\r\n else {\r\n throw `Parameter [${opt}] is not defined`;\r\n }\r\n }\r\n \r\n result = result.replace(match, optVal);\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n\r\n public startProcess() {\r\n if (this.options.onProcessStart)\r\n this.options.onProcessStart();\r\n }\r\n\r\n public endProcess() {\r\n if (this.options.onProcessEnd)\r\n this.options.onProcessEnd();\r\n }\r\n\r\n private setDefaultEndpoints(endpointBase : string) {\r\n this.setEnpointIfNotExist('GetMetaData', combinePath(endpointBase, 'models/{modelId}'));\r\n this.setEnpointIfNotExist('FetchDataset', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));\r\n this.setEnpointIfNotExist('FetchRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));\r\n this.setEnpointIfNotExist('CreateRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/create'));\r\n this.setEnpointIfNotExist('UpdateRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/update'));\r\n this.setEnpointIfNotExist('DeleteRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/delete'));\r\n }\r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from './validator';\r\n\r\nexport class TypeValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'Type';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n \r\n if (!dataUtils.IsDefinedAndNotNull(value) || value == '')\r\n return { successed: true };\r\n\r\n if (dataUtils.isNumericType(attr.dataType)) {\r\n if (!dataUtils.isNumeric(value))\r\n return { \r\n successed: false, \r\n messages: [ i18n.getText('NumberError') ]\r\n };\r\n\r\n\r\n if (dataUtils.isIntType(attr.dataType) \r\n && !Number.isInteger(Number.parseFloat(value))) {\r\n return {\r\n successed: false,\r\n messages: [ i18n.getText('IntNumberError') ]\r\n }\r\n }\r\n }\r\n\r\n return { successed: true };\r\n }\r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from \"./validator\";\r\n\r\nexport class RequiredValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'Required';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n \r\n if (!attr.isNullable && (\r\n !dataUtils.IsDefinedAndNotNull(value)\r\n || value === ''))\r\n\r\n return {\r\n successed: false,\r\n messages: [ i18n.getText('RequiredError') ]\r\n }\r\n\r\n return { successed: true };\r\n }\r\n}","import { DataRow, i18n, utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n DefaultDialogService, \r\n DialogService, domel, EasyGrid, \r\n GridCellRenderer, GridColumn, RowClickEvent \r\n} from '@easydata/ui';\r\n\r\nimport { EntityEditFormBuilder } from '../form/entity_form_builder';\r\nimport { TextFilterWidget } from '../widgets/text_filter_widget';\r\n\r\nimport { DataContext } from '../main/data_context';\r\nimport { RequiredValidator } from '../validators/required_validator';\r\nimport { TypeValidator } from '../validators/type_validator';\r\nimport { Validator } from '../validators/validator';\r\nimport { EasyDataViewOptions } from './options';\r\nimport { setLocation } from '../utils/utils';\r\n\r\nexport class EntityDataView {\r\n private options: EasyDataViewOptions = {\r\n showFilterBox: true,\r\n showBackToEntities: true\r\n }\r\n\r\n private dlg: DialogService;\r\n\r\n private grid: EasyGrid;\r\n\r\n private filterWidget : TextFilterWidget;\r\n\r\n private defaultValidators: Validator[] = [ new RequiredValidator(), new TypeValidator()];\r\n\r\n constructor (\r\n private slot: HTMLElement, \r\n private context: DataContext, \r\n private basePath: string,\r\n options: EasyDataViewOptions) \r\n {\r\n this.options = dataUtils.assignDeep(this.options, options || {});\r\n\r\n this.dlg = new DefaultDialogService();\r\n\r\n const ent = this.context.getActiveEntity();\r\n if (!ent) {\r\n throw \"Can't find active entity for \" + window.location.pathname;\r\n }\r\n \r\n this.slot.innerHTML += `<h1>${ent.captionPlural || ent.caption}</h1>`;\r\n if (this.options.showBackToEntities) {\r\n domel(this.slot)\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(`← ${i18n.getText('BackToEntities')}`)\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n setLocation(this.basePath);\r\n })\r\n );\r\n }\r\n\r\n this.renderGrid();\r\n }\r\n\r\n private syncGridColumnHandler(column: GridColumn) {\r\n if (column.dataColumn) {\r\n const attr = this.context.getMetaData().getAttributeById(column.dataColumn.id);\r\n if (attr) {\r\n column.isVisible = attr.showOnView;\r\n }\r\n }\r\n }\r\n\r\n private renderGrid() {\r\n this.context.fetchDataset()\r\n .then(result => {\r\n const gridSlot = document.createElement('div');\r\n this.slot.appendChild(gridSlot);\r\n gridSlot.id = 'Grid';\r\n this.grid = new EasyGrid(dataUtils.assignDeep({\r\n slot: gridSlot,\r\n dataTable: result,\r\n paging: {\r\n pageSize: 15,\r\n allowPageSizeChange: true,\r\n pageSizeItems: [15, 30, 50, 100, 200]\r\n },\r\n showPlusButton: this.context.getActiveEntity().isEditable,\r\n plusButtonTitle: i18n.getText('AddRecordBtnTitle'),\r\n showActiveRow: false,\r\n onPlusButtonClick: this.addClickHandler.bind(this),\r\n onGetCellRenderer: this.manageCellRenderer.bind(this),\r\n onRowDbClick: this.rowDbClickHandler.bind(this),\r\n onSyncGridColumn: this.syncGridColumnHandler.bind(this)\r\n }, this.options.grid || {}));\r\n\r\n if (this.options.showFilterBox) {\r\n let filterWidgetSlot: HTMLElement;\r\n const filterBarDiv = domel('div')\r\n .addClass(`kfrm-form`)\r\n .setStyle('margin', '10px 0px')\r\n .addChild('div', b => \r\n filterWidgetSlot = b.toDOM()\r\n ).toDOM();\r\n \r\n this.slot.insertBefore(filterBarDiv, gridSlot);\r\n \r\n const dataFilter = this.context.createFilter();\r\n this.filterWidget = new TextFilterWidget(filterWidgetSlot, this.grid, dataFilter); \r\n }\r\n });\r\n }\r\n\r\n private manageCellRenderer(column: GridColumn, defaultRenderer: GridCellRenderer) {\r\n if (column.isRowNum) {\r\n column.width = 110;\r\n return (value: any, column: GridColumn, cell: HTMLElement, rowEl: HTMLElement) => {\r\n const b = domel('div', cell)\r\n .addClass(`keg-cell-value`);\r\n \r\n if (this.context.getActiveEntity().isEditable) {\r\n b.addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('EditBtn'))\r\n .on('click', (ev) => this.editClickHandler(ev as MouseEvent, \r\n parseInt(rowEl.getAttribute('data-row-idx'))))\r\n )\r\n .addChild('span', b => b.text(' | '))\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('DeleteBtn'))\r\n .on('click', (ev) => \r\n this.deleteClickHandler(ev as MouseEvent, \r\n parseInt(rowEl.getAttribute('data-row-idx'))))\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addClickHandler() {\r\n const activeEntity = this.context.getActiveEntity();\r\n const form = new EntityEditFormBuilder(this.context)\r\n .onSubmit(() => dlg.submit())\r\n .build();\r\n\r\n form.useValidators(this.defaultValidators);\r\n\r\n const dlg = this.dlg.open({\r\n title: i18n.getText('AddDlgCaption')\r\n .replace('{entity}', activeEntity.caption),\r\n body: form.getHtml(),\r\n onSubmit: () => {\r\n if (!form.validate())\r\n return false;\r\n \r\n form.getData()\r\n .then(obj => this.context.createRecord(obj))\r\n .then(() => {\r\n return this.refreshData();\r\n })\r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private editClickHandler(ev: MouseEvent, rowIndex: number) {\r\n this.grid.getData().getRow(rowIndex)\r\n .then(row => {\r\n if (row) {\r\n this.showEditForm(row);\r\n }\r\n })\r\n }\r\n\r\n private showEditForm(row: DataRow) {\r\n const activeEntity = this.context.getActiveEntity();\r\n\r\n const form = new EntityEditFormBuilder(this.context, { isEditForm: true, values: row })\r\n .onSubmit(() => dlg.submit())\r\n .build();\r\n \r\n form.useValidators(this.defaultValidators);\r\n\r\n const dlg = this.dlg.open({\r\n title: i18n.getText('EditDlgCaption')\r\n .replace('{entity}', activeEntity.caption),\r\n body: form.getHtml(),\r\n onSubmit: () => {\r\n if (!form.validate())\r\n return false;\r\n\r\n form.getData()\r\n .then(obj => this.context.updateRecord(obj))\r\n .then(() => { \r\n return this.refreshData();\r\n }) \r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n })\r\n }\r\n\r\n private rowDbClickHandler(ev: RowClickEvent) {\r\n if (this.context.getActiveEntity().isEditable) {\r\n this.showEditForm(ev.row);\r\n }\r\n }\r\n\r\n private deleteClickHandler(ev: MouseEvent, rowIndex: number) {\r\n this.grid.getData().getRow(rowIndex)\r\n .then(row => {\r\n if (row) {\r\n const activeEntity = this.context.getActiveEntity();\r\n const keyAttrs = activeEntity.getPrimaryAttrs();\r\n const keyVals = keyAttrs.map(attr => row.getValue(attr.id));\r\n const keys = keyAttrs.reduce((val, attr, index) => { \r\n const property = attr.id.substring(attr.id.lastIndexOf('.') + 1);\r\n val[property] = keyVals[index];\r\n return val; \r\n }, {});\r\n this.dlg.openConfirm(\r\n i18n.getText('DeleteDlgCaption')\r\n .replace('{entity}', activeEntity.caption), \r\n i18n.getText('DeleteDlgMessage')\r\n .replace('{recordId}', Object.keys(keys)\r\n .map(key => `${key}:${keys[key]}`).join(';')), \r\n )\r\n .then((result) => {\r\n if (result) {\r\n this.context.deleteRecord(keys)\r\n .then(() => {\r\n return this.refreshData();\r\n })\r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n private processError(error) {\r\n this.dlg.open({\r\n title: 'Ooops, something went wrong',\r\n body: error.message,\r\n closable: true,\r\n cancelable: false\r\n });\r\n }\r\n\r\n private refreshData(): Promise<void> {\r\n return this.context.fetchDataset()\r\n .then(() => {\r\n let processed = false;\r\n if (this.filterWidget) { \r\n processed = this.filterWidget.applyFilter(false);\r\n }\r\n\r\n if (!processed) {\r\n this.grid.refresh();\r\n }\r\n });\r\n }\r\n}","import { i18n, MetaData } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { setLocation } from '../utils/utils';\r\nimport { DataContext } from '../main/data_context';\r\n\r\nexport class RootDataView {\r\n private metaData: MetaData;\r\n\r\n constructor (\r\n private slot: HTMLElement, \r\n private context: DataContext, \r\n private basePath: string) {\r\n\r\n this.metaData = this.context.getMetaData();\r\n this.slot.innerHTML += `<h1>${i18n.getText('RootViewTitle')}</h1>`;\r\n\r\n this.renderEntitySelector();\r\n }\r\n\r\n private renderEntitySelector() {\r\n const entities = this.metaData.getRootEntity().subEntities;\r\n if (this.slot) {\r\n domel(this.slot)\r\n .addChild('div', b => b\r\n .addClass('ed-root')\r\n .addChild('div', b => b\r\n .addClass('ed-menu-description')\r\n .addText(i18n.getText(!this.metaData.isEmpty() ? 'EntityMenuDesc' : 'ModelIsEmpty'))\r\n )\r\n .addChild('ul', b => {\r\n b.addClass('ed-entity-menu');\r\n entities.forEach(ent => {\r\n b.addChild('li', b => {\r\n b.addClass('ed-entity-item')\r\n .on('click', () => {\r\n setLocation(`${this.basePath}/${decodeURIComponent(ent.id)}`);\r\n })\r\n .addChild('div', b => {\r\n b.addClass('ed-entity-item-caption')\r\n .addText(ent.captionPlural || ent.caption);\r\n });\r\n\r\n if (ent.description) {\r\n b.addChild('div', b => {\r\n b.addClass('ed-entity-item-descr')\r\n .addText(`${ent.description}`);\r\n });\r\n }\r\n });\r\n });\r\n })\r\n );\r\n }\r\n }\r\n}","import { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { ProgressBar } from '../widgets/progress_bar';\r\nimport { DataContext } from '../main/data_context';\r\nimport { EntityDataView } from './entity_data_view';\r\nimport { EasyDataViewDispatcherOptions } from './options';\r\nimport { RootDataView } from './root_data_view';\r\n\r\nexport class EasyDataViewDispatcher {\r\n private context: DataContext;\r\n private basePath: string;\r\n\r\n private container: HTMLElement;\r\n\r\n private options: EasyDataViewDispatcherOptions = {\r\n container: '#EasyDataContainer',\r\n basePath: 'easydata' \r\n };\r\n\r\n constructor(options?: EasyDataViewDispatcherOptions) {\r\n this.options = dataUtils.assign(this.options, options || {});\r\n\r\n if (this.options.rootEntity) {\r\n this.options.showBackToEntities = false;\r\n this.basePath = '/';\r\n }\r\n else {\r\n this.basePath = this.normalizeBasePath(this.options.basePath);\r\n }\r\n\r\n this.setContainer(this.options.container);\r\n\r\n const progressBarSlot = document.createElement('div');\r\n const bar = new ProgressBar(progressBarSlot); \r\n \r\n const parent = this.container.parentElement;\r\n parent.insertBefore(progressBarSlot, parent.firstElementChild);\r\n \r\n this.context = new DataContext({\r\n endpoint: this.options.endpoint,\r\n dataTable: this.options.dataTable,\r\n onProcessStart: () => bar.show(),\r\n onProcessEnd: () => bar.hide()\r\n });\r\n\r\n }\r\n \r\n private normalizeBasePath(basePath: string): string {\r\n basePath = this.trimSlashes(basePath);\r\n const fullPath = decodeURIComponent(window.location.pathname);\r\n const idx = fullPath.toLocaleLowerCase().indexOf(basePath);\r\n return idx >= 0 ? fullPath.substring(0, idx + basePath.length) : '/';\r\n }\r\n\r\n private trimSlashes(path: string): string {\r\n return path.replace(/^\\/|\\/$/g, '')\r\n }\r\n\r\n private setContainer(container: HTMLElement | string) {\r\n if (!container) {\r\n throw 'Container is undefined';\r\n }\r\n\r\n if (typeof container === 'string') {\r\n if (container.length){\r\n if (container[0] === '.') {\r\n const result = document.getElementsByClassName(container.substring(1));\r\n if (result.length) \r\n this.container = result[0] as HTMLElement;\r\n }\r\n else {\r\n if (container[0] === '#') {\r\n container = container.substring(1);\r\n }\r\n this.container = document.getElementById(container);\r\n }\r\n if (!this.container) {\r\n throw Error('Unrecognized `container` parameter: ' + container + '\\n' \r\n + 'It must be an element ID, a class name (starting with .) or an HTMLElement object itself.');\r\n }\r\n }\r\n }\r\n else {\r\n this.container = container;\r\n }\r\n }\r\n\r\n private getActiveSourceId(): string | null {\r\n if (this.options.rootEntity) \r\n return this.options.rootEntity;\r\n\r\n const path = decodeURIComponent(window.location.pathname);\r\n const idIndex = this.basePath.length + 1;\r\n return idIndex < path.length ? path.substring(idIndex) : null;\r\n }\r\n\r\n run(): Promise<void> { \r\n this.attach();\r\n\r\n return this.context.loadMetaData()\r\n .then(() => {\r\n this.setActiveView();\r\n })\r\n .catch(error => console.error(error))\r\n }\r\n\r\n private setActiveView() {\r\n this.clear();\r\n\r\n const sourceId = this.getActiveSourceId();\r\n if (sourceId) {\r\n this.context.setActiveSource(sourceId);\r\n window['EDView'] = new EntityDataView(this.container, this.context,\r\n this.basePath, this.options);\r\n }\r\n else {\r\n window['EDView'] = new RootDataView(this.container, this.context, this.basePath);\r\n }\r\n }\r\n\r\n private clear() {\r\n this.container.innerHTML = '';\r\n this.context.getData().clear();\r\n }\r\n\r\n private onSetLocation = () => {\r\n this.setActiveView();\r\n }\r\n\r\n private attach = () => {\r\n window.addEventListener('ed_set_location', this.onSetLocation);\r\n window.addEventListener('popstate', this.onSetLocation);\r\n }\r\n\r\n detach() {\r\n window.removeEventListener('ed_set_location', this.onSetLocation);\r\n window.removeEventListener('popstate', this.onSetLocation);\r\n }\r\n}","import { i18n } from '@easydata/core';\r\n\r\n\r\nfunction addEasyDataCRUDTexts() {\r\n i18n.updateDefaultTexts({\r\n RequiredError: 'Value is required.',\r\n NumberError: 'Value should be a number',\r\n IntNumberError: 'Value should be an integer number',\r\n DateTimeError: 'Invalid date or time value',\r\n LookupSelectedItem: 'Selected item: ',\r\n LookupDlgCaption: 'Select {entity}',\r\n None: 'None',\r\n NavigationBtnTitle: 'Navigation values',\r\n CalendarBtnTitle: 'Open calendar',\r\n TimerBtnTitle: 'Open timer',\r\n AddBtnTitle: 'Add',\r\n AddRecordBtnTitle: 'Add record',\r\n EditBtn: 'Edit',\r\n DeleteBtn: 'Delete',\r\n SelectLink: '[ select ]',\r\n AddDlgCaption: 'Create {entity}',\r\n EditDlgCaption: 'Edit {entity}',\r\n DeleteDlgCaption: 'Delete {entity}',\r\n DeleteDlgMessage: 'Are you sure you want to remove this record: {{recordId}}?',\r\n EntityMenuDesc: 'Click on an entity to view/edit its content',\r\n BackToEntities: 'Back to entities',\r\n SearchBtn: 'Search',\r\n SearchInputPlaceholder: 'Search...',\r\n RootViewTitle: 'Entities',\r\n ModelIsEmpty: 'No entity was found.'\r\n });\r\n}\r\n\r\naddEasyDataCRUDTexts();","export * from './filter/data_filter'\r\nexport * from './filter/text_data_filter'\r\n\r\nexport * from './form/entity_edit_form'\r\nexport * from './form/entity_form_builder'\r\n\r\nexport * from './widgets/text_filter_widget'\r\nexport * from './widgets/progress_bar'\r\n\r\nexport * from './main/data_context'\r\nexport * from './main/easy_data_server_loader'\r\n\r\nexport * from './validators/validator'\r\nexport * from './validators/type_validator'\r\nexport * from './validators/required_validator'\r\n\r\nexport * from './views/easy_data_view_dispatcher'\r\nexport * from './views/root_data_view'\r\nexport * from './views/entity_data_view'\r\nexport * from './views/options'\r\n\r\nimport './i18n/text_resources'"],"sourceRoot":""}
1
+ {"version":3,"file":"easydata.crud.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8BAA8B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;;;;;;UCnEA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;;AC7CO;AACP;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;;ACNO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gDAAgD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;;ACzDO;AACP;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/B8C;AACP;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,kCAAkC,KAAK,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK,cAAc;AACxD;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gDAAgD;AAClE,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK,cAAc;AAC9C;AACA,8BAA8B,KAAK,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK,cAAc;AACxD;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,KAAK,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D,oCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA,0DAA0D,sBAAsB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB;;ACpduC;AACO;AACV;AAC7B;AACP;AACA;AACA,6BAA6B,QAAQ,2BAA2B,kCAAkC;AAClG;AACA;AACA;AACA,gBAAgB,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AACtD;AACA;AACA;AACA,gBAAgB,QAAQ,SAAS,QAAQ,OAAO,QAAQ;AACxD;AACA;AACA,yBAAyB,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AAC/D,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,QAAQ;AACnE;AACA;AACA;AACA;AACA,qBAAqB,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,QAAQ,qBAAqB,QAAQ;AAC3H,6CAA6C,QAAQ,kBAAkB,QAAQ;AAC/E,yBAAyB,QAAQ,sBAAsB,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAiB;AACtC;AACA;AACA;AACA;AACA,UAAU;AACV,eAAe,aAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,kBAAkB,IAAI;AACtB,iBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,IAAI;AACnD;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;ACvBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACuC;AACiB;AACb;AACE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK,2BAA2B;AACxD;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,yCAAyC,6CAA6C;AACtF,kDAAkD;AAClD;AACA;AACA;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACqB;AACtB;;ACnK8C;AACa;AACpB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gCAAgC,+BAA+B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2BAA2B;AACnF;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;AACA,8BAA8B,KAAK;AACnC,8BAA8B,KAAK;AACnC,8BAA8B,KAAK;AACnC,gCAAgC,KAAK;AACrC,8BAA8B,KAAK;AACnC,gCAAgC,KAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC9IgD;AACF;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;;AChEoC;AACG;AACS;AACF;AACa;AACd;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,iBAAiB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA,8BAA8B,IAAI;AAClC;AACA;AACA;AACA,iCAAiC,KAAK,+BAA+B,wDAAwD;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,8BAA8B,IAAI;AAClC;AACA;AACA,iCAAiC,KAAK,+BAA+B,qDAAqD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA,8BAA8B,IAAI;AAClC,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,kCAAkC,KAAK,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,qBAAqB;AACvD;AACA;AACA,8BAA8B,IAAI;AAClC,0CAA0C,KAAK;AAC/C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS,OAAO,QAAQ;AACzE;AACA,6CAA6C,SAAS,WAAW,QAAQ;AACzE,6CAA6C,SAAS,WAAW,QAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,KAAK;AACtD,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC1eA,IAAI,oBAAQ,IAAI,SAAI,IAAI,SAAI;AAC5B,IAAI,oBAAQ;AACZ,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAQ,GAAG,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8BAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAQ,CAAC,oBAAQ,GAAG,UAAU,qEAAqE;AACtH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;AAC/B;;ACzM8C;AACP;AAChC;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,KAAK,yBAAyB,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ,OAAO,QAAQ,WAAW,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ,QAAQ,OAAO,QAAQ,WAAW,QAAQ,gCAAgC;AACvH,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;AACnB;;AC5C+C;AACV;AACS;AACP;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD,oCAAoC,0CAA0C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACmB;AACpB;;ACnB8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qCAAqC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gBAAgB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;AC5HO;AACP;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE,WAAW,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wBAAwB;AACzB;;ACd8B;AAC9B,IAAI;AACJ;;ACFA;AACkC;AACO;AACN;AACnC;AACmC;AACC;AACD;AACnC;AACyC;AACE;AACC;AAC5C;AACiC;AACE;AACC;AACpC;AACuC;AACF;AA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AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACA;AACP;;AClOO;AACP,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,qBAAqB,SAAI,IAAI,SAAI;AACjC,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AAC8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoC;AACrC;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI;AACZ;AACA;AACA;AACA,CAAC;AACiC;AAClC;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrTuC;AACY;AACD;AAClD;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kDAAkD;AAClD;AACA,8CAA8C,qBAAqB;AACnE;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACO;AACP;;AC7WO;AACP;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;;ACNgD;AACM;AACtD;AACO,mBAAmB,QAAQ;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B,aAAa;AACb;AACA;AACA,yBAAyB,IAAI;AAC7B,gCAAgC;AAChC;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI;AACvB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;;ACzIwD;AACK;AAC7D;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA,aAAa,eAAe;AAC5B;AACA,aAAa,eAAe;AAC5B;AACA,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,gBAAgB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC3JA,IAAI,gBAAQ,IAAI,SAAI,IAAI,SAAI;AAC5B,IAAI,gBAAQ;AACZ,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAQ;AACnB;AACA,IAAI,qBAAa,IAAI,SAAI,IAAI,SAAI;AACjC,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AAC8E;AACZ;AAChB;AACqB;AACf;AACc;AACJ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK;AAChC;AACA,6BAA6B,KAAK;AAClC;AACA;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C,qCAAqC,qBAAqB;AAC1D,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA,8BAA8B,KAAK,cAAc;AACjD,4BAA4B,KAAK,cAAc;AAC/C,qBAAqB,KAAK,UAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,QAAQ,KAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,qBAAqB,QAAQ,SAAS,gBAAQ,CAAC,gBAAQ,GAAG,0CAA0C,QAAQ;AAC5G;AACA,QAAQ,KAAK;AACb,qCAAqC,gBAAQ,CAAC,gBAAQ,GAAG;AACzD,SAAS;AACT;AACA,yBAAyB,qBAAa,CAAC,qBAAa,CAAC,qBAAa,CAAC,qBAAa,KAAK,KAAK,8BAA8B,KAAK,+BAA+B,KAAK;AACjK,YAAY,QAAQ;AACpB;AACA,QAAQ,KAAK;AACb;AACA,yCAAyC,gBAAQ,CAAC,gBAAQ,GAAG;AAC7D;AACA,SAAS;AACT,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mCAAmC;AAChG,QAAQ,KAAK;AACb;AACA;AACA;AACA,YAAY,aAAa;AACzB;AACA;AACA;AACA,uDAAuD,WAAW;AAClE;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,UAAU;AAC9C,0DAA0D,WAAW;AACrE;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,iBAAiB;AACvF;AACA;AACA,oCAAoC,8BAA8B;AAClE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,WAAW;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qCAAqC,uBAAuB;AAC5D,kCAAkC,mBAAmB;AACrD,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA,sCAAsC,KAAK;AAC3C;AACA;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA,SAAS;AACT;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oCAAoC,UAAU;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA,+EAA+E,iBAAiB;AAChG;AACA;AACA;AACA;AACA;AACA,oBAAoB,KAAK;AACzB;AACA;AACA;AACA,aAAa;AACb,0CAA0C,sBAAsB,WAAW;AAC3E;AACA;AACA,YAAY,KAAK;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uEAAuE,iBAAiB;AACxF;AACA;AACA;AACA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,aAAa,GAAG,YAAY;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,sCAAsC,8BAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC,2BAA2B,mBAAmB;AAC9C,2BAA2B,kBAAkB;AAC7C,2BAA2B,MAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA,gDAAgD,KAAK;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,6BAA6B;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,IAAI;AACjB;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,yCAAyC,iEAAiE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,iBAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC/pCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACmB;AACpB;;AC7B0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;AC1GA,IAAI,wBAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACyD;AACR;AACZ;AACtC;AACA,IAAI,wBAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD,kCAAkC,IAAI;AACtC;AACA,wBAAwB,yBAAyB;AACjD,8BAA8B,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gDAAgD;AACvG;AACA,QAAQ,KAAK;AACb;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,KAAS;AACtD;AACA;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,kDAAkD;AAClD;AACA;AACA;AACA,SAAS;AACT,mDAAmD,6BAA6B,KAAK,IAAI;AACzF,kDAAkD;AAClD;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gEAAgE;AAChE;AACA,6CAA6C;AAC7C;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA,SAAS,IAAI;AACb,kDAAkD;AAClD;AACA,qDAAqD;AACrD;AACA;AACA,SAAS;AACT,uBAAuB,IAAI,IAAI;AAC/B,kDAAkD;AAClD;AACA;AACA;AACA,SAAS;AACT,mDAAmD,6BAA6B,KAAK,IAAI;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA,wBAAwB,cAAc;AACtC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C,0BAA0B,KAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,QAAQ;AACiB;AAC3B;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;;AC1BA,IAAI,2BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACqC;AACY;AACP;AAC3C;AACA,IAAI,2BAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA,mDAAmD,0CAA0C;AAC7F;AACA,6BAA6B,KAAK;AAClC;AACA;AACA,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,IAAI;AAC3B;AACA,kDAAkD;AAClD;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,IAAI;AAC3B;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC,CAAC,UAAU;AACiB;AAC7B;;AClFA,IAAI,gCAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACqC;AACY;AACE;AACC;AACK;AACA;AAC1D;AACA,IAAI,gCAAS;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,+CAA+C;AAC/C;AACA,kBAAkB,IAAI;AACtB;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB;AACvB;AACA,sDAAsD;AACtD;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA,aAAa;AACb,2BAA2B;AAC3B;AACA,kDAAkD;AAClD;AACA,kBAAkB,IAAI;AACtB;AACA;AACA;AACA,SAAS;AACT,uBAAuB;AACvB;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,cAAc;AACiB;AACjC;;AChIO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;;ACNA,IAAI,8BAAS,IAAI,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACoD;AACI;AACP;AAClD,IAAI,gCAAS;AACN;AACP;AACA;AACA;AACA;AACA,2CAA2C,gCAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2CAA2C,gCAAS,oIAAoI,gCAAS,uCAAuC,gCAAS,8GAA8G,gCAAS,uCAAuC,gCAAS;AACxZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,gCAAS;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gCAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,gBAAgB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK;AAC7B;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA,oCAAoC,gCAAS;AAC7C;AACA,gDAAgD;AAChD,qDAAqD;AACrD,gDAAgD;AAChD,oCAAoC,gCAAS;AAC7C;AACA;AACA,wCAAwC,gCAAS;AACjD,kDAAkD;AAClD,wCAAwC,gCAAS;AACjD,8CAA8C;AAC9C;AACA;AACA,wDAAwD;AACxD,4CAA4C,gCAAS;AACrD;AACA;AACA,qBAAqB;AACrB,mCAAmC;AACnC,aAAa;AACb;AACA,qCAAqC,gCAAS;AAC9C;AACA,aAAa;AACb;AACA;AACA,wCAAwC,gCAAS;AACjD;AACA;AACA,+BAA+B,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gCAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,IAAI;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA,qCAAqC;AACrC,iCAAiC;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA,yDAAyD;AACzD;AACA;AACA,6DAA6D,IAAI;AACjE;AACA;AACA,qBAAqB,IAAI;AACzB,aAAa;AACb,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA,sCAAsC,gCAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gCAAgC;AAC5E;AACA;AACA;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA,oBAAoB,KAAK;AACzB,gCAAgC,gCAAS;AACzC,6CAA6C;AAC7C,gCAAgC,gCAAS;AACzC;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;AACA,IAAI,8BAAS;AACb;AACA;AACA;AACA;AACA,mBAAmB,KAAK;AACxB,4CAA4C;AAC5C;AACA,uBAAuB;AACvB;AACA;AACA,oCAAoC,gCAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;AChgBsC;AACtC;AACA,IAAI,IAAI;AACR,wBAAwB,oBAAoB,GAAG,mBAAmB,IAAI,OAAO;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;ACbA;AACiC;AACO;AACC;AACA;AACM;AAC/C;AAC0C;AACQ;AACQ;AACR;AACQ;AACL;AACR;AAC7C;AACsC;AACG;AACJ;AACR;AACI;AACjC;AACiD;AACR;AACV;AACyC;AACxE;AACA,kBAAkB,oBAAoB;AACnB;AACnB;;AC5BsC;AACI;AAE1C,IAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,IAAM,kBAAkB,GAAG,OAAO,CAAC;AAE5B,IAAM,yBAAyB,GAAG,UAAC,KAAe;IACrD,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;QACtB,OAAO,kBAAkB,CAAC;IAE9B,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI;QACtB,OAAO,kBAAkB,CAAC;IAE9B,OAAO,UAAG,kBAAkB,cAAI,kBAAkB,CAAE,CAAC;AACzD,CAAC;AAEM,IAAM,qBAAqB,GAAG,UAAC,KAAe;IACjD,IAAM,QAAQ,G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","sources":["webpack://easydataCRUD/webpack/universalModuleDefinition","webpack://easydataCRUD/../ui/dist/lib/utils/browser_utils.js","webpack://easydataCRUD/webpack/bootstrap","webpack://easydataCRUD/webpack/runtime/define property getters","webpack://easydataCRUD/webpack/runtime/hasOwnProperty shorthand","webpack://easydataCRUD/webpack/runtime/make namespace object","webpack://easydataCRUD/../core/dist/lib/types/data_type.js","webpack://easydataCRUD/../core/dist/lib/types/entity_attr_kind.js","webpack://easydataCRUD/../core/dist/lib/types/editor_tag.js","webpack://easydataCRUD/../core/dist/lib/http/http_method.js","webpack://easydataCRUD/../core/dist/lib/http/http_request.js","webpack://easydataCRUD/../core/dist/lib/utils/string_utils.js","webpack://easydataCRUD/../core/dist/lib/i18n/i18n.js","webpack://easydataCRUD/../core/dist/lib/utils/utils.js","webpack://easydataCRUD/../core/dist/lib/http/http_action_result.js","webpack://easydataCRUD/../core/dist/lib/http/http_client.js","webpack://easydataCRUD/../core/dist/lib/meta/meta_entity.js","webpack://easydataCRUD/../core/dist/lib/meta/value_editor.js","webpack://easydataCRUD/../core/dist/lib/meta/meta_data.js","webpack://easydataCRUD/../core/dist/lib/data/aggr_settings.js","webpack://easydataCRUD/../core/dist/lib/data/data_column.js","webpack://easydataCRUD/../core/dist/lib/data/data_row.js","webpack://easydataCRUD/../core/dist/lib/data/easy_data_table.js","webpack://easydataCRUD/../core/dist/lib/utils/easy_guid.js","webpack://easydataCRUD/../core/dist/lib/event/event_emitter.js","webpack://easydataCRUD/../core/dist/lib/utils/liquid.js","webpack://easydataCRUD/../core/dist/lib/i18n/load_default_locale_settings.js","webpack://easydataCRUD/../core/dist/lib/public_api.js","webpack://easydataCRUD/./src/filter/text_data_filter.ts","webpack://easydataCRUD/../ui/dist/lib/utils/ui-utils.js","webpack://easydataCRUD/../ui/dist/lib/utils/mask.js","webpack://easydataCRUD/../ui/dist/lib/utils/dom_elem_builder.js","webpack://easydataCRUD/../ui/dist/lib/utils/drag_manager.js","webpack://easydataCRUD/../ui/dist/lib/grid/easy_grid_options.js","webpack://easydataCRUD/../ui/dist/lib/grid/easy_grid_cell_renderer.js","webpack://easydataCRUD/../ui/dist/lib/grid/easy_grid_columns.js","webpack://easydataCRUD/../ui/dist/lib/grid/easy_grid.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/calendar.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/date_time_picker.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/default_calendar.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/time_picker.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/default_time_picker.js","webpack://easydataCRUD/../ui/dist/lib/datetimepicker/default_date_time_picker.js","webpack://easydataCRUD/../ui/dist/lib/dialogs/dialog_service.js","webpack://easydataCRUD/../ui/dist/lib/dialogs/default_dialog_service.js","webpack://easydataCRUD/../ui/dist/lib/i18n/text_resources.js","webpack://easydataCRUD/../ui/dist/lib/public_api.js","webpack://easydataCRUD/./src/utils/utils.ts","webpack://easydataCRUD/./src/validators/validator.ts","webpack://easydataCRUD/./src/validators/datetime_validator.ts","webpack://easydataCRUD/./src/form/entity_edit_form.ts","webpack://easydataCRUD/./src/widgets/text_filter_widget.ts","webpack://easydataCRUD/./src/form/entity_form_builder.ts","webpack://easydataCRUD/./src/widgets/progress_bar.ts","webpack://easydataCRUD/./src/main/easy_data_server_loader.ts","webpack://easydataCRUD/./src/main/data_context.ts","webpack://easydataCRUD/./src/validators/type_validator.ts","webpack://easydataCRUD/./src/validators/required_validator.ts","webpack://easydataCRUD/./src/views/entity_data_view.ts","webpack://easydataCRUD/./src/views/root_data_view.ts","webpack://easydataCRUD/./src/views/easy_data_view_dispatcher.ts","webpack://easydataCRUD/./src/i18n/text_resources.ts","webpack://easydataCRUD/./src/public_api.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"easydataCRUD\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"easydataCRUD\"] = factory();\n\telse\n\t\troot[\"easydataCRUD\"] = factory();\n})(self, () => {\nreturn ","export var browserUtils;\n(function (browserUtils) {\n var _isFirefox = null;\n var _isIE = null;\n function IsIE() {\n // return eval('/*@cc_on!@*/false || !!document.documentMode');\n if (_isIE === null) {\n var ua = navigator.userAgent;\n /* MSIE used to detect old browsers and Trident used to newer ones*/\n _isIE = ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n }\n return _isIE;\n }\n browserUtils.IsIE = IsIE;\n function IsEdge() {\n return !IsIE() && eval('!!window.StyleMedia');\n }\n browserUtils.IsEdge = IsEdge;\n function IsFirefox() {\n if (_isFirefox === null) {\n var ua = navigator.userAgent;\n _isFirefox = ua.toLowerCase().indexOf('firefox') > -1;\n }\n return _isFirefox;\n }\n browserUtils.IsFirefox = IsFirefox;\n var _detectedIsMobileMode = false;\n var _isMobileMode = undefined;\n var detectIsMobileMode = function () {\n var oldValue = isMobileMode();\n _detectedIsMobileMode = window.matchMedia('only screen and (max-width: 840px)').matches\n || window.matchMedia('only screen and (max-height: 420px)').matches;\n var newValue = isMobileMode();\n if (newValue !== oldValue && mobileModeChangeHandler) {\n mobileModeChangeHandler(newValue);\n }\n };\n detectIsMobileMode();\n window.addEventListener('resize', function () { return detectIsMobileMode(); });\n function isMobileMode() {\n if (_isMobileMode !== undefined) {\n return _isMobileMode;\n }\n else {\n return _detectedIsMobileMode;\n }\n }\n browserUtils.isMobileMode = isMobileMode;\n function setIsMobileMode(value) {\n var oldValue = isMobileMode();\n _isMobileMode = value;\n var newValue = isMobileMode();\n if (newValue !== oldValue && mobileModeChangeHandler) {\n mobileModeChangeHandler(newValue);\n }\n }\n browserUtils.setIsMobileMode = setIsMobileMode;\n var mobileModeChangeHandler;\n function onMobileModeChanged(callback) {\n mobileModeChangeHandler = callback;\n }\n browserUtils.onMobileModeChanged = onMobileModeChanged;\n function getMobileCssClass() {\n return isMobileMode() ? 'k-mobile' : null;\n }\n browserUtils.getMobileCssClass = getMobileCssClass;\n})(browserUtils || (browserUtils = {}));\n//# sourceMappingURL=browser_utils.js.map","// 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","// 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};","/** Represents the common types of the data. */\nexport var DataType;\n(function (DataType) {\n /** Unknown type value*/\n DataType[DataType[\"Unknown\"] = 0] = \"Unknown\";\n /** String value*/\n DataType[DataType[\"String\"] = 1] = \"String\";\n /** 8-bit integer value */\n DataType[DataType[\"Byte\"] = 2] = \"Byte\";\n /** 16-bit integer value */\n DataType[DataType[\"Word\"] = 3] = \"Word\";\n /** 32-bit integer value */\n DataType[DataType[\"Int32\"] = 4] = \"Int32\";\n /** 64-bit integer value */\n DataType[DataType[\"Int64\"] = 5] = \"Int64\";\n /** Boolean value */\n DataType[DataType[\"Bool\"] = 6] = \"Bool\";\n /** Floating-point numeric value */\n DataType[DataType[\"Float\"] = 7] = \"Float\";\n /** Money value */\n DataType[DataType[\"Currency\"] = 8] = \"Currency\";\n /** Binary-coded decimal value */\n DataType[DataType[\"BCD\"] = 9] = \"BCD\";\n /** Date value */\n DataType[DataType[\"Date\"] = 10] = \"Date\";\n /** Time value */\n DataType[DataType[\"Time\"] = 11] = \"Time\";\n /** Date and time value */\n DataType[DataType[\"DateTime\"] = 12] = \"DateTime\";\n /** Autoincrement 32-bit integer value */\n DataType[DataType[\"Autoinc\"] = 13] = \"Autoinc\";\n /** MEMO value (text with unlimited length) */\n DataType[DataType[\"Memo\"] = 14] = \"Memo\";\n /** BLOB value (any data with unlimited length) */\n DataType[DataType[\"Blob\"] = 15] = \"Blob\";\n /** Fixed character value */\n DataType[DataType[\"FixedChar\"] = 16] = \"FixedChar\";\n /** The unique identifier */\n DataType[DataType[\"Guid\"] = 17] = \"Guid\";\n /*-------- Spatial data types ----------*/\n /** Any geometry data */\n DataType[DataType[\"Geometry\"] = 18] = \"Geometry\";\n /** Any data that represents some geography objects</summary> */\n DataType[DataType[\"Geography\"] = 19] = \"Geography\";\n})(DataType || (DataType = {}));\n//# sourceMappingURL=data_type.js.map","export var EntityAttrKind;\n(function (EntityAttrKind) {\n EntityAttrKind[EntityAttrKind[\"Data\"] = 0] = \"Data\";\n EntityAttrKind[EntityAttrKind[\"Virtual\"] = 1] = \"Virtual\";\n EntityAttrKind[EntityAttrKind[\"Lookup\"] = 2] = \"Lookup\";\n})(EntityAttrKind || (EntityAttrKind = {}));\n//# sourceMappingURL=entity_attr_kind.js.map","export var EditorTag = {\n /** Unknown tag value */\n Unknown: \"Unknown\",\n /** Edit tag value */\n Edit: \"EDIT\",\n /** DateTime tag value */\n DateTime: \"DATETIME\",\n /** List tag value */\n List: \"LIST\",\n /** CustomList tag value */\n CustomList: \"CUSTOMLIST\",\n /** File tag value */\n File: \"FILE\"\n};\n//# sourceMappingURL=editor_tag.js.map","export var HttpMethod;\n(function (HttpMethod) {\n HttpMethod[\"Trace\"] = \"TRACE\";\n HttpMethod[\"Options\"] = \"OPTIONS\";\n HttpMethod[\"Get\"] = \"GET\";\n HttpMethod[\"Put\"] = \"PUT\";\n HttpMethod[\"Post\"] = \"POST\";\n HttpMethod[\"Delete\"] = \"DELETE\";\n})(HttpMethod || (HttpMethod = {}));\n//# sourceMappingURL=http_method.js.map","var HttpRequest = /** @class */ (function () {\n function HttpRequest(xhr, descriptor) {\n this.xhr = xhr;\n this.method = descriptor.method;\n this.url = descriptor.url;\n this.headers = descriptor.headers;\n this.queryParams = descriptor.queryParams;\n this.data = descriptor.data;\n }\n HttpRequest.prototype.setHeader = function (name, value) {\n this.headers[name] = value;\n };\n HttpRequest.prototype.setQueryParam = function (name, value) {\n this.queryParams[name] = value;\n };\n HttpRequest.prototype.getXMLHttpRequest = function () {\n return this.xhr;\n };\n HttpRequest.prototype.getResponseHeaders = function () {\n if (this.xhr.readyState == this.xhr.HEADERS_RECEIVED) {\n var headers = this.xhr.getAllResponseHeaders();\n var arr = headers.trim().split(/[\\r\\n]+/);\n // Create a map of header names to values\n var headerMap = {};\n for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) {\n var line = arr_1[_i];\n var parts = line.split(': ');\n var header = parts.shift();\n var value = parts.join(': ');\n headerMap[header] = value;\n }\n return headerMap;\n }\n return {};\n };\n HttpRequest.prototype.open = function () {\n var _this = this;\n if (this.xhr.readyState !== this.xhr.UNSENT)\n return;\n var url = this.url;\n if (this.queryParams && Object.keys(this.queryParams).length > 0) {\n url += encodeURI('?' + Object.keys(this.queryParams)\n .map(function (param) { return param + '=' + _this.queryParams[param]; })\n .join('&'));\n }\n this.xhr.open(this.method, url, true);\n this.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n for (var header in this.headers) {\n this.xhr.setRequestHeader(header, this.headers[header]);\n }\n };\n HttpRequest.prototype.abort = function () {\n this.xhr.abort();\n };\n return HttpRequest;\n}());\nexport { HttpRequest };\n//# sourceMappingURL=http_request.js.map","export function repeatString(str, times) {\n var result = \"\";\n for (var i = 0; i < times; i++) {\n result += str;\n }\n return result;\n}\nexport function reverseString(str) {\n return str.split(\"\").reverse().join(\"\");\n}\nexport function strEndsWith(str, symbol) {\n return str && str.lastIndexOf(symbol) == (str.length - symbol.length);\n}\n/**\n * Adds two paths and returns the result\n * Correctly processes leading and trailing slashes\n * @param path1\n * @param path2\n */\nexport function combinePath(path1, path2) {\n var result = path1;\n if (result != null && result.length > 0) {\n if (result.charAt(result.length - 1) != '/')\n result += \"/\";\n result += path2;\n }\n else {\n result = path2;\n }\n return result;\n}\n//# sourceMappingURL=string_utils.js.map","import { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\n/**\n * Contains internatialization functionality.\n */\nexport var i18n;\n(function (i18n) {\n var englishUSLocaleSettings = {\n shortDateFormat: 'MM/dd/yyyy',\n longDateFormat: 'dd MMM, yyyy',\n editDateFormat: 'MM/dd/yyyy',\n shortTimeFormat: 'HH:mm',\n editTimeFormat: 'HH:mm',\n longTimeFormat: 'HH:mm:ss',\n shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n longMonthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'],\n shortWeekDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n longWeekDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n decimalSeparator: '.',\n currency: 'USD'\n };\n var defaultLocale = {\n localeId: 'en-US',\n englishName: 'English',\n displayName: 'English',\n texts: {\n ButtonOK: 'OK',\n ButtonCancel: 'Cancel',\n Yes: 'Yes',\n No: 'No',\n True: 'True',\n False: 'False'\n },\n settings: englishUSLocaleSettings\n };\n var allLocales = {\n 'en-US': defaultLocale\n };\n var currentLocale;\n var mappers = [];\n function mapInfo(info) {\n for (var _i = 0, mappers_1 = mappers; _i < mappers_1.length; _i++) {\n var mapper = mappers_1[_i];\n mapper(info);\n }\n }\n function addMapper(mapper) {\n mappers.push(mapper);\n }\n i18n.addMapper = addMapper;\n /**\n * Gets added locales with their names.\n * @returns The locales.\n */\n function getLocales() {\n var result = [];\n for (var locale in allLocales) {\n result.push({\n locale: locale,\n englishName: allLocales[locale].englishName,\n displayName: allLocales[locale].displayName\n });\n }\n return result.sort(function (a, b) {\n if (a.englishName > b.englishName) {\n return 1;\n }\n else if (a.englishName === b.englishName) {\n return 0;\n }\n return -1;\n });\n }\n i18n.getLocales = getLocales;\n /**\n * Gets the current locale ID.\n * @returns The locale.\n */\n function getCurrentLocale() {\n return currentLocale.localeId;\n }\n i18n.getCurrentLocale = getCurrentLocale;\n /**\n * Sets the curent locale.\n * @deprecated Use setCurrentLocale instead\n * @param l The locale.\n */\n function setLocale(l) {\n console.warn('This method is deprecated. Use setCurrentLocale instead');\n setCurrentLocale(l);\n }\n i18n.setLocale = setLocale;\n /**\n * Sets the curent locale.\n * @param localeId The locale.\n */\n function setCurrentLocale(localeId) {\n var newLocale = allLocales[localeId];\n if (newLocale) {\n utils.assignDeep(currentLocale, newLocale);\n }\n else {\n currentLocale.englishName = localeId;\n currentLocale.displayName = localeId;\n currentLocale.texts = utils.assignDeep({}, defaultLocale.texts);\n }\n currentLocale.localeId = localeId;\n }\n i18n.setCurrentLocale = setCurrentLocale;\n /**\n * Returns localized text by the key defined in parameter.\n * Here we get the text of the resource string assigned to CmdClickToAddCondition key:\n *\n ```\n const text = i18n.getText('CmdClickToAddCondition')\n ```\n * @param args The keys of the resource string.\n * @returns Text of the resource defined by key or null if the key is not found\n *\n */\n function getText() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var textsObj = currentLocale.texts;\n var resText = '';\n if (args && args.length) {\n var argLength = args.length;\n for (var i = 0; i < argLength; i++) {\n resText = textsObj[args[i]];\n if (typeof resText === 'object') {\n textsObj = resText;\n }\n else {\n break;\n }\n }\n }\n return resText;\n }\n i18n.getText = getText;\n function getLocaleSettings() {\n return currentLocale.settings;\n }\n i18n.getLocaleSettings = getLocaleSettings;\n function getOneLocaleSetting(key) {\n return currentLocale.settings[key];\n }\n i18n.getOneLocaleSetting = getOneLocaleSetting;\n function getShortMonthName(monthNum) {\n var settings = getLocaleSettings();\n if (monthNum > 0 && monthNum < 13) {\n return settings.shortMonthNames[monthNum - 1];\n }\n else {\n throw 'Wrong month number: ' + monthNum;\n }\n }\n i18n.getShortMonthName = getShortMonthName;\n function getLongMonthName(monthNum) {\n var settings = getLocaleSettings();\n if (monthNum > 0 && monthNum < 13) {\n return settings.longMonthNames[monthNum - 1];\n }\n else {\n throw 'Wrong month number: ' + monthNum;\n }\n }\n i18n.getLongMonthName = getLongMonthName;\n function getShortWeekDayName(dayNum) {\n var settings = getLocaleSettings();\n if (dayNum > 0 && dayNum < 8) {\n return settings.shortWeekDayNames.length >= dayNum\n ? settings.shortWeekDayNames[dayNum - 1]\n : dayNum.toString();\n }\n else {\n throw 'Wrong month number: ' + dayNum;\n }\n }\n i18n.getShortWeekDayName = getShortWeekDayName;\n function getLongWeekDayName(dayNum) {\n var settings = getLocaleSettings();\n if (dayNum > 0 && dayNum < 8) {\n return settings.longWeekDayNames.length >= dayNum\n ? settings.longWeekDayNames[dayNum - 1]\n : dayNum.toString();\n }\n else {\n throw 'Wrong month number: ' + dayNum;\n }\n }\n i18n.getLongWeekDayName = getLongWeekDayName;\n /**\n * Updates the locale settings (date/time formats, separators, etc) for the specified locale.\n * @param settingsToUpdate a LocaleSettings object\n */\n function updateLocaleSettings(settingsToUpdate) {\n if (!currentLocale.settings) {\n currentLocale.settings = utils.assignDeep({}, englishUSLocaleSettings);\n }\n currentLocale.settings = utils.assignDeep(currentLocale.settings, settingsToUpdate);\n }\n i18n.updateLocaleSettings = updateLocaleSettings;\n /**\n * Updates the texts for the current locale\n * @param texts A plain JS object that contains textual resources\n */\n function updateLocaleTexts(texts) {\n if (typeof texts !== 'object') {\n console.error('Wrong parameter type in updateLocaleTexts function call.' +\n 'The first parameter (localeId) is not necessary. Use updateLocaleTexts(texts) instead');\n return;\n }\n mapInfo({ localeId: currentLocale.localeId, texts: texts });\n utils.assignDeep(currentLocale.texts, texts);\n }\n i18n.updateLocaleTexts = updateLocaleTexts;\n function updateDefaultTexts(texts) {\n for (var localeId in allLocales) {\n var locale = allLocales[localeId];\n locale.texts = utils.assignDeep({}, texts, locale.texts);\n }\n currentLocale.texts = utils.assignDeep({}, texts, currentLocale.texts);\n }\n i18n.updateDefaultTexts = updateDefaultTexts;\n /**\n * Updates the information for the specified locale.\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\n * If the locale does exist yet - it will be added\n * @param localeInfo a LocaleInfo object that contains the locale settings and textual resources\n */\n function updateLocaleInfo(localeId, localeData) {\n mapInfo(localeData);\n var localeInfoToUpdate = currentLocale;\n if (localeId) {\n if (!localeData.localeId) {\n localeData.localeId = localeId;\n }\n localeInfoToUpdate = allLocales[localeId];\n if (!localeInfoToUpdate) {\n localeInfoToUpdate = utils.assignDeep({}, defaultLocale);\n allLocales[localeId] = localeInfoToUpdate;\n }\n }\n utils.assignDeep(localeInfoToUpdate, localeData);\n }\n i18n.updateLocaleInfo = updateLocaleInfo;\n /**\n * Adds the locale.\n * @param localeId The locale ID (like 'en', 'de', 'uk', etc).\n * If the locale does exist yet - it will be created\n * @param localeInfo - a LocaleInfo object that contains the locale settings and textual resources\n */\n function addLocale(localeId, localeInfo) {\n updateLocaleInfo(localeId, localeInfo);\n }\n i18n.addLocale = addLocale;\n /**\n * Overwrites some locale settings (date/time formats) with the formats used in browser's current language\n */\n function determineSettingsByLocale(localeId) {\n var now = new Date(2020, 5, 7, 19, 34, 56, 88);\n var dateOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\n var dateStr = now.toLocaleDateString(localeId, dateOptions);\n var timeStr = now.toLocaleTimeString(localeId, timeOptions);\n var dateFormat = dateStr\n .replace('07', 'dd')\n .replace('7', 'd')\n .replace('06', 'MM')\n .replace('6', 'M')\n .replace('2020', 'yyyy')\n .replace('20', 'yy');\n var timeFormat = timeStr\n .replace('19', 'HH')\n .replace('07', 'hh')\n .replace('7', 'h')\n .replace('34', 'mm')\n .replace('56', 'ss')\n .replace('PM', 'tt');\n if (!currentLocale.settings) {\n currentLocale.settings = {};\n }\n var localeSettings = {\n shortDateFormat: dateFormat,\n shortTimeFormat: timeFormat\n };\n updateLocaleSettings(localeSettings);\n }\n function loadBrowserLocaleSettings() {\n var lang = typeof navigator === 'object' ? navigator.language : undefined;\n determineSettingsByLocale(lang);\n }\n function resetLocales() {\n if (!currentLocale) {\n currentLocale = utils.assignDeep({}, defaultLocale);\n loadBrowserLocaleSettings();\n }\n }\n i18n.resetLocales = resetLocales;\n function dateTimeToStr(dateTime, dataType, format) {\n if (format) {\n if (format == 'd') {\n format = buildShortDateTimeFormat(DataType.Date);\n }\n else if (format == 'D') {\n format = buildLongDateTimeFormat(DataType.Date);\n }\n else if (format == 'f') {\n format = buildShortDateTimeFormat(DataType.DateTime);\n }\n else if (format == 'F') {\n format = buildLongDateTimeFormat(DataType.DateTime);\n }\n }\n else {\n format = buildShortDateTimeFormat(dataType);\n }\n return utils.dateTimeToStr(dateTime, format);\n }\n i18n.dateTimeToStr = dateTimeToStr;\n function buildShortDateTimeFormat(dataType) {\n var localeSettings = getLocaleSettings();\n var format;\n switch (dataType) {\n case DataType.Date:\n format = localeSettings.shortDateFormat;\n break;\n case DataType.Time:\n format = localeSettings.shortTimeFormat;\n break;\n default:\n format = localeSettings.shortDateFormat + ' ' + localeSettings.shortTimeFormat;\n break;\n }\n return format;\n }\n function buildLongDateTimeFormat(dataType) {\n var localeSettings = getLocaleSettings();\n var format;\n switch (dataType) {\n case DataType.Date:\n format = localeSettings.longDateFormat;\n break;\n case DataType.Time:\n format = localeSettings.longTimeFormat;\n break;\n default:\n format = localeSettings.longDateFormat + ' ' + localeSettings.longTimeFormat;\n break;\n }\n return format;\n }\n function numberToStr(number, format) {\n if (format && format.length > 0) {\n var type = format.charAt(0).toUpperCase();\n if (type === 'S') {\n return formatWithSequence(number, format.slice(1));\n }\n else if (['D', 'F', 'C'].indexOf(type) >= 0) {\n var locale = getCurrentLocale();\n return number.toLocaleString(locale, getNumberFormatOptions(format));\n }\n else {\n return convertWithMask(Math.trunc(number), format);\n }\n }\n var localeSettings = getLocaleSettings();\n return utils.numberToStr(number, localeSettings.decimalSeparator);\n }\n i18n.numberToStr = numberToStr;\n function booleanToStr(bool, format) {\n if (format && format.length > 0) {\n var type = format.charAt(0).toUpperCase();\n if (type === 'S') {\n var values = format.slice(1).split('|');\n if (values.length > 1) {\n var value = values[(bool) ? 1 : 0];\n return i18n.getText(value) || value;\n }\n }\n }\n return \"\".concat(bool);\n }\n i18n.booleanToStr = booleanToStr;\n var cachedSequenceFormats = {};\n function formatWithSequence(number, format) {\n if (!cachedSequenceFormats[format]) {\n // parse and save in cache format values \n var values_2 = format.split('|')\n .filter(function (v) { return v.length > 0; })\n .map(function (v) { return v.split('='); });\n cachedSequenceFormats[format] = {};\n if (values_2.length > 0) {\n if (values_2[0].length > 1) {\n for (var _i = 0, values_1 = values_2; _i < values_1.length; _i++) {\n var value = values_1[_i];\n cachedSequenceFormats[format][Number.parseInt(value[1])] = value[0];\n }\n }\n else {\n values_2.forEach(function (value, index) {\n cachedSequenceFormats[format][index] = value[0];\n });\n }\n }\n }\n var values = cachedSequenceFormats[format];\n if (values[number] !== undefined) {\n var value = values[number];\n return i18n.getText(value) || value;\n }\n return number.toString();\n }\n function convertWithMask(number, mask) {\n var value = number.toString();\n var result = '';\n var index = value.length - 1;\n for (var i = mask.length - 1; i >= 0; i--) {\n var ch = mask.charAt(i);\n if (ch === '#' || ch === '0') {\n if (index >= 0) {\n result += value.charAt(index);\n index--;\n }\n else {\n if (ch === '0') {\n result += 0;\n }\n }\n }\n else {\n result += ch;\n }\n }\n return result.split('').reverse().join('');\n }\n function getNumberFormatOptions(format) {\n var localeSettings = getLocaleSettings();\n var type = format[0].toUpperCase();\n var digits = (format.length > 1)\n ? Number.parseInt(format.slice(1))\n : type == 'D' ? 1 : 2;\n switch (type) {\n case 'D':\n return {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: digits\n };\n case 'C':\n return {\n style: 'currency',\n currency: localeSettings.currency,\n minimumFractionDigits: digits\n };\n default:\n return {\n style: 'decimal',\n minimumFractionDigits: digits,\n maximumFractionDigits: digits\n };\n }\n }\n})(i18n || (i18n = {}));\n//# sourceMappingURL=i18n.js.map","import * as strf from './string_utils';\nimport { DataType } from '../types/data_type';\nimport { i18n } from '../i18n/i18n';\nexport var utils;\n(function (utils) {\n function getAllDataTypes() {\n return Object.values(DataType).filter(function (item) { return typeof item === \"number\"; });\n }\n utils.getAllDataTypes = getAllDataTypes;\n function getDateDataTypes() {\n return [DataType.Time, DataType.Date, DataType.DateTime];\n }\n utils.getDateDataTypes = getDateDataTypes;\n function getStringDataTypes() {\n return [DataType.String, DataType.Memo, DataType.FixedChar];\n }\n utils.getStringDataTypes = getStringDataTypes;\n var _numericTypes = [DataType.Byte, DataType.Word, DataType.Int32,\n DataType.Int64, DataType.Float, DataType.Currency, DataType.Autoinc];\n function getNumericDataTypes() {\n return _numericTypes;\n }\n utils.getNumericDataTypes = getNumericDataTypes;\n var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64, DataType.Autoinc];\n //-------------- object functions -------------------\n /**\n * Copy the content of all objests passed in `args` parameters into `target`\n * and returns the result\n * NB: This function copies only the first level properties.\n * For a deep copy please use `assignDeep`\n * @param target - the target object\n * @param args - an array of the source objects\n */\n function assign(target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n }\n utils.assign = assign;\n /**\n * Copy the content of all objests passed in `args` parameters into `target`\n * and returns the result\n * NB: This function make a deep copy -\n * so `assignDeep` will be called recursively for all object properties\n * on the first level.\n * @param target - the target object\n * @param sources - an array of the source objects\n */\n function assignDeep(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n return assignDeepCore(new WeakMap(), target, sources);\n }\n utils.assignDeep = assignDeep;\n function assignDeepCore(hashSet, target, sources) {\n if (!target) {\n target = {};\n }\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n if (source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var sourceVal = source[key];\n if (sourceVal !== null && typeof sourceVal === 'object') {\n if (hashSet.has(sourceVal)) {\n target[key] = hashSet.get(sourceVal);\n }\n else {\n if (Array.isArray(sourceVal)) {\n target[key] = createArrayFrom(sourceVal);\n hashSet.set(sourceVal, target[key]);\n }\n else {\n if (typeof target[key] == 'undefined' || target[key] == null) {\n target[key] = Object.create(Object.getPrototypeOf(sourceVal));\n }\n hashSet.set(sourceVal, target[key]);\n assignDeepCore(hashSet, target[key], [sourceVal]);\n }\n }\n }\n else {\n target[key] = sourceVal;\n }\n }\n }\n }\n }\n return target;\n }\n function getIfDefined(value, defaultValue) {\n return (typeof value !== 'undefined') ? value : defaultValue;\n }\n utils.getIfDefined = getIfDefined;\n function IsDefinedAndNotNull(value) {\n return typeof value !== 'undefined' && value !== null;\n }\n utils.IsDefinedAndNotNull = IsDefinedAndNotNull;\n function copyArrayTo(collection1, collection2) {\n var len1 = collection1.length;\n var len2 = collection2.length;\n for (var i = 0; i < len1 && i < len2; i++) {\n collection2[i] = collection1[i];\n }\n }\n utils.copyArrayTo = copyArrayTo;\n function createArrayFrom(collection) {\n var result = [];\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var item = collection_1[_i];\n result.push(item);\n }\n return result;\n }\n utils.createArrayFrom = createArrayFrom;\n /**\n * Searches an array of the objects which implement ItemWithId by ID\n * Returs the found object or null.\n * @param array\n * @param id\n */\n function findItemById(array, id) {\n var arrLength = array.length;\n for (var idx = 0; idx < arrLength; idx++) {\n if (array[idx].id === id)\n return array[idx];\n }\n return null;\n }\n utils.findItemById = findItemById;\n function findItemIndexById(array, id) {\n var arrLength = array.length;\n for (var idx = 0; idx < arrLength; idx++) {\n if (array[idx].id === id)\n return idx;\n }\n return -1;\n }\n utils.findItemIndexById = findItemIndexById;\n /**\n * Searches an array of the objects which implement ItemWithId by ID\n * Returs the index of the found element, or -1 if nothing was found.\n * @param array\n * @param id\n */\n function indexOfArrayItem(arr, item) {\n if (arr.indexOf) {\n return arr.indexOf(item);\n }\n else {\n var len = arr.length;\n for (var i = 0; i < len; i++) {\n if (item == arr[i]) {\n return i;\n }\n }\n return -1;\n }\n }\n utils.indexOfArrayItem = indexOfArrayItem;\n /**\n * Moves an item in some array to a new position\n * @param array\n * @param index1\n * @param index2\n */\n function moveArrayItem(array, index1, index2) {\n if (index1 >= array.length) {\n throw 'Index out of bounds: ' + index1;\n }\n if (index2 >= array.length) {\n index2 = array.length - 1;\n }\n var item = array.splice(index1, 1)[0];\n array.splice(index2, 0, item);\n }\n utils.moveArrayItem = moveArrayItem;\n /**\n * Searches for a particular item in the array are removes that item if found.\n * @param arr\n * @param value\n */\n function removeArrayItem(arr, value) {\n var index = arr.indexOf(value);\n if (index != -1) {\n return arr.splice(index, 1)[0];\n }\n }\n utils.removeArrayItem = removeArrayItem;\n function insertArrayItem(arr, index, value) {\n arr.splice(index, 0, value);\n }\n utils.insertArrayItem = insertArrayItem;\n function fillArray(arr, value, start, end) {\n if (start === void 0) { start = 0; }\n var len = arr.length >>> 0;\n var relativeStart = start >> 0;\n var k = relativeStart < 0 ?\n Math.max(len + relativeStart, 0) :\n Math.min(relativeStart, len);\n var relativeEnd = end === undefined ?\n len : end >> 0;\n var final = relativeEnd < 0 ?\n Math.max(len + relativeEnd, 0) :\n Math.min(relativeEnd, len);\n while (k < final) {\n arr[k] = value;\n k++;\n }\n return arr;\n }\n utils.fillArray = fillArray;\n //------------ DOM utils ------------\n /**\n * Calculates the shift on which we need to move our element horizontally\n * to find current window\n * @param absLeft\n * @param width\n */\n function shiftToFitWindow(absLeft, width) {\n var body = document.getElementsByTagName('body')[0];\n var winWidth = window.innerWidth || document.documentElement.clientWidth || body.clientWidth;\n var absRight = absLeft + width;\n var shift = 0;\n if (absRight > winWidth) {\n shift = winWidth - absRight - 10;\n if (absLeft + shift < 0) {\n shift = 10 - absLeft;\n }\n }\n return shift;\n }\n utils.shiftToFitWindow = shiftToFitWindow;\n /**\n * Returns `true` if the value passed in the parameter is an object\n * @param val\n */\n function isObject(val) {\n if (val === null) {\n return false;\n }\n return ((typeof val === 'function') || (typeof val === 'object'));\n }\n utils.isObject = isObject;\n /**\n * Returns `true` if the `DataType` value passed in the parameter\n * represents some numeric type\n * @param dtype\n */\n function isNumericType(dtype) {\n var index = _numericTypes.indexOf(dtype);\n return (index >= 0);\n }\n utils.isNumericType = isNumericType;\n /**\n * Returns `true` if the `DataType` value passed in the parameter\n * represents some numeric type\n * @param dtype\n */\n function isIntType(dtype) {\n var index = _intTypes.indexOf(dtype);\n return (index >= 0);\n }\n utils.isIntType = isIntType;\n /**\n * Returns `true` if the value passed in the parameter is an a numeric value\n * @param val\n */\n function isNumeric(val) {\n return !isNaN(parseFloat(val)) && isFinite(val);\n }\n utils.isNumeric = isNumeric;\n /**\n * Returns `true` if two data types passed in parameters\n * are compatible - so it's safe to copy the values between\n * two expressions with these two types\n * @param type1\n * @param type2\n */\n function areCompatibleDataTypes(type1, type2) {\n return typeof type1 == \"undefined\" || typeof type2 == \"undefined\" || type1 == DataType.Unknown || type2 == DataType.Unknown\n || (type1 == type2) || (type1 == DataType.Date && type2 == DataType.DateTime)\n || (type1 == DataType.DateTime && type2 == DataType.Date);\n }\n utils.areCompatibleDataTypes = areCompatibleDataTypes;\n /**\n * Returns `true` if the property with named `propName`\n * in the object `obj` has some value\n * @param obj\n * @param propName\n */\n function isPropSet(obj, propName) {\n return obj[propName] || obj[propName.toLowerCase()] || obj[propName.toUpperCase()];\n }\n utils.isPropSet = isPropSet;\n //-------------- ID generator -----------\n var prefixIdLen = 4;\n var symbols = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n var magicTicks = 636712160627685350;\n /**\n * Generates an unique ID\n */\n function generateId(prefix) {\n if (!prefix) {\n prefix = 'easy';\n }\n var prfx = (prefix.length > prefixIdLen) ? squeezeMoniker(prefix, prefixIdLen) : prefix;\n if (prfx && prfx.length > 0) {\n prfx += \"-\";\n }\n //adding 2 random symbols\n var randValue = strf.repeatString(\"\", 2);\n ;\n var maxSymbolIndex = symbols.length - 1;\n randValue = replaceAtString(randValue, 0, symbols[getRandomInt(0, maxSymbolIndex)]);\n randValue = replaceAtString(randValue, 1, symbols[getRandomInt(0, maxSymbolIndex)]);\n //generating main ID part (64-base representation of the current value of the time ticks)\n var ticksNum64 = intToNum36(getNowTicks() - magicTicks);\n return prfx + randValue + ticksNum64;\n }\n utils.generateId = generateId;\n function intToNum36(value) {\n var targetBase = 36;\n var i = 14;\n var buffer = strf.repeatString(\"\", i);\n var rest = value;\n do {\n buffer = replaceAtString(buffer, i--, symbols[rest % targetBase]);\n rest = Math.floor(rest /= targetBase);\n } while (rest > 0);\n return strf.reverseString(buffer.trim());\n }\n function squeezeMoniker(str, maxlen) {\n var parts = str.split('-');\n var pml = 1;\n var ptt = maxlen;\n if (parts.length < maxlen) {\n pml = maxlen / parts.length;\n ptt = parts.length;\n }\n var result = \"\";\n for (var i = 0; i < ptt; i++) {\n result += squeeze(parts[i], pml);\n }\n return result;\n }\n function squeeze(str, maxlen) {\n var len = str.length;\n if (len > maxlen) {\n var step = len / maxlen;\n var result = \"\";\n result += str[0];\n var nextIndex = step;\n var ch = void 0;\n for (var i = 1; i < len; i++) {\n ch = str[i];\n if (i + 1 > nextIndex) {\n result += ch;\n nextIndex += step;\n }\n }\n return result;\n }\n else {\n return str;\n }\n }\n function replaceAtString(str, index, value) {\n return str.substr(0, index) + value + str.substr(index + value.length);\n }\n function getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n }\n function getNowTicks() {\n return (621355968e9 + (new Date()).getTime() * 1e4);\n }\n function safeParseInt(str) {\n var res = parseInt(str);\n if (isNaN(res))\n throw \"\\\"\".concat(str, \"\\\" is not a valid number\");\n return res;\n }\n function getDaysInMonth(month, year) {\n return new Date(year, month + 1, 0).getDate();\n }\n // ------------- date/time functions -------------------\n // TO DO: improve to process all datetime cases\n function strToDateTime(value, format) {\n if (!value || value.length == 0)\n return new Date();\n var normalizedValue = value.replace(/[^a-zA-Z0-9_]/g, '-');\n var normalizedFormat = format.replace(/[^a-zA-Z0-9_]/g, '-');\n var formatItems = normalizedFormat.split('-');\n var dateItems = normalizedValue.split('-');\n var monthIndex = formatItems.indexOf(\"MM\");\n var dayIndex = formatItems.indexOf(\"dd\");\n var yearIndex = formatItems.indexOf(\"yyyy\");\n var hourIndex = formatItems.indexOf(\"HH\");\n var minutesIndex = formatItems.indexOf(\"mm\");\n var secondsIndex = formatItems.indexOf(\"ss\");\n var today = new Date();\n try {\n var year = yearIndex > -1 && yearIndex < dateItems.length\n ? safeParseInt(dateItems[yearIndex])\n : today.getFullYear();\n var month = monthIndex > -1 && monthIndex < dateItems.length\n ? safeParseInt(dateItems[monthIndex]) - 1\n : today.getMonth() - 1;\n if (month > 11)\n throw '';\n var day = dayIndex > -1 && dayIndex < dateItems.length\n ? safeParseInt(dateItems[dayIndex])\n : today.getDate();\n if (day > getDaysInMonth(month, year))\n throw '';\n var hour = hourIndex > -1 && hourIndex < dateItems.length\n ? safeParseInt(dateItems[hourIndex])\n : 0;\n if (hour > 23)\n throw '';\n var minute = minutesIndex > -1 && minutesIndex < dateItems.length\n ? safeParseInt(dateItems[minutesIndex])\n : 0;\n if (minute > 59)\n throw '';\n var second = secondsIndex > -1 && secondsIndex < dateItems.length\n ? safeParseInt(dateItems[secondsIndex])\n : 0;\n if (second > 59)\n throw '';\n return new Date(year, month, day, hour, minute, second);\n }\n catch (_a) {\n throw \"\".concat(value, \" is not a valid date.\");\n }\n }\n utils.strToDateTime = strToDateTime;\n function strToTime(str) {\n var timeItems = str.split(':');\n try {\n var hour = timeItems.length > 0 ? safeParseInt(timeItems[0]) : 0;\n if (hour > 23)\n throw '';\n var minute = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\n if (minute > 59)\n throw '';\n var second = timeItems.length > 1 ? safeParseInt(timeItems[1]) : 0;\n if (second > 59)\n throw '';\n return new Date(0, 0, 0, hour, minute, second);\n }\n catch (_a) {\n throw \"\".concat(str, \" is not a valid time.\");\n }\n }\n utils.strToTime = strToTime;\n var DT_FORMAT_RGEX = /\\[([^\\]]+)]|y{2,4}|M{1,4}|d{1,2}|H{1,2}|h{1,2}|m{2}|s{2}|t{2}/g;\n /**\n * Returns string representation of the date/time value according to the custom format (second parameter)\n * The format is compatible with the one used in .NET: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings\n * @param date\n * @param format\n */\n function dateTimeToStr(date, format) {\n var year = date.getFullYear();\n var yearStr = year.toString();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var hour = date.getHours();\n var minute = date.getMinutes();\n var second = date.getSeconds();\n var hour12 = hour % 12 || 12; //the remainder of the division by 12. Or 12 if it's 0\n var isPm = hour > 11;\n var matches = {\n yyyy: yearStr,\n yy: yearStr.substring(yearStr.length - 2),\n MMMM: i18n.getLongMonthName(month),\n MMM: i18n.getShortMonthName(month),\n MM: (month < 10) ? '0' + month : month.toString(),\n M: month.toString(),\n dd: (day < 10) ? '0' + day : day.toString(),\n d: day.toString(),\n HH: (hour < 10) ? '0' + hour : hour.toString(),\n H: hour.toString(),\n hh: (hour12 < 10) ? '0' + hour12 : hour12.toString(),\n h: hour12.toString(),\n tt: isPm ? 'PM' : 'AM',\n mm: (minute < 10) ? '0' + minute : minute.toString(),\n ss: (second < 10) ? '0' + second : second.toString()\n };\n return format.replace(DT_FORMAT_RGEX, function (match, $1) {\n return $1 || matches[match];\n });\n }\n utils.dateTimeToStr = dateTimeToStr;\n /**\n * Converts a numeric value to the string taking into the account the decimal separator\n * @param value - the number to convert\n * @param decimalSeparator - the symbol that represents decimal separator. If not specified the function gets the one from the current locale settings.\n */\n function numberToStr(number, decimalSeparator) {\n decimalSeparator = decimalSeparator || i18n.getLocaleSettings().decimalSeparator;\n return number.toString().replace('.', decimalSeparator);\n }\n utils.numberToStr = numberToStr;\n})(utils || (utils = {}));\n//# sourceMappingURL=utils.js.map","var HttpActionResult = /** @class */ (function () {\n function HttpActionResult(request, promise) {\n this.request = request;\n this.promise = promise;\n }\n HttpActionResult.prototype.getPromise = function () {\n return this.promise;\n };\n HttpActionResult.prototype.getRequest = function () {\n return this.request;\n };\n HttpActionResult.prototype.then = function (onfulfilled, onrejected) {\n return this.promise.then(onfulfilled, onrejected);\n };\n HttpActionResult.prototype.catch = function (onrejected) {\n return this.promise.catch(onrejected);\n };\n HttpActionResult.prototype.finally = function (onfinally) {\n return this.promise.finally(onfinally);\n };\n return HttpActionResult;\n}());\nexport { HttpActionResult };\n//# sourceMappingURL=http_action_result.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { utils } from '../utils/utils';\nimport { HttpActionResult } from './http_action_result';\nimport { HttpMethod } from './http_method';\nimport { HttpRequest } from './http_request';\nvar HttpResponseError = /** @class */ (function (_super) {\n __extends(HttpResponseError, _super);\n function HttpResponseError(status, message) {\n var _this = _super.call(this, message) || this;\n _this.status = status;\n return _this;\n }\n return HttpResponseError;\n}(Error));\nexport { HttpResponseError };\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n this.defaultHeaders = {};\n this.customPayload = undefined;\n }\n Object.defineProperty(HttpClient.prototype, \"responseBody\", {\n /** Gets the response body for the latest request */\n get: function () {\n return this._responseBody;\n },\n enumerable: false,\n configurable: true\n });\n HttpClient.prototype.get = function (url, options) {\n return this.send(HttpMethod.Get, url, null, options);\n };\n HttpClient.prototype.post = function (url, data, options) {\n return this.send(HttpMethod.Post, url, data, options);\n };\n HttpClient.prototype.put = function (url, data, options) {\n return this.send(HttpMethod.Put, url, data, options);\n };\n HttpClient.prototype.delete = function (url, data, options) {\n return this.send(HttpMethod.Delete, url, data, options);\n };\n HttpClient.prototype.send = function (method, url, data, options) {\n var _this = this;\n options = options || {};\n var dataType = options.dataType || 'json';\n var contentType = options.contentType || (dataType !== 'form-data')\n ? 'application/json'\n : null;\n if (data && dataType != 'form-data' && this.customPayload) {\n data.data = utils.assignDeep(data.data || {}, this.customPayload);\n }\n var XHR = ('onload' in new XMLHttpRequest())\n ? XMLHttpRequest\n : window[\"XDomainRequest\"]; //IE support\n var xhr = new XHR();\n var desc = {\n method: method,\n url: url,\n headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),\n queryParams: options.queryParams || {},\n data: data\n };\n if (contentType)\n desc.headers['Content-Type'] = contentType;\n var request = new HttpRequest(xhr, desc);\n if (this.beforeEachRequest) {\n console.warn(\"HttpClient: 'beforeEachRequest' is deprecated and will be removed in future updates.\\n Use 'onRequest' instead\");\n this.beforeEachRequest(request);\n }\n if (this.onRequest) {\n this.onRequest(request);\n }\n var dataToSend = (request.data && typeof request.data !== 'string'\n && dataType == 'json')\n ? JSON.stringify(request.data)\n : request.data;\n request.open();\n return new HttpActionResult(request, new Promise(function (resolve, reject) {\n if (options.responseType)\n xhr.responseType = options.responseType;\n xhr.onerror = function (error) {\n reject(new HttpResponseError(xhr.status, xhr.responseText));\n };\n xhr.onreadystatechange = function () {\n if (xhr.readyState != 4)\n return; //we process only the state change to DONE(4)\n var responseContentType = xhr.getResponseHeader('Content-Type') || '';\n var status = xhr.status;\n if (status === 0) {\n reject(new HttpResponseError(status, \"Network error or the request was aborted\"));\n }\n else if (status >= 200 && status < 400) {\n //Success\n var responseObj = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\n ? xhr.response\n : (responseContentType.indexOf('application/json') == 0\n ? JSON.parse(xhr.responseText)\n : xhr.responseText);\n _this._responseBody = responseObj;\n if (_this.onResponse) {\n _this.onResponse(xhr);\n }\n resolve(responseObj);\n }\n else {\n //Error\n var rtPromise = (xhr.responseType === 'arraybuffer' || xhr.responseType === 'blob')\n ? HttpClient.decodeArrayBuffer(xhr.response)\n : Promise.resolve(xhr.responseText);\n rtPromise.then(function (responseText) {\n var responseObj = (responseContentType.indexOf('application/json') == 0)\n ? JSON.parse(responseText)\n : responseText;\n _this._responseBody = responseObj;\n var message = responseObj.message ||\n (status == 404\n ? \"No such endpoint: \".concat(url)\n : responseObj);\n reject(new HttpResponseError(status, message));\n });\n }\n };\n xhr.send(dataToSend);\n }));\n };\n HttpClient.decodeArrayBuffer = function (uintArray) {\n var reader = new FileReader();\n return new Promise(function (resolve) {\n reader.onloadend = function () {\n if (reader.readyState == FileReader.DONE) {\n resolve(reader.result);\n }\n };\n reader.readAsText(new Blob([uintArray]));\n });\n };\n return HttpClient;\n}());\nexport { HttpClient };\n//# sourceMappingURL=http_client.js.map","import { DataType } from '../types/data_type';\nimport { EntityAttrKind } from '../types/entity_attr_kind';\nimport { utils } from '../utils/utils';\n/**\n * Represents one entity.\n */\nvar MetaEntity = /** @class */ (function () {\n /** The default constructor. */\n function MetaEntity(parent) {\n /** Returns false if this entity is read-only */\n this.isEditable = true;\n this.name = \"\";\n this.caption = \"\";\n this.description = \"\";\n this.parent = parent;\n this.attributes = new Array();\n this.subEntities = new Array();\n }\n /**\n * Loads entity from its JSON representation object.\n * @param model The Data Model.\n * @param dto The JSON representation object.\n */\n MetaEntity.prototype.loadFromData = function (model, dto) {\n if (dto) {\n this.id = dto.id;\n this.name = dto.name;\n this.captionPlural = dto.namePlur;\n this.caption = dto.name;\n this.description = dto.desc;\n if (typeof (dto.ied) !== 'undefined')\n this.isEditable = dto.ied;\n this.subEntities = new Array();\n if (dto.ents) {\n for (var i = 0; i < dto.ents.length; i++) {\n var newEntity = model.createEntity(this);\n newEntity.loadFromData(model, dto.ents[i]);\n this.subEntities.push(newEntity);\n }\n }\n this.attributes = new Array();\n if (dto.attrs) {\n for (var i = 0; i < dto.attrs.length; i++) {\n var newAttr = model.createEntityAttr(this);\n newAttr.loadFromData(model, dto.attrs[i]);\n this.attributes.push(newAttr);\n }\n }\n }\n };\n MetaEntity.prototype.scan = function (processAttribute, processEntity) {\n var opts = { stop: false };\n var internalProcessEntity = function (entity) {\n if (processEntity)\n processEntity(entity, opts);\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var i = 0; (i < attrCount) && !opts.stop; i++) {\n var attr = entity.attributes[i];\n if (processAttribute) {\n processAttribute(attr, opts);\n }\n if (opts.stop)\n return;\n }\n }\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var i = 0; (i < subEntityCount) && !opts.stop; i++) {\n internalProcessEntity(entity.subEntities[i]);\n }\n }\n };\n internalProcessEntity(this);\n };\n MetaEntity.prototype.getFirstPrimaryAttr = function () {\n return this.getPrimaryAttrs()[0];\n };\n MetaEntity.prototype.getPrimaryAttrs = function () {\n return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });\n };\n return MetaEntity;\n}());\nexport { MetaEntity };\nvar MetaEntityAttr = /** @class */ (function () {\n /** The default constructor. */\n function MetaEntityAttr(entity) {\n this.id = \"\";\n this.caption = \"{Unrecognized attribute}\";\n this.dataType = DataType.String;\n this.size = 0;\n this.isPrimaryKey = false;\n this.isForeignKey = false;\n this.isNullable = true;\n this.showOnView = true;\n this.isEditable = true;\n this.showOnCreate = true;\n this.showOnEdit = true;\n this.showInLookup = false;\n this.lookupAttr = \"\";\n this.expr = \"\";\n this.entity = entity;\n this.kind = EntityAttrKind.Data;\n }\n /**\n * Loads entity attribute from JSON representation object.\n * @param model The Data Model.\n * @param dto The JSON representation object.\n */\n MetaEntityAttr.prototype.loadFromData = function (model, dto) {\n if (dto) {\n this.id = dto.id;\n this.description = dto.desc;\n this.caption = dto.cptn;\n this.dataType = dto.dtype;\n this.isPrimaryKey = dto.ipk;\n this.isForeignKey = dto.ifk;\n this.size = dto.size;\n this.lookupAttr = dto.lattr;\n this.lookupEntity = dto.lent;\n this.dataAttr = dto.dattr;\n this.lookupDataAttr = dto.ldattr;\n var isDataType = utils.getDateDataTypes().indexOf(this.dataType);\n this.defaultValue = dto.defVal && isDataType ? new Date(dto.defVal) : dto.defVal;\n this.isNullable = utils.getIfDefined(dto.nul, this.isNullable);\n this.isEditable = utils.getIfDefined(dto.ied, this.isEditable);\n this.showOnView = utils.getIfDefined(dto.ivis || dto.sov, this.showOnView);\n this.showOnCreate = utils.getIfDefined(dto.soc, this.showOnCreate);\n this.showOnEdit = utils.getIfDefined(dto.soe, this.showOnEdit);\n this.showInLookup = utils.getIfDefined(dto.sil, this.showInLookup);\n this.kind = dto.kind;\n this.displayFormat = dto.dfmt;\n if (dto.udata)\n this.userData = dto.udata;\n if (dto.edtr) {\n this.defaultEditor = model.getEditorById(dto.edtr) || model.createValueEditor();\n }\n }\n };\n return MetaEntityAttr;\n}());\nexport { MetaEntityAttr };\n//# sourceMappingURL=meta_entity.js.map","import { EditorTag } from '../types/editor_tag';\nimport { DataType } from '../types/data_type';\n/**\n * Represents a value editor.\n */\nvar ValueEditor = /** @class */ (function () {\n /** The default constructor. */\n function ValueEditor() {\n this.id = \"\";\n this.tag = EditorTag.Unknown;\n this.resType = DataType.Unknown;\n this.defValue = \"\";\n }\n /**\n * Loads value editor from its JSON representation object.\n * @param data The JSON representation object.\n */\n ValueEditor.prototype.loadFromData = function (data) {\n if (data) {\n this.id = data.id;\n this.tag = data.tag;\n this.defValue = data.defval;\n this.resType = data.rtype;\n this.accept = data.accept;\n this.multiline = data.multiline;\n if (data.subType) {\n this.resType = data.subType;\n }\n if (data.name) {\n this.name = data.name;\n }\n if (data.values) {\n this.values = data.values;\n }\n }\n };\n ValueEditor.prototype.getValueText = function (value) {\n var result = \"\";\n if (!this.values)\n return result;\n if (Array.isArray(value)) {\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\n var item = _a[_i];\n if (value.indexOf(item.id) >= 0) {\n result += item.text + ',';\n }\n }\n }\n else {\n for (var _b = 0, _c = this.values; _b < _c.length; _b++) {\n var item = _c[_b];\n if (item.id === value) {\n result += item.text + ',';\n }\n }\n }\n if (result) {\n result = result.substring(0, result.length - 1);\n }\n return result;\n };\n return ValueEditor;\n}());\nexport { ValueEditor };\n//# sourceMappingURL=value_editor.js.map","import { i18n } from '../i18n/i18n';\nimport { utils } from '../utils/utils';\nimport { EditorTag } from '../types/editor_tag';\nimport { DataType } from '../types/data_type';\nimport { MetaEntity, MetaEntityAttr } from './meta_entity';\nimport { ValueEditor } from './value_editor';\n/**\n * Represents a data model\n */\nvar MetaData = /** @class */ (function () {\n /** The default constructor. */\n function MetaData() {\n this.mainEntity = null;\n this.id = '__none';\n this.name = 'Empty model';\n this.rootEntity = this.createEntity();\n this.displayFormats = new Map();\n }\n /**\n * Gets the main entity of model\n * @return The main entity.\n */\n MetaData.prototype.getMainEntity = function () {\n return this.mainEntity;\n };\n MetaData.prototype.createEntity = function (parent) {\n return new MetaEntity(parent);\n };\n MetaData.prototype.createEntityAttr = function (parent) {\n return new MetaEntityAttr(parent);\n };\n MetaData.prototype.createValueEditor = function () {\n return new ValueEditor();\n };\n /**\n * Loads data model from JSON.\n * @param stringJson The JSON string.\n */\n MetaData.prototype.loadFromJSON = function (stringJson) {\n var model = JSON.parse(stringJson);\n this.loadFromData(model);\n };\n /**\n * Loads data model from its JSON representation object.\n * @param data The JSON representation object.\n */\n MetaData.prototype.loadFromData = function (data) {\n this.id = data.id;\n this.name = data.name;\n this.version = data.vers;\n //Editors\n this.editors = new Array();\n if (data.editors) {\n for (var i = 0; i < data.editors.length; i++) {\n var newEditor = this.createValueEditor();\n newEditor.loadFromData(data.editors[i]);\n this.editors.push(newEditor);\n }\n }\n //rootEntity\n this.rootEntity.loadFromData(this, data.entroot);\n //DataFormats\n this.displayFormats = new Map();\n if (data.displayFormats) {\n for (var dtypeStr in data.displayFormats) {\n var dtype = DataType[dtypeStr];\n var formats = data.displayFormats[dtypeStr] || new Array();\n this.displayFormats.set(dtype, formats);\n }\n }\n };\n /**\n * Gets the display formats.\n * @returns The display formats.\n */\n MetaData.prototype.getDisplayFormats = function () {\n return this.displayFormats;\n };\n /**\n * Gets the display formats for type\n * @param type The type\n * @returns An array of display formats\n */\n MetaData.prototype.getDisplayFormatsForType = function (type) {\n if (this.displayFormats.has(type)) {\n return this.displayFormats.get(type);\n }\n return [];\n };\n /**\n * Gets the default display format for the provided type\n * @param type The type\n * @returns The default type format or null\n */\n MetaData.prototype.getDefaultFormat = function (type) {\n if (this.displayFormats.has(type)) {\n return this.displayFormats.get(type).filter(function (f) { return f.isdef; })[0];\n }\n return null;\n };\n /**\n * Sets data to data model.\n * @param model Its JSON representation object or JSON string.\n */\n MetaData.prototype.setData = function (model) {\n if (typeof model === 'string') {\n this.loadFromJSON(model);\n }\n else {\n this.loadFromData(model);\n }\n };\n /**\n * Checks wether the data model is empty.\n * @returns `true` if the data model is empty, otherwise `false`.\n */\n MetaData.prototype.isEmpty = function () {\n return this.rootEntity.subEntities.length === 0 && this.rootEntity.attributes.length === 0;\n };\n /**\n * Gets ID of the data model.\n * @returns The ID.\n */\n MetaData.prototype.getId = function () {\n return this.id;\n };\n /**\n * Gets name of the data model.\n * @returns The name.\n */\n MetaData.prototype.getName = function () {\n return this.name;\n };\n /**\n * Gets root entity of the data model.\n * @returns The root entity.\n */\n MetaData.prototype.getRootEntity = function () {\n return this.rootEntity;\n };\n /**\n * Finds editor by its ID.\n * @param editorId The editor ID.\n * @returns The value editor or `null`.\n */\n MetaData.prototype.getEditorById = function (editorId) {\n for (var _i = 0, _a = this.editors; _i < _a.length; _i++) {\n var editor = _a[_i];\n if (editor.id === editorId) {\n return editor;\n }\n }\n return null;\n };\n /**\n * Gets entity attribute by its ID.\n * This function runs through all attributes inside specified model (it's root entity and all its sub-entities).\n * @param attrId The attribute ID.\n * @returns The attribute or `null`.\n */\n MetaData.prototype.getAttributeById = function (attrId) {\n var attr = this.getEntityAttrById(this.getRootEntity(), attrId);\n if (!attr) {\n return null;\n }\n return attr;\n };\n /**\n * Checks wether attribute contains such property.\n * @param attrId The attribute ID.\n * @param propName The property name.\n * @returns `true` if the attribute contains the property, otherwise `false`.\n */\n MetaData.prototype.checkAttrProperty = function (attrId, propName) {\n var attribute = this.getAttributeById(attrId);\n if (attribute) {\n if (typeof attribute[propName] === 'undefined') {\n throw 'No such property: ' + propName;\n }\n if (attribute[propName]) {\n return true;\n }\n else if (attribute.lookupAttr) {\n attrId = attribute.lookupAttr;\n attribute = this.getAttributeById(attrId);\n return attribute && attribute[propName];\n }\n else {\n return false;\n }\n }\n else\n return false;\n };\n /**\n * Gets entity attribute by its ID.\n * This function runs through all attributes inside specified entity and all its sub-entities.\n * @param entity\n * @param attrId\n * @returns The attribute or `null`.\n */\n MetaData.prototype.getEntityAttrById = function (entity, attrId) {\n var idx;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (idx = 0; idx < attrCount; idx++) {\n if (entity.attributes[idx].id == attrId) {\n return entity.attributes[idx];\n }\n }\n }\n var res;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (idx = 0; idx < subEntityCount; idx++) {\n res = this.getEntityAttrById(entity.subEntities[idx], attrId);\n if (res)\n return res;\n }\n }\n return null;\n };\n MetaData.prototype.listByEntityWithFilter = function (entity, filterFunc) {\n var result = new Array();\n var caption;\n var ent = null;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\n ent = entity.subEntities[entIdx];\n if (!filterFunc || filterFunc(ent, null)) {\n caption = i18n.getText('Entities', ent.name);\n if (!caption) {\n caption = ent.caption;\n }\n var newEnt = utils.assign(this.createEntity(), { id: ent.name, text: caption, items: [], isEntity: true });\n newEnt.items = this.listByEntityWithFilter(ent, filterFunc);\n if (newEnt.items.length > 0)\n result.push(newEnt);\n }\n }\n }\n var attr = null;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\n attr = entity.attributes[attrIdx];\n if (!filterFunc || filterFunc(entity, attr)) {\n caption = i18n.getText('Attributes', attr.id);\n if (!caption)\n caption = attr.caption;\n var newEnt = utils.assign(this.createEntity(), { id: attr.id, text: caption, dataType: attr.dataType });\n result.push(newEnt);\n }\n }\n }\n return result;\n };\n MetaData.prototype.listByEntity = function (entity, opts, filterFunc) {\n opts = opts || {};\n var resultEntities = [];\n var resultAttributes = [];\n var caption;\n var ent = null;\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var entIdx = 0; entIdx < subEntityCount; entIdx++) {\n ent = entity.subEntities[entIdx];\n if (!filterFunc || filterFunc(ent, null)) {\n caption = i18n.getText('Entities', ent.name) || ent.caption;\n var newEnt = utils.assign(this.createEntity(), {\n id: ent.name,\n text: caption,\n items: [],\n isEntity: true,\n description: ent.description\n });\n var newOpts = utils.assign({}, opts);\n newOpts.includeRootData = false;\n newEnt.items = this.listByEntity(ent, newOpts, filterFunc);\n if (newEnt.items.length > 0) {\n resultEntities.push(newEnt);\n }\n }\n }\n }\n var attr = null;\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var attrIdx = 0; attrIdx < attrCount; attrIdx++) {\n attr = entity.attributes[attrIdx];\n if (!filterFunc || filterFunc(entity, attr)) {\n caption = i18n.getText('Attributes', attr.id) || attr.caption;\n resultAttributes.push(utils.assign(this.createEntityAttr(entity), {\n id: attr.id, text: caption,\n dataType: attr.dataType, lookupAttr: attr.lookupAttr,\n description: attr.description\n }));\n }\n }\n }\n var sortCheck = function (a, b) {\n if (a.text.toLowerCase() == b.text.toLowerCase()) {\n return 0;\n }\n if (a.text.toLowerCase() > b.text.toLowerCase()) {\n return 1;\n }\n return -1;\n };\n if (opts.sortEntities) {\n resultEntities.sort(sortCheck);\n resultAttributes.sort(sortCheck);\n }\n var result;\n if (!opts.attrPlacement || opts.attrPlacement == 0) {\n result = resultEntities.concat(resultAttributes);\n }\n else {\n result = resultAttributes.concat(resultEntities);\n }\n if (opts.attrPlacement == 2) {\n result.sort(sortCheck);\n }\n if (opts.includeRootData) {\n caption = i18n.getText('Entities', entity.name);\n if (!caption)\n caption = entity.caption;\n return { id: entity.name, text: caption, items: result };\n }\n else {\n return result;\n }\n };\n /**\n * Clears data model.\n */\n MetaData.prototype.clear = function () {\n this.rootEntity = this.createEntity();\n this.editors = [];\n this.version = '';\n };\n /**\n * Add default value editors.\n */\n MetaData.prototype.addDefaultValueEditors = function () {\n var ve;\n ve = this.addOrUpdateValueEditor('_DTE', EditorTag.Edit, DataType.String);\n ve.defValue = '';\n this.addOrUpdateValueEditor('_DPDE', EditorTag.DateTime, DataType.DateTime);\n this.addOrUpdateValueEditor('_DPTE', EditorTag.DateTime, DataType.DateTime);\n };\n /**\n * Add or update a value editor.\n * @param id The id.\n * @param tag The tag.\n * @param resType The result type.\n * @returns The value editor.\n */\n MetaData.prototype.addOrUpdateValueEditor = function (id, tag, resType) {\n var ve = utils.findItemById(this.editors, id);\n if (!ve) {\n ve = this.createValueEditor();\n ve.id = id;\n this.editors.push(ve);\n }\n ve.tag = tag;\n ve.resType = resType;\n return ve;\n };\n /**\n * Gets entities tree.\n * @param opts The options.\n * @param filterFunc The filter function.\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\n * @returns The tree of the entities and their attributes according to options and the filter function\n */\n MetaData.prototype.getEntitiesTree = function (opts, filterFunc) {\n return this.listByEntity(this.getRootEntity(), opts, filterFunc);\n };\n /**\n * Gets entities tree due to filter.\n * @param filterFunc The filter function.\n * Takes two parameters, Entity and EntityAttr (second parameter will be null for entities), and returns boolean (true if the corresponding entity or attribute).\n * @returns The tree of the entities and their attributes according to the filter function\n */\n MetaData.prototype.getEntitiesTreeWithFilter = function (filterFunc) {\n return this.listByEntityWithFilter(this.getRootEntity(), filterFunc);\n };\n /**\n * Finds full entity path by attribute\n * @param attrId The attribute id.\n * @param sep The separator.\n * @returns The path.\n */\n MetaData.prototype.getFullEntityPathByAttr = function (attrId, sep) {\n sep = sep || ' ';\n return this.getEntityPathByAttr(this.getRootEntity(), attrId, sep, true);\n };\n /**\n * Finds entity path by attribute\n * @param entity The entity.\n * @param attrId The attribute id.\n * @param sep The separator.\n * @param root The root option.\n * @returns The path.\n */\n MetaData.prototype.getEntityPathByAttr = function (entity, attrId, sep, root) {\n if (!entity)\n return '';\n sep = sep || ' ';\n var entityCaption = '';\n if (entity.caption && !root) {\n var entityText = i18n.getText('Entities', entity.caption);\n entityCaption = entityText ? entityText : entity.caption;\n }\n if (entity.attributes) {\n var attrCount = entity.attributes.length;\n for (var i = 0; i < attrCount; i++) {\n if (entity.attributes[i].id == attrId) {\n return entityCaption;\n }\n }\n }\n if (entity.subEntities) {\n var subEntityCount = entity.subEntities.length;\n for (var i = 0; i < subEntityCount; i++) {\n var ent = entity.subEntities[i];\n var res = this.getEntityPathByAttr(ent, attrId, sep, false);\n if (res !== '') {\n if (entityCaption !== '')\n res = entityCaption + sep + res;\n return res;\n }\n }\n }\n return '';\n };\n /**\n * Gets the attribute text.\n * @param attr The attribute.\n * @param format The format.\n * @returns Formatted text.\n */\n MetaData.prototype.getAttributeText = function (attr, format) {\n var attrText = i18n.getText('Attributes', attr.id);\n if (!attrText) {\n attrText = attr.caption;\n }\n if (!format) {\n return attrText;\n }\n var result = '';\n var entityPath = this.getFullEntityPathByAttr(attr.id, ' ');\n if (entityPath) {\n result = format.replace(new RegExp('{attr}', 'g'), attrText);\n result = result.replace(new RegExp('{entity}', 'g'), entityPath);\n }\n else {\n result = attrText;\n }\n return result.trim();\n };\n /**\n * Scans model's entity tree and calls the callback functions for each attribute and entity.\n * @param processAttribute The callback function which is called for each attribute in model's entity tree.\n * The processed attribute is passed in the first function parameter.\n * @param processEntity The callback function which is called for each entity in tree.\n * The processed entity is passed in the first function parameter.\n */\n MetaData.prototype.runThroughEntities = function (processAttribute, processEntity) {\n this.getRootEntity().scan(processAttribute, processEntity);\n };\n /**\n * Finds first attribute by filter.\n * @param filterFunc The filter function. Takes EntityAttr object in parameter and returns boolean\n */\n MetaData.prototype.getFirstAttributeByFilter = function (filterFunc) {\n var res = null;\n this.runThroughEntities(function (attr, opts) {\n if (filterFunc(attr)) {\n opts.stop = true;\n res = attr;\n }\n }, null);\n return res;\n };\n return MetaData;\n}());\nexport { MetaData };\n//# sourceMappingURL=meta_data.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * Defines aggregations settings for the current context.\n * Group, aggregate columns, grand totals, etc.\n */\nvar AggregationSettings = /** @class */ (function () {\n function AggregationSettings(colStore) {\n this.colStore = colStore;\n this.aggregates = [];\n this.groups = [];\n this.useGrandTotals = false;\n this.useRecordCount = false;\n this._caseSensitiveGroups = false;\n this.COUNT_FIELD_NAME = 'GRPRECCNT';\n }\n Object.defineProperty(AggregationSettings.prototype, \"caseSensitiveGroups\", {\n get: function () {\n return this._caseSensitiveGroups;\n },\n set: function (value) {\n this._caseSensitiveGroups = value;\n this.updateCompareProc();\n },\n enumerable: false,\n configurable: true\n });\n AggregationSettings.prototype.updateCompareProc = function () {\n this.compareValues = this._caseSensitiveGroups\n ? this.strictCompare\n : this.caseInsensitiveCompare;\n };\n AggregationSettings.prototype.addGroup = function (settings) {\n var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);\n if (!this.colStore.validateColumns(cols))\n throw \"Invalid columns: \" + cols;\n if (this.hasColumnsInUse(cols))\n throw \"Can't add same columns to different groups/aggregates\";\n this.groups.push(__assign({ columns: cols }, settings));\n return this;\n };\n AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {\n var colId = typeof colIndexOrId == 'string'\n ? colIndexOrId\n : this.colStore.getColumnIds(colIndexOrId, colIndexOrId)[0];\n if (this.hasColumnsInUse([colId]) || !this.colStore.validateAggregate(colId, funcId))\n throw 'Invalid aggregation function for the column: ' + colId;\n this.aggregates.push({ colId: colId, funcId: funcId });\n return this;\n };\n AggregationSettings.prototype.addGrandTotals = function () {\n this.useGrandTotals = true;\n return this;\n };\n AggregationSettings.prototype.addCounts = function () {\n this.useRecordCount = true;\n return this;\n };\n AggregationSettings.prototype.getGroups = function () {\n var _this = this;\n var cols = [];\n var mappedGrops = this.groups.map(function (grp) {\n cols = cols.concat(grp.columns);\n return __assign(__assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });\n });\n return mappedGrops;\n };\n AggregationSettings.prototype.getInternalGroups = function () {\n return this.groups;\n };\n AggregationSettings.prototype.lastGroup = function () {\n var groups = this.getGroups();\n return groups[groups.length - 1];\n };\n AggregationSettings.prototype.getAggregates = function () {\n return this.aggregates;\n };\n AggregationSettings.prototype.hasAggregates = function () {\n return this.aggregates.length > 0;\n };\n AggregationSettings.prototype.hasGroups = function () {\n return this.groups.length > 0;\n };\n AggregationSettings.prototype.hasGrandTotals = function () {\n return this.useGrandTotals;\n };\n AggregationSettings.prototype.hasRecordCount = function () {\n return this.useRecordCount;\n };\n AggregationSettings.prototype.isEmpty = function () {\n return !(this.hasAggregates() || this.hasGroups() ||\n this.hasAggregates() || this.hasRecordCount());\n };\n AggregationSettings.prototype.drop = function () {\n console.warn('\"drop()\" method is obsolete. Use \"clear()\" instead');\n this.clear();\n };\n AggregationSettings.prototype.clear = function () {\n this.groups = [];\n this.aggregates = [];\n this.useGrandTotals = false;\n this.useRecordCount = false;\n this.caseSensitiveGroups = false;\n return this;\n };\n /**\n * Checks if all columns from the list passed in the parameter are \"unused\".\n * Here \"unused column\" means a column that is included neither in any group nor in the aggregates list.\n * @param cols - the array of column IDs\n * @returns true if all columns in the list are not used anywhere, othervise - fals\n */\n AggregationSettings.prototype.hasColumnsInUse = function (cols) {\n for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {\n var group = _a[_i];\n var interCols = group.columns\n .filter(function (c) { return cols.indexOf(c) >= 0; });\n if (interCols.length > 0)\n return true;\n }\n for (var _b = 0, _c = this.aggregates; _b < _c.length; _b++) {\n var aggr = _c[_b];\n if (cols.indexOf(aggr.colId) >= 0)\n return true;\n }\n return false;\n };\n AggregationSettings.prototype.needAggrCalculation = function () {\n return (this.hasAggregates() || this.hasRecordCount())\n && (this.hasGrandTotals() || this.hasGroups());\n };\n AggregationSettings.prototype.saveToData = function () {\n return {\n groups: Array.from(this.groups),\n ugt: this.useGrandTotals,\n urc: this.useRecordCount,\n csg: this.caseSensitiveGroups,\n aggregates: Array.from(this.aggregates)\n };\n };\n AggregationSettings.prototype.loadFromData = function (data) {\n if (data) {\n if (typeof data.ugt !== 'undefined')\n this.useGrandTotals = data.ugt;\n if (typeof data.urc !== 'undefined')\n this.useRecordCount = data.urc;\n if (typeof data.csg !== 'undefined')\n this.caseSensitiveGroups = data.csg;\n if (data.groups) {\n this.groups = Array.from(data.groups);\n }\n if (data.aggregates) {\n this.aggregates = Array.from(data.aggregates);\n }\n }\n };\n AggregationSettings.prototype.buildGroupKey = function (group, row) {\n var caseInsensitive = !this.caseSensitiveGroups;\n var result = {};\n if (group) {\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\n var colId = _a[_i];\n var keyVal = row.getValue(colId);\n if (caseInsensitive && typeof (keyVal) === 'string') {\n keyVal = keyVal.toLowerCase();\n }\n result[colId] = keyVal;\n }\n }\n return result;\n };\n //returns true if value1 == value2\n AggregationSettings.prototype.strictCompare = function (value1, value2) {\n if (value1 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n else\n return value1 === value2;\n };\n //makes a case insensative comparision of two values and return true if there are equal\n AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {\n if (value1 instanceof Date) {\n return value1.getTime() === value2.getTime();\n }\n else {\n var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;\n var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;\n return val1 === val2;\n }\n };\n return AggregationSettings;\n}());\nexport { AggregationSettings };\n//# sourceMappingURL=aggr_settings.js.map","import { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\nexport var ColumnAlignment;\n(function (ColumnAlignment) {\n ColumnAlignment[ColumnAlignment[\"None\"] = 0] = \"None\";\n ColumnAlignment[ColumnAlignment[\"Left\"] = 1] = \"Left\";\n ColumnAlignment[ColumnAlignment[\"Center\"] = 2] = \"Center\";\n ColumnAlignment[ColumnAlignment[\"Right\"] = 3] = \"Right\";\n})(ColumnAlignment || (ColumnAlignment = {}));\nvar DataColumn = /** @class */ (function () {\n function DataColumn(desc) {\n if (!desc)\n throw Error(\"Options are required\");\n if (!desc.id)\n throw Error(\"Field Id is required\");\n if (!desc.label)\n throw Error(\"Label is required\");\n this.id = desc.id;\n this.type = utils.getIfDefined(desc.type, DataType.String);\n this.label = desc.label;\n this.originAttrId = desc.originAttrId;\n this.isAggr = desc.isAggr || false;\n this.displayFormat = desc.dfmt;\n this.groupFooterColumnTemplate = desc.gfct;\n this.style = desc.style || {};\n this.description = desc.description;\n this.calculatedWidth = 0;\n }\n return DataColumn;\n}());\nexport { DataColumn };\nvar DataColumnList = /** @class */ (function () {\n function DataColumnList() {\n this.items = [];\n this.mapper = {};\n this._dateColumnIdx = [];\n }\n Object.defineProperty(DataColumnList.prototype, \"count\", {\n get: function () {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n DataColumnList.prototype.add = function (colOrDesc) {\n var col;\n if (colOrDesc instanceof DataColumn) {\n col = colOrDesc;\n }\n else {\n col = new DataColumn(colOrDesc);\n }\n var index = this.items.length;\n this.items.push(col);\n this.mapper[col.id] = index;\n if ([DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0) {\n this._dateColumnIdx.push(index);\n }\n return index;\n };\n DataColumnList.prototype.updateDateColumnIdx = function () {\n this._dateColumnIdx = this.getItems()\n .filter(function (col) { return [DataType.Date, DataType.DateTime, DataType.Time].indexOf(col.type) >= 0; })\n .map(function (col, index) { return index; });\n };\n DataColumnList.prototype.put = function (index, col) {\n if (index >= 0 && index < this.count) {\n this.items[index] = col;\n this.updateDateColumnIdx();\n }\n };\n DataColumnList.prototype.move = function (col, newIndex) {\n var oldIndex = this.items.indexOf(col);\n if (oldIndex >= 0 && oldIndex != newIndex) {\n utils.moveArrayItem(this.items, oldIndex, newIndex);\n this.updateDateColumnIdx();\n }\n };\n DataColumnList.prototype.get = function (index) {\n if (index >= 0 && index < this.count) {\n return this.items[index];\n }\n else {\n return null;\n }\n };\n DataColumnList.prototype.getIndex = function (id) {\n return this.mapper[id];\n };\n DataColumnList.prototype.getItems = function () {\n return this.items;\n };\n DataColumnList.prototype.getDateColumnIndexes = function () {\n return this._dateColumnIdx;\n };\n DataColumnList.prototype.removeAt = function (index) {\n var col = this.get(index);\n this.items.splice(index, 1);\n var removeDate = this._dateColumnIdx.indexOf(index);\n if (removeDate >= 0) {\n this._dateColumnIdx.splice(removeDate, 1);\n }\n delete this.mapper[col.id];\n };\n DataColumnList.prototype.clear = function () {\n this.items = [];\n this._dateColumnIdx = [];\n this.mapper = {};\n };\n return DataColumnList;\n}());\nexport { DataColumnList };\n//# sourceMappingURL=data_column.js.map","var DataRow = /** @class */ (function () {\n function DataRow(columns, values) {\n this.columns = columns;\n this.values = values;\n }\n DataRow.prototype.toArray = function () {\n return Array.from(this.values);\n };\n DataRow.prototype.size = function () {\n return this.values.length;\n };\n DataRow.prototype.getValue = function (colIdOrIndex) {\n var index;\n if (typeof colIdOrIndex === \"string\") {\n index = this.columns.getIndex(colIdOrIndex);\n if (index === undefined) {\n throw new RangeError(\"No column with id '\".concat(colIdOrIndex, \"'\"));\n }\n }\n else {\n index = colIdOrIndex;\n }\n if (index >= this.values.length)\n throw new RangeError(\"Out of range: \" + index);\n return this.values[index];\n };\n DataRow.prototype.setValue = function (colIdOrIndex, value) {\n var index;\n if (typeof colIdOrIndex === \"string\") {\n index = this.columns.getIndex(colIdOrIndex);\n if (index === undefined) {\n throw new RangeError(\"No column with id '\".concat(colIdOrIndex, \"'\"));\n }\n }\n else {\n index = colIdOrIndex;\n }\n if (index >= this.values.length)\n throw new RangeError(\"Out of range: \" + index);\n this.values[index] = value;\n };\n return DataRow;\n}());\nexport { DataRow };\n//# sourceMappingURL=data_row.js.map","import { DataColumnList } from './data_column';\nimport { DataRow } from './data_row';\nimport { DataType } from '../types/data_type';\nimport { utils } from '../utils/utils';\nvar EasyDataTable = /** @class */ (function () {\n function EasyDataTable(options) {\n this._chunkSize = 1000;\n this._elasticChunks = false;\n this.cachedRows = [];\n this.total = 0;\n this.loader = null;\n this.needTotal = true;\n this.isInMemory = false;\n options = options || {};\n this._chunkSize = options.chunkSize || this._chunkSize;\n this._elasticChunks = options.elasticChunks || this._elasticChunks;\n this.loader = options.loader;\n if (typeof options.inMemory !== 'undefined') {\n this.isInMemory = options.inMemory;\n }\n if (this.isInMemory) {\n this.needTotal = false;\n }\n this._columns = new DataColumnList();\n this.onUpdate = options.onUpdate;\n if (options.columns) {\n for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {\n var colDesc = _a[_i];\n this._columns.add(colDesc);\n }\n }\n if (options.rows) {\n for (var _b = 0, _c = options.rows; _b < _c.length; _b++) {\n var rowData = _c[_b];\n var row = this.createRow(rowData);\n this.addRow(row);\n }\n }\n this.needTotal = !this._elasticChunks;\n }\n Object.defineProperty(EasyDataTable.prototype, \"columns\", {\n get: function () {\n return this._columns;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EasyDataTable.prototype, \"chunkSize\", {\n get: function () {\n return this._chunkSize;\n },\n set: function (value) {\n this._chunkSize = value;\n this.total = 0;\n this.needTotal = !this.elasticChunks;\n this.cachedRows = [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EasyDataTable.prototype, \"elasticChunks\", {\n get: function () {\n return this._elasticChunks;\n },\n set: function (value) {\n this._elasticChunks = value;\n this.total = 0;\n this.needTotal = !this.elasticChunks;\n this.cachedRows = [];\n },\n enumerable: false,\n configurable: true\n });\n EasyDataTable.prototype.getRows = function (params) {\n var _this = this;\n var fromIndex = 0, count = this._chunkSize;\n if (params) {\n if ('page' in params) {\n fromIndex = params.pageSize * (params.page - 1);\n count = params.pageSize;\n }\n else {\n fromIndex = params.offset;\n count = params.limit;\n }\n }\n var endIndex = fromIndex + count; //the first index of the next page\n //if we don't calculate total on this request\n if (!this.needTotal && !this.elasticChunks) {\n if (fromIndex >= this.total) {\n return Promise.resolve([]);\n }\n if (endIndex > this.total) {\n endIndex = this.total;\n }\n }\n if (this.isInMemory && endIndex > this.cachedRows.length) {\n endIndex = this.cachedRows.length;\n }\n var allChunksCached = endIndex <= this.cachedRows.length;\n if (allChunksCached) {\n return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));\n }\n //if loader is not defined\n if (!this.loader) {\n throw \"Loader is not defined. Can't get the rows from \".concat(fromIndex, \" to \").concat(endIndex);\n }\n // we need total only for the first request\n var needTotal = this.needTotal;\n if (this.needTotal) {\n this.needTotal = false;\n }\n var offset = this.cachedRows.length;\n var limit = endIndex - offset;\n if (limit < this._chunkSize) {\n limit = this._chunkSize;\n }\n var resultPromise = this.loader.loadChunk({\n offset: offset,\n limit: limit,\n needTotal: needTotal\n })\n .then(function (result) {\n if (needTotal) {\n _this.total = result.total;\n }\n Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());\n if (endIndex > _this.cachedRows.length) {\n endIndex = _this.cachedRows.length;\n }\n if (_this.elasticChunks) {\n var count_1 = result.table.getCachedCount();\n if (count_1 < limit) {\n _this.total = _this.cachedRows.length;\n }\n }\n _this.fireUpdated();\n return _this.cachedRows.slice(fromIndex, endIndex);\n });\n return resultPromise;\n };\n EasyDataTable.prototype.getRow = function (index) {\n return this.getRows({ offset: index, limit: 1 })\n .then(function (rows) { return rows.length > 0 ? rows[0] : null; });\n };\n EasyDataTable.prototype.getTotal = function () {\n return this.total;\n };\n EasyDataTable.prototype.setTotal = function (total) {\n this.total = total;\n this.needTotal = false;\n };\n EasyDataTable.prototype.getCachedCount = function () {\n return this.cachedRows.length;\n };\n EasyDataTable.prototype.clear = function () {\n this.columns.clear();\n this.cachedRows = [];\n this.total = 0;\n this.needTotal = !this._elasticChunks;\n this.fireUpdated();\n };\n EasyDataTable.prototype.createRow = function (dataOrRow) {\n var _this = this;\n var dateIdx = this._columns.getDateColumnIndexes();\n var values = new Array(this._columns.count);\n var getValue = dataOrRow instanceof DataRow\n ? function (colId) { return dataOrRow.getValue(colId); }\n : function (colId) { return dataOrRow[colId]; };\n if (dataOrRow) {\n this.columns.getItems().forEach(function (column) {\n var value = getValue(column.id);\n var index = _this.columns.getIndex(column.id);\n values[index] = (dateIdx.indexOf(index) >= 0)\n ? _this.mapDate(value, column.type)\n : value;\n });\n }\n return new DataRow(this._columns, values);\n };\n EasyDataTable.prototype.mapDate = function (value, dtype) {\n if (value) {\n var result = new Date(value);\n if (isNaN(result.getTime())\n && dtype == DataType.Time) {\n result = utils.strToTime(value);\n }\n return result;\n }\n return null;\n };\n EasyDataTable.prototype.addRow = function (rowOrValues) {\n var newRow;\n if (Array.isArray(rowOrValues)) {\n var values = rowOrValues;\n var dateIdx = this._columns.getDateColumnIndexes();\n if (dateIdx.length > 0) {\n for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {\n var idx = dateIdx_1[_i];\n if (values[idx]) {\n values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);\n }\n }\n }\n newRow = new DataRow(this._columns, values);\n }\n else {\n newRow = this.createRow(rowOrValues);\n }\n this.cachedRows.push(newRow);\n var cachedTotal = this.getCachedCount();\n if (cachedTotal > this.total) {\n this.total = cachedTotal;\n }\n return newRow;\n };\n EasyDataTable.prototype.getCachedRows = function () {\n return this.cachedRows;\n };\n EasyDataTable.prototype.totalIsKnown = function () {\n if (this.elasticChunks) {\n var count = this.getCachedCount();\n return count === this.total;\n }\n return !this.needTotal;\n };\n EasyDataTable.prototype.fireUpdated = function () {\n if (this.onUpdate) {\n this.onUpdate(this);\n }\n };\n return EasyDataTable;\n}());\nexport { EasyDataTable };\n//# sourceMappingURL=easy_data_table.js.map","/**\n * EasyData representation of GUID.\n */\nvar EasyGuid = /** @class */ (function () {\n function EasyGuid() {\n }\n /**\n * Generates new GUID.\n * @returns The string representation of GUID.\n */\n EasyGuid.newGuid = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n return EasyGuid;\n}());\nexport { EasyGuid };\n//# sourceMappingURL=easy_guid.js.map","import { EasyGuid } from '../utils/easy_guid';\n/**\n * The representation of event emitter.\n */\nvar EventEmitter = /** @class */ (function () {\n /**\n * The default constructor.\n * @param source The source.\n */\n function EventEmitter(source) {\n this.silentMode = 0;\n this.events = new Array();\n this.source = source;\n }\n /**\n * Subscries to the event.\n * @param eventType The event type.\n * @param callback The callback.\n * @returns The subscribtion ID.\n */\n EventEmitter.prototype.subscribe = function (eventType, callback) {\n var event = this.getEventRecByType(eventType);\n var eventCallback = {\n id: EasyGuid.newGuid(),\n callback: callback\n };\n if (event) {\n event.eventCallbacks.push(eventCallback);\n }\n else {\n event = {\n type: eventType,\n eventCallbacks: new Array(eventCallback)\n };\n this.events.push(event);\n }\n return eventCallback.id;\n };\n /**\n * Unsubsribes from the event.\n * @param eventType The event type.\n * @param callbackId The subscribtion ID.\n */\n EventEmitter.prototype.unsubscribe = function (eventType, callbackId) {\n var event = this.getEventRecByType(eventType);\n if (event) {\n var index = -1;\n for (index = 0; index < event.eventCallbacks.length; index++) {\n if (event.eventCallbacks[index].id === callbackId) {\n break;\n }\n }\n if (index >= 0) {\n event.eventCallbacks.splice(index, 1);\n }\n }\n };\n /**\n * Fires the event.\n * @param eventType The event type.\n * @param data The event data.\n * @param postpone The postpone.\n * @param force To fire force. If value is `true`, ignores silent mode.\n */\n EventEmitter.prototype.fire = function (eventType, data, postpone, force) {\n if (postpone === void 0) { postpone = 0; }\n if (force === void 0) { force = false; }\n if (this.silentMode && !force) {\n return;\n }\n var eventRec = this.getEventRecByType(eventType);\n if (eventRec) {\n var eqevent_1 = {\n type: eventType,\n source: this.source,\n data: data\n };\n var emitAllFunc = function () {\n for (var _i = 0, _a = eventRec.eventCallbacks; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback.callback(eqevent_1);\n }\n };\n if (postpone > 0) {\n setTimeout(emitAllFunc, postpone);\n }\n else {\n emitAllFunc();\n }\n }\n };\n /**\n * Enters to silent mode.\n */\n EventEmitter.prototype.enterSilentMode = function () {\n this.silentMode++;\n };\n /**\n * Exits from silent mode.\n */\n EventEmitter.prototype.exitSilentMode = function () {\n if (this.silentMode) {\n this.silentMode--;\n }\n };\n /**\n * Checks if emitter is in silent mode.\n * @return `true`, if silent mode is enable.\n */\n EventEmitter.prototype.isSilent = function () {\n return this.silentMode > 0;\n };\n EventEmitter.prototype.getEventRecByType = function (eventType) {\n for (var _i = 0, _a = this.events; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n if (event_1.type == eventType) {\n return event_1;\n }\n }\n return null;\n };\n return EventEmitter;\n}());\nexport { EventEmitter };\n//# sourceMappingURL=event_emitter.js.map","export var liquid;\n(function (liquid) {\n function renderLiquidTemplate(template, vars) {\n var result = template;\n if (vars) {\n for (var v in vars) {\n var liquidVarRegexp = new RegExp('\\{\\{' + v + '\\}\\}', 'g');\n result = result.replace(liquidVarRegexp, vars[v]);\n }\n }\n return result;\n }\n liquid.renderLiquidTemplate = renderLiquidTemplate;\n})(liquid || (liquid = {}));\n//# sourceMappingURL=liquid.js.map","import { i18n } from './i18n';\ni18n.resetLocales();\n//# sourceMappingURL=load_default_locale_settings.js.map","//types\nexport * from './types/data_type';\nexport * from './types/entity_attr_kind';\nexport * from './types/editor_tag';\n//http\nexport * from './http/http_method';\nexport * from './http/http_request';\nexport * from './http/http_client';\n//meta data dto\nexport * from './meta/dto/meta_data_dto';\nexport * from './meta/dto/meta_entity_dto';\nexport * from './meta/dto/value_editor_dto';\n//meta data\nexport * from './meta/meta_data';\nexport * from './meta/meta_entity';\nexport * from './meta/value_editor';\n//data\nexport * from './data/aggr_structures';\nexport * from './data/aggr_settings';\nexport * from './data/data_column';\nexport * from './data/data_loader';\nexport * from './data/data_row';\nexport * from './data/easy_data_table';\n//event\nexport * from './event/event_emitter';\n//i18n\nexport * from './i18n/i18n';\n//utils\nexport * from './utils/easy_guid';\nexport * from './utils/string_utils';\nexport * from './utils/utils';\nexport * from './utils/liquid';\nimport './i18n/load_default_locale_settings';\nif (typeof Object.values !== 'function') {\n Object.values = function (obj) {\n return Object.keys(obj).map(function (key) { return obj[key]; });\n };\n}\nif (typeof Math.trunc !== 'function') {\n Math.trunc = function (x) {\n if (isNaN(x)) {\n return NaN;\n }\n if (x > 0) {\n return Math.floor(x);\n }\n return Math.ceil(x);\n };\n}\n//# sourceMappingURL=public_api.js.map","import { \r\n DataLoader, DataRow, \r\n EasyDataTable, utils as dataUtils \r\n} from '@easydata/core';\r\n\r\nimport { DataFilter } from './data_filter';\r\n\r\nexport class TextDataFilter implements DataFilter {\r\n private filterValue = '';\r\n\r\n //turns off client-side search\r\n //for test purposes\r\n private justServerSide = false;\r\n\r\n constructor (\r\n private loader: DataLoader, \r\n private sourceTable: EasyDataTable, \r\n private sourceId: string,\r\n private isLookup = false) {\r\n }\r\n\r\n public getValue() {\r\n return this.filterValue;\r\n }\r\n \r\n public apply(value: string): Promise<EasyDataTable> {\r\n this.filterValue = value;\r\n\r\n if (this.filterValue) {\r\n return this.applyCore();\r\n }\r\n else {\r\n return this.clear();\r\n }\r\n }\r\n\r\n public clear(): Promise<EasyDataTable> {\r\n this.filterValue = '';\r\n return Promise.resolve(this.sourceTable);\r\n }\r\n\r\n private applyCore(): Promise<EasyDataTable> {\r\n if (this.sourceTable.getTotal() == this.sourceTable.getCachedCount() && !this.justServerSide) {\r\n return this.applyInMemoryFilter();\r\n }\r\n else {\r\n const filters = [\r\n { class: \"__substring\", value: this.filterValue }\r\n ]\r\n return this.loader.loadChunk({ \r\n offset: 0, \r\n limit: this.sourceTable.chunkSize, \r\n needTotal: true, \r\n filters: filters,\r\n sourceId: this.sourceId,\r\n lookup: this.isLookup\r\n } as any)\r\n .then(data => {\r\n const filteredTable = new EasyDataTable({\r\n chunkSize: this.sourceTable.chunkSize,\r\n loader: {\r\n loadChunk: (params) => this.loader\r\n .loadChunk({ ...params, filters: filters, sourceId: this.sourceId, lookup: this.isLookup } as any)\r\n }\r\n });\r\n\r\n for (const col of this.sourceTable.columns.getItems()) {\r\n filteredTable.columns.add(col);\r\n }\r\n\r\n filteredTable.setTotal(data.total);\r\n\r\n for (const row of data.table.getCachedRows()) {\r\n filteredTable.addRow(row);\r\n }\r\n\r\n return filteredTable;\r\n })\r\n }\r\n }\r\n\r\n private applyInMemoryFilter(): Promise<EasyDataTable> {\r\n return new Promise((resolve, reject) => {\r\n const filteredTable = new EasyDataTable({\r\n chunkSize: this.sourceTable.chunkSize,\r\n inMemory: true\r\n });\r\n\r\n for(const col of this.sourceTable.columns.getItems()) {\r\n filteredTable.columns.add(col);\r\n } \r\n \r\n const words = this.filterValue.split('||').map(w => w.trim().toLowerCase());\r\n const suitableColumns = this.sourceTable.columns.getItems()\r\n .filter(col => dataUtils.isNumericType(col.type) \r\n || dataUtils.getStringDataTypes().indexOf(col.type) >= 0)\r\n const hasEnterance = (row: DataRow) => {\r\n for (const col of suitableColumns) {\r\n const value = row.getValue(col.id);\r\n if (value) {\r\n const normalized = value.toString().toLowerCase();\r\n\r\n for(const word of words) {\r\n if (normalized.indexOf(word) >= 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n for (const row of this.sourceTable.getCachedRows()) {\r\n if (hasEnterance(row)) {\r\n filteredTable.addRow(row); \r\n }\r\n }\r\n\r\n filteredTable.setTotal(filteredTable.getCachedCount());\r\n\r\n resolve(filteredTable);\r\n });\r\n } \r\n}","import { browserUtils } from './browser_utils';\n/**\n * Wraps all the elements inside \"parent\" by \"wrapper\" element\n * @param parent The element to add wrapper to.\n * @param wrapper The element that will wrap child elements.\n */\nexport function wrapInner(parent, wrapper) {\n parent.appendChild(wrapper);\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n}\n/**\n * Creates ands adds a new [[HTMLElement]] to \"parent\"\n * @param parent The element to add new element to.\n * @param tag Html tag of the new element.\n * @param options The options. In particular, options.cssClass sets the new element class.\n * @returns New element.\n */\nexport function addElement(parent, tag, options) {\n var element = document.createElement(tag);\n var opts = options || {};\n if (opts.cssClass) {\n element.className = opts.cssClass;\n }\n parent.appendChild(element);\n return element;\n}\n/**\n * Adds css class to the html element.\n * @param element The element to add css class to.\n * @param className The name of the css class to be added.\n */\nexport function addCssClass(element, className) {\n element.className = (element.className)\n ? element.className + ' ' + className\n : className;\n}\n/**\n * Hides the html element.\n * @param element The element to be hidden.\n */\nexport function hideElement(element) {\n element.style.display = 'none';\n}\n/**\n * Shows the html element.\n * @param element The element to be shown.\n * @param display The value of \"display\" style to be set. Default value is \"block\".\n */\nexport function showElement(element, display) {\n if (!display) {\n display = '';\n }\n element.style.display = display;\n}\n/**\n * Hides the \"first\" element and shows the \"second\".\n * @param first The element to be hidden.\n * @param second The element to be shown.\n * @param options The options. The following options are applied:\n * - display - the value of \"display\" style to be set. Default value is \"block\"\n * - duration - the duration of fading in and out\n * - complete - the callback to be called when toggle is complete\n */\nexport function toggleVisibility(first, second, options) {\n if (!options) {\n options = {};\n }\n if (!options.display) {\n options.display = '';\n }\n if (!options.duration) {\n options.duration = 200;\n }\n //TODO: later we need to make it fading in and out\n hideElement(first);\n showElement(second, options.display);\n if (options.complete) {\n options.complete();\n }\n}\n/**\n * Checks if element is visible\n * @param element The element to check.\n * @returns `true` if visible, otherwise - `false`.\n */\nexport function isVisible(element) {\n return element.style.display != 'none'\n && element.offsetWidth != 0\n && element.offsetHeight != 0;\n}\nexport function createBrowserEvent(eventName) {\n var event;\n if (typeof (Event) === 'function') {\n event = new Event(eventName);\n }\n else {\n event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n }\n return event;\n}\nexport function getViewportSize() {\n var width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n var height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return {\n width: width,\n height: height\n };\n}\nexport function getDocSize() {\n if (browserUtils.IsIE())\n return getWinSize();\n var width = Math.max(document.documentElement.clientWidth, document.body.clientWidth || 0);\n var height = Math.max(document.documentElement.clientHeight, document.body.clientHeight || 0);\n return {\n width: width,\n height: height\n };\n}\nexport function getScrollPos() {\n var body = document.body;\n var docElem = document.documentElement;\n return {\n top: window.pageYOffset || docElem.scrollTop || body.scrollTop,\n left: window.pageXOffset || docElem.scrollLeft || body.scrollLeft\n };\n}\nexport function getElementAbsolutePos(element) {\n var res = { x: 0, y: 0 };\n if (element !== null) {\n var position = offset(element);\n res = { x: position.left, y: position.top };\n }\n return res;\n}\nfunction offset(element) {\n var defaultBoundingClientRect = { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };\n var box;\n try {\n box = element.getBoundingClientRect();\n }\n catch (_a) {\n box = defaultBoundingClientRect;\n }\n var body = document.body;\n var docElem = document.documentElement;\n var scollPos = getScrollPos();\n var scrollTop = scollPos.top;\n var scrollLeft = scollPos.left;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n}\nexport function getWinSize() {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n}\nexport function slideDown(target, duration, callback) {\n target.style.removeProperty('display');\n var display = window.getComputedStyle(target).display;\n if (display === 'none')\n display = 'block';\n target.style.display = display;\n var height = target.offsetHeight;\n target.style.overflow = 'hidden';\n target.style.height = 0 + 'px';\n target.style.paddingTop = 0 + 'px';\n target.style.paddingBottom = 0 + 'px';\n target.style.marginTop = 0 + 'px';\n target.style.marginBottom = 0 + 'px';\n target.offsetHeight;\n target.style.boxSizing = 'border-box';\n target.style.transitionProperty = \"height, margin, padding\";\n target.style.transitionDuration = duration + 'ms';\n target.style.height = height + 'px';\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n window.setTimeout(function () {\n target.style.removeProperty('height');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n target.style.removeProperty('box-sizing');\n if (callback) {\n callback();\n }\n }, duration);\n}\nexport function slideUp(target, duration, callback) {\n target.style.transitionProperty = 'height, margin, padding';\n target.style.transitionDuration = duration + 'ms';\n target.style.boxSizing = 'border-box';\n target.style.height = target.offsetHeight + 'px';\n target.offsetHeight;\n target.style.overflow = 'hidden';\n target.style.height = 0 + 'px';\n target.style.paddingTop = 0 + 'px';\n target.style.paddingBottom = 0 + 'px';\n target.style.marginTop = 0 + 'px';\n target.style.marginBottom = 0 + 'px';\n window.setTimeout(function () {\n target.style.display = 'none';\n target.style.removeProperty('height');\n target.style.removeProperty('padding-top');\n target.style.removeProperty('padding-bottom');\n target.style.removeProperty('margin-top');\n target.style.removeProperty('margin-bottom');\n target.style.removeProperty('overflow');\n target.style.removeProperty('transition-duration');\n target.style.removeProperty('transition-property');\n target.style.removeProperty('box-sizing');\n if (callback) {\n callback();\n }\n }, duration);\n}\nexport var eqCssPrefix = 'eqjs';\nexport var eqCssMobile = 'eqjs-mobile';\n//# sourceMappingURL=ui-utils.js.map","export function mask(input, maskPattern) {\n var d = { 9: '[0-9]', a: '[a-z]' };\n var mask = maskPattern.split('');\n var keyDownHandler = function (e) {\n // backspace key or delete key\n if (e.keyCode === 8 || e.keyCode === 46) {\n e.preventDefault();\n var mskd = [];\n var startSelection = input.selectionStart;\n if (startSelection == 0)\n return;\n var selection = startSelection;\n var onlyLodash = true;\n for (var index = mask.length - 1; index >= 0; index--) {\n var el = mask[index];\n if (d[el]) {\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\n if (t && index != startSelection - 1) {\n onlyLodash = false;\n }\n if (index === startSelection - 1)\n selection--;\n mskd.push(t && index != startSelection - 1\n ? input.value.charAt(index)\n : '_');\n }\n else {\n if (index === selection - 1)\n selection--;\n if (startSelection - 1 === index)\n startSelection--;\n mskd.push(el);\n }\n }\n input.value = !onlyLodash ? mskd.reverse().join('') : '';\n input.selectionStart = input.selectionEnd = selection < 0 ? 0 : selection;\n var event_1 = document.createEvent('Event');\n event_1.initEvent('input', true, true);\n input.dispatchEvent(event_1);\n }\n };\n var keyPressHandler = function (e) {\n var char = String.fromCharCode(e.charCode);\n if (char) {\n e.preventDefault();\n var mskd_1 = [];\n var selectionStart_1 = input.selectionStart;\n var selection_1 = selectionStart_1;\n mask.forEach(function (el, index) {\n if (d[el]) {\n var ch = (index != selectionStart_1)\n ? input.value.charAt(index)\n : char;\n var t = new RegExp(d[el], 'i').test(ch);\n mskd_1.push(t ? ch : '_');\n if (t && selectionStart_1 === index)\n selection_1++;\n }\n else {\n mskd_1.push(el);\n if (selection_1 === index)\n selection_1++;\n if (selectionStart_1 === index)\n selectionStart_1++;\n }\n });\n input.value = mskd_1.join('');\n input.selectionStart = input.selectionEnd = selection_1;\n var event_2 = document.createEvent('Event');\n event_2.initEvent('input', true, true);\n input.dispatchEvent(event_2);\n }\n };\n var inputHandler = function (e) {\n if (e.type === 'focus' && input.value !== '')\n return;\n var mskd = [];\n var startSelection = input.selectionStart;\n mask.forEach(function (el, index) {\n if (d[el]) {\n var t = new RegExp(d[el], 'i').test(input.value.charAt(index));\n mskd.push(t ? input.value.charAt(index) : '_');\n }\n else {\n mskd.push(el);\n }\n });\n input.value = mskd.join('');\n input.selectionStart = input.selectionEnd = startSelection;\n };\n input.addEventListener('keydown', keyDownHandler);\n input.addEventListener('keypress', keyPressHandler);\n input.addEventListener('input', inputHandler);\n input.addEventListener('focus', inputHandler);\n}\n//# sourceMappingURL=mask.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { mask } from './mask';\nvar DomElementBuilder = /** @class */ (function () {\n function DomElementBuilder(tag, parent) {\n if (typeof tag === \"string\") {\n this.element = document.createElement(tag);\n }\n else {\n this.element = tag;\n }\n if (parent && this.element.parentElement !== parent) {\n parent.appendChild(this.element);\n }\n }\n DomElementBuilder.prototype.addChild = function (tag, childBuilder) {\n var builder = domel(tag, this.element);\n if (childBuilder) {\n childBuilder(builder);\n }\n return this;\n };\n DomElementBuilder.prototype.addChildElement = function (element) {\n if (element) {\n this.element.appendChild(element);\n }\n return this;\n };\n DomElementBuilder.prototype.attr = function (attrId, attrValue) {\n this.element.setAttribute(attrId, attrValue);\n return this;\n };\n DomElementBuilder.prototype.id = function (value) {\n return this.attr(\"id\", value);\n };\n DomElementBuilder.prototype.focus = function () {\n this.element.focus();\n return this;\n };\n DomElementBuilder.prototype.title = function (value) {\n return this.attr('title', value);\n };\n DomElementBuilder.prototype.data = function (dataId, dataValue) {\n if (dataValue === void 0) { dataValue = null; }\n if (dataValue === null) {\n this.element.removeAttribute('data-' + dataId);\n return this;\n }\n else {\n return this.attr('data-' + dataId, dataValue);\n }\n };\n DomElementBuilder.prototype.show = function () {\n return this.removeStyle('display');\n };\n DomElementBuilder.prototype.hide = function (toHide) {\n if (toHide === void 0) { toHide = true; }\n return (toHide) ? this.setStyle('display', 'none') : this;\n };\n DomElementBuilder.prototype.visible = function (isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n return isVisible ? this.setStyle('visibility', 'visible') : this.setStyle('visibility', 'hidden');\n };\n DomElementBuilder.prototype.isVisible = function () {\n return !!(this.element.offsetWidth || this.element.offsetHeight || this.element.getClientRects().length);\n };\n DomElementBuilder.prototype.addClass = function (className) {\n var classNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n classNames[_i - 1] = arguments[_i];\n }\n if (className) {\n var fullList = __spreadArray(__spreadArray([], className.trim().split(\" \"), true), classNames, true);\n for (var i = 0; i < fullList.length; i++)\n this.element.classList.add(fullList[i]);\n }\n return this;\n };\n DomElementBuilder.prototype.removeClass = function (className) {\n var classNames = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n classNames[_i - 1] = arguments[_i];\n }\n if (className) {\n var fullList = __spreadArray(__spreadArray([], className.trim().split(\" \"), true), classNames, true);\n for (var i = 0; i < fullList.length; i++)\n this.element.classList.remove(fullList[i]);\n }\n return this;\n };\n DomElementBuilder.prototype.toggleClass = function (className, force) {\n if (force === void 0) { force = undefined; }\n if (className) {\n this.element.classList.toggle(className, force);\n }\n return this;\n };\n DomElementBuilder.prototype.on = function (eventType, listener) {\n var eventTypes = eventType.split(' ');\n for (var i = 0; i < eventTypes.length; i++) {\n this.element.addEventListener(eventTypes[i], listener);\n }\n return this;\n };\n DomElementBuilder.prototype.off = function (eventType, listener) {\n var eventTypes = eventType.split(' ');\n for (var i = 0; i < eventTypes.length; i++) {\n this.element.removeEventListener(eventTypes[i], listener);\n }\n return this;\n };\n DomElementBuilder.prototype.setStyle = function (styleId, styleValue) {\n this.element.style.setProperty(styleId, styleValue);\n return this;\n };\n DomElementBuilder.prototype.removeStyle = function (styleId) {\n this.element.style.removeProperty(styleId);\n return this;\n };\n DomElementBuilder.prototype.text = function (text) {\n this.element.innerText = text;\n return this;\n };\n DomElementBuilder.prototype.html = function (html) {\n this.element.innerHTML = html;\n return this;\n };\n DomElementBuilder.prototype.clear = function () {\n var oldElem = this.element;\n this.element = document.createElement(this.element.tagName);\n oldElem.replaceWith(this.element);\n };\n DomElementBuilder.prototype.addText = function (text) {\n var textEl = document.createTextNode(text);\n this.element.appendChild(textEl);\n return this;\n };\n DomElementBuilder.prototype.addHtml = function (html) {\n this.element.innerHTML += html;\n return this;\n };\n DomElementBuilder.prototype.toDOM = function () {\n return this.element;\n };\n DomElementBuilder.prototype.appendTo = function (parent) {\n if (parent) {\n parent.appendChild(this.element);\n }\n return this;\n };\n return DomElementBuilder;\n}());\nexport { DomElementBuilder };\nvar DomTextAreaElementBuilder = /** @class */ (function (_super) {\n __extends(DomTextAreaElementBuilder, _super);\n function DomTextAreaElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"textarea\", parent) || this;\n }\n return _this;\n }\n DomTextAreaElementBuilder.prototype.name = function (value) {\n this.element.name = value;\n return this;\n };\n DomTextAreaElementBuilder.prototype.rows = function (rows) {\n this.element.rows = rows;\n return this;\n };\n DomTextAreaElementBuilder.prototype.cols = function (cols) {\n this.element.cols = cols;\n return this;\n };\n DomTextAreaElementBuilder.prototype.value = function (value) {\n this.element.value = value;\n return this;\n };\n return DomTextAreaElementBuilder;\n}(DomElementBuilder));\nexport { DomTextAreaElementBuilder };\nvar DomInputElementBuilder = /** @class */ (function (_super) {\n __extends(DomInputElementBuilder, _super);\n function DomInputElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"input\", parent) || this;\n }\n return _this;\n }\n DomInputElementBuilder.prototype.name = function (value) {\n this.element.name = value;\n return this;\n };\n DomInputElementBuilder.prototype.type = function (value) {\n this.element.type = value;\n return this;\n };\n DomInputElementBuilder.prototype.size = function (value) {\n this.element.size = value;\n return this;\n };\n DomInputElementBuilder.prototype.value = function (value) {\n if (value instanceof Date) {\n this.element.valueAsDate = value;\n }\n else if (typeof value === \"number\") {\n this.element.valueAsNumber = value;\n }\n else {\n this.element.value = value;\n }\n return this;\n };\n DomInputElementBuilder.prototype.mask = function (maskPattern) {\n mask(this.element, maskPattern);\n return this;\n };\n return DomInputElementBuilder;\n}(DomElementBuilder));\nexport { DomInputElementBuilder };\nvar DomSelectElementBuilder = /** @class */ (function (_super) {\n __extends(DomSelectElementBuilder, _super);\n function DomSelectElementBuilder(element, parent) {\n var _this = this;\n if (element) {\n _this = _super.call(this, element, parent) || this;\n }\n else {\n _this = _super.call(this, \"select\", parent) || this;\n }\n return _this;\n }\n DomSelectElementBuilder.prototype.addOption = function (value) {\n var option = document.createElement('option');\n if (typeof value === \"string\") {\n option.value = value;\n option.innerHTML = value;\n }\n else {\n option.value = value.value;\n option.innerHTML = value.title || value.value;\n option.selected = value.selected || false;\n }\n this.element.appendChild(option);\n return this;\n };\n DomSelectElementBuilder.prototype.value = function (value) {\n this.element.value = value;\n return this;\n };\n return DomSelectElementBuilder;\n}(DomElementBuilder));\nexport { DomSelectElementBuilder };\nexport function domel(tag, parent) {\n if (tag === \"div\" || tag instanceof HTMLDivElement) {\n return new DomElementBuilder(tag, parent);\n }\n if (tag === \"span\" || tag instanceof HTMLSpanElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"a\" || tag instanceof HTMLAnchorElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"button\" || tag instanceof HTMLButtonElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"img\" || tag instanceof HTMLImageElement) {\n return new DomElementBuilder(tag, parent);\n }\n else if (tag === \"input\" || tag instanceof HTMLInputElement) {\n return new DomInputElementBuilder(tag instanceof HTMLInputElement ? tag : null, parent);\n }\n else if (tag === \"textarea\" || tag instanceof HTMLTextAreaElement) {\n return new DomTextAreaElementBuilder(tag instanceof HTMLTextAreaElement ? tag : null, parent);\n }\n else if (tag === \"select\" || tag instanceof HTMLSelectElement) {\n return new DomSelectElementBuilder(tag instanceof HTMLSelectElement ? tag : null, parent);\n }\n return new DomElementBuilder(tag, parent);\n}\n//# sourceMappingURL=dom_elem_builder.js.map","import { utils } from '@easydata/core';\nimport { getElementAbsolutePos } from './ui-utils';\nimport { domel } from '../utils/dom_elem_builder';\nvar touchEventIsDefined = typeof TouchEvent !== 'undefined';\nexport var DropEffect;\n(function (DropEffect) {\n DropEffect[\"None\"] = \"none\";\n DropEffect[\"Allow\"] = \"allow\";\n DropEffect[\"Forbid\"] = \"forbid\";\n})(DropEffect || (DropEffect = {}));\nvar EqDragEvent = /** @class */ (function () {\n function EqDragEvent(item, dragImage, sourceEvent) {\n this.dropEffect = DropEffect.Allow;\n this.pageX = 0;\n this.pageY = 0;\n this.item = item;\n this.dragImage = dragImage;\n this.data = item.data;\n this.sourceEvent = sourceEvent;\n if (sourceEvent && sourceEvent instanceof MouseEvent) {\n this.pageX = sourceEvent.pageX,\n this.pageY = sourceEvent.pageY;\n }\n if (sourceEvent && touchEventIsDefined && sourceEvent instanceof TouchEvent\n && sourceEvent.touches[0]) {\n this.pageX = sourceEvent.touches[0].pageX,\n this.pageY = sourceEvent.touches[0].pageY;\n }\n }\n return EqDragEvent;\n}());\nexport { EqDragEvent };\nvar Position = /** @class */ (function () {\n function Position(ev) {\n if (ev && ev instanceof MouseEvent) {\n this.x = ev.pageX,\n this.y = ev.pageY;\n }\n if (ev && touchEventIsDefined && ev instanceof TouchEvent && ev.touches[0]) {\n this.x = ev.touches[0].pageX,\n this.y = ev.touches[0].pageY;\n }\n }\n return Position;\n}());\nvar DragManager = /** @class */ (function () {\n function DragManager() {\n this.delta = 5;\n this.draggableItem = null;\n this.dragImage = null;\n this.finishedSuccessfully = false;\n this.mouseDownPosition = null;\n this.containerDescriptors = [];\n this.containerDescriptorIndex = -1;\n this.dropEffect = DropEffect.None;\n this.classPrefix = 'eqjs-drop';\n this.DRAG_DISABLED_ATTR = 'drag-disabled';\n }\n DragManager.prototype.registerDraggableItem = function (descriptor) {\n var _this = this;\n var element = descriptor.element;\n if (!element) {\n throw Error(\"Element in draggle item is null or undefined\");\n }\n element.ondragstart = function () {\n return false;\n };\n var detectDragging = function (ev) {\n if (element.hasAttribute(_this.DRAG_DISABLED_ATTR)) {\n return;\n }\n ev.preventDefault();\n if (ev instanceof MouseEvent) {\n ev.stopPropagation();\n }\n var cursorPosition = new Position(ev);\n if (Math.abs(cursorPosition.x - _this.mouseDownPosition.x) > _this.delta\n || Math.abs(cursorPosition.y - _this.mouseDownPosition.y) > _this.delta) {\n startDragging(ev);\n }\n };\n var mouseMoveEventListener = function (ev) {\n _this.mouseMoveDragListener(ev);\n };\n var startDragging = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n element.removeEventListener('mousemove', detectDragging);\n element.removeEventListener('touchmove', detectDragging);\n _this.finishedSuccessfully = false;\n if (descriptor.beforeDragStart)\n descriptor.beforeDragStart();\n _this.dragImage = domel('div')\n .setStyle('position', 'absolute')\n .setStyle('z-index', '65530')\n .toDOM();\n document.body.appendChild(_this.dragImage);\n _this.dragImage.appendChild(element.cloneNode(true));\n if (descriptor.renderer) {\n descriptor.renderer(_this.dragImage);\n }\n _this.dropEffect = DropEffect.None;\n _this.updateCusror(_this.dropEffect);\n _this.updateImageClass(_this.dropEffect);\n _this.draggableItem = {\n element: element,\n scope: descriptor.scope,\n data: descriptor.data\n };\n _this.updateDragItemPosition(ev);\n var event = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n event.dropEffect = _this.dropEffect;\n if (descriptor.onDragStart) {\n descriptor.onDragStart(event);\n }\n if (_this.dropEffect !== event.dropEffect) {\n _this.dropEffect = event.dropEffect;\n _this.updateImageClass(_this.dropEffect);\n }\n document.addEventListener('mousemove', mouseMoveEventListener, true);\n document.addEventListener('touchmove', mouseMoveEventListener, true);\n };\n var mouseDownListener = function (ev) {\n if (touchEventIsDefined && ev instanceof TouchEvent) {\n ev.preventDefault();\n }\n _this.mouseDownPosition = new Position(ev);\n element.addEventListener('mousemove', detectDragging);\n element.addEventListener('touchmove', detectDragging);\n document.addEventListener('mouseup', mouseUpListener);\n document.addEventListener('touchend', mouseUpListener);\n };\n element.addEventListener('mousedown', mouseDownListener);\n element.addEventListener('touchstart', mouseDownListener);\n var mouseUpListener = function (ev) {\n _this.mouseDownPosition = null;\n element.removeEventListener('mousemove', detectDragging);\n element.removeEventListener('touchmove', detectDragging);\n document.removeEventListener('mousemove', mouseMoveEventListener, true);\n document.removeEventListener('touchmove', mouseMoveEventListener, true);\n if (_this.draggableItem) {\n endDraggind(ev);\n }\n };\n var endDraggind = function (ev) {\n try {\n if (_this.containerDescriptorIndex >= 0) {\n var dropContDesc = _this.containerDescriptors[_this.containerDescriptorIndex];\n var container = {\n element: dropContDesc.element,\n scopes: dropContDesc.scopes,\n data: dropContDesc.data\n };\n var event_1 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n try {\n if (container.scopes.indexOf(_this.draggableItem.scope) >= 0\n && _this.dropEffect === DropEffect.Allow) {\n _this.finishedSuccessfully = true;\n if (dropContDesc.onDrop) {\n dropContDesc.onDrop(container, event_1);\n }\n }\n }\n finally {\n if (dropContDesc.onDragLeave) {\n dropContDesc.onDragLeave(container, event_1);\n }\n }\n }\n }\n finally {\n try {\n var event_2 = new EqDragEvent(_this.draggableItem, _this.dragImage, ev);\n event_2.data.finishedSuccessfully = _this.finishedSuccessfully;\n if (descriptor.onDragEnd) {\n descriptor.onDragEnd(event_2);\n }\n }\n finally {\n _this.draggableItem = null;\n if (_this.dragImage && _this.dragImage.parentElement) {\n _this.dragImage.parentElement.removeChild(_this.dragImage);\n }\n _this.dragImage = null;\n _this.finishedSuccessfully = false;\n document.removeEventListener('mouseup', mouseUpListener);\n document.removeEventListener('touchend', mouseUpListener);\n }\n }\n };\n };\n DragManager.prototype.registerDropContainer = function (descriptor) {\n var element = descriptor.element;\n if (!element) {\n throw Error(\"Element in drop container is null or undefined\");\n }\n this.containerDescriptors.push(descriptor);\n };\n DragManager.prototype.removeDropContainer = function (descriptorOrSlot) {\n var descs = this.containerDescriptors\n .filter(function (desc) { return desc === descriptorOrSlot\n || desc.element == descriptorOrSlot; });\n if (descs) {\n for (var _i = 0, descs_1 = descs; _i < descs_1.length; _i++) {\n var desc = descs_1[_i];\n utils.removeArrayItem(this.containerDescriptors, desc);\n }\n }\n };\n DragManager.prototype.mouseMoveDragListener = function (ev) {\n if (ev instanceof MouseEvent) {\n ev.preventDefault();\n }\n ev.stopPropagation();\n this.updateDragItemPosition(ev);\n if (this.containerDescriptorIndex == -1) {\n for (var i = 0; i < this.containerDescriptors.length; i++) {\n var descriptor = this.containerDescriptors[i];\n if (this.detectDragEnterEvent(descriptor.element, ev)) {\n this.containerDescriptorIndex = i;\n break;\n }\n }\n if (this.containerDescriptorIndex >= 0) {\n this.dragEnterEvent(ev);\n }\n }\n else {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n if (this.detectDragLeaveEvent(descriptor.element, ev)) {\n this.dragLeaveEvent(ev);\n this.containerDescriptorIndex = -1;\n }\n }\n if (this.containerDescriptorIndex >= 0) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_3 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_3.dropEffect = this.dropEffect;\n if (descriptor.onDragOver) {\n descriptor.onDragOver(container, event_3);\n }\n }\n }\n };\n DragManager.prototype.updateCusror = function (dropEffect) {\n switch (dropEffect) {\n case DropEffect.Allow:\n this.setCursorStyle(this.dragImage, 'grabbing');\n break;\n case DropEffect.Forbid:\n this.setCursorStyle(this.dragImage, 'no-drop');\n break;\n default:\n this.setCursorStyle(this.dragImage, 'grabbing');\n break;\n }\n };\n DragManager.prototype.updateImageClass = function (dropEffect) {\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-allow\"));\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-forbid\"));\n this.dragImage.classList.remove(\"\".concat(this.classPrefix, \"-none\"));\n switch (dropEffect) {\n case DropEffect.Allow:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-allow\"));\n break;\n case DropEffect.None:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-none\"));\n break;\n case DropEffect.Forbid:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-forbid\"));\n break;\n default:\n this.dragImage.classList.add(\"\".concat(this.classPrefix, \"-none\"));\n break;\n }\n };\n DragManager.prototype.setCursorStyle = function (element, cursor) {\n if (element) {\n element.style.cursor = cursor;\n for (var i = 0; i < element.children.length; i++) {\n this.setCursorStyle(element.children[i], cursor);\n }\n }\n };\n DragManager.prototype.updateDragItemPosition = function (ev) {\n if (this.dragImage) {\n var pos = new Position(ev);\n this.dragImage.style.top = (pos.y - this.dragImage.offsetHeight / 2) + 'px';\n this.dragImage.style.left = (pos.x - this.dragImage.offsetWidth / 2) + 'px';\n }\n };\n DragManager.prototype.dragEnterEvent = function (ev) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_4 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_4.dropEffect = DropEffect.Allow;\n if (descriptor.onDragEnter) {\n descriptor.onDragEnter(container, event_4);\n }\n this.dropEffect = event_4.dropEffect;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n else {\n if (this.dropEffect !== DropEffect.Forbid) {\n this.dropEffect = DropEffect.None;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n }\n };\n DragManager.prototype.dragLeaveEvent = function (ev) {\n var descriptor = this.containerDescriptors[this.containerDescriptorIndex];\n var container = {\n element: descriptor.element,\n scopes: descriptor.scopes,\n data: descriptor.data\n };\n if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {\n var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);\n event_5.dropEffect = DropEffect.None;\n if (descriptor.onDragLeave) {\n descriptor.onDragLeave(container, event_5);\n }\n this.dropEffect = event_5.dropEffect;\n this.updateCusror(this.dropEffect);\n this.updateImageClass(this.dropEffect);\n }\n };\n DragManager.prototype.detectDragEnterEvent = function (container, ev) {\n var containerPos = getElementAbsolutePos(container);\n var pos = new Position(ev);\n if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {\n return false;\n }\n if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {\n return false;\n }\n return true;\n };\n DragManager.prototype.detectDragLeaveEvent = function (container, ev) {\n var containerPos = getElementAbsolutePos(container);\n var pos = new Position(ev);\n if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight\n && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {\n return false;\n }\n return true;\n };\n return DragManager;\n}());\nexport { DragManager };\n//global variable\nexport var eqDragManager = new DragManager();\n//# sourceMappingURL=drag_manager.js.map","export var AutoResizeColumns;\n(function (AutoResizeColumns) {\n AutoResizeColumns[AutoResizeColumns[\"Always\"] = 0] = \"Always\";\n AutoResizeColumns[AutoResizeColumns[\"Once\"] = 1] = \"Once\";\n AutoResizeColumns[AutoResizeColumns[\"Never\"] = 2] = \"Never\";\n})(AutoResizeColumns || (AutoResizeColumns = {}));\n//# sourceMappingURL=easy_grid_options.js.map","import { i18n, DataType } from '@easydata/core';\nimport { GridColumnAlign } from './easy_grid_columns';\nvar cssPrefix = \"keg\";\nexport var DFMT_REGEX = /{0:(.*?)}/g;\nexport var CellRendererType;\n(function (CellRendererType) {\n CellRendererType[CellRendererType[\"STRING\"] = 1] = \"STRING\";\n CellRendererType[CellRendererType[\"NUMBER\"] = 2] = \"NUMBER\";\n CellRendererType[CellRendererType[\"DATETIME\"] = 3] = \"DATETIME\";\n CellRendererType[CellRendererType[\"BOOL\"] = 4] = \"BOOL\";\n})(CellRendererType || (CellRendererType = {}));\nvar StringCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var text = value ? value.toString().replace(/\\n/g, '\\u21B5 ') : '';\n cellValueElement.innerText = text;\n cellValueElement.title = text;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-left\"));\n }\n};\nvar NumberCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var strValue = (value || '').toString();\n if (typeof value == 'number') {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.numberToStr(value, $1);\n });\n }\n else {\n strValue = value.toLocaleString();\n }\n }\n cellValueElement.innerText = strValue;\n cellValueElement.title = strValue;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-right\"));\n }\n};\nvar DateTimeCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n var isDate = Object.prototype.toString.call(value) === '[object Date]';\n var strValue = (value || '').toString();\n if (isDate) {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.dateTimeToStr(value, column.type, $1);\n });\n }\n else {\n var locale = i18n.getCurrentLocale();\n var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };\n switch (column.type) {\n case DataType.Date:\n strValue = value.toLocaleDateString(locale);\n break;\n case DataType.Time:\n strValue = value.toLocaleTimeString(locale, timeOptions);\n break;\n case DataType.DateTime:\n strValue = \"\".concat(value.toLocaleDateString(locale), \" \").concat(value.toLocaleTimeString(locale, timeOptions));\n break;\n }\n }\n }\n cellValueElement.innerText = strValue;\n cellValueElement.title = strValue;\n if (column.align == GridColumnAlign.NONE) {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-align-right\"));\n }\n};\nvar BoolCellRendererDefault = function (value, column, cellValueElement, rowElement) {\n if (column.dataColumn && column.dataColumn.displayFormat\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\n var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {\n return i18n.booleanToStr(value, $1);\n });\n return StringCellRendererDefault(strValue, column, cellValueElement, rowElement);\n }\n else {\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-cell-value-bool\"));\n cellValueElement.classList.add(\"\".concat(cssPrefix, \"-\").concat(value ? 'cell-value-true' : 'cell-value-false'));\n }\n};\nvar GridCellRendererStore = /** @class */ (function () {\n function GridCellRendererStore(options) {\n this.renderers = {};\n this.defaultRenderers = {};\n this.registerRenderer('StringDefault', StringCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);\n this.registerRenderer('NumberDefault', NumberCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);\n this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);\n this.registerRenderer('BoolDefault', BoolCellRendererDefault);\n this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);\n }\n GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {\n var cellType = this.getCellType(columnType);\n return this.defaultRenderers[CellRendererType[cellType]];\n };\n GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {\n return this.defaultRenderers[CellRendererType[rendererType]];\n };\n GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {\n if (renderer) {\n this.defaultRenderers[CellRendererType[cellType]] = renderer;\n }\n };\n GridCellRendererStore.prototype.getRenderer = function (name) {\n return this.renderers[name];\n };\n GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {\n this.renderers[name] = renderer;\n };\n GridCellRendererStore.prototype.getCellType = function (dataType) {\n switch (dataType) {\n case DataType.Autoinc:\n case DataType.Byte:\n case DataType.Word:\n case DataType.Currency:\n case DataType.Float:\n case DataType.Int32:\n case DataType.Int64:\n return CellRendererType.NUMBER;\n case DataType.Date:\n case DataType.DateTime:\n case DataType.Time:\n return CellRendererType.DATETIME;\n case DataType.Bool:\n return CellRendererType.BOOL;\n default:\n return CellRendererType.STRING;\n }\n };\n return GridCellRendererStore;\n}());\nexport { GridCellRendererStore };\n//# sourceMappingURL=easy_grid_cell_renderer.js.map","import { utils, ColumnAlignment } from '@easydata/core';\nimport { CellRendererType } from \"./easy_grid_cell_renderer\";\nvar DEFAULT_WIDTH_STRING = 250;\nvar ROW_NUM_WIDTH = 60;\nexport var GridColumnAlign;\n(function (GridColumnAlign) {\n GridColumnAlign[GridColumnAlign[\"NONE\"] = 1] = \"NONE\";\n GridColumnAlign[GridColumnAlign[\"LEFT\"] = 2] = \"LEFT\";\n GridColumnAlign[GridColumnAlign[\"CENTER\"] = 3] = \"CENTER\";\n GridColumnAlign[GridColumnAlign[\"RIGHT\"] = 4] = \"RIGHT\";\n})(GridColumnAlign || (GridColumnAlign = {}));\nfunction MapAlignment(alignment) {\n switch (alignment) {\n case ColumnAlignment.Left:\n return GridColumnAlign.LEFT;\n case ColumnAlignment.Center:\n return GridColumnAlign.CENTER;\n case ColumnAlignment.Right:\n return GridColumnAlign.RIGHT;\n default:\n return GridColumnAlign.NONE;\n }\n}\nvar GridColumn = /** @class */ (function () {\n function GridColumn(column, grid, isRowNum) {\n if (isRowNum === void 0) { isRowNum = false; }\n this._label = null;\n this._description = null;\n //public left: number;\n this.align = GridColumnAlign.NONE;\n this.isVisible = true;\n this.isRowNum = false;\n this.dataColumn = column;\n this.grid = grid;\n var widthOptions = grid.options.columnWidths || {};\n if (column) {\n if (column.style.alignment) {\n this.align = MapAlignment(column.style.alignment);\n }\n this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);\n this._description = column.description;\n }\n else if (isRowNum) {\n this.isRowNum = true;\n this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;\n this._label = '';\n this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(CellRendererType.NUMBER);\n }\n if (grid && grid.options && grid.options.onGetCellRenderer) {\n this.cellRenderer = grid.options.onGetCellRenderer(this, this.cellRenderer) || this.cellRenderer;\n }\n }\n Object.defineProperty(GridColumn.prototype, \"label\", {\n get: function () {\n return this._label ? this._label : this.isRowNum ? '' : this.dataColumn.label;\n },\n set: function (value) {\n this._label = this.label;\n },\n enumerable: false,\n configurable: true\n });\n ;\n Object.defineProperty(GridColumn.prototype, \"description\", {\n /** Get column description. */\n get: function () {\n return this._description;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(GridColumn.prototype, \"type\", {\n get: function () {\n return this.dataColumn ? this.dataColumn.type : null;\n },\n enumerable: false,\n configurable: true\n });\n return GridColumn;\n}());\nexport { GridColumn };\nvar GridColumnList = /** @class */ (function () {\n function GridColumnList(columnList, grid) {\n this.items = [];\n this.grid = grid;\n this.sync(columnList);\n }\n GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {\n if (hasRowNumCol === void 0) { hasRowNumCol = true; }\n this.clear();\n var rowNumCol = new GridColumn(null, this.grid, true);\n this.add(rowNumCol);\n if (!hasRowNumCol) {\n rowNumCol.isVisible = false;\n }\n if (columnList) {\n for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {\n var column = _a[_i];\n var col = new GridColumn(column, this.grid);\n if (this.grid.options.onSyncGridColumn) {\n this.grid.options.onSyncGridColumn(col);\n }\n this.add(col);\n }\n }\n };\n Object.defineProperty(GridColumnList.prototype, \"count\", {\n get: function () {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n GridColumnList.prototype.add = function (col) {\n var index = this.items.length;\n this.items.push(col);\n return index;\n };\n GridColumnList.prototype.put = function (index, col) {\n if (index >= 0 && index < this.items.length) {\n this.items[index] = col;\n }\n };\n GridColumnList.prototype.move = function (col, newIndex) {\n var oldIndex = this.items.indexOf(col);\n if (oldIndex >= 0 && oldIndex != newIndex)\n utils.moveArrayItem(this.items, oldIndex, newIndex);\n };\n GridColumnList.prototype.get = function (index) {\n if (index >= 0 && index < this.items.length) {\n return this.items[index];\n }\n else {\n return null;\n }\n };\n // public getIndex(name: string) : number {\n // return this.mapper[name];\n // }\n GridColumnList.prototype.getItems = function () {\n return this.items;\n };\n GridColumnList.prototype.removeAt = function (index) {\n var col = this.get(index);\n this.items.splice(index, 1);\n //delete this.mapper[col.name];\n };\n GridColumnList.prototype.clear = function () {\n this.items = [];\n //this.mapper = {};\n };\n return GridColumnList;\n}());\nexport { GridColumnList };\n//# sourceMappingURL=easy_grid_columns.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { EventEmitter, DataRow, utils, i18n, DataType } from '@easydata/core';\nimport { eqDragManager, DropEffect } from '../utils/drag_manager';\nimport { domel } from '../utils/dom_elem_builder';\nimport { getElementAbsolutePos, eqCssPrefix } from '../utils/ui-utils';\nimport { AutoResizeColumns } from './easy_grid_options';\nimport { GridColumnList, GridColumnAlign } from './easy_grid_columns';\nimport { GridCellRendererStore } from './easy_grid_cell_renderer';\nvar DEFAULT_ROW_HEIGHT = 36;\nvar DEFAULT_ROW_COUNT = 15;\n/** Represents a grid widget with columns rows, paging, custom rendering and more */\nvar EasyGrid = /** @class */ (function () {\n /** Creates and initializes all internal properties of the grid object */\n function EasyGrid(options) {\n this.cssPrefix = \"keg\";\n this.pagination = { page: 1, pageSize: 30, total: 0 };\n this.paginationOptions = {\n maxButtonCount: 10,\n useBootstrap: false //true\n };\n this.defaultDataGridOptions = {\n slot: null,\n dataTable: null,\n fixHeightOnFirstRender: false,\n syncGridColumns: true,\n useRowNumeration: true,\n allowDragDrop: false,\n aggregates: {\n settings: null,\n calculator: null\n },\n paging: {\n enabled: true,\n pageSize: 30,\n pageSizeItems: [20, 30, 50, 100, 200]\n },\n columnWidths: {\n autoResize: AutoResizeColumns.Always,\n stringColumns: {\n min: 100,\n max: 500,\n default: 250\n },\n numberColumns: {\n min: 60,\n default: 120\n },\n boolColumns: {\n min: 50,\n default: 80\n },\n dateColumns: {\n min: 80,\n default: 200\n },\n otherColumns: {\n min: 100,\n max: 500,\n default: 250\n },\n rowNumColumn: {\n min: 40,\n default: 60\n }\n },\n showPlusButton: false,\n viewportRowsCount: null,\n showActiveRow: true\n };\n this.rowsOnPagePromise = null;\n this.containerInitialHeight = 0;\n this.firstRender = true;\n this.prevRowTotals = null;\n this.landingIndex = -1;\n this.landingSlot = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-col-landing-slot\"))\n .addChildElement(domel('div')\n .toDOM())\n .toDOM();\n this._activeRowIndex = -1;\n if (options && options.paging) {\n options.paging = utils.assign(this.defaultDataGridOptions.paging, options.paging);\n }\n this.options = this.mergeOptions(options);\n this.processColumnWidthsOptions();\n if (!this.options.slot)\n throw Error('\"slot\" parameter is required to initialize EasyDataGrid');\n if (!this.options.dataTable)\n throw Error('\"dataTable\" parameter is required to initialize EasyDataGrid');\n this.dataTable = options.dataTable;\n this.eventEmitter = new EventEmitter(this);\n this.cellRendererStore = new GridCellRendererStore(options);\n this.columns = new GridColumnList(this.dataTable.columns, this);\n this.setSlot(this.options.slot);\n this.init(this.options);\n }\n EasyGrid.prototype.mergeOptions = function (options) {\n var colWidthOptions = utils.assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);\n var pagingOptions = utils.assignDeep({}, this.defaultDataGridOptions.paging, options.paging);\n var result = utils.assign({}, this.defaultDataGridOptions, options);\n result.columnWidths = colWidthOptions;\n result.paging = pagingOptions;\n return result;\n };\n EasyGrid.prototype.processColumnWidthsOptions = function () {\n var widthOptions = this.options.columnWidths;\n if (!widthOptions)\n return;\n //string columns\n utils.getStringDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);\n });\n //numeric columns\n utils.getNumericDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);\n });\n //bool columns\n widthOptions[DataType.Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[DataType.Bool]);\n //date columns\n utils.getDateDataTypes().forEach(function (dataType) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);\n });\n //other columns\n var knownTypes = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], utils.getStringDataTypes(), true), utils.getNumericDataTypes(), true), utils.getDateDataTypes(), true), [\n DataType.Bool\n ], false);\n utils.getAllDataTypes().forEach(function (dataType) {\n if (!(dataType in knownTypes)) {\n widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);\n }\n });\n widthOptions[DataType.Unknown] = widthOptions.otherColumns;\n };\n EasyGrid.prototype.setSlot = function (slot) {\n if (typeof slot === 'string') {\n if (slot.length) {\n if (slot[0] === '#') {\n this.slot = document.getElementById(slot.substring(1));\n }\n else if (slot[0] === '.') {\n var result = document.getElementsByClassName(slot.substring(1));\n if (result.length)\n this.slot = result[0];\n }\n else {\n throw Error('Unrecognized slot parameter ' +\n '(Must be id, class or HTMLElement): ' + slot);\n }\n }\n }\n else {\n this.slot = slot;\n }\n };\n /** Initializes grid widget according to the options passed in the parameter */\n EasyGrid.prototype.init = function (options) {\n var _this = this;\n if (options.onInit) {\n this.addEventListener('init', options.onInit);\n }\n if (options.onRowClick) {\n this.addEventListener('rowClick', options.onRowClick);\n }\n if (options.onRowDbClick) {\n this.addEventListener('rowDbClick', options.onRowDbClick);\n }\n if (options.onPlusButtonClick) {\n this.addEventListener('plusButtonClick', options.onPlusButtonClick);\n }\n if (options.onColumnChanged) {\n this.addEventListener('columnChanged', options.onColumnChanged);\n }\n if (options.onColumnDeleted) {\n this.addEventListener('columnDeleted', options.onColumnDeleted);\n }\n if (options.onColumnMoved) {\n this.addEventListener('columnMoved', options.onColumnMoved);\n }\n if (options.onPageChanged) {\n this.addEventListener('pageChanged', options.onPageChanged);\n }\n if (options.onActiveRowChanged) {\n this.addEventListener('activeRowChanged', options.onActiveRowChanged);\n }\n this.addEventListener('pageChanged', function (ev) { return _this.activeRowIndex = -1; });\n utils.assignDeep(this.paginationOptions, options.pagination);\n this.pagination.pageSize = this.options.paging.pageSize\n || this.pagination.pageSize;\n if (this.options.allowDragDrop) {\n eqDragManager.registerDropContainer({\n element: this.slot,\n scopes: [\"gridColumnMove\"],\n onDragEnter: function (_, ev) {\n _this.slot.classList.add(\"\".concat(eqCssPrefix, \"-drophover\"));\n _this.showLandingSlot(ev.pageX, ev.pageY);\n },\n onDragOver: function (_, ev) {\n _this.showLandingSlot(ev.pageX, ev.pageY);\n },\n onDragLeave: function (_, ev) {\n ev.dropEffect = DropEffect.Forbid;\n _this.slot.classList.remove(\"\".concat(eqCssPrefix, \"-drophover\"));\n _this.hideLandingSlot();\n },\n onDrop: function (_, ev) {\n _this.dataTable.columns.move(ev.data.column, _this.landingIndex);\n _this.refresh();\n _this.fireEvent({\n type: 'columnMoved',\n columnId: ev.data.column.id,\n newIndex: _this.landingIndex\n });\n }\n });\n }\n this.refresh();\n this.fireEvent('init');\n };\n /** Fires a grid event. You can pass either an event type\n * (like 'init', 'rowClick', 'pageChanged', etc )\n * or a ready-to-use grid event object\n * */\n EasyGrid.prototype.fireEvent = function (event) {\n if (typeof event === \"string\") {\n this.eventEmitter.fire(event);\n }\n else {\n this.eventEmitter.fire(event.type, event);\n }\n };\n /** Allows to set the data (represented by a EasyDataTable object)\n * or to replace the existing one associated with the grid */\n EasyGrid.prototype.setData = function (data) {\n this.dataTable = data;\n this.clear();\n this.refresh();\n };\n /** Returns the EasyDataTable object associated with the grid via `setData()` call */\n EasyGrid.prototype.getData = function () {\n return this.dataTable;\n };\n /** Gets the list of grid columns */\n EasyGrid.prototype.getColumns = function () {\n return this.columns;\n };\n /** This function is called when the grid is destroyed */\n EasyGrid.prototype.destroy = function () {\n this.slot.innerHTML = \"\";\n };\n /** Clears the current DOM object and re-renders everything from the scratch */\n EasyGrid.prototype.refresh = function () {\n this.clearDOM();\n this.render();\n };\n EasyGrid.prototype.clearDOM = function () {\n this.slot.innerHTML = '';\n };\n /** Clears all DOM object in the grid and return it to its initial state */\n EasyGrid.prototype.clear = function () {\n this.pagination.page = 1;\n this.clearDOM();\n };\n /** Renders the grid */\n EasyGrid.prototype.render = function () {\n var _this = this;\n if (!this.hasData() && !this.options.showPlusButton)\n return;\n this.containerInitialHeight = this.slot.clientHeight;\n this.rootDiv = document.createElement('div');\n this.rootDiv.style.width = '100%';\n this.rootDiv.classList.add(\"\".concat(this.cssPrefix, \"-root\"));\n this.columns.sync(this.dataTable.columns, this.options.useRowNumeration);\n this.renderHeader();\n this.rootDiv.appendChild(this.headerDiv);\n this.renderBody();\n this.rootDiv.appendChild(this.bodyDiv);\n this.renderFooter();\n this.rootDiv.appendChild(this.footerDiv);\n var gridContainer = document.createElement('div');\n gridContainer.classList.add(\"\".concat(this.cssPrefix, \"-container\"));\n gridContainer.appendChild(this.rootDiv);\n this.slot.appendChild(gridContainer);\n var needAutoResize = this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\n if (this.rowsOnPagePromise) {\n this.rowsOnPagePromise\n .then(function () { return _this.updateHeight(); })\n .then(function () {\n _this.firstRender = false;\n _this.rowsOnPagePromise = null;\n });\n }\n else {\n setTimeout(function () {\n _this.updateHeight()\n .then(function () {\n _this.firstRender = false;\n if (needAutoResize) {\n _this.resizeColumns();\n }\n });\n }, 100);\n }\n };\n EasyGrid.prototype.updateHeight = function () {\n var _this = this;\n return new Promise(function (resolve) {\n if (_this.options.viewportRowsCount) {\n var firstRow = _this.bodyCellContainerDiv.firstElementChild;\n var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;\n var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;\n var viewportHeight_1 = rowHeight * rowCount;\n domel(_this.bodyViewportDiv)\n .setStyle('height', \"\".concat(viewportHeight_1, \"px\"));\n setTimeout(function () {\n var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;\n viewportHeight_1 = viewportHeight_1 + sbHeight;\n domel(_this.bodyViewportDiv)\n .setStyle('height', \"\".concat(viewportHeight_1, \"px\"));\n resolve();\n }, 100);\n return;\n }\n else if (_this.containerInitialHeight > 0) {\n // comment for now since it does not work in all cases\n // const bodyHeight = this.containerInitialHeight - this.headerDiv.offsetHeight - this.footerDiv.offsetHeight;\n // domel(this.bodyDiv)\n // .setStyle('height', `${bodyHeight}px`);\n }\n resolve();\n })\n .then(function () {\n if (_this.options.fixHeightOnFirstRender && _this.firstRender) {\n _this.slot.style.height = \"\".concat(_this.slot.offsetHeight, \"px\");\n }\n });\n };\n EasyGrid.prototype.getContainerWidth = function () {\n return this.columns.getItems()\n .filter(function (col) { return col.isVisible; })\n .map(function (col) { return col.width; })\n .reduce(function (sum, current) { return sum + current; });\n };\n EasyGrid.prototype.renderHeader = function () {\n var _this = this;\n this.headerDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header\"))\n .toDOM();\n this.headerViewportDiv = domel('div', this.headerDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-viewport\"))\n .toDOM();\n this.headerCellContainerDiv = domel('div', this.headerViewportDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-container\"))\n .toDOM();\n this.headerRowDiv = domel('div', this.headerCellContainerDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-row\"))\n .toDOM();\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var hd = _this.renderColumnHeader(column, index);\n _this.headerRowDiv.appendChild(hd);\n if (column.isRowNum) {\n domel(hd)\n .addChildElement(_this.renderHeaderButtons());\n }\n });\n var containerWidth = this.getContainerWidth();\n domel(this.headerCellContainerDiv)\n .setStyle('width', \"\".concat(containerWidth, \"px\"));\n };\n EasyGrid.prototype.hasData = function () {\n return this.dataTable.columns.count > 0;\n };\n EasyGrid.prototype.renderColumnHeader = function (column, index) {\n var _this = this;\n var colBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell\"))\n .data('col-idx', \"\".concat(index))\n .setStyle('width', \"\".concat(column.width, \"px\"));\n if (column.dataColumn) {\n colBuilder\n .data('col-id', \"\".concat(column.dataColumn.id));\n }\n var colDiv = colBuilder.toDOM();\n domel('div', colDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-resize\"));\n if (!column.isRowNum) {\n domel('div', colDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-header-cell-label\"))\n .text(column.label);\n }\n if (column.description) {\n domel('div', colDiv)\n .addClass('question-mark')\n .title(column.description);\n }\n if (this.options.allowDragDrop) {\n eqDragManager.registerDraggableItem({\n element: colDiv,\n scope: \"gridColumnMove\",\n data: { column: column },\n renderer: function (dragImage) {\n dragImage.innerHTML = '';\n var attrLabel = document.createElement('div');\n attrLabel.innerText = column.label;\n dragImage.classList.add(\"\".concat(_this.cssPrefix, \"-sortable-helper\"));\n dragImage.appendChild(attrLabel);\n },\n onDragStart: function (ev) {\n ev.dropEffect = DropEffect.Allow;\n }\n });\n }\n return colDiv;\n };\n EasyGrid.prototype.renderBody = function () {\n var _this = this;\n this.bodyDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-body\"))\n .toDOM();\n this.bodyViewportDiv = domel('div', this.bodyDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-body-viewport\"))\n .attr('tabIndex', '0')\n .toDOM();\n this.bodyCellContainerDiv = domel('div', this.bodyViewportDiv)\n .addClass(\"\".concat(this.cssPrefix, \"-cell-container\"))\n .toDOM();\n var showAggrs = this.canShowAggregates();\n if (this.dataTable) {\n this.showProgress();\n this.rowsOnPagePromise = this.getRowsToRender()\n .then(function (rows) {\n _this.pagination.total = _this.dataTable.getTotal();\n _this.hideProgress();\n //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)\n _this.bodyCellContainerDiv.innerHTML = '';\n _this.prevRowTotals = null;\n var rowsToRender = 0;\n if (rows.length) {\n var groups_1 = showAggrs\n ? _this.options.aggregates.settings.getGroups()\n : [];\n rowsToRender = (rows.length < _this.pagination.pageSize)\n ? rows.length\n : _this.pagination.pageSize;\n rows.forEach(function (row, index) {\n if (showAggrs)\n _this.updateTotalsState(groups_1, row);\n //we don't actually render the last row\n if (index < rowsToRender) {\n var tr = _this.renderRow(row, index);\n _this.bodyCellContainerDiv.appendChild(tr);\n }\n });\n var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;\n if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {\n var row = new DataRow(_this.dataTable.columns, new Array(_this.dataTable.columns.count));\n _this.updateTotalsState(groups_1, row, true);\n }\n }\n var needAutoResize = _this.options.columnWidths.autoResize !== AutoResizeColumns.Never;\n if (needAutoResize) {\n _this.resizeColumns();\n }\n else {\n var containerWidth = _this.getContainerWidth();\n domel(_this.bodyCellContainerDiv)\n .setStyle('width', \"\".concat(containerWidth, \"px\"));\n }\n return rowsToRender;\n })\n .catch(function (error) { console.error(error); return 0; });\n }\n this.bodyViewportDiv.addEventListener('scroll', function (ev) {\n domel(_this.headerViewportDiv)\n .setStyle('margin-left', \"-\".concat(_this.bodyViewportDiv.scrollLeft, \"px\"));\n });\n this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));\n };\n EasyGrid.prototype.isLastPage = function () {\n if (this.dataTable.elasticChunks) {\n return this.dataTable.totalIsKnown()\n && (this.pagination.page * this.pagination.pageSize) >= this.pagination.total;\n }\n return this.pagination.page * this.pagination.pageSize >= this.pagination.total;\n };\n EasyGrid.prototype.canShowAggregates = function () {\n if (!this.options || !this.options.aggregates || !this.options.aggregates.settings)\n return false;\n var aggrSettings = this.options.aggregates.settings;\n var result = (aggrSettings.hasAggregates() || aggrSettings.hasRecordCount())\n && (aggrSettings.hasGroups() || aggrSettings.hasGrandTotals());\n return result;\n };\n EasyGrid.prototype.updateTotalsState = function (groups, newRow, isLast) {\n if (isLast === void 0) { isLast = false; }\n var aggrSettings = this.options.aggregates.settings;\n if (this.prevRowTotals && aggrSettings.hasGroups()) {\n var changeLevel = -1;\n for (var level = 1; level <= groups.length; level++) {\n var group = groups[level - 1];\n for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {\n changeLevel = level;\n break;\n }\n }\n if (changeLevel !== -1)\n break;\n }\n if (changeLevel !== -1) {\n for (var level = groups.length; level >= changeLevel; level--) {\n var row = new DataRow(this.dataTable.columns, this.prevRowTotals.toArray());\n var tr = this.renderTotalsRow(level, row);\n this.bodyCellContainerDiv.appendChild(tr);\n }\n }\n }\n if (isLast && aggrSettings.hasGrandTotals() && aggrSettings.hasAggregates()) {\n var tr = this.renderTotalsRow(0, newRow);\n this.bodyCellContainerDiv.appendChild(tr);\n }\n this.prevRowTotals = newRow;\n };\n EasyGrid.prototype.applyGroupColumnTemplate = function (template, value, count) {\n var result = template.replace(/{{\\s*GroupValue\\s*}}/g, value ? \"\".concat(value) : '-');\n result = result.replace(/{{\\s*GroupCount\\s*}}/g, count ? \"\".concat(count) : '-');\n return result;\n };\n EasyGrid.prototype.renderTotalsRow = function (level, row) {\n var _this = this;\n var aggrSettings = this.options.aggregates.settings;\n var group = (level > 0)\n ? aggrSettings.getGroups()[level - 1]\n : { columns: [], aggregates: aggrSettings.getAggregates() };\n var rowBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-row\"))\n .addClass(\"\".concat(this.cssPrefix, \"-row-totals\"))\n .addClass(\"\".concat(this.cssPrefix, \"-totals-lv\").concat(level))\n .data('totals-level', \"\".concat(level))\n .attr('tabindex', '-1');\n var rowElement = rowBuilder.toDOM();\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var val = '';\n var colIndex = !column.isRowNum\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\n : -1;\n if (!column.isRowNum && column.dataColumn) {\n if (group.columns.indexOf(column.dataColumn.id) >= 0) {\n val = row.getValue(colIndex);\n }\n ;\n }\n if (colIndex == _this.dataTable.columns.count - 1) {\n val = '. . . . . .';\n }\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\n });\n var aggrContainer = this.options.aggregates.calculator.getAggrContainer();\n var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });\n var key = aggrSettings.buildGroupKey(group, row);\n aggrContainer.getAggregateData(level, key)\n .then(function (values) {\n for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {\n var aggrColId = aggrCols_1[_i];\n row.setValue(aggrColId, values[aggrColId]);\n }\n rowElement.innerHTML = '';\n _this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var val = '';\n var colIndex = !column.isRowNum\n ? _this.dataTable.columns.getIndex(column.dataColumn.id)\n : -1;\n if (!column.isRowNum) {\n var isLastGroupColumn = false;\n if (column.dataColumn) {\n var groupColIndex = group.columns.indexOf(column.dataColumn.id);\n var aggrColIndex = aggrCols.indexOf(column.dataColumn.id);\n if (level > 0) {\n isLastGroupColumn = groupColIndex == group.columns.length - 1;\n }\n else {\n //if it's a grand total row consider first column as the last group column\n isLastGroupColumn = colIndex == 0;\n }\n if (groupColIndex >= 0 || aggrColIndex >= 0) {\n val = row.getValue(colIndex);\n }\n ;\n }\n var groupFooterTemplate = '';\n if (level > 0) {\n groupFooterTemplate = column.dataColumn.groupFooterColumnTemplate;\n //set the default template for the last grouping column\n if (!groupFooterTemplate && aggrSettings.hasRecordCount() && isLastGroupColumn) {\n groupFooterTemplate = '{{GroupValue}} ({{GroupCount}})';\n }\n }\n if (groupFooterTemplate) {\n var cellDiv_1 = _this.renderCell(column, index, val, rowElement);\n var innerCell = cellDiv_1.firstChild;\n val = innerCell.innerHTML;\n val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);\n }\n }\n var cellDiv = _this.renderCell(column, index, val, rowElement);\n rowElement.appendChild(cellDiv);\n });\n })\n .catch(function (error) { return console.error(error); });\n return rowElement;\n };\n EasyGrid.prototype.onViewportKeydown = function (ev) {\n if (this.options.showActiveRow) {\n var rowCount = this.bodyCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-row\")).length;\n var newValue = void 0;\n switch (ev.key) {\n case 'ArrowLeft':\n break;\n case 'ArrowRight':\n break;\n case 'ArrowUp':\n ev.preventDefault();\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? rowCount - 1 : this.activeRowIndex - 1;\n this.activeRowIndex = newValue >= 0 ? newValue : 0;\n break;\n case 'ArrowDown':\n ev.preventDefault();\n newValue = this.activeRowIndex < 0 || this.activeRowIndex >= rowCount ? 0 : this.activeRowIndex + 1;\n this.activeRowIndex = newValue < rowCount ? newValue : rowCount - 1;\n break;\n }\n }\n };\n EasyGrid.prototype.ensureRowVisibility = function (rowOrIndex) {\n var row = typeof rowOrIndex === 'number'\n ? this.getDataRow(rowOrIndex)\n : rowOrIndex;\n if (row) {\n var rowRect = row.getBoundingClientRect();\n var viewportRect = this.bodyViewportDiv.getBoundingClientRect();\n var rowTop = rowRect.top - viewportRect.top;\n var rowBottom = rowRect.bottom - viewportRect.top;\n var viewportHeight = this.bodyViewportDiv.clientHeight;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n if (rowTop > 0 &&\n rowBottom <= viewportHeight &&\n rowRect.top > 0 &&\n rowRect.bottom < windowHeight) {\n return;\n }\n if (rowTop < 0) {\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowTop;\n }\n else if (rowBottom > viewportHeight) {\n this.bodyViewportDiv.scrollTop = this.bodyViewportDiv.scrollTop + rowBottom - viewportHeight;\n }\n rowRect = row.getBoundingClientRect();\n if (rowRect.top < 0) {\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.top;\n }\n else if (rowRect.bottom > windowHeight) {\n document.documentElement.scrollTop = document.documentElement.scrollTop + rowRect.bottom - windowHeight;\n }\n }\n };\n /** Returns a promise with the list of the rows to render on one page.\n * The list contains pageSize+1 row to make it possible\n * to render the totals row (if it appears to be on the edge between pages)\n */\n EasyGrid.prototype.getRowsToRender = function () {\n if (this.options.paging.enabled === false) {\n return Promise.resolve(this.dataTable.getCachedRows());\n }\n return this.dataTable.getRows({\n offset: (this.pagination.page - 1) * this.pagination.pageSize,\n limit: this.pagination.pageSize + 1\n })\n .catch(function (error) {\n console.error(error);\n return [];\n });\n };\n EasyGrid.prototype.renderFooter = function () {\n var _this = this;\n this.footerDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-footer\"))\n .toDOM();\n if (this.rowsOnPagePromise) {\n this.rowsOnPagePromise.then(function (count) {\n _this.footerDiv.innerHTML = '';\n _this.footerPaginateDiv = _this.renderPageNavigator();\n _this.footerDiv.appendChild(_this.footerPaginateDiv);\n var pageInfoBlock = _this.renderPageInfoBlock(count);\n _this.footerDiv.appendChild(pageInfoBlock);\n });\n }\n };\n EasyGrid.prototype.renderPageInfoBlock = function (count) {\n var pageInfoDiv = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-page-info\"))\n .toDOM();\n var rowCount = this.dataTable.getTotal();\n if (rowCount > 0) {\n var fistPageRecordNum = count\n ? (this.pagination.page - 1) * this.pagination.pageSize + 1\n : 0;\n var lastPageRecordNum = count\n ? fistPageRecordNum + count - 1\n : 0;\n var totalStr = this.dataTable.getTotal().toString();\n if (this.dataTable.elasticChunks) {\n var count_1 = this.dataTable.getCachedCount();\n var total = this.dataTable.getTotal();\n if (count_1 !== total)\n totalStr = '?';\n }\n pageInfoDiv.innerHTML = i18n.getText('GridPageInfo')\n .replace('{FirstPageRecordNum}', \"<span>\".concat(fistPageRecordNum.toString(), \"</span>\"))\n .replace('{LastPageRecordNum}', \"<span>\".concat(lastPageRecordNum.toString(), \"</span>\"))\n .replace('{Total}', \"<span>\".concat(totalStr, \"</span>\"));\n }\n return pageInfoDiv;\n };\n EasyGrid.prototype.showProgress = function () {\n };\n EasyGrid.prototype.hideProgress = function () {\n };\n EasyGrid.prototype.getLocalIndexByGlobal = function (index) {\n if (this.pagination) {\n return index % this.pagination.pageSize;\n }\n else {\n return index;\n }\n };\n EasyGrid.prototype.getGlobalIndexByLocal = function (index) {\n if (this.pagination) {\n return (this.pagination.page - 1) * this.pagination.pageSize + index;\n }\n else {\n return index;\n }\n };\n EasyGrid.prototype.renderRow = function (row, index) {\n var _this = this;\n var indexGlobal = this.getGlobalIndexByLocal(index);\n var rowBuilder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-row\"))\n .addClass(\"\".concat(this.cssPrefix, \"-row-\").concat(index % 2 == 1 ? 'odd' : 'even'))\n .data('row-idx', \"\".concat(indexGlobal))\n .attr('tabindex', '-1')\n .on('click', function (ev) {\n _this.activeRowIndex = index;\n _this.fireEvent({\n type: 'rowClick',\n row: row,\n rowIndex: index,\n sourceEvent: ev\n });\n })\n .on('dblclick', function (ev) {\n _this.fireEvent({\n type: 'rowDbClick',\n row: row,\n rowIndex: index,\n sourceEvent: ev\n });\n });\n if (index == 0) {\n rowBuilder.addClass(\"\".concat(this.cssPrefix, \"-row-first\"));\n }\n var rowElement = rowBuilder.toDOM();\n if (this.options.showActiveRow && index == this.activeRowIndex) {\n rowBuilder.addClass(\"\".concat(this.cssPrefix, \"-row-active\"));\n }\n this.columns.getItems().forEach(function (column, index) {\n if (!column.isVisible) {\n return;\n }\n var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);\n var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);\n rowElement.appendChild(_this.renderCell(column, index, val, rowElement));\n });\n return rowElement;\n };\n EasyGrid.prototype.renderCell = function (column, colIndex, value, rowElement) {\n var builder = domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-cell\"))\n .data('col-idx', \"\".concat(colIndex))\n .attr('tabindex', '-1')\n .setStyle('width', \"\".concat(column.width, \"px\"));\n if (column.align == GridColumnAlign.LEFT) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-left\"));\n }\n else if (column.align == GridColumnAlign.RIGHT) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-right\"));\n }\n else if (column.align == GridColumnAlign.CENTER) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-cell-align-center\"));\n }\n var cellElement = builder.toDOM();\n var valueCell = cellElement.appendChild(domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-cell-value\"))\n .toDOM());\n if (column.cellRenderer) {\n column.cellRenderer(value, column, valueCell, rowElement);\n }\n return cellElement;\n };\n /** Sets current grid pages (if paging is used) */\n EasyGrid.prototype.setPage = function (page) {\n this.pagination.page = page;\n this.fireEvent({ type: \"pageChanged\", page: page });\n this.refresh();\n this.bodyViewportDiv.focus();\n };\n EasyGrid.prototype.renderPageNavigator = function () {\n var _this = this;\n var paginateDiv = document.createElement('div');\n paginateDiv.className = \"\".concat(this.cssPrefix, \"-pagination-wrapper\");\n var rowCount = this.dataTable.getTotal();\n if (this.options.paging && this.options.paging.enabled && rowCount > 0) {\n var prefix_1 = this.paginationOptions.useBootstrap ? '' : \"\".concat(this.cssPrefix, \"-\");\n var buttonClickHandler_1 = function (ev) {\n var element = ev.target;\n if (element.hasAttribute('data-page')) {\n var page = parseInt(element.getAttribute('data-page'));\n _this.setPage(page);\n }\n };\n var renderPageCell = function (pageIndex, content, disabled, extreme, active) {\n var li = document.createElement('li');\n li.className = \"\".concat(prefix_1, \"page-item\");\n if (!extreme) {\n if (active) {\n li.className += ' active';\n }\n var a_1 = document.createElement('a');\n a_1.setAttribute('href', 'javascript:void(0)');\n a_1.innerHTML = content || pageIndex.toString();\n a_1.setAttribute(\"data-page\", \"\".concat(pageIndex));\n a_1.className = \"\".concat(prefix_1, \"page-link\");\n a_1.addEventListener(\"click\", buttonClickHandler_1);\n li.appendChild(a_1);\n return li;\n }\n var a = document.createElement('span');\n a.setAttribute('aria-hidden', 'true');\n a.className = \"\".concat(prefix_1, \"page-link\");\n if (disabled) {\n li.className += ' disabled';\n }\n else {\n if (_this.paginationOptions.useBootstrap) {\n a = document.createElement('a');\n a.setAttribute('href', 'javascript:void(0)');\n a.setAttribute(\"data-page\", \"\".concat(pageIndex));\n }\n else {\n var newA = document.createElement('a');\n newA.setAttribute('href', 'javascript:void(0)');\n newA.setAttribute('data-page', \"\".concat(pageIndex));\n a = newA;\n }\n a.className = \"\".concat(prefix_1, \"page-link\");\n a.addEventListener(\"click\", buttonClickHandler_1);\n }\n a.innerHTML = content;\n li.appendChild(a);\n return li;\n };\n if (this.dataTable.elasticChunks) {\n var pageIndex = this.pagination.page || 1;\n var ul = document.createElement('ul');\n ul.className = \"\".concat(prefix_1, \"pagination\");\n var cell = renderPageCell(pageIndex - 1, '&laquo;', pageIndex == 1, true, false);\n ul.appendChild(cell);\n cell = renderPageCell(pageIndex + 1, '&raquo;', this.isLastPage(), true, false);\n ul.appendChild(cell);\n paginateDiv.appendChild(ul);\n }\n else {\n if (this.pagination.total > this.pagination.pageSize) {\n var pageIndex = this.pagination.page || 1;\n var pageCount = Math.ceil(this.pagination.total / this.pagination.pageSize) || 1;\n var maxButtonCount = this.paginationOptions.maxButtonCount || 10;\n var zeroBasedIndex = pageIndex - 1;\n var firstPageIndex = zeroBasedIndex - (zeroBasedIndex % maxButtonCount) + 1;\n var lastPageIndex = firstPageIndex + maxButtonCount - 1;\n if (lastPageIndex > pageCount) {\n lastPageIndex = pageCount;\n }\n var ul = document.createElement('ul');\n ul.className = \"\".concat(prefix_1, \"pagination\");\n var cell = renderPageCell(firstPageIndex - 1, '&laquo;', firstPageIndex == 1, true, false);\n ul.appendChild(cell);\n for (var i = firstPageIndex; i <= lastPageIndex; i++) {\n cell = renderPageCell(i, i.toString(), false, false, i == pageIndex);\n ul.appendChild(cell);\n }\n cell = renderPageCell(lastPageIndex + 1, '&raquo;', lastPageIndex == pageCount, true, false);\n ul.appendChild(cell);\n paginateDiv.appendChild(ul);\n }\n }\n if (this.options.paging.allowPageSizeChange) {\n var selectChangeHandler = function (ev) {\n var newValue = parseInt(ev.target.value);\n _this.pagination.pageSize = newValue;\n _this.pagination.page = 1;\n _this.refresh();\n };\n var pageSizes = document.createElement('div');\n pageSizes.className = \"\".concat(this.cssPrefix, \"-page-sizes\");\n var selectSize = document.createElement('div');\n selectSize.className = \"kfrm-select \".concat(this.cssPrefix, \"-page-sizes-select\");\n pageSizes.appendChild(selectSize);\n var sel_1 = document.createElement('select');\n var selOptions = this.options.paging.pageSizeItems || [];\n var selSet = new Set(selOptions);\n selSet.add(this.options.paging.pageSize || 20);\n Array.from(selSet).forEach(function (el) {\n var option = document.createElement(\"option\");\n option.value = el.toString();\n option.text = el.toString();\n sel_1.appendChild(option);\n });\n sel_1.value = (this.pagination.pageSize || 20).toString();\n selectSize.appendChild(sel_1);\n sel_1.addEventListener('change', selectChangeHandler);\n var labelDiv = document.createElement('div');\n labelDiv.className = \"\".concat(this.cssPrefix, \"-page-sizes-label\");\n pageSizes.appendChild(labelDiv);\n var label = document.createElement('span');\n label.innerText = i18n.getText('GridItemsPerPage');\n labelDiv.appendChild(label);\n paginateDiv.appendChild(pageSizes);\n }\n }\n return paginateDiv;\n };\n EasyGrid.prototype.addEventListener = function (eventType, handler) {\n return this.eventEmitter.subscribe(eventType, function (event) { return handler(event.data); });\n };\n EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {\n this.eventEmitter.unsubscribe(eventType, handlerId);\n };\n EasyGrid.prototype.renderHeaderButtons = function () {\n var _this = this;\n if (this.options.showPlusButton) {\n return domel('div')\n .addClass(\"\".concat(this.cssPrefix, \"-header-btn-plus\"))\n .title(this.options.plusButtonTitle || 'Add')\n .addChild('a', function (builder) { return builder\n .attr('href', 'javascript:void(0)')\n .on('click', function (e) {\n e.preventDefault();\n _this.fireEvent({\n type: 'plusButtonClick',\n sourceEvent: e\n });\n }); })\n .toDOM();\n }\n return domel('span')\n .addText('#')\n .toDOM();\n };\n EasyGrid.prototype.showLandingSlot = function (pageX, pageY) {\n var colElems = this.headerRowDiv.querySelectorAll(\"[class*=\".concat(this.cssPrefix, \"-table-col]\"));\n var cols = [];\n for (var i = 1; i < colElems.length; i++) {\n var rowElem = colElems[i];\n if (rowElem.style.display === 'none')\n continue;\n cols.push(rowElem);\n }\n if (cols.length === 0) {\n this.landingIndex = 0;\n this.headerRowDiv.appendChild(this.landingSlot);\n return;\n }\n var landingPos = getElementAbsolutePos(this.landingSlot);\n if (pageX >= landingPos.x && pageX <= landingPos.x + this.landingSlot.offsetWidth) {\n return;\n }\n var newLandingIndex = this.landingIndex;\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var colPos = getElementAbsolutePos(col);\n var width = col.offsetWidth;\n if (pageX > colPos.x && pageX < colPos.x + width) {\n // -1 as we don't need to count add button here\n newLandingIndex = parseInt(col.getAttribute('data-col-idx')) - 1;\n }\n }\n if (newLandingIndex != this.landingIndex) {\n this.landingIndex = newLandingIndex;\n if (this.landingIndex < cols.length) {\n this.headerRowDiv.insertBefore(this.landingSlot, cols[this.landingIndex]);\n }\n else {\n this.headerRowDiv.appendChild(this.landingSlot);\n }\n }\n };\n EasyGrid.prototype.hideLandingSlot = function () {\n var _this = this;\n this.landingIndex = -1;\n setTimeout(function () {\n if (_this.landingSlot.parentElement) {\n _this.landingSlot.parentElement.removeChild(_this.landingSlot);\n }\n }, 10);\n };\n Object.defineProperty(EasyGrid.prototype, \"activeRowIndex\", {\n get: function () {\n return this._activeRowIndex;\n },\n set: function (value) {\n if (value !== this._activeRowIndex) {\n var oldValue = this._activeRowIndex;\n this._activeRowIndex = value;\n this.updateActiveRow();\n this.fireEvent({\n type: 'activeRowChanged',\n oldValue: oldValue,\n newValue: this.activeRowIndex,\n rowIndex: this.getGlobalIndexByLocal(this.activeRowIndex)\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n EasyGrid.prototype.updateActiveRow = function () {\n var _this = this;\n if (this.options.showActiveRow) {\n var rows = this.bodyCellContainerDiv.querySelectorAll(\"[class*=\".concat(this.cssPrefix, \"-row-active]\"));\n rows.forEach(function (el) { el.classList.remove(\"\".concat(_this.cssPrefix, \"-row-active\")); });\n var activeRow = this.getActiveRow();\n if (activeRow) {\n activeRow.classList.add(\"\".concat(this.cssPrefix, \"-row-active\"));\n this.ensureRowVisibility(this.activeRowIndex);\n }\n }\n };\n EasyGrid.prototype.getActiveRow = function () {\n return this.getDataRow(this.activeRowIndex);\n };\n EasyGrid.prototype.getDataRow = function (index) {\n var rows = Array.from(this.bodyCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-row:not(.\").concat(this.cssPrefix, \"-row-totals)\")));\n if (index >= 0 && index < rows.length)\n return rows[index];\n return null;\n };\n /** Makes the grid focused for keyboard events */\n EasyGrid.prototype.focus = function () {\n this.bodyViewportDiv.focus();\n };\n /** Resizes columns according to the data they represent */\n EasyGrid.prototype.resizeColumns = function () {\n if (this.options.columnWidths.autoResize === AutoResizeColumns.Never)\n return;\n var containerWidth = this.bodyCellContainerDiv.style.width;\n this.bodyCellContainerDiv.style.visibility = 'hidden';\n this.bodyCellContainerDiv.style.width = '1px';\n //this.headerRowDiv.style.visibility = 'hidden';\n this.headerRowDiv.style.width = '1px';\n var sumWidth = 0;\n var columns = this.columns.getItems();\n var headerCells = this.headerCellContainerDiv.querySelectorAll(\".\".concat(this.cssPrefix, \"-header-cell\"));\n var headerIdx = 0;\n var _loop_1 = function (idx) {\n var column = columns[idx];\n if (!column.isVisible)\n return \"continue\";\n var calculatedWidth = this_1.options.columnWidths.autoResize !== AutoResizeColumns.Always && column.dataColumn\n ? column.dataColumn.calculatedWidth\n : 0;\n var cellValues = this_1.bodyCellContainerDiv.querySelectorAll(\".\".concat(this_1.cssPrefix, \"-cell[data-col-idx=\\\"\").concat(idx, \"\\\"] > .\").concat(this_1.cssPrefix, \"-cell-value\"));\n var maxWidth = 0;\n if (calculatedWidth > 0) {\n sumWidth += calculatedWidth;\n column.width = calculatedWidth;\n cellValues.forEach(function (value) {\n value.parentElement.style.width = \"\".concat(calculatedWidth, \"px\");\n });\n headerCells[headerIdx].style.width = \"\".concat(calculatedWidth, \"px\");\n }\n else {\n if (cellValues.length == 0) {\n headerCells[headerIdx].style.width = null;\n headerCells[headerIdx].style.whiteSpace = 'nowrap';\n }\n maxWidth = headerCells[headerIdx].offsetWidth;\n if (cellValues.length > 0) {\n cellValues.forEach(function (value) {\n value.parentElement.style.width = null;\n var width = value.parentElement.offsetWidth;\n if (width > maxWidth) {\n maxWidth = width;\n }\n });\n maxWidth += 3;\n var maxOption = column.isRowNum\n ? this_1.options.columnWidths.rowNumColumn.max || 500\n : this_1.options.columnWidths[column.dataColumn.type].max || 2000;\n var minOption = column.isRowNum\n ? this_1.options.columnWidths.rowNumColumn.min || 0\n : this_1.options.columnWidths[column.dataColumn.type].min || 20;\n if (maxWidth > maxOption) {\n maxWidth = maxOption;\n }\n if (maxWidth < minOption) {\n maxWidth = minOption;\n }\n if (utils.isNumericType(column.type)) {\n //increase the calculated width in 1.3 times for numeric columns\n maxWidth = Math.round(maxWidth * 1.3);\n }\n sumWidth += maxWidth;\n column.width = maxWidth;\n cellValues.forEach(function (value) {\n value.parentElement.style.width = \"\".concat(maxWidth, \"px\");\n });\n headerCells[headerIdx].style.width = \"\".concat(maxWidth, \"px\");\n if (column.dataColumn) {\n column.dataColumn.calculatedWidth = maxWidth;\n }\n }\n else {\n sumWidth += maxWidth;\n }\n }\n headerIdx++;\n };\n var this_1 = this;\n for (var idx = 0; idx < this.columns.count; idx++) {\n _loop_1(idx);\n }\n if (sumWidth > 0) {\n this.bodyCellContainerDiv.style.width = \"\".concat(sumWidth, \"px\");\n this.headerCellContainerDiv.style.width = \"\".concat(sumWidth, \"px\");\n }\n else {\n this.bodyCellContainerDiv.style.width = containerWidth;\n this.headerCellContainerDiv.style.width = containerWidth;\n }\n this.bodyCellContainerDiv.style.visibility = null;\n this.headerRowDiv.removeAttribute('style');\n };\n return EasyGrid;\n}());\nexport { EasyGrid };\n//# sourceMappingURL=easy_grid.js.map","var Calendar = /** @class */ (function () {\n function Calendar(slot, options) {\n this.slot = slot;\n this.options = options || {};\n if (!this.options.yearRange) {\n this.options.yearRange = 'c-10:c+10';\n }\n }\n Object.defineProperty(Calendar.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp-cal';\n },\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.setDate = function (date) {\n this.currentDate = new Date(date);\n };\n Calendar.prototype.getDate = function () {\n return new Date(this.currentDate);\n };\n Calendar.prototype.dateChanged = function (apply) {\n if (this.options.onDateChanged) {\n this.options.onDateChanged(this.currentDate, apply);\n }\n };\n return Calendar;\n}());\nexport { Calendar };\n//# sourceMappingURL=calendar.js.map","import { getElementAbsolutePos } from '../utils/ui-utils';\nvar DateTimePicker = /** @class */ (function () {\n function DateTimePicker(options) {\n this.calendar = null;\n this.timePicker = null;\n this.options = options;\n this.render();\n }\n Object.defineProperty(DateTimePicker.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp';\n },\n enumerable: false,\n configurable: true\n });\n DateTimePicker.prototype.setDateTime = function (dateTime) {\n this.currentDateTime = new Date(dateTime);\n if (this.calendar) {\n this.calendar.setDate(this.currentDateTime);\n }\n if (this.timePicker) {\n this.timePicker.setTime(this.currentDateTime);\n }\n };\n DateTimePicker.prototype.getDateTime = function () {\n return new Date(this.currentDateTime);\n };\n DateTimePicker.prototype.render = function () {\n var _this = this;\n if (this.options.showCalendar) {\n this.calendar = this.createCalendar({\n yearRange: this.options.yearRange,\n showDateTimeInput: this.options.showDateTimeInput,\n timePickerIsUsed: this.options.showTimePicker,\n oneClickDateSelection: this.options.oneClickDateSelection,\n onDateChanged: function (date, apply) {\n _this.currentDateTime = date;\n if (_this.timePicker) {\n _this.timePicker.setTime(_this.currentDateTime);\n }\n if (_this.options.showTimePicker) {\n _this.dateTimeChanged();\n }\n if (apply) {\n _this.apply(_this.currentDateTime);\n }\n }\n });\n if (this.calendar)\n this.calendar.render();\n }\n if (this.options.showTimePicker) {\n this.timePicker = this.createTimePicker({\n onTimeChanged: function (time) {\n _this.currentDateTime.setHours(time.getHours());\n _this.currentDateTime.setMinutes(time.getMinutes());\n if (_this.calendar) {\n _this.calendar.setDate(_this.currentDateTime);\n }\n _this.dateTimeChanged();\n }\n });\n if (this.timePicker)\n this.timePicker.render();\n }\n this.setDateTime(new Date());\n };\n DateTimePicker.prototype.createCalendar = function (options) {\n return null;\n };\n DateTimePicker.prototype.createTimePicker = function (options) {\n return null;\n };\n DateTimePicker.prototype.show = function (anchor) {\n if (this.options.beforeShow) {\n this.options.beforeShow();\n }\n var pos = getElementAbsolutePos(anchor || document.body);\n this.slot.style.top = pos.y + anchor.clientHeight + 'px';\n this.slot.style.left = pos.x + 'px';\n };\n DateTimePicker.prototype.apply = function (date) {\n if (this.options.onApply) {\n this.options.onApply(date);\n }\n this.destroy();\n };\n DateTimePicker.prototype.cancel = function () {\n if (this.options.onCancel) {\n this.options.onCancel();\n }\n this.destroy();\n };\n DateTimePicker.prototype.destroy = function () {\n if (this.slot && this.slot.parentElement) {\n this.slot.parentElement.removeChild(this.slot);\n }\n };\n DateTimePicker.prototype.dateTimeChanged = function () {\n if (this.options.onDateTimeChanged) {\n this.options.onDateTimeChanged(this.currentDateTime);\n }\n };\n return DateTimePicker;\n}());\nexport { DateTimePicker };\n//# sourceMappingURL=date_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n, utils as dataUtils } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { Calendar } from './calendar';\nvar DefaultCalendar = /** @class */ (function (_super) {\n __extends(DefaultCalendar, _super);\n function DefaultCalendar(slot, options) {\n var _this = _super.call(this, slot, options) || this;\n _this.daysOfWeek = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n _this.months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n _this.calendarBody = null;\n _this.isManualInputChanging = false;\n for (var i = 0; i < _this.daysOfWeek.length; i++) {\n _this.daysOfWeek[i] = i18n.getShortWeekDayName(i + 1);\n }\n for (var i = 0; i < _this.months.length; i++) {\n _this.months[i] = i18n.getLongMonthName(i + 1);\n }\n return _this;\n }\n DefaultCalendar.prototype.setDate = function (date) {\n _super.prototype.setDate.call(this, date);\n this.selectedMonth = this.currentDate.getMonth();\n this.selectedYear = this.currentDate.getFullYear();\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.render = function () {\n var _this = this;\n var header = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-header\"));\n if (this.options.showDateTimeInput) {\n header\n .addChildElement(this.renderManualDateInput());\n }\n else {\n header\n .addChild('span', function (builder) { return _this.headerTextElem = builder.toDOM(); });\n }\n domel(this.slot)\n .addChildElement(this.renderCalendarButtons());\n this.calendarBody = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-body\"))\n .toDOM();\n };\n DefaultCalendar.prototype.getInputDateFormat = function () {\n var settings = i18n.getLocaleSettings();\n return (this.options.timePickerIsUsed)\n ? \"\".concat(settings.editDateFormat, \" \").concat(settings.editTimeFormat)\n : settings.editDateFormat;\n };\n DefaultCalendar.prototype.renderManualDateInput = function () {\n var _this = this;\n var format = this.getInputDateFormat();\n var builder = domel('input')\n .attr('placeholder', format)\n .addClass(\"\".concat(this.cssPrefix, \"-header-input\"));\n builder\n .mask(format.replace('yyyy', '9999')\n .replace('MM', '99')\n .replace('dd', '99')\n .replace('HH', '99')\n .replace('mm', '99')\n .replace('ss', '99'))\n .on('input', function (ev) {\n builder.removeClass('error');\n try {\n _this.isManualInputChanging = true;\n var newDate = dataUtils.strToDateTime(_this.manualInputElem.value, format);\n _this.currentDate = newDate;\n _this.jump(_this.currentDate.getFullYear(), _this.currentDate.getMonth());\n _this.dateChanged(false);\n }\n catch (e) {\n builder.addClass('error');\n }\n finally {\n _this.isManualInputChanging = false;\n }\n })\n .on('keydown', function (ev) {\n if (ev.keyCode === 13) {\n ev.preventDefault();\n ev.stopPropagation();\n if (_this.manualInputElem.className.indexOf('error') < 0\n && !_this.isManualInputChanging)\n _this.dateChanged(true);\n }\n })\n .on('focus', function () {\n setTimeout(function () {\n _this.manualInputElem.selectionStart = 0;\n _this.manualInputElem.selectionEnd = 0;\n }, 50);\n });\n this.manualInputElem = builder.toDOM();\n return this.manualInputElem;\n };\n DefaultCalendar.prototype.updateDisplayedDateValue = function () {\n if (this.manualInputElem) {\n if (!this.isManualInputChanging) {\n var format = this.getInputDateFormat();\n this.manualInputElem.value = dataUtils.dateTimeToStr(this.currentDate, format);\n this.manualInputElem.focus();\n }\n }\n else if (this.headerTextElem) {\n var locale = i18n.getCurrentLocale();\n this.headerTextElem.innerText = this.currentDate.toLocaleString(locale == 'en' ? undefined : locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n }\n };\n DefaultCalendar.prototype.renderCalendarButtons = function () {\n var _this = this;\n var builder = domel('nav')\n .addClass(\"\".concat(this.cssPrefix, \"-nav\"))\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-prev\"))\n .on('click', function () {\n _this.prev();\n })\n .addChild('span', function (builder) { return builder.html('&lsaquo;'); }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-selectors\"))\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-month\"))\n .addChild('select', function (builder) {\n builder\n .on('change', function () {\n _this.jump(_this.selectedYear, parseInt(_this.selectMonthElem.value));\n });\n var _loop_1 = function (i) {\n builder.addChild('option', function (builder) { return builder\n .attr('value', i.toString())\n .text(_this.months[i]); });\n };\n for (var i = 0; i < _this.months.length; i++) {\n _loop_1(i);\n }\n _this.selectMonthElem = builder.toDOM();\n }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-year\"))\n .addChild('select', function (builder) { return _this.selectYearElem = builder\n .on('change', function () {\n _this.jump(parseInt(_this.selectYearElem.value), _this.selectedMonth);\n })\n .toDOM(); }); }); })\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-nav-next\"))\n .on('click', function () {\n _this.next();\n })\n .addChild('span', function (builder) { return builder.html('&rsaquo;'); }); });\n return builder.toDOM();\n };\n DefaultCalendar.prototype.prev = function () {\n this.selectedYear = (this.selectedMonth === 0) ? this.selectedYear - 1 : this.selectedYear;\n this.selectedMonth = (this.selectedMonth === 0) ? 11 : this.selectedMonth - 1;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.next = function () {\n this.selectedYear = (this.selectedMonth === 11) ? this.selectedYear + 1 : this.selectedYear;\n this.selectedMonth = (this.selectedMonth + 1) % 12;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.rerenderSelectYear = function () {\n var match = /c-(\\d*):c\\+(\\d*)/g.exec(this.options.yearRange);\n var minusYear = 0;\n var plusYear = 1;\n if (match !== null) {\n minusYear = parseInt(match[1]);\n plusYear = parseInt(match[2]);\n }\n this.selectYearElem.innerHTML = '';\n for (var i = 0; i <= minusYear + plusYear; i++) {\n var op = document.createElement(\"option\");\n var year = this.selectedYear - minusYear + i;\n op.value = year.toString();\n op.innerText = year.toString();\n this.selectYearElem.appendChild(op);\n }\n };\n DefaultCalendar.prototype.jump = function (year, month) {\n this.selectedYear = year;\n this.selectedMonth = month;\n this.rerenderMonth();\n };\n DefaultCalendar.prototype.rerenderMonth = function () {\n var _this = this;\n //header text\n this.updateDisplayedDateValue();\n this.rerenderSelectYear();\n var firstDay = (new Date(this.selectedYear, this.selectedMonth)).getDay();\n var daysInMonth = new Date(this.selectedYear, this.selectedMonth + 1, 0).getDate();\n this.calendarBody.innerHTML = \"\";\n this.selectYearElem.value = this.selectedYear.toString();\n this.selectMonthElem.value = this.selectedMonth.toString();\n this.daysOfWeek.forEach(function (day, idx) {\n domel('div', _this.calendarBody)\n .addClass(\"\".concat(_this.cssPrefix, \"-weekday\"))\n .addClass(idx == 0 || idx == 6 ? \"\".concat(_this.cssPrefix, \"-weekend\") : '')\n .text(day);\n });\n // Add empty cells before first day\n for (var i = 0; i < firstDay; i++) {\n domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day-empty\"));\n }\n // Add all month days\n var today = new Date();\n for (var day = 1; day <= daysInMonth; day++) {\n var builder = domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day\"))\n .attr('data-date', day.toString())\n .text(day.toString())\n .on('click', function (e) {\n _this.currentDate.setFullYear(_this.selectedYear);\n _this.currentDate.setMonth(_this.selectedMonth);\n _this.currentDate.setDate(parseInt(e.target.getAttribute('data-date')));\n _this.dateChanged(_this.options.oneClickDateSelection);\n });\n if (day === today.getDate() && this.selectedYear === today.getFullYear() && this.selectedMonth === today.getMonth()) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-day-current\"));\n }\n if (day === this.currentDate.getDate() && this.selectedYear === this.currentDate.getFullYear() && this.selectedMonth === this.currentDate.getMonth()) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-day-selected\"));\n }\n var dayOfWeek = (firstDay + day - 1) % 7;\n if (dayOfWeek == 0 || dayOfWeek == 6) {\n builder.addClass(\"\".concat(this.cssPrefix, \"-weekend\"));\n }\n }\n // Add empty cells after last day\n var cellsDrawnInLastRow = (firstDay + daysInMonth) % 7;\n var cellsToDraw = cellsDrawnInLastRow == 0 ? 0 : 7 - cellsDrawnInLastRow;\n for (var i = 0; i < cellsToDraw; i++) {\n domel('div', this.calendarBody)\n .addClass(\"\".concat(this.cssPrefix, \"-day-empty\"));\n }\n };\n DefaultCalendar.prototype.dateChanged = function (apply) {\n _super.prototype.dateChanged.call(this, apply);\n this.rerenderMonth();\n };\n return DefaultCalendar;\n}(Calendar));\nexport { DefaultCalendar };\n//# sourceMappingURL=default_calendar.js.map","var TimePicker = /** @class */ (function () {\n function TimePicker(slot, options) {\n this.slot = slot;\n this.options = options || {};\n }\n Object.defineProperty(TimePicker.prototype, \"cssPrefix\", {\n get: function () {\n return 'kdtp-tp';\n },\n enumerable: false,\n configurable: true\n });\n TimePicker.prototype.setTime = function (time) {\n this.currentTime = new Date(time);\n };\n TimePicker.prototype.getTime = function () {\n return new Date(this.currentTime);\n };\n TimePicker.prototype.timeChanged = function () {\n if (this.options.onTimeChanged) {\n this.options.onTimeChanged(this.currentTime);\n }\n };\n return TimePicker;\n}());\nexport { TimePicker };\n//# sourceMappingURL=time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { TimePicker } from './time_picker';\nvar DefaultTimePicker = /** @class */ (function (_super) {\n __extends(DefaultTimePicker, _super);\n function DefaultTimePicker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultTimePicker.prototype.setTime = function (time) {\n _super.prototype.setTime.call(this, time);\n this.updateDisplayedTime();\n this.hoursInput.valueAsNumber = time.getHours();\n this.minutesInput.valueAsNumber = time.getMinutes();\n };\n DefaultTimePicker.prototype.render = function () {\n var _this = this;\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-time\"))\n .addChild('span', function (builder) { return _this.timeText = builder.toDOM(); })\n .toDOM();\n var slidersBuilder = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-sliders\"));\n slidersBuilder\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-time-row\"))\n .title('Hours')\n .addChild('input', function (builder) { return _this.hoursInput = builder\n .addClass(\"\".concat(_this.cssPrefix, \"-input-hours\"))\n .type('range')\n .attr('min', '0')\n .attr('max', '23')\n .attr('step', '1')\n .on('input', function (e) {\n _this.currentTime.setHours(_this.hoursInput.valueAsNumber);\n _this.updateDisplayedTime();\n _this.timeChanged();\n })\n .toDOM(); }); });\n slidersBuilder\n .addChild('div', function (builder) { return builder\n .addClass(\"\".concat(_this.cssPrefix, \"-time-row\"))\n .title('Minutes')\n .addChild('input', function (builder) { return _this.minutesInput = builder\n .addClass(\"\".concat(_this.cssPrefix, \"-input-minutes\"))\n .type('range')\n .attr('min', '0')\n .attr('max', '59')\n .attr('step', '1')\n .on('input', function (e) {\n _this.currentTime.setMinutes(_this.minutesInput.valueAsNumber);\n _this.updateDisplayedTime();\n _this.timeChanged();\n })\n .toDOM(); }); });\n return this.slot;\n };\n DefaultTimePicker.prototype.updateDisplayedTime = function () {\n var locale = i18n.getCurrentLocale();\n var timeToDraw = this.currentTime.toLocaleString(locale == 'en' ? undefined : locale, {\n hour: \"numeric\",\n minute: \"numeric\"\n });\n this.timeText.innerText = timeToDraw;\n };\n return DefaultTimePicker;\n}(TimePicker));\nexport { DefaultTimePicker };\n//# sourceMappingURL=default_time_picker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n } from '@easydata/core';\nimport { domel } from '../utils/dom_elem_builder';\nimport { DateTimePicker } from './date_time_picker';\nimport { DefaultCalendar } from './default_calendar';\nimport { DefaultTimePicker } from './default_time_picker';\nimport { getElementAbsolutePos } from '../utils/ui-utils';\nvar DefaultDateTimePicker = /** @class */ (function (_super) {\n __extends(DefaultDateTimePicker, _super);\n function DefaultDateTimePicker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultDateTimePicker.prototype.render = function () {\n var _this = this;\n var sb = domel('div', document.body)\n .addClass(\"\".concat(this.cssPrefix))\n .attr('tabIndex', '0')\n .setStyle('position', 'absolute')\n .setStyle('top', '-1000px')\n .setStyle('left', '-1000px')\n .on('keydown', function (ev) {\n if (ev.keyCode === 27) { // ESC is pressed\n _this.cancel();\n }\n else if (ev.keyCode === 13) { // Enter is pressed\n _this.apply(_this.getDateTime());\n }\n return false;\n });\n if (this.options.zIndex) {\n sb.setStyle('z-index', \"\".concat(this.options.zIndex));\n }\n this.slot = sb.toDOM();\n _super.prototype.render.call(this);\n this.renderButtons();\n this.globalMouseDownHandler = function (e) {\n var event = window.event || e;\n var o = event.srcElement || event.target;\n var isOutside = !_this.slot.contains(event.target);\n if (isOutside) {\n document.removeEventListener('mousedown', _this.globalMouseDownHandler, true);\n _this.cancel();\n }\n return true;\n };\n };\n DefaultDateTimePicker.prototype.renderButtons = function () {\n var _this = this;\n var builder = domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-buttons\"))\n .addChild('button', function (b) { return _this.nowButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-now\"))\n .text(i18n.getText('ButtonNow'))\n .on('click', function () {\n _this.setDateTime(new Date());\n _this.dateTimeChanged();\n return false;\n })\n .toDOM(); });\n if (this.options.showTimePicker || !this.options.oneClickDateSelection) {\n builder.addChild('button', function (b) { return _this.submitButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-apply\"))\n .text(i18n.getText('ButtonApply'))\n .on('click', function () {\n _this.apply(_this.getDateTime());\n return false;\n })\n .toDOM(); });\n }\n builder.addChild('button', function (b) { return _this.submitButton = b\n .addClass(\"\".concat(_this.cssPrefix, \"-button \").concat(_this.cssPrefix, \"-button-cancel\"))\n .text(i18n.getText('ButtonCancel'))\n .on('click', function () {\n _this.cancel();\n return false;\n })\n .toDOM(); });\n };\n DefaultDateTimePicker.prototype.createCalendar = function (options) {\n this.calendarSlot =\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-cal\"))\n .toDOM();\n return new DefaultCalendar(this.calendarSlot, options);\n };\n DefaultDateTimePicker.prototype.createTimePicker = function (options) {\n this.timePickerSlot =\n domel('div', this.slot)\n .addClass(\"\".concat(this.cssPrefix, \"-tp\"))\n .toDOM();\n return new DefaultTimePicker(this.timePickerSlot, options);\n };\n DefaultDateTimePicker.prototype.show = function (anchor) {\n var _this = this;\n if (this.options.showDateTimeInput) {\n if (this.options.beforeShow) {\n this.options.beforeShow();\n }\n var anchorPos = getElementAbsolutePos(anchor || document.body);\n var parentPos = getElementAbsolutePos(anchor ? anchor.parentElement || anchor : document.body);\n this.slot.style.top = parentPos.y + 'px';\n this.slot.style.left = anchorPos.x + 'px';\n }\n else {\n _super.prototype.show.call(this, anchor);\n this.slot.focus();\n }\n setTimeout(function () {\n document.addEventListener('mousedown', _this.globalMouseDownHandler, true);\n }, 1);\n };\n return DefaultDateTimePicker;\n}(DateTimePicker));\nexport { DefaultDateTimePicker };\n//# sourceMappingURL=default_date_time_picker.js.map","export var DialogFooterAlignment;\n(function (DialogFooterAlignment) {\n DialogFooterAlignment[DialogFooterAlignment[\"Left\"] = 1] = \"Left\";\n DialogFooterAlignment[DialogFooterAlignment[\"Center\"] = 2] = \"Center\";\n DialogFooterAlignment[DialogFooterAlignment[\"Right\"] = 3] = \"Right\";\n})(DialogFooterAlignment || (DialogFooterAlignment = {}));\n//# sourceMappingURL=dialog_service.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { i18n, utils, liquid } from '@easydata/core';\nimport { DialogFooterAlignment } from './dialog_service';\nimport { domel } from '../utils/dom_elem_builder';\nvar cssPrefix = \"kdlg\";\nexport var DefaultDialogService = /** @class */ (function () {\n function DefaultDialogService() {\n }\n DefaultDialogService.prototype.openConfirm = function (title, content, callback) {\n var _this = this;\n var template = \"<div id=\\\"\".concat(cssPrefix, \"-dialog-confirm\\\">\").concat(content, \"</div>\");\n var options = {\n title: title,\n closable: false,\n submitable: true,\n cancelable: true,\n body: template\n };\n if (callback) {\n options.onSubmit = function () {\n callback(true);\n };\n options.onCancel = function () {\n callback(false);\n };\n this.open(options);\n return;\n }\n return new Promise(function (resolve) {\n options.onSubmit = function () {\n resolve(true);\n };\n options.onCancel = function () {\n resolve(false);\n };\n _this.open(options);\n });\n };\n DefaultDialogService.prototype.openPrompt = function (title, content, defVal, callback) {\n var _this = this;\n var template = \"<div id=\\\"\".concat(cssPrefix, \"-dialog-form\\\" class=\\\"kfrm-form\\\">\\n <div class=\\\"kfrm-fields label-above\\\">\\n <label for=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" id=\\\"\").concat(cssPrefix, \"-dialog-form-content\\\">\").concat(content, \"</label>\\n <input type=\\\"text\\\" name=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" id=\\\"\").concat(cssPrefix, \"-dialog-form-input\\\" />\\n </div>\\n </div>\");\n var options = {\n title: title,\n submitable: true,\n closable: true,\n cancelable: true,\n submitOnEnter: true,\n body: template,\n arrangeParents: false,\n beforeOpen: function () {\n var input = document.getElementById(\"\".concat(cssPrefix, \"-dialog-form-input\"));\n if (defVal) {\n input.value = defVal;\n }\n input.focus();\n }\n };\n var processInput = function (callback) {\n var input = document.getElementById(\"\".concat(cssPrefix, \"-dialog-form-input\"));\n var result = input.value;\n if (result && result.replace(/\\s/g, '').length > 0) {\n callback(result);\n return true;\n }\n input.classList.add('eqjs-invalid');\n return false;\n };\n if (callback) {\n options.onSubmit = function () {\n return processInput(callback);\n };\n options.onCancel = function () {\n callback(\"\");\n };\n this.open(options);\n return;\n }\n return new Promise(function (resolve) {\n options.onSubmit = function () {\n return processInput(resolve);\n };\n options.onCancel = function () {\n resolve(\"\");\n };\n _this.open(options);\n });\n };\n DefaultDialogService.prototype.open = function (options, data) {\n var _this = this;\n var dialog = new DefaultDialog(options, data);\n var onDestroy = options.onDestroy;\n options.onDestroy = function (dlg) {\n _this.untrack(dlg);\n onDestroy && onDestroy(dlg);\n };\n dialog.open();\n this.track(dialog);\n return dialog;\n };\n DefaultDialogService.prototype.createSet = function (options) {\n return new DefaultDialogSet(options, this);\n };\n DefaultDialogService.prototype.untrack = function (dlg) {\n var index = DefaultDialogService.openDialogs.indexOf(dlg);\n if (index >= 0) {\n DefaultDialogService.openDialogs.splice(index, 1);\n }\n };\n DefaultDialogService.prototype.track = function (dlg) {\n DefaultDialogService.openDialogs.push(dlg);\n };\n DefaultDialogService.prototype.openProgress = function (options) {\n var _this = this;\n var dialog = new DefaultProgressDialog(options);\n var onDestroy = options.onDestroy;\n options.onDestroy = function (dlg) {\n _this.untrack(dlg);\n onDestroy && onDestroy(dlg);\n };\n dialog.open();\n this.track(dialog);\n return dialog;\n };\n DefaultDialogService.prototype.getAllDialogs = function () {\n return Array.from(DefaultDialogService.openDialogs);\n };\n DefaultDialogService.prototype.closeAllDialogs = function () {\n for (var _i = 0, _a = Array.from(DefaultDialogService.openDialogs); _i < _a.length; _i++) {\n var dialog = _a[_i];\n dialog.close();\n }\n };\n DefaultDialogService.openDialogs = [];\n return DefaultDialogService;\n}());\nvar DefaultDialog = /** @class */ (function () {\n function DefaultDialog(options, data) {\n var _this = this;\n this.options = options;\n this.submitHandler = function (token) {\n if (_this.options.onSubmit && _this.options.onSubmit(_this, token) === false) {\n return false;\n }\n _this.destroy();\n return true;\n };\n this.cancelHandler = function () {\n if (_this.options.onCancel) {\n _this.options.onCancel(_this);\n }\n _this.destroy();\n };\n this.keydownHandler = function (ev) {\n if (ev.keyCode == 13 && _this.isActiveDialog()) {\n ev.preventDefault();\n ev.stopPropagation();\n if (_this.submitHandler()) {\n window.removeEventListener('keydown', _this.keydownHandler, false);\n return false;\n }\n }\n return true;\n };\n this.dialogId = utils.generateId('dlg');\n this.data = data;\n this.slot =\n domel('div', document.body)\n .attr('tab-index', '-1')\n .data('dialog-id', this.dialogId)\n .addClass(\"\".concat(cssPrefix, \"-modal\"), 'is-active')\n .focus()\n .addChild('div', function (b) { return b\n .addClass('kdlg-modal-background'); })\n .addChild('div', function (b) { return _this.windowElement = b\n .addClass(\"\".concat(cssPrefix, \"-modal-window\"))\n .addChild('header', function (b) {\n _this.headerElement = b\n .addClass(\"\".concat(cssPrefix, \"-header\"))\n .addChild('p', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-header-title\"))\n .addText(options.title); })\n .toDOM();\n if (options.closable !== false)\n b.addChild('button', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-modal-close\"))\n .on('click', function () {\n _this.cancelHandler();\n })\n .focus(); });\n })\n .addChild('div', function (b) {\n b.addClass(\"\".concat(cssPrefix, \"-alert-container\"));\n _this.alertElement = b.toDOM();\n })\n .addChild('section', function (b) {\n _this.bodyElement = b\n .addClass(\"\".concat(cssPrefix, \"-body\"))\n .toDOM();\n if (typeof options.body === 'string') {\n var html = liquid.renderLiquidTemplate(options.body, data);\n b.addHtml(html);\n }\n else {\n b.addChildElement(options.body);\n }\n })\n .addChild('footer', function (b) {\n var alignClass = null;\n if (options.footerAlignment && options.footerAlignment == DialogFooterAlignment.Center) {\n alignClass = 'align-center';\n }\n else {\n alignClass = 'align-right';\n }\n _this.footerElement = b\n .addClass(\"\".concat(cssPrefix, \"-footer\"))\n .toDOM();\n b.addClass(alignClass);\n if (options.submitable === false)\n return;\n b.addChild('button', function (bb) {\n bb.id(_this.dialogId + '-btn-submit')\n .addClass('kfrm-button', 'is-info')\n .addText(options.submitButtonText || i18n.getText('ButtonOK'));\n if (options.recaptchaSiteKey) {\n bb.data('sitekey', options.recaptchaSiteKey);\n bb.addClass('g-recaptcha');\n bb.on('click', function (e) {\n if (grecaptcha) {\n grecaptcha.ready(function () {\n grecaptcha.execute(options.recaptchaSiteKey, { action: 'submit' })\n .then(function (token) {\n _this.submitHandler(token);\n });\n });\n }\n else {\n _this.submitHandler();\n }\n });\n }\n else {\n bb.on('click', function (e) {\n _this.submitHandler();\n });\n }\n bb.focus();\n });\n if (options.cancelable !== false)\n b.addChild('button', function (bb) { return bb\n .id(_this.dialogId + '-btn-cancel')\n .addClass('kfrm-button')\n .addText(options.cancelButtonText || i18n.getText('ButtonCancel'))\n .on('click', function (e) {\n _this.cancelHandler();\n }); });\n })\n .toDOM(); })\n .toDOM();\n }\n DefaultDialog.prototype.getData = function () {\n return this.data;\n };\n DefaultDialog.prototype.getRootElement = function () {\n return this.slot;\n };\n DefaultDialog.prototype.getSubmitButtonElement = function () {\n return document.getElementById(this.dialogId + '-btn-submit');\n };\n DefaultDialog.prototype.getCancelButtonElement = function () {\n return document.getElementById(this.dialogId + '-btn-cancel');\n };\n DefaultDialog.prototype.open = function () {\n var _this = this;\n if (this.options.beforeOpen) {\n this.options.beforeOpen(this);\n }\n domel(this.slot).show();\n if (this.options.arrangeParents) {\n this.arrangeParents(true);\n }\n var windowDiv = this.slot\n .querySelector(\".\".concat(cssPrefix, \"-modal-window\"));\n if (this.options.height) {\n windowDiv.style.height = typeof this.options.height === 'string'\n ? this.options.height\n : \"\".concat(this.options.height, \"px\");\n }\n if (this.options.width) {\n windowDiv.style.width = typeof this.options.width === 'string'\n ? this.options.width\n : \"\".concat(this.options.width, \"px\");\n }\n if (this.options.submitOnEnter) {\n window.addEventListener('keydown', this.keydownHandler, false);\n }\n //clear alert on change in any input element \n this.slot.querySelectorAll('input')\n .forEach(function (element) {\n return element.addEventListener('input', function () {\n _this.clearAlert();\n if (_this.options.onInput) {\n _this.options.onInput(_this);\n }\n });\n });\n if (this.options.onShow) {\n this.options.onShow(this);\n }\n };\n DefaultDialog.prototype.submit = function () {\n this.submitHandler();\n };\n DefaultDialog.prototype.cancel = function () {\n this.cancelHandler();\n };\n DefaultDialog.prototype.close = function () {\n this.destroy();\n };\n DefaultDialog.prototype.disableButtons = function () {\n var buttons = this.slot.querySelectorAll('button');\n buttons.forEach(function (button) { return button.disabled = true; });\n };\n DefaultDialog.prototype.enableButtons = function () {\n var buttons = this.slot.querySelectorAll('button');\n buttons.forEach(function (button) { return button.disabled = false; });\n };\n DefaultDialog.prototype.showAlert = function (text, reason, replace) {\n var alert = domel('div')\n .addClass(\"\".concat(cssPrefix, \"-alert \").concat(reason || ''))\n .addChild('span', function (b) { return b\n .addClass(\"\".concat(cssPrefix, \"-alert-closebtn\"))\n .text('×')\n .on('click', function (ev) {\n var alert = ev.target.parentElement;\n alert.parentElement.removeChild(alert);\n }); })\n .addText(text)\n .toDOM();\n if (replace === true) {\n this.clearAlert();\n }\n this.alertElement.appendChild(alert);\n };\n DefaultDialog.prototype.clearAlert = function () {\n this.alertElement.innerHTML = '';\n };\n DefaultDialog.prototype.destroy = function () {\n var elem = document.querySelectorAll(\"[data-dialog-id=\\\"\".concat(this.dialogId, \"\\\"]\"));\n if (elem.length <= 0)\n return;\n if (this.options.arrangeParents) {\n this.arrangeParents(false);\n }\n document.body.removeChild(this.slot);\n if (this.options.submitOnEnter) {\n window.removeEventListener('keydown', this.keydownHandler, false);\n }\n if (this.options.onDestroy) {\n this.options.onDestroy(this);\n }\n };\n DefaultDialog.prototype.isActiveDialog = function () {\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal');\n return windowDivs[windowDivs.length - 1] === this.slot;\n };\n DefaultDialog.prototype.arrangeParents = function (turnOn) {\n var windowDivs = document.documentElement.querySelectorAll('.kdlg-modal-window');\n for (var i = 0; i < windowDivs.length - 1; i++) {\n if (turnOn) {\n var offset = i == 0 ? 20 : i * 40 + 20;\n domel(windowDivs[i])\n .setStyle('margin-top', \"\".concat(offset, \"px\"))\n .setStyle('margin-left', \"\".concat(offset, \"px\"));\n }\n else {\n domel(windowDivs[i])\n .removeStyle('margin-top')\n .removeStyle('margin-left');\n }\n }\n };\n return DefaultDialog;\n}());\nexport { DefaultDialog };\nvar DefaultProgressDialog = /** @class */ (function (_super) {\n __extends(DefaultProgressDialog, _super);\n function DefaultProgressDialog(options, data) {\n var _this = this;\n var contentElement;\n var progressElement;\n var body = domel('div')\n .addChild('div', function (b) { return contentElement = b\n .text(options.content || '')\n .toDOM(); })\n .addChild('div', function (b) {\n b\n .addClass(\"\".concat(cssPrefix, \"-progress-line\"))\n .addChild('div', function (b) {\n progressElement = b\n .addClass('fill')\n .toDOM();\n if (options.determinated) {\n b.setStyle('width', '0%');\n }\n else {\n b.addClass('indeterminate');\n }\n });\n })\n .toDOM();\n _this = _super.call(this, {\n title: options.title,\n body: body,\n beforeOpen: options.beforeOpen,\n onSubmit: options.onSubmit,\n width: options.width,\n height: options.height,\n submitable: false,\n cancelable: false,\n closable: false,\n onDestroy: options.onDestroy\n }, data) || this;\n _this.contentElement = contentElement;\n _this.progressElement = progressElement;\n return _this;\n }\n DefaultProgressDialog.prototype.updateContent = function (content) {\n this.contentElement.innerText = content;\n };\n DefaultProgressDialog.prototype.updateProgress = function (progress) {\n var _this = this;\n progress = this.in01(progress);\n this.progressElement.style.width = \"\".concat(progress * 100, \"%\");\n if (progress === 1) {\n // postpone for 0.5s for smooth closing\n setTimeout(function () {\n _this.submit();\n }, 500);\n }\n };\n DefaultProgressDialog.prototype.in01 = function (num) {\n if (num > 1)\n return 1;\n if (num < 0)\n return 0;\n return num;\n };\n return DefaultProgressDialog;\n}(DefaultDialog));\nexport { DefaultProgressDialog };\nvar DefaultDialogSet = /** @class */ (function () {\n function DefaultDialogSet(options, dialogService) {\n this.options = options;\n this.dialogService = dialogService;\n this.currentDialog = null;\n this.currentIndex = 0;\n this.options = options;\n this.dialogService = dialogService;\n }\n DefaultDialogSet.prototype.getCurrent = function () {\n return this.currentDialog;\n };\n DefaultDialogSet.prototype.openNext = function (data) {\n return this.open(this.currentIndex + 1, data);\n };\n DefaultDialogSet.prototype.openPrev = function (data) {\n return this.open(this.currentIndex - 1, data);\n };\n DefaultDialogSet.prototype.open = function (page, data) {\n if (page < 0) {\n this.currentIndex = 0;\n }\n else if (page >= this.options.length) {\n this.currentIndex = this.options.length - 1;\n }\n else {\n this.currentIndex = page;\n }\n if (this.currentDialog) {\n try {\n this.currentDialog.close();\n }\n catch (e) { }\n }\n var dlgOptions = this.options[this.currentIndex];\n this.currentDialog = this.dialogService.open(dlgOptions, data);\n return this.currentDialog;\n };\n DefaultDialogSet.prototype.close = function () {\n if (this.currentDialog) {\n this.currentDialog.close();\n this.currentDialog = null;\n }\n };\n return DefaultDialogSet;\n}());\nexport { DefaultDialogSet };\n//# sourceMappingURL=default_dialog_service.js.map","import { i18n } from '@easydata/core';\nfunction addEasyDataUITexts() {\n i18n.updateDefaultTexts({\n GridPageInfo: '{FirstPageRecordNum} - {LastPageRecordNum} of {Total} records',\n GridItemsPerPage: 'items per page',\n ButtonOK: \"OK\",\n ButtonCancel: \"Cancel\",\n ButtonApply: 'Apply',\n ButtonNow: 'Now',\n LblTotal: 'Total'\n });\n}\naddEasyDataUITexts();\n//# sourceMappingURL=text_resources.js.map","// grid\nexport * from './grid/easy_grid';\nexport * from './grid/easy_grid_events';\nexport * from './grid/easy_grid_options';\nexport * from './grid/easy_grid_columns';\nexport * from './grid/easy_grid_cell_renderer';\n//datetimepicker\nexport * from './datetimepicker/calendar';\nexport * from './datetimepicker/date_time_picker';\nexport * from './datetimepicker/date_time_picker_options';\nexport * from './datetimepicker/default_calendar';\nexport * from './datetimepicker/default_date_time_picker';\nexport * from './datetimepicker/default_time_picker';\nexport * from './datetimepicker/time_picker';\n// utils\nexport * from './utils/browser_utils';\nexport * from './utils/dom_elem_builder';\nexport * from './utils/drag_manager';\nexport * from './utils/mask';\nexport * from './utils/ui-utils';\n//dialogs\nexport * from './dialogs/default_dialog_service';\nexport * from './dialogs/dialog_service';\nimport './i18n/text_resources';\nimport { DefaultDialogService } from './dialogs/default_dialog_service';\n// export dialogs to use outside of context as global\nvar dialogs = new DefaultDialogService();\nexport { dialogs };\n//# sourceMappingURL=public_api.js.map","import { i18n } from '@easydata/core';\r\nimport { DataType } from '@easydata/core';\r\n\r\nconst internalDateFormat = 'yyyy-MM-dd';\r\nconst internalTimeFormat = 'HH:mm';\r\n\r\nexport const getInternalDateTimeFormat = (dtype: DataType): string => {\r\n if (dtype == DataType.Date)\r\n return internalDateFormat;\r\n\r\n if (dtype == DataType.Time)\r\n return internalTimeFormat;\r\n\r\n return `${internalDateFormat}T${internalTimeFormat}`;\r\n}\r\n\r\nexport const getEditDateTimeFormat = (dtype: DataType): string => {\r\n const settings = i18n.getLocaleSettings();\r\n if (dtype == DataType.Date)\r\n return settings.editDateFormat;\r\n\r\n if (dtype == DataType.Time)\r\n return settings.editTimeFormat;\r\n\r\n return `${settings.editDateFormat} ${settings.editTimeFormat}`;\r\n}\r\n\r\nexport const setLocation = (path: string) => {\r\n const state = window.history.state;\r\n history.pushState(state, document.title, path)\r\n window.dispatchEvent(new Event('ed_set_location'));\r\n}","import { MetaEntityAttr } from '@easydata/core';\r\n\r\nexport interface ValidationResult {\r\n successed: boolean;\r\n messages?: string[];\r\n}\r\n\r\nexport abstract class Validator {\r\n\r\n public name: string;\r\n\r\n public abstract validate(attr: MetaEntityAttr, value: any): ValidationResult;\r\n \r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from './validator';\r\n\r\nimport { getEditDateTimeFormat } from '../utils/utils';\r\n\r\nexport class DateTimeValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'DateTime';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n\r\n if (!dataUtils.IsDefinedAndNotNull(value) || value == '')\r\n return { successed: true };\r\n\r\n if (dataUtils.getDateDataTypes().indexOf(attr.dataType) >= 0) {\r\n try {\r\n const editFormat = getEditDateTimeFormat(attr.dataType);\r\n const newDate = dataUtils.strToDateTime(value, editFormat);\r\n }\r\n catch {\r\n return {\r\n successed: false,\r\n messages: [i18n.getText('DateTimeError')]\r\n }\r\n }\r\n }\r\n\r\n \r\n return { successed: true };\r\n }\r\n}","import { \r\n DataType, utils as dataUtils, \r\n MetaEntityAttr, \r\n} from '@easydata/core';\r\n\r\nimport { domel } from '@easydata/ui';\r\n\r\nimport { DataContext } from '../main/data_context';\r\n\r\nimport { ValidationResult, Validator } from '../validators/validator';\r\n\r\nimport * as crudUtils from '../utils/utils';\r\nimport { DateTimeValidator } from '../validators/datetime_validator';\r\n\r\nexport class EntityEditForm {\r\n private errorsDiv: HTMLElement;\r\n\r\n private html: HTMLElement;\r\n\r\n constructor(private context: DataContext) { \r\n }\r\n\r\n private validators: Validator[] = [ new DateTimeValidator() ];\r\n\r\n public getHtml() {\r\n return this.html;\r\n }\r\n\r\n private setHtmlInt(html: HTMLElement) {\r\n this.html = html;\r\n this.errorsDiv = this.html.querySelector('.errors-block');\r\n }\r\n\r\n public validate(): boolean {\r\n this.clearErrors();\r\n\r\n const inputs = Array.from(this.html.querySelectorAll<HTMLInputElement | HTMLSelectElement>('input, select'));\r\n let isValid = true;\r\n for(const input of inputs) {\r\n const attr = this.context.getMetaData().getAttributeById(input.name);\r\n\r\n if (input.type === 'checkbox')\r\n continue;\r\n\r\n const result = this.validateValue(attr, input.value);\r\n if (!result.successed) {\r\n if (isValid) {\r\n domel(this.errorsDiv)\r\n .addChild('ul');\r\n }\r\n\r\n isValid = false;\r\n\r\n for(const message of result.messages) {\r\n this.errorsDiv.firstElementChild.innerHTML += `<li>${attr.caption}: ${message}</li>`;\r\n }\r\n }\r\n \r\n this.markInputValid(input, result.successed);\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n public getData(): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n const filePromises: Promise<any>[] = [];\r\n const inputs = Array.from(this.html\r\n .querySelectorAll<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>('input, select, textarea'));\r\n\r\n let obj = {};\r\n for (const input of inputs) {\r\n const property = input.name.substring(input.name.lastIndexOf('.') + 1);\r\n const attr = this.context.getMetaData().getAttributeById(input.name);\r\n\r\n if (input.type === 'checkbox') {\r\n obj[property] = (input as HTMLInputElement).checked;\r\n }\r\n else if (input.type === 'file') {\r\n filePromises.push(this.fileToBase64((input as HTMLInputElement).files[0])\r\n .then(content => obj[property] = content));\r\n }\r\n else {\r\n obj[property] = this.mapValue(attr.dataType, input.value);\r\n }\r\n }\r\n\r\n Promise.all(filePromises)\r\n .then(() => resolve(obj))\r\n .catch((e) => reject(e));\r\n });\r\n }\r\n\r\n private fileToBase64(file: File): Promise<string> {\r\n return new Promise<string>((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const result = reader.result.toString();\r\n resolve(result.substring(result.indexOf(',') + 1));\r\n } \r\n reader.onerror = error => reject(error);\r\n })\r\n }\r\n\r\n public useValidator(...validator: Validator[]) {\r\n this.useValidators(validator);\r\n }\r\n\r\n public useValidators(validators: Validator[]) {\r\n this.validators = this.validators.concat(validators);\r\n }\r\n\r\n private mapValue(type: DataType, value: string) {\r\n if (dataUtils.getDateDataTypes().indexOf(type) >= 0) {\r\n if (type !== DataType.Time && value && value.length) {\r\n const editFormat = crudUtils.getEditDateTimeFormat(type);\r\n const internalFormat = crudUtils.getInternalDateTimeFormat(type);\r\n\r\n const date = dataUtils.strToDateTime(value, editFormat);\r\n return dataUtils.dateTimeToStr(date, internalFormat)\r\n } \r\n\r\n return value && value.length ? value : null;\r\n }\r\n\r\n if (dataUtils.isIntType(type))\r\n return parseInt(value);\r\n\r\n if (dataUtils.isNumericType(type))\r\n return parseFloat(value);\r\n\r\n return value;\r\n }\r\n\r\n private clearErrors() {\r\n this.errorsDiv.innerHTML = '';\r\n\r\n this.html.querySelectorAll('input, select').forEach(el => {\r\n el.classList.remove('is-valid');\r\n el.classList.remove('is-invalid');\r\n });\r\n }\r\n\r\n private markInputValid(input: HTMLElement, valid: boolean) {\r\n input.classList.add(valid ? 'is-valid' : 'is-invalid');\r\n }\r\n\r\n private validateValue(attr: MetaEntityAttr, value: any): ValidationResult {\r\n const result = { successed: true, messages: []}\r\n for(const validator of this.validators) {\r\n const res = validator.validate(attr, value);\r\n if (!res.successed) {\r\n result.successed = false;\r\n result.messages = result.messages.concat(res.messages);\r\n }\r\n }\r\n\r\n return result;\r\n } \r\n}\r\n","import { i18n, utils as dataUtils } from '@easydata/core';\r\nimport { \r\n browserUtils, CellRendererType,\r\n domel, EasyGrid, \r\n GridCellRenderer, GridColumn, DFMT_REGEX\r\n} from '@easydata/ui';\r\nimport { DataFilter } from '../filter/data_filter';\r\n\r\nexport interface TextFilterWidgetOptions {\r\n focus?: boolean,\r\n instantMode?: boolean;\r\n instantTimeout?: number\r\n}\r\n\r\nexport class TextFilterWidget {\r\n private options = {\r\n focus: false,\r\n instantMode: false,\r\n instantTimeout: 1000\r\n }\r\n\r\n constructor(\r\n private slot: HTMLElement, \r\n private grid: EasyGrid, \r\n private filter: DataFilter,\r\n options?: TextFilterWidgetOptions) {\r\n\r\n this.options = dataUtils.assignDeep(this.options, options || {});\r\n\r\n const stringDefRenderer = this.grid.cellRendererStore\r\n .getDefaultRendererByType(CellRendererType.STRING);\r\n this.grid.cellRendererStore\r\n .setDefaultRenderer(CellRendererType.STRING, (value, column, cellElement, rowElement) => \r\n this.highlightCellRenderer(stringDefRenderer, value, column, cellElement, rowElement));\r\n\r\n const numDefRenderer = this.grid.cellRendererStore\r\n .getDefaultRendererByType(CellRendererType.NUMBER);\r\n this.grid.cellRendererStore\r\n .setDefaultRenderer(CellRendererType.NUMBER, (value, column, cellElement, rowElement) => \r\n this.highlightCellRenderer(numDefRenderer, value, column, cellElement, rowElement));\r\n\r\n this.render();\r\n }\r\n\r\n private filterInput: HTMLInputElement;\r\n\r\n private render() { \r\n const horizClass = browserUtils.IsIE() \r\n ? 'kfrm-fields-ie is-horizontal' \r\n : 'kfrm-fields is-horizontal';\r\n\r\n const isEdgeOrIE = browserUtils.IsIE() || browserUtils.IsEdge();\r\n \r\n domel(this.slot)\r\n .addClass(horizClass)\r\n .addChild('div', b => {\r\n b\r\n .addClass('control')\r\n .addChild('input', b => { \r\n this.filterInput = b.toDOM();\r\n b \r\n .attr('placeholder', i18n.getText('SearchInputPlaceholder'))\r\n .type('text')\r\n\r\n b.on('keydown', this.inputKeydownHandler.bind(this))\r\n\r\n if (this.options.instantMode) {\r\n b.on('keyup', this.inputKeyupHandler.bind(this));\r\n }\r\n });\r\n\r\n if (!isEdgeOrIE) {\r\n b \r\n .addClass('has-icons-right')\r\n .addChild('span', b => {\r\n b\r\n .addClass('icon')\r\n .addClass('is-right')\r\n .addClass('is-clickable')\r\n .html('&#x1F5D9;')\r\n .on('click', this.clearButtonClickHander.bind(this));\r\n });\r\n }\r\n });\r\n\r\n if (!this.options.instantMode) {\r\n domel(this.slot)\r\n .addChild('button', b => b\r\n .addClass('kfrm-button')\r\n .addText(i18n.getText('SearchBtn'))\r\n .on('click', this.searchButtonClickHandler.bind(this))\r\n );\r\n }\r\n\r\n if (this.options.focus) {\r\n this.filterInput.focus();\r\n }\r\n }\r\n\r\n private applyFilterTimeout: any;\r\n\r\n private inputKeydownHandler(ev: Event) {\r\n if ((ev as KeyboardEvent).keyCode == 13) {\r\n this.applyFilter(true);\r\n }\r\n }\r\n\r\n private inputKeyupHandler() {\r\n if (this.applyFilterTimeout) {\r\n clearTimeout(this.applyFilterTimeout);\r\n }\r\n\r\n this.applyFilterTimeout = setTimeout(() => {\r\n this.applyFilter(true);\r\n }, this.options.instantTimeout);\r\n }\r\n\r\n private clearButtonClickHander() {\r\n this.filterInput.value = '';\r\n this.filterInput.focus();\r\n\r\n this.applyFilter(true);\r\n }\r\n\r\n private searchButtonClickHandler() {\r\n this.applyFilter(true);\r\n }\r\n\r\n public applyFilter(checkChange : boolean) : boolean {\r\n if (this.applyFilterTimeout) {\r\n clearTimeout(this.applyFilterTimeout);\r\n }\r\n\r\n const filterValue = this.filter.getValue();\r\n if (!checkChange || filterValue != this.filterInput.value) {\r\n this.filter.apply(this.filterInput.value)\r\n .then(data => {\r\n this.grid.setData(data);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private highlightCellRenderer(defaultRenderer: GridCellRenderer, value: any, column: GridColumn, cellElement: HTMLElement, rowElement: HTMLElement) { \r\n if (dataUtils.isNumericType(column.type) \r\n || dataUtils.getStringDataTypes().indexOf(column.type) >= 0) \r\n {\r\n if (value) {\r\n if (column.dataColumn && column.dataColumn.displayFormat\r\n && DFMT_REGEX.test(column.dataColumn.displayFormat)) {\r\n value = column.dataColumn.displayFormat.replace(DFMT_REGEX, (_, $1) => {\r\n return i18n.numberToStr(value, $1);\r\n });\r\n }\r\n else {\r\n value = value.toLocaleString();\r\n }\r\n\r\n \r\n const result = this.highlightText(value.toString());\r\n if (result instanceof HTMLElement) {\r\n cellElement.title = value;\r\n cellElement.appendChild(result);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n defaultRenderer(value, column, cellElement, rowElement);\r\n }\r\n\r\n private highlightText(content: string): HTMLElement | string{\r\n const normalizedContent = content.toLowerCase();\r\n const filterValue = this.filter.getValue().toString();\r\n if (filterValue && filterValue.length > 0 && content && content.length > 0) {\r\n \r\n const indexInMas = [];\r\n const words = filterValue.split('||').map(w => w.trim().toLowerCase());\r\n for(let i = 0; i < words.length; i++) {\r\n let pos = 0;\r\n const lowerWord = words[i];\r\n if (!lowerWord.length)\r\n continue;\r\n if (lowerWord === normalizedContent) {\r\n const highlightSpan = document.createElement('span');\r\n highlightSpan.style.backgroundColor = 'yellow';\r\n highlightSpan.innerText = content;\r\n \r\n return highlightSpan;\r\n }\r\n while (pos < content.length - 1) {\r\n const index = normalizedContent.indexOf(lowerWord, pos);\r\n if (index >= 0) {\r\n indexInMas.push({index: index, length: words[i].length});\r\n pos = index + lowerWord.length;\r\n } else {\r\n pos++;\r\n }\r\n }\r\n }\r\n \r\n if (indexInMas.length > 0) {\r\n \r\n //sort array item by index\r\n indexInMas.sort((item1, item2) => {\r\n \r\n if (item1.index > item2.index) {\r\n return 1;\r\n } \r\n else if (item1.index == item2.index2) {\r\n return 0;\r\n } \r\n else {\r\n return -1;\r\n }\r\n \r\n });\r\n \r\n //remove intersecting gaps\r\n for(let i = 0; i < indexInMas.length - 1;) {\r\n const delta = indexInMas[i + 1].index - (indexInMas[i].index + indexInMas[i].length);\r\n if (delta < 0) {\r\n const addDelta = indexInMas[i + 1].length + delta;\r\n if (addDelta > 0) {\r\n indexInMas[i].length += addDelta;\r\n }\r\n indexInMas.splice(i + 1, 1);\r\n } else {\r\n i++;\r\n }\r\n }\r\n \r\n const div = document.createElement('div');\r\n for (let i = 0; i < indexInMas.length; i++) {\r\n if (i === 0) {\r\n const text = document.createTextNode(content.substring(0, indexInMas[i].index));\r\n div.appendChild(text);\r\n }\r\n \r\n const highlightSpan = document.createElement('span');\r\n highlightSpan.style.backgroundColor = 'yellow';\r\n highlightSpan.innerText = content.substring(indexInMas[i].index,\r\n indexInMas[i].index + indexInMas[i].length)\r\n \r\n div.appendChild(highlightSpan);\r\n\r\n const text = (i < indexInMas.length - 1) \r\n ? document.createTextNode(content.substring(indexInMas[i].index\r\n + indexInMas[i].length, indexInMas[i + 1].index))\r\n : document.createTextNode(content.substring(indexInMas[i].index\r\n + indexInMas[i].length));\r\n\r\n div.appendChild(text);\r\n }\r\n \r\n return div;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n}","import { \r\n DataRow, DataType, EasyDataTable, \r\n EditorTag, EntityAttrKind, i18n, \r\n MetaEntityAttr, utils as dataUtils,\r\n ValueEditor\r\n} from '@easydata/core';\r\n\r\nimport { \r\n browserUtils, DateTimePickerOptions, \r\n DefaultDateTimePicker, DefaultDialogService, \r\n domel, DomElementBuilder, EasyGrid \r\n} from '@easydata/ui';\r\n\r\nimport * as crudUtils from '../utils/utils';\r\n\r\nimport { DataContext } from '../main/data_context';\r\nimport { EntityEditForm } from './entity_edit_form';\r\nimport { TextFilterWidget } from '../widgets/text_filter_widget';\r\n\r\nconst isIE = browserUtils.IsIE();\r\n\r\nexport type FormBuildParams = {\r\n values?: DataRow,\r\n isEditForm?: boolean;\r\n};\r\n\r\nexport class EntityEditFormBuilder {\r\n private form: EntityEditForm;\r\n\r\n constructor(private context: DataContext, private params?: FormBuildParams) {\r\n this.params = params || {};\r\n this.reset();\r\n }\r\n\r\n public reset() {\r\n this.form = new EntityEditForm(this.context);\r\n }\r\n\r\n private setupLookupField(parent: HTMLElement, attr: MetaEntityAttr, readOnly: boolean, value: any): void {\r\n const lookupEntity = this.context.getMetaData().getRootEntity()\r\n .subEntities.filter(ent => ent.id == attr.lookupEntity)[0];\r\n const dataAttr = this.context.getMetaData().getAttributeById(attr.dataAttr);\r\n\r\n if (!dataAttr) return;\r\n\r\n readOnly = readOnly || !dataAttr.isEditable;\r\n\r\n value = this.params.values\r\n ? this.params.values.getValue(dataAttr.id)\r\n : undefined;\r\n\r\n const horizClass = isIE\r\n ? 'kfrm-fields-ie is-horizontal'\r\n : 'kfrm-fields is-horizontal';\r\n\r\n let inputEl: HTMLInputElement;\r\n domel(parent)\r\n .addChild('div', b => {\r\n b\r\n .addClass(horizClass)\r\n .addChild('input', b => {\r\n inputEl = b.toDOM();\r\n b.attr('readonly', '');\r\n\r\n b.name(dataAttr.id)\r\n b.type(this.resolveInputType(dataAttr.dataType));\r\n\r\n b.value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString() : '');\r\n });\r\n\r\n if (!readOnly)\r\n b.addChild('button', b => b\r\n .addClass('kfrm-button')\r\n .attr('title', i18n.getText('NavigationBtnTitle'))\r\n .addText('...')\r\n .on('click', (ev) => {\r\n const lookupTable = new EasyDataTable({\r\n loader: {\r\n loadChunk: (chunkParams) => this.context.getDataLoader()\r\n .loadChunk({ ...chunkParams, id: lookupEntity.id } as any)\r\n }\r\n });\r\n\r\n this.context.getDataLoader()\r\n .loadChunk({ offset: 0, limit: 1000, needTotal: true, sourceId: lookupEntity.id } as any)\r\n .then(data => {\r\n for (const col of data.table.columns.getItems()) {\r\n const attrs = lookupEntity.attributes.filter(attr =>\r\n attr.id == col.id && (attr.isPrimaryKey || attr.showInLookup));\r\n\r\n if (attrs.length) {\r\n lookupTable.columns.add(col);\r\n }\r\n }\r\n\r\n lookupTable.setTotal(data.total);\r\n\r\n for (const row of data.table.getCachedRows()) {\r\n lookupTable.addRow(row);\r\n }\r\n\r\n const ds = new DefaultDialogService();\r\n let gridSlot: HTMLElement = null;\r\n\r\n let selectedSlot: HTMLElement = null;\r\n\r\n let widgetSlot: HTMLElement;\r\n const slot = domel('div')\r\n .addClass(`kfrm-form`)\r\n .addChild('div', b => b\r\n .addClass(`kfrm-field`)\r\n .addChild('label', b => b\r\n .addText(i18n.getText('LookupSelectedItem'))\r\n .toDOM()\r\n )\r\n .addChild('div', b => selectedSlot = b\r\n .addText('None')\r\n .toDOM()\r\n )\r\n )\r\n .addChild('div', b => widgetSlot = b.toDOM())\r\n .addChild('div', b => b\r\n .addClass('kfrm-control')\r\n .addChild('div', b => gridSlot = b.toDOM())\r\n )\r\n .toDOM();\r\n\r\n let selectedValue = inputEl.value;\r\n\r\n const getValue = (row: DataRow | any, colId: string) => {\r\n\r\n if (row instanceof DataRow) {\r\n return row.getValue(colId);\r\n }\r\n\r\n const property = colId.substring(colId.lastIndexOf('.') + 1);\r\n return row[property]\r\n }\r\n\r\n const updateSelectedValue = (row: DataRow | any) => {\r\n selectedSlot.innerHTML = lookupTable.columns\r\n .getItems()\r\n .map(col => {\r\n return `<b>${col.label}:</b> ${getValue(row, col.id)}`\r\n })\r\n .join(', ');\r\n }\r\n\r\n if (selectedValue) {\r\n const attr = lookupEntity.getFirstPrimaryAttr();\r\n const key = attr.id.substring(attr.id.lastIndexOf('.') + 1);\r\n this.context.fetchRecord({[key]: selectedValue}, lookupEntity.id)\r\n .then(data => {\r\n if (data.entity) {\r\n updateSelectedValue(data.entity);\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n const lookupGrid = new EasyGrid({\r\n slot: gridSlot,\r\n dataTable: lookupTable,\r\n fixHeightOnFirstRender: true,\r\n paging: {\r\n pageSize: 10\r\n },\r\n onActiveRowChanged: (ev) => {\r\n lookupGrid.getData().getRow(ev.rowIndex)\r\n .then((row) => {\r\n selectedValue = row.getValue(attr.lookupDataAttr);\r\n updateSelectedValue(row);\r\n });\r\n }\r\n });\r\n\r\n ds.open({\r\n title: i18n.getText('LookupDlgCaption')\r\n .replace('{entity}', lookupEntity.caption),\r\n body: slot,\r\n arrangeParents: true,\r\n beforeOpen: () => {\r\n const dataFilter = this.context.createFilter(lookupEntity.id, lookupGrid.getData(), true);\r\n new TextFilterWidget(widgetSlot, lookupGrid, dataFilter,\r\n { instantMode: true, focus: true });\r\n },\r\n onSubmit: () => {\r\n inputEl.value = selectedValue;\r\n return true;\r\n },\r\n onDestroy: () => {\r\n lookupGrid.destroy();\r\n // return focus on button\r\n b.toDOM().focus();\r\n }\r\n });\r\n });\r\n })\r\n );\r\n });\r\n }\r\n\r\n private setupDateTimeField(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean, hidden: boolean) {\r\n const horizClass = isIE\r\n ? 'kfrm-fields-ie is-horizontal'\r\n : 'kfrm-fields is-horizontal';\r\n\r\n const editFormat = crudUtils.getEditDateTimeFormat(attr.dataType);\r\n\r\n let inputEl: HTMLInputElement;\r\n let btnEl: HTMLButtonElement;\r\n\r\n const mask = editFormat\r\n .replace('yyyy', '9999')\r\n .replace('MM', '99')\r\n .replace('dd', '99')\r\n .replace('HH', '99')\r\n .replace('mm', '99')\r\n .replace('ss', '99')\r\n\r\n domel(parent)\r\n .addChild('div', b => {\r\n b\r\n .addClass(horizClass)\r\n .addChild('input', b => {\r\n inputEl = b.toDOM();\r\n\r\n b.name(attr.id)\r\n b.type(hidden ? 'hidden' : this.resolveInputType(attr.dataType));\r\n\r\n if (readOnly) {\r\n b.attr('readonly', '');\r\n }\r\n else {\r\n b.mask(mask)\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n .on('input', ev => {\r\n b.removeClass('is-invalid');\r\n try {\r\n const newDate = dataUtils.strToDateTime(inputEl.value, editFormat);\r\n }\r\n catch (e) {\r\n b.addClass('is-invalid');\r\n }\r\n finally {\r\n\r\n }\r\n })\r\n .on('blur', ev => {\r\n if (inputEl.value === mask.replace(/[9]/g, '_')) {\r\n inputEl.value = '';\r\n }\r\n });\r\n }\r\n\r\n b.value((dataUtils.IsDefinedAndNotNull(value)\r\n ? dataUtils.dateTimeToStr(value, editFormat)\r\n : ''))\r\n });\r\n\r\n if (!readOnly)\r\n b.addChild('button', b => btnEl = b\r\n .addClass('kfrm-button')\r\n .attr('title', i18n.getText(attr.dataType !== DataType.Time\r\n ? 'CalendarBtnTitle'\r\n : 'TimerBtnTitle'))\r\n .addChild('i', b => b.addClass(attr.dataType !== DataType.Time\r\n ? 'ed-calendar-icon'\r\n : 'ed-timer-icon'))\r\n .on('click', (ev) => {\r\n\r\n let value: Date;\r\n try {\r\n value = inputEl.value.length\r\n ? attr.dataType !== DataType.Time\r\n ? dataUtils.strToDateTime(inputEl.value, editFormat)\r\n : dataUtils.strToTime(inputEl.value)\r\n : new Date(new Date().setSeconds(0));\r\n }\r\n catch {\r\n value = new Date(new Date().setSeconds(0));\r\n }\r\n\r\n const pickerOptions: DateTimePickerOptions = {\r\n zIndex: 9999999999,\r\n showCalendar: attr.dataType !== DataType.Time,\r\n showTimePicker: attr.dataType !== DataType.Date,\r\n onApply: (dateTime: Date) => {\r\n dateTime.setSeconds(0);\r\n dateTime.setMilliseconds(0);\r\n\r\n inputEl.value = dataUtils.dateTimeToStr(dateTime, editFormat);\r\n\r\n }\r\n };\r\n\r\n const dtp = new DefaultDateTimePicker(pickerOptions);\r\n dtp.setDateTime(value);\r\n dtp.show(ev.target as HTMLElement);\r\n\r\n }).toDOM()\r\n );\r\n });\r\n }\r\n\r\n private setupListField(parent: HTMLElement, attr: MetaEntityAttr, value: any, values: any, readOnly: boolean) {\r\n domel(parent)\r\n .addChild('div', b => b\r\n .addClass('kfrm-select full-width')\r\n .addChild('select', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n b.attr('name', attr.id)\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n if (values) {\r\n for (let i = 0; i < values.length; i++) {\r\n const val = values[i];\r\n b.addOption({\r\n value: val.id,\r\n title: val.text,\r\n selected: i === 0\r\n });\r\n }\r\n }\r\n b.value(value);\r\n })\r\n );\r\n }\r\n\r\n private setupFileField(parent: HTMLElement, attr: MetaEntityAttr, readOnly: boolean, accept: string) {\r\n domel(parent)\r\n .addChild('input', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n\r\n b.name(attr.id)\r\n .type(this.resolveInputType(attr.dataType));\r\n\r\n b.attr('accept', accept);\r\n });\r\n }\r\n\r\n private setupTextField(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean, hidden : boolean) {\r\n domel(parent)\r\n .addChild('input', b => {\r\n if (readOnly) {\r\n b.attr('readonly', '');\r\n }\r\n b.type(hidden ? 'hidden' : this.resolveInputType(attr.dataType));\r\n\r\n b.name(attr.id)\r\n .type(this.resolveInputType(attr.dataType));\r\n\r\n if (attr.dataType == DataType.Bool) {\r\n if (value)\r\n b.attr('checked', '');\r\n } \r\n else {\r\n b.on('keypress', (ev) => this.applySumbit(ev as KeyboardEvent))\r\n .value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString()\r\n : '');\r\n }\r\n });\r\n }\r\n\r\n private setupTextArea(parent: HTMLElement, attr: MetaEntityAttr, value: any, readOnly: boolean) {\r\n // feature: modify size in value editor ??\r\n domel(parent)\r\n .addChild('textarea', b => {\r\n if (readOnly)\r\n b.attr('readonly', '');\r\n \r\n b.attr('name', attr.id)\r\n b.setStyle('height', `120px`)\r\n b.value(dataUtils.IsDefinedAndNotNull(value)\r\n ? value.toString()\r\n : '');\r\n });\r\n }\r\n\r\n private addFormField(parent: HTMLElement, attr: MetaEntityAttr) {\r\n const value = (this.params.values && attr.kind !== EntityAttrKind.Lookup)\r\n ? this.params.values.getValue(attr.id)\r\n : !this.params.isEditForm\r\n ? attr.defaultValue\r\n : undefined;\r\n\r\n const editor = this.resolveEditor(attr);\r\n\r\n const readOnly = this.params.isEditForm && (attr.isPrimaryKey || !attr.isEditable);\r\n const required = !attr.isNullable;\r\n \r\n if (isIE) {\r\n parent = domel('div', parent)\r\n .addClass('kfrm-field-ie')\r\n .toDOM();\r\n }\r\n\r\n domel(parent)\r\n .addChild('label', b => {\r\n b.attr('for', attr.id);\r\n b.addHtml(`${attr.caption} ${required ? '<sup style=\"color: red\">*</sup>' : ''}: `);\r\n\r\n if (attr.description) {\r\n b.addChild('div', b => b\r\n .attr('title', attr.description)\r\n .addClass('question-mark')\r\n .setStyle('vertical-align', 'middle')\r\n .setStyle('display', 'inline-block')\r\n );\r\n }\r\n });\r\n \r\n const hidden = attr.isPrimaryKey;\r\n \r\n if (attr.kind === EntityAttrKind.Lookup) {\r\n this.setupLookupField(parent, attr, readOnly, value);\r\n return;\r\n }\r\n\r\n switch (editor.tag) {\r\n case EditorTag.DateTime:\r\n this.setupDateTimeField(parent, attr, value, readOnly, hidden);\r\n break;\r\n\r\n case EditorTag.List:\r\n this.setupListField(parent, attr, value, editor.values, readOnly);\r\n break;\r\n\r\n case EditorTag.File:\r\n this.setupFileField(parent, attr, readOnly, editor.accept);\r\n break;\r\n\r\n case EditorTag.Edit:\r\n default:\r\n if (editor.multiline) {\r\n this.setupTextArea(parent, attr, value, readOnly);\r\n }\r\n else {\r\n this.setupTextField(parent, attr, value, readOnly, hidden);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private resolveInputType(dataType: DataType): string {\r\n if (dataType === DataType.Bool)\r\n return 'checkbox';\r\n\r\n if (dataType === DataType.Blob)\r\n return 'file';\r\n\r\n return 'text';\r\n }\r\n\r\n private resolveEditor(attr: MetaEntityAttr): ValueEditor {\r\n let editor = attr.defaultEditor || new ValueEditor();\r\n if (editor.tag == EditorTag.Unknown) {\r\n if (dataUtils.getDateDataTypes().indexOf(attr.dataType) >= 0) {\r\n editor.tag = EditorTag.DateTime;\r\n }\r\n else {\r\n editor.tag = EditorTag.Edit;\r\n }\r\n }\r\n\r\n return editor;\r\n }\r\n\r\n private applySumbit(ev: KeyboardEvent): boolean {\r\n if (ev.keyCode === 13) {\r\n this.sumbitCallback && this.sumbitCallback();\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private sumbitCallback: () => void;\r\n\r\n public onSubmit(sumbitCallback: () => void) {\r\n this.sumbitCallback = sumbitCallback;\r\n return this;\r\n }\r\n\r\n public build(): EntityEditForm {\r\n let fb: DomElementBuilder<HTMLDivElement>;\r\n const formHtml =\r\n domel('div')\r\n .addClass('kfrm-form')\r\n .addChild('div', b => b\r\n .addClass(`errors-block`)\r\n .toDOM()\r\n )\r\n .addChild('div', b => {\r\n b.addClass(`${isIE\r\n ? 'kfrm-fields-ie col-ie-1-4 label-align-right'\r\n : 'kfrm-fields col-a-1 label-align-right'}`);\r\n\r\n fb = b;\r\n })\r\n .toDOM();\r\n\r\n this.form['setHtmlInt'](formHtml);\r\n\r\n for (const attr of this.context.getActiveEntity().attributes) { \r\n if (!this.params.isEditForm && !attr.showOnCreate)\r\n continue;\r\n\r\n if (!attr.isPrimaryKey && this.params.isEditForm && !attr.showOnEdit) {\r\n continue;\r\n }\r\n\r\n this.addFormField(fb.toDOM(), attr)\r\n }\r\n\r\n return this.form;\r\n }\r\n}","export class ProgressBar {\r\n\r\n constructor(private slot: HTMLElement) {\r\n this.hide();\r\n this.slot.classList.add('ed-progress-bar');\r\n }\r\n\r\n public show() {\r\n this.slot.style.removeProperty('display');\r\n }\r\n\r\n public hide() {\r\n this.slot.style.display = 'none';\r\n }\r\n}","import { \r\n DataChunkDescriptor, \r\n DataLoader, EasyDataTable \r\n} from '@easydata/core';\r\n\r\nimport { DataContext } from './data_context';\r\n\r\nexport class EasyDataServerLoader implements DataLoader {\r\n constructor(protected context: DataContext) {\r\n\r\n }\r\n\r\n loadChunk(params: DataChunkDescriptor | any) {\r\n const url = this.context.resolveEndpoint('FetchDataset', \r\n { sourceId: params.sourceId || this.context.getActiveEntity().id });\r\n delete params.sourceId;\r\n\r\n this.context.startProcess();\r\n const http = this.context.getHttpClient();\r\n return http.post(url, params)\r\n .then((result) => {\r\n\r\n const dataTable = new EasyDataTable({\r\n chunkSize: 1000\r\n });\r\n\r\n const resultSet = result.resultSet;\r\n for(const col of resultSet.cols) {\r\n dataTable.columns.add(col);\r\n }\r\n\r\n for(const row of resultSet.rows) {\r\n dataTable.addRow(row);\r\n }\r\n \r\n let totalRecords = 0;\r\n if (result.meta && result.meta.totalRecords) {\r\n totalRecords = result.meta.totalRecords; \r\n }\r\n\r\n return {\r\n table: dataTable,\r\n total: totalRecords,\r\n hasNext: !params.needTotal \r\n || params.offset + params.limit < totalRecords\r\n }\r\n \r\n })\r\n .finally(() => {\r\n this.context.endProcess();\r\n });\r\n }\r\n\r\n}","import { \r\n HttpClient, MetaData,\r\n MetaEntity, combinePath, \r\n EasyDataTable, EasyDataTableOptions,\r\n DataLoader\r\n} from '@easydata/core';\r\nimport { DataFilter } from '../filter/data_filter';\r\nimport { TextDataFilter } from '../filter/text_data_filter';\r\n\r\nimport { EasyDataServerLoader } from './easy_data_server_loader';\r\n\r\ntype EasyDataEndpointKey = \r\n 'GetMetaData' |\r\n 'FetchDataset' | \r\n 'FetchRecord' |\r\n 'CreateRecord' |\r\n 'UpdateRecord' |\r\n 'DeleteRecord' ;\r\n\r\n\r\ninterface CompoundRecordKey { \r\n [key: string]: string \r\n}\r\n \r\nexport interface EasyDataContextOptions {\r\n metaDataId?: string;\r\n endpoint?: string;\r\n dataTable?: EasyDataTableOptions,\r\n onProcessStart?: () => void;\r\n onProcessEnd?: () => void;\r\n}\r\n\r\nexport class DataContext {\r\n private endpoints: Map<string, string> = new Map<string, string>();\r\n\r\n private http: HttpClient;\r\n\r\n private model: MetaData;\r\n\r\n private data: EasyDataTable;\r\n\r\n private dataLoader: EasyDataServerLoader;\r\n\r\n private activeEntity: MetaEntity;\r\n\r\n private options: EasyDataContextOptions;\r\n\r\n constructor(options?: EasyDataContextOptions) {\r\n this.options = options || {};\r\n\r\n this.http = new HttpClient();\r\n this.model = new MetaData();\r\n this.model.id = options.metaDataId || '__default';\r\n\r\n this.dataLoader = new EasyDataServerLoader(this);\r\n const dataTableOptions = {\r\n loader: this.dataLoader,\r\n ...options.dataTable\r\n };\r\n\r\n this.data = new EasyDataTable(dataTableOptions);\r\n\r\n this.setDefaultEndpoints(this.options.endpoint || '/api/easydata');\r\n }\r\n\r\n public getActiveEntity() {\r\n return this.activeEntity;\r\n }\r\n\r\n public setActiveSource(entityId: string) {\r\n this.activeEntity = this.model.getRootEntity().subEntities\r\n .filter(e => e.id == entityId)[0];\r\n }\r\n\r\n public getMetaData(): MetaData {\r\n return this.model;\r\n }\r\n\r\n public getData() {\r\n return this.data;\r\n }\r\n\r\n public getDataLoader(): DataLoader {\r\n return this.dataLoader;\r\n }\r\n\r\n public createFilter(): DataFilter\r\n public createFilter(sourceId: string, data: EasyDataTable, isLookup?: boolean): DataFilter\r\n public createFilter(sourceId?: string, data?: EasyDataTable, isLookup?: boolean): DataFilter {\r\n return new TextDataFilter(\r\n this.dataLoader, \r\n data || this.getData(), \r\n sourceId || this.activeEntity.id, \r\n isLookup);\r\n }\r\n\r\n public loadMetaData(): Promise<MetaData> {\r\n const url = this.resolveEndpoint('GetMetaData');\r\n this.startProcess();\r\n return this.http.get(url) \r\n .then(result => {\r\n if (result.model) {\r\n this.model.loadFromData(result.model);\r\n }\r\n\r\n return this.model;\r\n })\r\n .catch(error => { \r\n console.error(`Error: ${error.message}. Source: ${error.sourceError}`);\r\n return null;\r\n })\r\n .finally(() => {\r\n this.endProcess();\r\n });\r\n }\r\n\r\n public getHttpClient() {\r\n return this.http;\r\n }\r\n\r\n public fetchDataset() {\r\n this.data.clear();\r\n return this.dataLoader.loadChunk({offset: 0, limit: this.data.chunkSize, needTotal: true})\r\n .then(result => { \r\n for(const col of result.table.columns.getItems()) {\r\n this.data.columns.add(col);\r\n }\r\n\r\n this.data.setTotal(result.total);\r\n\r\n for(const row of result.table.getCachedRows()) {\r\n this.data.addRow(row);\r\n }\r\n\r\n return this.data;\r\n })\r\n }\r\n\r\n public fetchRecord(keys : CompoundRecordKey, sourceId?: string) {\r\n const url = this.resolveEndpoint('FetchRecord', { sourceId: sourceId || this.activeEntity.id });\r\n \r\n this.startProcess();\r\n return this.http.get(url, { queryParams: keys})\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public createRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('CreateRecord', \r\n { sourceId: sourceId || this.activeEntity.id });\r\n\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json' })\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public updateRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('UpdateRecord', { sourceId: sourceId || this.activeEntity.id });\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json' })\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public deleteRecord(obj: any, sourceId?: string) {\r\n const url = this.resolveEndpoint('DeleteRecord', { sourceId: sourceId || this.activeEntity.id });\r\n\r\n this.startProcess();\r\n return this.http.post(url, obj, { dataType: 'json'})\r\n .finally(() => this.endProcess());\r\n }\r\n\r\n public setEndpoint(key: EasyDataEndpointKey, value: string) : void\r\n public setEndpoint(key: EasyDataEndpointKey | string, value: string) : void {\r\n this.endpoints.set(key, value);\r\n }\r\n\r\n public setEnpointIfNotExist(key: EasyDataEndpointKey, value: string): void\r\n public setEnpointIfNotExist(key: EasyDataEndpointKey | string, value: string): void {\r\n if (!this.endpoints.has(key))\r\n this.endpoints.set(key, value);\r\n }\r\n\r\n private endpointVarsRegex = /\\{.*?\\}/g;\r\n\r\n public resolveEndpoint(endpointKey: EasyDataEndpointKey, options?: any): string \r\n public resolveEndpoint(endpointKey: EasyDataEndpointKey | string, options?: any) : string {\r\n options = options || {};\r\n\r\n let result = this.endpoints.get(endpointKey);\r\n if (!result) {\r\n throw endpointKey + ' endpoint is not defined'; \r\n }\r\n\r\n let matches = result.match(this.endpointVarsRegex);\r\n if (matches) {\r\n for (let match of matches) {\r\n let opt = match.substring(1, match.length - 1);\r\n let optVal = options[opt];\r\n if (!optVal) {\r\n if (opt == 'modelId') {\r\n optVal = this.model.getId();\r\n }\r\n else if (opt == 'sourceId') {\r\n optVal = this.activeEntity.id;\r\n }\r\n else {\r\n throw `Parameter [${opt}] is not defined`;\r\n }\r\n }\r\n \r\n result = result.replace(match, optVal);\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n\r\n public startProcess() {\r\n if (this.options.onProcessStart)\r\n this.options.onProcessStart();\r\n }\r\n\r\n public endProcess() {\r\n if (this.options.onProcessEnd)\r\n this.options.onProcessEnd();\r\n }\r\n\r\n private setDefaultEndpoints(endpointBase : string) {\r\n this.setEnpointIfNotExist('GetMetaData', combinePath(endpointBase, 'models/{modelId}'));\r\n this.setEnpointIfNotExist('FetchDataset', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));\r\n this.setEnpointIfNotExist('FetchRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));\r\n this.setEnpointIfNotExist('CreateRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/create'));\r\n this.setEnpointIfNotExist('UpdateRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/update'));\r\n this.setEnpointIfNotExist('DeleteRecord', combinePath(endpointBase, 'models/{modelId}/sources/{sourceId}/delete'));\r\n }\r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from './validator';\r\n\r\nexport class TypeValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'Type';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n \r\n if (!dataUtils.IsDefinedAndNotNull(value) || value == '')\r\n return { successed: true };\r\n\r\n if (dataUtils.isNumericType(attr.dataType)) {\r\n if (!dataUtils.isNumeric(value))\r\n return { \r\n successed: false, \r\n messages: [ i18n.getText('NumberError') ]\r\n };\r\n\r\n\r\n if (dataUtils.isIntType(attr.dataType) \r\n && !Number.isInteger(Number.parseFloat(value))) {\r\n return {\r\n successed: false,\r\n messages: [ i18n.getText('IntNumberError') ]\r\n }\r\n }\r\n }\r\n\r\n return { successed: true };\r\n }\r\n}","import { MetaEntityAttr, i18n, utils as dataUtils } from '@easydata/core';\r\nimport { ValidationResult, Validator } from \"./validator\";\r\n\r\nexport class RequiredValidator extends Validator {\r\n\r\n constructor() {\r\n super();\r\n this.name = 'Required';\r\n }\r\n\r\n public validate(attr: MetaEntityAttr, value: any): ValidationResult {\r\n \r\n if (!attr.isNullable && (\r\n !dataUtils.IsDefinedAndNotNull(value)\r\n || value === ''))\r\n\r\n return {\r\n successed: false,\r\n messages: [ i18n.getText('RequiredError') ]\r\n }\r\n\r\n return { successed: true };\r\n }\r\n}","import { DataRow, i18n, utils as dataUtils } from '@easydata/core';\r\n\r\nimport { \r\n DefaultDialogService, \r\n DialogService, domel, EasyGrid, \r\n GridCellRenderer, GridColumn, RowClickEvent \r\n} from '@easydata/ui';\r\n\r\nimport { EntityEditFormBuilder } from '../form/entity_form_builder';\r\nimport { TextFilterWidget } from '../widgets/text_filter_widget';\r\n\r\nimport { DataContext } from '../main/data_context';\r\nimport { RequiredValidator } from '../validators/required_validator';\r\nimport { TypeValidator } from '../validators/type_validator';\r\nimport { Validator } from '../validators/validator';\r\nimport { EasyDataViewOptions } from './options';\r\nimport { setLocation } from '../utils/utils';\r\n\r\nexport class EntityDataView {\r\n private options: EasyDataViewOptions = {\r\n showFilterBox: true,\r\n showBackToEntities: true\r\n }\r\n\r\n private dlg: DialogService;\r\n\r\n private grid: EasyGrid;\r\n\r\n private filterWidget : TextFilterWidget;\r\n\r\n private defaultValidators: Validator[] = [ new RequiredValidator(), new TypeValidator()];\r\n\r\n constructor (\r\n private slot: HTMLElement, \r\n private context: DataContext, \r\n private basePath: string,\r\n options: EasyDataViewOptions) \r\n {\r\n this.options = dataUtils.assignDeep(this.options, options || {});\r\n\r\n this.dlg = new DefaultDialogService();\r\n\r\n const ent = this.context.getActiveEntity();\r\n if (!ent) {\r\n throw \"Can't find active entity for \" + window.location.pathname;\r\n }\r\n \r\n this.slot.innerHTML += `<h1>${ent.captionPlural || ent.caption}</h1>`;\r\n if (this.options.showBackToEntities) {\r\n domel(this.slot)\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(`← ${i18n.getText('BackToEntities')}`)\r\n .on('click', (e) => {\r\n e.preventDefault();\r\n setLocation(this.basePath);\r\n })\r\n );\r\n }\r\n\r\n this.renderGrid();\r\n }\r\n\r\n private syncGridColumnHandler(column: GridColumn) {\r\n if (column.dataColumn) {\r\n const attr = this.context.getMetaData().getAttributeById(column.dataColumn.id);\r\n if (attr) {\r\n column.isVisible = attr.showOnView;\r\n }\r\n }\r\n }\r\n\r\n private renderGrid() {\r\n this.context.fetchDataset()\r\n .then(result => {\r\n const gridSlot = document.createElement('div');\r\n this.slot.appendChild(gridSlot);\r\n gridSlot.id = 'Grid';\r\n this.grid = new EasyGrid(dataUtils.assignDeep({\r\n slot: gridSlot,\r\n dataTable: result,\r\n paging: {\r\n pageSize: 15,\r\n allowPageSizeChange: true,\r\n pageSizeItems: [15, 30, 50, 100, 200]\r\n },\r\n showPlusButton: this.context.getActiveEntity().isEditable,\r\n plusButtonTitle: i18n.getText('AddRecordBtnTitle'),\r\n showActiveRow: false,\r\n onPlusButtonClick: this.addClickHandler.bind(this),\r\n onGetCellRenderer: this.manageCellRenderer.bind(this),\r\n onRowDbClick: this.rowDbClickHandler.bind(this),\r\n onSyncGridColumn: this.syncGridColumnHandler.bind(this)\r\n }, this.options.grid || {}));\r\n\r\n if (this.options.showFilterBox) {\r\n let filterWidgetSlot: HTMLElement;\r\n const filterBarDiv = domel('div')\r\n .addClass(`kfrm-form`)\r\n .setStyle('margin', '10px 0px')\r\n .addChild('div', b => \r\n filterWidgetSlot = b.toDOM()\r\n ).toDOM();\r\n \r\n this.slot.insertBefore(filterBarDiv, gridSlot);\r\n \r\n const dataFilter = this.context.createFilter();\r\n this.filterWidget = new TextFilterWidget(filterWidgetSlot, this.grid, dataFilter); \r\n }\r\n });\r\n }\r\n\r\n private manageCellRenderer(column: GridColumn, defaultRenderer: GridCellRenderer) {\r\n if (column.isRowNum) {\r\n column.width = 110;\r\n return (value: any, column: GridColumn, cell: HTMLElement, rowEl: HTMLElement) => {\r\n const b = domel('div', cell)\r\n .addClass(`keg-cell-value`);\r\n \r\n if (this.context.getActiveEntity().isEditable) {\r\n b.addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('EditBtn'))\r\n .on('click', (ev) => this.editClickHandler(ev as MouseEvent, \r\n parseInt(rowEl.getAttribute('data-row-idx'))))\r\n )\r\n .addChild('span', b => b.text(' | '))\r\n .addChild('a', b => b\r\n .attr('href', 'javascript:void(0)')\r\n .text(i18n.getText('DeleteBtn'))\r\n .on('click', (ev) => \r\n this.deleteClickHandler(ev as MouseEvent, \r\n parseInt(rowEl.getAttribute('data-row-idx'))))\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addClickHandler() {\r\n const activeEntity = this.context.getActiveEntity();\r\n const form = new EntityEditFormBuilder(this.context)\r\n .onSubmit(() => dlg.submit())\r\n .build();\r\n\r\n form.useValidators(this.defaultValidators);\r\n\r\n const dlg = this.dlg.open({\r\n title: i18n.getText('AddDlgCaption')\r\n .replace('{entity}', activeEntity.caption),\r\n body: form.getHtml(),\r\n onSubmit: () => {\r\n if (!form.validate())\r\n return false;\r\n \r\n form.getData()\r\n .then(obj => this.context.createRecord(obj))\r\n .then(() => {\r\n return this.refreshData();\r\n })\r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private editClickHandler(ev: MouseEvent, rowIndex: number) {\r\n this.grid.getData().getRow(rowIndex)\r\n .then(row => {\r\n if (row) {\r\n this.showEditForm(row);\r\n }\r\n })\r\n }\r\n\r\n private showEditForm(row: DataRow) {\r\n const activeEntity = this.context.getActiveEntity();\r\n\r\n const form = new EntityEditFormBuilder(this.context, { isEditForm: true, values: row })\r\n .onSubmit(() => dlg.submit())\r\n .build();\r\n \r\n form.useValidators(this.defaultValidators);\r\n\r\n const dlg = this.dlg.open({\r\n title: i18n.getText('EditDlgCaption')\r\n .replace('{entity}', activeEntity.caption),\r\n body: form.getHtml(),\r\n onSubmit: () => {\r\n if (!form.validate())\r\n return false;\r\n\r\n form.getData()\r\n .then(obj => this.context.updateRecord(obj))\r\n .then(() => { \r\n return this.refreshData();\r\n }) \r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n })\r\n }\r\n\r\n private rowDbClickHandler(ev: RowClickEvent) {\r\n if (this.context.getActiveEntity().isEditable) {\r\n this.showEditForm(ev.row);\r\n }\r\n }\r\n\r\n private deleteClickHandler(ev: MouseEvent, rowIndex: number) {\r\n this.grid.getData().getRow(rowIndex)\r\n .then(row => {\r\n if (row) {\r\n const activeEntity = this.context.getActiveEntity();\r\n const keyAttrs = activeEntity.getPrimaryAttrs();\r\n const keyVals = keyAttrs.map(attr => row.getValue(attr.id));\r\n const keys = keyAttrs.reduce((val, attr, index) => { \r\n const property = attr.id.substring(attr.id.lastIndexOf('.') + 1);\r\n val[property] = keyVals[index];\r\n return val; \r\n }, {});\r\n this.dlg.openConfirm(\r\n i18n.getText('DeleteDlgCaption')\r\n .replace('{entity}', activeEntity.caption), \r\n i18n.getText('DeleteDlgMessage')\r\n .replace('{recordId}', Object.keys(keys)\r\n .map(key => `${key}:${keys[key]}`).join(';')), \r\n )\r\n .then((result) => {\r\n if (result) {\r\n this.context.deleteRecord(keys)\r\n .then(() => {\r\n return this.refreshData();\r\n })\r\n .catch((error) => {\r\n this.processError(error);\r\n });\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n private processError(error) {\r\n this.dlg.open({\r\n title: 'Ooops, something went wrong',\r\n body: error.message,\r\n closable: true,\r\n cancelable: false\r\n });\r\n }\r\n\r\n private refreshData(): Promise<void> {\r\n return this.context.fetchDataset()\r\n .then(() => {\r\n let processed = false;\r\n if (this.filterWidget) { \r\n processed = this.filterWidget.applyFilter(false);\r\n }\r\n\r\n if (!processed) {\r\n this.grid.refresh();\r\n }\r\n });\r\n }\r\n}","import { i18n, MetaData } from '@easydata/core';\r\nimport { domel } from '@easydata/ui';\r\nimport { setLocation } from '../utils/utils';\r\nimport { DataContext } from '../main/data_context';\r\n\r\nexport class RootDataView {\r\n private metaData: MetaData;\r\n\r\n constructor (\r\n private slot: HTMLElement, \r\n private context: DataContext, \r\n private basePath: string) {\r\n\r\n this.metaData = this.context.getMetaData();\r\n this.slot.innerHTML += `<h1>${i18n.getText('RootViewTitle')}</h1>`;\r\n\r\n this.renderEntitySelector();\r\n }\r\n\r\n private renderEntitySelector() {\r\n const entities = this.metaData.getRootEntity().subEntities;\r\n if (this.slot) {\r\n domel(this.slot)\r\n .addChild('div', b => b\r\n .addClass('ed-root')\r\n .addChild('div', b => b\r\n .addClass('ed-menu-description')\r\n .addText(i18n.getText(!this.metaData.isEmpty() ? 'EntityMenuDesc' : 'ModelIsEmpty'))\r\n )\r\n .addChild('ul', b => {\r\n b.addClass('ed-entity-menu');\r\n entities.forEach(ent => {\r\n b.addChild('li', b => {\r\n b.addClass('ed-entity-item')\r\n .on('click', () => {\r\n setLocation(`${this.basePath}/${decodeURIComponent(ent.id)}`);\r\n })\r\n .addChild('div', b => {\r\n b.addClass('ed-entity-item-caption')\r\n .addText(ent.captionPlural || ent.caption);\r\n });\r\n\r\n if (ent.description) {\r\n b.addChild('div', b => {\r\n b.addClass('ed-entity-item-descr')\r\n .addText(`${ent.description}`);\r\n });\r\n }\r\n });\r\n });\r\n })\r\n );\r\n }\r\n }\r\n}","import { utils as dataUtils } from '@easydata/core';\r\n\r\nimport { ProgressBar } from '../widgets/progress_bar';\r\nimport { DataContext } from '../main/data_context';\r\nimport { EntityDataView } from './entity_data_view';\r\nimport { EasyDataViewDispatcherOptions } from './options';\r\nimport { RootDataView } from './root_data_view';\r\n\r\nexport class EasyDataViewDispatcher {\r\n private context: DataContext;\r\n private basePath: string;\r\n\r\n private container: HTMLElement;\r\n\r\n private options: EasyDataViewDispatcherOptions = {\r\n container: '#EasyDataContainer',\r\n basePath: 'easydata' \r\n };\r\n\r\n constructor(options?: EasyDataViewDispatcherOptions) {\r\n this.options = dataUtils.assign(this.options, options || {});\r\n\r\n if (this.options.rootEntity) {\r\n this.options.showBackToEntities = false;\r\n this.basePath = '/';\r\n }\r\n else {\r\n this.basePath = this.normalizeBasePath(this.options.basePath);\r\n }\r\n\r\n this.setContainer(this.options.container);\r\n\r\n const progressBarSlot = document.createElement('div');\r\n const bar = new ProgressBar(progressBarSlot); \r\n \r\n const parent = this.container.parentElement;\r\n parent.insertBefore(progressBarSlot, parent.firstElementChild);\r\n \r\n this.context = new DataContext({\r\n endpoint: this.options.endpoint,\r\n dataTable: this.options.dataTable,\r\n onProcessStart: () => bar.show(),\r\n onProcessEnd: () => bar.hide()\r\n });\r\n\r\n }\r\n \r\n private normalizeBasePath(basePath: string): string {\r\n basePath = this.trimSlashes(basePath);\r\n const fullPath = decodeURIComponent(window.location.pathname);\r\n const idx = fullPath.toLocaleLowerCase().indexOf(basePath);\r\n return idx >= 0 ? fullPath.substring(0, idx + basePath.length) : '/';\r\n }\r\n\r\n private trimSlashes(path: string): string {\r\n return path.replace(/^\\/|\\/$/g, '')\r\n }\r\n\r\n private setContainer(container: HTMLElement | string) {\r\n if (!container) {\r\n throw 'Container is undefined';\r\n }\r\n\r\n if (typeof container === 'string') {\r\n if (container.length){\r\n if (container[0] === '.') {\r\n const result = document.getElementsByClassName(container.substring(1));\r\n if (result.length) \r\n this.container = result[0] as HTMLElement;\r\n }\r\n else {\r\n if (container[0] === '#') {\r\n container = container.substring(1);\r\n }\r\n this.container = document.getElementById(container);\r\n }\r\n if (!this.container) {\r\n throw Error('Unrecognized `container` parameter: ' + container + '\\n' \r\n + 'It must be an element ID, a class name (starting with .) or an HTMLElement object itself.');\r\n }\r\n }\r\n }\r\n else {\r\n this.container = container;\r\n }\r\n }\r\n\r\n private getActiveSourceId(): string | null {\r\n if (this.options.rootEntity) \r\n return this.options.rootEntity;\r\n\r\n const path = decodeURIComponent(window.location.pathname);\r\n const idIndex = this.basePath.length + 1;\r\n return idIndex < path.length ? path.substring(idIndex) : null;\r\n }\r\n\r\n run(): Promise<void> { \r\n this.attach();\r\n\r\n return this.context.loadMetaData()\r\n .then(() => {\r\n this.setActiveView();\r\n })\r\n .catch(error => console.error(error))\r\n }\r\n\r\n private setActiveView() {\r\n this.clear();\r\n\r\n const sourceId = this.getActiveSourceId();\r\n if (sourceId) {\r\n this.context.setActiveSource(sourceId);\r\n window['EDView'] = new EntityDataView(this.container, this.context,\r\n this.basePath, this.options);\r\n }\r\n else {\r\n window['EDView'] = new RootDataView(this.container, this.context, this.basePath);\r\n }\r\n }\r\n\r\n private clear() {\r\n this.container.innerHTML = '';\r\n this.context.getData().clear();\r\n }\r\n\r\n private onSetLocation = () => {\r\n this.setActiveView();\r\n }\r\n\r\n private attach = () => {\r\n window.addEventListener('ed_set_location', this.onSetLocation);\r\n window.addEventListener('popstate', this.onSetLocation);\r\n }\r\n\r\n detach() {\r\n window.removeEventListener('ed_set_location', this.onSetLocation);\r\n window.removeEventListener('popstate', this.onSetLocation);\r\n }\r\n}","import { i18n } from '@easydata/core';\r\n\r\n\r\nfunction addEasyDataCRUDTexts() {\r\n i18n.updateDefaultTexts({\r\n RequiredError: 'Value is required.',\r\n NumberError: 'Value should be a number',\r\n IntNumberError: 'Value should be an integer number',\r\n DateTimeError: 'Invalid date or time value',\r\n LookupSelectedItem: 'Selected item: ',\r\n LookupDlgCaption: 'Select {entity}',\r\n None: 'None',\r\n NavigationBtnTitle: 'Navigation values',\r\n CalendarBtnTitle: 'Open calendar',\r\n TimerBtnTitle: 'Open timer',\r\n AddBtnTitle: 'Add',\r\n AddRecordBtnTitle: 'Add record',\r\n EditBtn: 'Edit',\r\n DeleteBtn: 'Delete',\r\n SelectLink: '[ select ]',\r\n AddDlgCaption: 'Create {entity}',\r\n EditDlgCaption: 'Edit {entity}',\r\n DeleteDlgCaption: 'Delete {entity}',\r\n DeleteDlgMessage: 'Are you sure you want to remove this record: {{recordId}}?',\r\n EntityMenuDesc: 'Click on an entity to view/edit its content',\r\n BackToEntities: 'Back to entities',\r\n SearchBtn: 'Search',\r\n SearchInputPlaceholder: 'Search...',\r\n RootViewTitle: 'Entities',\r\n ModelIsEmpty: 'No entity was found.'\r\n });\r\n}\r\n\r\naddEasyDataCRUDTexts();","export * from './filter/data_filter'\r\nexport * from './filter/text_data_filter'\r\n\r\nexport * from './form/entity_edit_form'\r\nexport * from './form/entity_form_builder'\r\n\r\nexport * from './widgets/text_filter_widget'\r\nexport * from './widgets/progress_bar'\r\n\r\nexport * from './main/data_context'\r\nexport * from './main/easy_data_server_loader'\r\n\r\nexport * from './validators/validator'\r\nexport * from './validators/type_validator'\r\nexport * from './validators/required_validator'\r\n\r\nexport * from './views/easy_data_view_dispatcher'\r\nexport * from './views/root_data_view'\r\nexport * from './views/entity_data_view'\r\nexport * from './views/options'\r\n\r\nimport './i18n/text_resources'"],"names":[],"sourceRoot":""}