@bravura/ui 1.21.6 → 2.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/CHANGELOG.md +15 -0
- package/README.md +1 -0
- package/alert/alert-container.component.d.ts +1 -1
- package/alert/alert-message.component.d.ts +1 -1
- package/alert/{bravura-ui-alert.d.ts → index.d.ts} +0 -0
- package/behavior/await.directive.d.ts +1 -1
- package/behavior/{bravura-ui-behavior.d.ts → index.d.ts} +0 -0
- package/behavior/sizing-monitor.directive.d.ts +1 -1
- package/behavior/sizing.directive.d.ts +1 -1
- package/common/{bravura-ui-common.d.ts → index.d.ts} +0 -0
- package/currency-input/currency-input.directive.d.ts +1 -1
- package/currency-input/{bravura-ui-currency-input.d.ts → index.d.ts} +0 -0
- package/decimal-input/decimal-input.directive.d.ts +1 -1
- package/decimal-input/{bravura-ui-decimal-input.d.ts → index.d.ts} +0 -0
- package/discrete-input/discrete-input.component.d.ts +6 -5
- package/discrete-input/{bravura-ui-discrete-input.d.ts → index.d.ts} +0 -0
- package/esm2020/alert/alert-container.component.mjs +201 -0
- package/esm2020/alert/alert-message.component.mjs +92 -0
- package/esm2020/alert/alert.module.mjs +22 -0
- package/{esm2015/alert/bravura-ui-alert.js → esm2020/alert/bravura-ui-alert.mjs} +0 -0
- package/{esm2015/alert/public-api.js → esm2020/alert/public-api.mjs} +0 -0
- package/{esm2015/behavior/await.directive.js → esm2020/behavior/await.directive.mjs} +4 -4
- package/esm2020/behavior/behavior.module.mjs +25 -0
- package/{esm2015/behavior/bravura-ui-behavior.js → esm2020/behavior/bravura-ui-behavior.mjs} +0 -0
- package/{esm2015/behavior/public-api.js → esm2020/behavior/public-api.mjs} +0 -0
- package/{esm2015/behavior/sizing-monitor.directive.js → esm2020/behavior/sizing-monitor.directive.mjs} +4 -4
- package/{esm2015/behavior/sizing.directive.js → esm2020/behavior/sizing.directive.mjs} +4 -4
- package/{esm2015/bravura-ui.js → esm2020/bravura-ui.mjs} +0 -0
- package/{esm2015/common/bravura-ui-common.js → esm2020/common/bravura-ui-common.mjs} +0 -0
- package/{esm2015/common/common-utils.js → esm2020/common/common-utils.mjs} +0 -0
- package/esm2020/common/common.module.mjs +52 -0
- package/{esm2015/common/public-api.js → esm2020/common/public-api.mjs} +0 -0
- package/{esm2015/currency-input/bravura-ui-currency-input.js → esm2020/currency-input/bravura-ui-currency-input.mjs} +0 -0
- package/esm2020/currency-input/currency-input.directive.mjs +279 -0
- package/esm2020/currency-input/currency-input.module.mjs +19 -0
- package/{esm2015/currency-input/public-api.js → esm2020/currency-input/public-api.mjs} +0 -0
- package/{esm2015/decimal-input/bravura-ui-decimal-input.js → esm2020/decimal-input/bravura-ui-decimal-input.mjs} +0 -0
- package/{esm2015/decimal-input/decimal-input.directive.js → esm2020/decimal-input/decimal-input.directive.mjs} +4 -4
- package/esm2020/decimal-input/decimal-input.module.mjs +19 -0
- package/{esm2015/decimal-input/public-api.js → esm2020/decimal-input/public-api.mjs} +0 -0
- package/{esm2015/discrete-input/bravura-ui-discrete-input.js → esm2020/discrete-input/bravura-ui-discrete-input.mjs} +0 -0
- package/esm2020/discrete-input/discrete-input.component.mjs +326 -0
- package/esm2020/discrete-input/discrete-input.module.mjs +21 -0
- package/{esm2015/discrete-input/public-api.js → esm2020/discrete-input/public-api.mjs} +0 -0
- package/{esm2015/file-upload/bravura-ui-file-upload.js → esm2020/file-upload/bravura-ui-file-upload.mjs} +0 -0
- package/esm2020/file-upload/file-upload.component.mjs +356 -0
- package/{esm2015/file-upload/file-upload.module.js → esm2020/file-upload/file-upload.module.mjs} +11 -13
- package/{esm2015/file-upload/file-upload.service.js → esm2020/file-upload/file-upload.service.mjs} +4 -4
- package/{esm2015/file-upload/public-api.js → esm2020/file-upload/public-api.mjs} +0 -0
- package/{esm2015/form-field/bravura-ui-form-field.js → esm2020/form-field/bravura-ui-form-field.mjs} +0 -0
- package/esm2020/form-field/form-field.component.mjs +96 -0
- package/esm2020/form-field/form-field.module.mjs +20 -0
- package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
- package/{esm2015/icon-font/bravura-ui-icon-font.js → esm2020/icon-font/bravura-ui-icon-font.mjs} +0 -0
- package/esm2020/icon-font/icon-font.module.mjs +22 -0
- package/{esm2015/icon-font/icon.directive.js → esm2020/icon-font/icon.directive.mjs} +4 -4
- package/{esm2015/icon-font/public-api.js → esm2020/icon-font/public-api.mjs} +0 -0
- package/{esm2015/icon-font/utilities.js → esm2020/icon-font/utilities.mjs} +0 -0
- package/{esm2015/phone-number/bravura-ui-phone-number.js → esm2020/phone-number/bravura-ui-phone-number.mjs} +0 -0
- package/esm2020/phone-number/phone-number.directive.mjs +187 -0
- package/esm2020/phone-number/phone-number.module.mjs +24 -0
- package/{esm2015/phone-number/phone-number.pipe.js → esm2020/phone-number/phone-number.pipe.mjs} +4 -4
- package/{esm2015/phone-number/phone-number.validator.js → esm2020/phone-number/phone-number.validator.mjs} +4 -4
- package/{esm2015/phone-number/public-api.js → esm2020/phone-number/public-api.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/radio-panel/bravura-ui-radio-panel.js → esm2020/radio-panel/bravura-ui-radio-panel.mjs} +0 -0
- package/{esm2015/radio-panel/public-api.js → esm2020/radio-panel/public-api.mjs} +0 -0
- package/esm2020/radio-panel/radio-panel-item.component.mjs +97 -0
- package/esm2020/radio-panel/radio-panel.component.mjs +89 -0
- package/esm2020/radio-panel/radio-panel.module.mjs +25 -0
- package/{esm2015/selection-panel/bravura-ui-selection-panel.js → esm2020/selection-panel/bravura-ui-selection-panel.mjs} +0 -0
- package/{esm2015/selection-panel/public-api.js → esm2020/selection-panel/public-api.mjs} +0 -0
- package/esm2020/selection-panel/selection-panel-item.component.mjs +166 -0
- package/esm2020/selection-panel/selection-panel.directive.mjs +119 -0
- package/esm2020/selection-panel/selection-panel.module.mjs +23 -0
- package/{esm2015/skeletons/bravura-ui-skeletons.js → esm2020/skeletons/bravura-ui-skeletons.mjs} +0 -0
- package/{esm2015/skeletons/public-api.js → esm2020/skeletons/public-api.mjs} +0 -0
- package/esm2020/skeletons/skeleton-loader-presets.directive.mjs +83 -0
- package/{esm2015/skeletons/skeleton-loader.component.js → esm2020/skeletons/skeleton-loader.component.mjs} +4 -4
- package/esm2020/skeletons/skeletons.module.mjs +35 -0
- package/{esm2015/stepper/bravura-ui-stepper.js → esm2020/stepper/bravura-ui-stepper.mjs} +0 -0
- package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
- package/esm2020/stepper/stepper-animation.mjs +23 -0
- package/esm2020/stepper/stepper.component.mjs +166 -0
- package/{esm2015/stepper/stepper.module.js → esm2020/stepper/stepper.module.mjs} +13 -15
- package/{esm2015/tooltip/bravura-ui-tooltip.js → esm2020/tooltip/bravura-ui-tooltip.mjs} +0 -0
- package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
- package/esm2020/tooltip/tooltip.component.mjs +51 -0
- package/{esm2015/tooltip/tooltip.directive.js → esm2020/tooltip/tooltip.directive.mjs} +4 -4
- package/esm2020/tooltip/tooltip.module.mjs +25 -0
- package/fesm2015/bravura-ui-alert.mjs +324 -0
- package/fesm2015/bravura-ui-alert.mjs.map +1 -0
- package/fesm2015/bravura-ui-behavior.mjs +407 -0
- package/fesm2015/bravura-ui-behavior.mjs.map +1 -0
- package/fesm2015/bravura-ui-common.mjs +74 -0
- package/fesm2015/bravura-ui-common.mjs.map +1 -0
- package/fesm2015/bravura-ui-currency-input.mjs +303 -0
- package/fesm2015/bravura-ui-currency-input.mjs.map +1 -0
- package/fesm2015/bravura-ui-decimal-input.mjs +147 -0
- package/fesm2015/bravura-ui-decimal-input.mjs.map +1 -0
- package/fesm2015/bravura-ui-discrete-input.mjs +354 -0
- package/fesm2015/bravura-ui-discrete-input.mjs.map +1 -0
- package/fesm2015/bravura-ui-file-upload.mjs +434 -0
- package/fesm2015/bravura-ui-file-upload.mjs.map +1 -0
- package/fesm2015/{bravura-ui-form-field.js → bravura-ui-form-field.mjs} +12 -23
- package/fesm2015/bravura-ui-form-field.mjs.map +1 -0
- package/fesm2015/{bravura-ui-icon-font.js → bravura-ui-icon-font.mjs} +8 -8
- package/fesm2015/bravura-ui-icon-font.mjs.map +1 -0
- package/fesm2015/{bravura-ui-phone-number.js → bravura-ui-phone-number.mjs} +34 -30
- package/fesm2015/bravura-ui-phone-number.mjs.map +1 -0
- package/fesm2015/bravura-ui-radio-panel.mjs +212 -0
- package/fesm2015/bravura-ui-radio-panel.mjs.map +1 -0
- package/fesm2015/{bravura-ui-selection-panel.js → bravura-ui-selection-panel.mjs} +24 -28
- package/fesm2015/bravura-ui-selection-panel.mjs.map +1 -0
- package/fesm2015/bravura-ui-skeletons.mjs +195 -0
- package/fesm2015/bravura-ui-skeletons.mjs.map +1 -0
- package/fesm2015/bravura-ui-stepper.mjs +243 -0
- package/fesm2015/bravura-ui-stepper.mjs.map +1 -0
- package/fesm2015/bravura-ui-tooltip.mjs +195 -0
- package/fesm2015/bravura-ui-tooltip.mjs.map +1 -0
- package/fesm2015/{bravura-ui.js → bravura-ui.mjs} +1 -1
- package/fesm2015/bravura-ui.mjs.map +1 -0
- package/fesm2020/bravura-ui-alert.mjs +312 -0
- package/fesm2020/bravura-ui-alert.mjs.map +1 -0
- package/{fesm2015/bravura-ui-behavior.js → fesm2020/bravura-ui-behavior.mjs} +14 -14
- package/fesm2020/bravura-ui-behavior.mjs.map +1 -0
- package/{fesm2015/bravura-ui-common.js → fesm2020/bravura-ui-common.mjs} +7 -7
- package/fesm2020/bravura-ui-common.mjs.map +1 -0
- package/{fesm2015/bravura-ui-currency-input.js → fesm2020/bravura-ui-currency-input.mjs} +9 -10
- package/fesm2020/bravura-ui-currency-input.mjs.map +1 -0
- package/{fesm2015/bravura-ui-decimal-input.js → fesm2020/bravura-ui-decimal-input.mjs} +8 -8
- package/fesm2020/bravura-ui-decimal-input.mjs.map +1 -0
- package/{fesm2015/bravura-ui-discrete-input.js → fesm2020/bravura-ui-discrete-input.mjs} +18 -26
- package/fesm2020/bravura-ui-discrete-input.mjs.map +1 -0
- package/fesm2020/bravura-ui-file-upload.mjs +430 -0
- package/fesm2020/bravura-ui-file-upload.mjs.map +1 -0
- package/fesm2020/bravura-ui-form-field.mjs +119 -0
- package/fesm2020/bravura-ui-form-field.mjs.map +1 -0
- package/fesm2020/bravura-ui-icon-font.mjs +178 -0
- package/fesm2020/bravura-ui-icon-font.mjs.map +1 -0
- package/fesm2020/bravura-ui-phone-number.mjs +317 -0
- package/fesm2020/bravura-ui-phone-number.mjs.map +1 -0
- package/fesm2020/bravura-ui-radio-panel.mjs +209 -0
- package/fesm2020/bravura-ui-radio-panel.mjs.map +1 -0
- package/fesm2020/bravura-ui-selection-panel.mjs +306 -0
- package/fesm2020/bravura-ui-selection-panel.mjs.map +1 -0
- package/{fesm2015/bravura-ui-skeletons.js → fesm2020/bravura-ui-skeletons.mjs} +13 -13
- package/fesm2020/bravura-ui-skeletons.mjs.map +1 -0
- package/{fesm2015/bravura-ui-stepper.js → fesm2020/bravura-ui-stepper.mjs} +27 -44
- package/fesm2020/bravura-ui-stepper.mjs.map +1 -0
- package/{fesm2015/bravura-ui-tooltip.js → fesm2020/bravura-ui-tooltip.mjs} +13 -22
- package/fesm2020/bravura-ui-tooltip.mjs.map +1 -0
- package/fesm2020/bravura-ui.mjs +8 -0
- package/fesm2020/bravura-ui.mjs.map +1 -0
- package/file-upload/file-upload.component.d.ts +1 -1
- package/file-upload/{bravura-ui-file-upload.d.ts → index.d.ts} +0 -0
- package/form-field/form-field.component.d.ts +1 -1
- package/form-field/{bravura-ui-form-field.d.ts → index.d.ts} +0 -0
- package/icon-font/icon.directive.d.ts +1 -1
- package/icon-font/{bravura-ui-icon-font.d.ts → index.d.ts} +0 -0
- package/{bravura-ui.d.ts → index.d.ts} +0 -0
- package/package.json +149 -14
- package/phone-number/{bravura-ui-phone-number.d.ts → index.d.ts} +0 -0
- package/phone-number/phone-number.directive.d.ts +1 -1
- package/phone-number/phone-number.pipe.d.ts +1 -1
- package/phone-number/phone-number.validator.d.ts +1 -1
- package/radio-panel/{bravura-ui-radio-panel.d.ts → index.d.ts} +0 -0
- package/radio-panel/radio-panel-item.component.d.ts +1 -1
- package/radio-panel/radio-panel.component.d.ts +1 -1
- package/selection-panel/{bravura-ui-selection-panel.d.ts → index.d.ts} +0 -0
- package/selection-panel/selection-panel-item.component.d.ts +1 -1
- package/selection-panel/selection-panel.directive.d.ts +1 -1
- package/skeletons/{bravura-ui-skeletons.d.ts → index.d.ts} +0 -0
- package/skeletons/skeleton-loader-presets.directive.d.ts +1 -1
- package/skeletons/skeleton-loader.component.d.ts +1 -1
- package/stepper/{bravura-ui-stepper.d.ts → index.d.ts} +0 -0
- package/stepper/stepper.component.d.ts +1 -1
- package/theme/_ui-theme.scss +1 -1
- package/tooltip/{bravura-ui-tooltip.d.ts → index.d.ts} +0 -0
- package/tooltip/tooltip.component.d.ts +1 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/alert/package.json +0 -10
- package/behavior/package.json +0 -10
- package/bundles/bravura-ui-alert.umd.js +0 -745
- package/bundles/bravura-ui-alert.umd.js.map +0 -1
- package/bundles/bravura-ui-behavior.umd.js +0 -788
- package/bundles/bravura-ui-behavior.umd.js.map +0 -1
- package/bundles/bravura-ui-common.umd.js +0 -103
- package/bundles/bravura-ui-common.umd.js.map +0 -1
- package/bundles/bravura-ui-currency-input.umd.js +0 -335
- package/bundles/bravura-ui-currency-input.umd.js.map +0 -1
- package/bundles/bravura-ui-decimal-input.umd.js +0 -176
- package/bundles/bravura-ui-decimal-input.umd.js.map +0 -1
- package/bundles/bravura-ui-discrete-input.umd.js +0 -747
- package/bundles/bravura-ui-discrete-input.umd.js.map +0 -1
- package/bundles/bravura-ui-file-upload.umd.js +0 -845
- package/bundles/bravura-ui-file-upload.umd.js.map +0 -1
- package/bundles/bravura-ui-form-field.umd.js +0 -494
- package/bundles/bravura-ui-form-field.umd.js.map +0 -1
- package/bundles/bravura-ui-icon-font.umd.js +0 -539
- package/bundles/bravura-ui-icon-font.umd.js.map +0 -1
- package/bundles/bravura-ui-phone-number.umd.js +0 -690
- package/bundles/bravura-ui-phone-number.umd.js.map +0 -1
- package/bundles/bravura-ui-radio-panel.umd.js +0 -595
- package/bundles/bravura-ui-radio-panel.umd.js.map +0 -1
- package/bundles/bravura-ui-selection-panel.umd.js +0 -699
- package/bundles/bravura-ui-selection-panel.umd.js.map +0 -1
- package/bundles/bravura-ui-skeletons.umd.js +0 -525
- package/bundles/bravura-ui-skeletons.umd.js.map +0 -1
- package/bundles/bravura-ui-stepper.umd.js +0 -613
- package/bundles/bravura-ui-stepper.umd.js.map +0 -1
- package/bundles/bravura-ui-tooltip.umd.js +0 -586
- package/bundles/bravura-ui-tooltip.umd.js.map +0 -1
- package/bundles/bravura-ui.umd.js +0 -18
- package/bundles/bravura-ui.umd.js.map +0 -1
- package/common/package.json +0 -10
- package/currency-input/package.json +0 -10
- package/decimal-input/package.json +0 -10
- package/discrete-input/package.json +0 -10
- package/esm2015/alert/alert-container.component.js +0 -220
- package/esm2015/alert/alert-message.component.js +0 -98
- package/esm2015/alert/alert.module.js +0 -22
- package/esm2015/behavior/behavior.module.js +0 -25
- package/esm2015/common/common.module.js +0 -52
- package/esm2015/currency-input/currency-input.directive.js +0 -280
- package/esm2015/currency-input/currency-input.module.js +0 -19
- package/esm2015/decimal-input/decimal-input.module.js +0 -19
- package/esm2015/discrete-input/discrete-input.component.js +0 -334
- package/esm2015/discrete-input/discrete-input.module.js +0 -21
- package/esm2015/file-upload/file-upload.component.js +0 -367
- package/esm2015/form-field/form-field.component.js +0 -107
- package/esm2015/form-field/form-field.module.js +0 -20
- package/esm2015/icon-font/icon-font.module.js +0 -22
- package/esm2015/phone-number/phone-number.directive.js +0 -192
- package/esm2015/phone-number/phone-number.module.js +0 -24
- package/esm2015/radio-panel/radio-panel-item.component.js +0 -109
- package/esm2015/radio-panel/radio-panel.component.js +0 -98
- package/esm2015/radio-panel/radio-panel.module.js +0 -25
- package/esm2015/selection-panel/selection-panel-item.component.js +0 -174
- package/esm2015/selection-panel/selection-panel.directive.js +0 -120
- package/esm2015/selection-panel/selection-panel.module.js +0 -23
- package/esm2015/skeletons/skeleton-loader-presets.directive.js +0 -83
- package/esm2015/skeletons/skeletons.module.js +0 -35
- package/esm2015/stepper/stepper-animation.js +0 -23
- package/esm2015/stepper/stepper.component.js +0 -181
- package/esm2015/tooltip/tooltip.component.js +0 -59
- package/esm2015/tooltip/tooltip.module.js +0 -26
- package/fesm2015/bravura-ui-alert.js +0 -337
- package/fesm2015/bravura-ui-alert.js.map +0 -1
- package/fesm2015/bravura-ui-behavior.js.map +0 -1
- package/fesm2015/bravura-ui-common.js.map +0 -1
- package/fesm2015/bravura-ui-currency-input.js.map +0 -1
- package/fesm2015/bravura-ui-decimal-input.js.map +0 -1
- package/fesm2015/bravura-ui-discrete-input.js.map +0 -1
- package/fesm2015/bravura-ui-file-upload.js +0 -443
- package/fesm2015/bravura-ui-file-upload.js.map +0 -1
- package/fesm2015/bravura-ui-form-field.js.map +0 -1
- package/fesm2015/bravura-ui-icon-font.js.map +0 -1
- package/fesm2015/bravura-ui-phone-number.js.map +0 -1
- package/fesm2015/bravura-ui-radio-panel.js +0 -230
- package/fesm2015/bravura-ui-radio-panel.js.map +0 -1
- package/fesm2015/bravura-ui-selection-panel.js.map +0 -1
- package/fesm2015/bravura-ui-skeletons.js.map +0 -1
- package/fesm2015/bravura-ui-stepper.js.map +0 -1
- package/fesm2015/bravura-ui-tooltip.js.map +0 -1
- package/fesm2015/bravura-ui.js.map +0 -1
- package/file-upload/package.json +0 -10
- package/form-field/package.json +0 -10
- package/icon-font/package.json +0 -10
- package/phone-number/package.json +0 -10
- package/radio-panel/package.json +0 -10
- package/selection-panel/package.json +0 -10
- package/skeletons/package.json +0 -10
- package/stepper/package.json +0 -10
- package/tooltip/package.json +0 -10
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
import { animate, query, stagger, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
import { HttpEventType } from '@angular/common/http';
|
|
3
|
-
import { Component, ElementRef, forwardRef, HostListener, Input, ViewChild } from '@angular/core';
|
|
4
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
-
import { Observable, of, Subject } from 'rxjs';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./file-upload.service";
|
|
8
|
-
import * as i2 from "@angular/material/icon";
|
|
9
|
-
import * as i3 from "@angular/material/progress-bar";
|
|
10
|
-
import * as i4 from "@angular/material/button";
|
|
11
|
-
import * as i5 from "@angular/material/divider";
|
|
12
|
-
import * as i6 from "@angular/common";
|
|
13
|
-
import * as i7 from "@bravura/ui/icon-font";
|
|
14
|
-
import * as i8 from "@angular/material/tooltip";
|
|
15
|
-
/** @ignore */
|
|
16
|
-
class UploadingItem {
|
|
17
|
-
constructor(event$, fileOrOncancel, oncomplete, oncancel) {
|
|
18
|
-
this.oncancel = oncancel;
|
|
19
|
-
this.progress = 0;
|
|
20
|
-
if (event$ instanceof Observable) {
|
|
21
|
-
this.file = fileOrOncancel;
|
|
22
|
-
this.subscription = event$.subscribe({
|
|
23
|
-
next: evt => {
|
|
24
|
-
if (evt.type === HttpEventType.UploadProgress) {
|
|
25
|
-
this.progress = evt.loaded / this.file.size;
|
|
26
|
-
}
|
|
27
|
-
else if (evt.type === HttpEventType.Response) {
|
|
28
|
-
this.uploadedItem = evt.body;
|
|
29
|
-
this.progress = 1;
|
|
30
|
-
oncomplete();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
this.subscription = of(event$).subscribe();
|
|
37
|
-
this.uploadedItem = event$;
|
|
38
|
-
this.oncancel = fileOrOncancel;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
cancel() {
|
|
42
|
-
this.subscription.unsubscribe();
|
|
43
|
-
this.oncancel(this);
|
|
44
|
-
}
|
|
45
|
-
get done() {
|
|
46
|
-
return !!this.uploadedItem;
|
|
47
|
-
}
|
|
48
|
-
get name() {
|
|
49
|
-
var _a, _b;
|
|
50
|
-
return ((_a = this.uploadedItem) === null || _a === void 0 ? void 0 : _a.name) || ((_b = this.file) === null || _b === void 0 ? void 0 : _b.name);
|
|
51
|
-
}
|
|
52
|
-
get downloading() {
|
|
53
|
-
return this.downloadingSubs && !this.downloadingSubs.closed;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* A control value accessor component to provide the user interface for uploading files.
|
|
58
|
-
*
|
|
59
|
-
* The application that integrates this UI must provide an implementation of `FileUploadService`.
|
|
60
|
-
*
|
|
61
|
-
* The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.
|
|
62
|
-
*
|
|
63
|
-
* Example:
|
|
64
|
-
*
|
|
65
|
-
* ```html
|
|
66
|
-
* <form>
|
|
67
|
-
* <bui-file-upload [(ngModel)]="uploadedFileIds" name="myFiles"></bui-file-upload>
|
|
68
|
-
* </form>
|
|
69
|
-
* ```
|
|
70
|
-
*
|
|
71
|
-
* @see FileUploadService
|
|
72
|
-
*/
|
|
73
|
-
export class FileUploadComponent {
|
|
74
|
-
constructor(_service) {
|
|
75
|
-
this._service = _service;
|
|
76
|
-
/** @ignore */
|
|
77
|
-
this._value = null;
|
|
78
|
-
/**
|
|
79
|
-
* The caption of the button for opening file selection dialog.
|
|
80
|
-
*/
|
|
81
|
-
this.uploadActionText = 'Drag files here to attach or browse';
|
|
82
|
-
/**
|
|
83
|
-
* The label for listing successful uploaded files.
|
|
84
|
-
*/
|
|
85
|
-
this.fileUploadedLabel = 'List of files uploaded successfully';
|
|
86
|
-
/**
|
|
87
|
-
* The text to be displayed when the user starts to drag file items over the browser window.
|
|
88
|
-
*/
|
|
89
|
-
this.dragHint = 'Please drag the files here.';
|
|
90
|
-
/**
|
|
91
|
-
* The text to be displayed when the user is dragging the file items over the drop zone.
|
|
92
|
-
*/
|
|
93
|
-
this.dropHint = 'Please release the mouse button to start uploading.';
|
|
94
|
-
/** Specifies the total number of files accepted. A falsy value removes the limit.*/
|
|
95
|
-
this.limit = 0;
|
|
96
|
-
/** @ignore */
|
|
97
|
-
this._uploadingItems = [];
|
|
98
|
-
/** @ignore */
|
|
99
|
-
this._accept = '*/*';
|
|
100
|
-
/** @ignore */
|
|
101
|
-
this._itemAnimationStart = new Subject();
|
|
102
|
-
/** @ignore */
|
|
103
|
-
this._itemAnimationDone = new Subject();
|
|
104
|
-
/** @ignore */
|
|
105
|
-
this._itemAnimationInProgress = false;
|
|
106
|
-
this._onChange = (_) => { };
|
|
107
|
-
this._onTouch = () => { };
|
|
108
|
-
this._overFrameCounter = 0;
|
|
109
|
-
this._overCounter = 0;
|
|
110
|
-
this._typeRegExps = [/.*\/.*/];
|
|
111
|
-
this._types = ['*/*'];
|
|
112
|
-
this._numberOfFilesDragged = 0;
|
|
113
|
-
this._onChange([]);
|
|
114
|
-
this._onTouch();
|
|
115
|
-
this._frameDndEnter = this._onDndEnterFrame.bind(this);
|
|
116
|
-
this._frameDndLeave = this._onDndLeaveFrame.bind(this);
|
|
117
|
-
this._frameDndStop = this._onDndStopFrame.bind(this);
|
|
118
|
-
this._frameDndOver = event => event.preventDefault();
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Accepted MIME types
|
|
122
|
-
*
|
|
123
|
-
* @example ['text/*', 'image/png']
|
|
124
|
-
*/
|
|
125
|
-
get types() {
|
|
126
|
-
return this._types;
|
|
127
|
-
}
|
|
128
|
-
set types(types) {
|
|
129
|
-
if (Array.isArray(types) && (types === null || types === void 0 ? void 0 : types.length)) {
|
|
130
|
-
this._typeRegExps = [];
|
|
131
|
-
this._types = Array.from(types);
|
|
132
|
-
this._accept = this._types.join(',');
|
|
133
|
-
types.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\*/g, '.*'))));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/** @internal */
|
|
137
|
-
ngOnInit() {
|
|
138
|
-
document.addEventListener('dragenter', this._frameDndEnter);
|
|
139
|
-
document.addEventListener('dragleave', this._frameDndLeave);
|
|
140
|
-
document.addEventListener('dragend', this._frameDndStop);
|
|
141
|
-
document.addEventListener('drop', this._frameDndStop);
|
|
142
|
-
document.addEventListener('dragover', this._frameDndOver);
|
|
143
|
-
this._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));
|
|
144
|
-
this._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));
|
|
145
|
-
}
|
|
146
|
-
ngOnDestroy() {
|
|
147
|
-
document.removeEventListener('dragenter', this._frameDndEnter);
|
|
148
|
-
document.removeEventListener('dragleave', this._frameDndLeave);
|
|
149
|
-
document.removeEventListener('dragend', this._frameDndStop);
|
|
150
|
-
document.removeEventListener('drop', this._frameDndStop);
|
|
151
|
-
document.removeEventListener('dragover', this._frameDndOver);
|
|
152
|
-
this._itemAnimationStart.complete();
|
|
153
|
-
this._itemAnimationDone.complete();
|
|
154
|
-
}
|
|
155
|
-
/** @internal */
|
|
156
|
-
writeValue(obj) {
|
|
157
|
-
if (Array.isArray(obj)) {
|
|
158
|
-
if (!this._value) {
|
|
159
|
-
this._acceptChange(obj);
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
const common = obj.filter(v => this._value.includes(v));
|
|
163
|
-
if (common.length === obj.length && common.length === this._value.length) {
|
|
164
|
-
return; // no change
|
|
165
|
-
}
|
|
166
|
-
this._acceptChange(obj);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
this._value = null;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/** @internal */
|
|
173
|
-
registerOnChange(fn) {
|
|
174
|
-
this._onChange = fn;
|
|
175
|
-
}
|
|
176
|
-
/** @internal */
|
|
177
|
-
registerOnTouched(fn) {
|
|
178
|
-
this._onTouch = fn;
|
|
179
|
-
}
|
|
180
|
-
/** @internal */
|
|
181
|
-
onDragEnter(event) {
|
|
182
|
-
event.preventDefault();
|
|
183
|
-
event.stopPropagation();
|
|
184
|
-
this._overCounter++;
|
|
185
|
-
}
|
|
186
|
-
/** @internal */
|
|
187
|
-
onDragOver(event) {
|
|
188
|
-
event.preventDefault();
|
|
189
|
-
}
|
|
190
|
-
/** @internal */
|
|
191
|
-
onDragLeave(event) {
|
|
192
|
-
event.preventDefault();
|
|
193
|
-
event.stopPropagation();
|
|
194
|
-
this._overCounter--;
|
|
195
|
-
}
|
|
196
|
-
/** @internal */
|
|
197
|
-
onDndDrop(event) {
|
|
198
|
-
var _a;
|
|
199
|
-
event.preventDefault();
|
|
200
|
-
event.stopPropagation();
|
|
201
|
-
this._onDndStopFrame();
|
|
202
|
-
const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
|
|
203
|
-
if (files === null || files === void 0 ? void 0 : files.length) {
|
|
204
|
-
this._uploadFiles(Array.from(files));
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/** Open the file selection dialog */
|
|
208
|
-
selectFiles() {
|
|
209
|
-
this._fileInput.nativeElement.click();
|
|
210
|
-
}
|
|
211
|
-
/** @ignore */
|
|
212
|
-
_openItem(item) {
|
|
213
|
-
item.downloadingSubs = this._service.get(item.uploadedItem.id).subscribe(blob => {
|
|
214
|
-
const url = URL.createObjectURL(blob);
|
|
215
|
-
window.open(url, '_blank');
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
/** @ignore */
|
|
219
|
-
get _overFrame() {
|
|
220
|
-
return this._overFrameCounter > 0;
|
|
221
|
-
}
|
|
222
|
-
/** @ignore */
|
|
223
|
-
get _overDropZone() {
|
|
224
|
-
return this._overCounter > 0;
|
|
225
|
-
}
|
|
226
|
-
/** Whether file uploading is in progress */
|
|
227
|
-
get uploading() {
|
|
228
|
-
return this._uploadingItems.some(i => !i.done);
|
|
229
|
-
}
|
|
230
|
-
/** The remaining number of files allowed.*/
|
|
231
|
-
get remaining() {
|
|
232
|
-
return this.limit ? this.limit - this._uploadingItems.length : Infinity;
|
|
233
|
-
}
|
|
234
|
-
/** @ignore */
|
|
235
|
-
_handleFileSelection() {
|
|
236
|
-
const fileList = this._fileInput.nativeElement.files;
|
|
237
|
-
if (fileList === null || fileList === void 0 ? void 0 : fileList.length) {
|
|
238
|
-
this._uploadFiles(Array.from(fileList));
|
|
239
|
-
this._fileInput.nativeElement.value = '';
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/** @ignore */
|
|
243
|
-
get _invalidFilesDragged() {
|
|
244
|
-
return this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);
|
|
245
|
-
}
|
|
246
|
-
/** @ignore */
|
|
247
|
-
get _initialising() {
|
|
248
|
-
return !!this._initSubs && !this._initSubs.closed;
|
|
249
|
-
}
|
|
250
|
-
_uploadFiles(files) {
|
|
251
|
-
if (this._initialising || files.length > this.remaining) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
const filtered = files.filter(f => (!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&
|
|
255
|
-
!this._uploadingItems.some(i => i.name === f.name));
|
|
256
|
-
const observables = this._service.upload(filtered);
|
|
257
|
-
const items = filtered.map((f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this)));
|
|
258
|
-
this._uploadingItems = [...this._uploadingItems, ...items];
|
|
259
|
-
}
|
|
260
|
-
_onDndEnterFrame(event) {
|
|
261
|
-
var _a, _b;
|
|
262
|
-
event.preventDefault();
|
|
263
|
-
this._numberOfFilesDragged = ((_b = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.length) || 0;
|
|
264
|
-
this._overFrameCounter++;
|
|
265
|
-
}
|
|
266
|
-
_onDndLeaveFrame() {
|
|
267
|
-
this._overFrameCounter--;
|
|
268
|
-
}
|
|
269
|
-
_onDndStopFrame() {
|
|
270
|
-
this._overFrameCounter = 0;
|
|
271
|
-
this._overCounter = 0;
|
|
272
|
-
}
|
|
273
|
-
_acceptChange(v) {
|
|
274
|
-
this._initSubs = this._service.list().subscribe(list => {
|
|
275
|
-
this._uploadingItems = list
|
|
276
|
-
.filter(i => v.includes(i.id))
|
|
277
|
-
.map(f => new UploadingItem(f, this._deleteItem.bind(this)));
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
_updateItems() {
|
|
281
|
-
const completed = this._uploadingItems.filter(i => !!i.uploadedItem);
|
|
282
|
-
this._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];
|
|
283
|
-
this._updateValue(completed);
|
|
284
|
-
}
|
|
285
|
-
_deleteItem(item) {
|
|
286
|
-
var _a;
|
|
287
|
-
const key = (_a = item.uploadedItem) === null || _a === void 0 ? void 0 : _a.id;
|
|
288
|
-
if (key) {
|
|
289
|
-
this._service.delete(key).subscribe(() => {
|
|
290
|
-
this._uploadingItems = this._uploadingItems.filter(i => i !== item);
|
|
291
|
-
const completed = this._uploadingItems.filter(i => !!i.uploadedItem);
|
|
292
|
-
this._updateValue(completed);
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
this._uploadingItems = this._uploadingItems.filter(i => i !== item);
|
|
297
|
-
const completed = this._uploadingItems.filter(i => !!i.uploadedItem);
|
|
298
|
-
this._updateValue(completed);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
_updateValue(completed) {
|
|
302
|
-
const completedIds = completed.map(c => c.uploadedItem.id);
|
|
303
|
-
this._value = completedIds;
|
|
304
|
-
if (!this._value.length) {
|
|
305
|
-
this._value = null;
|
|
306
|
-
}
|
|
307
|
-
this._onChange(completedIds);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.FileUploadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
311
|
-
FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FileUploadComponent, selector: "bui-file-upload", inputs: { uploadActionText: "uploadActionText", fileUploadedLabel: "fileUploadedLabel", dragHint: "dragHint", dropHint: "dropHint", limit: "limit", types: "types" }, host: { listeners: { "dragenter": "onDragEnter($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDndDrop($event)" }, properties: { "class.bui-dnd-active": "_overFrame && remaining >= _numberOfFilesDragged", "class.bui-dnd-over": "_overDropZone && remaining >= _numberOfFilesDragged", "class.bui-dnd-invalid": "_invalidFilesDragged" }, classAttribute: "bui-host bui-file-upload" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }], viewQueries: [{ propertyName: "_fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"bui-file-upload-container\">\n\t<div\n\t\tclass=\"bui-file-upload-hint\"\n\t\t*ngIf=\"!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)\"\n\t>\n\t\t<ng-template [ngIf]=\"_invalidFilesDragged\" [ngIfElse]=\"validDnd\">\n\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t</ng-template>\n\t\t<ng-template #validDnd>\n\t\t\t<div *ngIf=\"!_overFrame && !_overDropZone\" class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t</div>\n\t\t\t<div *ngIf=\"_overFrame && !_overDropZone\" class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t<div *ngIf=\"_overDropZone\" class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t</ng-template>\n\t</div>\n\t<div\n\t\tclass=\"bui-file-upload-list\"\n\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t*ngIf=\"_uploadingItems.length\"\n\t>\n\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\n\t\t<ng-container *ngFor=\"let item of _uploadingItems; let idx = index\">\n\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t*ngIf=\"item.done && !item.downloading; else staticName\"\n\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<ng-template #staticName>\n\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t*ngIf=\"!item.downloading\"\n\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\" *ngIf=\"item.downloading\"></mat-progress-bar>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<ng-template [ngIf]=\"item.done\" [ngIfElse]=\"inprogress\"> 100% </ng-template>\n\t\t\t\t\t\t\t<ng-template #inprogress>\n\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<mat-divider *ngIf=\"idx < _uploadingItems.length - 1\"></mat-divider>\n\t\t</ng-container>\n\t</div>\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n</div>\n", styles: [":host:not([hidden]){display:block;border-style:dashed;border-width:1px;border-color:var(--bui-color-muted);transition:all .12s;padding:3px}:host:not([hidden]).bui-dnd-active,:host:not([hidden]).bui-dnd-over{padding:0;border-width:4px}:host:not([hidden]).bui-dnd-invalid{cursor:no-drop}:host:not([hidden]) .bui-file-upload-hint{margin:.5rem;height:40px;justify-content:center;display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-container{min-height:4rem;display:flex;align-items:center;flex-direction:column;justify-content:center;transition:initial}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link{cursor:pointer;transition:color .1s cubic-bezier(.55,0,.55,.2);display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link:hover{color:var(--bui-color-light)!important}:host:not([hidden]) .bui-file-upload-container .bui-upload-icon-link>*{margin:4px}:host:not([hidden]) .bui-file-upload-list{align-self:stretch;margin-top:calc(1rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-uploaded-label{display:block;font-size:smaller;margin:0 calc(1rem - 4px) .5rem calc(1rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item{display:flex;align-items:center;margin:0 calc(1rem - 4px);padding:.25rem 0;justify-content:space-between}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item:last-child{margin-bottom:calc(.5rem - 4px)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item.in-progress .bui-file-upload-item-name{font-style:italic}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item.bui-file-upload-item-deleting{background-color:#8080801a;transition:background-color .1s cubic-bezier(.55,0,.55,.2)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name{flex-grow:1;font-size:80%;display:flex;align-items:center;flex-wrap:wrap}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name>span{word-break:break-all;display:flex;align-items:center}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name>span>mat-icon{width:20px;height:20px;font-size:20px}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name a{color:var(--bui-color-primary)}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-name .text{margin-left:.5rem;margin-right:.5rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress{flex-grow:1;min-width:50%;display:flex;justify-content:flex-start;align-items:center;margin:.5rem 0}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress .mat-progress-bar{max-width:100%;height:.4rem;border-radius:1rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-progress>span{margin-inline-start:.5rem}:host:not([hidden]) .bui-file-upload-list .bui-file-upload-item-action{display:flex;align-items:center;height:1em;width:1.75em}:host:not([hidden]) .bui-file-upload-list .mat-divider{margin:0 calc(1rem - 4px) 0 calc(1rem - 4px)}:host:not([hidden]) .upload-completed{animation:pulse 1s ease-in-out}@keyframes pulse{0%{transform:scaleY(1)}50%{transform:scaleY(1.5)}to{transform:scaleY(1)}}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i4.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: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.IconDirective, selector: "[buiIcon]", inputs: ["buiIcon", "size", "variant"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "percent": i6.PercentPipe }, animations: [
|
|
312
|
-
trigger('slideOut', [
|
|
313
|
-
transition('* => *', [
|
|
314
|
-
query(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })
|
|
315
|
-
])
|
|
316
|
-
])
|
|
317
|
-
] });
|
|
318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
319
|
-
type: Component,
|
|
320
|
-
args: [{
|
|
321
|
-
host: {
|
|
322
|
-
class: 'bui-host bui-file-upload',
|
|
323
|
-
'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',
|
|
324
|
-
'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',
|
|
325
|
-
'[class.bui-dnd-invalid]': '_invalidFilesDragged'
|
|
326
|
-
},
|
|
327
|
-
selector: 'bui-file-upload',
|
|
328
|
-
templateUrl: './file-upload.component.html',
|
|
329
|
-
styleUrls: ['./file-upload.component.scss'],
|
|
330
|
-
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],
|
|
331
|
-
animations: [
|
|
332
|
-
trigger('slideOut', [
|
|
333
|
-
transition('* => *', [
|
|
334
|
-
query(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })
|
|
335
|
-
])
|
|
336
|
-
])
|
|
337
|
-
]
|
|
338
|
-
}]
|
|
339
|
-
}], ctorParameters: function () { return [{ type: i1.FileUploadService }]; }, propDecorators: { uploadActionText: [{
|
|
340
|
-
type: Input
|
|
341
|
-
}], fileUploadedLabel: [{
|
|
342
|
-
type: Input
|
|
343
|
-
}], dragHint: [{
|
|
344
|
-
type: Input
|
|
345
|
-
}], dropHint: [{
|
|
346
|
-
type: Input
|
|
347
|
-
}], limit: [{
|
|
348
|
-
type: Input
|
|
349
|
-
}], types: [{
|
|
350
|
-
type: Input
|
|
351
|
-
}], _fileInput: [{
|
|
352
|
-
type: ViewChild,
|
|
353
|
-
args: ['fileInput', { read: ElementRef, static: true }]
|
|
354
|
-
}], onDragEnter: [{
|
|
355
|
-
type: HostListener,
|
|
356
|
-
args: ['dragenter', ['$event']]
|
|
357
|
-
}], onDragOver: [{
|
|
358
|
-
type: HostListener,
|
|
359
|
-
args: ['dragover', ['$event']]
|
|
360
|
-
}], onDragLeave: [{
|
|
361
|
-
type: HostListener,
|
|
362
|
-
args: ['dragleave', ['$event']]
|
|
363
|
-
}], onDndDrop: [{
|
|
364
|
-
type: HostListener,
|
|
365
|
-
args: ['drop', ['$event']]
|
|
366
|
-
}] } });
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFHN0QsY0FBYztBQUNkLE1BQU0sYUFBYTtJQWNsQixZQUNDLE1BQThELEVBQzlELGNBQXVELEVBQ3ZELFVBQXVCLEVBQ2YsUUFBd0M7UUFBeEMsYUFBUSxHQUFSLFFBQVEsQ0FBZ0M7UUFqQmpELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFtQlosSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBc0IsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRTt3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QUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzs2QkFDN0csQ0FBQzt5QkFDRixDQUFDO3FCQUNGO2lCQUNEO3dHQVNBLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBd0NFLFVBQVU7c0JBRGpCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQThEMUQsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTckMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPcEMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTckMsU0FBUztzQkFEUixZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHF1ZXJ5LCBzdGFnZ2VyLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkSXRlbSwgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xuXG4vKiogQGlnbm9yZSAqL1xuY2xhc3MgVXBsb2FkaW5nSXRlbSB7XG5cdHByb2dyZXNzID0gMDtcblx0dXBsb2FkZWRJdGVtOiBGaWxlVXBsb2FkSXRlbSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cdGRvd25sb2FkaW5nU3Vicz86IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblx0cHJpdmF0ZSBmaWxlPzogRmlsZTtcblxuXHRjb25zdHJ1Y3RvcihpdGVtOiBGaWxlVXBsb2FkSXRlbSwgb25jYW5jZWw6IChpdGVtOiBVcGxvYWRpbmdJdGVtKSA9PiB2b2lkKTtcblx0Y29uc3RydWN0b3IoXG5cdFx0ZXZlbnQkOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxGaWxlVXBsb2FkSXRlbT4+IHwgRmlsZVVwbG9hZEl0ZW0sXG5cdFx0ZmlsZTogRmlsZSxcblx0XHRvbmNvbXBsZXRlOiAoKSA9PiB2b2lkLFxuXHRcdG9uY2FuY2VsOiAoaXRlbTogVXBsb2FkaW5nSXRlbSkgPT4gdm9pZFxuXHQpO1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRldmVudCQ6IE9ic2VydmFibGU8SHR0cEV2ZW50PEZpbGVVcGxvYWRJdGVtPj4gfCBGaWxlVXBsb2FkSXRlbSxcblx0XHRmaWxlT3JPbmNhbmNlbD86IEZpbGUgfCAoKGl0ZW06IFVwbG9hZGluZ0l0ZW0pID0+IHZvaWQpLFxuXHRcdG9uY29tcGxldGU/OiAoKSA9PiB2b2lkLFxuXHRcdHByaXZhdGUgb25jYW5jZWw/OiAoaXRlbTogVXBsb2FkaW5nSXRlbSkgPT4gdm9pZFxuXHQpIHtcblx0XHRpZiAoZXZlbnQkIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuXHRcdFx0dGhpcy5maWxlID0gZmlsZU9yT25jYW5jZWwgYXMgRmlsZTtcblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9uID0gZXZlbnQkLnN1YnNjcmliZSh7XG5cdFx0XHRcdG5leHQ6IGV2dCA9PiB7XG5cdFx0XHRcdFx0aWYgKGV2dC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnByb2dyZXNzID0gZXZ0LmxvYWRlZCAvICh0aGlzLmZpbGUgYXMgRmlsZSkuc2l6ZTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2dC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnVwbG9hZGVkSXRlbSA9IGV2dC5ib2R5O1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9ncmVzcyA9IDE7XG5cdFx0XHRcdFx0XHRvbmNvbXBsZXRlISgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9uID0gb2YoZXZlbnQkKS5zdWJzY3JpYmUoKTtcblx0XHRcdHRoaXMudXBsb2FkZWRJdGVtID0gZXZlbnQkO1xuXHRcdFx0dGhpcy5vbmNhbmNlbCA9IGZpbGVPck9uY2FuY2VsIGFzIChpdGVtOiBVcGxvYWRpbmdJdGVtKSA9PiB2b2lkO1xuXHRcdH1cblx0fVxuXG5cdGNhbmNlbCgpIHtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdHRoaXMub25jYW5jZWwhKHRoaXMpO1xuXHR9XG5cblx0Z2V0IGRvbmUoKSB7XG5cdFx0cmV0dXJuICEhdGhpcy51cGxvYWRlZEl0ZW07XG5cdH1cblxuXHRnZXQgbmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy51cGxvYWRlZEl0ZW0/Lm5hbWUgfHwgdGhpcy5maWxlPy5uYW1lO1xuXHR9XG5cblx0Z2V0IGRvd25sb2FkaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLmRvd25sb2FkaW5nU3VicyAmJiAhdGhpcy5kb3dubG9hZGluZ1N1YnMuY2xvc2VkO1xuXHR9XG59XG4vKipcbiAqIEEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvciBjb21wb25lbnQgdG8gcHJvdmlkZSB0aGUgdXNlciBpbnRlcmZhY2UgZm9yIHVwbG9hZGluZyBmaWxlcy5cbiAqXG4gKiBUaGUgYXBwbGljYXRpb24gdGhhdCBpbnRlZ3JhdGVzIHRoaXMgVUkgbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIGBGaWxlVXBsb2FkU2VydmljZWAuXG4gKlxuICogVGhlIGNvbnRyb2wncyB2YWx1ZSBpcyBhIGxpc3Qgb2YgYWxwaGEtbnVtZXJpY2FsIHN0cmluZ3MsIHdoaWNoIGFyZSB0aGUgaWRlbnRpZmllcnMgdG8gdGhlIHVwbG9hZGVkIGZpbGVzLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGZvcm0+XG4gKiAgPGJ1aS1maWxlLXVwbG9hZCBbKG5nTW9kZWwpXT1cInVwbG9hZGVkRmlsZUlkc1wiIG5hbWU9XCJteUZpbGVzXCI+PC9idWktZmlsZS11cGxvYWQ+XG4gKiA8L2Zvcm0+XG4gKiBgYGBcbiAqXG4gKiBAc2VlIEZpbGVVcGxvYWRTZXJ2aWNlXG4gKi9cbkBDb21wb25lbnQoe1xuXHRob3N0OiB7XG5cdFx0Y2xhc3M6ICdidWktaG9zdCBidWktZmlsZS11cGxvYWQnLFxuXHRcdCdbY2xhc3MuYnVpLWRuZC1hY3RpdmVdJzogJ19vdmVyRnJhbWUgJiYgcmVtYWluaW5nID49IF9udW1iZXJPZkZpbGVzRHJhZ2dlZCcsXG5cdFx0J1tjbGFzcy5idWktZG5kLW92ZXJdJzogJ19vdmVyRHJvcFpvbmUgJiYgcmVtYWluaW5nID49IF9udW1iZXJPZkZpbGVzRHJhZ2dlZCcsXG5cdFx0J1tjbGFzcy5idWktZG5kLWludmFsaWRdJzogJ19pbnZhbGlkRmlsZXNEcmFnZ2VkJ1xuXHR9LFxuXHRzZWxlY3RvcjogJ2J1aS1maWxlLXVwbG9hZCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVVcGxvYWRDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XSxcblx0YW5pbWF0aW9uczogW1xuXHRcdHRyaWdnZXIoJ3NsaWRlT3V0JywgW1xuXHRcdFx0dHJhbnNpdGlvbignKiA9PiAqJywgW1xuXHRcdFx0XHRxdWVyeSgnOmxlYXZlJywgc3RhZ2dlcigxMDAsIGFuaW1hdGUoJzAuMjVzJywgc3R5bGUoeyBoZWlnaHQ6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSkpLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG5cdFx0XHRdKVxuXHRcdF0pXG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cdC8qKiBAaWdub3JlICovXG5cdF92YWx1ZTogc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGNhcHRpb24gb2YgdGhlIGJ1dHRvbiBmb3Igb3BlbmluZyBmaWxlIHNlbGVjdGlvbiBkaWFsb2cuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHR1cGxvYWRBY3Rpb25UZXh0ID0gJ0RyYWcgZmlsZXMgaGVyZSB0byBhdHRhY2ggb3IgYnJvd3NlJztcblxuXHQvKipcblx0ICogVGhlIGxhYmVsIGZvciBsaXN0aW5nIHN1Y2Nlc3NmdWwgdXBsb2FkZWQgZmlsZXMuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRmaWxlVXBsb2FkZWRMYWJlbCA9ICdMaXN0IG9mIGZpbGVzIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSc7XG5cblx0LyoqXG5cdCAqIFRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZCB3aGVuIHRoZSB1c2VyIHN0YXJ0cyB0byBkcmFnIGZpbGUgaXRlbXMgb3ZlciB0aGUgYnJvd3NlciB3aW5kb3cuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRkcmFnSGludCA9ICdQbGVhc2UgZHJhZyB0aGUgZmlsZXMgaGVyZS4nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdGV4dCB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBpcyBkcmFnZ2luZyB0aGUgZmlsZSBpdGVtcyBvdmVyIHRoZSBkcm9wIHpvbmUuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRkcm9wSGludCA9ICdQbGVhc2UgcmVsZWFzZSB0aGUgbW91c2UgYnV0dG9uIHRvIHN0YXJ0IHVwbG9hZGluZy4nO1xuXG5cdC8qKiBTcGVjaWZpZXMgdGhlIHRvdGFsIG51bWJlciBvZiBmaWxlcyBhY2NlcHRlZC4gQSBmYWxzeSB2YWx1ZSByZW1vdmVzIHRoZSBsaW1pdC4qL1xuXHRASW5wdXQoKVxuXHRsaW1pdCA9IDA7XG5cblx0LyoqXG5cdCAqIEFjY2VwdGVkIE1JTUUgdHlwZXNcblx0ICpcblx0ICogQGV4YW1wbGUgWyd0ZXh0LyonLCAnaW1hZ2UvcG5nJ11cblx0ICovXG5cdEBJbnB1dCgpXG5cdGdldCB0eXBlcygpOiBzdHJpbmdbXSB7XG5cdFx0cmV0dXJuIHRoaXMuX3R5cGVzO1xuXHR9XG5cdHNldCB0eXBlcyh0eXBlczogc3RyaW5nW10pIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0eXBlcykgJiYgdHlwZXM/Lmxlbmd0aCkge1xuXHRcdFx0dGhpcy5fdHlwZVJlZ0V4cHMgPSBbXTtcblx0XHRcdHRoaXMuX3R5cGVzID0gQXJyYXkuZnJvbSh0eXBlcyk7XG5cdFx0XHR0aGlzLl9hY2NlcHQgPSB0aGlzLl90eXBlcy5qb2luKCcsJyk7XG5cdFx0XHR0eXBlcy5mb3JFYWNoKHQgPT4gdGhpcy5fdHlwZVJlZ0V4cHMucHVzaChuZXcgUmVnRXhwKHQucmVwbGFjZSgvXFwqL2csICcuKicpKSkpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdF91cGxvYWRpbmdJdGVtczogVXBsb2FkaW5nSXRlbVtdID0gW107XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0X2FjY2VwdCA9ICcqLyonO1xuXG5cdC8qKiBAaWdub3JlICovXG5cdF9pdGVtQW5pbWF0aW9uU3RhcnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXHQvKiogQGlnbm9yZSAqL1xuXHRfaXRlbUFuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXHQvKiogQGlnbm9yZSAqL1xuXHRfaXRlbUFuaW1hdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9vbkNoYW5nZSA9IChfOiBzdHJpbmdbXSkgPT4ge307XG5cdHByaXZhdGUgX29uVG91Y2ggPSAoKSA9PiB7fTtcblx0cHJpdmF0ZSBfZnJhbWVEbmRFbnRlcjogKGV2ZW50OiBEcmFnRXZlbnQpID0+IHZvaWQ7XG5cdHByaXZhdGUgX2ZyYW1lRG5kTGVhdmU6ICgpID0+IHZvaWQ7XG5cdHByaXZhdGUgX2ZyYW1lRG5kT3ZlcjogKGV2ZW50OiBEcmFnRXZlbnQpID0+IHZvaWQ7XG5cdHByaXZhdGUgX2ZyYW1lRG5kU3RvcDogKCkgPT4gdm9pZDtcblx0cHJpdmF0ZSBfb3ZlckZyYW1lQ291bnRlciA9IDA7XG5cdHByaXZhdGUgX292ZXJDb3VudGVyID0gMDtcblx0cHJpdmF0ZSBfdHlwZVJlZ0V4cHM6IFJlZ0V4cFtdID0gWy8uKlxcLy4qL107XG5cdHByaXZhdGUgX3R5cGVzOiBzdHJpbmdbXSA9IFsnKi8qJ107XG5cdHByaXZhdGUgX2luaXRTdWJzPzogU3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIF9udW1iZXJPZkZpbGVzRHJhZ2dlZCA9IDA7XG5cblx0QFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcblx0cHJpdmF0ZSBfZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSkge1xuXHRcdHRoaXMuX29uQ2hhbmdlKFtdKTtcblx0XHR0aGlzLl9vblRvdWNoKCk7XG5cdFx0dGhpcy5fZnJhbWVEbmRFbnRlciA9IHRoaXMuX29uRG5kRW50ZXJGcmFtZS5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX2ZyYW1lRG5kTGVhdmUgPSB0aGlzLl9vbkRuZExlYXZlRnJhbWUuYmluZCh0aGlzKTtcblx0XHR0aGlzLl9mcmFtZURuZFN0b3AgPSB0aGlzLl9vbkRuZFN0b3BGcmFtZS5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX2ZyYW1lRG5kT3ZlciA9IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdH1cblxuXHQvKiogQGludGVybmFsICovXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuX2ZyYW1lRG5kRW50ZXIpO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuX2ZyYW1lRG5kTGVhdmUpO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCB0aGlzLl9mcmFtZURuZFN0b3ApO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLl9mcmFtZURuZFN0b3ApO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5fZnJhbWVEbmRPdmVyKTtcblx0XHR0aGlzLl9pdGVtQW5pbWF0aW9uU3RhcnQuc3Vic2NyaWJlKCgpID0+ICh0aGlzLl9pdGVtQW5pbWF0aW9uSW5Qcm9ncmVzcyA9IHRydWUpKTtcblx0XHR0aGlzLl9pdGVtQW5pbWF0aW9uRG9uZS5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX2l0ZW1BbmltYXRpb25JblByb2dyZXNzID0gZmFsc2UpKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuX2ZyYW1lRG5kRW50ZXIpO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIHRoaXMuX2ZyYW1lRG5kTGVhdmUpO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCB0aGlzLl9mcmFtZURuZFN0b3ApO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLl9mcmFtZURuZFN0b3ApO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5fZnJhbWVEbmRPdmVyKTtcblx0XHR0aGlzLl9pdGVtQW5pbWF0aW9uU3RhcnQuY29tcGxldGUoKTtcblx0XHR0aGlzLl9pdGVtQW5pbWF0aW9uRG9uZS5jb21wbGV0ZSgpO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHR3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHRcdFx0aWYgKCF0aGlzLl92YWx1ZSkge1xuXHRcdFx0XHR0aGlzLl9hY2NlcHRDaGFuZ2Uob2JqKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY29tbW9uID0gb2JqLmZpbHRlcih2ID0+IHRoaXMuX3ZhbHVlIS5pbmNsdWRlcyh2KSk7XG5cdFx0XHRpZiAoY29tbW9uLmxlbmd0aCA9PT0gb2JqLmxlbmd0aCAmJiBjb21tb24ubGVuZ3RoID09PSB0aGlzLl92YWx1ZS5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuOyAvLyBubyBjaGFuZ2Vcblx0XHRcdH1cblx0XHRcdHRoaXMuX2FjY2VwdENoYW5nZShvYmopO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl92YWx1ZSA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLl9vbkNoYW5nZSA9IGZuO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5fb25Ub3VjaCA9IGZuO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxuXHRvbkRyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9vdmVyQ291bnRlcisrO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG5cdG9uRHJhZ092ZXIoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0fVxuXG5cdC8qKiBAaW50ZXJuYWwgKi9cblx0QEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcblx0b25EcmFnTGVhdmUoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHR0aGlzLl9vdmVyQ291bnRlci0tO1xuXHR9XG5cblx0LyoqIEBpbnRlcm5hbCAqL1xuXHRASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcblx0b25EbmREcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuX29uRG5kU3RvcEZyYW1lKCk7XG5cdFx0Y29uc3QgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xuXHRcdGlmIChmaWxlcz8ubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLl91cGxvYWRGaWxlcyhBcnJheS5mcm9tKGZpbGVzKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIE9wZW4gdGhlIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyAqL1xuXHRzZWxlY3RGaWxlcygpIHtcblx0XHR0aGlzLl9maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuXHR9XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0X29wZW5JdGVtKGl0ZW06IFVwbG9hZGluZ0l0ZW0pIHtcblx0XHRpdGVtLmRvd25sb2FkaW5nU3VicyA9IHRoaXMuX3NlcnZpY2UuZ2V0KGl0ZW0udXBsb2FkZWRJdGVtIS5pZCkuc3Vic2NyaWJlKGJsb2IgPT4ge1xuXHRcdFx0Y29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblx0XHRcdHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0Z2V0IF9vdmVyRnJhbWUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX292ZXJGcmFtZUNvdW50ZXIgPiAwO1xuXHR9XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0Z2V0IF9vdmVyRHJvcFpvbmUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX292ZXJDb3VudGVyID4gMDtcblx0fVxuXG5cdC8qKiBXaGV0aGVyIGZpbGUgdXBsb2FkaW5nIGlzIGluIHByb2dyZXNzICovXG5cdGdldCB1cGxvYWRpbmcoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX3VwbG9hZGluZ0l0ZW1zLnNvbWUoaSA9PiAhaS5kb25lKTtcblx0fVxuXG5cdC8qKiBUaGUgcmVtYWluaW5nIG51bWJlciBvZiBmaWxlcyBhbGxvd2VkLiovXG5cdGdldCByZW1haW5pbmcoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5saW1pdCA/IHRoaXMubGltaXQgLSB0aGlzLl91cGxvYWRpbmdJdGVtcy5sZW5ndGggOiBJbmZpbml0eTtcblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdF9oYW5kbGVGaWxlU2VsZWN0aW9uKCkge1xuXHRcdGNvbnN0IGZpbGVMaXN0ID0gdGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXM7XG5cdFx0aWYgKGZpbGVMaXN0Py5sZW5ndGgpIHtcblx0XHRcdHRoaXMuX3VwbG9hZEZpbGVzKEFycmF5LmZyb20oZmlsZUxpc3QpKTtcblx0XHRcdHRoaXMuX2ZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG5cdFx0fVxuXHR9XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0Z2V0IF9pbnZhbGlkRmlsZXNEcmFnZ2VkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9udW1iZXJPZkZpbGVzRHJhZ2dlZCA+IHRoaXMucmVtYWluaW5nICYmICh0aGlzLl9vdmVyRnJhbWUgfHwgdGhpcy5fb3ZlckRyb3Bab25lKTtcblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdGdldCBfaW5pdGlhbGlzaW5nKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMuX2luaXRTdWJzICYmICF0aGlzLl9pbml0U3Vicy5jbG9zZWQ7XG5cdH1cblxuXHRwcml2YXRlIF91cGxvYWRGaWxlcyhmaWxlczogRmlsZVtdKSB7XG5cdFx0aWYgKHRoaXMuX2luaXRpYWxpc2luZyB8fCBmaWxlcy5sZW5ndGggPiB0aGlzLnJlbWFpbmluZykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBmaWx0ZXJlZCA9IGZpbGVzLmZpbHRlcihcblx0XHRcdGYgPT5cblx0XHRcdFx0KCFmLnR5cGUgfHwgdGhpcy5fdHlwZVJlZ0V4cHMuc29tZShyZWdleHAgPT4gZi50eXBlLm1hdGNoKHJlZ2V4cCkpKSAmJlxuXHRcdFx0XHQhdGhpcy5fdXBsb2FkaW5nSXRlbXMuc29tZShpID0+IGkubmFtZSA9PT0gZi5uYW1lKVxuXHRcdCk7XG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZXMgPSB0aGlzLl9zZXJ2aWNlLnVwbG9hZChmaWx0ZXJlZCk7XG5cdFx0Y29uc3QgaXRlbXMgPSBmaWx0ZXJlZC5tYXAoXG5cdFx0XHQoZiwgaSkgPT4gbmV3IFVwbG9hZGluZ0l0ZW0ob2JzZXJ2YWJsZXNbaV0sIGYsIHRoaXMuX3VwZGF0ZUl0ZW1zLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0ZUl0ZW0uYmluZCh0aGlzKSlcblx0XHQpO1xuXHRcdHRoaXMuX3VwbG9hZGluZ0l0ZW1zID0gWy4uLnRoaXMuX3VwbG9hZGluZ0l0ZW1zLCAuLi5pdGVtc107XG5cdH1cblxuXHRwcml2YXRlIF9vbkRuZEVudGVyRnJhbWUoZXZlbnQ6IERyYWdFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0dGhpcy5fbnVtYmVyT2ZGaWxlc0RyYWdnZWQgPSBldmVudC5kYXRhVHJhbnNmZXI/Lml0ZW1zPy5sZW5ndGggfHwgMDtcblx0XHR0aGlzLl9vdmVyRnJhbWVDb3VudGVyKys7XG5cdH1cblxuXHRwcml2YXRlIF9vbkRuZExlYXZlRnJhbWUoKSB7XG5cdFx0dGhpcy5fb3ZlckZyYW1lQ291bnRlci0tO1xuXHR9XG5cblx0cHJpdmF0ZSBfb25EbmRTdG9wRnJhbWUoKSB7XG5cdFx0dGhpcy5fb3ZlckZyYW1lQ291bnRlciA9IDA7XG5cdFx0dGhpcy5fb3ZlckNvdW50ZXIgPSAwO1xuXHR9XG5cblx0cHJpdmF0ZSBfYWNjZXB0Q2hhbmdlKHY6IHN0cmluZ1tdKSB7XG5cdFx0dGhpcy5faW5pdFN1YnMgPSB0aGlzLl9zZXJ2aWNlLmxpc3QoKS5zdWJzY3JpYmUobGlzdCA9PiB7XG5cdFx0XHR0aGlzLl91cGxvYWRpbmdJdGVtcyA9IGxpc3Rcblx0XHRcdFx0LmZpbHRlcihpID0+IHYuaW5jbHVkZXMoaS5pZCkpXG5cdFx0XHRcdC5tYXAoZiA9PiBuZXcgVXBsb2FkaW5nSXRlbShmLCB0aGlzLl9kZWxldGVJdGVtLmJpbmQodGhpcykpKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgX3VwZGF0ZUl0ZW1zKCkge1xuXHRcdGNvbnN0IGNvbXBsZXRlZCA9IHRoaXMuX3VwbG9hZGluZ0l0ZW1zLmZpbHRlcihpID0+ICEhaS51cGxvYWRlZEl0ZW0pO1xuXHRcdHRoaXMuX3VwbG9hZGluZ0l0ZW1zID0gWy4uLmNvbXBsZXRlZCwgLi4udGhpcy5fdXBsb2FkaW5nSXRlbXMuZmlsdGVyKGkgPT4gIWkudXBsb2FkZWRJdGVtKV07XG5cdFx0dGhpcy5fdXBkYXRlVmFsdWUoY29tcGxldGVkKTtcblx0fVxuXG5cdHByaXZhdGUgX2RlbGV0ZUl0ZW0oaXRlbTogVXBsb2FkaW5nSXRlbSkge1xuXHRcdGNvbnN0IGtleSA9IGl0ZW0udXBsb2FkZWRJdGVtPy5pZDtcblx0XHRpZiAoa2V5KSB7XG5cdFx0XHR0aGlzLl9zZXJ2aWNlLmRlbGV0ZShrZXkpLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuX3VwbG9hZGluZ0l0ZW1zID0gdGhpcy5fdXBsb2FkaW5nSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gaXRlbSk7XG5cdFx0XHRcdGNvbnN0IGNvbXBsZXRlZCA9IHRoaXMuX3VwbG9hZGluZ0l0ZW1zLmZpbHRlcihpID0+ICEhaS51cGxvYWRlZEl0ZW0pO1xuXHRcdFx0XHR0aGlzLl91cGRhdGVWYWx1ZShjb21wbGV0ZWQpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3VwbG9hZGluZ0l0ZW1zID0gdGhpcy5fdXBsb2FkaW5nSXRlbXMuZmlsdGVyKGkgPT4gaSAhPT0gaXRlbSk7XG5cdFx0XHRjb25zdCBjb21wbGV0ZWQgPSB0aGlzLl91cGxvYWRpbmdJdGVtcy5maWx0ZXIoaSA9PiAhIWkudXBsb2FkZWRJdGVtKTtcblx0XHRcdHRoaXMuX3VwZGF0ZVZhbHVlKGNvbXBsZXRlZCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBfdXBkYXRlVmFsdWUoY29tcGxldGVkOiBVcGxvYWRpbmdJdGVtW10pIHtcblx0XHRjb25zdCBjb21wbGV0ZWRJZHMgPSBjb21wbGV0ZWQubWFwKGMgPT4gYy51cGxvYWRlZEl0ZW0hLmlkKTtcblx0XHR0aGlzLl92YWx1ZSA9IGNvbXBsZXRlZElkcztcblx0XHRpZiAoIXRoaXMuX3ZhbHVlLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5fdmFsdWUgPSBudWxsO1xuXHRcdH1cblx0XHR0aGlzLl9vbkNoYW5nZShjb21wbGV0ZWRJZHMpO1xuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYnVpLWZpbGUtdXBsb2FkLWNvbnRhaW5lclwiPlxuXHQ8ZGl2XG5cdFx0Y2xhc3M9XCJidWktZmlsZS11cGxvYWQtaGludFwiXG5cdFx0Km5nSWY9XCIhX2luaXRpYWxpc2luZyAmJiByZW1haW5pbmcgPiAwICYmICghX2l0ZW1BbmltYXRpb25JblByb2dyZXNzIHx8IHJlbWFpbmluZyA+IDEpXCJcblx0PlxuXHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJfaW52YWxpZEZpbGVzRHJhZ2dlZFwiIFtuZ0lmRWxzZV09XCJ2YWxpZERuZFwiPlxuXHRcdFx0PG1hdC1pY29uIFtidWlJY29uXT1cIidibG9jaydcIiBbc2l6ZV09XCIzMlwiIGNvbG9yPVwid2FyblwiIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIHN0eWxlPVwib3BhY2l0eTogMC42XCI+PC9tYXQtaWNvbj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDxuZy10ZW1wbGF0ZSAjdmFsaWREbmQ+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIV9vdmVyRnJhbWUgJiYgIV9vdmVyRHJvcFpvbmVcIiBjbGFzcz1cImJ1aS1jb2xvci1tdXRlZCBidWktdXBsb2FkLWljb24tbGlua1wiIChjbGljayk9XCJzZWxlY3RGaWxlcygpXCI+XG5cdFx0XHRcdDxtYXQtaWNvbiBbYnVpSWNvbl09XCInZmFzIGZhLWNsb3VkLXVwbG9hZC1hbHQnXCIgW3NpemVdPVwiMzJcIj48L21hdC1pY29uPlxuXHRcdFx0XHQ8YSByb2xlPVwiYnV0dG9uXCI+e3sgdXBsb2FkQWN0aW9uVGV4dCB9fTwvYT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cIl9vdmVyRnJhbWUgJiYgIV9vdmVyRHJvcFpvbmVcIiBjbGFzcz1cImJ1aS1jb2xvci1saWdodFwiPnt7IGRyYWdIaW50IH19PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiX292ZXJEcm9wWm9uZVwiIGNsYXNzPVwiYnVpLWNvbG9yLWxpZ2h0XCI+e3sgZHJvcEhpbnQgfX08L2Rpdj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHQ8L2Rpdj5cblx0PGRpdlxuXHRcdGNsYXNzPVwiYnVpLWZpbGUtdXBsb2FkLWxpc3RcIlxuXHRcdFtAc2xpZGVPdXRdPVwiX3VwbG9hZGluZ0l0ZW1zLmxlbmd0aFwiXG5cdFx0KEBzbGlkZU91dC5zdGFydCk9XCJfaXRlbUFuaW1hdGlvblN0YXJ0Lm5leHQoKVwiXG5cdFx0KEBzbGlkZU91dC5kb25lKT1cIl9pdGVtQW5pbWF0aW9uRG9uZS5uZXh0KClcIlxuXHRcdCpuZ0lmPVwiX3VwbG9hZGluZ0l0ZW1zLmxlbmd0aFwiXG5cdD5cblx0XHQ8c3BhbiBjbGFzcz1cImJ1aS1maWxlLXVwbG9hZGVkLWxhYmVsXCI+e3sgZmlsZVVwbG9hZGVkTGFiZWwgfX08L3NwYW4+XG5cblx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF91cGxvYWRpbmdJdGVtczsgbGV0IGlkeCA9IGluZGV4XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYnVpLWZpbGUtdXBsb2FkLWl0ZW1cIiBbY2xhc3MuaW4tcHJvZ3Jlc3NdPVwiIWl0ZW0uZG9uZVwiICNpdGVtRGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnVpLWZpbGUtdXBsb2FkLWl0ZW0tbmFtZVwiPlxuXHRcdFx0XHRcdDxzcGFuPlxuXHRcdFx0XHRcdFx0PG1hdC1pY29uIGNsYXNzPVwiYnVpLWNvbG9yLW11dGVkXCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuXHRcdFx0XHRcdFx0PGFcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJpdGVtLmRvbmUgJiYgIWl0ZW0uZG93bmxvYWRpbmc7IGVsc2Ugc3RhdGljTmFtZVwiXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCIje3sgaXRlbS51cGxvYWRlZEl0ZW0/LmlkIH19XCJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBfb3Blbkl0ZW0oaXRlbSlcIlxuXHRcdFx0XHRcdFx0XHRjb250ZXh0bWVudT1cImZhbHNlXCJcblx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cIkRvd25sb2FkXCJcblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0e3sgaXRlbS5uYW1lIH19XG5cdFx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgI3N0YXRpY05hbWU+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidWktZmlsZS11cGxvYWQtaXRlbS1wcm9ncmVzc1wiPlxuXHRcdFx0XHRcdFx0PG1hdC1wcm9ncmVzcy1iYXJcblx0XHRcdFx0XHRcdFx0bW9kZT1cImRldGVybWluYXRlXCJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLnVwbG9hZC1jb21wbGV0ZWRdPVwiaXRlbS5kb25lXCJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCIhaXRlbS5kb3dubG9hZGluZ1wiXG5cdFx0XHRcdFx0XHRcdFt2YWx1ZV09XCJpdGVtLmRvbmUgPyAxMDAgOiBpdGVtLnByb2dyZXNzICogMTAwXCJcblx0XHRcdFx0XHRcdD48L21hdC1wcm9ncmVzcy1iYXI+XG5cdFx0XHRcdFx0XHQ8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiYnVmZmVyXCIgKm5nSWY9XCJpdGVtLmRvd25sb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXHRcdFx0XHRcdFx0PHNwYW4+XG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpdGVtLmRvbmVcIiBbbmdJZkVsc2VdPVwiaW5wcm9ncmVzc1wiPiAxMDAlIDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjaW5wcm9ncmVzcz5cblx0XHRcdFx0XHRcdFx0XHR7eyBpdGVtLnByb2dyZXNzIHwgcGVyY2VudCB9fVxuXHRcdFx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImJ1aS1maWxlLXVwbG9hZC1pdGVtLWFjdGlvblwiPlxuXHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdG1hdC1pY29uLWJ1dHRvblxuXHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRcdChjbGljayk9XCJpdGVtLmNhbmNlbCgpXCJcblx0XHRcdFx0XHRcdChtb3VzZWVudGVyKT1cIml0ZW1EaXYuY2xhc3NMaXN0LmFkZCgnYnVpLWZpbGUtdXBsb2FkLWl0ZW0tZGVsZXRpbmcnKVwiXG5cdFx0XHRcdFx0XHQobW91c2VsZWF2ZSk9XCJpdGVtRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2J1aS1maWxlLXVwbG9hZC1pdGVtLWRlbGV0aW5nJylcIlxuXHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cIkRlbGV0ZVwiXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PG1hdC1pY29uIFtidWlJY29uXT1cIidjYW5jZWwnXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogMC45XCI+PC9tYXQtaWNvbj5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxtYXQtZGl2aWRlciAqbmdJZj1cImlkeCA8IF91cGxvYWRpbmdJdGVtcy5sZW5ndGggLSAxXCI+PC9tYXQtZGl2aWRlcj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG5cdDxpbnB1dFxuXHRcdHR5cGU9XCJmaWxlXCJcblx0XHQjZmlsZUlucHV0XG5cdFx0c3R5bGU9XCJkaXNwbGF5OiBub25lXCJcblx0XHRhY2NlcHQ9XCJ7eyBfYWNjZXB0IH19XCJcblx0XHQoY2hhbmdlKT1cIl9oYW5kbGVGaWxlU2VsZWN0aW9uKClcIlxuXHRcdFttdWx0aXBsZV09XCJyZW1haW5pbmcgPiAxXCJcblx0Lz5cbjwvZGl2PlxuIl19
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { MatFormField, matFormFieldAnimations, MAT_FORM_FIELD } from '@angular/material/form-field';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@angular/cdk/observers";
|
|
6
|
-
/** @ignore */
|
|
7
|
-
const TYPE_REF = forwardRef(() => FormFieldComponent);
|
|
8
|
-
/**
|
|
9
|
-
* Container for form controls that applies Material Design styling and behavior.
|
|
10
|
-
*
|
|
11
|
-
* This component extends Angular Material's [mat-form-field](https://material.angular.io/components/form-field) and provides two additional appearances
|
|
12
|
-
* `bound` and `detach`. `bound` renders the label outside the outlined area of the field, while `detach` remove the borders all together. `detach`
|
|
13
|
-
* is generally used with form controls that render their own borders.
|
|
14
|
-
*/
|
|
15
|
-
export class FormFieldComponent extends MatFormField {
|
|
16
|
-
/**
|
|
17
|
-
* @ignore
|
|
18
|
-
*/
|
|
19
|
-
_shouldAlwaysFloat() {
|
|
20
|
-
return super._shouldAlwaysFloat() || this._enhancedAppearance();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* @ignore
|
|
24
|
-
*/
|
|
25
|
-
_borderClass() {
|
|
26
|
-
if (this.appearance !== 'bound') {
|
|
27
|
-
return 'bui-form-field-flex-default';
|
|
28
|
-
}
|
|
29
|
-
if (this._control.disabled) {
|
|
30
|
-
return 'bui-form-field-border-disabled';
|
|
31
|
-
}
|
|
32
|
-
else if (this._control.errorState) {
|
|
33
|
-
return 'bui-border-warn bui-form-field-border-thick';
|
|
34
|
-
}
|
|
35
|
-
else if (this._control.focused) {
|
|
36
|
-
return `bui-border-${this.color || 'primary'} bui-form-field-border-thick`;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
return 'bui-form-field-border-default bui-border-emphasis';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* @ignore
|
|
44
|
-
*/
|
|
45
|
-
_enhancedAppearance() {
|
|
46
|
-
return this.appearance === 'detach' || this.appearance === 'bound';
|
|
47
|
-
}
|
|
48
|
-
/** @ignore */
|
|
49
|
-
_hostClicked(event) {
|
|
50
|
-
this._control.onContainerClick && this._control.onContainerClick(event);
|
|
51
|
-
}
|
|
52
|
-
get __defaults() {
|
|
53
|
-
return this._defaults;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FormFieldComponent, selector: "bui-form-field", inputs: { color: "color" }, host: { listeners: { "click": "_hostClicked($event)" }, properties: { "class.mat-form-field-appearance-standard": "appearance == \"standard\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-appearance-detach": "appearance == \"detach\"", "class.mat-form-field-appearance-bound": "appearance == \"bound\"", "class.mat-form-field-appearance-legacy": "appearance == \"legacy\"", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-can-float": "_canLabelFloat()", "class.mat-form-field-should-float": "_shouldLabelFloat()", "class.mat-form-field-has-label": "_hasFloatingLabel()", "class.mat-form-field-hide-placeholder": "_hideControlPlaceholder()", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-focused": "_control.focused", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")", "class._mat-animation-noopable": "!_animationsEnabled" }, classAttribute: "mat-form-field bui-form-field bui-host" }, providers: [
|
|
58
|
-
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
59
|
-
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
60
|
-
], exportAs: ["buiFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t[class.bui-bold-label]=\"__defaults?.boldLabel\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t> *</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n", styles: [".mat-form-field-appearance-bound{width:215px}.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center;border-radius:4px;border-style:solid}.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover),.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{padding:8px;border-width:1px;margin:1px}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-color:#80808033;border-style:dotted}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-default{border-color:#80808066}.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick,.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover{border-width:2px;padding:8px 6px 8px 8px}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-icon{height:.667em!important;line-height:.667em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix button.mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button[matsuffix],.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix button.mat-icon-button{display:flex;height:1em;width:1.5em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle{display:flex;align-items:center;justify-content:center;width:1.5em;height:1em}.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-prefix .mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix.mat-datepicker-toggle .mat-icon-button,.mat-form-field-appearance-bound .mat-form-field-flex .mat-form-field-suffix .mat-datepicker-toggle .mat-icon-button{width:2em;height:2em}.mat-form-field-appearance-detach,.mat-form-field-appearance-bound{padding-top:.75em}.mat-form-field-appearance-detach .mat-form-field-wrapper,.mat-form-field-appearance-bound .mat-form-field-wrapper{padding-top:.5em}.mat-form-field-appearance-detach .bui-form-field-infix,.mat-form-field-appearance-bound .bui-form-field-infix{flex-grow:1}.mat-form-field-appearance-detach .mat-form-field-label,.mat-form-field-appearance-bound .mat-form-field-label{font-size:1.125em}.mat-form-field-appearance-detach .mat-form-field-flex,.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center}.mat-form-field-appearance-detach .mat-form-field-flex{padding:.125em 0;align-items:center}.bui-form-field .bui-bold-label{font-weight:bold}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{
|
|
64
|
-
selector: 'bui-form-field',
|
|
65
|
-
exportAs: 'buiFormField',
|
|
66
|
-
templateUrl: 'form-field.component.html',
|
|
67
|
-
styleUrls: ['./form-field.component.scss'],
|
|
68
|
-
animations: [matFormFieldAnimations.transitionMessages],
|
|
69
|
-
host: {
|
|
70
|
-
class: 'mat-form-field bui-form-field bui-host',
|
|
71
|
-
'[class.mat-form-field-appearance-standard]': 'appearance == "standard"',
|
|
72
|
-
'[class.mat-form-field-appearance-fill]': 'appearance == "fill"',
|
|
73
|
-
'[class.mat-form-field-appearance-outline]': 'appearance == "outline"',
|
|
74
|
-
'[class.mat-form-field-appearance-detach]': 'appearance == "detach"',
|
|
75
|
-
'[class.mat-form-field-appearance-bound]': 'appearance == "bound"',
|
|
76
|
-
'[class.mat-form-field-appearance-legacy]': 'appearance == "legacy"',
|
|
77
|
-
'[class.mat-form-field-invalid]': '_control.errorState',
|
|
78
|
-
'[class.mat-form-field-can-float]': '_canLabelFloat()',
|
|
79
|
-
'[class.mat-form-field-should-float]': '_shouldLabelFloat()',
|
|
80
|
-
'[class.mat-form-field-has-label]': '_hasFloatingLabel()',
|
|
81
|
-
'[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',
|
|
82
|
-
'[class.mat-form-field-disabled]': '_control.disabled',
|
|
83
|
-
'[class.mat-form-field-autofilled]': '_control.autofilled',
|
|
84
|
-
'[class.mat-focused]': '_control.focused',
|
|
85
|
-
'[class.ng-untouched]': '_shouldForward("untouched")',
|
|
86
|
-
'[class.ng-touched]': '_shouldForward("touched")',
|
|
87
|
-
'[class.ng-pristine]': '_shouldForward("pristine")',
|
|
88
|
-
'[class.ng-dirty]': '_shouldForward("dirty")',
|
|
89
|
-
'[class.ng-valid]': '_shouldForward("valid")',
|
|
90
|
-
'[class.ng-invalid]': '_shouldForward("invalid")',
|
|
91
|
-
'[class.ng-pending]': '_shouldForward("pending")',
|
|
92
|
-
'[class._mat-animation-noopable]': '!_animationsEnabled'
|
|
93
|
-
},
|
|
94
|
-
inputs: ['color'],
|
|
95
|
-
encapsulation: ViewEncapsulation.None,
|
|
96
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
97
|
-
providers: [
|
|
98
|
-
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
99
|
-
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
100
|
-
]
|
|
101
|
-
}]
|
|
102
|
-
}], propDecorators: { _hostClicked: [{
|
|
103
|
-
type: HostListener,
|
|
104
|
-
args: ['click', ['$event']]
|
|
105
|
-
}] } });
|
|
106
|
-
FormFieldComponent.ɵcmp.styles.push(MatFormField.ɵcmp.styles);
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQ04sWUFBWSxFQUNaLHNCQUFzQixFQUV0QixjQUFjLEVBQ2QsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUV0QyxjQUFjO0FBQ2QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFhdEQ7Ozs7OztHQU1HO0FBd0NILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBQ25EOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixFQUFFLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNYLElBQUssSUFBSSxDQUFDLFVBQWtCLEtBQUssT0FBTyxFQUFFO1lBQ3pDLE9BQU8sNkJBQTZCLENBQUM7U0FDckM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQzNCLE9BQU8sZ0NBQWdDLENBQUM7U0FDeEM7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ3BDLE9BQU8sNkNBQTZDLENBQUM7U0FDckQ7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ2pDLE9BQU8sY0FBYyxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsOEJBQThCLENBQUM7U0FDM0U7YUFBTTtZQUNOLE9BQU8sbURBQW1ELENBQUM7U0FDM0Q7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDbEIsT0FBUSxJQUFJLENBQUMsVUFBa0IsS0FBSyxRQUFRLElBQUssSUFBSSxDQUFDLFVBQWtCLEtBQUssT0FBTyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxjQUFjO0lBRWQsWUFBWSxDQUFDLEtBQWlCO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ2IsT0FBUSxJQUFZLENBQUMsU0FBUyxDQUFDO0lBQ2hDLENBQUM7O2dIQXpDVyxrQkFBa0I7b0dBQWxCLGtCQUFrQix5OENBTG5CO1FBQ1YsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUU7UUFDbEQsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUU7S0FDaEQsNkVDbEVGLG85SEF5RkEsaWlIRHZEYSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDOzRGQWtDM0Msa0JBQWtCO2tCQXZDOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLFVBQVUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDO29CQUN2RCxJQUFJLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLHdDQUF3Qzt3QkFDL0MsNENBQTRDLEVBQUUsMEJBQTBCO3dCQUN4RSx3Q0FBd0MsRUFBRSxzQkFBc0I7d0JBQ2hFLDJDQUEyQyxFQUFFLHlCQUF5Qjt3QkFDdEUsMENBQTBDLEVBQUUsd0JBQXdCO3dCQUNwRSx5Q0FBeUMsRUFBRSx1QkFBdUI7d0JBQ2xFLDBDQUEwQyxFQUFFLHdCQUF3Qjt3QkFDcEUsZ0NBQWdDLEVBQUUscUJBQXFCO3dCQUN2RCxrQ0FBa0MsRUFBRSxrQkFBa0I7d0JBQ3RELHFDQUFxQyxFQUFFLHFCQUFxQjt3QkFDNUQsa0NBQWtDLEVBQUUscUJBQXFCO3dCQUN6RCx5Q0FBeUMsRUFBRSwyQkFBMkI7d0JBQ3RFLGlDQUFpQyxFQUFFLG1CQUFtQjt3QkFDdEQsbUNBQW1DLEVBQUUscUJBQXFCO3dCQUMxRCxxQkFBcUIsRUFBRSxrQkFBa0I7d0JBQ3pDLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQsb0JBQW9CLEVBQUUsMkJBQTJCO3dCQUNqRCxxQkFBcUIsRUFBRSw0QkFBNEI7d0JBQ25ELGtCQUFrQixFQUFFLHlCQUF5Qjt3QkFDN0Msa0JBQWtCLEVBQUUseUJBQXlCO3dCQUM3QyxvQkFBb0IsRUFBRSwyQkFBMkI7d0JBQ2pELG9CQUFvQixFQUFFLDJCQUEyQjt3QkFDakQsaUNBQWlDLEVBQUUscUJBQXFCO3FCQUN4RDtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2pCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFO3dCQUNsRCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtxQkFDaEQ7aUJBQ0Q7OEJBb0NBLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBVWpDLGtCQUEwQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLFlBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0TWF0Rm9ybUZpZWxkLFxuXHRtYXRGb3JtRmllbGRBbmltYXRpb25zLFxuXHRNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyxcblx0TUFUX0ZPUk1fRklFTERcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbi8qKiBAaWdub3JlICovXG5jb25zdCBUWVBFX1JFRiA9IGZvcndhcmRSZWYoKCkgPT4gRm9ybUZpZWxkQ29tcG9uZW50KTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBmb3JtIGZpZWxkIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWRcbiAqIHVzaW5nIHRoZSBgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TYCBpbmplY3Rpb24gdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpRm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMgZXh0ZW5kcyBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyB7XG5cdC8qKlxuXHQgKiBSZW5kZXIgbGFiZWxzIGluYiBib2xkIGZvbnRzXG5cdCAqIEBkZWZhdWx0IGZhbHNlXG5cdCAqL1xuXHRib2xkTGFiZWw/OiBib29sZWFuO1xufVxuLyoqXG4gKiBDb250YWluZXIgZm9yIGZvcm0gY29udHJvbHMgdGhhdCBhcHBsaWVzIE1hdGVyaWFsIERlc2lnbiBzdHlsaW5nIGFuZCBiZWhhdmlvci5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBleHRlbmRzIEFuZ3VsYXIgTWF0ZXJpYWwncyBbbWF0LWZvcm0tZmllbGRdKGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9jb21wb25lbnRzL2Zvcm0tZmllbGQpIGFuZCBwcm92aWRlcyB0d28gYWRkaXRpb25hbCBhcHBlYXJhbmNlc1xuICogYGJvdW5kYCBhbmQgYGRldGFjaGAuIGBib3VuZGAgcmVuZGVycyB0aGUgbGFiZWwgb3V0c2lkZSB0aGUgb3V0bGluZWQgYXJlYSBvZiB0aGUgZmllbGQsIHdoaWxlIGBkZXRhY2hgIHJlbW92ZSB0aGUgYm9yZGVycyBhbGwgdG9nZXRoZXIuIGBkZXRhY2hgXG4gKiBpcyBnZW5lcmFsbHkgdXNlZCB3aXRoIGZvcm0gY29udHJvbHMgdGhhdCByZW5kZXIgdGhlaXIgb3duIGJvcmRlcnMuXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2J1aS1mb3JtLWZpZWxkJyxcblx0ZXhwb3J0QXM6ICdidWlGb3JtRmllbGQnLFxuXHR0ZW1wbGF0ZVVybDogJ2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG5cdGFuaW1hdGlvbnM6IFttYXRGb3JtRmllbGRBbmltYXRpb25zLnRyYW5zaXRpb25NZXNzYWdlc10sXG5cdGhvc3Q6IHtcblx0XHRjbGFzczogJ21hdC1mb3JtLWZpZWxkIGJ1aS1mb3JtLWZpZWxkIGJ1aS1ob3N0Jyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRdJzogJ2FwcGVhcmFuY2UgPT0gXCJzdGFuZGFyZFwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbF0nOiAnYXBwZWFyYW5jZSA9PSBcImZpbGxcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVdJzogJ2FwcGVhcmFuY2UgPT0gXCJvdXRsaW5lXCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1kZXRhY2hdJzogJ2FwcGVhcmFuY2UgPT0gXCJkZXRhY2hcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWJvdW5kXSc6ICdhcHBlYXJhbmNlID09IFwiYm91bmRcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeV0nOiAnYXBwZWFyYW5jZSA9PSBcImxlZ2FjeVwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdJzogJ19jb250cm9sLmVycm9yU3RhdGUnLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0XSc6ICdfY2FuTGFiZWxGbG9hdCgpJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdF0nOiAnX3Nob3VsZExhYmVsRmxvYXQoKScsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWxdJzogJ19oYXNGbG9hdGluZ0xhYmVsKCknLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlcl0nOiAnX2hpZGVDb250cm9sUGxhY2Vob2xkZXIoKScsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF0nOiAnX2NvbnRyb2wuZGlzYWJsZWQnLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGxlZF0nOiAnX2NvbnRyb2wuYXV0b2ZpbGxlZCcsXG5cdFx0J1tjbGFzcy5tYXQtZm9jdXNlZF0nOiAnX2NvbnRyb2wuZm9jdXNlZCcsXG5cdFx0J1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidW50b3VjaGVkXCIpJyxcblx0XHQnW2NsYXNzLm5nLXRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidG91Y2hlZFwiKScsXG5cdFx0J1tjbGFzcy5uZy1wcmlzdGluZV0nOiAnX3Nob3VsZEZvcndhcmQoXCJwcmlzdGluZVwiKScsXG5cdFx0J1tjbGFzcy5uZy1kaXJ0eV0nOiAnX3Nob3VsZEZvcndhcmQoXCJkaXJ0eVwiKScsXG5cdFx0J1tjbGFzcy5uZy12YWxpZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ2YWxpZFwiKScsXG5cdFx0J1tjbGFzcy5uZy1pbnZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcImludmFsaWRcIiknLFxuXHRcdCdbY2xhc3MubmctcGVuZGluZ10nOiAnX3Nob3VsZEZvcndhcmQoXCJwZW5kaW5nXCIpJyxcblx0XHQnW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSc6ICchX2FuaW1hdGlvbnNFbmFibGVkJ1xuXHR9LFxuXHRpbnB1dHM6IFsnY29sb3InXSxcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHByb3ZpZGVyczogW1xuXHRcdHsgcHJvdmlkZTogTUFUX0ZPUk1fRklFTEQsIHVzZUV4aXN0aW5nOiBUWVBFX1JFRiB9LFxuXHRcdHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkLCB1c2VFeGlzdGluZzogVFlQRV9SRUYgfVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZENvbXBvbmVudCBleHRlbmRzIE1hdEZvcm1GaWVsZCB7XG5cdC8qKlxuXHQgKiBAaWdub3JlXG5cdCAqL1xuXHRfc2hvdWxkQWx3YXlzRmxvYXQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHN1cGVyLl9zaG91bGRBbHdheXNGbG9hdCgpIHx8IHRoaXMuX2VuaGFuY2VkQXBwZWFyYW5jZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpZ25vcmVcblx0ICovXG5cdF9ib3JkZXJDbGFzcygpOiBzdHJpbmcge1xuXHRcdGlmICgodGhpcy5hcHBlYXJhbmNlIGFzIGFueSkgIT09ICdib3VuZCcpIHtcblx0XHRcdHJldHVybiAnYnVpLWZvcm0tZmllbGQtZmxleC1kZWZhdWx0Jztcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NvbnRyb2wuZGlzYWJsZWQpIHtcblx0XHRcdHJldHVybiAnYnVpLWZvcm0tZmllbGQtYm9yZGVyLWRpc2FibGVkJztcblx0XHR9IGVsc2UgaWYgKHRoaXMuX2NvbnRyb2wuZXJyb3JTdGF0ZSkge1xuXHRcdFx0cmV0dXJuICdidWktYm9yZGVyLXdhcm4gYnVpLWZvcm0tZmllbGQtYm9yZGVyLXRoaWNrJztcblx0XHR9IGVsc2UgaWYgKHRoaXMuX2NvbnRyb2wuZm9jdXNlZCkge1xuXHRcdFx0cmV0dXJuIGBidWktYm9yZGVyLSR7dGhpcy5jb2xvciB8fCAncHJpbWFyeSd9IGJ1aS1mb3JtLWZpZWxkLWJvcmRlci10aGlja2A7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiAnYnVpLWZvcm0tZmllbGQtYm9yZGVyLWRlZmF1bHQgYnVpLWJvcmRlci1lbXBoYXNpcyc7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBpZ25vcmVcblx0ICovXG5cdF9lbmhhbmNlZEFwcGVhcmFuY2UoKSB7XG5cdFx0cmV0dXJuICh0aGlzLmFwcGVhcmFuY2UgYXMgYW55KSA9PT0gJ2RldGFjaCcgfHwgKHRoaXMuYXBwZWFyYW5jZSBhcyBhbnkpID09PSAnYm91bmQnO1xuXHR9XG5cblx0LyoqIEBpZ25vcmUgKi9cblx0QEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuXHRfaG9zdENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblx0XHR0aGlzLl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2sgJiYgdGhpcy5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKGV2ZW50KTtcblx0fVxuXG5cdGdldCBfX2RlZmF1bHRzKCkge1xuXHRcdHJldHVybiAodGhpcyBhcyBhbnkpLl9kZWZhdWx0cztcblx0fVxufVxuXG4oRm9ybUZpZWxkQ29tcG9uZW50IGFzIGFueSkuybVjbXAuc3R5bGVzLnB1c2goKE1hdEZvcm1GaWVsZCBhcyBhbnkpLsm1Y21wLnN0eWxlcyk7XG4iLCI8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtd3JhcHBlclwiPlxuXHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZmxleCB7eyBfYm9yZGVyQ2xhc3MoKSB9fVwiICNjb25uZWN0aW9uQ29udGFpbmVyPlxuXHRcdDwhLS0gT3V0bGluZSB1c2VkIGZvciBvdXRsaW5lIGFwcGVhcmFuY2UuIC0tPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBlYXJhbmNlID09ICdvdXRsaW5lJ1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmVcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnRcIj48L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwXCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZFwiPjwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZSBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcFwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmRcIj48L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbmctY29udGFpbmVyPlxuXG5cdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXByZWZpeFwiICpuZ0lmPVwiX3ByZWZpeENoaWxkcmVuLmxlbmd0aFwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGNsYXNzPVwie3sgX2VuaGFuY2VkQXBwZWFyYW5jZSgpID8gJ2J1aS1mb3JtLWZpZWxkLWluZml4JyA6ICdtYXQtZm9ybS1maWVsZC1pbmZpeCcgfX1cIiAjaW5wdXRDb250YWluZXI+XG5cdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cblx0XHRcdDxzcGFuIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclwiPlxuXHRcdFx0XHQ8IS0tIFdlIGFkZCBhcmlhLW93bnMgYXMgYSB3b3JrYXJvdW5kIGZvciBhbiBpc3N1ZSBpbiBKQVdTICYgTlZEQSB3aGVyZSB0aGUgbGFiZWwgaXNuJ3Rcblx0XHRcdCAgIHJlYWQgaWYgaXQgY29tZXMgYmVmb3JlIHRoZSBjb250cm9sIGluIHRoZSBET00uIC0tPlxuXHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWxhYmVsXCJcblx0XHRcdFx0XHQoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwidXBkYXRlT3V0bGluZUdhcCgpXCJcblx0XHRcdFx0XHRbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09XCJhcHBlYXJhbmNlICE9ICdvdXRsaW5lJ1wiXG5cdFx0XHRcdFx0W2lkXT1cIl9sYWJlbElkXCJcblx0XHRcdFx0XHRbYXR0ci5mb3JdPVwiX2NvbnRyb2wuaWRcIlxuXHRcdFx0XHRcdFthdHRyLmFyaWEtb3duc109XCJfY29udHJvbC5pZFwiXG5cdFx0XHRcdFx0W2NsYXNzLm1hdC1lbXB0eV09XCJfY29udHJvbC5lbXB0eSAmJiAhX3Nob3VsZEFsd2F5c0Zsb2F0KClcIlxuXHRcdFx0XHRcdFtjbGFzcy5tYXQtZm9ybS1maWVsZC1lbXB0eV09XCJfY29udHJvbC5lbXB0eSAmJiAhX3Nob3VsZEFsd2F5c0Zsb2F0KClcIlxuXHRcdFx0XHRcdFtjbGFzcy5tYXQtYWNjZW50XT1cImNvbG9yID09ICdhY2NlbnQnXCJcblx0XHRcdFx0XHRbY2xhc3MubWF0LXdhcm5dPVwiY29sb3IgPT0gJ3dhcm4nXCJcblx0XHRcdFx0XHRbY2xhc3MuYnVpLWJvbGQtbGFiZWxdPVwiX19kZWZhdWx0cz8uYm9sZExhYmVsXCJcblx0XHRcdFx0XHQjbGFiZWxcblx0XHRcdFx0XHQqbmdJZj1cIl9oYXNGbG9hdGluZ0xhYmVsKClcIlxuXHRcdFx0XHRcdFtuZ1N3aXRjaF09XCJfaGFzTGFiZWwoKVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8IS0tIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgcmVtb3ZlIGluIGZhdm9yIG9mIG1hdC1sYWJlbCBlbGVtZW50IGFuIHBsYWNlaG9sZGVyIGF0dHIuIC0tPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtcGxhY2Vob2xkZXJcIj48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdFx0XHQ8c3Bhbj57eyBfY29udHJvbC5wbGFjZWhvbGRlciB9fTwvc3Bhbj5cblx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdFx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1sYWJlbFwiICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+PC9uZy1jb250ZW50PlxuXG5cdFx0XHRcdFx0PCEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBgbWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkYCBjbGFzcyAtLT5cblx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQgbWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyXCJcblx0XHRcdFx0XHRcdGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFoaWRlUmVxdWlyZWRNYXJrZXIgJiYgX2NvbnRyb2wucmVxdWlyZWQgJiYgIV9jb250cm9sLmRpc2FibGVkXCJcblx0XHRcdFx0XHRcdD4mIzMyOyo8L3NwYW5cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHQ8L3NwYW4+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtc3VmZml4XCIgKm5nSWY9XCJfc3VmZml4Q2hpbGRyZW4ubGVuZ3RoXCI+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cblx0PCEtLSBVbmRlcmxpbmUgdXNlZCBmb3IgbGVnYWN5LCBzdGFuZGFyZCwgYW5kIGJveCBhcHBlYXJhbmNlcy4gLS0+XG5cdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmVcIiAjdW5kZXJsaW5lICpuZ0lmPVwiYXBwZWFyYW5jZSAhPSAnb3V0bGluZSdcIj5cblx0XHQ8c3BhblxuXHRcdFx0Y2xhc3M9XCJtYXQtZm9ybS1maWVsZC1yaXBwbGVcIlxuXHRcdFx0W2NsYXNzLm1hdC1hY2NlbnRdPVwiY29sb3IgPT0gJ2FjY2VudCdcIlxuXHRcdFx0W2NsYXNzLm1hdC13YXJuXT1cImNvbG9yID09ICd3YXJuJ1wiXG5cdFx0Pjwvc3Bhbj5cblx0PC9kaXY+XG5cblx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCIgW25nU3dpdGNoXT1cIl9nZXREaXNwbGF5ZWRNZXNzYWdlcygpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuXHRcdDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGVcIj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cblx0XHQ8L2Rpdj5cblxuXHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2hpbnQnXCIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPVwiX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCI+XG5cdFx0XHQ8IS0tIFRPRE8obW1hbGVyYmEpOiB1c2UgYW4gYWN0dWFsIDxtYXQtaGludD4gb25jZSBhbGwgc2VsZWN0b3JzIGFyZSBzd2l0Y2hlZCB0byBtYXQtKiAtLT5cblx0XHRcdDxkaXYgKm5nSWY9XCJoaW50TGFiZWxcIiBbaWRdPVwiX2hpbnRMYWJlbElkXCIgY2xhc3M9XCJtYXQtaGludFwiPnt7IGhpbnRMYWJlbCB9fTwvZGl2PlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pXCI+PC9uZy1jb250ZW50PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyXCI+PC9kaXY+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaGludFthbGlnbj0nZW5kJ11cIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG4iXX0=
|