@openmrs/ngx-formentry 19.0.1-pre.492 → 19.0.1-pre.497

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 (200) hide show
  1. package/components/input/label.component.d.ts +1 -1
  2. package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +1 -1
  3. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +1 -1
  4. package/components/number-input/number-input.component.d.ts +1 -1
  5. package/components/select/select.component.d.ts +1 -1
  6. package/fesm2022/openmrs-ngx-formentry.mjs +364 -346
  7. package/fesm2022/openmrs-ngx-formentry.mjs.map +1 -1
  8. package/form-entry/helpers/js-expression-helper.d.ts +1 -1
  9. package/package.json +10 -12
  10. package/esm2022/abstract-controls-extension/afe-control-type.mjs +0 -8
  11. package/esm2022/abstract-controls-extension/afe-form-array.mjs +0 -89
  12. package/esm2022/abstract-controls-extension/afe-form-control.mjs +0 -91
  13. package/esm2022/abstract-controls-extension/afe-form-group.mjs +0 -66
  14. package/esm2022/abstract-controls-extension/control-extensions.mjs +0 -5
  15. package/esm2022/abstract-controls-extension/index.mjs +0 -5
  16. package/esm2022/abstract-controls-extension/value-change.listener.mjs +0 -2
  17. package/esm2022/change-tracking/control-relation.mjs +0 -42
  18. package/esm2022/change-tracking/control-relations.mjs +0 -32
  19. package/esm2022/components/afe-ng-select.component.mjs +0 -101
  20. package/esm2022/components/appointments-overview/appointments-overview.component.mjs +0 -116
  21. package/esm2022/components/check-box/checkbox.component.mjs +0 -110
  22. package/esm2022/components/check-box/checkbox.module.mjs +0 -19
  23. package/esm2022/components/custom-component-wrapper/custom-component-wrapper.component.mjs +0 -21
  24. package/esm2022/components/custom-component-wrapper/custom-component-wrapper.module.mjs +0 -22
  25. package/esm2022/components/custom-control-wrapper/custom-control-wrapper.component.mjs +0 -68
  26. package/esm2022/components/custom-control-wrapper/custom-control-wrapper.module.mjs +0 -23
  27. package/esm2022/components/date-time-picker/date-picker/date-picker.component.mjs +0 -188
  28. package/esm2022/components/date-time-picker/date-time-picker.component.mjs +0 -115
  29. package/esm2022/components/date-time-picker/date-time-picker.module.mjs +0 -48
  30. package/esm2022/components/date-time-picker/index.mjs +0 -9
  31. package/esm2022/components/date-time-picker/picker-modal/modal.component.mjs +0 -25
  32. package/esm2022/components/date-time-picker/pipes/moment.pipe.mjs +0 -17
  33. package/esm2022/components/date-time-picker/time-picker/time-picker.component.mjs +0 -121
  34. package/esm2022/components/file-upload/file-upload.component.mjs +0 -109
  35. package/esm2022/components/file-upload/file-upload.module.mjs +0 -37
  36. package/esm2022/components/file-upload/secure.pipe.mjs +0 -101
  37. package/esm2022/components/input/input.directive.mjs +0 -78
  38. package/esm2022/components/input/input.module.mjs +0 -23
  39. package/esm2022/components/input/label.component.mjs +0 -263
  40. package/esm2022/components/input/text-area.directive.mjs +0 -58
  41. package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +0 -87
  42. package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs +0 -40
  43. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs +0 -114
  44. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs +0 -7
  45. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs +0 -347
  46. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs +0 -16
  47. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs +0 -39
  48. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +0 -142
  49. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs +0 -439
  50. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +0 -373
  51. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs +0 -367
  52. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +0 -342
  53. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs +0 -259
  54. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +0 -392
  55. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs +0 -614
  56. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs +0 -65
  57. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs +0 -70
  58. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs +0 -21
  59. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs +0 -522
  60. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs +0 -166
  61. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs +0 -97
  62. package/esm2022/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs +0 -28
  63. package/esm2022/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +0 -90
  64. package/esm2022/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +0 -292
  65. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs +0 -56
  66. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +0 -243
  67. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs +0 -119
  68. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +0 -26
  69. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs +0 -233
  70. package/esm2022/components/ngx-pick-datetime/lib/utils/index.mjs +0 -5
  71. package/esm2022/components/ngx-pick-datetime/lib/utils/object.utils.mjs +0 -26
  72. package/esm2022/components/ngx-remote-select/ngx-remote-select.component.mjs +0 -151
  73. package/esm2022/components/ngx-remote-select/ngx-remote-select.module.mjs +0 -22
  74. package/esm2022/components/ngx-tabset/components/ngx-tab-set.component.mjs +0 -74
  75. package/esm2022/components/ngx-tabset/components/tab.component.mjs +0 -33
  76. package/esm2022/components/ngx-tabset/directives/hover-class.directive.mjs +0 -30
  77. package/esm2022/components/ngx-tabset/modules/ngx-tabset.module.mjs +0 -38
  78. package/esm2022/components/number-input/number-input.component.mjs +0 -254
  79. package/esm2022/components/number-input/number-input.module.mjs +0 -21
  80. package/esm2022/components/number-input/number.directive.mjs +0 -22
  81. package/esm2022/components/radio-button/radio.component.mjs +0 -98
  82. package/esm2022/components/radio-button/radio.module.mjs +0 -19
  83. package/esm2022/components/select/optgroup.directive.mjs +0 -19
  84. package/esm2022/components/select/option.directive.mjs +0 -19
  85. package/esm2022/components/select/select.component.mjs +0 -182
  86. package/esm2022/components/select/select.module.mjs +0 -23
  87. package/esm2022/components/workspace-launcher/workspace-launcher.component.mjs +0 -26
  88. package/esm2022/components/workspace-launcher/workspace-launcher.module.mjs +0 -19
  89. package/esm2022/form-entry/control-alerts/alert-helpers.mjs +0 -40
  90. package/esm2022/form-entry/control-alerts/can-generate-alert.mjs +0 -2
  91. package/esm2022/form-entry/control-calculators/can-calculate.mjs +0 -2
  92. package/esm2022/form-entry/control-hiders-disablers/can-disable.mjs +0 -2
  93. package/esm2022/form-entry/control-hiders-disablers/can-hide.mjs +0 -2
  94. package/esm2022/form-entry/control-hiders-disablers/disabler-helper.mjs +0 -32
  95. package/esm2022/form-entry/control-hiders-disablers/hider-helpers.mjs +0 -41
  96. package/esm2022/form-entry/data-sources/data-sources.mjs +0 -30
  97. package/esm2022/form-entry/data-sources/dummy-data-source.mjs +0 -104
  98. package/esm2022/form-entry/directives/collapse-animations.mjs +0 -11
  99. package/esm2022/form-entry/directives/collapse.directive.mjs +0 -172
  100. package/esm2022/form-entry/directives/historical-value.directive.mjs +0 -68
  101. package/esm2022/form-entry/error-renderer/error-renderer.component.mjs +0 -53
  102. package/esm2022/form-entry/expression-runner/expression-runner.mjs +0 -170
  103. package/esm2022/form-entry/form-entry.module.mjs +0 -188
  104. package/esm2022/form-entry/form-factory/control-relations.factory.mjs +0 -238
  105. package/esm2022/form-entry/form-factory/form-control.service.mjs +0 -118
  106. package/esm2022/form-entry/form-factory/form-node.mjs +0 -99
  107. package/esm2022/form-entry/form-factory/form.factory.mjs +0 -143
  108. package/esm2022/form-entry/form-factory/form.mjs +0 -190
  109. package/esm2022/form-entry/form-factory/hiders-disablers.factory.mjs +0 -68
  110. package/esm2022/form-entry/form-factory/index.mjs +0 -7
  111. package/esm2022/form-entry/form-factory/question.factory.mjs +0 -1123
  112. package/esm2022/form-entry/form-factory/show-messages.factory.mjs +0 -31
  113. package/esm2022/form-entry/form-factory/validation.factory.mjs +0 -182
  114. package/esm2022/form-entry/form-renderer/form-renderer.component.mjs +0 -277
  115. package/esm2022/form-entry/helpers/historical-expression-helper-service.mjs +0 -42
  116. package/esm2022/form-entry/helpers/historical-field-helper-service.mjs +0 -39
  117. package/esm2022/form-entry/helpers/js-expression-helper.mjs +0 -322
  118. package/esm2022/form-entry/helpers/risk-dataset-table.mjs +0 -247
  119. package/esm2022/form-entry/pipes/time-ago.pipe.mjs +0 -110
  120. package/esm2022/form-entry/question-models/checkbox.model.mjs +0 -11
  121. package/esm2022/form-entry/question-models/conditional-validation.model.mjs +0 -9
  122. package/esm2022/form-entry/question-models/custom-control-question.model.mjs +0 -10
  123. package/esm2022/form-entry/question-models/date-question.mjs +0 -12
  124. package/esm2022/form-entry/question-models/date-validation.model.mjs +0 -10
  125. package/esm2022/form-entry/question-models/decimal-validation.model.mjs +0 -19
  126. package/esm2022/form-entry/question-models/diagnosis-question.mjs +0 -12
  127. package/esm2022/form-entry/question-models/disallow-decimals-validation.model.mjs +0 -18
  128. package/esm2022/form-entry/question-models/file-upload-question.mjs +0 -13
  129. package/esm2022/form-entry/question-models/group-question.mjs +0 -12
  130. package/esm2022/form-entry/question-models/index.mjs +0 -24
  131. package/esm2022/form-entry/question-models/interfaces/base-options.mjs +0 -2
  132. package/esm2022/form-entry/question-models/interfaces/checkbox-options.mjs +0 -2
  133. package/esm2022/form-entry/question-models/interfaces/data-source.mjs +0 -2
  134. package/esm2022/form-entry/question-models/interfaces/date-question-options.mjs +0 -2
  135. package/esm2022/form-entry/question-models/interfaces/diagnosis-question-options.mjs +0 -2
  136. package/esm2022/form-entry/question-models/interfaces/file-upload-question-options.mjs +0 -2
  137. package/esm2022/form-entry/question-models/interfaces/group-question-options.mjs +0 -2
  138. package/esm2022/form-entry/question-models/interfaces/multi-select-options.mjs +0 -2
  139. package/esm2022/form-entry/question-models/interfaces/nested-questions.mjs +0 -7
  140. package/esm2022/form-entry/question-models/interfaces/radio-button-options.mjs +0 -2
  141. package/esm2022/form-entry/question-models/interfaces/remote-select-question-options.mjs +0 -2
  142. package/esm2022/form-entry/question-models/interfaces/repeating-question-options.mjs +0 -2
  143. package/esm2022/form-entry/question-models/interfaces/select-option.mjs +0 -2
  144. package/esm2022/form-entry/question-models/interfaces/select-question-options.mjs +0 -2
  145. package/esm2022/form-entry/question-models/interfaces/test-order-question-options.mjs +0 -2
  146. package/esm2022/form-entry/question-models/interfaces/text-area-question-options.mjs +0 -2
  147. package/esm2022/form-entry/question-models/interfaces/text-question-options.mjs +0 -2
  148. package/esm2022/form-entry/question-models/interfaces/ui-select-question-options.mjs +0 -2
  149. package/esm2022/form-entry/question-models/interfaces/workspace-launcher-options.mjs +0 -2
  150. package/esm2022/form-entry/question-models/js-expression-validation.model.mjs +0 -8
  151. package/esm2022/form-entry/question-models/max-length-validation.model.mjs +0 -9
  152. package/esm2022/form-entry/question-models/max-validation.model.mjs +0 -9
  153. package/esm2022/form-entry/question-models/min-length-validation.model.mjs +0 -9
  154. package/esm2022/form-entry/question-models/min-validation.model.mjs +0 -9
  155. package/esm2022/form-entry/question-models/models.mjs +0 -13
  156. package/esm2022/form-entry/question-models/multi-select-question.mjs +0 -11
  157. package/esm2022/form-entry/question-models/pair.model.mjs +0 -7
  158. package/esm2022/form-entry/question-models/question-base.mjs +0 -26
  159. package/esm2022/form-entry/question-models/radio-button.model.mjs +0 -12
  160. package/esm2022/form-entry/question-models/remote-select-question.mjs +0 -12
  161. package/esm2022/form-entry/question-models/rendering-type.mjs +0 -9
  162. package/esm2022/form-entry/question-models/repeating-question.mjs +0 -11
  163. package/esm2022/form-entry/question-models/select-option.mjs +0 -7
  164. package/esm2022/form-entry/question-models/select-question.mjs +0 -12
  165. package/esm2022/form-entry/question-models/test-order-question.mjs +0 -15
  166. package/esm2022/form-entry/question-models/text-area-input-question.mjs +0 -13
  167. package/esm2022/form-entry/question-models/text-input-question.mjs +0 -10
  168. package/esm2022/form-entry/question-models/ui-select-question.mjs +0 -11
  169. package/esm2022/form-entry/question-models/validation.model.mjs +0 -7
  170. package/esm2022/form-entry/question-models/workspace-launcher.model.mjs +0 -15
  171. package/esm2022/form-entry/services/debug-mode.service.mjs +0 -24
  172. package/esm2022/form-entry/services/form-errors.service.mjs +0 -21
  173. package/esm2022/form-entry/services/form-schema-compiler.service.mjs +0 -262
  174. package/esm2022/form-entry/services/historical-encounter-data.service.mjs +0 -172
  175. package/esm2022/form-entry/validators/conditional-answered.validator.mjs +0 -46
  176. package/esm2022/form-entry/validators/conditional-required.validator.mjs +0 -40
  177. package/esm2022/form-entry/validators/date.validator.mjs +0 -18
  178. package/esm2022/form-entry/validators/disallow-decimals.validator.mjs +0 -15
  179. package/esm2022/form-entry/validators/future-date-restriction.validator.mjs +0 -21
  180. package/esm2022/form-entry/validators/js-expression.validator.mjs +0 -26
  181. package/esm2022/form-entry/validators/max-date.validator.mjs +0 -23
  182. package/esm2022/form-entry/validators/max-length.validator.mjs +0 -17
  183. package/esm2022/form-entry/validators/max.validator.mjs +0 -21
  184. package/esm2022/form-entry/validators/min-date.validator.mjs +0 -23
  185. package/esm2022/form-entry/validators/min-length.validator.mjs +0 -17
  186. package/esm2022/form-entry/validators/min.validator.mjs +0 -21
  187. package/esm2022/form-entry/validators/required.validator.mjs +0 -11
  188. package/esm2022/form-entry/validators/validations.mjs +0 -5
  189. package/esm2022/form-entry/value-adapters/diagnosis.adapter.mjs +0 -241
  190. package/esm2022/form-entry/value-adapters/encounter.adapter.mjs +0 -190
  191. package/esm2022/form-entry/value-adapters/obs-adapter-helper.mjs +0 -559
  192. package/esm2022/form-entry/value-adapters/obs.adapter.mjs +0 -541
  193. package/esm2022/form-entry/value-adapters/order.adapter.mjs +0 -186
  194. package/esm2022/form-entry/value-adapters/patient-identifier.adapter.mjs +0 -77
  195. package/esm2022/form-entry/value-adapters/person-attribute.adapter.mjs +0 -88
  196. package/esm2022/form-entry/value-adapters/value.adapter.mjs +0 -2
  197. package/esm2022/lib/index.mjs +0 -59
  198. package/esm2022/openmrs-ngx-formentry.mjs +0 -5
  199. package/esm2022/public_api.mjs +0 -2
  200. package/esm2022/shared.module.mjs +0 -21
