@openmrs/ngx-formentry 3.2.1-pre.245 → 3.2.1-pre.268
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +13 -0
- package/.eslintrc.json +45 -0
- package/.prettierignore +40 -0
- package/.prettierrc +6 -0
- package/.turbo/turbo-build:lib.log +25 -0
- package/.yarn/plugins/@yarnpkg/plugin-version.cjs +550 -0
- package/.yarn/versions/ac1219f3.yml +0 -0
- package/README.md +429 -0
- package/angular.json +164 -0
- package/{esm2015/components/afe-ng-select.component.js → dist/ngx-formentry/esm2020/components/afe-ng-select.component.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/appointments-overview/appointments-overview.component.mjs +116 -0
- package/{esm2015/components/check-box/checkbox.component.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.component.mjs} +6 -10
- package/{esm2015/components/check-box/checkbox.module.js → dist/ngx-formentry/esm2020/components/check-box/checkbox.module.mjs} +5 -5
- package/{esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper..module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/custom-component-wrapper/custom-component-wrapper.component.mjs +21 -0
- package/{esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js → dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper..module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/custom-control-wrapper/custom-control-wrapper.component.mjs +68 -0
- package/dist/ngx-formentry/esm2020/components/date-time-picker/date-picker/date-picker.component.mjs +188 -0
- package/dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.component.mjs +115 -0
- package/{esm2015/components/date-time-picker/date-time-picker.module.js → dist/ngx-formentry/esm2020/components/date-time-picker/date-time-picker.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/date-time-picker/picker-modal/modal.component.mjs +25 -0
- package/{esm2015/components/date-time-picker/pipes/moment.pipe.js → dist/ngx-formentry/esm2020/components/date-time-picker/pipes/moment.pipe.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/date-time-picker/time-picker/time-picker.component.mjs +121 -0
- package/{esm2015/components/file-upload/file-upload.component.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.component.mjs} +8 -13
- package/{esm2015/components/file-upload/file-upload.module.js → dist/ngx-formentry/esm2020/components/file-upload/file-upload.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/file-upload/secure.pipe.mjs +101 -0
- package/{esm2015/components/input/input.directive.js → dist/ngx-formentry/esm2020/components/input/input.directive.mjs} +4 -4
- package/{esm2015/components/input/input.module.js → dist/ngx-formentry/esm2020/components/input/input.module.mjs} +5 -5
- package/{esm2015/components/input/label.component.js → dist/ngx-formentry/esm2020/components/input/label.component.mjs} +4 -4
- package/{esm2015/components/input/text-area.directive.js → dist/ngx-formentry/esm2020/components/input/text-area.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +76 -0
- package/{esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js → dist/ngx-formentry/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs} +5 -5
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs} +5 -5
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs} +9 -9
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +142 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +373 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +342 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs} +5 -11
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +392 -0
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs} +5 -11
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs} +4 -4
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs} +6 -7
- package/{esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +90 -0
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +292 -0
- package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs} +6 -10
- package/dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +26 -0
- package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs} +4 -4
- package/{esm2015/components/ngx-remote-select/ngx-remote-select.component.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.component.mjs} +6 -10
- package/{esm2015/components/ngx-remote-select/ngx-remote-select.module.js → dist/ngx-formentry/esm2020/components/ngx-remote-select/ngx-remote-select.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/ngx-tab-set.component.mjs +72 -0
- package/dist/ngx-formentry/esm2020/components/ngx-tabset/components/tab.component.mjs +33 -0
- package/{esm2015/components/ngx-tabset/directives/hover-class.directive.js → dist/ngx-formentry/esm2020/components/ngx-tabset/directives/hover-class.directive.mjs} +4 -4
- package/{esm2015/components/ngx-tabset/modules/ngx-tabset.module.js → dist/ngx-formentry/esm2020/components/ngx-tabset/modules/ngx-tabset.module.mjs} +5 -5
- package/dist/ngx-formentry/esm2020/components/number-input/number-input.component.mjs +248 -0
- package/{esm2015/components/number-input/number-input.module.js → dist/ngx-formentry/esm2020/components/number-input/number-input.module.mjs} +5 -5
- package/{esm2015/components/number-input/number.directive.js → dist/ngx-formentry/esm2020/components/number-input/number.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/radio-button/radio.component.mjs +96 -0
- package/{esm2015/components/radio-button/radio.module.js → dist/ngx-formentry/esm2020/components/radio-button/radio.module.mjs} +5 -5
- package/{esm2015/components/select/optgroup.directive.js → dist/ngx-formentry/esm2020/components/select/optgroup.directive.mjs} +4 -4
- package/{esm2015/components/select/option.directive.js → dist/ngx-formentry/esm2020/components/select/option.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/components/select/select.component.mjs +182 -0
- package/{esm2015/components/select/select.module.js → dist/ngx-formentry/esm2020/components/select/select.module.mjs} +5 -5
- package/{esm2015/form-entry/data-sources/data-sources.js → dist/ngx-formentry/esm2020/form-entry/data-sources/data-sources.mjs} +4 -4
- package/{esm2015/form-entry/directives/collapse.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse.directive.mjs} +5 -5
- package/{esm2015/form-entry/directives/historical-value.directive.js → dist/ngx-formentry/esm2020/form-entry/directives/historical-value.directive.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/error-renderer/error-renderer.component.mjs +53 -0
- package/{esm2015/form-entry/expression-runner/expression-runner.js → dist/ngx-formentry/esm2020/form-entry/expression-runner/expression-runner.mjs} +6 -6
- package/{esm2015/form-entry/form-entry.module.js → dist/ngx-formentry/esm2020/form-entry/form-entry.module.mjs} +5 -5
- package/{esm2015/form-entry/form-factory/control-relations.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/control-relations.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-factory/form-control.service.mjs +118 -0
- package/{esm2015/form-entry/form-factory/form.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.factory.mjs} +4 -4
- package/{esm2015/form-entry/form-factory/hiders-disablers.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/hiders-disablers.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-factory/question.factory.mjs +1000 -0
- package/{esm2015/form-entry/form-factory/show-messages.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/show-messages.factory.mjs} +4 -4
- package/{esm2015/form-entry/form-factory/validation.factory.js → dist/ngx-formentry/esm2020/form-entry/form-factory/validation.factory.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/form-renderer/form-renderer.component.mjs +264 -0
- package/{esm2015/form-entry/helpers/historical-expression-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-expression-helper-service.mjs} +4 -4
- package/{esm2015/form-entry/helpers/historical-field-helper-service.js → dist/ngx-formentry/esm2020/form-entry/helpers/historical-field-helper-service.mjs} +4 -4
- package/{esm2015/form-entry/helpers/js-expression-helper.js → dist/ngx-formentry/esm2020/form-entry/helpers/js-expression-helper.mjs} +7 -11
- package/{esm2015/form-entry/pipes/time-ago.pipe.js → dist/ngx-formentry/esm2020/form-entry/pipes/time-ago.pipe.mjs} +4 -4
- package/{esm2015/form-entry/services/debug-mode.service.js → dist/ngx-formentry/esm2020/form-entry/services/debug-mode.service.mjs} +4 -4
- package/{esm2015/form-entry/services/form-errors.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-errors.service.mjs} +4 -4
- package/{esm2015/form-entry/services/form-schema-compiler.service.js → dist/ngx-formentry/esm2020/form-entry/services/form-schema-compiler.service.mjs} +4 -4
- package/{esm2015/form-entry/services/historical-encounter-data.service.js → dist/ngx-formentry/esm2020/form-entry/services/historical-encounter-data.service.mjs} +4 -4
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/diagnosis.adapter.mjs +144 -0
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/encounter.adapter.mjs +186 -0
- package/dist/ngx-formentry/esm2020/form-entry/value-adapters/obs-adapter-helper.mjs +533 -0
- package/{esm2015/form-entry/value-adapters/obs.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/obs.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/order.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/order.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/patient-identifier.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/patient-identifier.adapter.mjs} +4 -4
- package/{esm2015/form-entry/value-adapters/person-attribute.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/person-attribute.adapter.mjs} +4 -4
- package/{esm2015/shared.module.js → dist/ngx-formentry/esm2020/shared.module.mjs} +5 -5
- package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs +14714 -0
- package/dist/ngx-formentry/fesm2015/openmrs-ngx-formentry.mjs.map +1 -0
- package/{fesm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs} +367 -524
- package/dist/ngx-formentry/fesm2020/openmrs-ngx-formentry.mjs.map +1 -0
- package/dist/ngx-formentry/package.json +48 -0
- package/package.json +92 -26
- package/proxy.conf.json +6 -0
- package/scripts/build.sh +2 -0
- package/tsconfig.json +29 -0
- package/turbo.json +18 -0
- package/bundles/openmrs-ngx-formentry.umd.js +0 -16636
- package/bundles/openmrs-ngx-formentry.umd.js.map +0 -1
- package/esm2015/components/appointments-overview/appointments-overview.component.js +0 -121
- package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +0 -24
- package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +0 -74
- package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +0 -192
- package/esm2015/components/date-time-picker/date-time-picker.component.js +0 -120
- package/esm2015/components/date-time-picker/picker-modal/modal.component.js +0 -31
- package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +0 -125
- package/esm2015/components/file-upload/secure.pipe.js +0 -101
- package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +0 -81
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +0 -149
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +0 -378
- package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +0 -348
- package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +0 -399
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +0 -96
- package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +0 -298
- package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +0 -27
- package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +0 -76
- package/esm2015/components/ngx-tabset/components/tab.component.js +0 -37
- package/esm2015/components/number-input/number-input.component.js +0 -252
- package/esm2015/components/radio-button/radio.component.js +0 -102
- package/esm2015/components/select/select.component.js +0 -187
- package/esm2015/form-entry/error-renderer/error-renderer.component.js +0 -57
- package/esm2015/form-entry/form-factory/form-control.service.js +0 -119
- package/esm2015/form-entry/form-factory/question.factory.js +0 -1001
- package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -270
- package/esm2015/form-entry/value-adapters/diagnosis.adapter.js +0 -140
- package/esm2015/form-entry/value-adapters/encounter.adapter.js +0 -187
- package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +0 -536
- package/fesm2015/openmrs-ngx-formentry.js.map +0 -1
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
- /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
- /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper..module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-component-wrapper/custom-component-wrapper.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper..module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/custom-control-wrapper/custom-control-wrapper.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/index.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/input.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/input.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/label.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/input/text-area.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/date-time/timer.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/index.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-pick-datetime/lib/utils/object.utils.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-remote-select/ngx-remote-select.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/ngx-tab-set.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/components/tab.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/directives/hover-class.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/ngx-tabset/modules/ngx-tabset.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number-input.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number-input.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/number-input/number.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/radio-button/radio.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/radio-button/radio.module.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/optgroup.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/option.directive.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
- /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
- /package/{esm2015/abstract-controls-extension/afe-control-type.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-control-type.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-array.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-array.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-control.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-control.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/afe-form-group.js → dist/ngx-formentry/esm2020/abstract-controls-extension/afe-form-group.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/control-extensions.js → dist/ngx-formentry/esm2020/abstract-controls-extension/control-extensions.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/index.js → dist/ngx-formentry/esm2020/abstract-controls-extension/index.mjs} +0 -0
- /package/{esm2015/abstract-controls-extension/value-change.listener.js → dist/ngx-formentry/esm2020/abstract-controls-extension/value-change.listener.mjs} +0 -0
- /package/{esm2015/change-tracking/control-relation.js → dist/ngx-formentry/esm2020/change-tracking/control-relation.mjs} +0 -0
- /package/{esm2015/change-tracking/control-relations.js → dist/ngx-formentry/esm2020/change-tracking/control-relations.mjs} +0 -0
- /package/{esm2015/components/date-time-picker/index.js → dist/ngx-formentry/esm2020/components/date-time-picker/index.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/utils/index.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/index.mjs} +0 -0
- /package/{esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js → dist/ngx-formentry/esm2020/components/ngx-pick-datetime/lib/utils/object.utils.mjs} +0 -0
- /package/{esm2015/form-entry/control-alerts/alert-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/alert-helpers.mjs} +0 -0
- /package/{esm2015/form-entry/control-alerts/can-generate-alert.js → dist/ngx-formentry/esm2020/form-entry/control-alerts/can-generate-alert.mjs} +0 -0
- /package/{esm2015/form-entry/control-calculators/can-calculate.js → dist/ngx-formentry/esm2020/form-entry/control-calculators/can-calculate.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/can-disable.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-disable.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/can-hide.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/can-hide.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/disabler-helper.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/disabler-helper.mjs} +0 -0
- /package/{esm2015/form-entry/control-hiders-disablers/hider-helpers.js → dist/ngx-formentry/esm2020/form-entry/control-hiders-disablers/hider-helpers.mjs} +0 -0
- /package/{esm2015/form-entry/data-sources/dummy-data-source.js → dist/ngx-formentry/esm2020/form-entry/data-sources/dummy-data-source.mjs} +0 -0
- /package/{esm2015/form-entry/directives/collapse-animations.js → dist/ngx-formentry/esm2020/form-entry/directives/collapse-animations.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/form-node.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form-node.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/form.js → dist/ngx-formentry/esm2020/form-entry/form-factory/form.mjs} +0 -0
- /package/{esm2015/form-entry/form-factory/index.js → dist/ngx-formentry/esm2020/form-entry/form-factory/index.mjs} +0 -0
- /package/{esm2015/form-entry/helpers/risk-dataset-table.js → dist/ngx-formentry/esm2020/form-entry/helpers/risk-dataset-table.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/checkbox.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/checkbox.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/conditional-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/conditional-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/custom-control-question.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/custom-control-question.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/date-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/date-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/date-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/diagnosis-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/diagnosis-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/file-upload-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/file-upload-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/group-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/group-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/base-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/base-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/checkbox-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/checkbox-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/data-source.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/data-source.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/date-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/date-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/diagnosis-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/diagnosis-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/file-upload-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/file-upload-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/group-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/group-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/multi-select-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/multi-select-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/nested-questions.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/nested-questions.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/radio-button-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/radio-button-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/repeating-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/repeating-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-option.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/select-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/test-order-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/test-order-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/text-area-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-area-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/text-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/text-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/interfaces/ui-select-question-options.js → dist/ngx-formentry/esm2020/form-entry/question-models/interfaces/ui-select-question-options.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/js-expression-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/js-expression-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/max-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-length-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/max-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/max-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/min-length-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-length-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/min-validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/min-validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/models.js → dist/ngx-formentry/esm2020/form-entry/question-models/models.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/multi-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/multi-select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/pair.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/pair.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/question-base.js → dist/ngx-formentry/esm2020/form-entry/question-models/question-base.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/radio-button.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/radio-button.model.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/rendering-type.js → dist/ngx-formentry/esm2020/form-entry/question-models/rendering-type.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/repeating-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/repeating-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/select-option.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-option.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/test-order-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/test-order-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/text-area-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-area-input-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/text-input-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/text-input-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/ui-select-question.js → dist/ngx-formentry/esm2020/form-entry/question-models/ui-select-question.mjs} +0 -0
- /package/{esm2015/form-entry/question-models/validation.model.js → dist/ngx-formentry/esm2020/form-entry/question-models/validation.model.mjs} +0 -0
- /package/{esm2015/form-entry/validators/conditional-answered.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-answered.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/conditional-required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/conditional-required.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/future-date-restriction.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/future-date-restriction.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/js-expression.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/js-expression.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max-length.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/max.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/max.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min-date.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-date.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min-length.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min-length.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/min.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/min.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/required.validator.js → dist/ngx-formentry/esm2020/form-entry/validators/required.validator.mjs} +0 -0
- /package/{esm2015/form-entry/validators/validations.js → dist/ngx-formentry/esm2020/form-entry/validators/validations.mjs} +0 -0
- /package/{esm2015/form-entry/value-adapters/value.adapter.js → dist/ngx-formentry/esm2020/form-entry/value-adapters/value.adapter.mjs} +0 -0
- /package/{esm2015/lib/index.js → dist/ngx-formentry/esm2020/lib/index.mjs} +0 -0
- /package/{esm2015/openmrs-ngx-formentry.js → dist/ngx-formentry/esm2020/openmrs-ngx-formentry.mjs} +0 -0
- /package/{esm2015/public_api.js → dist/ngx-formentry/esm2020/public_api.mjs} +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse-animations.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/collapse.directive.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value.directive.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/index.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/risk-dataset-table.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/pipes/time-ago.pipe.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/custom-control-question.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/diagnosis-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/diagnosis-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/radio-button-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-length-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-length-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/radio-button.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-length.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-length.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/diagnosis.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/patient-identifier.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
- /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
- /package/{lib → dist/ngx-formentry/lib}/index.d.ts +0 -0
- /package/{openmrs-ngx-formentry.d.ts → dist/ngx-formentry/openmrs-ngx-formentry.d.ts} +0 -0
- /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
- /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
- /package/{styles → dist/ngx-formentry/styles}/ngx-formentry.css +0 -0
- /package/{styles → dist/ngx-formentry/styles}/picker.min.css +0 -0
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output } from '@angular/core';
|
|
2
|
-
import { take } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class CalendarCell {
|
|
6
|
-
constructor(value, displayValue, ariaLabel, enabled, out = false, cellClass = '') {
|
|
7
|
-
this.value = value;
|
|
8
|
-
this.displayValue = displayValue;
|
|
9
|
-
this.ariaLabel = ariaLabel;
|
|
10
|
-
this.enabled = enabled;
|
|
11
|
-
this.out = out;
|
|
12
|
-
this.cellClass = cellClass;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export class OwlCalendarBodyComponent {
|
|
16
|
-
constructor(elmRef, ngZone) {
|
|
17
|
-
this.elmRef = elmRef;
|
|
18
|
-
this.ngZone = ngZone;
|
|
19
|
-
this.owlDTCalendarBodyClass = true;
|
|
20
|
-
/**
|
|
21
|
-
* The cell number of the active cell in the table.
|
|
22
|
-
*/
|
|
23
|
-
this.activeCell = 0;
|
|
24
|
-
/**
|
|
25
|
-
* The number of columns in the table.
|
|
26
|
-
* */
|
|
27
|
-
this.numCols = 7;
|
|
28
|
-
/**
|
|
29
|
-
* The ratio (width / height) to use for the cells in the table.
|
|
30
|
-
*/
|
|
31
|
-
this.cellRatio = 1;
|
|
32
|
-
/**
|
|
33
|
-
* Emit when a calendar cell is selected
|
|
34
|
-
* */
|
|
35
|
-
this.cellSelected = new EventEmitter();
|
|
36
|
-
}
|
|
37
|
-
get isInSingleMode() {
|
|
38
|
-
return this.selectMode === 'single';
|
|
39
|
-
}
|
|
40
|
-
get isInRangeMode() {
|
|
41
|
-
return (this.selectMode === 'range' ||
|
|
42
|
-
this.selectMode === 'rangeFrom' ||
|
|
43
|
-
this.selectMode === 'rangeTo');
|
|
44
|
-
}
|
|
45
|
-
selectCell(cell) {
|
|
46
|
-
this.cellSelected.emit(cell);
|
|
47
|
-
}
|
|
48
|
-
isActiveCell(rowIndex, colIndex) {
|
|
49
|
-
const cellNumber = rowIndex * this.numCols + colIndex;
|
|
50
|
-
return cellNumber === this.activeCell;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Check if the cell is selected
|
|
54
|
-
*/
|
|
55
|
-
isSelected(value) {
|
|
56
|
-
if (!this.selectedValues || this.selectedValues.length === 0) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
if (this.isInSingleMode) {
|
|
60
|
-
return value === this.selectedValues[0];
|
|
61
|
-
}
|
|
62
|
-
if (this.isInRangeMode) {
|
|
63
|
-
const fromValue = this.selectedValues[0];
|
|
64
|
-
const toValue = this.selectedValues[1];
|
|
65
|
-
return value === fromValue || value === toValue;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check if the cell in the range
|
|
70
|
-
* */
|
|
71
|
-
isInRange(value) {
|
|
72
|
-
if (this.isInRangeMode) {
|
|
73
|
-
const fromValue = this.selectedValues[0];
|
|
74
|
-
const toValue = this.selectedValues[1];
|
|
75
|
-
if (fromValue !== null && toValue !== null) {
|
|
76
|
-
return value >= fromValue && value <= toValue;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
return value === fromValue || value === toValue;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Check if the cell is the range from
|
|
85
|
-
* */
|
|
86
|
-
isRangeFrom(value) {
|
|
87
|
-
if (this.isInRangeMode) {
|
|
88
|
-
const fromValue = this.selectedValues[0];
|
|
89
|
-
return fromValue !== null && value === fromValue;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if the cell is the range to
|
|
94
|
-
* */
|
|
95
|
-
isRangeTo(value) {
|
|
96
|
-
if (this.isInRangeMode) {
|
|
97
|
-
const toValue = this.selectedValues[1];
|
|
98
|
-
return toValue !== null && value === toValue;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Focus to a active cell
|
|
103
|
-
* */
|
|
104
|
-
focusActiveCell() {
|
|
105
|
-
this.ngZone.runOutsideAngular(() => {
|
|
106
|
-
this.ngZone.onStable
|
|
107
|
-
.asObservable()
|
|
108
|
-
.pipe(take(1))
|
|
109
|
-
.subscribe(() => {
|
|
110
|
-
this.elmRef.nativeElement
|
|
111
|
-
.querySelector('.owl-dt-calendar-cell-active')
|
|
112
|
-
.focus();
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
OwlCalendarBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OwlCalendarBodyComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
-
OwlCalendarBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: OwlCalendarBodyComponent, selector: "[ofe-owl-date-time-calendar-body]", inputs: { activeCell: "activeCell", rows: "rows", numCols: "numCols", cellRatio: "cellRatio", todayValue: "todayValue", selectedValues: "selectedValues", selectMode: "selectMode" }, outputs: { cellSelected: "cellSelected" }, host: { properties: { "class.owl-dt-calendar-body": "this.owlDTCalendarBodyClass" } }, exportAs: ["owlDateTimeCalendarBody"], ngImport: i0, template: "<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <td\n *ngFor=\"let item of row; let colIndex = index\"\n class=\"owl-dt-calendar-cell {{ item.cellClass }}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [style.width.%]=\"100 / numCols\"\n [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n (click)=\"selectCell(item)\"\n >\n <span\n class=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue,\n 'owl-dt-calendar-cell-selected': isSelected(item.value)\n }\"\n >\n {{ item.displayValue }}\n </span>\n </td>\n</tr>\n", styles: [""], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OwlCalendarBodyComponent, decorators: [{
|
|
120
|
-
type: Component,
|
|
121
|
-
args: [{
|
|
122
|
-
/* eslint-disable-next-line @angular-eslint/component-selector */
|
|
123
|
-
selector: '[ofe-owl-date-time-calendar-body]',
|
|
124
|
-
exportAs: 'owlDateTimeCalendarBody',
|
|
125
|
-
templateUrl: './calendar-body.component.html',
|
|
126
|
-
styleUrls: ['./calendar-body.component.scss'],
|
|
127
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
128
|
-
}]
|
|
129
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { owlDTCalendarBodyClass: [{
|
|
130
|
-
type: HostBinding,
|
|
131
|
-
args: ['class.owl-dt-calendar-body']
|
|
132
|
-
}], activeCell: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], rows: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], numCols: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], cellRatio: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], todayValue: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], selectedValues: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], selectMode: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], cellSelected: [{
|
|
147
|
-
type: Output
|
|
148
|
-
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi9kYXRlLXRpbWUvY2FsZW5kYXItYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL25neC1waWNrLWRhdGV0aW1lL2xpYi9kYXRlLXRpbWUvY2FsZW5kYXItYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd0QyxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNTLEtBQWEsRUFDYixZQUFvQixFQUNwQixTQUFpQixFQUNqQixPQUFnQixFQUNoQixNQUFNLEtBQUssRUFDWCxZQUFvQixFQUFFO1FBTHRCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLGNBQVMsR0FBVCxTQUFTLENBQWE7SUFDNUIsQ0FBQztDQUNMO0FBVUQsTUFBTSxPQUFPLHdCQUF3QjtJQStEbkMsWUFBb0IsTUFBa0IsRUFBVSxNQUFjO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBOURuQiwyQkFBc0IsR0FBRyxJQUFJ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SUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2lCQUNqQixZQUFZLEVBQUU7aUJBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtxQkFDdEIsYUFBYSxDQUFDLDhCQUE4QixDQUFDO3FCQUM3QyxLQUFLLEVBQUUsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzSEFoSlUsd0JBQXdCOzBHQUF4Qix3QkFBd0Isd2FDaENyQyx1c0NBNkJBOzRGREdhLHdCQUF3QjtrQkFScEMsU0FBUzttQkFBQztvQkFDVCxpRUFBaUU7b0JBQ2pFLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7c0hBRTRDLHNCQUFzQjtzQkFBaEUsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBTXpDLFVBQVU7c0JBRFQsS0FBSztnQkFPTixJQUFJO3NCQURILEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQU9OLFNBQVM7c0JBRFIsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7Z0JBT04sY0FBYztzQkFEYixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSztnQkFPVSxZQUFZO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuL2RhdGUtdGltZS5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNlbGwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdmFsdWU6IG51bWJlcixcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBzdHJpbmcsXG4gICAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nLFxuICAgIHB1YmxpYyBlbmFibGVkOiBib29sZWFuLFxuICAgIHB1YmxpYyBvdXQgPSBmYWxzZSxcbiAgICBwdWJsaWMgY2VsbENsYXNzOiBzdHJpbmcgPSAnJ1xuICApIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuICBzZWxlY3RvcjogJ1tvZmUtb3dsLWRhdGUtdGltZS1jYWxlbmRhci1ib2R5XScsXG4gIGV4cG9ydEFzOiAnb3dsRGF0ZVRpbWVDYWxlbmRhckJvZHknLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYm9keS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLWJvZHkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT3dsQ2FsZW5kYXJCb2R5Q29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vd2wtZHQtY2FsZW5kYXItYm9keScpIG93bERUQ2FsZW5kYXJCb2R5Q2xhc3MgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY2VsbCBudW1iZXIgb2YgdGhlIGFjdGl2ZSBjZWxsIGluIHRoZSB0YWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZUNlbGwgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgY2VsbHMgdG8gZGlzcGxheSBpbiB0aGUgdGFibGUuXG4gICAqICovXG4gIEBJbnB1dCgpXG4gIHJvd3M6IENhbGVuZGFyQ2VsbFtdW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGFibGUuXG4gICAqICovXG4gIEBJbnB1dCgpXG4gIG51bUNvbHMgPSA3O1xuXG4gIC8qKlxuICAgKiBUaGUgcmF0aW8gKHdpZHRoIC8gaGVpZ2h0KSB0byB1c2UgZm9yIHRoZSBjZWxscyBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBjZWxsUmF0aW8gPSAxO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgaW4gdGhlIHRhYmxlIHRoYXQgY29ycmVzcG9uZHMgdG8gdG9kYXkuXG4gICAqICovXG4gIEBJbnB1dCgpXG4gIHRvZGF5VmFsdWU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGluIHRoZSB0YWJsZSB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC5cbiAgICogKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWRWYWx1ZXM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHBpY2tlciBzZWxlY3QgbW9kZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0TW9kZTogU2VsZWN0TW9kZTtcblxuICAvKipcbiAgICogRW1pdCB3aGVuIGEgY2FsZW5kYXIgY2VsbCBpcyBzZWxlY3RlZFxuICAgKiAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGNlbGxTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJDZWxsPigpO1xuXG4gIGdldCBpc0luU2luZ2xlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJztcbiAgfVxuXG4gIGdldCBpc0luUmFuZ2VNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZScgfHxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlRnJvbScgfHxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlVG8nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxtUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIHB1YmxpYyBzZWxlY3RDZWxsKGNlbGw6IENhbGVuZGFyQ2VsbCk6IHZvaWQge1xuICAgIHRoaXMuY2VsbFNlbGVjdGVkLmVtaXQoY2VsbCk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmVDZWxsKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBjZWxsTnVtYmVyID0gcm93SW5kZXggKiB0aGlzLm51bUNvbHMgKyBjb2xJbmRleDtcbiAgICByZXR1cm4gY2VsbE51bWJlciA9PT0gdGhpcy5hY3RpdmVDZWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBjZWxsIGlzIHNlbGVjdGVkXG4gICAqL1xuICBwdWJsaWMgaXNTZWxlY3RlZCh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVmFsdWVzIHx8IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJblNpbmdsZU1vZGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlc1swXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0luUmFuZ2VNb2RlKSB7XG4gICAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzWzBdO1xuICAgICAgY29uc3QgdG9WYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNbMV07XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gZnJvbVZhbHVlIHx8IHZhbHVlID09PSB0b1ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgY2VsbCBpbiB0aGUgcmFuZ2VcbiAgICogKi9cbiAgcHVibGljIGlzSW5SYW5nZSh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNJblJhbmdlTW9kZSkge1xuICAgICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlc1swXTtcbiAgICAgIGNvbnN0IHRvVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzWzFdO1xuXG4gICAgICBpZiAoZnJvbVZhbHVlICE9PSBudWxsICYmIHRvVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IGZyb21WYWx1ZSAmJiB2YWx1ZSA8PSB0b1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSBmcm9tVmFsdWUgfHwgdmFsdWUgPT09IHRvVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBjZWxsIGlzIHRoZSByYW5nZSBmcm9tXG4gICAqICovXG4gIHB1YmxpYyBpc1JhbmdlRnJvbSh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNJblJhbmdlTW9kZSkge1xuICAgICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWxlY3RlZFZhbHVlc1swXTtcbiAgICAgIHJldHVybiBmcm9tVmFsdWUgIT09IG51bGwgJiYgdmFsdWUgPT09IGZyb21WYWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGNlbGwgaXMgdGhlIHJhbmdlIHRvXG4gICAqICovXG4gIHB1YmxpYyBpc1JhbmdlVG8odmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzSW5SYW5nZU1vZGUpIHtcbiAgICAgIGNvbnN0IHRvVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzWzFdO1xuICAgICAgcmV0dXJuIHRvVmFsdWUgIT09IG51bGwgJiYgdmFsdWUgPT09IHRvVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRvIGEgYWN0aXZlIGNlbGxcbiAgICogKi9cbiAgcHVibGljIGZvY3VzQWN0aXZlQ2VsbCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbG1SZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5vd2wtZHQtY2FsZW5kYXItY2VsbC1hY3RpdmUnKVxuICAgICAgICAgICAgLmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiIHJvbGU9XCJyb3dcIj5cbiAgPHRkXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93OyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgY2xhc3M9XCJvd2wtZHQtY2FsZW5kYXItY2VsbCB7eyBpdGVtLmNlbGxDbGFzcyB9fVwiXG4gICAgW3RhYmluZGV4XT1cImlzQWN0aXZlQ2VsbChyb3dJbmRleCwgY29sSW5kZXgpID8gMCA6IC0xXCJcbiAgICBbY2xhc3Mub3dsLWR0LWNhbGVuZGFyLWNlbGwtYWN0aXZlXT1cImlzQWN0aXZlQ2VsbChyb3dJbmRleCwgY29sSW5kZXgpXCJcbiAgICBbY2xhc3Mub3dsLWR0LWNhbGVuZGFyLWNlbGwtZGlzYWJsZWRdPVwiIWl0ZW0uZW5hYmxlZFwiXG4gICAgW2NsYXNzLm93bC1kdC1jYWxlbmRhci1jZWxsLWluLXJhbmdlXT1cImlzSW5SYW5nZShpdGVtLnZhbHVlKVwiXG4gICAgW2NsYXNzLm93bC1kdC1jYWxlbmRhci1jZWxsLXJhbmdlLWZyb21dPVwiaXNSYW5nZUZyb20oaXRlbS52YWx1ZSlcIlxuICAgIFtjbGFzcy5vd2wtZHQtY2FsZW5kYXItY2VsbC1yYW5nZS10b109XCJpc1JhbmdlVG8oaXRlbS52YWx1ZSlcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiIWl0ZW0uZW5hYmxlZCB8fCBudWxsXCJcbiAgICBbc3R5bGUud2lkdGguJV09XCIxMDAgLyBudW1Db2xzXCJcbiAgICBbc3R5bGUucGFkZGluZ1RvcC4lXT1cIig1MCAqIGNlbGxSYXRpbykgLyBudW1Db2xzXCJcbiAgICBbc3R5bGUucGFkZGluZ0JvdHRvbS4lXT1cIig1MCAqIGNlbGxSYXRpbykgLyBudW1Db2xzXCJcbiAgICAoY2xpY2spPVwic2VsZWN0Q2VsbChpdGVtKVwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJvd2wtZHQtY2FsZW5kYXItY2VsbC1jb250ZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ293bC1kdC1jYWxlbmRhci1jZWxsLW91dCc6IGl0ZW0ub3V0LFxuICAgICAgICAnb3dsLWR0LWNhbGVuZGFyLWNlbGwtdG9kYXknOiBpdGVtLnZhbHVlID09PSB0b2RheVZhbHVlLFxuICAgICAgICAnb3dsLWR0LWNhbGVuZGFyLWNlbGwtc2VsZWN0ZWQnOiBpc1NlbGVjdGVkKGl0ZW0udmFsdWUpXG4gICAgICB9XCJcbiAgICA+XG4gICAgICB7eyBpdGVtLmRpc3BsYXlWYWx1ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC90ZD5cbjwvdHI+XG4iXX0=
|
package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js
DELETED
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { DateTimeAdapter } from './adapter/date-time-adapter.class';
|
|
3
|
-
import { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';
|
|
4
|
-
import { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';
|
|
5
|
-
import { OwlDateTimeIntl } from './date-time-picker-intl.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./date-time-picker-intl.service";
|
|
8
|
-
import * as i2 from "./adapter/date-time-adapter.class";
|
|
9
|
-
import * as i3 from "./calendar-body.component";
|
|
10
|
-
export const YEARS_PER_ROW = 3;
|
|
11
|
-
export const YEAR_ROWS = 7;
|
|
12
|
-
export class OwlMultiYearViewComponent {
|
|
13
|
-
constructor(cdRef, pickerIntl, dateTimeAdapter) {
|
|
14
|
-
this.cdRef = cdRef;
|
|
15
|
-
this.pickerIntl = pickerIntl;
|
|
16
|
-
this.dateTimeAdapter = dateTimeAdapter;
|
|
17
|
-
/**
|
|
18
|
-
* The select mode of the picker;
|
|
19
|
-
* */
|
|
20
|
-
this._selectMode = 'single';
|
|
21
|
-
this._selecteds = [];
|
|
22
|
-
this.initiated = false;
|
|
23
|
-
/**
|
|
24
|
-
* Callback to invoke when a new month is selected
|
|
25
|
-
* */
|
|
26
|
-
this.monthChange = new EventEmitter();
|
|
27
|
-
/**
|
|
28
|
-
* Emits the selected year. This doesn't imply a change on the selected date
|
|
29
|
-
* */
|
|
30
|
-
this.yearSelected = new EventEmitter();
|
|
31
|
-
/** Emits when any date is activated. */
|
|
32
|
-
this.pickerMomentChange = new EventEmitter();
|
|
33
|
-
/** Emits when use keyboard enter to select a calendar cell */
|
|
34
|
-
this.keyboardEnter = new EventEmitter();
|
|
35
|
-
}
|
|
36
|
-
get owlDTCalendarView() {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
get owlDTCalendarMultiYearView() {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
get selectMode() {
|
|
43
|
-
return this._selectMode;
|
|
44
|
-
}
|
|
45
|
-
set selectMode(val) {
|
|
46
|
-
this._selectMode = val;
|
|
47
|
-
if (this.initiated) {
|
|
48
|
-
this.setSelectedYears();
|
|
49
|
-
this.cdRef.markForCheck();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
get selected() {
|
|
53
|
-
return this._selected;
|
|
54
|
-
}
|
|
55
|
-
set selected(value) {
|
|
56
|
-
const oldSelected = this._selected;
|
|
57
|
-
value = this.dateTimeAdapter.deserialize(value);
|
|
58
|
-
this._selected = this.getValidDate(value);
|
|
59
|
-
if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {
|
|
60
|
-
this.setSelectedYears();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
get selecteds() {
|
|
64
|
-
return this._selecteds;
|
|
65
|
-
}
|
|
66
|
-
set selecteds(values) {
|
|
67
|
-
this._selecteds = values.map((v) => {
|
|
68
|
-
v = this.dateTimeAdapter.deserialize(v);
|
|
69
|
-
return this.getValidDate(v);
|
|
70
|
-
});
|
|
71
|
-
this.setSelectedYears();
|
|
72
|
-
}
|
|
73
|
-
get pickerMoment() {
|
|
74
|
-
return this._pickerMoment;
|
|
75
|
-
}
|
|
76
|
-
set pickerMoment(value) {
|
|
77
|
-
const oldMoment = this._pickerMoment;
|
|
78
|
-
value = this.dateTimeAdapter.deserialize(value);
|
|
79
|
-
this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();
|
|
80
|
-
if (oldMoment &&
|
|
81
|
-
this._pickerMoment &&
|
|
82
|
-
!this.isSameYearList(oldMoment, this._pickerMoment)) {
|
|
83
|
-
this.generateYearList();
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
get dateFilter() {
|
|
87
|
-
return this._dateFilter;
|
|
88
|
-
}
|
|
89
|
-
set dateFilter(filter) {
|
|
90
|
-
this._dateFilter = filter;
|
|
91
|
-
if (this.initiated) {
|
|
92
|
-
this.generateYearList();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
get minDate() {
|
|
96
|
-
return this._minDate;
|
|
97
|
-
}
|
|
98
|
-
set minDate(value) {
|
|
99
|
-
value = this.dateTimeAdapter.deserialize(value);
|
|
100
|
-
this._minDate = this.getValidDate(value);
|
|
101
|
-
if (this.initiated) {
|
|
102
|
-
this.generateYearList();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
get maxDate() {
|
|
106
|
-
return this._maxDate;
|
|
107
|
-
}
|
|
108
|
-
set maxDate(value) {
|
|
109
|
-
value = this.dateTimeAdapter.deserialize(value);
|
|
110
|
-
this._maxDate = this.getValidDate(value);
|
|
111
|
-
if (this.initiated) {
|
|
112
|
-
this.generateYearList();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
get todayYear() {
|
|
116
|
-
return this._todayYear;
|
|
117
|
-
}
|
|
118
|
-
get years() {
|
|
119
|
-
return this._years;
|
|
120
|
-
}
|
|
121
|
-
get selectedYears() {
|
|
122
|
-
return this._selectedYears;
|
|
123
|
-
}
|
|
124
|
-
get isInSingleMode() {
|
|
125
|
-
return this.selectMode === 'single';
|
|
126
|
-
}
|
|
127
|
-
get isInRangeMode() {
|
|
128
|
-
return (this.selectMode === 'range' ||
|
|
129
|
-
this.selectMode === 'rangeFrom' ||
|
|
130
|
-
this.selectMode === 'rangeTo');
|
|
131
|
-
}
|
|
132
|
-
get activeCell() {
|
|
133
|
-
if (this._pickerMoment) {
|
|
134
|
-
return (this.dateTimeAdapter.getYear(this._pickerMoment) %
|
|
135
|
-
(YEARS_PER_ROW * YEAR_ROWS));
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
get tableHeader() {
|
|
139
|
-
if (this._years && this._years.length > 0) {
|
|
140
|
-
return `${this._years[0][0].displayValue} ~ ${this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue}`;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
get prevButtonLabel() {
|
|
144
|
-
return this.pickerIntl.prevMultiYearLabel;
|
|
145
|
-
}
|
|
146
|
-
get nextButtonLabel() {
|
|
147
|
-
return this.pickerIntl.nextMultiYearLabel;
|
|
148
|
-
}
|
|
149
|
-
ngAfterContentInit() {
|
|
150
|
-
this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());
|
|
151
|
-
this.generateYearList();
|
|
152
|
-
this.initiated = true;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Handle a calendarCell selected
|
|
156
|
-
*/
|
|
157
|
-
selectCalendarCell(cell) {
|
|
158
|
-
this.selectYear(cell.value);
|
|
159
|
-
}
|
|
160
|
-
selectYear(year) {
|
|
161
|
-
this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));
|
|
162
|
-
const firstDateOfMonth = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), 1);
|
|
163
|
-
const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);
|
|
164
|
-
const selected = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)), this.dateTimeAdapter.getHours(this.pickerMoment), this.dateTimeAdapter.getMinutes(this.pickerMoment), this.dateTimeAdapter.getSeconds(this.pickerMoment));
|
|
165
|
-
this.monthChange.emit(selected);
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Generate the previous year list
|
|
169
|
-
* */
|
|
170
|
-
prevYearList(event) {
|
|
171
|
-
this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1 * YEAR_ROWS * YEARS_PER_ROW);
|
|
172
|
-
this.generateYearList();
|
|
173
|
-
event.preventDefault();
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Generate the next year list
|
|
177
|
-
* */
|
|
178
|
-
nextYearList(event) {
|
|
179
|
-
this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, YEAR_ROWS * YEARS_PER_ROW);
|
|
180
|
-
this.generateYearList();
|
|
181
|
-
event.preventDefault();
|
|
182
|
-
}
|
|
183
|
-
generateYearList() {
|
|
184
|
-
this._years = [];
|
|
185
|
-
const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);
|
|
186
|
-
const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS);
|
|
187
|
-
for (let i = 0; i < YEAR_ROWS; i++) {
|
|
188
|
-
const row = [];
|
|
189
|
-
for (let j = 0; j < YEARS_PER_ROW; j++) {
|
|
190
|
-
const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW);
|
|
191
|
-
const yearCell = this.createYearCell(year);
|
|
192
|
-
row.push(yearCell);
|
|
193
|
-
}
|
|
194
|
-
this._years.push(row);
|
|
195
|
-
}
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
/** Whether the previous period button is enabled. */
|
|
199
|
-
previousEnabled() {
|
|
200
|
-
if (!this.minDate) {
|
|
201
|
-
return true;
|
|
202
|
-
}
|
|
203
|
-
return (!this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate));
|
|
204
|
-
}
|
|
205
|
-
/** Whether the next period button is enabled. */
|
|
206
|
-
nextEnabled() {
|
|
207
|
-
return (!this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate));
|
|
208
|
-
}
|
|
209
|
-
handleCalendarKeydown(event) {
|
|
210
|
-
let moment;
|
|
211
|
-
switch (event.keyCode) {
|
|
212
|
-
// minus 1 year
|
|
213
|
-
case LEFT_ARROW:
|
|
214
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);
|
|
215
|
-
this.pickerMomentChange.emit(moment);
|
|
216
|
-
break;
|
|
217
|
-
// add 1 year
|
|
218
|
-
case RIGHT_ARROW:
|
|
219
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);
|
|
220
|
-
this.pickerMomentChange.emit(moment);
|
|
221
|
-
break;
|
|
222
|
-
// minus 3 years
|
|
223
|
-
case UP_ARROW:
|
|
224
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * YEARS_PER_ROW);
|
|
225
|
-
this.pickerMomentChange.emit(moment);
|
|
226
|
-
break;
|
|
227
|
-
// add 3 years
|
|
228
|
-
case DOWN_ARROW:
|
|
229
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, YEARS_PER_ROW);
|
|
230
|
-
this.pickerMomentChange.emit(moment);
|
|
231
|
-
break;
|
|
232
|
-
// go to the first year of the year page
|
|
233
|
-
case HOME:
|
|
234
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -this.dateTimeAdapter.getYear(this._pickerMoment) %
|
|
235
|
-
(YEARS_PER_ROW * YEAR_ROWS));
|
|
236
|
-
this.pickerMomentChange.emit(moment);
|
|
237
|
-
break;
|
|
238
|
-
// go to the last year of the year page
|
|
239
|
-
case END:
|
|
240
|
-
moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, YEARS_PER_ROW * YEAR_ROWS -
|
|
241
|
-
(this.dateTimeAdapter.getYear(this._pickerMoment) %
|
|
242
|
-
(YEARS_PER_ROW * YEAR_ROWS)) -
|
|
243
|
-
1);
|
|
244
|
-
this.pickerMomentChange.emit(moment);
|
|
245
|
-
break;
|
|
246
|
-
// minus 1 year page (or 10 year pages)
|
|
247
|
-
case PAGE_UP:
|
|
248
|
-
moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey
|
|
249
|
-
? -10 * (YEARS_PER_ROW * YEAR_ROWS)
|
|
250
|
-
: -1 * (YEARS_PER_ROW * YEAR_ROWS));
|
|
251
|
-
this.pickerMomentChange.emit(moment);
|
|
252
|
-
break;
|
|
253
|
-
// add 1 year page (or 10 year pages)
|
|
254
|
-
case PAGE_DOWN:
|
|
255
|
-
moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey
|
|
256
|
-
? 10 * (YEARS_PER_ROW * YEAR_ROWS)
|
|
257
|
-
: YEARS_PER_ROW * YEAR_ROWS);
|
|
258
|
-
this.pickerMomentChange.emit(moment);
|
|
259
|
-
break;
|
|
260
|
-
case ENTER:
|
|
261
|
-
this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));
|
|
262
|
-
this.keyboardEnter.emit();
|
|
263
|
-
break;
|
|
264
|
-
default:
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
this.focusActiveCell();
|
|
268
|
-
event.preventDefault();
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Creates an CalendarCell for the given year.
|
|
272
|
-
*/
|
|
273
|
-
createYearCell(year) {
|
|
274
|
-
const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);
|
|
275
|
-
const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);
|
|
276
|
-
const cellClass = 'owl-dt-year-' + year;
|
|
277
|
-
return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);
|
|
278
|
-
}
|
|
279
|
-
setSelectedYears() {
|
|
280
|
-
this._selectedYears = [];
|
|
281
|
-
if (this.isInSingleMode && this.selected) {
|
|
282
|
-
this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);
|
|
283
|
-
}
|
|
284
|
-
if (this.isInRangeMode && this.selecteds) {
|
|
285
|
-
this._selectedYears = this.selecteds.map((selected) => {
|
|
286
|
-
if (this.dateTimeAdapter.isValid(selected)) {
|
|
287
|
-
return this.dateTimeAdapter.getYear(selected);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
return null;
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
/** Whether the given year is enabled. */
|
|
296
|
-
isYearEnabled(year) {
|
|
297
|
-
// disable if the year is greater than maxDate lower than minDate
|
|
298
|
-
if (year === undefined ||
|
|
299
|
-
year === null ||
|
|
300
|
-
(this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||
|
|
301
|
-
(this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))) {
|
|
302
|
-
return false;
|
|
303
|
-
}
|
|
304
|
-
// enable if it reaches here and there's no filter defined
|
|
305
|
-
if (!this.dateFilter) {
|
|
306
|
-
return true;
|
|
307
|
-
}
|
|
308
|
-
const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);
|
|
309
|
-
// If any date in the year is enabled count the year as enabled.
|
|
310
|
-
for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) === year; date = this.dateTimeAdapter.addCalendarDays(date, 1)) {
|
|
311
|
-
if (this.dateFilter(date)) {
|
|
312
|
-
return true;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
return false;
|
|
316
|
-
}
|
|
317
|
-
isSameYearList(date1, date2) {
|
|
318
|
-
return (Math.floor(this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)) ===
|
|
319
|
-
Math.floor(this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS)));
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Get a valid date object
|
|
323
|
-
*/
|
|
324
|
-
getValidDate(obj) {
|
|
325
|
-
return this.dateTimeAdapter.isDateInstance(obj) &&
|
|
326
|
-
this.dateTimeAdapter.isValid(obj)
|
|
327
|
-
? obj
|
|
328
|
-
: null;
|
|
329
|
-
}
|
|
330
|
-
focusActiveCell() {
|
|
331
|
-
this.calendarBodyElm.focusActiveCell();
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
OwlMultiYearViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OwlMultiYearViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.OwlDateTimeIntl }, { token: i2.DateTimeAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
-
OwlMultiYearViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: OwlMultiYearViewComponent, selector: "ofe-owl-date-time-multi-year-view", inputs: { selectMode: "selectMode", selected: "selected", selecteds: "selecteds", pickerMoment: "pickerMoment", dateFilter: "dateFilter", minDate: "minDate", maxDate: "maxDate" }, outputs: { monthChange: "monthChange", yearSelected: "yearSelected", pickerMomentChange: "pickerMomentChange", keyboardEnter: "keyboardEnter" }, host: { properties: { "class.owl-dt-calendar-view": "this.owlDTCalendarView", "class.owl-dt-calendar-multi-year-view": "this.owlDTCalendarMultiYearView" } }, viewQueries: [{ propertyName: "calendarBodyElm", first: true, predicate: OwlCalendarBodyComponent, descendants: true, static: true }], ngImport: i0, template: "<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"prevYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n width=\"100%\"\n height=\"100%\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{ tableHeader }}</th>\n </tr>\n </thead>\n <tbody\n ofe-owl-date-time-calendar-body\n role=\"grid\"\n [rows]=\"years\"\n [numCols]=\"3\"\n [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (cellSelected)=\"selectCalendarCell($event)\"\n ></tbody>\n</table>\n<button\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\"\n tabindex=\"0\"\n (click)=\"nextYearList($event)\"\n>\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n xml:space=\"preserve\"\n >\n <path\n style=\"fill-rule: evenodd; clip-rule: evenodd\"\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n />\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n", styles: [""], components: [{ type: i3.OwlCalendarBodyComponent, selector: "[ofe-owl-date-time-calendar-body]", inputs: ["activeCell", "rows", "numCols", "cellRatio", "todayValue", "selectedValues", "selectMode"], outputs: ["cellSelected"], exportAs: ["owlDateTimeCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OwlMultiYearViewComponent, decorators: [{
|
|
337
|
-
type: Component,
|
|
338
|
-
args: [{
|
|
339
|
-
selector: 'ofe-owl-date-time-multi-year-view',
|
|
340
|
-
templateUrl: './calendar-multi-year-view.component.html',
|
|
341
|
-
styleUrls: ['./calendar-multi-year-view.component.scss'],
|
|
342
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
343
|
-
}]
|
|
344
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.OwlDateTimeIntl }, { type: i2.DateTimeAdapter, decorators: [{
|
|
345
|
-
type: Optional
|
|
346
|
-
}] }]; }, propDecorators: { owlDTCalendarView: [{
|
|
347
|
-
type: HostBinding,
|
|
348
|
-
args: ['class.owl-dt-calendar-view']
|
|
349
|
-
}], owlDTCalendarMultiYearView: [{
|
|
350
|
-
type: HostBinding,
|
|
351
|
-
args: ['class.owl-dt-calendar-multi-year-view']
|
|
352
|
-
}], selectMode: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], selected: [{
|
|
355
|
-
type: Input
|
|
356
|
-
}], selecteds: [{
|
|
357
|
-
type: Input
|
|
358
|
-
}], pickerMoment: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], dateFilter: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], minDate: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], maxDate: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], monthChange: [{
|
|
367
|
-
type: Output
|
|
368
|
-
}], yearSelected: [{
|
|
369
|
-
type: Output
|
|
370
|
-
}], pickerMomentChange: [{
|
|
371
|
-
type: Output
|
|
372
|
-
}], keyboardEnter: [{
|
|
373
|
-
type: Output
|
|
374
|
-
}], calendarBodyElm: [{
|
|
375
|
-
type: ViewChild,
|
|
376
|
-
args: [OwlCalendarBodyComponent, { static: true }]
|
|
377
|
-
}] } });
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbXVsdGkteWVhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbmd4LXBpY2stZGF0ZXRpbWUvbGliL2RhdGUtdGltZS9jYWxlbmRhci1tdWx0aS15ZWFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9uZ3gtcGljay1kYXRldGltZS9saWIvZGF0ZS10aW1lL2NhbGVuZGFyLW11bHRpLXllYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxZQUFZLEVBQ1osd0JBQXdCLEVBQ3pCLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsUUFBUSxFQUNULE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUVsRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFRM0IsTUFBTSxPQUFPLHlCQUF5QjtJQXlNcEMsWUFDVSxLQUF3QixFQUN4QixV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T0FBTztzQkFEVixLQUFLO2dCQWdCRixPQUFPO3NCQURWLEtBQUs7Z0JBc0VhLFdBQVc7c0JBQTdCLE1BQU07Z0JBS1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFHWSxrQkFBa0I7c0JBQXBDLE1BQU07Z0JBS1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFJUCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlVGltZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXIvZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJDZWxsLFxuICBPd2xDYWxlbmRhckJvZHlDb21wb25lbnRcbn0gZnJvbSAnLi9jYWxlbmRhci1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RNb2RlIH0gZnJvbSAnLi9kYXRlLXRpbWUuY2xhc3MnO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRU5ELFxuICBFTlRFUixcbiAgSE9NRSxcbiAgTEVGVF9BUlJPVyxcbiAgUEFHRV9ET1dOLFxuICBQQUdFX1VQLFxuICBSSUdIVF9BUlJPVyxcbiAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IE93bERhdGVUaW1lSW50bCB9IGZyb20gJy4vZGF0ZS10aW1lLXBpY2tlci1pbnRsLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1JPVyA9IDM7XG5leHBvcnQgY29uc3QgWUVBUl9ST1dTID0gNztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2ZlLW93bC1kYXRlLXRpbWUtbXVsdGkteWVhci12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLW11bHRpLXllYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLW11bHRpLXllYXItdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBPd2xNdWx0aVllYXJWaWV3Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3dsLWR0LWNhbGVuZGFyLXZpZXcnKSBnZXQgb3dsRFRDYWxlbmRhclZpZXcoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm93bC1kdC1jYWxlbmRhci1tdWx0aS15ZWFyLXZpZXcnKVxuICBnZXQgb3dsRFRDYWxlbmRhck11bHRpWWVhclZpZXcoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbGVjdCBtb2RlIG9mIHRoZSBwaWNrZXI7XG4gICAqICovXG4gIHByaXZhdGUgX3NlbGVjdE1vZGU6IFNlbGVjdE1vZGUgPSAnc2luZ2xlJztcbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdE1vZGUoKTogU2VsZWN0TW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdE1vZGU7XG4gIH1cblxuICBzZXQgc2VsZWN0TW9kZSh2YWw6IFNlbGVjdE1vZGUpIHtcbiAgICB0aGlzLl9zZWxlY3RNb2RlID0gdmFsO1xuICAgIGlmICh0aGlzLmluaXRpYXRlZCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZFllYXJzKCk7XG4gICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUuICovXG4gIHByaXZhdGUgX3NlbGVjdGVkOiBUIHwgbnVsbDtcbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgY29uc3Qgb2xkU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZDtcbiAgICB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMuZ2V0VmFsaWREYXRlKHZhbHVlKTtcblxuICAgIGlmICghdGhpcy5kYXRlVGltZUFkYXB0ZXIuaXNTYW1lRGF5KG9sZFNlbGVjdGVkLCB0aGlzLl9zZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRZZWFycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdGVkczogVFtdID0gW107XG5cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZHM7XG4gIH1cblxuICBzZXQgc2VsZWN0ZWRzKHZhbHVlczogVFtdKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRzID0gdmFsdWVzLm1hcCgodikgPT4ge1xuICAgICAgdiA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHYpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlKHYpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRZZWFycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGlja2VyTW9tZW50OiBUIHwgbnVsbDtcbiAgQElucHV0KClcbiAgZ2V0IHBpY2tlck1vbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGlja2VyTW9tZW50O1xuICB9XG5cbiAgc2V0IHBpY2tlck1vbWVudCh2YWx1ZTogVCkge1xuICAgIGNvbnN0IG9sZE1vbWVudCA9IHRoaXMuX3BpY2tlck1vbWVudDtcbiAgICB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB0aGlzLl9waWNrZXJNb21lbnQgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSkgfHwgdGhpcy5kYXRlVGltZUFkYXB0ZXIubm93KCk7XG5cbiAgICBpZiAoXG4gICAgICBvbGRNb21lbnQgJiZcbiAgICAgIHRoaXMuX3BpY2tlck1vbWVudCAmJlxuICAgICAgIXRoaXMuaXNTYW1lWWVhckxpc3Qob2xkTW9tZW50LCB0aGlzLl9waWNrZXJNb21lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlWWVhckxpc3QoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciB3aGljaCBkYXRlcyBhcmUgc2VsZWN0YWJsZVxuICAgKiAqL1xuICBwcml2YXRlIF9kYXRlRmlsdGVyOiAoZGF0ZTogVCkgPT4gYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZ2V0IGRhdGVGaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVGaWx0ZXI7XG4gIH1cblxuICBzZXQgZGF0ZUZpbHRlcihmaWx0ZXI6IChkYXRlOiBUKSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGF0ZUZpbHRlciA9IGZpbHRlcjtcbiAgICBpZiAodGhpcy5pbml0aWF0ZWQpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVZZWFyTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgbWluaW11bSBzZWxlY3RhYmxlIGRhdGUuICovXG4gIHByaXZhdGUgX21pbkRhdGU6IFQgfCBudWxsO1xuICBASW5wdXQoKVxuICBnZXQgbWluRGF0ZSgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICBzZXQgbWluRGF0ZSh2YWx1ZTogVCB8IG51bGwpIHtcbiAgICB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB0aGlzLl9taW5EYXRlID0gdGhpcy5nZXRWYWxpZERhdGUodmFsdWUpO1xuICAgIGlmICh0aGlzLmluaXRpYXRlZCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVllYXJMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBtYXhpbXVtIHNlbGVjdGFibGUgZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWF4RGF0ZTogVCB8IG51bGw7XG4gIEBJbnB1dCgpXG4gIGdldCBtYXhEYXRlKCk6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBUIHwgbnVsbCkge1xuICAgIHZhbHVlID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIHRoaXMuX21heERhdGUgPSB0aGlzLmdldFZhbGlkRGF0ZSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuaW5pdGlhdGVkKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlWWVhckxpc3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF90b2RheVllYXI6IG51bWJlcjtcbiAgZ2V0IHRvZGF5WWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b2RheVllYXI7XG4gIH1cblxuICBwcml2YXRlIF95ZWFyczogQ2FsZW5kYXJDZWxsW11bXTtcbiAgZ2V0IHllYXJzKCkge1xuICAgIHJldHVybiB0aGlzLl95ZWFycztcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdGVkWWVhcnM6IG51bWJlcltdO1xuICBnZXQgc2VsZWN0ZWRZZWFycygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkWWVhcnM7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYXRlZCA9IGZhbHNlO1xuXG4gIGdldCBpc0luU2luZ2xlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RNb2RlID09PSAnc2luZ2xlJztcbiAgfVxuXG4gIGdldCBpc0luUmFuZ2VNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNlbGVjdE1vZGUgPT09ICdyYW5nZScgfHxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlRnJvbScgfHxcbiAgICAgIHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3JhbmdlVG8nXG4gICAgKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVDZWxsKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3BpY2tlck1vbWVudCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcih0aGlzLl9waWNrZXJNb21lbnQpICVcbiAgICAgICAgKFlFQVJTX1BFUl9ST1cgKiBZRUFSX1JPV1MpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUhlYWRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl95ZWFycyAmJiB0aGlzLl95ZWFycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5feWVhcnNbMF1bMF0uZGlzcGxheVZhbHVlfSB+ICR7XG4gICAgICAgIHRoaXMuX3llYXJzW1lFQVJfUk9XUyAtIDFdW1lFQVJTX1BFUl9ST1cgLSAxXS5kaXNwbGF5VmFsdWVcbiAgICAgIH1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwcmV2QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXJJbnRsLnByZXZNdWx0aVllYXJMYWJlbDtcbiAgfVxuXG4gIGdldCBuZXh0QnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5waWNrZXJJbnRsLm5leHRNdWx0aVllYXJMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZFxuICAgKiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCB5ZWFyLiBUaGlzIGRvZXNuJ3QgaW1wbHkgYSBjaGFuZ2Ugb24gdGhlIHNlbGVjdGVkIGRhdGVcbiAgICogKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHllYXJTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiBhbnkgZGF0ZSBpcyBhY3RpdmF0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwaWNrZXJNb21lbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgVFxuICA+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdXNlIGtleWJvYXJkIGVudGVyIHRvIHNlbGVjdCBhIGNhbGVuZGFyIGNlbGwgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGtleWJvYXJkRW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqIFRoZSBib2R5IG9mIGNhbGVuZGFyIHRhYmxlICovXG4gIEBWaWV3Q2hpbGQoT3dsQ2FsZW5kYXJCb2R5Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjYWxlbmRhckJvZHlFbG06IE93bENhbGVuZGFyQm9keUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBpY2tlckludGw6IE93bERhdGVUaW1lSW50bCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhdGVUaW1lQWRhcHRlcjogRGF0ZVRpbWVBZGFwdGVyPFQ+XG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3RvZGF5WWVhciA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5kYXRlVGltZUFkYXB0ZXIubm93KCkpO1xuICAgIHRoaXMuZ2VuZXJhdGVZZWFyTGlzdCgpO1xuICAgIHRoaXMuaW5pdGlhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBjYWxlbmRhckNlbGwgc2VsZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RDYWxlbmRhckNlbGwoY2VsbDogQ2FsZW5kYXJDZWxsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RZZWFyKGNlbGwudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RZZWFyKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMueWVhclNlbGVjdGVkLmVtaXQodGhpcy5kYXRlVGltZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gICAgY29uc3QgZmlyc3REYXRlT2ZNb250aCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoXG4gICAgICB5ZWFyLFxuICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodGhpcy5waWNrZXJNb21lbnQpLFxuICAgICAgMVxuICAgICk7XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChcbiAgICAgIGZpcnN0RGF0ZU9mTW9udGhcbiAgICApO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuY3JlYXRlRGF0ZShcbiAgICAgIHllYXIsXG4gICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0aGlzLnBpY2tlck1vbWVudCksXG4gICAgICBNYXRoLm1pbihkYXlzSW5Nb250aCwgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLnBpY2tlck1vbWVudCkpLFxuICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0SG91cnModGhpcy5waWNrZXJNb21lbnQpLFxuICAgICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0TWludXRlcyh0aGlzLnBpY2tlck1vbWVudCksXG4gICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRTZWNvbmRzKHRoaXMucGlja2VyTW9tZW50KVxuICAgICk7XG5cbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBwcmV2aW91cyB5ZWFyIGxpc3RcbiAgICogKi9cbiAgcHVibGljIHByZXZZZWFyTGlzdChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcGlja2VyTW9tZW50ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuYWRkQ2FsZW5kYXJZZWFycyhcbiAgICAgIHRoaXMucGlja2VyTW9tZW50LFxuICAgICAgLTEgKiBZRUFSX1JPV1MgKiBZRUFSU19QRVJfUk9XXG4gICAgKTtcbiAgICB0aGlzLmdlbmVyYXRlWWVhckxpc3QoKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBuZXh0IHllYXIgbGlzdFxuICAgKiAqL1xuICBwdWJsaWMgbmV4dFllYXJMaXN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9waWNrZXJNb21lbnQgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKFxuICAgICAgdGhpcy5waWNrZXJNb21lbnQsXG4gICAgICBZRUFSX1JPV1MgKiBZRUFSU19QRVJfUk9XXG4gICAgKTtcbiAgICB0aGlzLmdlbmVyYXRlWWVhckxpc3QoKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlWWVhckxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5feWVhcnMgPSBbXTtcblxuICAgIGNvbnN0IHBpY2tlck1vbWVudFllYXIgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMuX3BpY2tlck1vbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gcGlja2VyTW9tZW50WWVhciAlIChZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWUVBUl9ST1dTOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdyA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IFlFQVJTX1BFUl9ST1c7IGorKykge1xuICAgICAgICBjb25zdCB5ZWFyID0gcGlja2VyTW9tZW50WWVhciAtIG9mZnNldCArIChqICsgaSAqIFlFQVJTX1BFUl9ST1cpO1xuICAgICAgICBjb25zdCB5ZWFyQ2VsbCA9IHRoaXMuY3JlYXRlWWVhckNlbGwoeWVhcik7XG4gICAgICAgIHJvdy5wdXNoKHllYXJDZWxsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5feWVhcnMucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBwcmV2aW91cyBwZXJpb2QgYnV0dG9uIGlzIGVuYWJsZWQuICovXG4gIHB1YmxpYyBwcmV2aW91c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLm1pbkRhdGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMubWluRGF0ZSB8fCAhdGhpcy5pc1NhbWVZZWFyTGlzdCh0aGlzLl9waWNrZXJNb21lbnQsIHRoaXMubWluRGF0ZSlcbiAgICApO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG5leHQgcGVyaW9kIGJ1dHRvbiBpcyBlbmFibGVkLiAqL1xuICBwdWJsaWMgbmV4dEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLm1heERhdGUgfHwgIXRoaXMuaXNTYW1lWWVhckxpc3QodGhpcy5fcGlja2VyTW9tZW50LCB0aGlzLm1heERhdGUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDYWxlbmRhcktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgbW9tZW50O1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgLy8gbWludXMgMSB5ZWFyXG4gICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgIG1vbWVudCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnModGhpcy5fcGlja2VyTW9tZW50LCAtMSk7XG4gICAgICAgIHRoaXMucGlja2VyTW9tZW50Q2hhbmdlLmVtaXQobW9tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIGFkZCAxIHllYXJcbiAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgIG1vbWVudCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnModGhpcy5fcGlja2VyTW9tZW50LCAxKTtcbiAgICAgICAgdGhpcy5waWNrZXJNb21lbnRDaGFuZ2UuZW1pdChtb21lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gbWludXMgMyB5ZWFyc1xuICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgbW9tZW50ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuYWRkQ2FsZW5kYXJZZWFycyhcbiAgICAgICAgICB0aGlzLl9waWNrZXJNb21lbnQsXG4gICAgICAgICAgLTEgKiBZRUFSU19QRVJfUk9XXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGlja2VyTW9tZW50Q2hhbmdlLmVtaXQobW9tZW50KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIGFkZCAzIHllYXJzXG4gICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgIG1vbWVudCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnMoXG4gICAgICAgICAgdGhpcy5fcGlja2VyTW9tZW50LFxuICAgICAgICAgIFlFQVJTX1BFUl9ST1dcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5waWNrZXJNb21lbnRDaGFuZ2UuZW1pdChtb21lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gZ28gdG8gdGhlIGZpcnN0IHllYXIgb2YgdGhlIHllYXIgcGFnZVxuICAgICAgY2FzZSBIT01FOlxuICAgICAgICBtb21lbnQgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKFxuICAgICAgICAgIHRoaXMuX3BpY2tlck1vbWVudCxcbiAgICAgICAgICAtdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcih0aGlzLl9waWNrZXJNb21lbnQpICVcbiAgICAgICAgICAgIChZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBpY2tlck1vbWVudENoYW5nZS5lbWl0KG1vbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBnbyB0byB0aGUgbGFzdCB5ZWFyIG9mIHRoZSB5ZWFyIHBhZ2VcbiAgICAgIGNhc2UgRU5EOlxuICAgICAgICBtb21lbnQgPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKFxuICAgICAgICAgIHRoaXMuX3BpY2tlck1vbWVudCxcbiAgICAgICAgICBZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTIC1cbiAgICAgICAgICAgICh0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMuX3BpY2tlck1vbWVudCkgJVxuICAgICAgICAgICAgICAoWUVBUlNfUEVSX1JPVyAqIFlFQVJfUk9XUykpIC1cbiAgICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5waWNrZXJNb21lbnRDaGFuZ2UuZW1pdChtb21lbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gbWludXMgMSB5ZWFyIHBhZ2UgKG9yIDEwIHllYXIgcGFnZXMpXG4gICAgICBjYXNlIFBBR0VfVVA6XG4gICAgICAgIG1vbWVudCA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnMoXG4gICAgICAgICAgdGhpcy5waWNrZXJNb21lbnQsXG4gICAgICAgICAgZXZlbnQuYWx0S2V5XG4gICAgICAgICAgICA/IC0xMCAqIChZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTKVxuICAgICAgICAgICAgOiAtMSAqIChZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBpY2tlck1vbWVudENoYW5nZS5lbWl0KG1vbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBhZGQgMSB5ZWFyIHBhZ2UgKG9yIDEwIHllYXIgcGFnZXMpXG4gICAgICBjYXNlIFBBR0VfRE9XTjpcbiAgICAgICAgbW9tZW50ID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuYWRkQ2FsZW5kYXJZZWFycyhcbiAgICAgICAgICB0aGlzLnBpY2tlck1vbWVudCxcbiAgICAgICAgICBldmVudC5hbHRLZXlcbiAgICAgICAgICAgID8gMTAgKiAoWUVBUlNfUEVSX1JPVyAqIFlFQVJfUk9XUylcbiAgICAgICAgICAgIDogWUVBUlNfUEVSX1JPVyAqIFlFQVJfUk9XU1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBpY2tlck1vbWVudENoYW5nZS5lbWl0KG1vbWVudCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEVOVEVSOlxuICAgICAgICB0aGlzLnNlbGVjdFllYXIodGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcih0aGlzLl9waWNrZXJNb21lbnQpKTtcbiAgICAgICAgdGhpcy5rZXlib2FyZEVudGVyLmVtaXQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzQWN0aXZlQ2VsbCgpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBDYWxlbmRhckNlbGwgZm9yIHRoZSBnaXZlbiB5ZWFyLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVZZWFyQ2VsbCh5ZWFyOiBudW1iZXIpOiBDYWxlbmRhckNlbGwge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZU9mWWVhciA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMCwgMSk7XG4gICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhck5hbWUoc3RhcnREYXRlT2ZZZWFyKTtcbiAgICBjb25zdCBjZWxsQ2xhc3MgPSAnb3dsLWR0LXllYXItJyArIHllYXI7XG4gICAgcmV0dXJuIG5ldyBDYWxlbmRhckNlbGwoXG4gICAgICB5ZWFyLFxuICAgICAgeWVhci50b1N0cmluZygpLFxuICAgICAgYXJpYUxhYmVsLFxuICAgICAgdGhpcy5pc1llYXJFbmFibGVkKHllYXIpLFxuICAgICAgZmFsc2UsXG4gICAgICBjZWxsQ2xhc3NcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZFllYXJzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkWWVhcnMgPSBbXTtcblxuICAgIGlmICh0aGlzLmlzSW5TaW5nbGVNb2RlICYmIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkWWVhcnNbMF0gPSB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSW5SYW5nZU1vZGUgJiYgdGhpcy5zZWxlY3RlZHMpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkWWVhcnMgPSB0aGlzLnNlbGVjdGVkcy5tYXAoKHNlbGVjdGVkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHNlbGVjdGVkKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHNlbGVjdGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGdpdmVuIHllYXIgaXMgZW5hYmxlZC4gKi9cbiAgcHJpdmF0ZSBpc1llYXJFbmFibGVkKHllYXI6IG51bWJlcikge1xuICAgIC8vIGRpc2FibGUgaWYgdGhlIHllYXIgaXMgZ3JlYXRlciB0aGFuIG1heERhdGUgbG93ZXIgdGhhbiBtaW5EYXRlXG4gICAgaWYgKFxuICAgICAgeWVhciA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB5ZWFyID09PSBudWxsIHx8XG4gICAgICAodGhpcy5tYXhEYXRlICYmIHllYXIgPiB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMubWF4RGF0ZSkpIHx8XG4gICAgICAodGhpcy5taW5EYXRlICYmIHllYXIgPCB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKHRoaXMubWluRGF0ZSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZW5hYmxlIGlmIGl0IHJlYWNoZXMgaGVyZSBhbmQgdGhlcmUncyBubyBmaWx0ZXIgZGVmaW5lZFxuICAgIGlmICghdGhpcy5kYXRlRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdE9mWWVhciA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMCwgMSk7XG5cbiAgICAvLyBJZiBhbnkgZGF0ZSBpbiB0aGUgeWVhciBpcyBlbmFibGVkIGNvdW50IHRoZSB5ZWFyIGFzIGVuYWJsZWQuXG4gICAgZm9yIChcbiAgICAgIGxldCBkYXRlID0gZmlyc3RPZlllYXI7XG4gICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKGRhdGUpID09PSB5ZWFyO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCAxKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcihkYXRlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzU2FtZVllYXJMaXN0KGRhdGUxOiBULCBkYXRlMjogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBNYXRoLmZsb29yKFxuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlci5nZXRZZWFyKGRhdGUxKSAvIChZRUFSU19QRVJfUk9XICogWUVBUl9ST1dTKVxuICAgICAgKSA9PT1cbiAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIoZGF0ZTIpIC8gKFlFQVJTX1BFUl9ST1cgKiBZRUFSX1JPV1MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSB2YWxpZCBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWxpZERhdGUob2JqOiBhbnkpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzRGF0ZUluc3RhbmNlKG9iaikgJiZcbiAgICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQob2JqKVxuICAgICAgPyBvYmpcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNBY3RpdmVDZWxsKCkge1xuICAgIHRoaXMuY2FsZW5kYXJCb2R5RWxtLmZvY3VzQWN0aXZlQ2VsbCgpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwib3dsLWR0LWNvbnRyb2wtYnV0dG9uIG93bC1kdC1jb250cm9sLWFycm93LWJ1dHRvblwiXG4gIFtkaXNhYmxlZF09XCIhcHJldmlvdXNFbmFibGVkKClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInByZXZCdXR0b25MYWJlbFwiXG4gIHR5cGU9XCJidXR0b25cIlxuICB0YWJpbmRleD1cIjBcIlxuICAoY2xpY2spPVwicHJldlllYXJMaXN0KCRldmVudClcIlxuPlxuICA8c3BhbiBjbGFzcz1cIm93bC1kdC1jb250cm9sLWJ1dHRvbi1jb250ZW50XCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDwhLS0gPGVkaXRvci1mb2xkIGRlc2M9XCJTVkcgQXJyb3cgTGVmdFwiPiAtLT5cbiAgICA8c3ZnXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICB2ZXJzaW9uPVwiMS4xXCJcbiAgICAgIHg9XCIwcHhcIlxuICAgICAgeT1cIjBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI1MC43MzggMjUwLjczOFwiXG4gICAgICBzdHlsZT1cImVuYWJsZS1iYWNrZ3JvdW5kOiBuZXcgMCAwIDI1MC43MzggMjUwLjczOFwiXG4gICAgICB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgc3R5bGU9XCJmaWxsLXJ1bGU6IGV2ZW5vZGQ7IGNsaXAtcnVsZTogZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNOTYuNjMzLDEyNS4zNjlsOTUuMDUzLTk0LjUzM2M3LjEwMS03LjA1NSw3LjEwMS0xOC40OTIsMC0yNS41NDYgICBjLTcuMS03LjA1NC0xOC42MTMtNy4wNTQtMjUuNzE0LDBMNTguOTg5LDExMS42ODljLTMuNzg0LDMuNzU5LTUuNDg3LDguNzU5LTUuMjM4LDEzLjY4Yy0wLjI0OSw0LjkyMiwxLjQ1NCw5LjkyMSw1LjIzOCwxMy42ODEgICBsMTA2Ljk4MywxMDYuMzk4YzcuMTAxLDcuMDU1LDE4LjYxMyw3LjA1NSwyNS43MTQsMGM3LjEwMS03LjA1NCw3LjEwMS0xOC40OTEsMC0yNS41NDRMOTYuNjMzLDEyNS4zNjl6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICAgPCEtLSA8L2VkaXRvci1mb2xkPiAtLT5cbiAgPC9zcGFuPlxuPC9idXR0b24+XG48dGFibGUgY2xhc3M9XCJvd2wtZHQtY2FsZW5kYXItdGFibGUgb3dsLWR0LWNhbGVuZGFyLW11bHRpLXllYXItdGFibGVcIj5cbiAgPHRoZWFkIGNsYXNzPVwib3dsLWR0LWNhbGVuZGFyLWhlYWRlclwiPlxuICAgIDx0cj5cbiAgICAgIDx0aCBjb2xzcGFuPVwiM1wiPnt7IHRhYmxlSGVhZGVyIH19PC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuICA8dGJvZHlcbiAgICBvZmUtb3dsLWRhdGUtdGltZS1jYWxlbmRhci1ib2R5XG4gICAgcm9sZT1cImdyaWRcIlxuICAgIFtyb3dzXT1cInllYXJzXCJcbiAgICBbbnVtQ29sc109XCIzXCJcbiAgICBbY2VsbFJhdGlvXT1cIjMgLyA3XCJcbiAgICBbYWN0aXZlQ2VsbF09XCJhY3RpdmVDZWxsXCJcbiAgICBbdG9kYXlWYWx1ZV09XCJ0b2RheVllYXJcIlxuICAgIFtzZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZFllYXJzXCJcbiAgICBbc2VsZWN0TW9kZV09XCJzZWxlY3RNb2RlXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVDYWxlbmRhcktleWRvd24oJGV2ZW50KVwiXG4gICAgKGNlbGxTZWxlY3RlZCk9XCJzZWxlY3RDYWxlbmRhckNlbGwoJGV2ZW50KVwiXG4gID48L3Rib2R5PlxuPC90YWJsZT5cbjxidXR0b25cbiAgY2xhc3M9XCJvd2wtZHQtY29udHJvbC1idXR0b24gb3dsLWR0LWNvbnRyb2wtYXJyb3ctYnV0dG9uXCJcbiAgW2Rpc2FibGVkXT1cIiFuZXh0RW5hYmxlZCgpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJuZXh0QnV0dG9uTGFiZWxcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgdGFiaW5kZXg9XCIwXCJcbiAgKGNsaWNrKT1cIm5leHRZZWFyTGlzdCgkZXZlbnQpXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJvd2wtZHQtY29udHJvbC1idXR0b24tY29udGVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8IS0tIDxlZGl0b3ItZm9sZCBkZXNjPVwiU1ZHIEFycm93IFJpZ2h0XCI+IC0tPlxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgeD1cIjBweFwiXG4gICAgICB5PVwiMHB4XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjUwLjczOCAyNTAuNzM4XCJcbiAgICAgIHN0eWxlPVwiZW5hYmxlLWJhY2tncm91bmQ6IG5ldyAwIDAgMjUwLjczOCAyNTAuNzM4XCJcbiAgICAgIHhtbDpzcGFjZT1cInByZXNlcnZlXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBzdHlsZT1cImZpbGwtcnVsZTogZXZlbm9kZDsgY2xpcC1ydWxlOiBldmVub2RkXCJcbiAgICAgICAgZD1cIk0xOTEuNzUsMTExLjY4OUw4NC43NjYsNS4yOTFjLTcuMS03LjA1NS0xOC42MTMtNy4wNTUtMjUuNzEzLDBcbiAgICAgICAgICAgICAgICBjLTcuMTAxLDcuMDU0LTcuMTAxLDE4LjQ5LDAsMjUuNTQ0bDk1LjA1Myw5NC41MzRsLTk1LjA1Myw5NC41MzNjLTcuMTAxLDcuMDU0LTcuMTAxLDE4LjQ5MSwwLDI1LjU0NVxuICAgICAgICAgICAgICAgIGM3LjEsNy4wNTQsMTguNjEzLDcuMDU0LDI1LjcxMywwTDE5MS43NSwxMzkuMDVjMy43ODQtMy43NTksNS40ODctOC43NTksNS4yMzgtMTMuNjgxXG4gICAgICAgICAgICAgICAgQzE5Ny4yMzcsMTIwLjQ0NywxOTUuNTM0LDExNS40NDgsMTkxLjc1LDExMS42ODl6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICAgPCEtLSA8L2VkaXRvci1mb2xkPiAtLT5cbiAgPC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|