@openmrs/ngx-formentry 5.0.1-pre.351 → 5.0.1-pre.358
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/components/afe-ng-select.component.d.ts +1 -1
- package/components/appointments-overview/appointments-overview.component.d.ts +1 -1
- package/components/check-box/checkbox.component.d.ts +1 -1
- package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +1 -1
- package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +1 -1
- package/components/date-time-picker/date-picker/date-picker.component.d.ts +1 -1
- package/components/date-time-picker/date-time-picker.component.d.ts +1 -1
- package/components/date-time-picker/time-picker/time-picker.component.d.ts +1 -1
- package/components/file-upload/file-upload.component.d.ts +1 -1
- package/components/input/input.directive.d.ts +1 -1
- package/components/input/label.component.d.ts +1 -1
- package/components/input/text-area.directive.d.ts +1 -1
- package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +1 -1
- package/components/ngx-pick-datetime/lib/date-time/timer.component.d.ts +1 -1
- package/components/ngx-remote-select/ngx-remote-select.component.d.ts +1 -1
- package/components/ngx-tabset/components/ngx-tab-set.component.d.ts +1 -1
- package/components/ngx-tabset/components/tab.component.d.ts +1 -1
- package/components/ngx-tabset/directives/hover-class.directive.d.ts +1 -1
- package/components/number-input/number-input.component.d.ts +1 -1
- package/components/radio-button/radio.component.d.ts +1 -1
- package/components/select/select.component.d.ts +1 -1
- package/components/workspace-launcher/workspace-launcher.component.d.ts +1 -1
- package/{esm2020 → esm2022}/components/afe-ng-select.component.mjs +12 -12
- package/{esm2020 → esm2022}/components/appointments-overview/appointments-overview.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/check-box/checkbox.component.mjs +10 -10
- package/{esm2020 → esm2022}/components/check-box/checkbox.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/custom-component-wrapper/custom-component-wrapper..module.mjs +5 -5
- package/{esm2020 → esm2022}/components/custom-component-wrapper/custom-component-wrapper.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/custom-control-wrapper/custom-control-wrapper..module.mjs +5 -5
- package/esm2022/components/custom-control-wrapper/custom-control-wrapper.component.mjs +68 -0
- package/{esm2020 → esm2022}/components/date-time-picker/date-picker/date-picker.component.mjs +4 -4
- package/esm2022/components/date-time-picker/date-time-picker.component.mjs +115 -0
- package/{esm2020 → esm2022}/components/date-time-picker/date-time-picker.module.mjs +13 -13
- package/{esm2020 → esm2022}/components/date-time-picker/picker-modal/modal.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/date-time-picker/pipes/moment.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/components/date-time-picker/time-picker/time-picker.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/file-upload/file-upload.component.mjs +10 -10
- package/{esm2020 → esm2022}/components/file-upload/file-upload.module.mjs +13 -13
- package/{esm2020 → esm2022}/components/file-upload/secure.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/components/input/input.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/input/input.module.mjs +5 -5
- package/esm2022/components/input/label.component.mjs +263 -0
- package/{esm2020 → esm2022}/components/input/text-area.directive.mjs +4 -4
- package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +76 -0
- package/{esm2020 → esm2022}/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs +13 -13
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs +11 -11
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +7 -7
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs +33 -33
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +4 -4
- package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +243 -0
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs +4 -4
- package/esm2022/components/ngx-remote-select/ngx-remote-select.component.mjs +132 -0
- package/{esm2020 → esm2022}/components/ngx-remote-select/ngx-remote-select.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/ngx-tabset/components/ngx-tab-set.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-tabset/components/tab.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-tabset/directives/hover-class.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/ngx-tabset/modules/ngx-tabset.module.mjs +5 -5
- package/esm2022/components/number-input/number-input.component.mjs +248 -0
- package/{esm2020 → esm2022}/components/number-input/number-input.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/number-input/number.directive.mjs +4 -4
- package/esm2022/components/radio-button/radio.component.mjs +96 -0
- package/{esm2020 → esm2022}/components/radio-button/radio.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/select/optgroup.directive.mjs +4 -4
- package/{esm2020 → esm2022}/components/select/option.directive.mjs +4 -4
- package/esm2022/components/select/select.component.mjs +182 -0
- package/{esm2020 → esm2022}/components/select/select.module.mjs +5 -5
- package/{esm2020 → esm2022}/components/workspace-launcher/workspace-launcher.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/workspace-launcher/workspace-launcher.module.mjs +5 -5
- package/{esm2020 → esm2022}/form-entry/data-sources/data-sources.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/directives/collapse.directive.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/directives/historical-value.directive.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/error-renderer/error-renderer.component.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/expression-runner/expression-runner.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-entry.module.mjs +75 -75
- package/{esm2020 → esm2022}/form-entry/form-factory/control-relations.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/form-control.service.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/form.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/hiders-disablers.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/question.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/show-messages.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-factory/validation.factory.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/form-renderer/form-renderer.component.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/helpers/historical-expression-helper-service.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/helpers/historical-field-helper-service.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/helpers/js-expression-helper.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/pipes/time-ago.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/services/debug-mode.service.mjs +4 -4
- package/esm2022/form-entry/services/form-errors.service.mjs +21 -0
- package/{esm2020 → esm2022}/form-entry/services/form-schema-compiler.service.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/services/historical-encounter-data.service.mjs +4 -4
- package/esm2022/form-entry/validators/validations.mjs +5 -0
- package/esm2022/form-entry/value-adapters/diagnosis.adapter.mjs +241 -0
- package/{esm2020 → esm2022}/form-entry/value-adapters/encounter.adapter.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/value-adapters/obs-adapter-helper.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/value-adapters/obs.adapter.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/value-adapters/order.adapter.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/value-adapters/patient-identifier.adapter.mjs +4 -4
- package/{esm2020 → esm2022}/form-entry/value-adapters/person-attribute.adapter.mjs +4 -4
- package/{esm2020 → esm2022}/shared.module.mjs +5 -5
- package/{fesm2020 → fesm2022}/openmrs-ngx-formentry.mjs +530 -530
- package/{fesm2020 → fesm2022}/openmrs-ngx-formentry.mjs.map +1 -1
- package/form-entry/directives/collapse.directive.d.ts +1 -1
- package/form-entry/directives/historical-value.directive.d.ts +1 -1
- package/form-entry/error-renderer/error-renderer.component.d.ts +1 -1
- package/form-entry/form-renderer/form-renderer.component.d.ts +1 -1
- package/package.json +14 -20
- package/esm2020/components/custom-control-wrapper/custom-control-wrapper.component.mjs +0 -68
- package/esm2020/components/date-time-picker/date-time-picker.component.mjs +0 -115
- package/esm2020/components/input/label.component.mjs +0 -263
- package/esm2020/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +0 -76
- package/esm2020/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +0 -243
- package/esm2020/components/ngx-remote-select/ngx-remote-select.component.mjs +0 -132
- package/esm2020/components/number-input/number-input.component.mjs +0 -248
- package/esm2020/components/radio-button/radio.component.mjs +0 -96
- package/esm2020/components/select/select.component.mjs +0 -182
- package/esm2020/form-entry/services/form-errors.service.mjs +0 -21
- package/esm2020/form-entry/validators/validations.mjs +0 -5
- package/esm2020/form-entry/value-adapters/diagnosis.adapter.mjs +0 -241
- package/fesm2015/openmrs-ngx-formentry.mjs +0 -14935
- package/fesm2015/openmrs-ngx-formentry.mjs.map +0 -1
- /package/{esm2020 → esm2022}/abstract-controls-extension/afe-control-type.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-array.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-control.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/afe-form-group.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/control-extensions.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/index.mjs +0 -0
- /package/{esm2020 → esm2022}/abstract-controls-extension/value-change.listener.mjs +0 -0
- /package/{esm2020 → esm2022}/change-tracking/control-relation.mjs +0 -0
- /package/{esm2020 → esm2022}/change-tracking/control-relations.mjs +0 -0
- /package/{esm2020 → esm2022}/components/date-time-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/components/ngx-pick-datetime/lib/utils/object.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-alerts/alert-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-alerts/can-generate-alert.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-calculators/can-calculate.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/can-disable.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/can-hide.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/disabler-helper.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/control-hiders-disablers/hider-helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/data-sources/dummy-data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/directives/collapse-animations.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/form-factory/form-node.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/form-factory/form.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/form-factory/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/helpers/risk-dataset-table.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/checkbox.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/conditional-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/custom-control-question.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/date-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/date-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/diagnosis-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/file-upload-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/group-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/base-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/checkbox-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/date-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/diagnosis-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/file-upload-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/group-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/multi-select-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/nested-questions.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/radio-button-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/repeating-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/select-option.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/select-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/test-order-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/text-area-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/text-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/ui-select-question-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/interfaces/workspace-launcher-options.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/js-expression-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/max-length-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/max-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/min-length-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/min-validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/models.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/multi-select-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/pair.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/question-base.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/radio-button.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/rendering-type.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/repeating-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/select-option.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/select-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/test-order-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/text-area-input-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/text-input-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/ui-select-question.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/validation.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/question-models/workspace-launcher.model.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/conditional-answered.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/conditional-required.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/date.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/future-date-restriction.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/js-expression.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/max-date.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/max-length.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/max.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/min-date.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/min-length.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/min.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/validators/required.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/form-entry/value-adapters/value.adapter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/openmrs-ngx-formentry.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, HostListener, Input, Output, TemplateRef } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "./number.directive";
|
|
6
|
-
/**
|
|
7
|
-
* Used to emit changes performed on number input components.
|
|
8
|
-
*/
|
|
9
|
-
export class NumberChangeEvent {
|
|
10
|
-
}
|
|
11
|
-
export class NumberInputComponent {
|
|
12
|
-
/**
|
|
13
|
-
* Sets the value attribute on the `input` element.
|
|
14
|
-
*/
|
|
15
|
-
set value(v) {
|
|
16
|
-
if (v === '' || v === null) {
|
|
17
|
-
this._value = null;
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
this._value = Number(v);
|
|
21
|
-
}
|
|
22
|
-
get value() {
|
|
23
|
-
return this._value;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Creates an instance of `Number`.
|
|
27
|
-
*/
|
|
28
|
-
constructor() {
|
|
29
|
-
/**
|
|
30
|
-
* `light` or `dark` number input theme.
|
|
31
|
-
*/
|
|
32
|
-
this.theme = 'dark';
|
|
33
|
-
/**
|
|
34
|
-
* Set to `true` for a disabled number input.
|
|
35
|
-
*/
|
|
36
|
-
this.disabled = false;
|
|
37
|
-
/**
|
|
38
|
-
* Set to `true` for a loading number component.
|
|
39
|
-
*/
|
|
40
|
-
this.skeleton = false;
|
|
41
|
-
/**
|
|
42
|
-
* Set to `true` for an invalid number component.
|
|
43
|
-
*/
|
|
44
|
-
this.invalid = false;
|
|
45
|
-
/**
|
|
46
|
-
* The unique id for the number component.
|
|
47
|
-
*/
|
|
48
|
-
this.id = `number-${NumberInputComponent.numberCount}`;
|
|
49
|
-
/**
|
|
50
|
-
* Number input field render size
|
|
51
|
-
*/
|
|
52
|
-
this.size = 'md';
|
|
53
|
-
/**
|
|
54
|
-
* Sets the min attribute on the `input` element.
|
|
55
|
-
*/
|
|
56
|
-
this.min = null;
|
|
57
|
-
/**
|
|
58
|
-
* Sets the max attribute on the `input` element.
|
|
59
|
-
*/
|
|
60
|
-
this.max = null;
|
|
61
|
-
/**
|
|
62
|
-
* Sets the max length attribute on the `input` element.
|
|
63
|
-
*/
|
|
64
|
-
this.maxlength = null;
|
|
65
|
-
/**
|
|
66
|
-
* Sets the min length attribute on the `input` element.
|
|
67
|
-
*/
|
|
68
|
-
this.minlength = null;
|
|
69
|
-
/**
|
|
70
|
-
* Sets the amount the number controls increment and decrement by.
|
|
71
|
-
*/
|
|
72
|
-
this.step = 1;
|
|
73
|
-
/**
|
|
74
|
-
* Set to `true` to show a warning (contents set by warningText)
|
|
75
|
-
*/
|
|
76
|
-
this.warn = false;
|
|
77
|
-
/**
|
|
78
|
-
* Emits event notifying other classes when a change in state occurs in the input.
|
|
79
|
-
*/
|
|
80
|
-
this.numberChange = new EventEmitter();
|
|
81
|
-
/**
|
|
82
|
-
* Sets the decrement label text
|
|
83
|
-
*/
|
|
84
|
-
this.decrementLabel = 'Decrease';
|
|
85
|
-
/**
|
|
86
|
-
* Sets the increment label text
|
|
87
|
-
*/
|
|
88
|
-
this.incrementLabel = 'Increase';
|
|
89
|
-
this._value = 0;
|
|
90
|
-
/**
|
|
91
|
-
* Called when number input is blurred. Needed to properly implement `ControlValueAccessor`.
|
|
92
|
-
*/
|
|
93
|
-
this.onTouched = () => { };
|
|
94
|
-
/**
|
|
95
|
-
* Method set in `registerOnChange` to propagate changes back to the form.
|
|
96
|
-
*/
|
|
97
|
-
this.propagateChange = (_) => { };
|
|
98
|
-
NumberInputComponent.numberCount++;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* This is the initial value set to the component
|
|
102
|
-
* @param value The input value.
|
|
103
|
-
*/
|
|
104
|
-
writeValue(value) {
|
|
105
|
-
this.value = value;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Sets a method in order to propagate changes back to the form.
|
|
109
|
-
*/
|
|
110
|
-
registerOnChange(fn) {
|
|
111
|
-
this.propagateChange = fn;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Registers a callback to be triggered when the control has been touched.
|
|
115
|
-
* @param fn Callback to be triggered when the number input is touched.
|
|
116
|
-
*/
|
|
117
|
-
registerOnTouched(fn) {
|
|
118
|
-
this.onTouched = fn;
|
|
119
|
-
}
|
|
120
|
-
focusOut() {
|
|
121
|
-
this.onTouched();
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Sets the disabled state through the model
|
|
125
|
-
*/
|
|
126
|
-
setDisabledState(isDisabled) {
|
|
127
|
-
this.disabled = isDisabled;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Adds `step` to the current `value`.
|
|
131
|
-
*/
|
|
132
|
-
onIncrement() {
|
|
133
|
-
const val = this._value || 0;
|
|
134
|
-
if (this.max === null || val + this.step <= this.max) {
|
|
135
|
-
this.value = parseFloat((val + this.step).toPrecision(this.precision));
|
|
136
|
-
}
|
|
137
|
-
if (this.max && this.max > 0 && this.value > this.max) {
|
|
138
|
-
this.value = this.max;
|
|
139
|
-
}
|
|
140
|
-
if (this.max === undefined || this.max === '') {
|
|
141
|
-
this.value = val + this.step;
|
|
142
|
-
}
|
|
143
|
-
this.emitChangeEvent();
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Subtracts `step` to the current `value`.
|
|
147
|
-
*/
|
|
148
|
-
onDecrement() {
|
|
149
|
-
const val = this._value || 0;
|
|
150
|
-
if (this.min === null || val - this.step >= this.min) {
|
|
151
|
-
this.value = parseFloat((val - this.step).toPrecision(this.precision));
|
|
152
|
-
}
|
|
153
|
-
if (this.min && this.min > 0 && this.value < this.min) {
|
|
154
|
-
this.value = this.min;
|
|
155
|
-
}
|
|
156
|
-
if (this.min === undefined || this.min === '') {
|
|
157
|
-
this.value = val - this.step;
|
|
158
|
-
}
|
|
159
|
-
this.emitChangeEvent();
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Creates a class of `NumberChange` to emit the change in the `Number`.
|
|
163
|
-
*/
|
|
164
|
-
emitChangeEvent() {
|
|
165
|
-
const event = new NumberChangeEvent();
|
|
166
|
-
event.source = this;
|
|
167
|
-
event.value = this.value;
|
|
168
|
-
this.numberChange.emit(event);
|
|
169
|
-
this.propagateChange(this.value);
|
|
170
|
-
}
|
|
171
|
-
onNumberInputChange(event) {
|
|
172
|
-
this.value = event.target.value;
|
|
173
|
-
this.emitChangeEvent();
|
|
174
|
-
}
|
|
175
|
-
isTemplate(value) {
|
|
176
|
-
return value instanceof TemplateRef;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Variable used for creating unique ids for number input components.
|
|
181
|
-
*/
|
|
182
|
-
NumberInputComponent.numberCount = 0;
|
|
183
|
-
NumberInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
-
NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NumberInputComponent, selector: "ofe-number-input", inputs: { theme: "theme", disabled: "disabled", skeleton: "skeleton", invalid: "invalid", id: "id", size: "size", required: "required", value: "value", min: "min", max: "max", maxlength: "maxlength", minlength: "minlength", label: "label", helperText: "helperText", invalidText: "invalidText", step: "step", precision: "precision", warn: "warn", warnText: "warnText", decrementLabel: "decrementLabel", incrementLabel: "incrementLabel" }, outputs: { numberChange: "numberChange" }, host: { listeners: { "focusout": "focusOut()" } }, providers: [
|
|
185
|
-
{
|
|
186
|
-
provide: NG_VALUE_ACCESSOR,
|
|
187
|
-
useExisting: forwardRef(() => NumberInputComponent),
|
|
188
|
-
multi: true
|
|
189
|
-
}
|
|
190
|
-
], ngImport: i0, template: "<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NumberInputDirective, selector: "[ofeNumberScroll]" }] });
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
192
|
-
type: Component,
|
|
193
|
-
args: [{ selector: 'ofe-number-input', providers: [
|
|
194
|
-
{
|
|
195
|
-
provide: NG_VALUE_ACCESSOR,
|
|
196
|
-
useExisting: forwardRef(() => NumberInputComponent),
|
|
197
|
-
multi: true
|
|
198
|
-
}
|
|
199
|
-
], template: "<div\n data-numberinput\n [attr.data-invalid]=\"invalid ? true : null\"\n class=\"cds--number\"\n [ngClass]=\"{\n 'cds--number--light': theme === 'light',\n 'cds--number--nolabel': !label,\n 'cds--number--helpertext': helperText,\n 'cds--skeleton': skeleton,\n 'cds--number--sm': size === 'sm',\n 'cds--number--xl': size === 'xl'\n }\"\n>\n <div\n class=\"cds--number__input-wrapper\"\n [ngClass]=\"{\n 'cds--number__input-wrapper--warning': warn\n }\"\n >\n <input\n type=\"number\"\n [id]=\"id\"\n ofeNumberScroll\n [value]=\"value\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.step]=\"step\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (input)=\"onNumberInputChange($event)\"\n />\n <div class=\"cds--number__controls\">\n <button\n type=\"button\"\n class=\"cds--number__control-btn down-icon\"\n (click)=\"onDecrement()\"\n title=\"Decrement number\"\n [attr.aria-label]=\"decrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"down-icon\"\n >\n <path d=\"M8 15H24V17H8z\"></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n <button\n type=\"button\"\n class=\"cds--number__control-btn up-icon\"\n (click)=\"onIncrement()\"\n title=\"Increment number\"\n [attr.aria-label]=\"incrementLabel\"\n tabindex=\"-1\"\n >\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 32 32\"\n aria-hidden=\"true\"\n class=\"up-icon\"\n >\n <path\n d=\"M17 15L17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z\"\n ></path>\n </svg>\n </button>\n <div class=\"cds--number__rule-divider\"></div>\n </div>\n </div>\n <div *ngIf=\"helperText && !invalid && !warn\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!warn && invalid\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</div>\n" }]
|
|
200
|
-
}], ctorParameters: function () { return []; }, propDecorators: { theme: [{
|
|
201
|
-
type: Input
|
|
202
|
-
}], disabled: [{
|
|
203
|
-
type: Input
|
|
204
|
-
}], skeleton: [{
|
|
205
|
-
type: Input
|
|
206
|
-
}], invalid: [{
|
|
207
|
-
type: Input
|
|
208
|
-
}], id: [{
|
|
209
|
-
type: Input
|
|
210
|
-
}], size: [{
|
|
211
|
-
type: Input
|
|
212
|
-
}], required: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], value: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], min: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], max: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], maxlength: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], minlength: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], label: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], helperText: [{
|
|
227
|
-
type: Input
|
|
228
|
-
}], invalidText: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], step: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], precision: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], warn: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], warnText: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], numberChange: [{
|
|
239
|
-
type: Output
|
|
240
|
-
}], decrementLabel: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], incrementLabel: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], focusOut: [{
|
|
245
|
-
type: HostListener,
|
|
246
|
-
args: ['focusout']
|
|
247
|
-
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0NBUzdCO0FBYUQsTUFBTSxPQUFPLG9CQUFvQjtJQWtDL0I7O09BRUc7SUFDSCxJQUFhLEtBQUssQ0FBQyxDQUFNO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQTRERDs7T0FFRztJQUNIO1FBeEdBOztXQUVHO1FBQ00sVUFBSyxHQUFxQixNQUFNLENBQUM7UUFDMUM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztR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IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogVXNlZCB0byBlbWl0IGNoYW5nZXMgcGVyZm9ybWVkIG9uIG51bWJlciBpbnB1dCBjb21wb25lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgTnVtYmVyQ2hhbmdlRXZlbnQge1xuICAvKipcbiAgICogQ29udGFpbnMgdGhlIGBOdW1iZXJJbnB1dENvbXBvbmVudGAgdGhhdCBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgc291cmNlOiBOdW1iZXJJbnB1dENvbXBvbmVudDtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYE51bWJlcklucHV0Q29tcG9uZW50YCBmaWVsZCBlbmNvbXBhc3NlZCBpbiB0aGUgYE51bWJlckNoYW5nZWAgY2xhc3MuXG4gICAqL1xuICB2YWx1ZTogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZmUtbnVtYmVyLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICdudW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE51bWJlcklucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogVmFyaWFibGUgdXNlZCBmb3IgY3JlYXRpbmcgdW5pcXVlIGlkcyBmb3IgbnVtYmVyIGlucHV0IGNvbXBvbmVudHMuXG4gICAqL1xuICBzdGF0aWMgbnVtYmVyQ291bnQgPSAwO1xuXG4gIC8qKlxuICAgKiBgbGlnaHRgIG9yIGBkYXJrYCBudW1iZXIgaW5wdXQgdGhlbWUuXG4gICAqL1xuICBASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdkYXJrJztcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgZGlzYWJsZWQgbnVtYmVyIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBudW1iZXIgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2tlbGV0b24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGFuIGludmFsaWQgbnVtYmVyIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWQgZm9yIHRoZSBudW1iZXIgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgbnVtYmVyLSR7TnVtYmVySW5wdXRDb21wb25lbnQubnVtYmVyQ291bnR9YDtcbiAgLyoqXG4gICAqIE51bWJlciBpbnB1dCBmaWVsZCByZW5kZXIgc2l6ZVxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgfCAneGwnID0gJ21kJztcbiAgLyoqXG4gICAqIFJlZmxlY3RzIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgaWYgKHYgPT09ICcnIHx8IHYgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSBOdW1iZXIodik7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtaW4gYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBtaW4gPSBudWxsO1xuICAvKipcbiAgICogU2V0cyB0aGUgbWF4IGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgbWF4ID0gbnVsbDtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heCBsZW5ndGggYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBtYXhsZW5ndGggPSBudWxsO1xuICAvKipcbiAgICogU2V0cyB0aGUgbWluIGxlbmd0aCBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIG1pbmxlbmd0aCA9IG51bGw7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZXh0IGluc2lkZSB0aGUgYGxhYmVsYCB0YWcuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbmFsIGhlbHBlciB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGludmFsaWQgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgYW1vdW50IHRoZSBudW1iZXIgY29udHJvbHMgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnkuXG4gICAqL1xuICBASW5wdXQoKSBzdGVwID0gMTtcbiAgLyoqXG4gICAqIElmIGBzdGVwYCBpcyBhIGRlY2ltYWwsIHdlIG1heSB3YW50IHByZWNpc2lvbiB0byBiZSBzZXQgdG8gZ28gYXJvdW5kIGZsb2F0aW5nIHBvaW50IHByZWNpc2lvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByZWNpc2lvbjogbnVtYmVyO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCB0byBzaG93IGEgd2FybmluZyAoY29udGVudHMgc2V0IGJ5IHdhcm5pbmdUZXh0KVxuICAgKi9cbiAgQElucHV0KCkgd2FybiA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IG5vdGlmeWluZyBvdGhlciBjbGFzc2VzIHdoZW4gYSBjaGFuZ2UgaW4gc3RhdGUgb2NjdXJzIGluIHRoZSBpbnB1dC5cbiAgICovXG4gIEBPdXRwdXQoKSBudW1iZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE51bWJlckNoYW5nZUV2ZW50PigpO1xuICAvKipcbiAgICogU2V0cyB0aGUgZGVjcmVtZW50IGxhYmVsIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIGRlY3JlbWVudExhYmVsID0gJ0RlY3JlYXNlJztcbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY3JlbWVudCBsYWJlbCB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSBpbmNyZW1lbnRMYWJlbCA9ICdJbmNyZWFzZSc7XG5cbiAgcHJvdGVjdGVkIF92YWx1ZSA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYE51bWJlcmAuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBOdW1iZXJJbnB1dENvbXBvbmVudC5udW1iZXJDb3VudCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIG1ldGhvZCBpbiBvcmRlciB0byBwcm9wYWdhdGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBudW1iZXIgaW5wdXQgaXMgdG91Y2hlZC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgZm9jdXNPdXQoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSB0aHJvdWdoIHRoZSBtb2RlbFxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbnVtYmVyIGlucHV0IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYC5cbiAgICovXG4gIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBzZXQgaW4gYHJlZ2lzdGVyT25DaGFuZ2VgIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm0uXG4gICAqL1xuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICAvKipcbiAgICogQWRkcyBgc3RlcGAgdG8gdGhlIGN1cnJlbnQgYHZhbHVlYC5cbiAgICovXG4gIG9uSW5jcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX3ZhbHVlIHx8IDA7XG5cbiAgICBpZiAodGhpcy5tYXggPT09IG51bGwgfHwgdmFsICsgdGhpcy5zdGVwIDw9IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCgodmFsICsgdGhpcy5zdGVwKS50b1ByZWNpc2lvbih0aGlzLnByZWNpc2lvbikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1heCAmJiB0aGlzLm1heCA+IDAgJiYgdGhpcy52YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgfVxuICAgIGlmICh0aGlzLm1heCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMubWF4ID09PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbCArIHRoaXMuc3RlcDtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0cyBgc3RlcGAgdG8gdGhlIGN1cnJlbnQgYHZhbHVlYC5cbiAgICovXG4gIG9uRGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX3ZhbHVlIHx8IDA7XG5cbiAgICBpZiAodGhpcy5taW4gPT09IG51bGwgfHwgdmFsIC0gdGhpcy5zdGVwID49IHRoaXMubWluKSB7XG4gICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCgodmFsIC0gdGhpcy5zdGVwKS50b1ByZWNpc2lvbih0aGlzLnByZWNpc2lvbikpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1pbiA+IDAgJiYgdGhpcy52YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWluID09PSB1bmRlZmluZWQgfHwgdGhpcy5taW4gPT09ICcnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsIC0gdGhpcy5zdGVwO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNsYXNzIG9mIGBOdW1iZXJDaGFuZ2VgIHRvIGVtaXQgdGhlIGNoYW5nZSBpbiB0aGUgYE51bWJlcmAuXG4gICAqL1xuICBlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTnVtYmVyQ2hhbmdlRXZlbnQoKTtcbiAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgIGV2ZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uTnVtYmVySW5wdXRDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICBwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICB9XG59XG4iLCI8ZGl2XG4gIGRhdGEtbnVtYmVyaW5wdXRcbiAgW2F0dHIuZGF0YS1pbnZhbGlkXT1cImludmFsaWQgPyB0cnVlIDogbnVsbFwiXG4gIGNsYXNzPVwiY2RzLS1udW1iZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2Nkcy0tbnVtYmVyLS1saWdodCc6IHRoZW1lID09PSAnbGlnaHQnLFxuICAgICdjZHMtLW51bWJlci0tbm9sYWJlbCc6ICFsYWJlbCxcbiAgICAnY2RzLS1udW1iZXItLWhlbHBlcnRleHQnOiBoZWxwZXJUZXh0LFxuICAgICdjZHMtLXNrZWxldG9uJzogc2tlbGV0b24sXG4gICAgJ2Nkcy0tbnVtYmVyLS1zbSc6IHNpemUgPT09ICdzbScsXG4gICAgJ2Nkcy0tbnVtYmVyLS14bCc6IHNpemUgPT09ICd4bCdcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNkcy0tbnVtYmVyX19pbnB1dC13cmFwcGVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnY2RzLS1udW1iZXJfX2lucHV0LXdyYXBwZXItLXdhcm5pbmcnOiB3YXJuXG4gICAgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIG9mZU51bWJlclNjcm9sbFxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJtaW5sZW5ndGhcIlxuICAgICAgW2F0dHIuc3RlcF09XCJzdGVwXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGlucHV0KT1cIm9uTnVtYmVySW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS1udW1iZXJfX2NvbnRyb2xzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImNkcy0tbnVtYmVyX19jb250cm9sLWJ0biBkb3duLWljb25cIlxuICAgICAgICAoY2xpY2spPVwib25EZWNyZW1lbnQoKVwiXG4gICAgICAgIHRpdGxlPVwiRGVjcmVtZW50IG51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVjcmVtZW50TGFiZWxcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJkb3duLWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDE1SDI0VjE3SDh6XCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImNkcy0tbnVtYmVyX19ydWxlLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY2RzLS1udW1iZXJfX2NvbnRyb2wtYnRuIHVwLWljb25cIlxuICAgICAgICAoY2xpY2spPVwib25JbmNyZW1lbnQoKVwiXG4gICAgICAgIHRpdGxlPVwiSW5jcmVtZW50IG51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaW5jcmVtZW50TGFiZWxcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJ1cC1pY29uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTE3IDE1TDE3IDggMTUgOCAxNSAxNSA4IDE1IDggMTcgMTUgMTcgMTUgMjQgMTcgMjQgMTcgMTcgMjQgMTcgMjQgMTV6XCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImNkcy0tbnVtYmVyX19ydWxlLWRpdmlkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJoZWxwZXJUZXh0ICYmICFpbnZhbGlkICYmICF3YXJuXCIgY2xhc3M9XCJjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3tcbiAgICAgIGhlbHBlclRleHRcbiAgICB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlbHBlclRleHRcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiF3YXJuICYmIGludmFsaWRcIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57e1xuICAgICAgaW52YWxpZFRleHRcbiAgICB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nSWY9XCJpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7IHdhcm5UZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndhcm5UZXh0XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class RadioButtonControlComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this._value = undefined;
|
|
8
|
-
this.onChange = (args) => { };
|
|
9
|
-
this.onTouched = () => { };
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() {
|
|
12
|
-
this.options = this.options.map((opt) => ({ ...opt, checked: false }));
|
|
13
|
-
this.updateSelectedOption();
|
|
14
|
-
}
|
|
15
|
-
writeValue(value) {
|
|
16
|
-
this.value = value;
|
|
17
|
-
const newValueOpt = this.options.find((opt) => opt.value === value);
|
|
18
|
-
if (newValueOpt) {
|
|
19
|
-
Object.assign(newValueOpt, { checked: true });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
registerOnChange(fn) {
|
|
23
|
-
this.onChange = fn;
|
|
24
|
-
}
|
|
25
|
-
registerOnTouched(fn) {
|
|
26
|
-
this.onTouched = fn;
|
|
27
|
-
}
|
|
28
|
-
get value() {
|
|
29
|
-
return this._value ?? '';
|
|
30
|
-
}
|
|
31
|
-
set value(value) {
|
|
32
|
-
this._value = value;
|
|
33
|
-
}
|
|
34
|
-
handleClick(option) {
|
|
35
|
-
if (this.allowUnselect && option.checked) {
|
|
36
|
-
option.checked = false;
|
|
37
|
-
// doesn't fire by itself, so we create a synthetic change event
|
|
38
|
-
this.handleChange(option);
|
|
39
|
-
}
|
|
40
|
-
else if (!option.checked) {
|
|
41
|
-
option.checked = true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
handleChange(option) {
|
|
45
|
-
if (!option.checked) {
|
|
46
|
-
this.value = undefined;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.value = option.value;
|
|
50
|
-
}
|
|
51
|
-
this.onChange(this.value);
|
|
52
|
-
}
|
|
53
|
-
ngOnChanges(changes) {
|
|
54
|
-
if (changes.selected) {
|
|
55
|
-
this.updateSelectedOption();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
updateSelectedOption() {
|
|
59
|
-
if (this.selected) {
|
|
60
|
-
const maybeOpt = this.options.find((opt) => opt.value === this.selected);
|
|
61
|
-
if (maybeOpt) {
|
|
62
|
-
this.options.forEach((opt) => (opt.checked = opt === maybeOpt));
|
|
63
|
-
this.value = this.selected;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
RadioButtonControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RadioButtonControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
RadioButtonControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RadioButtonControlComponent, selector: "ofe-radio-button", inputs: { id: "id", options: "options", selected: "selected", allowUnselect: "allowUnselect", orientation: "orientation" }, providers: [
|
|
70
|
-
{
|
|
71
|
-
provide: NG_VALUE_ACCESSOR,
|
|
72
|
-
useExisting: forwardRef(() => RadioButtonControlComponent),
|
|
73
|
-
multi: true
|
|
74
|
-
}
|
|
75
|
-
], usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"cds--fieldset\">\n <div\n *ngFor=\"let option of options; let i = index\"\n class=\"cds--form-item cds--radio-wrapper\"\n [ngClass]=\"{ inline: orientation === 'horizontal' }\"\n >\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"id\"\n [checked]=\"option.checked\"\n [value]=\"option.value\"\n (click)=\"handleClick(option)\"\n (change)=\"handleChange(option)\"\n />\n {{ option.label }}\n </label>\n </div>\n</fieldset>\n", styles: [".inline{display:inline-block;padding-right:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RadioButtonControlComponent, decorators: [{
|
|
77
|
-
type: Component,
|
|
78
|
-
args: [{ selector: 'ofe-radio-button', providers: [
|
|
79
|
-
{
|
|
80
|
-
provide: NG_VALUE_ACCESSOR,
|
|
81
|
-
useExisting: forwardRef(() => RadioButtonControlComponent),
|
|
82
|
-
multi: true
|
|
83
|
-
}
|
|
84
|
-
], template: "<fieldset class=\"cds--fieldset\">\n <div\n *ngFor=\"let option of options; let i = index\"\n class=\"cds--form-item cds--radio-wrapper\"\n [ngClass]=\"{ inline: orientation === 'horizontal' }\"\n >\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"id\"\n [checked]=\"option.checked\"\n [value]=\"option.value\"\n (click)=\"handleClick(option)\"\n (change)=\"handleChange(option)\"\n />\n {{ option.label }}\n </label>\n </div>\n</fieldset>\n", styles: [".inline{display:inline-block;padding-right:.5rem}\n"] }]
|
|
85
|
-
}], propDecorators: { id: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], options: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], selected: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], allowUnselect: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}], orientation: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9yYWRpby1idXR0b24vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvY29tcG9uZW50cy9yYWRpby1idXR0b24vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUlYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBY3pFLE1BQU0sT0FBTywyQkFBMkI7SUFaeEM7UUFvQlUsV0FBTSxHQUFRLFNBQVMsQ0FBQztRQXFEekIsYUFBUSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQWlCN0I7SUFyRVEsUUFBUTtRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNwRSxJ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dCxcbiAgZm9yd2FyZFJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29mZS1yYWRpby1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9CdXR0b25Db250cm9sQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29udHJvbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogU3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogQXJyYXk8YW55PjtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkOiBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd1Vuc2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgb3JpZW50YXRpb246IHN0cmluZztcblxuICBwcml2YXRlIF92YWx1ZTogYW55ID0gdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvcHQpID0+ICh7IC4uLm9wdCwgY2hlY2tlZDogZmFsc2UgfSkpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgbmV3VmFsdWVPcHQgPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcbiAgICBpZiAobmV3VmFsdWVPcHQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obmV3VmFsdWVPcHQsIHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShcbiAgICBmbjogKG5ld1ZhbHVlPzogYW55LCBlbWl0TW9kZWxFdmVudD86IGJvb2xlYW4pID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyAnJztcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGljayhvcHRpb24pIHtcbiAgICBpZiAodGhpcy5hbGxvd1Vuc2VsZWN0ICYmIG9wdGlvbi5jaGVja2VkKSB7XG4gICAgICBvcHRpb24uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgLy8gZG9lc24ndCBmaXJlIGJ5IGl0c2VsZiwgc28gd2UgY3JlYXRlIGEgc3ludGhldGljIGNoYW5nZSBldmVudFxuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2Uob3B0aW9uKTtcbiAgICB9IGVsc2UgaWYgKCFvcHRpb24uY2hlY2tlZCkge1xuICAgICAgb3B0aW9uLmNoZWNrZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDaGFuZ2Uob3B0aW9uKSB7XG4gICAgaWYgKCFvcHRpb24uY2hlY2tlZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlID0gKGFyZ3MpID0+IHt9O1xuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgY29uc3QgbWF5YmVPcHQgPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgaWYgKG1heWJlT3B0KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IChvcHQuY2hlY2tlZCA9IG9wdCA9PT0gbWF5YmVPcHQpKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZmllbGRzZXQgY2xhc3M9XCJjZHMtLWZpZWxkc2V0XCI+XG4gIDxkaXZcbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgIGNsYXNzPVwiY2RzLS1mb3JtLWl0ZW0gY2RzLS1yYWRpby13cmFwcGVyXCJcbiAgICBbbmdDbGFzc109XCJ7IGlubGluZTogb3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyB9XCJcbiAgPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBuby1ib3JkZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICBbaWRdPVwiaWQgKyAnXycgKyBpXCJcbiAgICAgICAgW25hbWVdPVwiaWRcIlxuICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24uY2hlY2tlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2sob3B0aW9uKVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKG9wdGlvbilcIlxuICAgICAgLz5cbiAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbiJdfQ==
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, Output, HostListener, EventEmitter, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
/**
|
|
6
|
-
* `ofe-select` provides a styled `select` component.
|
|
7
|
-
*
|
|
8
|
-
* [See demo](../../?path=/story/select--basic)
|
|
9
|
-
*
|
|
10
|
-
* Example:
|
|
11
|
-
*
|
|
12
|
-
* ```
|
|
13
|
-
* <ofe-select [(ngModel)]="model">
|
|
14
|
-
* <option value="default" disabled selected hidden>Choose an option</option>
|
|
15
|
-
* <option value="option1">Option 1</option>
|
|
16
|
-
* <option value="option2">Option 2</option>
|
|
17
|
-
* <option value="option3">Option 3</option>
|
|
18
|
-
* </ofe-select>
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* <example-url>../../iframe.html?id=select--basic</example-url>
|
|
22
|
-
*/
|
|
23
|
-
export class SelectComponent {
|
|
24
|
-
constructor() {
|
|
25
|
-
/**
|
|
26
|
-
* `inline` or `default` select displays
|
|
27
|
-
*/
|
|
28
|
-
this.display = 'default';
|
|
29
|
-
/**
|
|
30
|
-
* Set to `true` to show a warning (contents set by warningText)
|
|
31
|
-
*/
|
|
32
|
-
this.warn = false;
|
|
33
|
-
/**
|
|
34
|
-
* Sets the unique ID. Defaults to `select-${total count of selects instantiated}`
|
|
35
|
-
*/
|
|
36
|
-
this.id = `select-${SelectComponent.selectCount++}`;
|
|
37
|
-
/**
|
|
38
|
-
* Number input field render size
|
|
39
|
-
*/
|
|
40
|
-
this.size = 'md';
|
|
41
|
-
/**
|
|
42
|
-
* Set to true to disable component.
|
|
43
|
-
*/
|
|
44
|
-
this.disabled = false;
|
|
45
|
-
/**
|
|
46
|
-
* Set to true for a loading select.
|
|
47
|
-
*/
|
|
48
|
-
this.skeleton = false;
|
|
49
|
-
/**
|
|
50
|
-
* Set to `true` for an invalid select component.
|
|
51
|
-
*/
|
|
52
|
-
this.invalid = false;
|
|
53
|
-
/**
|
|
54
|
-
* `light` or `dark` select theme
|
|
55
|
-
*/
|
|
56
|
-
this.theme = 'dark';
|
|
57
|
-
this.valueChange = new EventEmitter();
|
|
58
|
-
/**
|
|
59
|
-
* placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`
|
|
60
|
-
*/
|
|
61
|
-
this.onChangeHandler = (_) => { };
|
|
62
|
-
this.onTouchedHandler = () => { };
|
|
63
|
-
}
|
|
64
|
-
set value(v) {
|
|
65
|
-
this._value = v;
|
|
66
|
-
if (this.select) {
|
|
67
|
-
this.select.nativeElement.value = this._value;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
get value() {
|
|
71
|
-
return this._value;
|
|
72
|
-
}
|
|
73
|
-
ngAfterViewInit() {
|
|
74
|
-
if (this.value !== undefined &&
|
|
75
|
-
this.value !== null &&
|
|
76
|
-
this.select &&
|
|
77
|
-
this.select.nativeElement.value !== this.value) {
|
|
78
|
-
this.select.nativeElement.value = this.value;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Receives a value from the model.
|
|
83
|
-
*/
|
|
84
|
-
writeValue(obj) {
|
|
85
|
-
this.value = obj;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Registers a listener that notifies the model when the control updates
|
|
89
|
-
*/
|
|
90
|
-
registerOnChange(fn) {
|
|
91
|
-
this.onChangeHandler = fn;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Registers a listener that notifies the model when the control is blurred
|
|
95
|
-
*/
|
|
96
|
-
registerOnTouched(fn) {
|
|
97
|
-
this.onTouchedHandler = fn;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Sets the disabled state through the model
|
|
101
|
-
*/
|
|
102
|
-
setDisabledState(isDisabled) {
|
|
103
|
-
this.disabled = isDisabled;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Handles the change event from the `select`.
|
|
107
|
-
* Sends events to the change handler and emits a `selected` event.
|
|
108
|
-
*/
|
|
109
|
-
onChange(event) {
|
|
110
|
-
this.value = event.target.value;
|
|
111
|
-
this.onChangeHandler(event.target.value);
|
|
112
|
-
this.valueChange.emit(event.target.value);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Listens for the host blurring, and notifies the model
|
|
116
|
-
*/
|
|
117
|
-
focusOut() {
|
|
118
|
-
this.onTouchedHandler();
|
|
119
|
-
}
|
|
120
|
-
isTemplate(value) {
|
|
121
|
-
return value instanceof TemplateRef;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Tracks the total number of selects instantiated. Used to generate unique IDs
|
|
126
|
-
*/
|
|
127
|
-
SelectComponent.selectCount = 0;
|
|
128
|
-
SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
-
SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SelectComponent, selector: "ofe-select", inputs: { display: "display", label: "label", helperText: "helperText", invalidText: "invalidText", warn: "warn", warnText: "warnText", id: "id", size: "size", disabled: "disabled", skeleton: "skeleton", invalid: "invalid", theme: "theme", ariaLabel: "ariaLabel", value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "focusout": "focusOut()" } }, providers: [
|
|
130
|
-
{
|
|
131
|
-
provide: NG_VALUE_ACCESSOR,
|
|
132
|
-
useExisting: SelectComponent,
|
|
133
|
-
multi: true
|
|
134
|
-
}
|
|
135
|
-
], viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "<div class=\"cds--form-item\">\n <ng-template [ngIf]=\"skeleton\">\n <div *ngIf=\"label\" class=\"cds--label cds--skeleton\"></div>\n <div class=\"cds--select cds--skeleton\"></div>\n </ng-template>\n <div\n *ngIf=\"!skeleton\"\n class=\"cds--select\"\n [ngClass]=\"{\n 'cds--select--inline': display === 'inline',\n 'cds--select--light': theme === 'light',\n 'cds--select--invalid': invalid,\n 'cds--select--warning': warn,\n 'cds--select--disabled': disabled\n }\"\n >\n <label *ngIf=\"label\" [for]=\"id\" class=\"cds--label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(label)\"\n [ngTemplateOutlet]=\"label\"\n ></ng-template>\n </label>\n <div *ngIf=\"helperText\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"display === 'inline'; else noInline\"\n class=\"cds--select-input--inline__wrapper\"\n >\n <ng-container *ngTemplateOutlet=\"noInline\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- select element: dynamically projected based on 'display' variant -->\n<ng-template #noInline>\n <div\n class=\"cds--select-input__wrapper extend\"\n [attr.data-invalid]=\"invalid ? true : null\"\n >\n <select\n #select\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n class=\"cds--select-input\"\n [ngClass]=\"{\n 'cds--select-input--xl': size === 'xl',\n 'cds--select-input--sm': size === 'sm'\n }\"\n >\n <ng-content></ng-content>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--select__arrow\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n <div\n *ngIf=\"invalid && invalidText && !warn\"\n role=\"alert\"\n class=\"cds--form-requirement\"\n aria-live=\"polite\"\n >\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".cds--select--inline .cds--form__helper-text{order:4}.cds--select--inline:not(.cds--select--invalid) .cds--form__helper-text{margin-top:0}.cds--select-input__wrapper{min-width:16rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SelectComponent, decorators: [{
|
|
137
|
-
type: Component,
|
|
138
|
-
args: [{ selector: 'ofe-select', providers: [
|
|
139
|
-
{
|
|
140
|
-
provide: NG_VALUE_ACCESSOR,
|
|
141
|
-
useExisting: SelectComponent,
|
|
142
|
-
multi: true
|
|
143
|
-
}
|
|
144
|
-
], template: "<div class=\"cds--form-item\">\n <ng-template [ngIf]=\"skeleton\">\n <div *ngIf=\"label\" class=\"cds--label cds--skeleton\"></div>\n <div class=\"cds--select cds--skeleton\"></div>\n </ng-template>\n <div\n *ngIf=\"!skeleton\"\n class=\"cds--select\"\n [ngClass]=\"{\n 'cds--select--inline': display === 'inline',\n 'cds--select--light': theme === 'light',\n 'cds--select--invalid': invalid,\n 'cds--select--warning': warn,\n 'cds--select--disabled': disabled\n }\"\n >\n <label *ngIf=\"label\" [for]=\"id\" class=\"cds--label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{ label }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(label)\"\n [ngTemplateOutlet]=\"label\"\n ></ng-template>\n </label>\n <div *ngIf=\"helperText\" class=\"cds--form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{\n helperText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(helperText)\"\n [ngTemplateOutlet]=\"helperText\"\n ></ng-template>\n </div>\n <div\n *ngIf=\"display === 'inline'; else noInline\"\n class=\"cds--select-input--inline__wrapper\"\n >\n <ng-container *ngTemplateOutlet=\"noInline\"></ng-container>\n </div>\n </div>\n</div>\n\n<!-- select element: dynamically projected based on 'display' variant -->\n<ng-template #noInline>\n <div\n class=\"cds--select-input__wrapper extend\"\n [attr.data-invalid]=\"invalid ? true : null\"\n >\n <select\n #select\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n [attr.aria-invalid]=\"invalid ? 'true' : null\"\n class=\"cds--select-input\"\n [ngClass]=\"{\n 'cds--select-input--xl': size === 'xl',\n 'cds--select-input--sm': size === 'sm'\n }\"\n >\n <ng-content></ng-content>\n </select>\n <svg\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--select__arrow\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path>\n </svg>\n <svg\n *ngIf=\"invalid\"\n focusable=\"false\"\n preserveAspectRatio=\"xMidYMid meet\"\n style=\"will-change: transform\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"cds--text-input__invalid-icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n ></path>\n <path\n d=\"M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z\"\n data-icon-path=\"inner-path\"\n opacity=\"0\"\n ></path>\n </svg>\n </div>\n <div\n *ngIf=\"invalid && invalidText && !warn\"\n role=\"alert\"\n class=\"cds--form-requirement\"\n aria-live=\"polite\"\n >\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{\n invalidText\n }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(invalidText)\"\n [ngTemplateOutlet]=\"invalidText\"\n ></ng-template>\n </div>\n <div *ngIf=\"!invalid && warn\" class=\"cds--form-requirement\">\n <ng-container *ngIf=\"!isTemplate(warnText)\">{{ warnText }}</ng-container>\n <ng-template\n *ngIf=\"isTemplate(warnText)\"\n [ngTemplateOutlet]=\"warnText\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".cds--select--inline .cds--form__helper-text{order:4}.cds--select--inline:not(.cds--select--invalid) .cds--form__helper-text{margin-top:0}.cds--select-input__wrapper{min-width:16rem}\n"] }]
|
|
145
|
-
}], propDecorators: { display: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], label: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], helperText: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], invalidText: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], warn: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], warnText: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], id: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], size: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}], disabled: [{
|
|
162
|
-
type: Input
|
|
163
|
-
}], skeleton: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], invalid: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], theme: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], ariaLabel: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], valueChange: [{
|
|
172
|
-
type: Output
|
|
173
|
-
}], select: [{
|
|
174
|
-
type: ViewChild,
|
|
175
|
-
args: ['select', { static: false }]
|
|
176
|
-
}], value: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], focusOut: [{
|
|
179
|
-
type: HostListener,
|
|
180
|
-
args: ['focusout']
|
|
181
|
-
}] } });
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBYUgsTUFBTSxPQUFPLGVBQWU7SUFaNUI7UUFrQkU7O1dBRUc7UUFDTSxZQUFPLEdBQXlCLFNBQVMsQ0FBQztRQWFuRDs7V0FFRztRQUNNLFNBQUksR0FBRyxLQUFLLENBQUM7UUFLdEI7O1dBRUc7UUFDTSxPQUFFLEdBQUcsVUFBVSxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUN4RDs7V0FFRztRQUNNLFNBQUksR0FBdUIsSUFBSSxDQUFDO1FBQ3pDOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXpCOztXQUVHO1FBQ00sVUFBSyxHQUFxQixNQUFNLENBQUM7UUFHaEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBOEUzQzs7V0FFRztRQUNPLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNq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LE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFekIsS0FBSztzQkFBakIsS0FBSztnQkFrRU4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIGBvZmUtc2VsZWN0YCBwcm92aWRlcyBhIHN0eWxlZCBgc2VsZWN0YCBjb21wb25lbnQuXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3Rvcnkvc2VsZWN0LS1iYXNpYylcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYFxuICogPG9mZS1zZWxlY3QgWyhuZ01vZGVsKV09XCJtb2RlbFwiPlxuICogICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCIgZGlzYWJsZWQgc2VsZWN0ZWQgaGlkZGVuPkNob29zZSBhbiBvcHRpb248L29wdGlvbj5cbiAqICAgICA8b3B0aW9uIHZhbHVlPVwib3B0aW9uMVwiPk9wdGlvbiAxPC9vcHRpb24+XG4gKiAgICA8b3B0aW9uIHZhbHVlPVwib3B0aW9uMlwiPk9wdGlvbiAyPC9vcHRpb24+XG4gKiAgICAgPG9wdGlvbiB2YWx1ZT1cIm9wdGlvbjNcIj5PcHRpb24gMzwvb3B0aW9uPlxuICogPC9vZmUtc2VsZWN0PlxuICogICAgYGBgXG4gKlxuICogPGV4YW1wbGUtdXJsPi4uLy4uL2lmcmFtZS5odG1sP2lkPXNlbGVjdC0tYmFzaWM8L2V4YW1wbGUtdXJsPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZmUtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICdzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVHJhY2tzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0cyBpbnN0YW50aWF0ZWQuIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEc1xuICAgKi9cbiAgc3RhdGljIHNlbGVjdENvdW50ID0gMDtcblxuICAvKipcbiAgICogYGlubGluZWAgb3IgYGRlZmF1bHRgIHNlbGVjdCBkaXNwbGF5c1xuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheTogJ2lubGluZScgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG4gIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhlIHNlbGVjdC4gQXBwZWFycyBhYm92ZSB0aGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGhlbHBlciB0ZXh0IHRoYXQgYXBwZWFycyB1bmRlciB0aGUgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgaW52YWxpZCB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG4gICAqL1xuICBASW5wdXQoKSB3YXJuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcbiAgICovXG4gIEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIElELiBEZWZhdWx0cyB0byBgc2VsZWN0LSR7dG90YWwgY291bnQgb2Ygc2VsZWN0cyBpbnN0YW50aWF0ZWR9YFxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgc2VsZWN0LSR7U2VsZWN0Q29tcG9uZW50LnNlbGVjdENvdW50Kyt9YDtcbiAgLyoqXG4gICAqIE51bWJlciBpbnB1dCBmaWVsZCByZW5kZXIgc2l6ZVxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgfCAneGwnID0gJ21kJztcbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGRpc2FibGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGZvciBhIGxvYWRpbmcgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KCkgc2tlbGV0b24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGFuIGludmFsaWQgc2VsZWN0IGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogYGxpZ2h0YCBvciBgZGFya2Agc2VsZWN0IHRoZW1lXG4gICAqL1xuICBASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdkYXJrJztcbiAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3Q6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgc2V0IHZhbHVlKHYpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfdmFsdWU7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy52YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5zZWxlY3QgJiZcbiAgICAgIHRoaXMuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09IHRoaXMudmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyBhIHZhbHVlIGZyb20gdGhlIG1vZGVsLlxuICAgKi9cbiAgd3JpdGVWYWx1ZShvYmo6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgbGlzdGVuZXIgdGhhdCBub3RpZmllcyB0aGUgbW9kZWwgd2hlbiB0aGUgY29udHJvbCB1cGRhdGVzXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlSGFuZGxlciA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGxpc3RlbmVyIHRoYXQgbm90aWZpZXMgdGhlIG1vZGVsIHdoZW4gdGhlIGNvbnRyb2wgaXMgYmx1cnJlZFxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkSGFuZGxlciA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIHRocm91Z2ggdGhlIG1vZGVsXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjaGFuZ2UgZXZlbnQgZnJvbSB0aGUgYHNlbGVjdGAuXG4gICAqIFNlbmRzIGV2ZW50cyB0byB0aGUgY2hhbmdlIGhhbmRsZXIgYW5kIGVtaXRzIGEgYHNlbGVjdGVkYCBldmVudC5cbiAgICovXG4gIG9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlSGFuZGxlcihldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgZm9yIHRoZSBob3N0IGJsdXJyaW5nLCBhbmQgbm90aWZpZXMgdGhlIG1vZGVsXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpXG4gIGZvY3VzT3V0KCkge1xuICAgIHRoaXMub25Ub3VjaGVkSGFuZGxlcigpO1xuICB9XG5cbiAgcHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBwbGFjZWhvbGRlciBkZWNsYXJhdGlvbnMuIFJlcGxhY2VkIGJ5IHRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgdG8gYHJlZ2lzdGVyT25DaGFuZ2VgIGFuZCBgcmVnaXN0ZXJPblRvdWNoZWRgXG4gICAqL1xuICBwcm90ZWN0ZWQgb25DaGFuZ2VIYW5kbGVyID0gKF86IGFueSkgPT4ge307XG4gIHByb3RlY3RlZCBvblRvdWNoZWRIYW5kbGVyID0gKCkgPT4ge307XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2RzLS1mb3JtLWl0ZW1cIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNrZWxldG9uXCI+XG4gICAgPGRpdiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJjZHMtLWxhYmVsIGNkcy0tc2tlbGV0b25cIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS1zZWxlY3QgY2RzLS1za2VsZXRvblwiPjwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgKm5nSWY9XCIhc2tlbGV0b25cIlxuICAgIGNsYXNzPVwiY2RzLS1zZWxlY3RcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdjZHMtLXNlbGVjdC0taW5saW5lJzogZGlzcGxheSA9PT0gJ2lubGluZScsXG4gICAgICAnY2RzLS1zZWxlY3QtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG4gICAgICAnY2RzLS1zZWxlY3QtLWludmFsaWQnOiBpbnZhbGlkLFxuICAgICAgJ2Nkcy0tc2VsZWN0LS13YXJuaW5nJzogd2FybixcbiAgICAgICdjZHMtLXNlbGVjdC0tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICA+XG4gICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgY2xhc3M9XCJjZHMtLWxhYmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUobGFiZWwpXCI+e3sgbGFiZWwgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cImlzVGVtcGxhdGUobGFiZWwpXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2ICpuZ0lmPVwiaGVscGVyVGV4dFwiIGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3tcbiAgICAgICAgaGVscGVyVGV4dFxuICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZGlzcGxheSA9PT0gJ2lubGluZSc7IGVsc2Ugbm9JbmxpbmVcIlxuICAgICAgY2xhc3M9XCJjZHMtLXNlbGVjdC1pbnB1dC0taW5saW5lX193cmFwcGVyXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9JbmxpbmVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBzZWxlY3QgZWxlbWVudDogZHluYW1pY2FsbHkgcHJvamVjdGVkIGJhc2VkIG9uICdkaXNwbGF5JyB2YXJpYW50IC0tPlxuPG5nLXRlbXBsYXRlICNub0lubGluZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2RzLS1zZWxlY3QtaW5wdXRfX3dyYXBwZXIgZXh0ZW5kXCJcbiAgICBbYXR0ci5kYXRhLWludmFsaWRdPVwiaW52YWxpZCA/IHRydWUgOiBudWxsXCJcbiAgPlxuICAgIDxzZWxlY3RcbiAgICAgICNzZWxlY3RcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgIGNsYXNzPVwiY2RzLS1zZWxlY3QtaW5wdXRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnY2RzLS1zZWxlY3QtaW5wdXQtLXhsJzogc2l6ZSA9PT0gJ3hsJyxcbiAgICAgICAgJ2Nkcy0tc2VsZWN0LWlucHV0LS1zbSc6IHNpemUgPT09ICdzbSdcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NlbGVjdD5cbiAgICA8c3ZnXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICBzdHlsZT1cIndpbGwtY2hhbmdlOiB0cmFuc2Zvcm1cIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzcz1cImNkcy0tc2VsZWN0X19hcnJvd1wiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8cGF0aCBkPVwiTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gICAgPHN2Z1xuICAgICAgKm5nSWY9XCJpbnZhbGlkXCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCJcbiAgICAgIHN0eWxlPVwid2lsbC1jaGFuZ2U6IHRyYW5zZm9ybVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19pbnZhbGlkLWljb25cIlxuICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk04LDFDNC4yLDEsMSw0LjIsMSw4czMuMiw3LDcsN3M3LTMuMSw3LTdTMTEuOSwxLDgsMXogTTcuNSw0aDF2NWgtMUM3LjUsOSw3LjUsNCw3LjUsNHogTTgsMTIuMiAgICBjLTAuNCwwLTAuOC0wLjQtMC44LTAuOHMwLjMtMC44LDAuOC0wLjhjMC40LDAsMC44LDAuNCwwLjgsMC44UzguNCwxMi4yLDgsMTIuMnpcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNNy41LDRoMXY1aC0xQzcuNSw5LDcuNSw0LDcuNSw0eiBNOCwxMi4yYy0wLjQsMC0wLjgtMC40LTAuOC0wLjhzMC4zLTAuOCwwLjgtMC44ICAgIGMwLjQsMCwwLjgsMC40LDAuOCwwLjhTOC40LDEyLjIsOCwxMi4yelwiXG4gICAgICAgIGRhdGEtaWNvbi1wYXRoPVwiaW5uZXItcGF0aFwiXG4gICAgICAgIG9wYWNpdHk9XCIwXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJpbnZhbGlkICYmIGludmFsaWRUZXh0ICYmICF3YXJuXCJcbiAgICByb2xlPVwiYWxlcnRcIlxuICAgIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCJcbiAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7XG4gICAgICBpbnZhbGlkVGV4dFxuICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaW52YWxpZCAmJiB3YXJuXCIgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3sgd2FyblRleHQgfX08L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|