@@ -1,7 +0,0 @@
1
- /**
2
- * date-time-format.class
3
- */
4
- import { InjectionToken } from '@angular/core';
5
- /** InjectionToken for date time picker that can be used to override default format. */
6
- export const OWL_DATE_TIME_FORMATS = new InjectionToken('OWL_DATE_TIME_FORMATS');
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZvcm1hdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbmd4LXBpY2stZGF0ZXRpbWUvbGliL2RhdGUtdGltZS9hZGFwdGVyL2RhdGUtdGltZS1mb3JtYXQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBWS9DLHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDckQsdUJBQXVCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGRhdGUtdGltZS1mb3JtYXQuY2xhc3NcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE93bERhdGVUaW1lRm9ybWF0cyB7XG4gIHBhcnNlSW5wdXQ6IGFueTtcbiAgZnVsbFBpY2tlcklucHV0OiBhbnk7XG4gIGRhdGVQaWNrZXJJbnB1dDogYW55O1xuICB0aW1lUGlja2VySW5wdXQ6IGFueTtcbiAgbW9udGhZZWFyTGFiZWw6IGFueTtcbiAgZGF0ZUExMXlMYWJlbDogYW55O1xuICBtb250aFllYXJBMTF5TGFiZWw6IGFueTtcbn1cblxuLyoqIEluamVjdGlvblRva2VuIGZvciBkYXRlIHRpbWUgcGlja2VyIHRoYXQgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgZGVmYXVsdCBmb3JtYXQuICovXG5leHBvcnQgY29uc3QgT1dMX0RBVEVfVElNRV9GT1JNQVRTID0gbmV3IEluamVjdGlvblRva2VuPE93bERhdGVUaW1lRm9ybWF0cz4oXG4gICdPV0xfREFURV9USU1FX0ZPUk1BVFMnXG4pO1xuIl19
@@ -1,347 +0,0 @@
1
- /**
2
- * native-date-time-adapter.class
3
- */
4
- import { Inject, Injectable, Optional } from '@angular/core';
5
- import { Platform } from '@angular/cdk/platform';
6
- import { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from './date-time-adapter.class';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/cdk/platform";
9
- /** The default month names to use if Intl API is not available. */
10
- const DEFAULT_MONTH_NAMES = {
11
- long: [
12
- 'January',
13
- 'February',
14
- 'March',
15
- 'April',
16
- 'May',
17
- 'June',
18
- 'July',
19
- 'August',
20
- 'September',
21
- 'October',
22
- 'November',
23
- 'December'
24
- ],
25
- short: [
26
- 'Jan',
27
- 'Feb',
28
- 'Mar',
29
- 'Apr',
30
- 'May',
31
- 'Jun',
32
- 'Jul',
33
- 'Aug',
34
- 'Sep',
35
- 'Oct',
36
- 'Nov',
37
- 'Dec'
38
- ],
39
- narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']
40
- };
41
- /** The default day of the week names to use if Intl API is not available. */
42
- const DEFAULT_DAY_OF_WEEK_NAMES = {
43
- long: [
44
- 'Sunday',
45
- 'Monday',
46
- 'Tuesday',
47
- 'Wednesday',
48
- 'Thursday',
49
- 'Friday',
50
- 'Saturday'
51
- ],
52
- short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
53
- narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']
54
- };
55
- /** The default date names to use if Intl API is not available. */
56
- const DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));
57
- /** Whether the browser supports the Intl API. */
58
- const SUPPORTS_INTL_API = typeof Intl !== 'undefined';
59
- /**
60
- * Matches strings that have the form of a valid RFC 3339 string
61
- * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date
62
- * because the regex will match strings an with out of bounds month, date, etc.
63
- */
64
- const ISO_8601_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;
65
- /** Creates an array and fills it with values. */
66
- function range(length, valueFunction) {
67
- const valuesArray = Array(length);
68
- for (let i = 0; i < length; i++) {
69
- valuesArray[i] = valueFunction(i);
70
- }
71
- return valuesArray;
72
- }
73
- export class NativeDateTimeAdapter extends DateTimeAdapter {
74
- constructor(owlDateTimeLocale, platform) {
75
- super();
76
- this.owlDateTimeLocale = owlDateTimeLocale;
77
- super.setLocale(owlDateTimeLocale);
78
- // IE does its own time zone correction, so we disable this on IE.
79
- this.useUtcForDisplay = !platform.TRIDENT;
80
- this._clampDate = platform.TRIDENT || platform.EDGE;
81
- }
82
- getYear(date) {
83
- return date.getFullYear();
84
- }
85
- getMonth(date) {
86
- return date.getMonth();
87
- }
88
- getDay(date) {
89
- return date.getDay();
90
- }
91
- getDate(date) {
92
- return date.getDate();
93
- }
94
- getHours(date) {
95
- return date.getHours();
96
- }
97
- getMinutes(date) {
98
- return date.getMinutes();
99
- }
100
- getSeconds(date) {
101
- return date.getSeconds();
102
- }
103
- getTime(date) {
104
- return date.getTime();
105
- }
106
- getNumDaysInMonth(date) {
107
- const lastDateOfMonth = this.createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0);
108
- return this.getDate(lastDateOfMonth);
109
- }
110
- differenceInCalendarDays(dateLeft, dateRight) {
111
- if (this.isValid(dateLeft) && this.isValid(dateRight)) {
112
- const dateLeftStartOfDay = this.createDate(this.getYear(dateLeft), this.getMonth(dateLeft), this.getDate(dateLeft));
113
- const dateRightStartOfDay = this.createDate(this.getYear(dateRight), this.getMonth(dateRight), this.getDate(dateRight));
114
- const timeStampLeft = this.getTime(dateLeftStartOfDay) -
115
- dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;
116
- const timeStampRight = this.getTime(dateRightStartOfDay) -
117
- dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;
118
- return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);
119
- }
120
- else {
121
- return null;
122
- }
123
- }
124
- getYearName(date) {
125
- if (SUPPORTS_INTL_API) {
126
- const dtf = new Intl.DateTimeFormat(this.locale, {
127
- year: 'numeric',
128
- timeZone: 'utc'
129
- });
130
- return this.stripDirectionalityCharacters(this._format(dtf, date));
131
- }
132
- return String(this.getYear(date));
133
- }
134
- getMonthNames(style) {
135
- if (SUPPORTS_INTL_API) {
136
- const dtf = new Intl.DateTimeFormat(this.locale, {
137
- month: style,
138
- timeZone: 'utc'
139
- });
140
- return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));
141
- }
142
- return DEFAULT_MONTH_NAMES[style];
143
- }
144
- getDayOfWeekNames(style) {
145
- if (SUPPORTS_INTL_API) {
146
- const dtf = new Intl.DateTimeFormat(this.locale, {
147
- weekday: style,
148
- timeZone: 'utc'
149
- });
150
- return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));
151
- }
152
- return DEFAULT_DAY_OF_WEEK_NAMES[style];
153
- }
154
- getDateNames() {
155
- if (SUPPORTS_INTL_API) {
156
- const dtf = new Intl.DateTimeFormat(this.locale, {
157
- day: 'numeric',
158
- timeZone: 'utc'
159
- });
160
- return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));
161
- }
162
- return DEFAULT_DATE_NAMES;
163
- }
164
- toIso8601(date) {
165
- return date.toISOString();
166
- }
167
- isEqual(dateLeft, dateRight) {
168
- if (this.isValid(dateLeft) && this.isValid(dateRight)) {
169
- return dateLeft.getTime() === dateRight.getTime();
170
- }
171
- else {
172
- return false;
173
- }
174
- }
175
- isSameDay(dateLeft, dateRight) {
176
- if (this.isValid(dateLeft) && this.isValid(dateRight)) {
177
- const dateLeftStartOfDay = this.clone(dateLeft);
178
- const dateRightStartOfDay = this.clone(dateRight);
179
- dateLeftStartOfDay.setHours(0, 0, 0, 0);
180
- dateRightStartOfDay.setHours(0, 0, 0, 0);
181
- return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();
182
- }
183
- else {
184
- return false;
185
- }
186
- }
187
- isValid(date) {
188
- return date && !isNaN(date.getTime());
189
- }
190
- invalid() {
191
- return new Date(NaN);
192
- }
193
- isDateInstance(obj) {
194
- return obj instanceof Date;
195
- }
196
- addCalendarYears(date, amount) {
197
- return this.addCalendarMonths(date, amount * 12);
198
- }
199
- addCalendarMonths(date, amount) {
200
- const result = this.clone(date);
201
- amount = Number(amount);
202
- const desiredMonth = result.getMonth() + amount;
203
- const dateWithDesiredMonth = new Date(0);
204
- dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);
205
- dateWithDesiredMonth.setHours(0, 0, 0, 0);
206
- const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);
207
- // Set the last day of the new month
208
- // if the original date was the last day of the longer month
209
- result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));
210
- return result;
211
- }
212
- addCalendarDays(date, amount) {
213
- const result = this.clone(date);
214
- amount = Number(amount);
215
- result.setDate(result.getDate() + amount);
216
- return result;
217
- }
218
- setHours(date, amount) {
219
- const result = this.clone(date);
220
- result.setHours(amount);
221
- return result;
222
- }
223
- setMinutes(date, amount) {
224
- const result = this.clone(date);
225
- result.setMinutes(amount);
226
- return result;
227
- }
228
- setSeconds(date, amount) {
229
- const result = this.clone(date);
230
- result.setSeconds(amount);
231
- return result;
232
- }
233
- createDate(year, month, date, hours = 0, minutes = 0, seconds = 0) {
234
- if (month < 0 || month > 11) {
235
- throw Error(`Invalid month index "${month}". Month index has to be between 0 and 11.`);
236
- }
237
- if (date < 1) {
238
- throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
239
- }
240
- if (hours < 0 || hours > 23) {
241
- throw Error(`Invalid hours "${hours}". Hours has to be between 0 and 23.`);
242
- }
243
- if (minutes < 0 || minutes > 59) {
244
- throw Error(`Invalid minutes "${minutes}". Minutes has to between 0 and 59.`);
245
- }
246
- if (seconds < 0 || seconds > 59) {
247
- throw Error(`Invalid seconds "${seconds}". Seconds has to be between 0 and 59.`);
248
- }
249
- const result = this.createDateWithOverflow(year, month, date, hours, minutes, seconds);
250
- // Check that the date wasn't above the upper bound for the month, causing the month to overflow
251
- // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid
252
- if (result.getMonth() !== month) {
253
- throw Error(`Invalid date "${date}" for month with index "${month}".`);
254
- }
255
- return result;
256
- }
257
- clone(date) {
258
- return this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHours(date), this.getMinutes(date), this.getSeconds(date));
259
- }
260
- now() {
261
- return new Date();
262
- }
263
- format(date, displayFormat) {
264
- if (!this.isValid(date)) {
265
- throw Error('JSNativeDate: Cannot format invalid date.');
266
- }
267
- if (SUPPORTS_INTL_API) {
268
- if (this._clampDate &&
269
- (date.getFullYear() < 1 || date.getFullYear() > 9999)) {
270
- date = this.clone(date);
271
- date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));
272
- }
273
- displayFormat = { ...displayFormat, timeZone: 'utc' };
274
- const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);
275
- return this.stripDirectionalityCharacters(this._format(dtf, date));
276
- }
277
- return this.stripDirectionalityCharacters(date.toDateString());
278
- }
279
- parse(value, parseFormat) {
280
- // There is no way using the native JS Date to set the parse format or locale
281
- if (typeof value === 'number') {
282
- return new Date(value);
283
- }
284
- return value ? new Date(Date.parse(value)) : null;
285
- }
286
- /**
287
- * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings
288
- * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an
289
- * invalid date for all other values.
290
- */
291
- deserialize(value) {
292
- if (typeof value === 'string') {
293
- if (!value) {
294
- return null;
295
- }
296
- // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the
297
- // string is the right format first.
298
- if (ISO_8601_REGEX.test(value)) {
299
- const date = new Date(value);
300
- if (this.isValid(date)) {
301
- return date;
302
- }
303
- }
304
- }
305
- return super.deserialize(value);
306
- }
307
- /**
308
- * Creates a date but allows the month and date to overflow.
309
- */
310
- createDateWithOverflow(year, month, date, hours = 0, minutes = 0, seconds = 0) {
311
- const result = new Date(year, month, date, hours, minutes, seconds);
312
- if (year >= 0 && year < 100) {
313
- result.setFullYear(this.getYear(result) - 1900);
314
- }
315
- return result;
316
- }
317
- /**
318
- * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while
319
- * other browsers do not. We remove them to make output consistent and because they interfere with
320
- * date parsing.
321
- */
322
- stripDirectionalityCharacters(str) {
323
- return str.replace(/[\u200e\u200f]/g, '');
324
- }
325
- /**
326
- * When converting Date object to string, javascript built-in functions may return wrong
327
- * results because it applies its internal DST rules. The DST rules around the world change
328
- * very frequently, and the current valid rule is not always valid in previous years though.
329
- * We work around this problem building a new Date object which has its internal UTC
330
- * representation with the local date and time.
331
- */
332
- _format(dtf, date) {
333
- const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
334
- return dtf.format(d);
335
- }
336
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeAdapter, deps: [{ token: OWL_DATE_TIME_LOCALE, optional: true }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
337
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeAdapter }); }
338
- }
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeAdapter, decorators: [{
340
- type: Injectable
341
- }], ctorParameters: () => [{ type: undefined, decorators: [{
342
- type: Optional
343
- }, {
344
- type: Inject,
345
- args: [OWL_DATE_TIME_LOCALE]
346
- }] }, { type: i1.Platform }] });
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcGljay1kYXRldGltZS9saWIvZGF0ZS10aW1lL2FkYXB0ZXIvbmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNyQixNQUFNLDJCQUEyQixDQUFDOzs7QUFFbkMsbUVBQW1FO0FBQ25FLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsSUFBSSxFQUFFO1FBQ0osU0FBUztRQUNULFVBQVU7UUFDVixPQUFPO1FBQ1AsT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sTUFBTTtRQUNOLFFBQVE7UUFDUixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixVQUFVO0tBQ1g7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7S0FDTjtJQUNELE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0NBQ3JFLENBQUM7QUFFRiw2RUFBNkU7QUFD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LEdBQXdCLEVBQUUsSUFBVTtRQUNsRCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQ3ZCLENBQ0YsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDOytHQWxaVSxxQkFBcUIsa0JBY3RCLG9CQUFvQjttSEFkbkIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFjTixRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbmF0aXZlLWRhdGUtdGltZS1hZGFwdGVyLmNsYXNzXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgRGF0ZVRpbWVBZGFwdGVyLFxuICBPV0xfREFURV9USU1FX0xPQ0FMRVxufSBmcm9tICcuL2RhdGUtdGltZS1hZGFwdGVyLmNsYXNzJztcblxuLyoqIFRoZSBkZWZhdWx0IG1vbnRoIG5hbWVzIHRvIHVzZSBpZiBJbnRsIEFQSSBpcyBub3QgYXZhaWxhYmxlLiAqL1xuY29uc3QgREVGQVVMVF9NT05USF9OQU1FUyA9IHtcbiAgbG9uZzogW1xuICAgICdKYW51YXJ5JyxcbiAgICAnRmVicnVhcnknLFxuICAgICdNYXJjaCcsXG4gICAgJ0FwcmlsJyxcbiAgICAnTWF5JyxcbiAgICAnSnVuZScsXG4gICAgJ0p1bHknLFxuICAgICdBdWd1c3QnLFxuICAgICdTZXB0ZW1iZXInLFxuICAgICdPY3RvYmVyJyxcbiAgICAnTm92ZW1iZXInLFxuICAgICdEZWNlbWJlcidcbiAgXSxcbiAgc2hvcnQ6IFtcbiAgICAnSmFuJyxcbiAgICAnRmViJyxcbiAgICAnTWFyJyxcbiAgICAnQXByJyxcbiAgICAnTWF5JyxcbiAgICAnSnVuJyxcbiAgICAnSnVsJyxcbiAgICAnQXVnJyxcbiAgICAnU2VwJyxcbiAgICAnT2N0JyxcbiAgICAnTm92JyxcbiAgICAnRGVjJ1xuICBdLFxuICBuYXJyb3c6IFsnSicsICdGJywgJ00nLCAnQScsICdNJywgJ0onLCAnSicsICdBJywgJ1MnLCAnTycsICdOJywgJ0QnXVxufTtcblxuLyoqIFRoZSBkZWZhdWx0IGRheSBvZiB0aGUgd2VlayBuYW1lcyB0byB1c2UgaWYgSW50bCBBUEkgaXMgbm90IGF2YWlsYWJsZS4gKi9cbmNvbnN0IERFRkFVTFRfREFZX09GX1dFRUtfTkFNRVMgPSB7XG4gIGxvbmc6IFtcbiAgICAnU3VuZGF5JyxcbiAgICAnTW9uZGF5JyxcbiAgICAnVHVlc2RheScsXG4gICAgJ1dlZG5lc2RheScsXG4gICAgJ1RodXJzZGF5JyxcbiAgICAnRnJpZGF5JyxcbiAgICAnU2F0dXJkYXknXG4gIF0sXG4gIHNob3J0OiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICBuYXJyb3c6IFsnUycsICdNJywgJ1QnLCAnVycsICdUJywgJ0YnLCAnUyddXG59O1xuXG4vKiogVGhlIGRlZmF1bHQgZGF0ZSBuYW1lcyB0byB1c2UgaWYgSW50bCBBUEkgaXMgbm90IGF2YWlsYWJsZS4gKi9cbmNvbnN0IERFRkFVTFRfREFURV9OQU1FUyA9IHJhbmdlKDMxLCAoaSkgPT4gU3RyaW5nKGkgKyAxKSk7XG5cbi8qKiBXaGV0aGVyIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBJbnRsIEFQSS4gKi9cbmNvbnN0IFNVUFBPUlRTX0lOVExfQVBJID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnO1xuXG4vKipcbiAqIE1hdGNoZXMgc3RyaW5ncyB0aGF0IGhhdmUgdGhlIGZvcm0gb2YgYSB2YWxpZCBSRkMgMzMzOSBzdHJpbmdcbiAqIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzMzOSkuIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBub3QgYWN0dWFsbHkgYmUgYSB2YWxpZCBkYXRlXG4gKiBiZWNhdXNlIHRoZSByZWdleCB3aWxsIG1hdGNoIHN0cmluZ3MgYW4gd2l0aCBvdXQgb2YgYm91bmRzIG1vbnRoLCBkYXRlLCBldGMuXG4gKi9cbmNvbnN0IElTT184NjAxX1JFR0VYID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfSg/OlRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCspPyg/Olp8KD86KD86XFwrfC0pXFxkezJ9OlxcZHsyfSkpPyk/JC87XG5cbi8qKiBDcmVhdGVzIGFuIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHZhbHVlcy4gKi9cbmZ1bmN0aW9uIHJhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gIGNvbnN0IHZhbHVlc0FycmF5ID0gQXJyYXkobGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhbHVlc0FycmF5W2ldID0gdmFsdWVGdW5jdGlvbihpKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzQXJyYXk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXRpdmVEYXRlVGltZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlVGltZUFkYXB0ZXI8RGF0ZT4ge1xuICAvKiogV2hldGhlciB0byBjbGFtcCB0aGUgZGF0ZSBiZXR3ZWVuIDEgYW5kIDk5OTkgdG8gYXZvaWQgSUUgYW5kIEVkZ2UgZXJyb3JzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGFtcERhdGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGB0aW1lWm9uZTogJ3V0YydgIHdpdGggYEludGwuRGF0ZVRpbWVGb3JtYXRgIHdoZW4gZm9ybWF0dGluZyBkYXRlcy5cbiAgICogV2l0aG91dCB0aGlzIGBJbnRsLkRhdGVUaW1lRm9ybWF0YCBzb21ldGltZXMgY2hvb3NlcyB0aGUgd3JvbmcgdGltZVpvbmUsIHdoaWNoIGNhbiB0aHJvdyBvZmZcbiAgICogdGhlIHJlc3VsdC4gKGUuZy4gaW4gdGhlIGVuLVVTIGxvY2FsZSBgbmV3IERhdGUoMTgwMCwgNywgMTQpLnRvTG9jYWxlRGF0ZVN0cmluZygpYFxuICAgKiB3aWxsIHByb2R1Y2UgYCc4LzEzLzE4MDAnYC5cbiAgICovXG4gIHVzZVV0Y0ZvckRpc3BsYXk6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE9XTF9EQVRFX1RJTUVfTE9DQUxFKVxuICAgIHByaXZhdGUgb3dsRGF0ZVRpbWVMb2NhbGU6IHN0cmluZyxcbiAgICBwbGF0Zm9ybTogUGxhdGZvcm1cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBzdXBlci5zZXRMb2NhbGUob3dsRGF0ZVRpbWVMb2NhbGUpO1xuXG4gICAgLy8gSUUgZG9lcyBpdHMgb3duIHRpbWUgem9uZSBjb3JyZWN0aW9uLCBzbyB3ZSBkaXNhYmxlIHRoaXMgb24gSUUuXG4gICAgdGhpcy51c2VVdGNGb3JEaXNwbGF5ID0gIXBsYXRmb3JtLlRSSURFTlQ7XG4gICAgdGhpcy5fY2xhbXBEYXRlID0gcGxhdGZvcm0uVFJJREVOVCB8fCBwbGF0Zm9ybS5FREdFO1xuICB9XG5cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpO1xuICB9XG5cbiAgcHVibGljIGdldERheShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRIb3VycyhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRIb3VycygpO1xuICB9XG5cbiAgcHVibGljIGdldE1pbnV0ZXMoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0TWludXRlcygpO1xuICB9XG5cbiAgcHVibGljIGdldFNlY29uZHMoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0U2Vjb25kcygpO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xuICB9XG5cbiAgcHVibGljIGdldE51bURheXNJbk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIGNvbnN0IGxhc3REYXRlT2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyhcbiAgICAgIHRoaXMuZ2V0WWVhcihkYXRlKSxcbiAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZSkgKyAxLFxuICAgICAgMFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKGxhc3REYXRlT2ZNb250aCk7XG4gIH1cblxuICBwdWJsaWMgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGVMZWZ0OiBEYXRlLCBkYXRlUmlnaHQ6IERhdGUpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmlzVmFsaWQoZGF0ZUxlZnQpICYmIHRoaXMuaXNWYWxpZChkYXRlUmlnaHQpKSB7XG4gICAgICBjb25zdCBkYXRlTGVmdFN0YXJ0T2ZEYXkgPSB0aGlzLmNyZWF0ZURhdGUoXG4gICAgICAgIHRoaXMuZ2V0WWVhcihkYXRlTGVmdCksXG4gICAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZUxlZnQpLFxuICAgICAgICB0aGlzLmdldERhdGUoZGF0ZUxlZnQpXG4gICAgICApO1xuICAgICAgY29uc3QgZGF0ZVJpZ2h0U3RhcnRPZkRheSA9IHRoaXMuY3JlYXRlRGF0ZShcbiAgICAgICAgdGhpcy5nZXRZZWFyKGRhdGVSaWdodCksXG4gICAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZVJpZ2h0KSxcbiAgICAgICAgdGhpcy5nZXREYXRlKGRhdGVSaWdodClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHRpbWVTdGFtcExlZnQgPVxuICAgICAgICB0aGlzLmdldFRpbWUoZGF0ZUxlZnRTdGFydE9mRGF5KSAtXG4gICAgICAgIGRhdGVMZWZ0U3RhcnRPZkRheS5nZXRUaW1lem9uZU9mZnNldCgpICogdGhpcy5taWxsaXNlb25kc0luTWludXRlO1xuICAgICAgY29uc3QgdGltZVN0YW1wUmlnaHQgPVxuICAgICAgICB0aGlzLmdldFRpbWUoZGF0ZVJpZ2h0U3RhcnRPZkRheSkgLVxuICAgICAgICBkYXRlUmlnaHRTdGFydE9mRGF5LmdldFRpbWV6b25lT2Zmc2V0KCkgKiB0aGlzLm1pbGxpc2VvbmRzSW5NaW51dGU7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICAgKHRpbWVTdGFtcExlZnQgLSB0aW1lU3RhbXBSaWdodCkgLyB0aGlzLm1pbGxpc2Vjb25kc0luRGF5XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0WWVhck5hbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKFNVUFBPUlRTX0lOVExfQVBJKSB7XG4gICAgICBjb25zdCBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIHRpbWVab25lOiAndXRjJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZHRmLCBkYXRlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKGRhdGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb250aE5hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgaWYgKFNVUFBPUlRTX0lOVExfQVBJKSB7XG4gICAgICBjb25zdCBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICBtb250aDogc3R5bGUsXG4gICAgICAgIHRpbWVab25lOiAndXRjJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmFuZ2UoMTIsIChpKSA9PlxuICAgICAgICB0aGlzLnN0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKFxuICAgICAgICAgIHRoaXMuX2Zvcm1hdChkdGYsIG5ldyBEYXRlKDIwMTcsIGksIDEpKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gREVGQVVMVF9NT05USF9OQU1FU1tzdHlsZV07XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoU1VQUE9SVFNfSU5UTF9BUEkpIHtcbiAgICAgIGNvbnN0IGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgIHdlZWtkYXk6IHN0eWxlLFxuICAgICAgICB0aW1lWm9uZTogJ3V0YydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJhbmdlKDcsIChpKSA9PlxuICAgICAgICB0aGlzLnN0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKFxuICAgICAgICAgIHRoaXMuX2Zvcm1hdChkdGYsIG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gREVGQVVMVF9EQVlfT0ZfV0VFS19OQU1FU1tzdHlsZV07XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoU1VQUE9SVFNfSU5UTF9BUEkpIHtcbiAgICAgIGNvbnN0IGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB0aW1lWm9uZTogJ3V0YydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJhbmdlKDMxLCAoaSkgPT5cbiAgICAgICAgdGhpcy5zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyhcbiAgICAgICAgICB0aGlzLl9mb3JtYXQoZHRmLCBuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX0RBVEVfTkFNRVM7XG4gIH1cblxuICBwdWJsaWMgdG9Jc284NjAxKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgaXNFcXVhbChkYXRlTGVmdDogRGF0ZSwgZGF0ZVJpZ2h0OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZChkYXRlTGVmdCkgJiYgdGhpcy5pc1ZhbGlkKGRhdGVSaWdodCkpIHtcbiAgICAgIHJldHVybiBkYXRlTGVmdC5nZXRUaW1lKCkgPT09IGRhdGVSaWdodC5nZXRUaW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNTYW1lRGF5KGRhdGVMZWZ0OiBEYXRlLCBkYXRlUmlnaHQ6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGVMZWZ0KSAmJiB0aGlzLmlzVmFsaWQoZGF0ZVJpZ2h0KSkge1xuICAgICAgY29uc3QgZGF0ZUxlZnRTdGFydE9mRGF5ID0gdGhpcy5jbG9uZShkYXRlTGVmdCk7XG4gICAgICBjb25zdCBkYXRlUmlnaHRTdGFydE9mRGF5ID0gdGhpcy5jbG9uZShkYXRlUmlnaHQpO1xuICAgICAgZGF0ZUxlZnRTdGFydE9mRGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgZGF0ZVJpZ2h0U3RhcnRPZkRheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlTGVmdFN0YXJ0T2ZEYXkuZ2V0VGltZSgpID09PSBkYXRlUmlnaHRTdGFydE9mRGF5LmdldFRpbWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGludmFsaWQoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICBwdWJsaWMgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERhdGUsIGFtb3VudDogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgYW1vdW50ICogMTIpO1xuICB9XG5cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIGFtb3VudDogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jbG9uZShkYXRlKTtcbiAgICBhbW91bnQgPSBOdW1iZXIoYW1vdW50KTtcblxuICAgIGNvbnN0IGRlc2lyZWRNb250aCA9IHJlc3VsdC5nZXRNb250aCgpICsgYW1vdW50O1xuICAgIGNvbnN0IGRhdGVXaXRoRGVzaXJlZE1vbnRoID0gbmV3IERhdGUoMCk7XG4gICAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0RnVsbFllYXIocmVzdWx0LmdldEZ1bGxZZWFyKCksIGRlc2lyZWRNb250aCwgMSk7XG4gICAgZGF0ZVdpdGhEZXNpcmVkTW9udGguc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhEZXNpcmVkTW9udGgpO1xuICAgIC8vIFNldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAgIC8vIGlmIHRoZSBvcmlnaW5hbCBkYXRlIHdhcyB0aGUgbGFzdCBkYXkgb2YgdGhlIGxvbmdlciBtb250aFxuICAgIHJlc3VsdC5zZXRNb250aChkZXNpcmVkTW9udGgsIE1hdGgubWluKGRheXNJbk1vbnRoLCByZXN1bHQuZ2V0RGF0ZSgpKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYWxlbmRhckRheXMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIGFtb3VudCA9IE51bWJlcihhbW91bnQpO1xuICAgIHJlc3VsdC5zZXREYXRlKHJlc3VsdC5nZXREYXRlKCkgKyBhbW91bnQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0SG91cnMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIHJlc3VsdC5zZXRIb3VycyhhbW91bnQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0TWludXRlcyhkYXRlOiBEYXRlLCBhbW91bnQ6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2xvbmUoZGF0ZSk7XG4gICAgcmVzdWx0LnNldE1pbnV0ZXMoYW1vdW50KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHNldFNlY29uZHMoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKGRhdGUpO1xuICAgIHJlc3VsdC5zZXRTZWNvbmRzKGFtb3VudCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXRlKFxuICAgIHllYXI6IG51bWJlcixcbiAgICBtb250aDogbnVtYmVyLFxuICAgIGRhdGU6IG51bWJlcixcbiAgICBob3VyczogbnVtYmVyID0gMCxcbiAgICBtaW51dGVzOiBudW1iZXIgPSAwLFxuICAgIHNlY29uZHM6IG51bWJlciA9IDBcbiAgKTogRGF0ZSB7XG4gICAgaWYgKG1vbnRoIDwgMCB8fCBtb250aCA+IDExKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgbW9udGggaW5kZXggXCIke21vbnRofVwiLiBNb250aCBpbmRleCBoYXMgdG8gYmUgYmV0d2VlbiAwIGFuZCAxMS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzIDwgMCB8fCBob3VycyA+IDIzKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgaG91cnMgXCIke2hvdXJzfVwiLiBIb3VycyBoYXMgdG8gYmUgYmV0d2VlbiAwIGFuZCAyMy5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzIDwgMCB8fCBtaW51dGVzID4gNTkpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBtaW51dGVzIFwiJHttaW51dGVzfVwiLiBNaW51dGVzIGhhcyB0byBiZXR3ZWVuIDAgYW5kIDU5LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgPCAwIHx8IHNlY29uZHMgPiA1OSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHNlY29uZHMgXCIke3NlY29uZHN9XCIuIFNlY29uZHMgaGFzIHRvIGJlIGJldHdlZW4gMCBhbmQgNTkuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyZWF0ZURhdGVXaXRoT3ZlcmZsb3coXG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXRlLFxuICAgICAgaG91cnMsXG4gICAgICBtaW51dGVzLFxuICAgICAgc2Vjb25kc1xuICAgICk7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSBkYXRlIHdhc24ndCBhYm92ZSB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBtb250aCwgY2F1c2luZyB0aGUgbW9udGggdG8gb3ZlcmZsb3dcbiAgICAvLyBGb3IgZXhhbXBsZSwgY3JlYXRlRGF0ZSgyMDE3LCAxLCAzMSkgd291bGQgdHJ5IHRvIGNyZWF0ZSBhIGRhdGUgMjAxNy8wMi8zMSB3aGljaCBpcyBpbnZhbGlkXG4gICAgaWYgKHJlc3VsdC5nZXRNb250aCgpICE9PSBtb250aCkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIiBmb3IgbW9udGggd2l0aCBpbmRleCBcIiR7bW9udGh9XCIuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZShcbiAgICAgIHRoaXMuZ2V0WWVhcihkYXRlKSxcbiAgICAgIHRoaXMuZ2V0TW9udGgoZGF0ZSksXG4gICAgICB0aGlzLmdldERhdGUoZGF0ZSksXG4gICAgICB0aGlzLmdldEhvdXJzKGRhdGUpLFxuICAgICAgdGhpcy5nZXRNaW51dGVzKGRhdGUpLFxuICAgICAgdGhpcy5nZXRTZWNvbmRzKGRhdGUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBub3coKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdKU05hdGl2ZURhdGU6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIGlmIChTVVBQT1JUU19JTlRMX0FQSSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9jbGFtcERhdGUgJiZcbiAgICAgICAgKGRhdGUuZ2V0RnVsbFllYXIoKSA8IDEgfHwgZGF0ZS5nZXRGdWxsWWVhcigpID4gOTk5OSlcbiAgICAgICkge1xuICAgICAgICBkYXRlID0gdGhpcy5jbG9uZShkYXRlKTtcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLCBNYXRoLm1pbig5OTk5LCBkYXRlLmdldEZ1bGxZZWFyKCkpKSk7XG4gICAgICB9XG5cbiAgICAgIGRpc3BsYXlGb3JtYXQgPSB7IC4uLmRpc3BsYXlGb3JtYXQsIHRpbWVab25lOiAndXRjJyB9O1xuICAgICAgY29uc3QgZHRmID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIGRpc3BsYXlGb3JtYXQpO1xuICAgICAgcmV0dXJuIHRoaXMuc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGR0ZiwgZGF0ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKGRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICB9XG5cbiAgcHVibGljIHBhcnNlKHZhbHVlOiBhbnksIHBhcnNlRm9ybWF0OiBhbnkpOiBEYXRlIHwgbnVsbCB7XG4gICAgLy8gVGhlcmUgaXMgbm8gd2F5IHVzaW5nIHRoZSBuYXRpdmUgSlMgRGF0ZSB0byBzZXQgdGhlIHBhcnNlIGZvcm1hdCBvciBsb2NhbGVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID8gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSBpZiBnaXZlbiBhIHZhbGlkIERhdGUgb3IgbnVsbC4gRGVzZXJpYWxpemVzIHZhbGlkIElTTyA4NjAxIHN0cmluZ3NcbiAgICogKGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzMzM5LnR4dCkgaW50byB2YWxpZCBEYXRlcyBhbmQgZW1wdHkgc3RyaW5nIGludG8gbnVsbC4gUmV0dXJucyBhblxuICAgKiBpbnZhbGlkIGRhdGUgZm9yIGFsbCBvdGhlciB2YWx1ZXMuXG4gICAqL1xuICBwdWJsaWMgZGVzZXJpYWxpemUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSBgRGF0ZWAgY29uc3RydWN0b3IgYWNjZXB0cyBmb3JtYXRzIG90aGVyIHRoYW4gSVNPIDg2MDEsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZVxuICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICBpZiAoSVNPXzg2MDFfUkVHRVgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRhdGUgYnV0IGFsbG93cyB0aGUgbW9udGggYW5kIGRhdGUgdG8gb3ZlcmZsb3cuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURhdGVXaXRoT3ZlcmZsb3coXG4gICAgeWVhcjogbnVtYmVyLFxuICAgIG1vbnRoOiBudW1iZXIsXG4gICAgZGF0ZTogbnVtYmVyLFxuICAgIGhvdXJzOiBudW1iZXIgPSAwLFxuICAgIG1pbnV0ZXM6IG51bWJlciA9IDAsXG4gICAgc2Vjb25kczogbnVtYmVyID0gMFxuICApOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpO1xuXG4gICAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgICByZXN1bHQuc2V0RnVsbFllYXIodGhpcy5nZXRZZWFyKHJlc3VsdCkgLSAxOTAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpcCBvdXQgdW5pY29kZSBMVFIgYW5kIFJUTCBjaGFyYWN0ZXJzLiBFZGdlIGFuZCBJRSBpbnNlcnQgdGhlc2UgaW50byBmb3JtYXR0ZWQgZGF0ZXMgd2hpbGVcbiAgICogb3RoZXIgYnJvd3NlcnMgZG8gbm90LiBXZSByZW1vdmUgdGhlbSB0byBtYWtlIG91dHB1dCBjb25zaXN0ZW50IGFuZCBiZWNhdXNlIHRoZXkgaW50ZXJmZXJlIHdpdGhcbiAgICogZGF0ZSBwYXJzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcdTIwMGVcXHUyMDBmXS9nLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBjb252ZXJ0aW5nIERhdGUgb2JqZWN0IHRvIHN0cmluZywgamF2YXNjcmlwdCBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IHJldHVybiB3cm9uZ1xuICAgKiByZXN1bHRzIGJlY2F1c2UgaXQgYXBwbGllcyBpdHMgaW50ZXJuYWwgRFNUIHJ1bGVzLiBUaGUgRFNUIHJ1bGVzIGFyb3VuZCB0aGUgd29ybGQgY2hhbmdlXG4gICAqIHZlcnkgZnJlcXVlbnRseSwgYW5kIHRoZSBjdXJyZW50IHZhbGlkIHJ1bGUgaXMgbm90IGFsd2F5cyB2YWxpZCBpbiBwcmV2aW91cyB5ZWFycyB0aG91Z2guXG4gICAqIFdlIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSBidWlsZGluZyBhIG5ldyBEYXRlIG9iamVjdCB3aGljaCBoYXMgaXRzIGludGVybmFsIFVUQ1xuICAgKiByZXByZXNlbnRhdGlvbiB3aXRoIHRoZSBsb2NhbCBkYXRlIGFuZCB0aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9ybWF0KGR0ZjogSW50bC5EYXRlVGltZUZvcm1hdCwgZGF0ZTogRGF0ZSkge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShcbiAgICAgIERhdGUuVVRDKFxuICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpLFxuICAgICAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gZHRmLmZvcm1hdChkKTtcbiAgfVxufVxuIl19
@@ -1,16 +0,0 @@
1
- export const OWL_NATIVE_DATE_TIME_FORMATS = {
2
- parseInput: null,
3
- fullPickerInput: {
4
- year: 'numeric',
5
- month: 'numeric',
6
- day: 'numeric',
7
- hour: 'numeric',
8
- minute: 'numeric'
9
- },
10
- datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },
11
- timePickerInput: { hour: 'numeric', minute: 'numeric' },
12
- monthYearLabel: { year: 'numeric', month: 'short' },
13
- dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },
14
- monthYearA11yLabel: { year: 'numeric', month: 'long' }
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS1mb3JtYXQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi9kYXRlLXRpbWUvYWRhcHRlci9uYXRpdmUtZGF0ZS10aW1lLWZvcm1hdC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBdUI7SUFDOUQsVUFBVSxFQUFFLElBQUk7SUFDaEIsZUFBZSxFQUFFO1FBQ2YsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsU0FBUztRQUNoQixHQUFHLEVBQUUsU0FBUztRQUNkLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFNBQVM7S0FDbEI7SUFDRCxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtJQUN0RSxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDdkQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ25ELGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO0lBQ2pFLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG5hdGl2ZS1kYXRlLXRpbWUtZm9ybWF0LmNsYXNzXG4gKi9cbmltcG9ydCB7IE93bERhdGVUaW1lRm9ybWF0cyB9IGZyb20gJy4vZGF0ZS10aW1lLWZvcm1hdC5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBPV0xfTkFUSVZFX0RBVEVfVElNRV9GT1JNQVRTOiBPd2xEYXRlVGltZUZvcm1hdHMgPSB7XG4gIHBhcnNlSW5wdXQ6IG51bGwsXG4gIGZ1bGxQaWNrZXJJbnB1dDoge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJ1xuICB9LFxuICBkYXRlUGlja2VySW5wdXQ6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9LFxuICB0aW1lUGlja2VySW5wdXQ6IHsgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJyB9LFxuICBtb250aFllYXJMYWJlbDogeyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnIH0sXG4gIGRhdGVBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnLCBkYXk6ICdudW1lcmljJyB9LFxuICBtb250aFllYXJBMTF5TGFiZWw6IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ2xvbmcnIH1cbn07XG4iXX0=
@@ -1,39 +0,0 @@
1
- /**
2
- * native-date-time.module
3
- */
4
- import { NgModule } from '@angular/core';
5
- import { PlatformModule } from '@angular/cdk/platform';
6
- import { DateTimeAdapter } from './date-time-adapter.class';
7
- import { NativeDateTimeAdapter } from './native-date-time-adapter.class';
8
- import { OWL_DATE_TIME_FORMATS } from './date-time-format.class';
9
- import { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';
10
- import * as i0 from "@angular/core";
11
- export class NativeDateTimeModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeModule, imports: [PlatformModule] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeModule, providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }], imports: [PlatformModule] }); }
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NativeDateTimeModule, decorators: [{
17
- type: NgModule,
18
- args: [{
19
- imports: [PlatformModule],
20
- providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]
21
- }]
22
- }] });
23
- export class OwlNativeDateTimeModule {
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OwlNativeDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OwlNativeDateTimeModule, imports: [NativeDateTimeModule] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OwlNativeDateTimeModule, providers: [
27
- { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS }
28
- ], imports: [NativeDateTimeModule] }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OwlNativeDateTimeModule, decorators: [{
31
- type: NgModule,
32
- args: [{
33
- imports: [NativeDateTimeModule],
34
- providers: [
35
- { provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS }
36
- ]
37
- }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWRhdGUtdGltZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi9kYXRlLXRpbWUvYWRhcHRlci9uYXRpdmUtZGF0ZS10aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFNL0UsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsWUFIckIsY0FBYztnSEFHYixvQkFBb0IsYUFGcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsWUFEaEUsY0FBYzs7NEZBR2Isb0JBQW9CO2tCQUpoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2lCQUMzRTs7QUFTRCxNQUFNLE9BQU8sdUJBQXVCOytHQUF2Qix1QkFBdUI7Z0hBQXZCLHVCQUF1QixZQVJ2QixvQkFBb0I7Z0hBUXBCLHVCQUF1QixhQUp2QjtZQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtTQUMzRSxZQUhTLG9CQUFvQjs7NEZBS25CLHVCQUF1QjtrQkFObkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDL0IsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtxQkFDM0U7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIG5hdGl2ZS1kYXRlLXRpbWUubW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJy4vZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnO1xuaW1wb3J0IHsgTmF0aXZlRGF0ZVRpbWVBZGFwdGVyIH0gZnJvbSAnLi9uYXRpdmUtZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnO1xuaW1wb3J0IHsgT1dMX0RBVEVfVElNRV9GT1JNQVRTIH0gZnJvbSAnLi9kYXRlLXRpbWUtZm9ybWF0LmNsYXNzJztcbmltcG9ydCB7IE9XTF9OQVRJVkVfREFURV9USU1FX0ZPUk1BVFMgfSBmcm9tICcuL25hdGl2ZS1kYXRlLXRpbWUtZm9ybWF0LmNsYXNzJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1BsYXRmb3JtTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBEYXRlVGltZUFkYXB0ZXIsIHVzZUNsYXNzOiBOYXRpdmVEYXRlVGltZUFkYXB0ZXIgfV1cbn0pXG5leHBvcnQgY2xhc3MgTmF0aXZlRGF0ZVRpbWVNb2R1bGUge31cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW05hdGl2ZURhdGVUaW1lTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBPV0xfREFURV9USU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBPV0xfTkFUSVZFX0RBVEVfVElNRV9GT1JNQVRTIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSB7fVxuIl19