@tft/crispr-forms 14.0.1-rc.0 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/public-api.mjs +5 -0
- package/esm2020/src/index.mjs +2 -0
- package/esm2020/src/lib/crispr-forms.module.mjs +57 -0
- package/esm2020/src/lib/field-component-map.const.mjs +27 -0
- package/esm2020/src/lib/field.directive.mjs +69 -0
- package/esm2020/src/lib/form/form.component.mjs +63 -0
- package/esm2020/src/lib/form-group-list/form-group-list.component.mjs +93 -0
- package/esm2020/src/lib/form-group-list/index.mjs +2 -0
- package/esm2020/{lib → src/lib}/pipes/crispr-pipes.module.mjs +1 -1
- package/esm2020/src/lib/pipes/initial-control-value.pipe.mjs +21 -0
- package/esm2020/src/lib/public_api.mjs +3 -0
- package/esm2020/src/lib/sub-group/index.mjs +3 -0
- package/esm2020/src/lib/sub-group/sub-group.component.mjs +21 -0
- package/esm2020/src/lib/sub-group/sub-group.module.mjs +42 -0
- package/esm2020/tft-crispr-forms.mjs +2 -2
- package/esm2020/ui/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +130 -0
- package/esm2020/ui/autocomplete-chiplist-field/public-api.mjs +2 -0
- package/esm2020/ui/autocomplete-chiplist-field/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +5 -0
- package/esm2020/ui/autocomplete-field/autocomplete-field.component.mjs +93 -0
- package/esm2020/ui/autocomplete-field/public-api.mjs +2 -0
- package/esm2020/ui/autocomplete-field/tft-crispr-forms-ui-autocomplete-field.mjs +5 -0
- package/esm2020/ui/button/button.component.mjs +49 -0
- package/esm2020/ui/button/public-api.mjs +2 -0
- package/esm2020/ui/button/tft-crispr-forms-ui-button.mjs +5 -0
- package/esm2020/ui/checkbox-field/checkbox-field.component.mjs +42 -0
- package/esm2020/ui/checkbox-field/public-api.mjs +2 -0
- package/esm2020/ui/checkbox-field/tft-crispr-forms-ui-checkbox-field.mjs +5 -0
- package/esm2020/ui/datepicker-field/datepicker-field.component.mjs +63 -0
- package/esm2020/ui/datepicker-field/public-api.mjs +2 -0
- package/esm2020/ui/datepicker-field/tft-crispr-forms-ui-datepicker-field.mjs +5 -0
- package/esm2020/ui/divider/divider.component.mjs +28 -0
- package/esm2020/ui/divider/public-api.mjs +2 -0
- package/esm2020/ui/divider/tft-crispr-forms-ui-divider.mjs +5 -0
- package/esm2020/ui/field-container/field-container.component.mjs +58 -0
- package/esm2020/ui/field-container/public-api.mjs +2 -0
- package/esm2020/ui/field-container/tft-crispr-forms-ui-field-container.mjs +5 -0
- package/esm2020/ui/file-dropzone/file-dropzone.directive.mjs +40 -0
- package/esm2020/ui/file-dropzone/public-api.mjs +2 -0
- package/esm2020/ui/file-dropzone/tft-crispr-forms-ui-file-dropzone.mjs +5 -0
- package/esm2020/ui/file-upload-field/file-upload-field.component.mjs +108 -0
- package/esm2020/ui/file-upload-field/public-api.mjs +2 -0
- package/esm2020/ui/file-upload-field/tft-crispr-forms-ui-file-upload-field.mjs +5 -0
- package/esm2020/ui/heading/heading.component.mjs +31 -0
- package/esm2020/ui/heading/public-api.mjs +2 -0
- package/esm2020/ui/heading/tft-crispr-forms-ui-heading.mjs +5 -0
- package/esm2020/ui/image-upload-field/image-upload-field.component.mjs +179 -0
- package/esm2020/ui/image-upload-field/public-api.mjs +2 -0
- package/esm2020/ui/image-upload-field/tft-crispr-forms-ui-image-upload-field.mjs +5 -0
- package/esm2020/ui/info/info.component.mjs +23 -0
- package/esm2020/ui/info/public-api.mjs +2 -0
- package/esm2020/ui/info/tft-crispr-forms-ui-info.mjs +5 -0
- package/esm2020/ui/input-field/input-field.component.mjs +41 -0
- package/esm2020/ui/input-field/public-api.mjs +2 -0
- package/esm2020/ui/input-field/tft-crispr-forms-ui-input-field.mjs +5 -0
- package/esm2020/ui/option/option.component.mjs +19 -0
- package/esm2020/ui/option/public-api.mjs +2 -0
- package/esm2020/ui/option/tft-crispr-forms-ui-option.mjs +5 -0
- package/esm2020/ui/public-api.mjs +7 -0
- package/esm2020/ui/radio-field/public-api.mjs +2 -0
- package/esm2020/ui/radio-field/radio-field.component.mjs +39 -0
- package/esm2020/ui/radio-field/tft-crispr-forms-ui-radio-field.mjs +5 -0
- package/esm2020/ui/select-field/public-api.mjs +2 -0
- package/esm2020/ui/select-field/select-field.component.mjs +73 -0
- package/esm2020/ui/select-field/tft-crispr-forms-ui-select-field.mjs +5 -0
- package/esm2020/ui/selected-file/public-api.mjs +2 -0
- package/esm2020/ui/selected-file/selected-file.component.mjs +26 -0
- package/esm2020/ui/selected-file/tft-crispr-forms-ui-selected-file.mjs +5 -0
- package/esm2020/ui/slider-field/public-api.mjs +2 -0
- package/esm2020/ui/slider-field/slider-field.component.mjs +44 -0
- package/esm2020/ui/slider-field/tft-crispr-forms-ui-slider-field.mjs +5 -0
- package/esm2020/ui/textarea-field/public-api.mjs +2 -0
- package/esm2020/ui/textarea-field/textarea-field.component.mjs +42 -0
- package/esm2020/ui/textarea-field/tft-crispr-forms-ui-textarea-field.mjs +5 -0
- package/esm2020/ui/tft-crispr-forms-ui.mjs +5 -0
- package/esm2020/ui/unit-conversion-field/public-api.mjs +2 -0
- package/esm2020/ui/unit-conversion-field/tft-crispr-forms-ui-unit-conversion-field.mjs +5 -0
- package/esm2020/ui/unit-conversion-field/unit-conversion-field.component.mjs +84 -0
- package/esm2020/utils/abstracts/autocomplete-field.abstract.mjs +30 -0
- package/esm2020/utils/abstracts/crispr-control.mixin.mjs +27 -0
- package/esm2020/utils/abstracts/crispr-field.abstract.mjs +20 -0
- package/esm2020/utils/abstracts/index.mjs +4 -0
- package/esm2020/utils/functions/buildFormGroupFromConfig.mjs +28 -0
- package/esm2020/utils/functions/callOptionsIfFunction.mjs +4 -0
- package/esm2020/utils/functions/createControlForType.mjs +19 -0
- package/esm2020/utils/functions/filterOptionsByLabel.mjs +11 -0
- package/esm2020/utils/functions/image-compression.helpers.mjs +50 -0
- package/esm2020/utils/functions/index.mjs +8 -0
- package/esm2020/utils/functions/isControlConfig.mjs +7 -0
- package/esm2020/utils/functions/observablifyOptions.mjs +29 -0
- package/esm2020/utils/models/autocomplete-chiplist-field.config.mjs +2 -0
- package/esm2020/utils/models/autocomplete-field.config.mjs +2 -0
- package/esm2020/utils/models/button.config.mjs +2 -0
- package/esm2020/utils/models/checkbox-field.config.mjs +2 -0
- package/esm2020/utils/models/crispr-field.config.mjs +23 -0
- package/esm2020/utils/models/datepicker-field.config.mjs +2 -0
- package/esm2020/utils/models/divider.config.mjs +2 -0
- package/esm2020/utils/models/file-upload-field.config.mjs +2 -0
- package/esm2020/utils/models/form-group-list.config.mjs +2 -0
- package/esm2020/utils/models/heading.config.mjs +3 -0
- package/esm2020/utils/models/image-upload-field.config.mjs +2 -0
- package/esm2020/utils/models/index.mjs +18 -0
- package/esm2020/utils/models/input-field.config.mjs +2 -0
- package/esm2020/utils/models/radio-field.config.mjs +2 -0
- package/esm2020/utils/models/select-field.config.mjs +2 -0
- package/esm2020/utils/models/slider-field.config.mjs +2 -0
- package/esm2020/utils/models/textarea-field.config.mjs +2 -0
- package/esm2020/utils/models/unit-conversion-field.config.mjs +2 -0
- package/esm2020/utils/operators/form.operators.mjs +24 -0
- package/esm2020/utils/operators/index.mjs +2 -0
- package/esm2020/utils/public-api.mjs +5 -0
- package/esm2020/utils/tft-crispr-forms-utils.mjs +5 -0
- package/fesm2015/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +138 -0
- package/fesm2015/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-autocomplete-field.mjs +101 -0
- package/fesm2015/tft-crispr-forms-ui-autocomplete-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-button.mjs +55 -0
- package/fesm2015/tft-crispr-forms-ui-button.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-checkbox-field.mjs +49 -0
- package/fesm2015/tft-crispr-forms-ui-checkbox-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-datepicker-field.mjs +71 -0
- package/fesm2015/tft-crispr-forms-ui-datepicker-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-divider.mjs +34 -0
- package/fesm2015/tft-crispr-forms-ui-divider.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-field-container.mjs +64 -0
- package/fesm2015/tft-crispr-forms-ui-field-container.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs +47 -0
- package/fesm2015/tft-crispr-forms-ui-file-dropzone.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-file-upload-field.mjs +117 -0
- package/fesm2015/tft-crispr-forms-ui-file-upload-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-heading.mjs +37 -0
- package/fesm2015/tft-crispr-forms-ui-heading.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs +182 -0
- package/fesm2015/tft-crispr-forms-ui-image-upload-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-info.mjs +30 -0
- package/fesm2015/tft-crispr-forms-ui-info.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-input-field.mjs +48 -0
- package/fesm2015/tft-crispr-forms-ui-input-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-option.mjs +26 -0
- package/fesm2015/tft-crispr-forms-ui-option.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-radio-field.mjs +46 -0
- package/fesm2015/tft-crispr-forms-ui-radio-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-select-field.mjs +81 -0
- package/fesm2015/tft-crispr-forms-ui-select-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-selected-file.mjs +33 -0
- package/fesm2015/tft-crispr-forms-ui-selected-file.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-slider-field.mjs +51 -0
- package/fesm2015/tft-crispr-forms-ui-slider-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-textarea-field.mjs +49 -0
- package/fesm2015/tft-crispr-forms-ui-textarea-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui-unit-conversion-field.mjs +93 -0
- package/fesm2015/tft-crispr-forms-ui-unit-conversion-field.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-ui.mjs +12 -0
- package/fesm2015/tft-crispr-forms-ui.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms-utils.mjs +270 -0
- package/fesm2015/tft-crispr-forms-utils.mjs.map +1 -0
- package/fesm2015/tft-crispr-forms.mjs +131 -2128
- package/fesm2015/tft-crispr-forms.mjs.map +1 -1
- package/fesm2020/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs +137 -0
- package/fesm2020/tft-crispr-forms-ui-autocomplete-chiplist-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-autocomplete-field.mjs +100 -0
- package/fesm2020/tft-crispr-forms-ui-autocomplete-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-button.mjs +55 -0
- package/fesm2020/tft-crispr-forms-ui-button.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-checkbox-field.mjs +49 -0
- package/fesm2020/tft-crispr-forms-ui-checkbox-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-datepicker-field.mjs +70 -0
- package/fesm2020/tft-crispr-forms-ui-datepicker-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-divider.mjs +34 -0
- package/fesm2020/tft-crispr-forms-ui-divider.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-field-container.mjs +65 -0
- package/fesm2020/tft-crispr-forms-ui-field-container.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs +47 -0
- package/fesm2020/tft-crispr-forms-ui-file-dropzone.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-file-upload-field.mjs +115 -0
- package/fesm2020/tft-crispr-forms-ui-file-upload-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-heading.mjs +37 -0
- package/fesm2020/tft-crispr-forms-ui-heading.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-image-upload-field.mjs +185 -0
- package/fesm2020/tft-crispr-forms-ui-image-upload-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-info.mjs +30 -0
- package/fesm2020/tft-crispr-forms-ui-info.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-input-field.mjs +48 -0
- package/fesm2020/tft-crispr-forms-ui-input-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-option.mjs +26 -0
- package/fesm2020/tft-crispr-forms-ui-option.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-radio-field.mjs +46 -0
- package/fesm2020/tft-crispr-forms-ui-radio-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-select-field.mjs +80 -0
- package/fesm2020/tft-crispr-forms-ui-select-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-selected-file.mjs +33 -0
- package/fesm2020/tft-crispr-forms-ui-selected-file.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-slider-field.mjs +51 -0
- package/fesm2020/tft-crispr-forms-ui-slider-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-textarea-field.mjs +49 -0
- package/fesm2020/tft-crispr-forms-ui-textarea-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui-unit-conversion-field.mjs +91 -0
- package/fesm2020/tft-crispr-forms-ui-unit-conversion-field.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-ui.mjs +12 -0
- package/fesm2020/tft-crispr-forms-ui.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms-utils.mjs +269 -0
- package/fesm2020/tft-crispr-forms-utils.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms.mjs +129 -2119
- package/fesm2020/tft-crispr-forms.mjs.map +1 -1
- package/index.d.ts +5 -1
- package/package.json +179 -4
- package/public-api.d.ts +3 -0
- package/src/index.d.ts +1 -0
- package/src/lib/crispr-forms.module.d.ts +15 -0
- package/src/lib/field-component-map.const.d.ts +42 -0
- package/{lib → src/lib}/field.directive.d.ts +4 -10
- package/{lib → src/lib}/form/form.component.d.ts +2 -12
- package/{lib → src/lib}/form-group-list/form-group-list.component.d.ts +12 -14
- package/{lib → src/lib}/form-group-list/index.d.ts +0 -1
- package/{lib → src/lib}/pipes/crispr-pipes.module.d.ts +0 -0
- package/{lib → src/lib}/pipes/initial-control-value.pipe.d.ts +1 -1
- package/src/lib/public_api.d.ts +2 -0
- package/{lib → src/lib}/sub-group/index.d.ts +0 -0
- package/{lib → src/lib}/sub-group/sub-group.component.d.ts +11 -13
- package/{lib → src/lib}/sub-group/sub-group.module.d.ts +2 -2
- package/tft-crispr-forms-14.0.1.tgz +0 -0
- package/ui/README.md +3 -0
- package/{lib/material → ui}/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +2 -18
- package/ui/autocomplete-chiplist-field/index.d.ts +5 -0
- package/ui/autocomplete-chiplist-field/public-api.d.ts +1 -0
- package/{lib/material → ui}/autocomplete-field/autocomplete-field.component.d.ts +2 -16
- package/ui/autocomplete-field/index.d.ts +5 -0
- package/ui/autocomplete-field/public-api.d.ts +1 -0
- package/ui/button/button.component.d.ts +15 -0
- package/ui/button/index.d.ts +5 -0
- package/ui/button/public-api.d.ts +1 -0
- package/ui/checkbox-field/checkbox-field.component.d.ts +21 -0
- package/ui/checkbox-field/index.d.ts +5 -0
- package/ui/checkbox-field/public-api.d.ts +1 -0
- package/ui/datepicker-field/datepicker-field.component.d.ts +30 -0
- package/ui/datepicker-field/index.d.ts +5 -0
- package/ui/datepicker-field/public-api.d.ts +1 -0
- package/ui/divider/divider.component.d.ts +9 -0
- package/ui/divider/index.d.ts +5 -0
- package/ui/divider/public-api.d.ts +1 -0
- package/{lib → ui}/field-container/field-container.component.d.ts +2 -9
- package/ui/field-container/index.d.ts +5 -0
- package/{lib/field-container/index.d.ts → ui/field-container/public-api.d.ts} +0 -0
- package/{lib/material/file-upload → ui/file-dropzone}/file-dropzone.directive.d.ts +1 -1
- package/ui/file-dropzone/index.d.ts +5 -0
- package/{lib/material/file-upload/index.d.ts → ui/file-dropzone/public-api.d.ts} +0 -1
- package/ui/file-upload-field/file-upload-field.component.d.ts +37 -0
- package/ui/file-upload-field/index.d.ts +5 -0
- package/ui/file-upload-field/public-api.d.ts +1 -0
- package/ui/heading/heading.component.d.ts +8 -0
- package/ui/heading/index.d.ts +5 -0
- package/ui/heading/public-api.d.ts +1 -0
- package/ui/image-upload-field/image-upload-field.component.d.ts +48 -0
- package/ui/image-upload-field/index.d.ts +5 -0
- package/{lib/material/image-upload-field/index.d.ts → ui/image-upload-field/public-api.d.ts} +0 -0
- package/ui/index.d.ts +5 -0
- package/ui/info/index.d.ts +5 -0
- package/ui/info/info.component.d.ts +7 -0
- package/ui/info/public-api.d.ts +1 -0
- package/ui/input-field/index.d.ts +5 -0
- package/ui/input-field/input-field.component.d.ts +22 -0
- package/ui/input-field/public-api.d.ts +1 -0
- package/ui/option/index.d.ts +5 -0
- package/ui/option/option.component.d.ts +7 -0
- package/{lib/material/option/index.d.ts → ui/option/public-api.d.ts} +0 -0
- package/ui/public-api.d.ts +5 -0
- package/ui/radio-field/index.d.ts +5 -0
- package/ui/radio-field/public-api.d.ts +1 -0
- package/ui/radio-field/radio-field.component.d.ts +23 -0
- package/ui/select-field/index.d.ts +5 -0
- package/ui/select-field/public-api.d.ts +1 -0
- package/ui/select-field/select-field.component.d.ts +32 -0
- package/ui/selected-file/index.d.ts +5 -0
- package/ui/selected-file/public-api.d.ts +1 -0
- package/ui/selected-file/selected-file.component.d.ts +10 -0
- package/ui/slider-field/index.d.ts +5 -0
- package/ui/slider-field/public-api.d.ts +1 -0
- package/ui/slider-field/slider-field.component.d.ts +25 -0
- package/ui/textarea-field/index.d.ts +5 -0
- package/ui/textarea-field/public-api.d.ts +1 -0
- package/ui/textarea-field/textarea-field.component.d.ts +21 -0
- package/ui/unit-conversion-field/index.d.ts +5 -0
- package/ui/unit-conversion-field/public-api.d.ts +1 -0
- package/ui/unit-conversion-field/unit-conversion-field.component.d.ts +36 -0
- package/utils/README.md +3 -0
- package/{lib → utils}/abstracts/autocomplete-field.abstract.d.ts +0 -0
- package/{lib → utils}/abstracts/crispr-control.mixin.d.ts +0 -0
- package/{lib → utils}/abstracts/crispr-field.abstract.d.ts +1 -1
- package/{lib → utils}/abstracts/index.d.ts +0 -0
- package/utils/functions/buildFormGroupFromConfig.d.ts +9 -0
- package/utils/functions/callOptionsIfFunction.d.ts +3 -0
- package/utils/functions/createControlForType.d.ts +9 -0
- package/utils/functions/filterOptionsByLabel.d.ts +7 -0
- package/utils/functions/image-compression.helpers.d.ts +5 -0
- package/utils/functions/index.d.ts +7 -0
- package/utils/functions/isControlConfig.d.ts +5 -0
- package/utils/functions/observablifyOptions.d.ts +12 -0
- package/utils/index.d.ts +5 -0
- package/{lib → utils}/models/autocomplete-chiplist-field.config.d.ts +2 -1
- package/{lib → utils}/models/autocomplete-field.config.d.ts +1 -2
- package/{lib → utils}/models/button.config.d.ts +0 -0
- package/{lib → utils}/models/checkbox-field.config.d.ts +1 -2
- package/{lib → utils}/models/crispr-field.config.d.ts +1 -10
- package/{lib → utils}/models/datepicker-field.config.d.ts +1 -2
- package/{lib → utils}/models/divider.config.d.ts +1 -1
- package/{lib → utils}/models/file-upload-field.config.d.ts +9 -4
- package/{lib → utils}/models/form-group-list.config.d.ts +1 -2
- package/{lib → utils}/models/heading.config.d.ts +1 -2
- package/{lib → utils}/models/image-upload-field.config.d.ts +2 -1
- package/{lib → utils}/models/index.d.ts +0 -0
- package/{lib → utils}/models/input-field.config.d.ts +1 -2
- package/{lib → utils}/models/radio-field.config.d.ts +0 -0
- package/{lib → utils}/models/select-field.config.d.ts +1 -2
- package/{lib → utils}/models/slider-field.config.d.ts +1 -2
- package/{lib → utils}/models/textarea-field.config.d.ts +1 -2
- package/{lib → utils}/models/unit-conversion-field.config.d.ts +1 -2
- package/{lib → utils/operators}/form.operators.d.ts +0 -0
- package/utils/operators/index.d.ts +1 -0
- package/utils/public-api.d.ts +4 -0
- package/esm2020/index.mjs +0 -2
- package/esm2020/lib/abstracts/autocomplete-field.abstract.mjs +0 -30
- package/esm2020/lib/abstracts/crispr-control.mixin.mjs +0 -27
- package/esm2020/lib/abstracts/crispr-field.abstract.mjs +0 -17
- package/esm2020/lib/abstracts/index.mjs +0 -4
- package/esm2020/lib/crispr-forms.module.mjs +0 -65
- package/esm2020/lib/field-component-map.const.mjs +0 -28
- package/esm2020/lib/field-container/field-container.component.mjs +0 -83
- package/esm2020/lib/field-container/index.mjs +0 -2
- package/esm2020/lib/field.directive.mjs +0 -88
- package/esm2020/lib/form/form.component.mjs +0 -88
- package/esm2020/lib/form-group-list/form-group-list.component.mjs +0 -77
- package/esm2020/lib/form-group-list/form-group-list.module.mjs +0 -52
- package/esm2020/lib/form-group-list/index.mjs +0 -3
- package/esm2020/lib/form.helpers.mjs +0 -190
- package/esm2020/lib/form.operators.mjs +0 -24
- package/esm2020/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +0 -165
- package/esm2020/lib/material/autocomplete-field/autocomplete-field.component.mjs +0 -124
- package/esm2020/lib/material/button/button.component.mjs +0 -70
- package/esm2020/lib/material/checkbox-field/checkbox-field.component.mjs +0 -69
- package/esm2020/lib/material/datepicker-field/datepicker-field.component.mjs +0 -91
- package/esm2020/lib/material/divider/divider.component.mjs +0 -46
- package/esm2020/lib/material/file-upload/file-dropzone.directive.mjs +0 -39
- package/esm2020/lib/material/file-upload/file-upload.component.mjs +0 -143
- package/esm2020/lib/material/file-upload/index.mjs +0 -3
- package/esm2020/lib/material/heading/heading.component.mjs +0 -52
- package/esm2020/lib/material/image-upload-field/image-compression.helpers.mjs +0 -4
- package/esm2020/lib/material/image-upload-field/image-upload-field.component.mjs +0 -263
- package/esm2020/lib/material/image-upload-field/index.mjs +0 -2
- package/esm2020/lib/material/index.mjs +0 -18
- package/esm2020/lib/material/info/info.component.mjs +0 -44
- package/esm2020/lib/material/input-field/input-field.component.mjs +0 -66
- package/esm2020/lib/material/material.module.mjs +0 -96
- package/esm2020/lib/material/option/index.mjs +0 -2
- package/esm2020/lib/material/option/option.component.mjs +0 -39
- package/esm2020/lib/material/radio-field/radio-field.component.mjs +0 -60
- package/esm2020/lib/material/select-field/select-field.component.mjs +0 -108
- package/esm2020/lib/material/selected-file/selected-file.component.mjs +0 -45
- package/esm2020/lib/material/slider-field/slider-field.component.mjs +0 -69
- package/esm2020/lib/material/textarea-field/textarea-field.component.mjs +0 -67
- package/esm2020/lib/material/unit-conversion-field/unit-conversion-field.component.mjs +0 -115
- package/esm2020/lib/models/autocomplete-chiplist-field.config.mjs +0 -2
- package/esm2020/lib/models/autocomplete-field.config.mjs +0 -2
- package/esm2020/lib/models/button.config.mjs +0 -2
- package/esm2020/lib/models/checkbox-field.config.mjs +0 -2
- package/esm2020/lib/models/crispr-field.config.mjs +0 -23
- package/esm2020/lib/models/datepicker-field.config.mjs +0 -2
- package/esm2020/lib/models/divider.config.mjs +0 -2
- package/esm2020/lib/models/file-upload-field.config.mjs +0 -2
- package/esm2020/lib/models/form-group-list.config.mjs +0 -2
- package/esm2020/lib/models/heading.config.mjs +0 -3
- package/esm2020/lib/models/image-upload-field.config.mjs +0 -2
- package/esm2020/lib/models/index.mjs +0 -18
- package/esm2020/lib/models/input-field.config.mjs +0 -2
- package/esm2020/lib/models/radio-field.config.mjs +0 -2
- package/esm2020/lib/models/select-field.config.mjs +0 -2
- package/esm2020/lib/models/slider-field.config.mjs +0 -2
- package/esm2020/lib/models/textarea-field.config.mjs +0 -2
- package/esm2020/lib/models/unit-conversion-field.config.mjs +0 -2
- package/esm2020/lib/pipes/initial-control-value.pipe.mjs +0 -20
- package/esm2020/lib/public_api.mjs +0 -10
- package/esm2020/lib/sub-group/index.mjs +0 -3
- package/esm2020/lib/sub-group/sub-group.component.mjs +0 -20
- package/esm2020/lib/sub-group/sub-group.module.mjs +0 -43
- package/lib/crispr-forms.module.d.ts +0 -16
- package/lib/field-component-map.const.d.ts +0 -28
- package/lib/form-group-list/form-group-list.module.d.ts +0 -15
- package/lib/form.helpers.d.ts +0 -88
- package/lib/material/button/button.component.d.ts +0 -26
- package/lib/material/checkbox-field/checkbox-field.component.d.ts +0 -34
- package/lib/material/datepicker-field/datepicker-field.component.d.ts +0 -45
- package/lib/material/divider/divider.component.d.ts +0 -17
- package/lib/material/file-upload/file-upload.component.d.ts +0 -54
- package/lib/material/heading/heading.component.d.ts +0 -17
- package/lib/material/image-upload-field/image-compression.helpers.d.ts +0 -1
- package/lib/material/image-upload-field/image-upload-field.component.d.ts +0 -68
- package/lib/material/index.d.ts +0 -17
- package/lib/material/info/info.component.d.ts +0 -15
- package/lib/material/input-field/input-field.component.d.ts +0 -35
- package/lib/material/material.module.d.ts +0 -26
- package/lib/material/option/option.component.d.ts +0 -14
- package/lib/material/radio-field/radio-field.component.d.ts +0 -35
- package/lib/material/select-field/select-field.component.d.ts +0 -48
- package/lib/material/selected-file/selected-file.component.d.ts +0 -17
- package/lib/material/slider-field/slider-field.component.d.ts +0 -38
- package/lib/material/textarea-field/textarea-field.component.d.ts +0 -35
- package/lib/material/unit-conversion-field/unit-conversion-field.component.d.ts +0 -52
- package/lib/public_api.d.ts +0 -9
- package/tft-crispr-forms-14.0.1-rc.0.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tft-crispr-forms.mjs","sources":["../../../../libs/crispr-forms/src/lib/models/select-field.config.ts","../../../../libs/crispr-forms/src/lib/models/crispr-field.config.ts","../../../../libs/crispr-forms/src/lib/models/heading.config.ts","../../../../libs/crispr-forms/src/lib/form.operators.ts","../../../../libs/crispr-forms/src/lib/form.helpers.ts","../../../../libs/crispr-forms/src/lib/abstracts/crispr-control.mixin.ts","../../../../libs/crispr-forms/src/lib/abstracts/crispr-field.abstract.ts","../../../../libs/crispr-forms/src/lib/abstracts/autocomplete-field.abstract.ts","../../../../libs/crispr-forms/src/lib/material/info/info.component.ts","../../../../libs/crispr-forms/src/lib/material/info/info.component.html","../../../../libs/crispr-forms/src/lib/material/heading/heading.component.ts","../../../../libs/crispr-forms/src/lib/material/heading/heading.component.html","../../../../libs/crispr-forms/src/lib/field-container/field-container.component.ts","../../../../libs/crispr-forms/src/lib/field-container/field-container.component.html","../../../../libs/crispr-forms/src/lib/material/input-field/input-field.component.ts","../../../../libs/crispr-forms/src/lib/material/input-field/input-field.component.html","../../../../libs/crispr-forms/src/lib/field-component-map.const.ts","../../../../libs/crispr-forms/src/lib/field.directive.ts","../../../../libs/crispr-forms/src/lib/material/option/option.component.ts","../../../../libs/crispr-forms/src/lib/material/option/option.component.html","../../../../libs/crispr-forms/src/lib/material/select-field/select-field.component.ts","../../../../libs/crispr-forms/src/lib/material/select-field/select-field.component.html","../../../../libs/crispr-forms/src/lib/material/autocomplete-field/autocomplete-field.component.ts","../../../../libs/crispr-forms/src/lib/material/autocomplete-field/autocomplete-field.component.html","../../../../libs/crispr-forms/src/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.ts","../../../../libs/crispr-forms/src/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.html","../../../../libs/crispr-forms/src/lib/material/checkbox-field/checkbox-field.component.ts","../../../../libs/crispr-forms/src/lib/material/checkbox-field/checkbox-field.component.html","../../../../libs/crispr-forms/src/lib/material/textarea-field/textarea-field.component.ts","../../../../libs/crispr-forms/src/lib/material/textarea-field/textarea-field.component.html","../../../../libs/crispr-forms/src/lib/material/slider-field/slider-field.component.ts","../../../../libs/crispr-forms/src/lib/material/slider-field/slider-field.component.html","../../../../libs/crispr-forms/src/lib/material/button/button.component.ts","../../../../libs/crispr-forms/src/lib/material/button/button.component.html","../../../../libs/crispr-forms/src/lib/material/datepicker-field/datepicker-field.component.ts","../../../../libs/crispr-forms/src/lib/material/datepicker-field/datepicker-field.component.html","../../../../libs/crispr-forms/src/lib/material/divider/divider.component.ts","../../../../libs/crispr-forms/src/lib/material/divider/divider.component.html","../../../../libs/crispr-forms/src/lib/material/radio-field/radio-field.component.ts","../../../../libs/crispr-forms/src/lib/material/radio-field/radio-field.component.html","../../../../libs/crispr-forms/src/lib/material/unit-conversion-field/unit-conversion-field.component.ts","../../../../libs/crispr-forms/src/lib/material/unit-conversion-field/unit-conversion-field.component.html","../../../../libs/crispr-forms/src/lib/material/file-upload/file-dropzone.directive.ts","../../../../libs/crispr-forms/src/lib/material/selected-file/selected-file.component.ts","../../../../libs/crispr-forms/src/lib/material/selected-file/selected-file.component.html","../../../../libs/crispr-forms/src/lib/material/file-upload/file-upload.component.ts","../../../../libs/crispr-forms/src/lib/material/file-upload/file-upload.component.html","../../../../libs/crispr-forms/src/lib/material/image-upload-field/image-compression.helpers.ts","../../../../libs/crispr-forms/src/lib/material/image-upload-field/image-upload-field.component.ts","../../../../libs/crispr-forms/src/lib/material/image-upload-field/image-upload-field.component.html","../../../../libs/crispr-forms/src/lib/material/material.module.ts","../../../../libs/crispr-forms/src/lib/pipes/initial-control-value.pipe.ts","../../../../libs/crispr-forms/src/lib/pipes/crispr-pipes.module.ts","../../../../libs/crispr-forms/src/lib/form/form.component.ts","../../../../libs/crispr-forms/src/lib/form/form.component.html","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.ts","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.html","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.module.ts","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.ts","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.html","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.module.ts","../../../../libs/crispr-forms/src/lib/crispr-forms.module.ts","../../../../libs/crispr-forms/src/tft-crispr-forms.ts"],"sourcesContent":["import { CrisprControlConfig } from '../models';\nimport { Observable } from 'rxjs';\nimport { FormGroup } from '@angular/forms';\nimport { ControlType, FieldDescriptors, Info, MatFieldProperties } from './crispr-field.config';\n\nexport interface SelectFieldConfig extends Omit<CrisprControlConfig, 'placeholder'>,\n FieldDescriptors,\n MatFieldProperties {\n controlType: ControlType.SELECT,\n emptyOptionsMessage?: string;\n multiple?: boolean;\n enableToggleAll?: boolean;\n options: OptionsType;\n}\n\nexport type OptionsType = SelectOption[] | Observable<SelectOption[]> | OptionsCallback | Promise<SelectOption[]>;\n\nexport type OptionsCallback = (group?: FormGroup) => OptionsType;\nexport type ReactiveOptionsCallback = (group?: FormGroup) => Observable<SelectOption[]>;\n// tslint:disable-next-line: max-line-length\nexport type AutocompleteOptionsCallback = (group?: FormGroup, searchTerm?: string) => OptionsType;\nexport interface SelectOption {\n label: string;\n value: any;\n imageUrl?: string;\n info?: Info;\n}\n\nexport const DEFAULT_EMPTY_OPTIONS_MESSAGE = 'No Items';\n","import { FormGroup, ValidatorFn } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { TooltipPosition } from '@angular/material/tooltip';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { ErrorDictionary } from '@tft/form-validation-handler';\nimport {\n ComputeFieldConfig,\n CheckControlConfig,\n CheckControlsConfig,\n} from '../form.helpers';\nimport type {\n SelectFieldConfig,\n HeadingConfig,\n ButtonConfig,\n DatepickerFieldConfig,\n InputFieldConfig,\n CheckboxFieldConfig,\n TextareaFieldConfig,\n AutocompleteFieldConfig,\n FormGroupListConfig,\n AutocompleteChiplistFieldConfig,\n SliderFieldConfig,\n DividerConfig,\n SelectOption,\n RadioFieldConfig,\n ImageUploadFieldConfig,\n FileUploadFieldConfig,\n UnitConversionFieldConfig\n} from '../models';\n\nimport { ThemePalette } from '@angular/material/core';\n\n// export type ControlType = keyof typeof FIELD_COMPONENTS;\nexport enum ControlType {\n AUTOCOMPLETE = 'autocomplete',\n AUTOCOMPLETE_CHIPLIST = 'autocompleteChiplist',\n BUTTON = 'button',\n CHECKBOX = 'checkbox',\n CUSTOM = 'custom',\n DATEPICKER = 'datepicker',\n DIVIDER = 'divider',\n FILE_UPLOAD = 'fileUpload',\n HEADING = 'heading',\n INPUT = 'input',\n IMAGE_UPLOAD = 'imageUpload',\n GROUP_LIST = 'groupList',\n RADIO = 'radio',\n SELECT = 'select',\n SLIDER = 'slider',\n SUB_GROUP = 'subGroup',\n TEXTAREA = 'textarea',\n UNIT_CONVERSION = 'unitConversion',\n}\n\n/**\n * The base interface for all the fields in the form's config\n */\nexport interface CrisprFieldConfig {\n controlType?: ControlType;\n classes?: string[];\n component?: any; // TODO: Define this better\n}\n\n// export function isCustomConfig(config: AnyFieldConfig): config is CustomFieldConfig {\n// return 'component' in config;\n// }\n// export interface CustomFieldConfig extends CrisprFieldConfig {\n// controlType: ControlType.CUSTOM;\n// component?: any; // TODO: type better\n// }\ntype RestrictedControlName<M> = M extends null ? string : keyof M;\n/**\n * The base interface for all control configs\n */\nexport interface CrisprControlConfig<M = null> extends CrisprFieldConfig {\n controlName: RestrictedControlName<M>\n controlType: ControlType;\n validators?: ValidatorFn[];\n // TODO: Determine if this is necessary\n /**\n * @deprecated please us computeValue instead\n */\n computeFieldConfig?: ComputeFieldConfig;\n computeValue?: (group: FormGroup) => Observable<unknown>;\n disabledCallback?: (group: FormGroup, config?: any) => Observable<boolean>;\n /**\n * @deprecated this configuration isn't needed as all situations can be handled using `disabledCallback`\n */\n disabledCallbackConfig?: CheckControlConfig | CheckControlsConfig | any; // any is required for user defined configs\n /**\n * Hide the control when disabled\n * @default false\n */\n hideDisabled?: boolean;\n heading?: HeadingConfig;\n hint?: string;\n}\n\n/**\n * Holds properties for control fields that describe field behavior to users\n */\nexport interface FieldDescriptors {\n label: string;\n info?: Info;\n fieldSuffix?: string;\n placeholder?: string;\n}\n\nexport interface MatFieldProperties {\n appearance?: MatFormFieldAppearance;\n color?: ThemePalette;\n}\n\nexport interface Info {\n content: string;\n tooltipPosition?: TooltipPosition;\n iconName?: string;\n}\n\n// TODO: having AnyFieldConfig as the default for C seems redundant and silly\nexport interface AbstractGroupConfig<C extends CrisprFieldConfig = AnyFieldConfig> {\n // this union is needed, it joins any custom config provided by users to our default config options\n fields?: (AnyFieldConfig | C)[];\n}\nexport interface FormConfig<C = AnyFieldConfig> extends AbstractGroupConfig<C> {\n classes?: string[];\n errorDictionary?: ErrorDictionary;\n autoComplete?: string;\n /** @deprecated use autoComplete */\n autocomplete?: string;\n validators?: ValidatorFn[];\n}\n/**\n * Configuration for SubGroup components\n */\nexport interface SubGroupConfig extends CrisprControlConfig, AbstractGroupConfig<any> {\n controlType: ControlType.SUB_GROUP;\n}\n\nexport type AnyFieldConfig = InputFieldConfig\n | SelectFieldConfig\n | RadioFieldConfig\n | FormGroupListConfig\n | SubGroupConfig\n | AutocompleteFieldConfig\n | AutocompleteChiplistFieldConfig\n | TextareaFieldConfig\n | CheckboxFieldConfig\n | DatepickerFieldConfig\n | SliderFieldConfig\n | FileUploadFieldConfig\n | ImageUploadFieldConfig\n | HeadingConfig\n | ButtonConfig\n | DividerConfig\n | UnitConversionFieldConfig;\n // | CustomFieldConfig;\n\n\nexport type ControlValue<T = any> = boolean | string | number | Date | SelectOption | SelectOption[] | ControlGroupValue | T;\n\nexport type ControlGroupValue = {[key: string]: ControlValue};\n","import { CrisprFieldConfig, ControlType } from '../models';\nimport { FieldDescriptors } from './crispr-field.config';\n// This is done different from the rest of the fields because\n// when we use the heading inside of a field we don't want to have to\n// pass a controlType\nexport interface HeadingConfig extends\n Omit<CrisprFieldConfig, 'controlType'>,\n Omit<FieldDescriptors, 'placeholder' | 'fieldSuffix'> {\n // controlType is optional here because this component can be used as a crispr field where it needs a ControlType\n // or by a crispr field where it doesn't need a ControlType\n controlType?: ControlType.HEADING;\n typographyClass?: string;\n label: string;\n};\n","import { map } from 'rxjs/operators';\n\nexport function valueIn (values: string[]) {\n return map( (value: string) => {\n if (value) {\n return values.some(v => {\n if (isRegex(v)) {\n const trimmedStringForRegex = v.substr(1, v.length - 2);\n const regex = new RegExp(trimmedStringForRegex);\n return regex.test(value);\n } else {\n return v === value;\n }\n });\n } else {\n return false;\n }\n });\n}\n\nfunction isRegex(string: string) {\n return string.startsWith('/') && string.endsWith('/');\n}\n","import type {\n SelectOption,\n AnyFieldConfig,\n FormConfig,\n FormGroupListConfig,\n CrisprControlConfig,\n OptionsType,\n AutocompleteOptionsCallback,\n CrisprFieldConfig,\n ControlValue\n} from './models';\nimport {\n ControlType,\n} from './models/crispr-field.config'\nimport {\n from,\n Observable,\n of,\n isObservable,\n combineLatest,\n OperatorFunction\n} from 'rxjs';\nimport { FormGroup, FormArray, FormControl } from '@angular/forms';\nimport { valueIn } from './form.operators';\nimport { map, startWith } from 'rxjs/operators';\n\n/**\n * DYNAMIC FORM UTILS: a collection of pure/mostly pure functions that are useful both internally and for\n * developing the consuming app.\n *\n * They are sorted by use case: building out the form object; helper functions to use with the disabled$ function;\n * helper functions to use with the compute field function; and other logic shared between components\n */\n\n/**\n * Required configuration to use with checkControlForValues function\n */\nexport interface CheckControlConfig {\n // the control name to watch\n controlName: string;\n // the values to watch for\n values: string[];\n // the function to run on the boolean returned by the watcher\n evaluate?: (isValueInValues: boolean) => boolean;\n}\n\n/**\n* Watches a single control for a list of values, returns true when field value matches any value in list\n* unless an evaluate method is found on config, in which case that method is run on the returned boolean value\n* @param group the direct parent of the field we want to watch\n* @param config\n*/\nexport function checkControlForValues(group: FormGroup, config: CheckControlConfig): Observable<boolean> {\n // check that all the pieces we need are available\n if (config && config.controlName && Array.isArray(config.values)) {\n return getValueChanges(group, config.controlName).pipe(\n // return a boolean, true if value is in the values being watch for, otherwise false\n valueIn(config.values),\n map((isValueInValues: boolean) => {\n // since we can only check if the value is in the list of watched values, the evaluate function gives us\n // a chance to make other decisions based on if the boolean returned, e.g. return true if value not in watched values\n if ( config.evaluate && config.evaluate instanceof Function ) {\n return config.evaluate(isValueInValues);\n } else { return isValueInValues; }\n })\n );\n } else {\n //\n return of(true);\n }\n}\n\n/**\n * The required configuration for running the checkControlsForValues function.\n */\nexport interface CheckControlsConfig {\n // an array of controls to watch and the values to check for\n watchConfigs: CheckControlConfig[];\n // the function to run against the array of current field valueIn responses\n evaluate?: ( bools: boolean[] ) => boolean;\n}\n\n/**\n * Watches a list of fields for individual lists of values returning true when any field contains one\n * of the values being watched for, or optionally running a function on the array of resolved booleans\n * from the listed fields and returning a boolean\n * @param group the form group that has the fields to watch as direct descendants\n * @param config the configuration to use when calling the function\n */\nexport function checkControlsForValues(group: FormGroup, config: CheckControlsConfig): Observable<any> {\n // if no config is passed we just want to show the field, so we return an observable of true\n if (!config || !config.watchConfigs) { return of(true); }\n // we run checkControlForValues on every control in the list of WatchConfigs creating\n // an array of Observable watching fields for values\n const fieldTriggers = config.watchConfigs.map(watchConfig => {\n // resolves a boolean, true when field value matches a watched value, otherwise false\n return checkControlForValues(group, watchConfig);\n });\n\n return combineLatest(\n fieldTriggers\n ).pipe(\n startWith([true]),\n map((booleans: boolean[]) => {\n // if the user passed an evaluate function use it\n if (config.evaluate && config.evaluate instanceof Function) {\n return config.evaluate(booleans);\n } else { // otherwise we return true if any of the watched fields resolve to true\n return booleans.some(bool => bool);\n }\n })\n );\n}\n\n/**\n * The required configuration when running the computeValue function\n */\nexport interface ComputeFieldConfig<T = any, RT = any> {\n // array of control names who's values we want to watch\n controlNamesToWatch: string[];\n // the function we want to call on the array of watched values to compute the value of the control we\n computeCallback: (\n values: (T)[]\n ) => RT;\n}\n\n/**\n * Watches values on an array of fields, computing their values as they change\n * @param group the group to get the fields from, for now it can only be the parent of the computed field\n * @param computeFieldsConfig the configuration that drives the computation, holds the names to watch and the\n * computation function that get called against the array of values\n */\nexport function computeValueFromFields(group: FormGroup, computeFieldsConfig: ComputeFieldConfig): Observable<any> {\n // TODO: better checking\n const { controlNamesToWatch } = computeFieldsConfig;\n //creates an observable listener for each control in the controlNamesToWatch array\n return combineLatest(\n controlNamesToWatch.map(controlNameToWatch => getValueChanges(group, controlNameToWatch))\n ).pipe(\n // each time a watched field values changes a new array of the latest field values is pipe through to the\n // compute callback. Which runs the users logic on the values to compute this fields value\n map(valuesArray => computeFieldsConfig.computeCallback(valuesArray)),\n );\n}\n\n/**\n * A simple wrapper for doing error checking around getting the valueChanges observable from a control on a form group\n * @param group the form group we want to pull the observable from\n * @param controlName the name of the control who's value we want to subscribe to\n */\nfunction getValueChanges(group: FormGroup, controlName: string) {\n const control = group.get(controlName);\n if (!control) {\n throw new Error(`No control with controlName ${controlName}`, );\n }\n return control.valueChanges;\n}\n/**\n * TODO: move to utils library after library is built\n * Allows developer to pass an array of operators into the pipe of an Observable.\n * Useful for creating function with a variable amount of operators to be run\n * @param observable the observable to pass the operators to\n * @param operators array of operators to pipe\n */\nfunction pipeOperatorsIntoObservable(observable: Observable<any>, operators: OperatorFunction<any, any>[]) {\n try {\n return operators.reduce((obs: Observable<{}>, op: OperatorFunction<{}, {}>) => {\n return obs.pipe(op);\n }, observable);\n } catch {\n console.error('Unable to pipe operators into observable');\n return of(null);\n }\n}\n\n\nexport function callOptionsIfFunction(\n options: OptionsType | AutocompleteOptionsCallback,\n parentGroup?: FormGroup,\n searchString?: string\n): OptionsType {\n return options instanceof Function ? options(parentGroup, searchString) : options;\n}\n/**\n * The user can give us select options as an array, a function that resolves to a promise,\n * or an observable. This functions consumes any of those and returns an observable that\n * resolves an array of options\n *\n * @param options the options passed in from the config\n * @param emptyMessageOption the message to display when the array is empty\n */\nexport function observablifyOptions(\n options: OptionsType,\n parentGroup: FormGroup,\n searchString?: string,\n): Observable<SelectOption[]> {\n const calledOptions = callOptionsIfFunction(options, parentGroup, searchString);\n // if options are a promise\n const observableOptions = calledOptions instanceof Promise\n // convert to observable\n ? from(calledOptions)\n // if array that isn't empty\n : Array.isArray(calledOptions) && calledOptions.length\n // convert to observable\n ? of(calledOptions)\n // if observable\n : isObservable(calledOptions)\n // return it\n ? calledOptions\n // else an empty array\n : of([]);\n return observableOptions;\n}\n\n/**\n * Determines if the field config is for a form control (not a divider, heading or other non-control field)\n * */\nexport function isControlConfig(fieldConfig: CrisprFieldConfig): fieldConfig is CrisprControlConfig {\n return 'controlName' in fieldConfig;\n}\n/**\n * builds out form group based on config\n * @param config a configuration for a form group\n * @param value an object of initial values to pass in\n * @param group the form group to modify and build out\n */\nexport function buildFormGroupFromConfig(config: FormConfig, value = null, group: FormGroup = new FormGroup({}) ) {\n config.fields.forEach( (controlConfig: AnyFieldConfig) => {\n if (isControlConfig(controlConfig)) {\n // then add a control to the group using the controlName from configuration\n const {controlName} = controlConfig;\n if (group.get(controlName)) {\n group.removeControl(controlName);\n }\n // if there's a value object and it has a non-null/undefined value for this field use it.\n // Otherwise, default to null\n const controlValue = (value && value[controlName]) ?? null;\n const control = createControlForType(controlConfig, controlValue)\n group.addControl(controlName, control);\n }\n });\n group.setValidators(config.validators);\n return group;\n}\n\n/**\n * Analyze the config and build a form control to spec. Notice we don't use FormBuilder here\n * as we want to keep this function pure.\n * @param controlConfig the configuration object for the control to build\n * @param value an initial value to use if passed in\n */\nexport function createControlForType(controlConfig: AnyFieldConfig, value: ControlValue = null) {\n // build form control out based on the control type\n const control = controlConfig.controlType === ControlType.SUB_GROUP\n ? buildFormGroupFromConfig(controlConfig as FormConfig, value)\n : controlConfig.controlType === ControlType.GROUP_LIST\n ? new FormArray([], (controlConfig as FormGroupListConfig).validators)\n : new FormControl(\n value || null,\n (controlConfig as CrisprControlConfig).validators\n );\n\n return control;\n}\n\n/**\n * A basic filter function that filters the search string against the label of the options object\n * @param options the array of options to filter\n * @param searchString the string from the input\n */\nexport function filterOptionsByLabel(options: SelectOption[], searchString: string) {\n return options.filter(option => {\n return option.label && option.label.toLowerCase().includes(searchString.toLowerCase());\n });\n}\n","import { FormGroup, AbstractControl } from '@angular/forms';\nimport { CrisprControlConfig, ControlValue, ControlType } from '../models/crispr-field.config';\nimport { CrisprFieldComponent } from './crispr-field.abstract';\n\nexport function crisprControlMixin<C extends CrisprControlConfig>(BaseClass: typeof CrisprFieldComponent) {\n return class extends BaseClass<C> {\n config: C;\n group: FormGroup;\n control: AbstractControl;\n\n _value: ControlValue;\n set value(value: ControlValue) {\n this.setControlValue(value);\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.control = this.group.get(this.config.controlName);\n this.setControlValue(this.value);\n // setTimeouts are ugly but this seems to be the only way to get the computed field to compute initial values\n setTimeout(()=> {\n this.control.updateValueAndValidity();\n })\n }\n\n setControlValue(value: ControlValue) {\n if(value && this.control && this.config.controlType !== ControlType.SUB_GROUP) {\n this.control.setValue(value)\n }\n }\n }\n}\n","import type {\n CrisprFieldConfig,\n} from '../models';\nimport { OnInit, Directive } from '@angular/core';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class CrisprFieldComponent<C extends CrisprFieldConfig> implements OnInit {\n config: C;\n defaultConfig?: Partial<C>\n\n ngOnInit() {\n this.applyDefaultConfig();\n }\n\n applyDefaultConfig() {\n this.config = this.defaultConfig ? {...this.defaultConfig, ...this.config} : this.config;\n }\n}\n\n\n","import { OnInit, Directive } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap } from 'rxjs/operators';\n\nimport { crisprControlMixin } from './crispr-control.mixin';\nimport type { AutocompleteFieldConfig, AutocompleteChiplistFieldConfig, SelectOption } from '../models';\nimport { CrisprFieldComponent } from './crispr-field.abstract';\nimport { observablifyOptions } from '../form.helpers';\n\ntype AutocompleteConfigTypes = AutocompleteFieldConfig | AutocompleteChiplistFieldConfig;\n\nconst AbstractAutocompleteFieldMixin = crisprControlMixin<AutocompleteConfigTypes>(CrisprFieldComponent);\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class AbstractAutocompleteComponent<C>\n extends AbstractAutocompleteFieldMixin implements OnInit {\n // we need a separate control for the UI because of the way the material autocomplete chiplist works\n autocompleteInputControl = new FormControl('');\n options$: Observable<SelectOption[]>\n config: AutocompleteConfigTypes & C;\n ngOnInit() {\n super.ngOnInit();\n\n this.group.addControl(this.config.controlName, new FormControl());\n // filter options by the search string using either the default filter function or one passed in through config\n this.options$ = this.autocompleteInputControl.valueChanges.pipe(\n // this is needed to have the options panel to open on focus\n startWith(''),\n debounceTime(this.config.typeDebounceTime),\n map((searchText: string) => typeof searchText === 'string' ? searchText?.trim() : ''),\n distinctUntilChanged(),\n switchMap((searchText: string) => observablifyOptions(this.config.options, this.group, searchText)),\n shareReplay(1),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport type { Info } from '../../models';\n\n@Component({\n selector: 'crispr-info',\n templateUrl: './info.component.html',\n styleUrls: ['./info.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InfoComponent {\n\n @Input() info: Info;\n\n}\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatTooltipModule\n ],\n exports: [\n InfoComponent\n ],\n declarations: [\n InfoComponent\n ]\n})\n\nexport class InfoModule {\n}\n","<mat-icon\n *ngIf=\"info\"\n [matTooltip]=\"info.content\"\n [matTooltipPosition]=\"info.tooltipPosition || 'below'\"\n matSuffix>\n {{info.iconName || 'info'}}\n</mat-icon>\n","import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport type { HeadingConfig } from '../../models/heading.config';\nimport { CrisprFieldComponent } from '../../abstracts';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { InfoModule } from '../info/info.component';\n\nconst defaultConfig: Partial<HeadingConfig> = {\n typographyClass: 'mat-h3'\n}\n@Component({\n selector: 'crispr-heading',\n templateUrl: './heading.component.html',\n styleUrls: ['./heading.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeadingComponent extends CrisprFieldComponent<HeadingConfig>{\n @Input() config: HeadingConfig;\n defaultConfig = defaultConfig;\n}\n@NgModule({\n imports: [\n CommonModule,\n MatFormFieldModule,\n InfoModule\n ],\n exports: [\n HeadingComponent\n ],\n declarations: [\n HeadingComponent\n ]\n})\n\nexport class HeadingModule {\n}\n"," <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n","import { Component, OnInit, Input, ChangeDetectionStrategy, OnDestroy, NgModule } from '@angular/core';\nimport type { CrisprControlConfig } from '../models';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { FormGroup } from '@angular/forms';\nimport { tap, distinctUntilChanged } from 'rxjs/operators';\nimport { computeValueFromFields } from '../form.helpers';\nimport { CommonModule } from '@angular/common';\nimport { HeadingModule } from '../material/heading/heading.component';\n\n@Component({\n selector: 'crispr-field-container',\n templateUrl: './field-container.component.html',\n styleUrls: ['./field-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FieldContainerComponent implements OnInit, OnDestroy {\n // the configuration object for the field\n @Input() config: CrisprControlConfig;\n // the parent formGroup\n @Input() group: FormGroup;\n // boolean whether field-container is inline\n @Input() inlineField = false;\n // used to determine whether or not field should be shown\n disabled$: Observable<boolean>;\n\n subs: Subscription[] = [];\n\n ngOnInit() {\n this.disabled$ = this.connectDisabledCallback(this.group, this.config);\n // we tried moving this into afterViewChecked and afterContentChecked lifecycle hooks without any luck\n if (this.config.computeValue) {\n this.subs.push(\n this.config.computeValue(this.group).pipe(\n distinctUntilChanged(),\n tap(computedValue => this.group.get(this.config.controlName).setValue(computedValue))\n ).subscribe(),\n );\n } else if (this.config.computeFieldConfig) {\n console.warn(`computeFieldConfig property is deprecated, please use computeValue. Example here: https://stackblitz.com/github/nayfin/tft-documentation?file=src%2Fapp%2Fcrispr-forms-demo%2Ffeatures%2Fcomputed-field%2Fcomputed-field.component.ts`)\n this.subs.push(\n computeValueFromFields(this.group, this.config.computeFieldConfig).pipe(\n distinctUntilChanged(),\n tap(computedValue => this.group.get(this.config.controlName).setValue(computedValue))\n ).subscribe(),\n );\n }\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe);\n }\n /**\n * Connects user defined disabledCallback function to the the view, so that the control is enabled/disabled\n * appropriately. It also will hide disabled fields in the UI unless `hideDisabled` is set to\n * false in the controls config\n * @param group used to get valueChanges from control\n * @param config configuration object used to\n */\n connectDisabledCallback(group: FormGroup, config: CrisprControlConfig = null) {\n const control = group.get(config.controlName);\n // If the disabled$ function exists on the field config then call it with the disabledCallbackConfig\n // as a parameter otherwise return an observable of true.\n return config?.disabledCallback && config.disabledCallback instanceof Function\n ? config.disabledCallback(group, config.disabledCallbackConfig || null).pipe(\n // This enables/disables when callback conditions are met\n tap((shouldDisable) => shouldDisable ? control.disable() : control.enable())\n )\n : of(false);\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n HeadingModule,\n ],\n exports: [\n FieldContainerComponent\n ],\n declarations: [\n FieldContainerComponent\n ]\n})\n\nexport class FieldContainerModule {\n}\n","<div\n *ngIf=\"(disabled$ | async) ? !config.hideDisabled : true\"\n [ngClass]=\"config.classes\"\n [class.inline-field]=\"inlineField\"\n class=\"field-container\">\n\n <crispr-heading\n *ngIf=\"config.heading\"\n [config]=\"config.heading\">\n </crispr-heading>\n\n <ng-content>\n </ng-content>\n\n</div>\n","import { Component, ChangeDetectionStrategy, OnInit, NgModule } from '@angular/core';\nimport { InputFieldConfig } from '../../models';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { FieldContainerModule } from '../../field-container';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { InfoModule } from '../info/info.component';\n\nconst InputFieldMixin = crisprControlMixin<InputFieldConfig>(CrisprFieldComponent);\n@Component({\n selector: 'crispr-input-field',\n templateUrl: './input-field.component.html',\n styleUrls: ['./input-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputFieldComponent extends InputFieldMixin implements OnInit {\n\n defaultConfig: Partial<InputFieldConfig> = {inputType: 'text'};\n constructor() {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatFormFieldModule,\n MatInputModule,\n ],\n exports: [\n InputFieldComponent\n ],\n declarations: [\n InputFieldComponent\n ]\n})\nexport class InputFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>\n {{config.label}}\n </mat-label>\n <input\n [type]=\"config.inputType\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [maxlength]=\"config.maxLength\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\"\n [pattern]=\"config.pattern\"\n [spellcheck]=\"config.spellcheck\"\n [autocomplete]=\"config.autoComplete\"\n [autocapitalize]=\"config.autoCapitalize\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n\n</crispr-field-container>\n","// tslint:disable-next-line: max-line-length\nimport type { InputFieldComponent, SelectFieldComponent, AutocompleteFieldComponent,\n AutocompleteChiplistFieldComponent, TextareaFieldComponent, CheckboxFieldComponent,\n RadioFieldComponent, FileUploadFieldComponent, SliderFieldComponent, DatepickerFieldComponent,\n HeadingComponent, DividerComponent, ButtonComponent, UnitConversionFieldComponent, ImageUploadFieldComponent } from './material';\nimport type { FormGroupListComponent } from './form-group-list/form-group-list.component';\nimport type { SubGroupComponent } from './sub-group/sub-group.component';\nimport { isControlConfig } from './form.helpers';\nimport { ControlType } from './models';\n\nexport const FIELD_COMPONENTS = {\n groupList: import('./form-group-list').then (({FormGroupListComponent}) => FormGroupListComponent),\n subGroup: import('./sub-group').then(({ SubGroupComponent}) => SubGroupComponent),\n button: import('./material').then(({ ButtonComponent}) => ButtonComponent),\n input: import('./material').then(({ InputFieldComponent}) => InputFieldComponent),\n select: import('./material').then(({ SelectFieldComponent}) => SelectFieldComponent),\n radio: import('./material').then(({ RadioFieldComponent}) => RadioFieldComponent),\n autocomplete: import('./material').then(({ AutocompleteFieldComponent}) => AutocompleteFieldComponent),\n autocompleteChiplist: import('./material').then(({ AutocompleteChiplistFieldComponent}) => AutocompleteChiplistFieldComponent),\n textarea: import('./material').then(({ TextareaFieldComponent}) => TextareaFieldComponent),\n checkbox: import('./material').then(({ CheckboxFieldComponent}) => CheckboxFieldComponent),\n slider: import('./material').then(({ SliderFieldComponent}) => SliderFieldComponent),\n datepicker: import('./material').then(({ DatepickerFieldComponent}) => DatepickerFieldComponent),\n fileUpload: import('./material').then(({ FileUploadFieldComponent}) => FileUploadFieldComponent),\n imageUpload: import('./material').then(({ ImageUploadFieldComponent}) => ImageUploadFieldComponent),\n heading: import('./material').then(({ HeadingComponent}) => HeadingComponent),\n divider: import('./material').then(({ DividerComponent}) => DividerComponent),\n unitConversion: import('./material').then(({ UnitConversionFieldComponent}) => UnitConversionFieldComponent)\n};\n\nexport function isControlComponent(component: CrisprFieldComponent): component is CrisprControlComponent {\n return component && isControlConfig(component.config) && 'value' in component // || component.config.controlType === ControlType.BUTTON;\n}\n\nexport function isControlOrButtonComponent(component: CrisprFieldComponent): component is CrisprControlOrButton {\n return isControlComponent(component) || component.config.controlType === ControlType.BUTTON;\n}\n\nexport type CrisprControlOrButton = CrisprControlComponent | ButtonComponent;\n\nexport type CrisprControlComponent = InputFieldComponent |\n SelectFieldComponent |\n RadioFieldComponent |\n SubGroupComponent |\n FormGroupListComponent |\n AutocompleteFieldComponent |\n AutocompleteChiplistFieldComponent |\n TextareaFieldComponent |\n CheckboxFieldComponent |\n SliderFieldComponent |\n FileUploadFieldComponent |\n ImageUploadFieldComponent|\n DatepickerFieldComponent |\n UnitConversionFieldComponent;\n\nexport type ComponentKeys = keyof typeof FIELD_COMPONENTS;\n// export type CrisprFieldComponent = FIELD_COMPONENTS[ComponentKeys];\n\nexport type CrisprFieldComponent = CrisprControlComponent |\n HeadingComponent |\n DividerComponent |\n ButtonComponent;\n\n","import { Directive, Input, ViewContainerRef, Renderer2, NgModule, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { AnyFieldConfig, ControlValue } from './models';\nimport { CrisprFieldComponent, FIELD_COMPONENTS, isControlComponent, isControlOrButtonComponent } from './field-component-map.const';\nimport { CommonModule } from '@angular/common';\n\n@Directive({\n selector: '[crisprField]'\n})\nexport class CrisprFieldDirective implements OnInit {\n\n @Input() config: AnyFieldConfig;\n @Input() group: FormGroup;\n /**\n * value setter updates the control's value as well\n */\n _value: ControlValue | any[]\n @Input() set value(value: ControlValue | any[]) {\n this._value = value;\n // This is needed to keep the group list from resetting control values to the initial input value\n this.updateComponentValue(value);\n };\n get value() {\n return this._value;\n }\n component: CrisprFieldComponent;\n\n constructor(\n private container: ViewContainerRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit() {\n /**\n * create component and set values from config on its instance\n */\n const component = this.config.component || await FIELD_COMPONENTS[this.config.controlType];\n const componentRef = this.container.createComponent<CrisprFieldComponent>(component);\n\n this.component = componentRef.instance;\n this.component.config = this.config;\n if (isControlOrButtonComponent(this.component)) {\n this.component.group = this.group;\n }\n this.updateComponentValue(this.value);\n // adds any config classes to the dynamically generated component\n // doing this here keeps us from having to extend a base component into each field component individually\n if(!this.config.classes) return;\n this.config.classes.forEach((klass) => {\n // check for passing multiple classes in one array element\n if(klass.includes(' ')) {\n throw Error(`Improperly formatted class. '${klass}' cannot contain spaces.`);\n } else {\n this.renderer.addClass(componentRef.location.nativeElement, klass);\n }\n });\n }\n\n updateComponentValue(value: ControlValue | any[]) {\n if(isControlComponent(this.component)) {\n this.component.value = value;\n // SubGroups won't populate without this detectChanges\n this.cdr.detectChanges();\n }\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n ],\n exports: [\n CrisprFieldDirective\n ],\n declarations: [\n CrisprFieldDirective\n ]\n})\nexport class CrisprFieldModule {\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { SelectOption } from '../../models';\nimport { InfoModule } from '../info/info.component';\n\n@Component({\n selector: 'crispr-option',\n templateUrl: './option.component.html',\n styleUrls: ['./option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OptionComponent {\n\n @Input() option: SelectOption\n\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n ],\n exports: [\n OptionComponent\n ],\n declarations: [\n OptionComponent\n ]\n})\n\nexport class OptionModule {\n}\n","<div>\n <img\n *ngIf=\"option.imageUrl\"\n [src]=\"option.imageUrl\"\n alt=\"image of {{option.label}}\"\n style=\"vertical-align:middle;\"\n aria-hidden\n height=\"25\"/>\n {{option.label}}\n</div>\n\n<crispr-info *ngIf=\"option.info as info\" [info]=\"info\">\n\n</crispr-info>\n","import { Component, OnInit, ChangeDetectionStrategy, ViewChild, AfterViewInit, NgModule } from '@angular/core';\n import { Observable } from 'rxjs';\n\nimport { SelectFieldConfig, SelectOption } from '../../models';\nimport { observablifyOptions } from '../../form.helpers';\nimport { CrisprFieldComponent, crisprControlMixin } from '../../abstracts';\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\nimport { ThemePalette } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { InfoModule } from '../info/info.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CrisprFieldModule } from '../../field.directive';\nimport { FieldContainerModule } from '../../field-container';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { OptionModule } from '../option';\n\nconst SelectFieldMixin = crisprControlMixin<SelectFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-select-field',\n templateUrl: './select-field.component.html',\n styleUrls: ['./select-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectFieldComponent extends SelectFieldMixin implements OnInit, AfterViewInit {\n defaultConfig = {\n enableToggleAll: false,\n color: 'primary' as ThemePalette\n };\n options$: Observable<SelectOption[]>;\n allSelected = false;\n\n @ViewChild('selectField') selectField: MatSelect;\n\n ngOnInit() {\n super.ngOnInit();\n // options$ can be passed as an array, promise that resolves array, or observable that resolves array\n // this functions accounts for all possibilities and converts to observable that resolves array\n this.options$ = observablifyOptions(this.config.options, this.group);\n }\n\n ngAfterViewInit() {\n if (\n this.config.multiple\n && this.config.enableToggleAll\n && this.selectField.options?.length === (this.value as any[])?.length\n ) {\n this.allSelected = true;\n }\n }\n\n toggleAll(isSelected: boolean) {\n if ( isSelected ) {\n this.selectField.options.forEach(option => option.deselect());\n } else {\n this.selectField.options.forEach(option => option.select());\n }\n this.allSelected = !this.allSelected;\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n OptionModule,\n MatCheckboxModule,\n MatSelectModule,\n ReactiveFormsModule,\n CrisprFieldModule,\n FieldContainerModule,\n MatFormFieldModule,\n ],\n exports: [\n SelectFieldComponent\n ],\n declarations: [\n SelectFieldComponent\n ]\n})\n\nexport class SelectFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <mat-select\n #selectField\n [formControlName]=\"config.controlName\"\n [placeholder]=\"config.placeholder\"\n [multiple]=\"config.multiple\">\n\n <mat-checkbox\n [color]=\"config.color\"\n [checked]=\"allSelected\"\n *ngIf=\"config?.multiple && config.enableToggleAll\"\n (click)=\"toggleAll(allSelected)\">\n Select All\n </mat-checkbox>\n <mat-option\n *ngFor=\"let option of options$ | async\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\">\n </crispr-option>\n </mat-option>\n\n </mat-select>\n\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n","import { Component, OnInit, ViewChild, ChangeDetectionStrategy, ElementRef, OnDestroy, NgModule } from '@angular/core';\nimport { MatAutocompleteTrigger, MatAutocompleteSelectedEvent, MatAutocompleteModule } from '@angular/material/autocomplete';\n\nimport { SelectOption, AutocompleteFieldConfig, DEFAULT_EMPTY_OPTIONS_MESSAGE } from '../../models';\nimport { AbstractAutocompleteComponent } from '../../abstracts';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CrisprFieldModule } from '../../field.directive';\nimport { FieldContainerModule } from '../../field-container';\nimport { InfoModule } from '../info/info.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatOptionModule } from '@angular/material/core';\nimport { OptionModule } from '../option';\n\nconst defaultConfig: Partial<AutocompleteFieldConfig> = {\n autoActiveFirstOption: true,\n typeDebounceTime: 500,\n emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE\n};\n\n@Component({\n selector: 'crispr-autocomplete-field',\n templateUrl: './autocomplete-field.component.html',\n styleUrls: ['./autocomplete-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AutocompleteFieldComponent\n extends AbstractAutocompleteComponent<AutocompleteFieldConfig>\n implements OnInit, OnDestroy {\n\n defaultConfig = defaultConfig;\n @ViewChild('autoInput', { read: MatAutocompleteTrigger }) autoInput: MatAutocompleteTrigger;\n @ViewChild('autoInput') autoInputRef: ElementRef<HTMLInputElement>;\n\n clearFieldSubscription: Subscription;\n\n ngOnInit() {\n super.ngOnInit();\n this.clearFieldSubscription = this.autocompleteInputControl.valueChanges.subscribe((text: string) => {\n if (typeof text === 'string' && text?.trim() === '') {\n this.control.setValue(null);\n }\n })\n }\n\n ngOnDestroy() {\n this.clearFieldSubscription.unsubscribe();\n }\n\n setControlValue(value: SelectOption) {\n if(this.control && value) {\n // sets the initial value on the control if one is passed\n this.control.setValue(value.value || '');\n this.autocompleteInputControl.setValue(value.label || '');\n }\n }\n\n /**\n * The material autocomplete defaults to displaying the options value instead of its label.\n * We only have the value from the selected option to work with, so we have to pass the options\n * through a function called in the template and return the function that the material displayWith\n * input is expecting.\n * @param options the array of options to search for option with corresponding value\n */\n displayLabel(options: SelectOption[]) {\n if (this.config.displayWith) {\n return this.config.displayWith(options);\n }\n return (value: any) => {\n const label: string = !!options && Array.isArray(options)\n ? options.find((option) => JSON.stringify(option.value) === JSON.stringify(value))?.label: value;\n return label\n };\n }\n\n handleSelect(event: MatAutocompleteSelectedEvent) {\n this.control.setValue(event.option.value)\n this.autoInputRef.nativeElement.blur();\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n OptionModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatAutocompleteModule,\n MatInputModule,\n MatOptionModule,\n ],\n exports: [\n AutocompleteFieldComponent\n ],\n declarations: [\n AutocompleteFieldComponent\n ]\n})\nexport class AutocompleteFieldModule {\n}\n","\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n\n <input class=\"hidden-error-directive-anchor\" [formControlName]=\"config.controlName\" type=\"text\"/>\n\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matAutocomplete]=\"auto\"\n role=\"textbox\"\n type=\"textbox\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput>\n\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"displayLabel(options$ | async)\">\n\n <ng-container *ngIf=\"options$ | async as options; else emptyOption\">\n <ng-container *ngIf=\"options.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of options\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n</crispr-field-container>\n","import { Component, OnInit, ChangeDetectionStrategy, ViewChild, ElementRef, NgModule } from '@angular/core';\nimport { map, tap } from 'rxjs/operators';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { Observable, BehaviorSubject, combineLatest } from 'rxjs';\nimport { ENTER } from '@angular/cdk/keycodes';\n\nimport { AutocompleteChiplistFieldConfig, DEFAULT_EMPTY_OPTIONS_MESSAGE, SelectOption } from '../../models';\nimport { AbstractAutocompleteComponent } from '../../abstracts';\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldContainerModule } from '../../field-container';\nimport { AutocompleteFieldComponent } from '../autocomplete-field/autocomplete-field.component';\nimport { InfoModule } from '../info/info.component';\nimport { OptionModule } from '../option';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst defaultConfig: Partial<AutocompleteChiplistFieldConfig> = {\n chipsSelectable: true,\n areChipsRemovable: true,\n tabToSelect: true,\n autoActiveFirstOption: true,\n imageUrlParam: 'image',\n typeDebounceTime: 500,\n allowDuplicates: false,\n duplicateCompareFunction: (chip, option) => chip.value === option.value,\n separatorKeyCodes: [ENTER],\n emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE,\n}\n\n@Component({\n selector: 'crispr-autocomplete-chiplist-field',\n templateUrl: './autocomplete-chiplist-field.component.html',\n styleUrls: ['./autocomplete-chiplist-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AutocompleteChiplistFieldComponent\n extends AbstractAutocompleteComponent<AutocompleteChiplistFieldConfig> implements OnInit {\n defaultConfig = defaultConfig;\n chips$ = new BehaviorSubject<SelectOption[]>([]);\n remainingOptions$: Observable<SelectOption[]>;\n\n controlValue$ = this.chips$.pipe(\n tap(chips => {\n this.control.setValue(chips.map(chip => chip.value))\n })\n );\n\n\n // We need use ViewChild twice on the same template ref to access as different types\n // - the MatAutocompleteTrigger is used to for selecting value on tab\n // - the ElementRef<HTMLInputElement> is used to clear the value from input element on selection\n @ViewChild('autoInput', { read: MatAutocompleteTrigger }) chipInput: MatAutocompleteTrigger;\n @ViewChild('autoInput') chipInputRef: ElementRef<HTMLInputElement>;\n\n\n ngOnInit() {\n super.ngOnInit();\n this.remainingOptions$ = combineLatest([\n this.chips$,\n this.options$\n ]).pipe(\n map(([chips, options]) => {\n return this.config.allowDuplicates\n ? options\n : options?.filter(option => {\n return !chips.some(chip => this.config.duplicateCompareFunction(chip, option));\n });\n })\n )\n }\n\n setControlValue(value: SelectOption[]) {\n if (value) {\n this.chips$.next(value);\n }\n }\n\n // handles mat selecting\n handleSelect(event: MatAutocompleteSelectedEvent) {\n const selectedOption: SelectOption = event.option.value as SelectOption;\n this.chips$.next([...this.chips$.value, selectedOption]);\n this.chipInputRef.nativeElement.value = '';\n this.autocompleteInputControl.setValue('');\n // setTimeout needed because the panel thinks it's still open at this point\n setTimeout(() => this.chipInput.openPanel())\n }\n\n /**\n * To follow ARIA standards we want to select the active option on blur.\n * matChipInputAddOnBlur should do this but it causes buggy behaviour\n * @param event blur event that triggers the handle blur\n */\n handleTab(_event: FocusEvent) {\n if (this.chipInput.activeOption && (this.config.tabToSelect || this.config.addChipOnBlur)) {\n const chip = this.chipInput.activeOption.value;\n this.chips$.next([...this.chips$.value, chip]);\n }\n }\n\n /**\n * Handles selection via key tokens passed through separatorKeyCodes propert\n * NOTE: If TAB is used focus does not move on to next component\n * @param event\n */\n handleTokenEnd(event: MatChipInputEvent) {\n if (this.chipInput.activeOption) {\n this.chipInput.activeOption.select();\n }\n event.chipInput?.clear();\n }\n\n mapToLabel(option: SelectOption) {\n return option ? option.label : '';\n }\n\n removeChip(removedChip: SelectOption) {\n const remainingChips: SelectOption[] = this.chips$.value.filter(chip => chip !== removedChip);\n this.chips$.next(remainingChips);\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n OptionModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatAutocompleteModule,\n MatInputModule,\n MatOptionModule,\n MatChipsModule,\n MatIconModule\n ],\n exports: [\n AutocompleteChiplistFieldComponent\n ],\n declarations: [\n AutocompleteChiplistFieldComponent\n ]\n})\nexport class AutocompleteChiplistFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n\n <mat-chip-list\n #chipList>\n <mat-chip\n class=\"refinement-chip\"\n *ngFor=\"let chip of controlValue$ | async\"\n [selectable]=\"config.chipsSelectable\"\n [removable]=\"config.areChipsRemovable\"\n (removed)=\"removeChip(chip)\">\n <span *ngIf=\"chip.imageUrl as imageUrl\" class=\"image-container\">\n <img [src]=\"imageUrl\" alt=\"image of {{chip.label}}\">\n </span>\n {{chip.label}}\n <mat-icon\n matChipRemove\n *ngIf=\"config.areChipsRemovable\">\n cancel\n </mat-icon>\n </mat-chip>\n <input class=\"hidden-error-directive-anchor\" [formControlName]=\"config.controlName\" type=\"text\"/>\n\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matChipInputFor]=\"chipList\"\n [matAutocomplete]=\"auto\"\n (keydown.tab)=\"handleTab($event)\"\n [matChipInputSeparatorKeyCodes]=\"config.separatorKeyCodes\"\n (matChipInputTokenEnd)=\"handleTokenEnd($event)\"\n role=\"searchbox\"\n type=\"text\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput/>\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n </mat-chip-list>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"this.config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"mapToLabel\">\n <ng-container *ngIf=\"remainingOptions$ | async as remainingOptions; else emptyOption\">\n <ng-container *ngIf=\"remainingOptions.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of remainingOptions$ | async\"\n [value]=\"option\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n</crispr-field-container>\n","import { Component, OnInit, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { CheckboxFieldConfig } from '../../models';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { CommonModule } from '@angular/common';\nimport { InfoModule } from '../info/info.component';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CrisprFieldModule } from '../../field.directive';\nimport { FieldContainerModule } from '../../field-container';\n\nconst defaultConfig: Partial<CheckboxFieldConfig> = {\n labelPosition: 'after',\n inline: false\n}\nconst CheckboxFieldMixin = crisprControlMixin<CheckboxFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-checkbox-field',\n templateUrl: './checkbox-field.component.html',\n styleUrls: ['./checkbox-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxFieldComponent extends CheckboxFieldMixin implements OnInit {\n\n defaultConfig = defaultConfig;\n ngOnInit() {\n super.ngOnInit();\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n CrisprFieldModule,\n FieldContainerModule\n ],\n exports: [\n CheckboxFieldComponent\n ],\n declarations: [\n CheckboxFieldComponent\n ]\n})\n\nexport class CheckboxFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [inlineField]=\"config.inline\">\n <div\n [formGroup]=\"group\">\n <mat-checkbox\n [color]=\"config.color\"\n [labelPosition]=\"config.labelPosition\"\n [formControlName]=\"config.controlName\">\n {{config.label}}\n <crispr-info\n matSuffix *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n </mat-checkbox>\n </div>\n</crispr-field-container>\n","import { Component, OnInit, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { TextareaFieldConfig } from '../../models';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FieldContainerModule } from '../../field-container';\nimport { InfoModule } from '../info/info.component';\n\nconst defaultConfig: Partial<TextareaFieldConfig> = {rows: 5};\nconst TextareaFieldMixin = crisprControlMixin<TextareaFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-textarea-field',\n templateUrl: './textarea-field.component.html',\n styleUrls: ['./textarea-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextareaFieldComponent extends TextareaFieldMixin implements OnInit {\n defaultConfig = defaultConfig;\n\n ngOnInit() {\n super.ngOnInit()\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatFormFieldModule,\n MatInputModule,\n ],\n exports: [\n TextareaFieldComponent\n ],\n declarations: [\n TextareaFieldComponent\n ]\n})\nexport class TextareaFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <textarea\n [rows]=\"config.rows\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\">\n </textarea>\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && control.valid\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n","import { Component, OnInit, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { SliderFieldConfig } from '../../models';\nimport { CrisprFieldComponent, crisprControlMixin } from '../../abstracts';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FieldContainerModule } from '../../field-container';\nimport { InfoModule } from '../info/info.component';\nimport { OptionModule } from '../option';\n\nconst defaultConfig = {displayLimits: true};\nconst SliderFieldMixin = crisprControlMixin<SliderFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-slider-field',\n templateUrl: './slider-field.component.html',\n styleUrls: ['./slider-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SliderFieldComponent extends SliderFieldMixin implements OnInit {\n\n defaultConfig = defaultConfig;\n constructor() {\n super();\n }\n\n get flexDirection() {\n return this.config.vertical ? 'column' : 'row';\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n OptionModule,\n FieldContainerModule,\n ReactiveFormsModule,\n MatSliderModule\n ],\n exports: [\n SliderFieldComponent\n ],\n declarations: [\n SliderFieldComponent\n ]\n})\nexport class SliderFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <div\n [formGroup]=\"group\">\n <label *ngIf=\"config.label\">\n {{config.label}}\n <crispr-info\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n </label>\n <div class=\"slider-container\"\n [ngStyle]=\"{'flex-direction': flexDirection}\">\n <span *ngIf=\"config.displayLimits\">\n {{config.min}}\n </span>\n <mat-slider\n class=\"example-margin\"\n [formControlName]=\"config.controlName\"\n [invert]=\"config.invert\"\n [max]=\"config.max\"\n [min]=\"config.min\"\n [step]=\"config.step\"\n [thumbLabel]=\"config.thumbLabel\"\n [tickInterval]=\"config.tickInterval\"\n [vertical]=\"config.vertical\">\n </mat-slider>\n <span *ngIf=\"config.displayLimits\">\n {{config.max}}\n </span>\n </div>\n\n </div>\n</crispr-field-container>\n\n","\nimport { Component, OnInit, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { ButtonConfig } from '../../models';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { CrisprFieldComponent } from '../../abstracts';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'crispr-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent extends CrisprFieldComponent<ButtonConfig> implements OnInit {\n\n group: FormGroup;\n defaultConfig: Partial<ButtonConfig> = {buttonType: 'raised', type: 'submit'};\n formValid$: Observable<boolean>\n\n get matButtonClass () {\n return this.config.buttonType ? `mat-${this.config.buttonType}-button` : '';\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.formValid$ = this.group.statusChanges.pipe(\n map(status => status === 'VALID'),\n startWith(this.group.valid),\n );\n }\n\n handleClick(group: FormGroup, event: MouseEvent) {\n if (this.config.callback) {\n this.config.callback(group, event);\n }\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ReactiveFormsModule,\n ],\n exports: [\n ButtonComponent\n ],\n declarations: [\n ButtonComponent\n ]\n})\nexport class ButtonModule {\n}\n","<button\n [formGroup]=\"group\"\n mat-button\n [ngClass]=\"matButtonClass\"\n [color]=\"config.color\"\n [disabled]=\"config.disabledOnInvalidForm && !(formValid$ | async)\"\n [type]=\"config.type\"\n (click)=\"handleClick(group, $event)\"\n [matTooltip]=\"config.info?.content\"\n [matTooltipPosition]=\"config.info?.tooltipPosition || 'below'\">\n {{ config.label }}\n <mat-icon *ngIf=\"config.icon\">\n {{ config.icon}}\n </mat-icon>\n</button>\n\n","import { Component, OnInit, ChangeDetectionStrategy, AfterContentInit, NgModule } from '@angular/core';\nimport { DatepickerFieldConfig } from '../../models';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { MatCalendarCellClassFunction, MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDateFnsModule } from '@angular/material-date-fns-adapter';\nimport { Observable, of } from 'rxjs';\nimport { ComponentPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FieldContainerModule } from '../../field-container';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\n\nconst defaultConfig: Partial<DatepickerFieldConfig> = {\n startView: 'month',\n}\nconst DatepickerFieldMixin = crisprControlMixin<DatepickerFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-datepicker-field',\n templateUrl: './datepicker-field.component.html',\n styleUrls: ['./datepicker-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DatepickerFieldComponent extends DatepickerFieldMixin implements OnInit, AfterContentInit {\n\n defaultConfig = defaultConfig;\n\n dateClass: MatCalendarCellClassFunction<Date>;\n dateClass$: Observable<MatCalendarCellClassFunction<Date>>;\n startAt$: Observable<Date>;\n\n /** A portal containing the footer component type for this calendar. */\n calendarFooterPortal: Portal<any>;\n\n ngOnInit() {\n super.ngOnInit();\n this.startAt$ = this.config.startAt instanceof Date\n ? of(this.config.startAt)\n : this.config.startAt instanceof Function\n ? this.config.startAt(this.group)\n : of(null);\n this.dateClass = this.config?.cellClassFunction || null\n this.dateClass$ = this.config.dateClass ? this.config?.dateClass(this.group) : of(() => '');\n }\n\n ngAfterContentInit() {\n if (this.config.datepickerActions) {\n this.calendarFooterPortal = new ComponentPortal(this.config.datepickerActions);\n }\n }\n\n // handleSelectedChange(event, picker: MatDatepicker<unknown>) {\n // console.log({event, picker})\n // if(this.config.selectedChange) {\n // this.config.selectedChange(event, picker);\n // }\n // }\n}\n@NgModule({\n imports: [\n CommonModule,\n FieldContainerModule,\n MatDatepickerModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatInputModule,\n MatDateFnsModule,\n PortalModule\n ],\n exports: [\n DatepickerFieldComponent\n ],\n declarations: [\n DatepickerFieldComponent\n ]\n})\nexport class DatepickerFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"config.datepickerFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n [touchUi]=\"config.touchUi\"\n [startView]=\"config.startView\"\n [startAt]=\"startAt$ | async\"\n [dateClass]=\"dateClass || (dateClass$ | async)\"\n #picker>\n <mat-datepicker-actions *ngIf=\"calendarFooterPortal\">\n <ng-template [cdkPortalOutlet]=\"calendarFooterPortal\"></ng-template>\n </mat-datepicker-actions>\n </mat-datepicker>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n</crispr-field-container>\n\n","import { Component, NgModule, OnInit } from '@angular/core';\nimport { DividerConfig } from '../../models';\nimport { CrisprFieldComponent } from '../../abstracts';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'crispr-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss']\n})\nexport class DividerComponent extends CrisprFieldComponent<DividerConfig> implements OnInit {\n // TODO: pull in type after configs are better organized\n defaultConfig = {};\n ngOnInit() {\n super.ngOnInit();\n }\n\n}\n@NgModule({\n imports: [\n CommonModule,\n MatDividerModule\n ],\n exports: [\n DividerComponent\n ],\n declarations: [\n DividerComponent\n ]\n})\nexport class DividerModule {\n}\n","<mat-divider [ngClass]=\"config.classes\"></mat-divider>","import { Component, OnInit, ChangeDetectionStrategy, NgModule } from '@angular/core';\n import { Observable } from 'rxjs';\n\nimport { SelectOption } from '../../models';\nimport { observablifyOptions } from '../../form.helpers';\nimport { CrisprFieldComponent, crisprControlMixin } from '../../abstracts';\nimport { RadioFieldConfig } from '../../models/radio-field.config';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { FieldContainerModule } from '../../field-container';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nconst RadioFieldMixin = crisprControlMixin<RadioFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-radio-field',\n templateUrl: './radio-field.component.html',\n styleUrls: ['./radio-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioFieldComponent extends RadioFieldMixin implements OnInit {\n defaultConfig = {};\n options$: Observable<SelectOption[]>;\n ngOnInit() {\n super.ngOnInit();\n // options$ can be passed as an array, promise that resolves array, or observable that resolves array\n // this functions accounts for all possibilities and converts to observable that resolves array\n this.options$ = observablifyOptions(this.config.options, this.group);\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatRadioModule,\n ],\n exports: [\n RadioFieldComponent\n ],\n declarations: [\n RadioFieldComponent\n ]\n})\nexport class RadioFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-radio-group\n [formControl]=\"control\"\n [color]=\"config.color\">\n <mat-radio-button class=\"example-radio-button\" *ngFor=\"let option of options$ | async\" [value]=\"option.value\">\n {{option.label}}\n </mat-radio-button>\n </mat-radio-group>\n</crispr-field-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ChangeDetectionStrategy, OnDestroy, NgModule } from '@angular/core';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { combineLatest, Observable, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { FieldContainerModule } from '../../field-container';\nimport { observablifyOptions } from '../../form.helpers';\nimport { SelectOption } from '../../models';\nimport { UnitConversionFieldConfig } from '../../models/unit-conversion-field.config';\nimport { InfoModule } from '../info/info.component';\nimport { OptionModule } from '../option';\n\nconst defaultConfig: Partial<UnitConversionFieldConfig> = {};\nconst UnitConversionFieldMixin = crisprControlMixin<UnitConversionFieldConfig>(CrisprFieldComponent);\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'crispr-unit-conversion-field',\n templateUrl: './unit-conversion-field.component.html',\n styleUrls: ['./unit-conversion-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UnitConversionFieldComponent extends UnitConversionFieldMixin implements OnInit, OnDestroy {\n defaultConfig = defaultConfig;\n\n displayValueControl = new FormControl();\n unitSelectControl = new FormControl();\n unitOptions$: Observable<SelectOption[]>;\n\n transformationSubscription: Subscription;\n\n ngOnInit() {\n super.ngOnInit();\n // TODO: Validators need work. validation is tricky because the input needs to be validated against but the validator will compare against the controls value\n // this.displayValueControl.setValidators(this.config.validators);\n\n const controlValuePipeline: Observable<string>[] = [\n this.displayValueControl.valueChanges.pipe(startWith(this.displayValueControl.value))\n ];\n // setup all required pieces when showing a field for selecting units\n if (this.config.showUnitSelect) {\n this.unitOptions$ = observablifyOptions(this.config.selectableUnits, this.group)\n controlValuePipeline.push(this.unitSelectControl.valueChanges.pipe(startWith(this.config?.initialDisplayUnit || null)));\n this.unitSelectControl.setValue(this.config?.initialDisplayUnit || null);\n }\n\n this.transformationSubscription = combineLatest(controlValuePipeline).subscribe(([displayValue, unitValue] )=> {\n const computedValue = this.config.storedValueConversion(displayValue, unitValue);\n this.control.setValue(computedValue);\n });\n }\n\n ngOnDestroy() {\n this.transformationSubscription.unsubscribe();\n }\n\n setInitialDisplayValue(storedValue: any, unit: unknown) {\n const initialDisplayValue = this.config.initialDisplayValueConversion(storedValue || null, unit);\n this.displayValueControl.setValue(initialDisplayValue);\n }\n\n /**\n * We override the 'setControlValue' we inherited from crisprControlMixin and add our custom logic,\n * This function gets called onInit because were object oriented. it's so great, so great that I'm\n * typing a paragraph to explain what the hell is going on...\n * @param value the initial value for the control passed down from the form components input\n */\n setControlValue(value) {\n const initialUnitValue = this.config.showUnitSelect ? this.config?.initialDisplayUnit : null;\n this.setInitialDisplayValue(value, initialUnitValue);\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n InfoModule,\n OptionModule,\n ReactiveFormsModule,\n FieldContainerModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n ],\n exports: [\n UnitConversionFieldComponent\n ],\n declarations: [\n UnitConversionFieldComponent\n ]\n})\nexport class UnitConversionFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [style.width.%]=\"config.showUnitSelect ? 60 : 100\"\n class=\"number-field\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n type=\"number\"\n matInput\n [formControl]=\"displayValueControl\"\n [placeholder]=\"config.placeholder\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n </mat-form-field>\n\n <mat-form-field\n *ngIf=\"config.showUnitSelect\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\"\n class=\"unit-field\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <mat-select\n #selectField\n [formControl]=\"unitSelectControl\">\n\n <mat-option\n *ngFor=\"let option of unitOptions$ | async\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\">\n </crispr-option>\n </mat-option>\n\n </mat-select>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n","import { Directive, HostListener, Output, EventEmitter, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[crisprFileDropzone]'\r\n})\r\nexport class FileDropzoneDirective {\r\n\r\n @Output() fileDrop = new EventEmitter<FileList>();\r\n\r\n @Input() crisprFileDropzone = true;\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop($event: DragEvent) {\r\n if(this.crisprFileDropzone) {\r\n $event.preventDefault();\r\n this.fileDrop.emit($event.dataTransfer.files);\r\n }\r\n }\r\n\r\n // Prevents DOM from trying to open file in browser\r\n @HostListener('dragover', ['$event'])\r\n onDragOver($event: DragEvent) {\r\n if(this.crisprFileDropzone) {\r\n $event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, NgModule } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'crispr-selected-file',\n templateUrl: './selected-file.component.html',\n styleUrls: ['./selected-file.component.scss']\n})\nexport class SelectedFileComponent {\n\n @Input() fileName: string;\n @Input() progress: number;\n @Input() showProgress: boolean;\n @Input() color: ThemePalette;\n\n}\n@NgModule({\n imports: [\n CommonModule,\n MatProgressBarModule\n ],\n exports: [\n SelectedFileComponent\n ],\n declarations: [\n SelectedFileComponent\n ]\n})\nexport class SelectedFileModule {\n}\n","<h3 class=\"mat-h3\">{{ fileName }}</h3>\n<mat-progress-bar\n *ngIf=\"showProgress\"\n mode=\"determinate\"\n [color]=\"color\"\n [value]=\"progress\">\n</mat-progress-bar>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n ChangeDetectionStrategy,\n Optional,\n Self,\n NgModule\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { Observable, of } from 'rxjs';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { FieldContainerModule } from '../../field-container/field-container.component';\nimport type { FileUploadFieldConfig } from '../../models/file-upload-field.config';\nimport { SelectedFileModule } from '../selected-file/selected-file.component';\nimport { FileDropzoneDirective } from './file-dropzone.directive';\n\nconst FileUploadFieldMixin = crisprControlMixin<FileUploadFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-file-upload-field',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FileUploadFieldComponent extends FileUploadFieldMixin implements OnInit, ControlValueAccessor {\n\n onChange: () => void;\n\n defaultConfig: Partial<FileUploadFieldConfig> = {\n allowMultipleFiles: false,\n acceptedTypes: '*.*',\n dropZoneText: 'DROP FILE HERE',\n selectFilesButtonType: 'button',\n selectButtonText: 'SELECT',\n showClearFilesButton: true,\n clearFilesButtonText: 'CLEAR',\n uploadButtonText: 'UPLOAD',\n uploadButtonType: 'button',\n showUploadProgress: false,\n disableOnUpload: true\n }\n\n @ViewChild('fileInput') fileInputRef: ElementRef\n\n selectedFiles: FileList;\n\n isUploaded = false;\n\n fileProgress: Observable<number>[] = [];\n disabled$: Observable<boolean>;\n\n // ngControl: NgControl = null;\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n ) {\n super();\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.disabled$ = this.config.disabledCallback\n ? this.config.disabledCallback(this.group, this.config)\n : of(false);\n }\n\n\n filesChanged(files: FileList): void {\n if (files && files.length > 0 ) {\n this.selectedFiles = files\n this.control.patchValue(files);\n }\n }\n\n uploadFiles() {\n if(this.selectedFiles && this.config.uploadFiles) {\n this.isUploaded = true;\n this.config.uploadFiles(this.group, this.selectedFiles, this);\n }\n }\n\n resetFileInput(): void {\n this.fileInputRef.nativeElement.value = ''\n this.control.patchValue(null);\n this.isUploaded = false;\n }\n\n writeValue( value: null ) {\n // clear file input\n // this.host.nativeElement.value = '';\n // this.file = null;\n }\n\n registerOnChange( fn: () => void ) {\n this.onChange = fn;\n }\n\n registerOnTouched( fn: () => void ) {\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n FieldContainerModule,\n ReactiveFormsModule,\n MatIconModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n SelectedFileModule,\n FormValidationHandlerModule,\n ],\n exports: [\n FileUploadFieldComponent,\n FileDropzoneDirective\n ],\n declarations: [\n FileUploadFieldComponent,\n FileDropzoneDirective\n ]\n})\nexport class FileUploadFieldModule {\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n appearance=\"outline\"\n [crisprFileDropzone]=\"!(disabled$ | async) && !(config.disableOnUpload && isUploaded)\"\n [formGroup]=\"group\"\n (fileDrop)=\"filesChanged($event)\">\n\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n style=\"display: none\"\n [accept]=\"config.acceptedTypes\"\n [multiple]=\"config.allowMultipleFiles\"\n (change)=\"filesChanged($event.target.files)\"/>\n <mat-label>{{config.label}}</mat-label>\n\n <div *ngIf=\"!(selectedFiles?.length > 0); else selectedFileList\" class=\"drop-info\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n or\n <button\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async) || config.disableOnUpload && isUploaded\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n {{config.selectButtonText}}\n </button>\n </div>\n <ng-template #selectedFileList>\n <div class=\"selected-files-container\">\n <div class=\"selected-files-list\">\n <crispr-selected-file\n *ngFor=\"let file of selectedFiles; let i = index;\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"file.name\"\n [showProgress]=\"config.showUploadProgress\"\n [progress]=\"fileProgress && (fileProgress[i] | async)\">\n </crispr-selected-file>\n </div>\n\n </div>\n </ng-template>\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n </mat-form-field>\n <div class=\"button-container\" *ngIf=\"selectedFiles?.length > 0\">\n\n <button\n mat-button\n (click)=\"resetFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n aria-label=\"Remove Selected File(s)\">\n {{config.clearFilesButtonText}}\n <mat-icon>delete</mat-icon>\n </button>\n\n <button\n *ngIf=\"!!config.uploadFiles\"\n mat-raised-button\n type=\"button\"\n color=\"accent\"\n class=\"file-input-button\"\n [disabled]=\"(disabled$ | async) || (config.disableOnUpload && isUploaded)\"\n (click)=\"uploadFiles()\"\n [attr.aria-label]=\"config.uploadButtonText\">\n {{ config.uploadButtonText }}\n </button>\n\n </div>\n</crispr-field-container>\n","export function convertBytesToMb( bytes: number): number {\n return bytes/1048576;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n ChangeDetectionStrategy,\n Optional,\n Self,\n ChangeDetectorRef,\n NgModule\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport imageCompression from 'browser-image-compression';\nimport { combineLatest, Observable, of, Subject } from 'rxjs';\nimport { map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators';\nimport { FileUploadFieldModule } from '../file-upload';\nimport { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';\nimport { FieldContainerModule } from '../../field-container/field-container.component';\nimport type { ImageUploadFieldConfig } from '../../models/image-upload-field.config';\nimport { convertBytesToMb } from './image-compression.helpers';\nimport { SelectedFileModule } from '../selected-file/selected-file.component';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\nconst ImageUploadFieldMixin = crisprControlMixin<ImageUploadFieldConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-image-upload-field',\n templateUrl: './image-upload-field.component.html',\n styleUrls: ['./image-upload-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageUploadFieldComponent extends ImageUploadFieldMixin implements OnInit, ControlValueAccessor {\n\n onChange: () => void;\n\n defaultConfig: Partial<ImageUploadFieldConfig> = {\n // allowMultipleFiles: false,\n acceptedTypes: 'image/*',\n dropZoneText: 'DROP FILE HERE',\n selectFilesButtonType: 'button',\n selectButtonText: 'SELECT',\n showClearFilesButton: true,\n clearFilesButtonText: 'CLEAR',\n resetFilesButtonText: 'RESET',\n imagePreviewHeight: '250px',\n compressImage: false,\n targetCompressedImageFileSizeMb: .4,\n minCompressionThresholdMb: .6,\n useWebWorker: true,\n }\n\n private inputImageFileSubject = new Subject<File | null>();\n inputImageFile$ = this.inputImageFileSubject.asObservable().pipe(\n shareReplay(1),\n );\n /**\n * the compression progress\n */\n progress: number | undefined;\n\n compressedFile$: Observable<File> = this.inputImageFile$.pipe(\n switchMap(async (file) => {\n if (!file || !(file instanceof File)) return null;\n const { compressImage, targetCompressedImageFileSizeMb, minCompressionThresholdMb, maxWidthOrHeight, useWebWorker } = this.config;\n const fileSizeMb = convertBytesToMb(file.size);\n const shouldCompress = compressImage\n && targetCompressedImageFileSizeMb < fileSizeMb\n && minCompressionThresholdMb < fileSizeMb\n if (shouldCompress) {\n const options = {\n // Use maxWidthOrHeight if it was provided, else use target compressed size\n ...(maxWidthOrHeight ? {maxWidthOrHeight} : { maxSizeMB: targetCompressedImageFileSizeMb}),\n useWebWorker,\n maxIterations: 30,\n onProgress: (progress: number) => {\n this.progress = progress;\n this.cdr.detectChanges();\n }\n }\n return await imageCompression(file, options);\n } else return file;\n }),\n map((compressedFile: File) => {\n if(!compressedFile) return compressedFile;\n const { type, name, lastModified } = compressedFile\n return new File([compressedFile], this.config.fileName || name, {\n type,\n lastModified\n });\n }),\n tap(file => {\n // only set the value if there is a file because resetToInitialValue sets the control value\n // to initial value and clears the compressed image, so setting it to null here would undo that\n if (file) {\n this.control.setValue(file);\n }\n if (file || this.value) {\n this.control.markAsTouched();\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 100)\n }\n }),\n shareReplay(1)\n )\n\n compressedImageUrlString$: Observable<string | null> = this.compressedFile$.pipe(\n switchMap(async (file) => {\n if(!file) return null;\n const compressedStringImage = await imageCompression.getDataUrlFromFile(file);\n return this.domSanitizer.bypassSecurityTrustResourceUrl(compressedStringImage) as string\n }),\n shareReplay(1),\n )\n\n // This is what is displayed by the image preview\n imageSrcUrl$: Observable<string | null>;\n\n @ViewChild('fileInput') fileInputRef: ElementRef\n\n selectedFiles: FileList;\n\n isUploaded = false;\n\n disabled$: Observable<boolean>;\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) {\n super();\n if (this.ngControl != null) {\n // Setting the value accessor directly (instead of using\n // the providers) to avoid running into a circular import.\n ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.imageSrcUrl$ = combineLatest([\n this.compressedImageUrlString$.pipe(startWith(null)),\n this.control.valueChanges.pipe(\n startWith(this.value),\n map((controlValue): string => {\n if(!controlValue) return null;\n if(controlValue instanceof File) return null;\n return this.config.mapInputValueToUrl?.(controlValue) || controlValue as string\n })\n )\n ]).pipe(\n map(([compressedImageUrlString, controlUrl]) => {\n return compressedImageUrlString || controlUrl || null;\n })\n )\n this.disabled$ = this.config.disabledCallback\n ? this.config.disabledCallback(this.group, this.config)\n : of(false);\n }\n\n filesChanged(files: FileList): void {\n if (files && files.length > 0 ) {\n const imageFile = files[0];\n // We clear the control here so that it is invalid while compressing\n // the input pipeline will take care of resetting it\n this.control.patchValue(null);\n // this.control.setErrors({compressing: {loadingMessage: 'Please wait while file compresses'}});\n this.control.markAsTouched();\n this.inputImageFileSubject.next(imageFile);\n }\n }\n\n clearFileInput(): void {\n this.inputImageFileSubject.next(null);\n this.fileInputRef.nativeElement.value = ''\n this.control.patchValue(null);\n this.control.markAsTouched();\n this.isUploaded = false;\n }\n\n resetToInitialValue(initialValue: string): void {\n this.inputImageFileSubject.next(null);\n this.control.patchValue(initialValue)\n this.isUploaded = false;\n }\n\n writeValue( value: null ) { }\n\n registerOnChange( fn: () => void ) {\n this.onChange = fn;\n }\n\n registerOnTouched( fn: () => void ) { }\n}\n@NgModule({\n imports: [\n CommonModule,\n FieldContainerModule,\n ReactiveFormsModule,\n MatIconModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n SelectedFileModule,\n FileUploadFieldModule,\n FormValidationHandlerModule\n ],\n exports: [\n ImageUploadFieldComponent\n ],\n declarations: [\n ImageUploadFieldComponent\n ]\n})\nexport class ImageUploadFieldModule { }\n\nexport function maxFileSizeValidator(maxFileSize: number): ValidatorFn {\n return (control: FormControl): ValidationErrors | null => {\n const controlValue = control.value;\n if (!(controlValue instanceof File)) {\n return null;\n }\n const actualFileSize = +convertBytesToMb(controlValue.size).toPrecision(3);\n if (maxFileSize > actualFileSize) return null;\n return {maxFileSize: { maxFileSize, actualFileSize }};\n }\n}\n\nexport function allowedFileExtValidator(allowedFileExtensions: string[], onlyAllowFiles = true): ValidatorFn {\n return (control: FormControl): ValidationErrors | null => {\n const controlValue = control.value;\n const isFile = controlValue instanceof File;\n if (!onlyAllowFiles && !isFile) return null;\n const actualExtension = isFile ? controlValue.name.split('.').pop().toLocaleLowerCase() : 'Not a file';\n const isAllowedExtension = allowedFileExtensions.includes(actualExtension);\n if(isAllowedExtension) {\n return null;\n }\n return {allowedExtension: { allowedFileExtensions, actualExtension }};\n }\n}\n\nexport function allowedFileType(matchExp: string | RegExp): ValidatorFn {\n return (formControl) => {\n const value = (formControl as FormControl).value;\n if (!(value instanceof File)) return null\n const type = value.type;\n const matches = type.match(matchExp)\n if (!type || !matches?.length) {\n return {\n allowedFileType: {\n actualType: type,\n allowedTypeExp: matchExp\n }\n }\n } else {\n return null\n }\n };\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>{{config.label}}</mat-label>\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n [accept]=\"config.acceptedTypes\"\n (change)=\"filesChanged($event.target.files)\"/>\n <div class=\"ui-container\">\n\n <div class=\"image-preview\" [style.height]=\"config.imagePreviewHeight\">\n <crispr-selected-file\n *ngIf=\"(progress < 100) && inputImageFile$ | async as file; else dropzoneOrPreview\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"'Compressing: ' + file.name\"\n [showProgress]=\"true\"\n [progress]=\"progress\">\n </crispr-selected-file>\n\n <ng-template #dropzoneOrPreview>\n <!-- <img *ngIf=\"(initialUrlString$ | async) as initialUrlString;\" [src]=\"initialUrlString\" alt=\"\"> -->\n <img *ngIf=\"imageSrcUrl$ | async as srcUrl; else noImage\" [src]=\"srcUrl\" alt=\"\">\n <ng-template #noImage>\n <div class=\"drop-container\"\n [crisprFileDropzone]=\"!(disabled$ | async)\"\n (fileDrop)=\"filesChanged($event)\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n </div>\n </ng-template>\n\n </ng-template>\n </div>\n\n\n\n <!-- </ng-template> -->\n <div class=\"button-container\" *ngIf=\"true\">\n\n <button\n mat-button\n (click)=\"clearFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>delete</mat-icon>\n {{config.clearFilesButtonText}}\n </button>\n\n <button\n *ngIf=\"value\"\n mat-button\n (click)=\"resetToInitialValue(value)\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>replay</mat-icon>\n {{config.resetFilesButtonText}}\n </button>\n\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async)\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n <mat-icon>\n camera\n </mat-icon>\n SELECT\n </button>\n </div>\n </div>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\nimport { FieldContainerModule } from '../field-container/field-container.component';\nimport { InputFieldModule } from './input-field/input-field.component';\nimport { SelectFieldModule } from './select-field/select-field.component';\nimport { AutocompleteFieldModule } from './autocomplete-field/autocomplete-field.component';\nimport { CheckboxFieldModule } from './checkbox-field/checkbox-field.component';\nimport { TextareaFieldModule } from './textarea-field/textarea-field.component';\nimport { ButtonModule } from './button/button.component';\nimport { DatepickerFieldModule } from './datepicker-field/datepicker-field.component';\n\n\nimport { HeadingModule } from './heading/heading.component';\nimport { InfoModule } from './info/info.component';\nimport { SliderFieldModule} from './slider-field/slider-field.component';\nimport { DividerModule } from './divider/divider.component';\n// tslint:disable-next-line: max-line-length\nimport { AutocompleteChiplistFieldModule } from './autocomplete-chiplist-field/autocomplete-chiplist-field.component';\nimport { OptionModule } from './option/option.component';\nimport { RadioFieldModule } from './radio-field/radio-field.component';\nimport { UnitConversionFieldModule } from './unit-conversion-field/unit-conversion-field.component';\nimport { FileUploadFieldModule } from './file-upload';\n\n// TODO: Should we import UI library?\n// Will the tree shaker shake the unused modules?\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n InfoModule,\n CheckboxFieldModule,\n SelectFieldModule,\n AutocompleteFieldModule,\n AutocompleteChiplistFieldModule,\n DatepickerFieldModule,\n InputFieldModule,\n FileUploadFieldModule,\n RadioFieldModule,\n SliderFieldModule,\n TextareaFieldModule,\n UnitConversionFieldModule,\n ButtonModule,\n DividerModule,\n HeadingModule,\n FieldContainerModule,\n OptionModule,\n ],\n})\nexport class MaterialModule {\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ControlValue, AnyFieldConfig } from '../models';\nimport { isControlConfig } from '../form.helpers';\n\n@Pipe({\n name: 'initialControlValue'\n})\nexport class InitialControlValuePipe implements PipeTransform {\n // TODO: does changing any to unknown break anything?\n transform(initialFormValue: {[key: string]: ControlValue | any}, fieldConfig: AnyFieldConfig): unknown {\n return (initialFormValue && isControlConfig(fieldConfig))\n ? initialFormValue[fieldConfig.controlName] || null\n : null;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { InitialControlValuePipe } from \"./initial-control-value.pipe\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n InitialControlValuePipe\n ],\n declarations: [\n InitialControlValuePipe\n ]\n})\n\nexport class CrisprPipesModule {\n}\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnInit, NgModule } from '@angular/core';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { ControlGroupValue, FormConfig } from '../models';\nimport { buildFormGroupFromConfig } from '../form.helpers';\nimport { Observable } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldModule } from '../field.directive';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\n@Component({\n selector: 'crispr-form',\n styleUrls: ['form.component.scss'],\n templateUrl: 'form.component.html',\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CrisprFormComponent implements OnInit {\n // if no form has been passed in by consuming component, we create an empty group to build out\n @Input() config: FormConfig;\n @Input() form: FormGroup = new FormGroup({});\n @Input() value: ControlGroupValue = null;\n\n\n @Output() submitted = new EventEmitter<FormGroup>();\n // proxy value and status change events through to consuming component\n @Output() valueChanges: Observable<any> = this.form.valueChanges;\n @Output() statusChanges: Observable<string> = this.form.statusChanges;\n\n @ViewChild('submitTrigger') submitTrigger: ElementRef<HTMLButtonElement>;\n\n ngOnInit() {\n // build out the form, note that we pass in the form as the third argument and the function modifies it\n buildFormGroupFromConfig(this.config, this.value, this.form);\n }\n\n handleSubmit() {\n this.form.markAllAsTouched();\n this.submitted.emit(this.form);\n }\n\n triggerSubmit() {\n this.submitTrigger.nativeElement.click();\n }\n}\n@NgModule({\n imports: [\n CommonModule,\n CrisprFieldModule,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n CrisprPipesModule\n ],\n exports: [\n CrisprFormComponent\n ],\n declarations: [\n CrisprFormComponent\n ]\n})\nexport class CrisprFormModule {\n}\n","<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n","import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\n\nimport type { FormGroupListConfig } from '../models';\nimport { createControlForType } from '../form.helpers';\nimport { CrisprFieldComponent, crisprControlMixin } from '../abstracts';\n\nconst defaultConfig: Partial<FormGroupListConfig> = {\n addButtonLabel: 'ADD ITEM',\n minListLength: 1,\n};\n\nconst FormGroupListMixin = crisprControlMixin<FormGroupListConfig>(CrisprFieldComponent);\n@Component({\n selector: 'crispr-form-group-list',\n templateUrl: './form-group-list.component.html',\n styleUrls: ['./form-group-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormGroupListComponent extends FormGroupListMixin implements OnInit {\n\n defaultConfig = defaultConfig\n group: FormGroup;\n control: FormArray;\n /**\n * By setting this to true when adding/removing items from array,\n * we can block original values from overwriting form values\n * */\n blockValue = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n // TODO: this is required to ngFor of controls in template, must be a better way\n }\n\n setControlValue(values: any[]) {\n if(this.control) {\n if(values?.length > 0) {\n // clear any existing values so that new values don't concatenate onto the old\n const currentValues:[] = this.control.value;\n if(currentValues.length) {\n this.control.clear();\n }\n values.forEach(value => this.addGroup(value));\n\n } else if (this.config.displayInitialItem) {\n this.addGroup()\n }\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n }\n\n clickDelete(index: number) {\n this.blockValue = true;\n this.deleteGroup(index);\n }\n\n clickAdd() {\n this.blockValue = true;\n this.addGroup();\n }\n\n addGroup(value = null) {\n this.control.push(createControlForType(this.config.itemConfig, value));\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n\n deleteGroup(index: number) {\n this.control.removeAt(index);\n }\n}\n","\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <div *ngFor=\"let con of control?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"con\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"con\">\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n","import { MatButtonModule } from '@angular/material/button';\nimport { FieldContainerModule } from '../field-container';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CrisprFieldModule } from '../field.directive';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormGroupListComponent } from './form-group-list.component';\nimport { CommonModule } from '@angular/common';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n FieldContainerModule,\n ReactiveFormsModule,\n CrisprFieldModule,\n CrisprPipesModule,\n FormValidationHandlerModule\n ],\n exports: [\n FormGroupListComponent\n ],\n declarations: [\n FormGroupListComponent\n ]\n})\n\nexport class FormGroupListModule {\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { SubGroupConfig } from '../models';\nimport { crisprControlMixin, CrisprFieldComponent } from '../abstracts';\n\nconst FormGroupMixin = crisprControlMixin<SubGroupConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-sub-group',\n templateUrl: './sub-group.component.html',\n styleUrls: ['./sub-group.component.scss'],\n // TODO: child image upload controls aren't getting updated appropriately when in OnPush strategy.\n // We can add cdr to this class, but everything that extends it will need the cdr attached\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubGroupComponent extends FormGroupMixin implements OnInit {\n group: FormGroup;\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <ng-container\n *ngFor=\"let fieldConfig of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : fieldConfig\"\n [config]=\"fieldConfig\"\n [group]=\"control\">\n </ng-container>\n</crispr-field-container>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldModule } from '../field.directive';\nimport { FieldContainerModule } from '../field-container';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { SubGroupComponent } from './sub-group.component';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n@NgModule({\n imports: [\n CommonModule,\n CrisprFieldModule,\n FieldContainerModule,\n CrisprPipesModule,\n // TODO: Does this need to be here?\n FormValidationHandlerModule\n ],\n exports: [\n SubGroupComponent\n ],\n declarations: [\n SubGroupComponent\n ]\n})\n\nexport class SubGroupModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n// custom modules\nimport { MaterialModule } from './material/material.module'\n\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\n// components\nimport { CrisprFormModule } from './form/form.component';\nimport { FormGroupListModule } from './form-group-list';\n// directives\nimport { CrisprFieldModule } from './field.directive';\nimport { SubGroupModule } from './sub-group';\nimport { CrisprPipesModule } from './pipes/crispr-pipes.module';\nimport { FieldContainerModule } from './field-container';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n FormGroupListModule,\n FieldContainerModule,\n CrisprFieldModule,\n SubGroupModule,\n MaterialModule,\n CrisprPipesModule,\n CrisprFormModule\n ],\n exports: [\n CrisprFormModule,\n FieldContainerModule,\n MaterialModule\n ]\n})\nexport class CrisprFormsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","defaultConfig","i3.InfoComponent","i2.HeadingComponent","i2.InfoComponent","i4.FieldContainerComponent","i3.OptionComponent","i4","i6","i8","i9.FieldContainerComponent","i5.FieldContainerComponent","i9","i11","i3.FieldContainerComponent","i5","i2.FieldContainerComponent","i7","i1","i8.SelectedFileComponent","i9.SelectedFileComponent","i10.FileDropzoneDirective","i2.CrisprFieldDirective","i5.InitialControlValuePipe","i6.CrisprFieldDirective","i8.InitialControlValuePipe","i4.InitialControlValuePipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tft-crispr-forms.mjs","sources":["../../../../libs/crispr-forms/src/lib/field-component-map.const.ts","../../../../libs/crispr-forms/src/lib/field.directive.ts","../../../../libs/crispr-forms/src/lib/pipes/initial-control-value.pipe.ts","../../../../libs/crispr-forms/src/lib/pipes/crispr-pipes.module.ts","../../../../libs/crispr-forms/src/lib/form/form.component.ts","../../../../libs/crispr-forms/src/lib/form/form.component.html","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.ts","../../../../libs/crispr-forms/src/lib/form-group-list/form-group-list.component.html","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.ts","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.component.html","../../../../libs/crispr-forms/src/lib/sub-group/sub-group.module.ts","../../../../libs/crispr-forms/src/lib/crispr-forms.module.ts","../../../../libs/crispr-forms/tft-crispr-forms.ts"],"sourcesContent":["/* eslint-disable @nrwl/nx/enforce-module-boundaries */\n// tslint:disable-next-line: max-line-length\nimport type { FormGroupListComponent } from './form-group-list/form-group-list.component';\nimport type { SubGroupComponent } from './sub-group/sub-group.component';\nimport type { HeadingComponent } from '@tft/crispr-forms/ui';\nimport type { ImageUploadFieldComponent } from '@tft/crispr-forms/ui/image-upload-field';\nimport type { DatepickerFieldComponent } from '@tft/crispr-forms/ui/datepicker-field';\nimport type { CheckboxFieldComponent } from '@tft/crispr-forms/ui/checkbox-field';\nimport type { TextareaFieldComponent } from '@tft/crispr-forms/ui/textarea-field';\nimport type { AutocompleteFieldComponent } from '@tft/crispr-forms/ui/autocomplete-field';\nimport type { SelectFieldComponent } from '@tft/crispr-forms/ui/select-field';\nimport type { InputFieldComponent, } from '@tft/crispr-forms/ui/input-field';\nimport type { RadioFieldComponent } from '@tft/crispr-forms/ui/radio-field';\nimport type { FileUploadFieldComponent } from '@tft/crispr-forms/ui/file-upload-field';\nimport type { SliderFieldComponent } from '@tft/crispr-forms/ui/slider-field';\nimport type { DividerComponent } from '@tft/crispr-forms/ui/divider';\nimport type { ButtonComponent } from '@tft/crispr-forms/ui/button';\nimport type { UnitConversionFieldComponent } from '@tft/crispr-forms/ui/unit-conversion-field';\n\nimport type { AutocompleteChiplistFieldComponent } from '@tft/crispr-forms/ui/autocomplete-chiplist-field';\n\nimport { isControlConfig, ControlType } from '@tft/crispr-forms/utils';\n\nexport const FIELD_COMPONENTS = {\n groupList: () => import('./form-group-list').then (({FormGroupListComponent}) => FormGroupListComponent),\n subGroup: () => import('./sub-group').then(({ SubGroupComponent}) => SubGroupComponent),\n button: () => import('@tft/crispr-forms/ui/button').then(({ ButtonComponent}) => ButtonComponent),\n input: () => import('@tft/crispr-forms/ui/input-field').then(({ InputFieldComponent}) => InputFieldComponent),\n select: () => import('@tft/crispr-forms/ui/select-field').then(({ SelectFieldComponent}) => SelectFieldComponent),\n radio: () => import('@tft/crispr-forms/ui/radio-field').then(({ RadioFieldComponent}) => RadioFieldComponent),\n autocomplete: () => import('@tft/crispr-forms/ui/autocomplete-field').then(({ AutocompleteFieldComponent}) => AutocompleteFieldComponent),\n autocompleteChiplist: () => import('@tft/crispr-forms/ui/autocomplete-chiplist-field').then(({ AutocompleteChiplistFieldComponent}) => AutocompleteChiplistFieldComponent),\n textarea: () => import('@tft/crispr-forms/ui/textarea-field').then(({ TextareaFieldComponent}) => TextareaFieldComponent),\n checkbox: () => import('@tft/crispr-forms/ui/checkbox-field').then(({ CheckboxFieldComponent}) => CheckboxFieldComponent),\n slider: () => import('@tft/crispr-forms/ui/slider-field').then(({ SliderFieldComponent}) => SliderFieldComponent),\n datepicker: () => import('@tft/crispr-forms/ui/datepicker-field').then(({ DatepickerFieldComponent}) => DatepickerFieldComponent),\n fileUpload: () => import('@tft/crispr-forms/ui/file-upload-field').then(({ FileUploadFieldComponent}) => FileUploadFieldComponent),\n imageUpload: () => import('@tft/crispr-forms/ui/image-upload-field').then(({ ImageUploadFieldComponent}) => ImageUploadFieldComponent),\n heading: () => import('@tft/crispr-forms/ui').then(({ HeadingComponent}) => HeadingComponent),\n divider: () => import('@tft/crispr-forms/ui/divider').then(({ DividerComponent}) => DividerComponent),\n unitConversion: () => import('@tft/crispr-forms/ui/unit-conversion-field').then(({ UnitConversionFieldComponent}) => UnitConversionFieldComponent)\n};\n\nexport function isControlComponent(component: CrisprFieldComponentType): component is CrisprControlComponentType {\n return component && isControlConfig(component.config) && 'value' in component // || component.config.controlType === ControlType.BUTTON;\n}\n\nexport function isControlOrButtonComponent(component: CrisprFieldComponentType): component is CrisprControlOrButton {\n return isControlComponent(component) || component.config.controlType === ControlType.BUTTON;\n}\n\nexport type CrisprControlOrButton = CrisprControlComponentType | ButtonComponent;\n\nexport type CrisprControlComponentType = InputFieldComponent |\n SelectFieldComponent |\n RadioFieldComponent |\n SubGroupComponent |\n FormGroupListComponent |\n AutocompleteFieldComponent |\n AutocompleteChiplistFieldComponent |\n TextareaFieldComponent |\n CheckboxFieldComponent |\n SliderFieldComponent |\n FileUploadFieldComponent |\n ImageUploadFieldComponent|\n DatepickerFieldComponent |\n UnitConversionFieldComponent;\n\nexport type ComponentKeys = keyof typeof FIELD_COMPONENTS;\n// export type CrisprFieldComponent = FIELD_COMPONENTS[ComponentKeys];\n\nexport type CrisprFieldComponentType = CrisprControlComponentType |\n HeadingComponent |\n DividerComponent |\n ButtonComponent;\n\n","import { Directive, Input, ViewContainerRef, Renderer2, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { CrisprFieldComponentType, FIELD_COMPONENTS, isControlComponent, isControlOrButtonComponent } from './field-component-map.const';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { AnyFieldConfig, ControlValue } from '@tft/crispr-forms/utils';\n\n@Directive({\n selector: '[crisprField]',\n standalone: true\n})\nexport class CrisprFieldDirective implements OnInit {\n\n @Input() config: AnyFieldConfig;\n @Input() group: FormGroup;\n /**\n * value setter updates the control's value as well\n */\n _value: ControlValue | any[]\n @Input() set value(value: ControlValue | any[]) {\n this._value = value;\n // This is needed to keep the group list from resetting control values to the initial input value\n this.updateComponentValue(value);\n };\n get value() {\n return this._value;\n }\n component: CrisprFieldComponentType;\n\n constructor(\n private container: ViewContainerRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit() {\n /**\n * create component and set values from config on its instance\n */\n const component = this.config.component || await FIELD_COMPONENTS[this.config.controlType]();\n const componentRef = this.container.createComponent<CrisprFieldComponentType>(component);\n\n this.component = componentRef.instance;\n this.component.config = this.config;\n if (isControlOrButtonComponent(this.component)) {\n this.component.group = this.group;\n }\n this.updateComponentValue(this.value);\n // adds any config classes to the dynamically generated component\n // doing this here keeps us from having to extend a base component into each field component individually\n if(!this.config.classes) return;\n this.config.classes.forEach((klass) => {\n // check for passing multiple classes in one array element\n if(klass.includes(' ')) {\n throw Error(`Improperly formatted class. '${klass}' cannot contain spaces.`);\n } else {\n this.renderer.addClass(componentRef.location.nativeElement, klass);\n }\n });\n }\n\n updateComponentValue(value: ControlValue | any[]) {\n if(isControlComponent(this.component)) {\n this.component.value = value;\n // SubGroups won't populate without this detectChanges\n this.cdr.detectChanges();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { ControlValue, AnyFieldConfig, isControlConfig } from '@tft/crispr-forms/utils';\n\n@Pipe({\n name: 'initialControlValue'\n})\nexport class InitialControlValuePipe implements PipeTransform {\n // TODO: does changing any to unknown break anything?\n transform(initialFormValue: {[key: string]: ControlValue | any}, fieldConfig: AnyFieldConfig): unknown {\n return (initialFormValue && isControlConfig(fieldConfig))\n ? initialFormValue[fieldConfig.controlName] || null\n : null;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { InitialControlValuePipe } from \"./initial-control-value.pipe\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n InitialControlValuePipe\n ],\n declarations: [\n InitialControlValuePipe\n ]\n})\n\nexport class CrisprPipesModule {\n}\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { ControlGroupValue, FormConfig, buildFormGroupFromConfig } from '@tft/crispr-forms/utils';\n\n@Component({\n selector: 'crispr-form',\n styleUrls: ['form.component.scss'],\n templateUrl: 'form.component.html',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n CrisprFieldDirective,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n CrisprPipesModule\n ],\n})\nexport class CrisprFormComponent implements OnInit {\n // if no form has been passed in by consuming component, we create an empty group to build out\n @Input() config: FormConfig;\n @Input() form: FormGroup = new FormGroup({});\n @Input() value: ControlGroupValue = null;\n\n\n @Output() submitted = new EventEmitter<FormGroup>();\n // proxy value and status change events through to consuming component\n @Output() valueChanges: Observable<any> = this.form.valueChanges;\n @Output() statusChanges: Observable<string> = this.form.statusChanges;\n\n @ViewChild('submitTrigger') submitTrigger: ElementRef<HTMLButtonElement>;\n\n ngOnInit() {\n // build out the form, note that we pass in the form as the third argument and the function modifies it\n buildFormGroupFromConfig(this.config, this.value, this.form);\n }\n\n handleSubmit() {\n this.form.markAllAsTouched();\n this.submitted.emit(this.form);\n }\n\n triggerSubmit() {\n this.submitTrigger.nativeElement.click();\n }\n}\n","<form\n class=\"crispr-form\"\n [ngClass]=\"config.classes\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleSubmit()\"\n [autocomplete]=\"config.autocomplete || 'off'\"\n [errorDictionary]=\"config.errorDictionary\"\n #ngFormElement=\"ngForm\">\n\n <ng-container\n *ngFor=\"let field of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"form\">\n </ng-container>\n <!-- Hidden button, programmatically clicked when crispr form triggerSubmit function called.\n Uses a hidden button with type=\"submit\" because it will trigger both native form submit event\n (which the error handler has to listen for) and ngSubmit event -->\n <button #submitTrigger class=\"submit-trigger\" type=\"submit\">\n </button>\n</form>\n","import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { CrisprFieldComponent, crisprControlMixin, createControlForType, FormGroupListConfig } from '@tft/crispr-forms/utils';\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\n\nconst defaultConfig: Partial<FormGroupListConfig> = {\n addButtonLabel: 'ADD ITEM',\n minListLength: 1,\n};\n\nconst FormGroupListMixin = crisprControlMixin<FormGroupListConfig>(CrisprFieldComponent);\n@Component({\n selector: 'crispr-form-group-list',\n templateUrl: './form-group-list.component.html',\n styleUrls: ['./form-group-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n FieldContainerComponent,\n ReactiveFormsModule,\n CrisprFieldDirective,\n CrisprPipesModule,\n FormValidationHandlerModule\n ],\n})\nexport class FormGroupListComponent extends FormGroupListMixin implements OnInit {\n\n defaultConfig = defaultConfig\n group: FormGroup;\n control: FormArray;\n /**\n * By setting this to true when adding/removing items from array,\n * we can block original values from overwriting form values\n * */\n blockValue = false;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n super.ngOnInit();\n // TODO: this is required to ngFor of controls in template, must be a better way\n }\n\n setControlValue(values: any[]) {\n if(this.control) {\n if(values?.length > 0) {\n // clear any existing values so that new values don't concatenate onto the old\n const currentValues:[] = this.control.value;\n if(currentValues.length) {\n this.control.clear();\n }\n values.forEach(value => this.addGroup(value));\n\n } else if (this.config.displayInitialItem) {\n this.addGroup()\n }\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n }\n\n clickDelete(index: number) {\n this.blockValue = true;\n this.deleteGroup(index);\n }\n\n clickAdd() {\n this.blockValue = true;\n this.addGroup();\n }\n\n addGroup(value = null) {\n this.control.push(createControlForType(this.config.itemConfig, value));\n // needed to ensure new array items render\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n }\n\n deleteGroup(index: number) {\n this.control.removeAt(index);\n }\n}\n","\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- Don't add trackBy function, it confuses the state of the array -->\n <div *ngFor=\"let con of control?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\"> {{ config.itemLabelBuilder ? config.itemLabelBuilder(i) : 'Item ' + (i + 1) }} </span>\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"clickDelete(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroup]=\"con\">\n <!-- TODO: if chiplists didn't need to have labels mixed in with their values we could use [value]=\"control.value\" below -->\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [value]=\"blockValue ? null : value && value[i] | initialControlValue : field\"\n [config]=\"field\"\n [group]=\"con\">\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"clickAdd()\">\n {{config.addItemLabel || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries\nimport { crisprControlMixin, CrisprFieldComponent, SubGroupConfig } from '@tft/crispr-forms/utils';\n\nconst FormGroupMixin = crisprControlMixin<SubGroupConfig>(CrisprFieldComponent);\n\n@Component({\n selector: 'crispr-sub-group',\n templateUrl: './sub-group.component.html',\n styleUrls: ['./sub-group.component.scss'],\n // TODO: child image upload controls aren't getting updated appropriately when in OnPush strategy.\n // We can add cdr to this class, but everything that extends it will need the cdr attached\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubGroupComponent extends FormGroupMixin implements OnInit {\n group: FormGroup;\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <ng-container\n *ngFor=\"let fieldConfig of config.fields;\"\n crisprField\n [value]=\"value | initialControlValue : fieldConfig\"\n [config]=\"fieldConfig\"\n [group]=\"control\">\n </ng-container>\n</crispr-field-container>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrisprFieldDirective } from '../field.directive';\nimport { CrisprPipesModule } from '../pipes/crispr-pipes.module';\nimport { SubGroupComponent } from './sub-group.component';\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\n@NgModule({\n imports: [\n CommonModule,\n CrisprFieldDirective,\n FieldContainerComponent,\n CrisprPipesModule,\n // TODO: Does this need to be here?\n FormValidationHandlerModule\n ],\n exports: [\n SubGroupComponent\n ],\n declarations: [\n SubGroupComponent\n ]\n})\n\nexport class SubGroupModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n// custom modules\nimport { FormValidationHandlerModule } from '@tft/form-validation-handler';\n\n// components\nimport { CrisprFormComponent } from './form/form.component';\nimport { FormGroupListComponent } from './form-group-list';\n// directives\nimport { CrisprFieldDirective } from './field.directive';\nimport { SubGroupModule } from './sub-group';\nimport { CrisprPipesModule } from './pipes/crispr-pipes.module';\nimport { FieldContainerComponent } from '@tft/crispr-forms/ui';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormValidationHandlerModule,\n FormGroupListComponent,\n FieldContainerComponent,\n CrisprFieldDirective,\n SubGroupModule,\n CrisprPipesModule,\n CrisprFormComponent\n ],\n exports: [\n CrisprFormComponent,\n FieldContainerComponent,\n // MaterialModule\n ]\n})\nexport class CrisprFormsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4.InitialControlValuePipe","i2","i4","i6","i2.CrisprFieldDirective"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBO,MAAM,gBAAgB,GAAG;AAC9B,IAAA,SAAS,EAAE,MAAM,uDAA2B,CAAC,IAAI,CAAE,CAAC,EAAC,sBAAsB,EAAC,KAAK,sBAAsB,CAAC;AACxG,IAAA,QAAQ,EAAE,MAAM,qDAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,EAAC,KAAM,iBAAiB,CAAC;AACxF,IAAA,MAAM,EAAE,MAAM,OAAO,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,EAAC,KAAM,eAAe,CAAC;AAClG,IAAA,KAAK,EAAE,MAAM,OAAO,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,EAAC,KAAM,mBAAmB,CAAC;AAC9G,IAAA,MAAM,EAAE,MAAM,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,EAAC,KAAM,oBAAoB,CAAC;AAClH,IAAA,KAAK,EAAE,MAAM,OAAO,kCAAkC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,EAAC,KAAM,mBAAmB,CAAC;AAC9G,IAAA,YAAY,EAAE,MAAM,OAAO,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,0BAA0B,EAAC,KAAM,0BAA0B,CAAC;AAC1I,IAAA,oBAAoB,EAAE,MAAM,OAAO,kDAAkD,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,kCAAkC,EAAC,KAAM,kCAAkC,CAAC;AAC3K,IAAA,QAAQ,EAAE,MAAM,OAAO,qCAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,sBAAsB,EAAC,KAAM,sBAAsB,CAAC;AAC1H,IAAA,QAAQ,EAAE,MAAM,OAAO,qCAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,sBAAsB,EAAC,KAAM,sBAAsB,CAAC;AAC1H,IAAA,MAAM,EAAE,MAAM,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,EAAC,KAAM,oBAAoB,CAAC;AAClH,IAAA,UAAU,EAAE,MAAM,OAAO,uCAAuC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,wBAAwB,EAAC,KAAM,wBAAwB,CAAC;AAClI,IAAA,UAAU,EAAE,MAAM,OAAO,wCAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,wBAAwB,EAAC,KAAM,wBAAwB,CAAC;AACnI,IAAA,WAAW,EAAE,MAAM,OAAO,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,yBAAyB,EAAC,KAAM,yBAAyB,CAAC;AACvI,IAAA,OAAO,EAAE,MAAM,OAAO,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAC,KAAM,gBAAgB,CAAC;AAC9F,IAAA,OAAO,EAAE,MAAM,OAAO,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,EAAC,KAAM,gBAAgB,CAAC;AACtG,IAAA,cAAc,EAAE,MAAM,OAAO,4CAA4C,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,4BAA4B,EAAC,KAAM,4BAA4B,CAAC;CACpJ,CAAC;AAEI,SAAU,kBAAkB,CAAC,SAAmC,EAAA;AACpE,IAAA,OAAO,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,SAAS,CAAA;AAC/E,CAAC;AAEK,SAAU,0BAA0B,CAAC,SAAmC,EAAA;AAC5E,IAAA,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC;AAC9F;;MCvCa,oBAAoB,CAAA;AAkB/B,IAAA,WAAA,CACU,SAA2B,EAC3B,QAAmB,EACnB,GAAsB,EAAA;QAFtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;KAC5B;IAdJ,IAAa,KAAK,CAAC,KAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;AAEpB,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAClC;;AACD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AASD,IAAA,MAAM,QAAQ,GAAA;AACZ;;AAEG;AACH,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAA2B,SAAS,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;AAGtC,QAAA,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;AAEpC,YAAA,IAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,gBAAA,MAAM,KAAK,CAAC,CAAA,6BAAA,EAAgC,KAAK,CAAA,wBAAA,CAA0B,CAAC,CAAC;AAC9E,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACpE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,oBAAoB,CAAC,KAA2B,EAAA;AAC9C,QAAA,IAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;;AAE7B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;KACF;;iHAxDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+JAGU,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAKO,KAAK,EAAA,CAAA;sBAAjB,KAAK;;;MCXK,uBAAuB,CAAA;;IAElC,SAAS,CAAC,gBAAqD,EAAE,WAA2B,EAAA;AAC1F,QAAA,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,WAAW,CAAC;cACpD,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,IAAI;cACjD,IAAI,CAAC;KACV;;oHANU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,qBAAqB;AAC5B,iBAAA,CAAA;;;MCUY,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJ1B,YAAA,EAAA,CAAA,uBAAuB,CANvB,EAAA,OAAA,EAAA,CAAA,YAAY,aAGZ,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAOd,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAV1B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAUH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;AACxB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;AACxB,qBAAA;AACF,iBAAA,CAAA;;;MCUY,mBAAmB,CAAA;AAdhC,IAAA,WAAA,GAAA;AAiBW,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,IAAK,CAAA,KAAA,GAAsB,IAAI,CAAC;AAG/B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAa,CAAC;;AAE1C,QAAA,IAAA,CAAA,YAAY,GAAoB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAiBvE,KAAA;IAbC,QAAQ,GAAA;;AAEN,QAAA,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9D;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC1C;;gHA1BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBhC,2yBAsBA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,2BAA2B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;+BACE,aAAa,EAAA,UAAA,EAIX,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,mBAAmB;wBACnB,2BAA2B;wBAC3B,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,2yBAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,CAAA;8BAIQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEqB,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;;;AEtB5B,MAAM,aAAa,GAAiC;AAClD,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,kBAAkB,GAAG,kBAAkB,CAAsB,oBAAoB,CAAC,CAAC;AAkBnF,MAAO,sBAAuB,SAAQ,kBAAkB,CAAA;AAW5D,IAAA,WAAA,CAAoB,GAAsB,EAAA;AACxC,QAAA,KAAK,EAAE,CAAC;QADU,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAT1C,IAAa,CAAA,aAAA,GAAG,aAAa,CAAA;AAG7B;;;AAGK;QACL,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;KAIlB;IAED,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;;KAElB;AAED,IAAA,eAAe,CAAC,MAAa,EAAA;QAC3B,IAAG,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAG,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;;AAErB,gBAAA,MAAM,aAAa,GAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC5C,IAAG,aAAa,CAAC,MAAM,EAAE;AACvB,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,iBAAA;AACD,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAE/C,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBACzC,IAAI,CAAC,QAAQ,EAAE,CAAA;AAChB,aAAA;;YAED,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAA;AACH,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;;QAEvE,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAA;KACH;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;;mHA5DU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yGCrCnC,sgDA4CA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,8GACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,4GACjB,2BAA2B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGlB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,uBAAuB;wBACvB,mBAAmB;wBACnB,oBAAoB;wBACpB,iBAAiB;wBACjB,2BAA2B;AAC5B,qBAAA,EAAA,QAAA,EAAA,sgDAAA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,CAAA;;;;;;;;AE7BH,MAAM,cAAc,GAAG,kBAAkB,CAAiB,oBAAoB,CAAC,CAAC;AAU1E,MAAO,iBAAkB,SAAQ,cAAc,CAAA;IAGnD,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;;8GALU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+EChB9B,+TAYA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FDIa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,+TAAA,EAAA,CAAA;;;MEejB,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,CAJvB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAXjB,YAAY;QACZ,oBAAoB;QACpB,uBAAuB;QACvB,iBAAiB;;AAEjB,QAAA,2BAA2B,aAG3B,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAOR,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAfvB,YAAY;QAEZ,uBAAuB;QACvB,iBAAiB;;QAEjB,2BAA2B,CAAA,EAAA,CAAA,CAAA;2FAUlB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,uBAAuB;wBACvB,iBAAiB;;wBAEjB,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;AAClB,qBAAA;AACF,iBAAA,CAAA;;;;;;;;;MCWY,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhB1B,YAAY;QACZ,mBAAmB;QACnB,2BAA2B;QAC3B,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,cAAc;QACd,iBAAiB;AACjB,QAAA,mBAAmB,aAGnB,mBAAmB;QACnB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAId,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhB1B,YAAY;QACZ,mBAAmB;QACnB,2BAA2B;QAC3B,sBAAsB;QACtB,uBAAuB;QAEvB,cAAc;QACd,iBAAiB;QACjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;2FAQV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,2BAA2B;wBAC3B,sBAAsB;wBACtB,uBAAuB;wBACvB,oBAAoB;wBACpB,cAAc;wBACd,iBAAiB;wBACjB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,uBAAuB;;AAExB,qBAAA;AACF,iBAAA,CAAA;;;AChCD;;AAEG;;;;"}
|