@tft/crispr-forms 12.2.19 → 13.0.0
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/index.mjs +2 -0
- package/esm2020/lib/abstracts/autocomplete-field.abstract.mjs +30 -0
- package/esm2020/lib/abstracts/crispr-control.mixin.mjs +27 -0
- package/esm2020/lib/abstracts/crispr-field.abstract.mjs +17 -0
- package/esm2020/lib/abstracts/index.mjs +4 -0
- package/esm2020/lib/crispr-forms.module.mjs +66 -0
- package/esm2020/lib/field-component-map.const.mjs +25 -0
- package/esm2020/lib/field-container/field-container.component.mjs +85 -0
- package/esm2020/lib/field-container/index.mjs +2 -0
- package/esm2020/lib/field.directive.mjs +77 -0
- package/esm2020/lib/form/form.component.mjs +54 -0
- package/esm2020/lib/form-group-list/form-group-list.component.mjs +51 -0
- package/esm2020/lib/form-group-list/form-group-list.module.mjs +54 -0
- package/esm2020/lib/form-group-list/index.mjs +3 -0
- package/esm2020/lib/form.helpers.mjs +185 -0
- package/esm2020/lib/form.operators.mjs +24 -0
- package/esm2020/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +111 -0
- package/esm2020/lib/material/autocomplete-field/autocomplete-field.component.mjs +70 -0
- package/esm2020/lib/material/button/button.component.mjs +35 -0
- package/esm2020/lib/material/checkbox-field/checkbox-field.component.mjs +31 -0
- package/esm2020/lib/material/datepicker-field/datepicker-field.component.mjs +45 -0
- package/esm2020/lib/material/divider/divider.component.mjs +22 -0
- package/esm2020/lib/material/file-upload/file-dropzone.directive.mjs +39 -0
- package/esm2020/lib/material/file-upload/file-upload.component.mjs +145 -0
- package/esm2020/lib/material/file-upload/index.mjs +3 -0
- package/esm2020/lib/material/heading/heading.component.mjs +54 -0
- package/esm2020/lib/material/image-upload-field/image-compression.helpers.mjs +4 -0
- package/esm2020/lib/material/image-upload-field/image-upload-field.component.mjs +213 -0
- package/esm2020/lib/material/image-upload-field/index.mjs +2 -0
- package/esm2020/lib/material/index.mjs +18 -0
- package/esm2020/lib/material/info/info.component.mjs +46 -0
- package/esm2020/lib/material/input-field/input-field.component.mjs +27 -0
- package/esm2020/lib/material/material.module.mjs +200 -0
- package/esm2020/lib/material/option/index.mjs +2 -0
- package/esm2020/lib/material/option/option.component.mjs +14 -0
- package/esm2020/lib/material/radio-field/radio-field.component.mjs +29 -0
- package/esm2020/lib/material/select-field/select-field.component.mjs +58 -0
- package/esm2020/lib/material/selected-file/selected-file.component.mjs +47 -0
- package/esm2020/lib/material/slider-field/slider-field.component.mjs +30 -0
- package/esm2020/lib/material/textarea-field/textarea-field.component.mjs +28 -0
- package/esm2020/lib/material/unit-conversion-field/unit-conversion-field.component.mjs +69 -0
- package/esm2020/lib/models/autocomplete-chiplist-field.config.mjs +2 -0
- package/esm2020/lib/models/autocomplete-field.config.mjs +2 -0
- package/esm2020/lib/models/button.config.mjs +2 -0
- package/esm2020/lib/models/checkbox-field.config.mjs +2 -0
- package/esm2020/lib/models/crispr-field.config.mjs +23 -0
- package/esm2020/lib/models/datepicker-field.config.mjs +2 -0
- package/esm2020/lib/models/divider.config.mjs +2 -0
- package/esm2020/lib/models/file-upload-field.config.mjs +2 -0
- package/esm2020/lib/models/form-group-list.config.mjs +2 -0
- package/esm2020/lib/models/heading.config.mjs +3 -0
- package/esm2020/lib/models/image-upload-field.config.mjs +2 -0
- package/esm2020/lib/models/index.mjs +18 -0
- package/esm2020/lib/models/input-field.config.mjs +2 -0
- package/esm2020/lib/models/radio-field.config.mjs +2 -0
- package/esm2020/lib/models/select-field.config.mjs +2 -0
- package/esm2020/lib/models/slider-field.config.mjs +2 -0
- package/esm2020/lib/models/textarea-field.config.mjs +2 -0
- package/esm2020/lib/models/unit-conversion-field.config.mjs +2 -0
- package/esm2020/lib/pipes/crispr-pipes.module.mjs +26 -0
- package/esm2020/lib/pipes/initial-control-value.pipe.mjs +20 -0
- package/esm2020/lib/public_api.mjs +10 -0
- package/esm2020/lib/sub-group/index.mjs +3 -0
- package/esm2020/lib/sub-group/sub-group.component.mjs +20 -0
- package/esm2020/lib/sub-group/sub-group.module.mjs +45 -0
- package/esm2020/tft-crispr-forms.mjs +5 -0
- package/fesm2015/tft-crispr-forms.mjs +1883 -0
- package/fesm2015/tft-crispr-forms.mjs.map +1 -0
- package/fesm2020/tft-crispr-forms.mjs +1875 -0
- package/fesm2020/tft-crispr-forms.mjs.map +1 -0
- package/lib/abstracts/autocomplete-field.abstract.d.ts +4 -1
- package/lib/abstracts/crispr-control.mixin.d.ts +1 -1
- package/lib/abstracts/crispr-field.abstract.d.ts +4 -1
- package/lib/crispr-forms.module.d.ts +14 -0
- package/lib/field-component-map.const.d.ts +21 -20
- package/lib/field-container/field-container.component.d.ts +11 -1
- package/lib/field-container/index.d.ts +1 -0
- package/lib/field.directive.d.ts +14 -5
- package/lib/form/form.component.d.ts +6 -1
- package/lib/form-group-list/form-group-list.component.d.ts +4 -1
- package/lib/form-group-list/form-group-list.module.d.ts +15 -0
- package/lib/form-group-list/index.d.ts +2 -0
- package/lib/form.helpers.d.ts +1 -1
- package/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +3 -0
- package/lib/material/autocomplete-field/autocomplete-field.component.d.ts +4 -1
- package/lib/material/button/button.component.d.ts +3 -0
- package/lib/material/checkbox-field/checkbox-field.component.d.ts +3 -0
- package/lib/material/datepicker-field/datepicker-field.component.d.ts +3 -0
- package/lib/material/divider/divider.component.d.ts +3 -0
- package/lib/material/file-upload/file-dropzone.directive.d.ts +3 -0
- package/lib/material/file-upload/file-upload.component.d.ts +20 -2
- package/lib/material/file-upload/index.d.ts +2 -0
- package/lib/material/heading/heading.component.d.ts +12 -1
- package/lib/material/image-upload-field/image-compression.helpers.d.ts +1 -0
- package/lib/material/image-upload-field/image-upload-field.component.d.ts +63 -0
- package/lib/material/image-upload-field/index.d.ts +1 -0
- package/lib/material/index.d.ts +4 -1
- package/lib/material/info/info.component.d.ts +12 -1
- package/lib/material/input-field/input-field.component.d.ts +3 -0
- package/lib/material/material.module.d.ts +42 -0
- package/lib/material/option/index.d.ts +1 -0
- package/lib/material/option/option.component.d.ts +3 -0
- package/lib/material/radio-field/radio-field.component.d.ts +3 -0
- package/lib/material/select-field/select-field.component.d.ts +3 -0
- package/lib/material/selected-file/selected-file.component.d.ts +10 -0
- package/lib/material/slider-field/slider-field.component.d.ts +3 -0
- package/lib/material/textarea-field/textarea-field.component.d.ts +3 -0
- package/lib/material/unit-conversion-field/unit-conversion-field.component.d.ts +3 -0
- package/lib/models/autocomplete-field.config.d.ts +2 -1
- package/lib/models/button.config.d.ts +3 -2
- package/lib/models/crispr-field.config.d.ts +8 -7
- package/lib/models/file-upload-field.config.d.ts +3 -2
- package/lib/models/form-group-list.config.d.ts +7 -1
- package/lib/models/image-upload-field.config.d.ts +47 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/input-field.config.d.ts +1 -1
- package/lib/models/radio-field.config.d.ts +1 -1
- package/lib/models/unit-conversion-field.config.d.ts +0 -1
- package/lib/pipes/crispr-pipes.module.d.ts +8 -0
- package/lib/pipes/initial-control-value.pipe.d.ts +3 -0
- package/lib/public_api.d.ts +1 -0
- package/lib/sub-group/index.d.ts +2 -0
- package/lib/sub-group/sub-group.component.d.ts +3 -0
- package/lib/sub-group/sub-group.module.d.ts +12 -0
- package/package.json +31 -15
- package/tft-crispr-forms-13.0.0.tgz +0 -0
- package/tft-crispr-forms.d.ts +1 -25
- package/bundles/tft-crispr-forms.umd.js +0 -1719
- package/bundles/tft-crispr-forms.umd.js.map +0 -1
- package/esm2015/index.js +0 -2
- package/esm2015/index.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/lib/abstracts/autocomplete-field.abstract.js +0 -27
- package/esm2015/lib/abstracts/autocomplete-field.abstract.js.map +0 -1
- package/esm2015/lib/abstracts/autocomplete-field.abstract.metadata.json +0 -1
- package/esm2015/lib/abstracts/crispr-control.mixin.js +0 -27
- package/esm2015/lib/abstracts/crispr-control.mixin.js.map +0 -1
- package/esm2015/lib/abstracts/crispr-control.mixin.metadata.json +0 -1
- package/esm2015/lib/abstracts/crispr-field.abstract.js +0 -14
- package/esm2015/lib/abstracts/crispr-field.abstract.js.map +0 -1
- package/esm2015/lib/abstracts/crispr-field.abstract.metadata.json +0 -1
- package/esm2015/lib/abstracts/index.js +0 -4
- package/esm2015/lib/abstracts/index.js.map +0 -1
- package/esm2015/lib/abstracts/index.metadata.json +0 -1
- package/esm2015/lib/crispr-forms.module.js +0 -41
- package/esm2015/lib/crispr-forms.module.js.map +0 -1
- package/esm2015/lib/crispr-forms.module.metadata.json +0 -1
- package/esm2015/lib/crispr-forms.module.ngfactory.js.map +0 -1
- package/esm2015/lib/field-component-map.const.js +0 -28
- package/esm2015/lib/field-component-map.const.js.map +0 -1
- package/esm2015/lib/field-component-map.const.metadata.json +0 -1
- package/esm2015/lib/field-container/field-container.component.js +0 -57
- package/esm2015/lib/field-container/field-container.component.js.map +0 -1
- package/esm2015/lib/field-container/field-container.component.metadata.json +0 -1
- package/esm2015/lib/field-container/field-container.component.ngfactory.js.map +0 -1
- package/esm2015/lib/field-container/field-container.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/field.directive.js +0 -55
- package/esm2015/lib/field.directive.js.map +0 -1
- package/esm2015/lib/field.directive.metadata.json +0 -1
- package/esm2015/lib/field.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/form/form.component.js +0 -40
- package/esm2015/lib/form/form.component.js.map +0 -1
- package/esm2015/lib/form/form.component.metadata.json +0 -1
- package/esm2015/lib/form/form.component.ngfactory.js.map +0 -1
- package/esm2015/lib/form/form.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/form-group-list/form-group-list.component.js +0 -44
- package/esm2015/lib/form-group-list/form-group-list.component.js.map +0 -1
- package/esm2015/lib/form-group-list/form-group-list.component.metadata.json +0 -1
- package/esm2015/lib/form-group-list/form-group-list.component.ngfactory.js.map +0 -1
- package/esm2015/lib/form-group-list/form-group-list.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/form.helpers.js +0 -186
- package/esm2015/lib/form.helpers.js.map +0 -1
- package/esm2015/lib/form.helpers.metadata.json +0 -1
- package/esm2015/lib/form.operators.js +0 -24
- package/esm2015/lib/form.operators.js.map +0 -1
- package/esm2015/lib/form.operators.metadata.json +0 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js +0 -101
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js.map +0 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.metadata.json +0 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js +0 -57
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js.map +0 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.metadata.json +0 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/button/button.component.js +0 -30
- package/esm2015/lib/material/button/button.component.js.map +0 -1
- package/esm2015/lib/material/button/button.component.metadata.json +0 -1
- package/esm2015/lib/material/button/button.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/button/button.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/checkbox-field/checkbox-field.component.js +0 -25
- package/esm2015/lib/material/checkbox-field/checkbox-field.component.js.map +0 -1
- package/esm2015/lib/material/checkbox-field/checkbox-field.component.metadata.json +0 -1
- package/esm2015/lib/material/checkbox-field/checkbox-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/checkbox-field/checkbox-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.js +0 -45
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.js.map +0 -1
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.metadata.json +0 -1
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/divider/divider.component.js +0 -20
- package/esm2015/lib/material/divider/divider.component.js.map +0 -1
- package/esm2015/lib/material/divider/divider.component.metadata.json +0 -1
- package/esm2015/lib/material/divider/divider.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/divider/divider.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/file-upload/file-dropzone.directive.js +0 -31
- package/esm2015/lib/material/file-upload/file-dropzone.directive.js.map +0 -1
- package/esm2015/lib/material/file-upload/file-dropzone.directive.metadata.json +0 -1
- package/esm2015/lib/material/file-upload/file-dropzone.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/material/file-upload/file-upload.component.js +0 -80
- package/esm2015/lib/material/file-upload/file-upload.component.js.map +0 -1
- package/esm2015/lib/material/file-upload/file-upload.component.metadata.json +0 -1
- package/esm2015/lib/material/file-upload/file-upload.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/file-upload/file-upload.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/heading/heading.component.js +0 -23
- package/esm2015/lib/material/heading/heading.component.js.map +0 -1
- package/esm2015/lib/material/heading/heading.component.metadata.json +0 -1
- package/esm2015/lib/material/heading/heading.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/heading/heading.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/index.js +0 -15
- package/esm2015/lib/material/index.js.map +0 -1
- package/esm2015/lib/material/index.metadata.json +0 -1
- package/esm2015/lib/material/info/info.component.js +0 -15
- package/esm2015/lib/material/info/info.component.js.map +0 -1
- package/esm2015/lib/material/info/info.component.metadata.json +0 -1
- package/esm2015/lib/material/info/info.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/info/info.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/input-field/input-field.component.js +0 -22
- package/esm2015/lib/material/input-field/input-field.component.js.map +0 -1
- package/esm2015/lib/material/input-field/input-field.component.metadata.json +0 -1
- package/esm2015/lib/material/input-field/input-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/input-field/input-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/material.module.js +0 -107
- package/esm2015/lib/material/material.module.js.map +0 -1
- package/esm2015/lib/material/material.module.metadata.json +0 -1
- package/esm2015/lib/material/material.module.ngfactory.js.map +0 -1
- package/esm2015/lib/material/option/option.component.js +0 -15
- package/esm2015/lib/material/option/option.component.js.map +0 -1
- package/esm2015/lib/material/option/option.component.metadata.json +0 -1
- package/esm2015/lib/material/option/option.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/option/option.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/radio-field/radio-field.component.js +0 -25
- package/esm2015/lib/material/radio-field/radio-field.component.js.map +0 -1
- package/esm2015/lib/material/radio-field/radio-field.component.metadata.json +0 -1
- package/esm2015/lib/material/radio-field/radio-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/radio-field/radio-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/select-field/select-field.component.js +0 -50
- package/esm2015/lib/material/select-field/select-field.component.js.map +0 -1
- package/esm2015/lib/material/select-field/select-field.component.metadata.json +0 -1
- package/esm2015/lib/material/select-field/select-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/select-field/select-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/selected-file/selected-file.component.js +0 -17
- package/esm2015/lib/material/selected-file/selected-file.component.js.map +0 -1
- package/esm2015/lib/material/selected-file/selected-file.component.metadata.json +0 -1
- package/esm2015/lib/material/selected-file/selected-file.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/selected-file/selected-file.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/slider-field/slider-field.component.js +0 -26
- package/esm2015/lib/material/slider-field/slider-field.component.js.map +0 -1
- package/esm2015/lib/material/slider-field/slider-field.component.metadata.json +0 -1
- package/esm2015/lib/material/slider-field/slider-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/slider-field/slider-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/textarea-field/textarea-field.component.js +0 -22
- package/esm2015/lib/material/textarea-field/textarea-field.component.js.map +0 -1
- package/esm2015/lib/material/textarea-field/textarea-field.component.metadata.json +0 -1
- package/esm2015/lib/material/textarea-field/textarea-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/textarea-field/textarea-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.js +0 -63
- package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.js.map +0 -1
- package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.metadata.json +0 -1
- package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.ngfactory.js.map +0 -1
- package/esm2015/lib/material/unit-conversion-field/unit-conversion-field.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/lib/models/autocomplete-chiplist-field.config.js +0 -2
- package/esm2015/lib/models/autocomplete-chiplist-field.config.js.map +0 -1
- package/esm2015/lib/models/autocomplete-chiplist-field.config.metadata.json +0 -1
- package/esm2015/lib/models/autocomplete-field.config.js +0 -2
- package/esm2015/lib/models/autocomplete-field.config.js.map +0 -1
- package/esm2015/lib/models/autocomplete-field.config.metadata.json +0 -1
- package/esm2015/lib/models/button.config.js +0 -2
- package/esm2015/lib/models/button.config.js.map +0 -1
- package/esm2015/lib/models/button.config.metadata.json +0 -1
- package/esm2015/lib/models/checkbox-field.config.js +0 -2
- package/esm2015/lib/models/checkbox-field.config.js.map +0 -1
- package/esm2015/lib/models/checkbox-field.config.metadata.json +0 -1
- package/esm2015/lib/models/crispr-field.config.js +0 -22
- package/esm2015/lib/models/crispr-field.config.js.map +0 -1
- package/esm2015/lib/models/crispr-field.config.metadata.json +0 -1
- package/esm2015/lib/models/datepicker-field.config.js +0 -2
- package/esm2015/lib/models/datepicker-field.config.js.map +0 -1
- package/esm2015/lib/models/datepicker-field.config.metadata.json +0 -1
- package/esm2015/lib/models/divider.config.js +0 -2
- package/esm2015/lib/models/divider.config.js.map +0 -1
- package/esm2015/lib/models/divider.config.metadata.json +0 -1
- package/esm2015/lib/models/file-upload-field.config.js +0 -2
- package/esm2015/lib/models/file-upload-field.config.js.map +0 -1
- package/esm2015/lib/models/file-upload-field.config.metadata.json +0 -1
- package/esm2015/lib/models/form-group-list.config.js +0 -2
- package/esm2015/lib/models/form-group-list.config.js.map +0 -1
- package/esm2015/lib/models/form-group-list.config.metadata.json +0 -1
- package/esm2015/lib/models/heading.config.js +0 -3
- package/esm2015/lib/models/heading.config.js.map +0 -1
- package/esm2015/lib/models/heading.config.metadata.json +0 -1
- package/esm2015/lib/models/index.js +0 -16
- package/esm2015/lib/models/index.js.map +0 -1
- package/esm2015/lib/models/index.metadata.json +0 -1
- package/esm2015/lib/models/input-field.config.js +0 -2
- package/esm2015/lib/models/input-field.config.js.map +0 -1
- package/esm2015/lib/models/input-field.config.metadata.json +0 -1
- package/esm2015/lib/models/radio-field.config.js +0 -2
- package/esm2015/lib/models/radio-field.config.js.map +0 -1
- package/esm2015/lib/models/radio-field.config.metadata.json +0 -1
- package/esm2015/lib/models/select-field.config.js +0 -2
- package/esm2015/lib/models/select-field.config.js.map +0 -1
- package/esm2015/lib/models/select-field.config.metadata.json +0 -1
- package/esm2015/lib/models/slider-field.config.js +0 -2
- package/esm2015/lib/models/slider-field.config.js.map +0 -1
- package/esm2015/lib/models/slider-field.config.metadata.json +0 -1
- package/esm2015/lib/models/textarea-field.config.js +0 -2
- package/esm2015/lib/models/textarea-field.config.js.map +0 -1
- package/esm2015/lib/models/textarea-field.config.metadata.json +0 -1
- package/esm2015/lib/models/unit-conversion-field.config.js +0 -2
- package/esm2015/lib/models/unit-conversion-field.config.js.map +0 -1
- package/esm2015/lib/models/unit-conversion-field.config.metadata.json +0 -1
- package/esm2015/lib/pipes/initial-control-value.pipe.js +0 -16
- package/esm2015/lib/pipes/initial-control-value.pipe.js.map +0 -1
- package/esm2015/lib/pipes/initial-control-value.pipe.metadata.json +0 -1
- package/esm2015/lib/pipes/initial-control-value.pipe.ngfactory.js.map +0 -1
- package/esm2015/lib/public_api.js +0 -9
- package/esm2015/lib/public_api.js.map +0 -1
- package/esm2015/lib/public_api.metadata.json +0 -1
- package/esm2015/lib/sub-group/sub-group.component.js +0 -17
- package/esm2015/lib/sub-group/sub-group.component.js.map +0 -1
- package/esm2015/lib/sub-group/sub-group.component.metadata.json +0 -1
- package/esm2015/lib/sub-group/sub-group.component.ngfactory.js.map +0 -1
- package/esm2015/lib/sub-group/sub-group.component.scss.shim.ngstyle.js.map +0 -1
- package/esm2015/tft-crispr-forms.js +0 -30
- package/esm2015/tft-crispr-forms.js.map +0 -1
- package/esm2015/tft-crispr-forms.metadata.json +0 -1
- package/fesm2015/tft-crispr-forms.js +0 -1263
- package/fesm2015/tft-crispr-forms.js.map +0 -1
- package/tft-crispr-forms-12.2.19.tgz +0 -0
- package/tft-crispr-forms.metadata.json +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../field-container/field-container.component";
|
|
5
|
+
import * as i2 from "@angular/material/checkbox";
|
|
6
|
+
import * as i3 from "../info/info.component";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@tft/form-validation-handler";
|
|
9
|
+
import * as i6 from "@angular/common";
|
|
10
|
+
import * as i7 from "@angular/material/form-field";
|
|
11
|
+
const defaultConfig = {
|
|
12
|
+
labelPosition: 'after',
|
|
13
|
+
inline: false
|
|
14
|
+
};
|
|
15
|
+
const CheckboxFieldMixin = crisprControlMixin(CrisprFieldComponent);
|
|
16
|
+
export class CheckboxFieldComponent extends CheckboxFieldMixin {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.defaultConfig = defaultConfig;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
super.ngOnInit();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
CheckboxFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CheckboxFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
CheckboxFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: CheckboxFieldComponent, selector: "crispr-checkbox-field", usesInheritance: true, ngImport: i0, template: "<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", styles: [""], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.InfoComponent, selector: "crispr-info", inputs: ["info"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: CheckboxFieldComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'crispr-checkbox-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [""] }]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9jaGVja2JveC1maWVsZC9jaGVja2JveC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2NoZWNrYm94LWZpZWxkL2NoZWNrYm94LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUzRSxNQUFNLGFBQWEsR0FBaUM7SUFDbEQsYUFBYSxFQUFFLE9BQU87SUFDdEIsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFBO0FBQ0QsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBc0Isb0JBQW9CLENBQUMsQ0FBQztBQVF6RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBTjlEOztRQVFFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBSS9CO0lBSEMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzttSEFMVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixvRkNoQm5DLHllQWtCQTsyRkRGYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja2JveEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPENoZWNrYm94RmllbGRDb25maWc+ID0ge1xuICBsYWJlbFBvc2l0aW9uOiAnYWZ0ZXInLFxuICBpbmxpbmU6IGZhbHNlXG59XG5jb25zdCBDaGVja2JveEZpZWxkTWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48Q2hlY2tib3hGaWVsZENvbmZpZz4oQ3Jpc3ByRmllbGRDb21wb25lbnQpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItY2hlY2tib3gtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQ2hlY2tib3hGaWVsZE1peGluIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxufVxuIiwiPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICBbaW5saW5lRmllbGRdPVwiY29uZmlnLmlubGluZVwiPlxuICA8ZGl2XG4gICAgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgIFtjb2xvcl09XCJjb25maWcuY29sb3JcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiY29uZmlnLmxhYmVsUG9zaXRpb25cIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIj5cbiAgICAgIHt7Y29uZmlnLmxhYmVsfX1cbiAgICAgIDxjcmlzcHItaW5mb1xuICAgICAgICBtYXRTdWZmaXggKm5nSWY9XCJjb25maWcuaW5mb1wiXG4gICAgICAgIFtpbmZvXT1cImNvbmZpZy5pbmZvXCI+XG4gICAgICA8L2NyaXNwci1pbmZvPlxuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvY3Jpc3ByLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../field-container/field-container.component";
|
|
7
|
+
import * as i2 from "@angular/material/form-field";
|
|
8
|
+
import * as i3 from "@angular/material/datepicker";
|
|
9
|
+
import * as i4 from "@angular/forms";
|
|
10
|
+
import * as i5 from "@tft/form-validation-handler";
|
|
11
|
+
import * as i6 from "@angular/common";
|
|
12
|
+
import * as i7 from "@angular/material/input";
|
|
13
|
+
import * as i8 from "@angular/cdk/portal";
|
|
14
|
+
const defaultConfig = {
|
|
15
|
+
startView: 'month',
|
|
16
|
+
};
|
|
17
|
+
const DatepickerFieldMixin = crisprControlMixin(CrisprFieldComponent);
|
|
18
|
+
export class DatepickerFieldComponent extends DatepickerFieldMixin {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.defaultConfig = defaultConfig;
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
super.ngOnInit();
|
|
25
|
+
this.startAt$ = this.config.startAt instanceof Date
|
|
26
|
+
? of(this.config.startAt)
|
|
27
|
+
: this.config.startAt instanceof Function
|
|
28
|
+
? this.config.startAt(this.group)
|
|
29
|
+
: of(null);
|
|
30
|
+
this.dateClass = this.config?.cellClassFunction || null;
|
|
31
|
+
this.dateClass$ = this.config.dateClass ? this.config?.dateClass(this.group) : of(() => '');
|
|
32
|
+
}
|
|
33
|
+
ngAfterContentInit() {
|
|
34
|
+
if (this.config.datepickerActions) {
|
|
35
|
+
this.calendarFooterPortal = new ComponentPortal(this.config.datepickerActions);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
DatepickerFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DatepickerFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
DatepickerFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DatepickerFieldComponent, selector: "crispr-datepicker-field", usesInheritance: true, ngImport: i0, template: "<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-form-field>\n</crispr-field-container>\n\n", styles: [""], components: [{ type: i1.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i3.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { type: i2.MatSuffix, selector: "[matSuffix]" }, { type: i8.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DatepickerFieldComponent, decorators: [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'crispr-datepicker-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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-form-field>\n</crispr-field-container>\n\n", styles: [""] }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RhdGVwaWNrZXItZmllbGQvZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RhdGVwaWNrZXItZmllbGQvZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLHVCQUF1QixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQUU5RCxNQUFNLGFBQWEsR0FBbUM7SUFDcEQsU0FBUyxFQUFFLE9BQU87Q0FDbkIsQ0FBQTtBQUNELE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQXdCLG9CQUFvQixDQUFDLENBQUM7QUFRN0YsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG9CQUFvQjtJQU5sRTs7UUFRRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztLQWdDL0I7SUF2QkMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxZQUFZLElBQUk7WUFDakQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLFlBQVksUUFBUTtnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFBO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEY7SUFDSCxDQUFDOztxSEExQlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isc0ZDbkJyQyw4aUNBZ0NBOzJGRGJhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVwaWNrZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBjcmlzcHJDb250cm9sTWl4aW4sIENyaXNwckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcbmltcG9ydCB7IE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuY29uc3QgZGVmYXVsdENvbmZpZzogUGFydGlhbDxEYXRlcGlja2VyRmllbGRDb25maWc+ID0ge1xuICBzdGFydFZpZXc6ICdtb250aCcsXG59XG5jb25zdCBEYXRlcGlja2VyRmllbGRNaXhpbiA9IGNyaXNwckNvbnRyb2xNaXhpbjxEYXRlcGlja2VyRmllbGRDb25maWc+KENyaXNwckZpZWxkQ29tcG9uZW50KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWRhdGVwaWNrZXItZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckZpZWxkQ29tcG9uZW50IGV4dGVuZHMgRGF0ZXBpY2tlckZpZWxkTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIGRlZmF1bHRDb25maWcgPSBkZWZhdWx0Q29uZmlnO1xuXG4gIGRhdGVDbGFzczogTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbjxNb21lbnQ+O1xuICBkYXRlQ2xhc3MkOiBPYnNlcnZhYmxlPE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb248TW9tZW50Pj47XG4gIHN0YXJ0QXQkOiBPYnNlcnZhYmxlPERhdGU+O1xuXG4gIC8qKiBBIHBvcnRhbCBjb250YWluaW5nIHRoZSBmb290ZXIgY29tcG9uZW50IHR5cGUgZm9yIHRoaXMgY2FsZW5kYXIuICovXG4gIGNhbGVuZGFyRm9vdGVyUG9ydGFsOiBQb3J0YWw8YW55PjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3RhcnRBdCQgPSB0aGlzLmNvbmZpZy5zdGFydEF0IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgPyBvZih0aGlzLmNvbmZpZy5zdGFydEF0KVxuICAgICAgOiB0aGlzLmNvbmZpZy5zdGFydEF0IGluc3RhbmNlb2YgRnVuY3Rpb25cbiAgICAgID8gdGhpcy5jb25maWcuc3RhcnRBdCh0aGlzLmdyb3VwKVxuICAgICAgOiBvZihudWxsKTtcbiAgICB0aGlzLmRhdGVDbGFzcyA9IHRoaXMuY29uZmlnPy5jZWxsQ2xhc3NGdW5jdGlvbiB8fCBudWxsXG4gICAgdGhpcy5kYXRlQ2xhc3MkID0gdGhpcy5jb25maWcuZGF0ZUNsYXNzID8gdGhpcy5jb25maWc/LmRhdGVDbGFzcyh0aGlzLmdyb3VwKSA6IG9mKCgpID0+ICcnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0ZXBpY2tlckFjdGlvbnMpIHtcbiAgICAgIHRoaXMuY2FsZW5kYXJGb290ZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuY29uZmlnLmRhdGVwaWNrZXJBY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGVTZWxlY3RlZENoYW5nZShldmVudCwgcGlja2VyOiBNYXREYXRlcGlja2VyPHVua25vd24+KSB7XG4gIC8vICAgY29uc29sZS5sb2coe2V2ZW50LCBwaWNrZXJ9KVxuICAvLyAgIGlmKHRoaXMuY29uZmlnLnNlbGVjdGVkQ2hhbmdlKSB7XG4gIC8vICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZENoYW5nZShldmVudCwgcGlja2VyKTtcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiIsIjxjcmlzcHItZmllbGQtY29udGFpbmVyXG4gIFtjb25maWddPVwiY29uZmlnXCJcbiAgW2dyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFtjb2xvcl09XCJjb25maWcuY29sb3JcIlxuICAgIFthcHBlYXJhbmNlXT1cImNvbmZpZy5hcHBlYXJhbmNlXCJcbiAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cImNvbmZpZy5sYWJlbFwiPlxuICAgICAge3tjb25maWcubGFiZWx9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgW21pbl09XCJjb25maWcubWluXCJcbiAgICAgICAgW21heF09XCJjb25maWcubWF4XCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiY29uZmlnLmRhdGVwaWNrZXJGaWx0ZXJcIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgW3RvdWNoVWldPVwiY29uZmlnLnRvdWNoVWlcIlxuICAgICAgICBbc3RhcnRWaWV3XT1cImNvbmZpZy5zdGFydFZpZXdcIlxuICAgICAgICBbc3RhcnRBdF09XCJzdGFydEF0JCB8IGFzeW5jXCJcbiAgICAgICAgW2RhdGVDbGFzc109XCJkYXRlQ2xhc3MgfHwgKGRhdGVDbGFzcyQgfCBhc3luYylcIlxuICAgICAgICAjcGlja2VyPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItYWN0aW9ucyAqbmdJZj1cImNhbGVuZGFyRm9vdGVyUG9ydGFsXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiY2FsZW5kYXJGb290ZXJQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC1kYXRlcGlja2VyLWFjdGlvbnM+XG4gICAgICA8L21hdC1kYXRlcGlja2VyPlxuXG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2NyaXNwci1maWVsZC1jb250YWluZXI+XG5cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { CrisprFieldComponent } from '../../abstracts';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/divider";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class DividerComponent extends CrisprFieldComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
// TODO: pull in type after configs are better organized
|
|
10
|
+
this.defaultConfig = {};
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
super.ngOnInit();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
DividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DividerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: DividerComponent, selector: "crispr-divider", usesInheritance: true, ngImport: i0, template: "<mat-divider [ngClass]=\"config.classes\"></mat-divider>", styles: [":host{display:block;padding:1em 0}::ng-deep .mat-divider.mat-divider-horizontal{position:relative}\n"], components: [{ type: i1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], preserveWhitespaces: true });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DividerComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'crispr-divider', template: "<mat-divider [ngClass]=\"config.classes\"></mat-divider>", styles: [":host{display:block;padding:1em 0}::ng-deep .mat-divider.mat-divider-horizontal{position:relative}\n"] }]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxvQkFBbUM7SUFMekU7O1FBTUUsd0RBQXdEO1FBQ3hELGtCQUFhLEdBQUcsRUFBRSxDQUFDO0tBS3BCO0lBSkMsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs2R0FMVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiw2RUNUN0IsMERBQXNEOzJGRFN6QyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpdmlkZXJDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItZGl2aWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXZpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGl2aWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpdmlkZXJDb21wb25lbnQgZXh0ZW5kcyBDcmlzcHJGaWVsZENvbXBvbmVudDxEaXZpZGVyQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRPRE86IHB1bGwgaW4gdHlwZSBhZnRlciBjb25maWdzIGFyZSBiZXR0ZXIgb3JnYW5pemVkXG4gIGRlZmF1bHRDb25maWcgPSB7fTtcbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG59XG4iLCI8bWF0LWRpdmlkZXIgW25nQ2xhc3NdPVwiY29uZmlnLmNsYXNzZXNcIj48L21hdC1kaXZpZGVyPiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Directive, HostListener, Output, EventEmitter, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FileDropzoneDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.fileDrop = new EventEmitter();
|
|
6
|
+
this.crisprFileDropzone = true;
|
|
7
|
+
}
|
|
8
|
+
onDrop($event) {
|
|
9
|
+
if (this.crisprFileDropzone) {
|
|
10
|
+
$event.preventDefault();
|
|
11
|
+
this.fileDrop.emit($event.dataTransfer.files);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// Prevents DOM from trying to open file in browser
|
|
15
|
+
onDragOver($event) {
|
|
16
|
+
if (this.crisprFileDropzone) {
|
|
17
|
+
$event.preventDefault();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
FileDropzoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileDropzoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
22
|
+
FileDropzoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: FileDropzoneDirective, selector: "[crisprFileDropzone]", inputs: { crisprFileDropzone: "crisprFileDropzone" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)" } }, ngImport: i0 });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileDropzoneDirective, decorators: [{
|
|
24
|
+
type: Directive,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: '[crisprFileDropzone]'
|
|
27
|
+
}]
|
|
28
|
+
}], propDecorators: { fileDrop: [{
|
|
29
|
+
type: Output
|
|
30
|
+
}], crisprFileDropzone: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], onDrop: [{
|
|
33
|
+
type: HostListener,
|
|
34
|
+
args: ['drop', ['$event']]
|
|
35
|
+
}], onDragOver: [{
|
|
36
|
+
type: HostListener,
|
|
37
|
+
args: ['dragover', ['$event']]
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wem9uZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2ZpbGUtZHJvcHpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtyRixNQUFNLE9BQU8scUJBQXFCO0lBSGxDO1FBS1ksYUFBUSxHQUFJLElBQUksWUFBWSxFQUFZLENBQUM7UUFFMUMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0tBaUJwQztJQWRDLE1BQU0sQ0FBQyxNQUFpQjtRQUN0QixJQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFFbkQsVUFBVSxDQUFDLE1BQWlCO1FBQzFCLElBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7O2tIQXBCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhCQUdXLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLO2dCQUdOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVWhDLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tjcmlzcHJGaWxlRHJvcHpvbmVdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZURyb3B6b25lRGlyZWN0aXZlIHtcclxuXHJcbiAgQE91dHB1dCgpIGZpbGVEcm9wID0gIG5ldyBFdmVudEVtaXR0ZXI8RmlsZUxpc3Q+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGNyaXNwckZpbGVEcm9wem9uZSA9IHRydWU7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIG9uRHJvcCgkZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgaWYodGhpcy5jcmlzcHJGaWxlRHJvcHpvbmUpIHtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuZmlsZURyb3AuZW1pdCgkZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFByZXZlbnRzIERPTSBmcm9tIHRyeWluZyB0byBvcGVuIGZpbGUgaW4gYnJvd3NlclxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcclxuICBvbkRyYWdPdmVyKCRldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBpZih0aGlzLmNyaXNwckZpbGVEcm9wem9uZSkge1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, ElementRef, ViewChild, ChangeDetectionStrategy, Optional, Self, NgModule } from '@angular/core';
|
|
3
|
+
import { NgControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { MatInputModule } from '@angular/material/input';
|
|
8
|
+
import { FormValidationHandlerModule } from '@tft/form-validation-handler';
|
|
9
|
+
import { of } from 'rxjs';
|
|
10
|
+
import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
|
|
11
|
+
import { FieldContainerModule } from '../../field-container/field-container.component';
|
|
12
|
+
import { SelectedFileModule } from '../selected-file/selected-file.component';
|
|
13
|
+
import { FileDropzoneDirective } from './file-dropzone.directive';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/forms";
|
|
16
|
+
import * as i2 from "../../field-container/field-container.component";
|
|
17
|
+
import * as i3 from "@angular/material/form-field";
|
|
18
|
+
import * as i4 from "@angular/material/icon";
|
|
19
|
+
import * as i5 from "@angular/material/button";
|
|
20
|
+
import * as i6 from "../selected-file/selected-file.component";
|
|
21
|
+
import * as i7 from "@tft/form-validation-handler";
|
|
22
|
+
import * as i8 from "@angular/material/input";
|
|
23
|
+
import * as i9 from "@angular/common";
|
|
24
|
+
const FileUploadFieldMixin = crisprControlMixin(CrisprFieldComponent);
|
|
25
|
+
export class FileUploadFieldComponent extends FileUploadFieldMixin {
|
|
26
|
+
// ngControl: NgControl = null;
|
|
27
|
+
constructor(ngControl) {
|
|
28
|
+
super();
|
|
29
|
+
this.ngControl = ngControl;
|
|
30
|
+
this.defaultConfig = {
|
|
31
|
+
allowMultipleFiles: false,
|
|
32
|
+
acceptedTypes: '*.*',
|
|
33
|
+
dropZoneText: 'DROP FILE HERE',
|
|
34
|
+
selectFilesButtonType: 'button',
|
|
35
|
+
selectButtonText: 'SELECT',
|
|
36
|
+
showClearFilesButton: true,
|
|
37
|
+
clearFilesButtonText: 'CLEAR',
|
|
38
|
+
uploadButtonText: 'UPLOAD',
|
|
39
|
+
uploadButtonType: 'button',
|
|
40
|
+
showUploadProgress: false,
|
|
41
|
+
disableOnUpload: true
|
|
42
|
+
};
|
|
43
|
+
this.isUploaded = false;
|
|
44
|
+
this.fileProgress = [];
|
|
45
|
+
if (this.ngControl != null) {
|
|
46
|
+
// Setting the value accessor directly (instead of using
|
|
47
|
+
// the providers) to avoid running into a circular import.
|
|
48
|
+
ngControl.valueAccessor = this;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
super.ngOnInit();
|
|
53
|
+
this.disabled$ = this.config.disabledCallback
|
|
54
|
+
? this.config.disabledCallback(this.group, this.config)
|
|
55
|
+
: of(false);
|
|
56
|
+
}
|
|
57
|
+
filesChanged(files) {
|
|
58
|
+
if (files && files.length > 0) {
|
|
59
|
+
this.selectedFiles = files;
|
|
60
|
+
this.control.patchValue(files);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
uploadFiles() {
|
|
64
|
+
if (this.selectedFiles && this.config.uploadFiles) {
|
|
65
|
+
this.isUploaded = true;
|
|
66
|
+
this.config.uploadFiles(this.group, this.selectedFiles, this);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
resetFileInput() {
|
|
70
|
+
this.fileInputRef.nativeElement.value = '';
|
|
71
|
+
this.control.patchValue(null);
|
|
72
|
+
this.isUploaded = false;
|
|
73
|
+
}
|
|
74
|
+
writeValue(value) {
|
|
75
|
+
// clear file input
|
|
76
|
+
// this.host.nativeElement.value = '';
|
|
77
|
+
// this.file = null;
|
|
78
|
+
}
|
|
79
|
+
registerOnChange(fn) {
|
|
80
|
+
this.onChange = fn;
|
|
81
|
+
}
|
|
82
|
+
registerOnTouched(fn) {
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
FileUploadFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
+
FileUploadFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: FileUploadFieldComponent, selector: "crispr-file-upload-field", viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<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\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", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0;display:flex;justify-content:center}:host .drop-info{display:flex;flex-direction:column;align-items:center}:host .drop-info .drop-icon{font-size:36px}:host .drop-info .mat-h2{margin:0}:host .button-container{display:flex;justify-content:flex-end;margin-top:-16px}:host .button-container button{margin-left:8px}:host .selected-files-container{width:100%}:host [matInput]{position:absolute;max-height:0;visibility:hidden}\n"], components: [{ type: i0.forwardRef(function () { return i2.FieldContainerComponent; }), selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { type: i0.forwardRef(function () { return i3.MatFormField; }), selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i0.forwardRef(function () { return i4.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i0.forwardRef(function () { return i5.MatButton; }), selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i0.forwardRef(function () { return i6.SelectedFileComponent; }), selector: "crispr-selected-file", inputs: ["fileName", "progress", "showProgress", "color"] }], directives: [{ type: i0.forwardRef(function () { return FileDropzoneDirective; }), selector: "[crisprFileDropzone]", inputs: ["crisprFileDropzone"], outputs: ["fileDrop"] }, { type: i0.forwardRef(function () { return i1.NgControlStatusGroup; }), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i0.forwardRef(function () { return i1.FormGroupDirective; }), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i0.forwardRef(function () { return i7.ControlErrorContainerDirective; }), selector: "[controlErrorContainer], [formGroup]" }, { type: i0.forwardRef(function () { return i8.MatInput; }), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i0.forwardRef(function () { return i1.DefaultValueAccessor; }), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i0.forwardRef(function () { return i1.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i1.FormControlName; }), selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i0.forwardRef(function () { return i7.ControlErrorsDirective; }), selector: "[formControl], [formControlName]" }, { type: i0.forwardRef(function () { return i3.MatLabel; }), selector: "mat-label" }, { type: i0.forwardRef(function () { return i9.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i9.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i0.forwardRef(function () { return i9.AsyncPipe; }) }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'crispr-file-upload-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<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\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", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0;display:flex;justify-content:center}:host .drop-info{display:flex;flex-direction:column;align-items:center}:host .drop-info .drop-icon{font-size:36px}:host .drop-info .mat-h2{margin:0}:host .button-container{display:flex;justify-content:flex-end;margin-top:-16px}:host .button-container button{margin-left:8px}:host .selected-files-container{width:100%}:host [matInput]{position:absolute;max-height:0;visibility:hidden}\n"] }]
|
|
90
|
+
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
91
|
+
type: Optional
|
|
92
|
+
}, {
|
|
93
|
+
type: Self
|
|
94
|
+
}] }]; }, propDecorators: { fileInputRef: [{
|
|
95
|
+
type: ViewChild,
|
|
96
|
+
args: ['fileInput']
|
|
97
|
+
}] } });
|
|
98
|
+
export class FileUploadFieldModule {
|
|
99
|
+
}
|
|
100
|
+
FileUploadFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
101
|
+
FileUploadFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, declarations: [FileUploadFieldComponent, FileDropzoneDirective], imports: [CommonModule,
|
|
102
|
+
FieldContainerModule,
|
|
103
|
+
ReactiveFormsModule,
|
|
104
|
+
MatIconModule,
|
|
105
|
+
MatButtonModule,
|
|
106
|
+
MatFormFieldModule,
|
|
107
|
+
MatInputModule,
|
|
108
|
+
SelectedFileModule,
|
|
109
|
+
FormValidationHandlerModule], exports: [FileUploadFieldComponent, FileDropzoneDirective] });
|
|
110
|
+
FileUploadFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, imports: [[
|
|
111
|
+
CommonModule,
|
|
112
|
+
FieldContainerModule,
|
|
113
|
+
ReactiveFormsModule,
|
|
114
|
+
MatIconModule,
|
|
115
|
+
MatButtonModule,
|
|
116
|
+
MatFormFieldModule,
|
|
117
|
+
MatInputModule,
|
|
118
|
+
SelectedFileModule,
|
|
119
|
+
FormValidationHandlerModule,
|
|
120
|
+
]] });
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: FileUploadFieldModule, decorators: [{
|
|
122
|
+
type: NgModule,
|
|
123
|
+
args: [{
|
|
124
|
+
imports: [
|
|
125
|
+
CommonModule,
|
|
126
|
+
FieldContainerModule,
|
|
127
|
+
ReactiveFormsModule,
|
|
128
|
+
MatIconModule,
|
|
129
|
+
MatButtonModule,
|
|
130
|
+
MatFormFieldModule,
|
|
131
|
+
MatInputModule,
|
|
132
|
+
SelectedFileModule,
|
|
133
|
+
FormValidationHandlerModule,
|
|
134
|
+
],
|
|
135
|
+
exports: [
|
|
136
|
+
FileUploadFieldComponent,
|
|
137
|
+
FileDropzoneDirective
|
|
138
|
+
],
|
|
139
|
+
declarations: [
|
|
140
|
+
FileUploadFieldComponent,
|
|
141
|
+
FileDropzoneDirective
|
|
142
|
+
]
|
|
143
|
+
}]
|
|
144
|
+
}] });
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBRVQsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFFbEUsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBd0Isb0JBQW9CLENBQUMsQ0FBQztBQVE3RixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBMkJoRSwrQkFBK0I7SUFDL0IsWUFDNkIsU0FBb0I7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFGbUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXpCakQsa0JBQWEsR0FBbUM7WUFDOUMsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixhQUFhLEVBQUUsS0FBSztZQUNwQixZQUFZLEVBQUUsZ0JBQWdCO1lBQzlCLHFCQUFxQixFQUFFLFFBQVE7WUFDL0IsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLG9CQUFvQixFQUFFLE9BQU87WUFDN0IsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsZUFBZSxFQUFFLElBQUk7U0FDdEIsQ0FBQTtRQU1ELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBUXRDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsd0RBQXdEO1lBQ3hELDBEQUEwRDtZQUMxRCxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQWU7UUFDMUIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7WUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBRSxLQUFXO1FBQ3JCLG1CQUFtQjtRQUNuQixzQ0FBc0M7UUFDdEMsb0JBQW9CO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxFQUFjO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxFQUFjO0lBQ2pDLENBQUM7O3FIQTlFVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixrTUNoQ3JDLHVsRkE0RUEseWtERHNESSxxQkFBcUI7MkZBbEdaLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OzBCQStCNUMsUUFBUTs7MEJBQUksSUFBSTs0Q0FYSyxZQUFZO3NCQUFuQyxTQUFTO3VCQUFDLFdBQVc7O0FBbUZ4QixNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBckdyQix3QkFBd0IsRUFrR2pDLHFCQUFxQixhQWhCckIsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixtQkFBbUI7UUFDbkIsYUFBYTtRQUNiLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQiwyQkFBMkIsYUExRmxCLHdCQUF3QixFQThGakMscUJBQXFCO21IQU9aLHFCQUFxQixZQXBCdkI7WUFDUCxZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLDJCQUEyQjtTQUM1QjsyRkFVVSxxQkFBcUI7a0JBckJqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWix3QkFBd0I7d0JBQ3hCLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uSGFuZGxlck1vZHVsZSB9IGZyb20gJ0B0ZnQvZm9ybS12YWxpZGF0aW9uLWhhbmRsZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgRmllbGRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuLi8uLi9maWVsZC1jb250YWluZXIvZmllbGQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEZpbGVVcGxvYWRGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLXVwbG9hZC1maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWxlTW9kdWxlIH0gZnJvbSAnLi4vc2VsZWN0ZWQtZmlsZS9zZWxlY3RlZC1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlRHJvcHpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2ZpbGUtZHJvcHpvbmUuZGlyZWN0aXZlJztcblxuY29uc3QgRmlsZVVwbG9hZEZpZWxkTWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48RmlsZVVwbG9hZEZpZWxkQ29uZmlnPihDcmlzcHJGaWVsZENvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1maWxlLXVwbG9hZC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkRmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWxlVXBsb2FkRmllbGRNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gIG9uQ2hhbmdlOiAoKSA9PiB2b2lkO1xuXG4gIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8RmlsZVVwbG9hZEZpZWxkQ29uZmlnPiA9IHtcbiAgICBhbGxvd011bHRpcGxlRmlsZXM6IGZhbHNlLFxuICAgIGFjY2VwdGVkVHlwZXM6ICcqLionLFxuICAgIGRyb3Bab25lVGV4dDogJ0RST1AgRklMRSBIRVJFJyxcbiAgICBzZWxlY3RGaWxlc0J1dHRvblR5cGU6ICdidXR0b24nLFxuICAgIHNlbGVjdEJ1dHRvblRleHQ6ICdTRUxFQ1QnLFxuICAgIHNob3dDbGVhckZpbGVzQnV0dG9uOiB0cnVlLFxuICAgIGNsZWFyRmlsZXNCdXR0b25UZXh0OiAnQ0xFQVInLFxuICAgIHVwbG9hZEJ1dHRvblRleHQ6ICdVUExPQUQnLFxuICAgIHVwbG9hZEJ1dHRvblR5cGU6ICdidXR0b24nLFxuICAgIHNob3dVcGxvYWRQcm9ncmVzczogZmFsc2UsXG4gICAgZGlzYWJsZU9uVXBsb2FkOiB0cnVlXG4gIH1cblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXRSZWY6IEVsZW1lbnRSZWZcblxuICBzZWxlY3RlZEZpbGVzOiBGaWxlTGlzdDtcblxuICBpc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgZmlsZVByb2dyZXNzOiBPYnNlcnZhYmxlPG51bWJlcj5bXSA9IFtdO1xuICBkaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLy8gbmdDb250cm9sOiBOZ0NvbnRyb2wgPSBudWxsO1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcbiAgICAgIC8vIHRoZSBwcm92aWRlcnMpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuZGlzYWJsZWQkID0gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFja1xuICAgID8gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFjayh0aGlzLmdyb3VwLCB0aGlzLmNvbmZpZylcbiAgICA6IG9mKGZhbHNlKTtcbiAgfVxuXG5cbiAgZmlsZXNDaGFuZ2VkKGZpbGVzOiBGaWxlTGlzdCk6IHZvaWQge1xuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwICkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gZmlsZXNcbiAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGZpbGVzKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRGaWxlcygpIHtcbiAgICBpZih0aGlzLnNlbGVjdGVkRmlsZXMgJiYgdGhpcy5jb25maWcudXBsb2FkRmlsZXMpIHtcbiAgICAgIHRoaXMuaXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmNvbmZpZy51cGxvYWRGaWxlcyh0aGlzLmdyb3VwLCB0aGlzLnNlbGVjdGVkRmlsZXMsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSggdmFsdWU6IG51bGwgKSB7XG4gICAgLy8gY2xlYXIgZmlsZSBpbnB1dFxuICAgIC8vIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgLy8gdGhpcy5maWxlID0gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiAoKSA9PiB2b2lkICkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCBmbjogKCkgPT4gdm9pZCApIHtcbiAgfVxufVxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGaWVsZENvbnRhaW5lck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBTZWxlY3RlZEZpbGVNb2R1bGUsXG4gICAgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRmlsZVVwbG9hZEZpZWxkQ29tcG9uZW50LFxuICAgIEZpbGVEcm9wem9uZURpcmVjdGl2ZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaWxlVXBsb2FkRmllbGRDb21wb25lbnQsXG4gICAgRmlsZURyb3B6b25lRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZEZpZWxkTW9kdWxlIHtcbn1cbiIsIjxjcmlzcHItZmllbGQtY29udGFpbmVyXG4gIFtjb25maWddPVwiY29uZmlnXCJcbiAgW2dyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICBbY29sb3JdPVwiY29uZmlnLmNvbG9yXCJcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgW2NyaXNwckZpbGVEcm9wem9uZV09XCIhKGRpc2FibGVkJCB8IGFzeW5jKSAmJiAhKGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZClcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxuICAgIChmaWxlRHJvcCk9XCJmaWxlc0NoYW5nZWQoJGV2ZW50KVwiPlxuXG4gICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCIgbWF0SW5wdXQgdHlwZT1cInRleHRcIi8+XG4gICAgPGlucHV0XG4gICAgICAjZmlsZUlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgW2FjY2VwdF09XCJjb25maWcuYWNjZXB0ZWRUeXBlc1wiXG4gICAgICBbbXVsdGlwbGVdPVwiY29uZmlnLmFsbG93TXVsdGlwbGVGaWxlc1wiXG4gICAgICAoY2hhbmdlKT1cImZpbGVzQ2hhbmdlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiLz5cbiAgICA8bWF0LWxhYmVsPnt7Y29uZmlnLmxhYmVsfX08L21hdC1sYWJlbD5cblxuICAgIDxkaXYgKm5nSWY9XCIhKHNlbGVjdGVkRmlsZXM/Lmxlbmd0aCA+IDApOyBlbHNlIHNlbGVjdGVkRmlsZUxpc3RcIiAgY2xhc3M9XCJkcm9wLWluZm9cIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRyb3AtaWNvblwiIGlubGluZT1cInRydWVcIj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgPGgyIGNsYXNzPVwibWF0LWgyXCI+e3tjb25maWcuZHJvcFpvbmVUZXh0fX08L2gyPlxuICAgICAgb3JcbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZWQkIHwgYXN5bmMpIHx8IGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZFwiXG4gICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCI+XG4gICAgICAgIHt7Y29uZmlnLnNlbGVjdEJ1dHRvblRleHR9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNzZWxlY3RlZEZpbGVMaXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWZpbGVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZmlsZXMtbGlzdFwiPlxuICAgICAgICAgIDxjcmlzcHItc2VsZWN0ZWQtZmlsZVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2Ygc2VsZWN0ZWRGaWxlczsgbGV0IGkgPSBpbmRleDtcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImNvbmZpZy5jb2xvciA9PT0gJ3ByaW1hcnknID8gJ2FjY2VudCcgOiAncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2ZpbGVOYW1lXT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICBbc2hvd1Byb2dyZXNzXT1cImNvbmZpZy5zaG93VXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgW3Byb2dyZXNzXT1cImZpbGVQcm9ncmVzcyAmJiAoZmlsZVByb2dyZXNzW2ldIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPC9jcmlzcHItc2VsZWN0ZWQtZmlsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIiAqbmdJZj1cInNlbGVjdGVkRmlsZXM/Lmxlbmd0aCA+IDBcIj5cblxuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIChjbGljayk9XCJyZXNldEZpbGVJbnB1dCgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYykgfHwgKGNvbmZpZy5kaXNhYmxlT25VcGxvYWQgJiYgaXNVcGxvYWRlZClcIlxuICAgICAgYXJpYS1sYWJlbD1cIlJlbW92ZSBTZWxlY3RlZCBGaWxlKHMpXCI+XG4gICAgICB7e2NvbmZpZy5jbGVhckZpbGVzQnV0dG9uVGV4dH19XG4gICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiISFjb25maWcudXBsb2FkRmlsZXNcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGVkJCB8IGFzeW5jKSB8fCAoY29uZmlnLmRpc2FibGVPblVwbG9hZCAmJiBpc1VwbG9hZGVkKVwiXG4gICAgICAoY2xpY2spPVwidXBsb2FkRmlsZXMoKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy51cGxvYWRCdXR0b25UZXh0XCI+XG4gICAgICB7eyBjb25maWcudXBsb2FkQnV0dG9uVGV4dCB9fVxuICAgIDwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuPC9jcmlzcHItZmllbGQtY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './file-dropzone.directive';
|
|
2
|
+
export * from './file-upload.component';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ZpbGUtdXBsb2FkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS1kcm9wem9uZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
2
|
+
import { CrisprFieldComponent } from '../../abstracts';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
|
+
import { InfoModule } from '../info/info.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../info/info.component";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/material/form-field";
|
|
10
|
+
const defaultConfig = {
|
|
11
|
+
typographyClass: 'mat-h3'
|
|
12
|
+
};
|
|
13
|
+
export class HeadingComponent extends CrisprFieldComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.defaultConfig = defaultConfig;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
HeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
HeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: HeadingComponent, selector: "crispr-heading", inputs: { config: "config" }, usesInheritance: true, ngImport: i0, template: " <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", styles: [":host{display:block}\n"], components: [{ type: i1.InfoComponent, selector: "crispr-info", inputs: ["info"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatSuffix, selector: "[matSuffix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'crispr-heading', changeDetection: ChangeDetectionStrategy.OnPush, template: " <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", styles: [":host{display:block}\n"] }]
|
|
24
|
+
}], propDecorators: { config: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}] } });
|
|
27
|
+
export class HeadingModule {
|
|
28
|
+
}
|
|
29
|
+
HeadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
30
|
+
HeadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, declarations: [HeadingComponent], imports: [CommonModule,
|
|
31
|
+
MatFormFieldModule,
|
|
32
|
+
InfoModule], exports: [HeadingComponent] });
|
|
33
|
+
HeadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, imports: [[
|
|
34
|
+
CommonModule,
|
|
35
|
+
MatFormFieldModule,
|
|
36
|
+
InfoModule
|
|
37
|
+
]] });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: HeadingModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
imports: [
|
|
42
|
+
CommonModule,
|
|
43
|
+
MatFormFieldModule,
|
|
44
|
+
InfoModule
|
|
45
|
+
],
|
|
46
|
+
exports: [
|
|
47
|
+
HeadingComponent
|
|
48
|
+
],
|
|
49
|
+
declarations: [
|
|
50
|
+
HeadingComponent
|
|
51
|
+
]
|
|
52
|
+
}]
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFFcEQsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLGVBQWUsRUFBRSxRQUFRO0NBQzFCLENBQUE7QUFPRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW1DO0lBTnpFOztRQVFFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBQy9COzs2R0FIWSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiwyR0NoQjdCLDZPQVVBOzJGRE1hLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLOztBQWlCUixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQWxCYixnQkFBZ0IsYUFNckIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixVQUFVLGFBUkwsZ0JBQWdCOzJHQWtCaEIsYUFBYSxZQWJiO1lBQ0wsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixVQUFVO1NBQ2I7MkZBU1EsYUFBYTtrQkFkekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLFVBQVU7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGdCQUFnQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGdCQUFnQjtxQkFDbkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgSGVhZGluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9oZWFkaW5nLmNvbmZpZyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJbmZvTW9kdWxlIH0gZnJvbSAnLi4vaW5mby9pbmZvLmNvbXBvbmVudCc7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SGVhZGluZ0NvbmZpZz4gPSB7XG4gIHR5cG9ncmFwaHlDbGFzczogJ21hdC1oMydcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1oZWFkaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRpbmdDb21wb25lbnQgZXh0ZW5kcyBDcmlzcHJGaWVsZENvbXBvbmVudDxIZWFkaW5nQ29uZmlnPntcbiAgQElucHV0KCkgY29uZmlnOiBIZWFkaW5nQ29uZmlnO1xuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgSW5mb01vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBIZWFkaW5nQ29tcG9uZW50XG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgSGVhZGluZ0NvbXBvbmVudFxuICAgIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBIZWFkaW5nTW9kdWxlIHtcbn1cbiIsIiAgPGxhYmVsXG4gICAgKm5nSWY9XCIhIWNvbmZpZz8ubGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cImNvbmZpZy50eXBvZ3JhcGh5Q2xhc3NcIj5cbiAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8Y3Jpc3ByLWluZm9cbiAgICAgICpuZ0lmPVwiY29uZmlnLmluZm9cIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaW5mb109XCJjb25maWcuaW5mb1wiPlxuICAgIDwvY3Jpc3ByLWluZm8+XG4gIDwvbGFiZWw+XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function convertBytesToMb(bytes) {
|
|
2
|
+
return bytes / 1048576;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY29tcHJlc3Npb24uaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvaW1hZ2UtdXBsb2FkLWZpZWxkL2ltYWdlLWNvbXByZXNzaW9uLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGdCQUFnQixDQUFFLEtBQWE7SUFDN0MsT0FBTyxLQUFLLEdBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydEJ5dGVzVG9NYiggYnl0ZXM6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBieXRlcy8xMDQ4NTc2O1xufVxuIl19
|