@taiga-ui/kit 2.79.0 → 2.80.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/bundles/taiga-ui-kit-components-input-count.umd.js +22 -2
- package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
- package/components/input-count/input-count.component.d.ts +2 -0
- package/components/input-count/taiga-ui-kit-components-input-count.metadata.json +1 -1
- package/esm2015/components/input-count/input-count.component.js +20 -4
- package/esm5/components/input-count/input-count.component.js +24 -4
- package/fesm2015/taiga-ui-kit-components-input-count.js +19 -3
- package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-count.js +23 -3
- package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","TUI_INPUT_COUNT_DEFAULT_OPTIONS","icons","up","down","appearance","hideButtons","min","max","Infinity","step","postfix","TUI_INPUT_COUNT_OPTIONS","InjectionToken","factory","TuiInputCountComponent","control","changeDetectorRef","textfieldSize","minusTexts$","isMobile","options","numberFormat","_this","_super","prefix","getMask","allowNegative","mask","tuiCreateNumberMask","decimalSymbol","decimalSeparator","thousandSymbol","thousandSeparator","guide","primitiveTextfield","computedDisabled","nativeFocusableElement","size","isNativeFocused","focused","nativeValue","formatNumber","value","interactive","isPresent","onButtonMouseDown","event","disabled","preventDefault","setNativeFocused","onFocused","onBlur","updateFocused","onHovered","hovered","updateHovered","onPressed","pressed","updatePressed","onValueChange","capped","capValue","nativeNumberValue","isNotNumber","updateValue","newValue","decreaseValue","readOnly","safeUpdateValue","increaseValue","onKeydown","parseInt","split","join","clamp","Math","Number","isNaN","formattedValue","NgControl","type","Optional","Self","Inject","args","ChangeDetectorRef","TUI_TEXTFIELD_APPEARANCE","TuiTextfieldSizeDirective","TUI_TEXTFIELD_SIZE","Observable","TUI_PLUS_MINUS_TEXTS","TUI_IS_MOBILE","TUI_NUMBER_FORMAT","ViewChild","TuiPrimitiveTextfieldComponent","Input","tuiDefaultProp","tuiPure","HostBinding","TuiInputCountComponent_1","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","TUI_FOCUSABLE_ITEM_ACCESSOR","useExisting","forwardRef","AbstractTuiControl","AbstractTuiNullableControl","TuiInputCountDirective","host","process","input","autocomplete","inputMode","TuiInputCountDirective_1","Directive","TUI_TEXTFIELD_HOST","TuiAbstractTextfieldHost","TuiInputCountModule","NgModule","imports","CommonModule","TextMaskModule","TuiButtonModule","TuiPrimitiveTextfieldModule","TuiTextfieldControllerModule","TuiValueAccessorModule","PolymorpheusModule","declarations","exports","TuiTextfieldComponent","useValue"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n if (this.isNotNumber(this.value)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(this.nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","TUI_INPUT_COUNT_DEFAULT_OPTIONS","icons","up","down","appearance","hideButtons","min","max","Infinity","step","postfix","TUI_INPUT_COUNT_OPTIONS","InjectionToken","factory","TuiInputCountComponent","control","changeDetectorRef","textfieldSize","minusTexts$","isMobile","options","numberFormat","_this","_super","unfinishedValue","prefix","getMask","allowNegative","mask","tuiCreateNumberMask","decimalSymbol","decimalSeparator","thousandSymbol","thousandSeparator","guide","primitiveTextfield","computedDisabled","nativeFocusableElement","size","isNativeFocused","focused","nativeValue","formatNumber","value","interactive","isPresent","onButtonMouseDown","event","disabled","preventDefault","setNativeFocused","onFocused","onBlur","updateFocused","onHovered","hovered","updateHovered","onPressed","pressed","updatePressed","onValueChange","isNativeValueNotFinished","capped","capValue","nativeNumberValue","isNotNumber","updateValue","newValue","decreaseValue","readOnly","safeUpdateValue","increaseValue","onKeydown","parseInt","split","join","clamp","Math","Number","isNaN","tuiMaskedNumberStringToNumber","formattedValue","NgControl","type","Optional","Self","Inject","args","ChangeDetectorRef","TUI_TEXTFIELD_APPEARANCE","TuiTextfieldSizeDirective","TUI_TEXTFIELD_SIZE","Observable","TUI_PLUS_MINUS_TEXTS","TUI_IS_MOBILE","TUI_NUMBER_FORMAT","ViewChild","TuiPrimitiveTextfieldComponent","Input","tuiDefaultProp","tuiPure","HostBinding","TuiInputCountComponent_1","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","providers","provide","TUI_FOCUSABLE_ITEM_ACCESSOR","useExisting","forwardRef","AbstractTuiControl","AbstractTuiNullableControl","TuiInputCountDirective","host","process","input","autocomplete","inputMode","TuiInputCountDirective_1","Directive","TUI_TEXTFIELD_HOST","TuiAbstractTextfieldHost","TuiInputCountModule","NgModule","imports","CommonModule","TextMaskModule","TuiButtonModule","TuiPrimitiveTextfieldModule","TuiTextfieldControllerModule","TuiValueAccessorModule","PolymorpheusModule","declarations","exports","TuiTextfieldComponent","useValue"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n tuiMaskedNumberStringToNumber,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n private unfinishedValue: string | null = '';\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n if (this.isNativeValueNotFinished) {\n this.unfinishedValue = this.nativeValue;\n\n return;\n }\n\n this.unfinishedValue = null;\n\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n const nativeNumberValue = this.unfinishedValue\n ? tuiMaskedNumberStringToNumber(\n this.unfinishedValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n )\n : this.nativeNumberValue;\n\n this.unfinishedValue = null;\n\n if (this.isNotNumber(nativeNumberValue)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n\n private get isNativeValueNotFinished(): boolean {\n const {nativeNumberValue} = this;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.max\n : nativeNumberValue < this.min;\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n"]}
|
|
@@ -14,6 +14,7 @@ export declare class TuiInputCountComponent extends AbstractTuiNullableControl<n
|
|
|
14
14
|
readonly options: TuiInputCountOptions;
|
|
15
15
|
private readonly numberFormat;
|
|
16
16
|
private readonly primitiveTextfield?;
|
|
17
|
+
private unfinishedValue;
|
|
17
18
|
step: number;
|
|
18
19
|
min: number;
|
|
19
20
|
max: number;
|
|
@@ -48,4 +49,5 @@ export declare class TuiInputCountComponent extends AbstractTuiNullableControl<n
|
|
|
48
49
|
private onBlur;
|
|
49
50
|
private formatNumber;
|
|
50
51
|
private isNotNumber;
|
|
52
|
+
private get isNativeValueNotFinished();
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"TuiInputCountComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiNullableControl","line":65,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":48,"character":1},"arguments":[{"selector":"tui-input-count","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":52,"character":21},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_FOCUSABLE_ITEM_ACCESSOR","line":55,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}},{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiControl","line":59,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}}],"template":"<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldAutocomplete=\"off\"\n tuiTextfieldInputMode=\"numeric\"\n class=\"t-textfield\"\n [tuiTextfieldMaxLength]=\"18\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [textMask]=\"getMask(min < 0)\"\n [invalid]=\"computedInvalid\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange()\"\n (keydown)=\"onKeydown($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n<ng-container *ngIf=\"!buttonsHidden\">\n <ng-container *ngIf=\"minusTexts$ | async as texts\">\n <section class=\"t-buttons\">\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__plus-button\"\n size=\"s\"\n class=\"t-button t-button_plus\"\n [icon]=\"iconUp\"\n [appearance]=\"options.appearance\"\n [title]=\"texts[0]\"\n [disabled]=\"plusButtonDisabled\"\n [focusable]=\"false\"\n (mousedown)=\"onButtonMouseDown($event, plusButtonDisabled)\"\n (click)=\"increaseValue()\"\n ></button>\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__minus-button\"\n size=\"s\"\n class=\"t-button t-button_minus\"\n [icon]=\"iconDown\"\n [appearance]=\"options.appearance\"\n [disabled]=\"minusButtonDisabled\"\n [focusable]=\"false\"\n [title]=\"texts[1]\"\n (mousedown)=\"onButtonMouseDown($event, minusButtonDisabled)\"\n (click)=\"decreaseValue()\"\n ></button>\n </section>\n </ng-container>\n</ng-container>\n","styles":[":host{display:flex;font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);height:var(--tui-height-m);color:var(--tui-text-01);text-align:left}:host._disabled{pointer-events:none}:host[data-size='l']{font:var(--tui-font-text-m);height:var(--tui-height-l)}.t-textfield{position:relative;border-radius:inherit;text-align:inherit;flex-grow:1;min-width:0}:host:not(._hide-buttons) .t-textfield{border-top-right-radius:0;border-bottom-right-radius:0}.t-buttons{display:flex;flex-direction:column;margin-left:.125rem;height:100%}.t-buttons .t-button{display:flex;width:calc(var(--tui-height-m) * .75);height:calc(50% - .0625rem)}.t-buttons .t-button_plus{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-buttons .t-button_minus{border-radius:0 0 var(--tui-radius-m)}:host[data-size='l'] .t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}"]}]}],"members":{"primitiveTextfield":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":68,"character":5},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldComponent","line":68,"character":15}]}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":72,"character":5}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":76,"character":5}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":80,"character":5}}]}],"hideButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":84,"character":5}}]}],"prefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":88,"character":5}}]}],"postfix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":92,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":96,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":97,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":98,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":98,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":100,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":100,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":101,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_APPEARANCE","line":101,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_SIZE","line":103,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":105,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/kit/tokens","name":"TUI_PLUS_MINUS_TEXTS","line":105,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_IS_MOBILE","line":107,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":108,"character":9},"arguments":[{"__symbolic":"reference","name":"TUI_INPUT_COUNT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_NUMBER_FORMAT","line":110,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":99,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":100,"character":54},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldSizeDirective","line":104,"character":40},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"error","message":"Expression form not supported","line":106,"character":41,"module":"./input-count.component"}]},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"TuiInputCountOptions"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiNumberFormatSettings","line":111,"character":39}]}],"getMask":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":116,"character":5}]}],"buttonsHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":129,"character":5},"arguments":["class._hide-buttons"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":148,"character":5},"arguments":["attr.data-size"]}]}],"onButtonMouseDown":[{"__symbolic":"method"}],"onFocused":[{"__symbolic":"method"}],"onHovered":[{"__symbolic":"method"}],"onPressed":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"decreaseValue":[{"__symbolic":"method"}],"increaseValue":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"safeUpdateValue":[{"__symbolic":"method"}],"capValue":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"formatNumber":[{"__symbolic":"method"}],"isNotNumber":[{"__symbolic":"method"}]}},"TuiInputCountDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiAbstractTextfieldHost","line":14,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"tui-input-count","providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_HOST","line":9,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountDirective"}}]}]}],"members":{"onValueChange":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"TuiInputCountModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":8},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":18,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiButtonModule","line":19,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldModule","line":20,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldControllerModule","line":21,"character":8},{"__symbolic":"reference","module":"@taiga-ui/kit/directives","name":"TuiValueAccessorModule","line":22,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":23,"character":8}],"declarations":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"}],"exports":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldComponent","line":26,"character":62}]}]}],"members":{}},"TuiInputCountOptions":{"__symbolic":"interface"},"InputCountOptions":{"__symbolic":"interface"},"PASSWORD_ICON_UP":"tuiIconPlus","PASSWORD_ICON_DOWN":"tuiIconMinus","TUI_INPUT_COUNT_DEFAULT_OPTIONS":{"icons":{"up":{"__symbolic":"reference","name":"PASSWORD_ICON_UP"},"down":{"__symbolic":"reference","name":"PASSWORD_ICON_DOWN"}},"appearance":"textfield","hideButtons":false,"min":0,"max":{"__symbolic":"reference","name":"Infinity"},"step":1,"postfix":""},"TUI_INPUT_COUNT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":40,"character":43},"arguments":["Default parameters for input count component",{"__symbolic":"error","message":"Lambda not supported","line":43,"character":17,"module":"./input-count-options"}]},"tuiInputCountOptionsProvider":{"__symbolic":"error","message":"Lambda not supported","line":49,"character":21,"module":"./input-count-options"}},"origins":{"TuiInputCountComponent":"./input-count.component","TuiInputCountDirective":"./input-count.directive","TuiInputCountModule":"./input-count.module","TuiInputCountOptions":"./input-count-options","InputCountOptions":"./input-count-options","PASSWORD_ICON_UP":"./input-count-options","PASSWORD_ICON_DOWN":"./input-count-options","TUI_INPUT_COUNT_DEFAULT_OPTIONS":"./input-count-options","TUI_INPUT_COUNT_OPTIONS":"./input-count-options","tuiInputCountOptionsProvider":"./input-count-options"},"importAs":"@taiga-ui/kit/components/input-count"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"TuiInputCountComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiNullableControl","line":66,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":49,"character":1},"arguments":[{"selector":"tui-input-count","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":53,"character":21},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_FOCUSABLE_ITEM_ACCESSOR","line":56,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}},{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiControl","line":60,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}}],"template":"<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldAutocomplete=\"off\"\n tuiTextfieldInputMode=\"numeric\"\n class=\"t-textfield\"\n [tuiTextfieldMaxLength]=\"18\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [textMask]=\"getMask(min < 0)\"\n [invalid]=\"computedInvalid\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange()\"\n (keydown)=\"onKeydown($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n<ng-container *ngIf=\"!buttonsHidden\">\n <ng-container *ngIf=\"minusTexts$ | async as texts\">\n <section class=\"t-buttons\">\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__plus-button\"\n size=\"s\"\n class=\"t-button t-button_plus\"\n [icon]=\"iconUp\"\n [appearance]=\"options.appearance\"\n [title]=\"texts[0]\"\n [disabled]=\"plusButtonDisabled\"\n [focusable]=\"false\"\n (mousedown)=\"onButtonMouseDown($event, plusButtonDisabled)\"\n (click)=\"increaseValue()\"\n ></button>\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__minus-button\"\n size=\"s\"\n class=\"t-button t-button_minus\"\n [icon]=\"iconDown\"\n [appearance]=\"options.appearance\"\n [disabled]=\"minusButtonDisabled\"\n [focusable]=\"false\"\n [title]=\"texts[1]\"\n (mousedown)=\"onButtonMouseDown($event, minusButtonDisabled)\"\n (click)=\"decreaseValue()\"\n ></button>\n </section>\n </ng-container>\n</ng-container>\n","styles":[":host{display:flex;font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);height:var(--tui-height-m);color:var(--tui-text-01);text-align:left}:host._disabled{pointer-events:none}:host[data-size='l']{font:var(--tui-font-text-m);height:var(--tui-height-l)}.t-textfield{position:relative;border-radius:inherit;text-align:inherit;flex-grow:1;min-width:0}:host:not(._hide-buttons) .t-textfield{border-top-right-radius:0;border-bottom-right-radius:0}.t-buttons{display:flex;flex-direction:column;margin-left:.125rem;height:100%}.t-buttons .t-button{display:flex;width:calc(var(--tui-height-m) * .75);height:calc(50% - .0625rem)}.t-buttons .t-button_plus{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-buttons .t-button_minus{border-radius:0 0 var(--tui-radius-m)}:host[data-size='l'] .t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}"]}]}],"members":{"primitiveTextfield":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":69,"character":5},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldComponent","line":69,"character":15}]}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":75,"character":5}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":79,"character":5}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":83,"character":5}}]}],"hideButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":87,"character":5}}]}],"prefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":91,"character":5}}]}],"postfix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":95,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":99,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":100,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":101,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":101,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_APPEARANCE","line":104,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":106,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_SIZE","line":106,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":108,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/kit/tokens","name":"TUI_PLUS_MINUS_TEXTS","line":108,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_IS_MOBILE","line":110,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":111,"character":9},"arguments":[{"__symbolic":"reference","name":"TUI_INPUT_COUNT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":113,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_NUMBER_FORMAT","line":113,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":102,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":54},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldSizeDirective","line":107,"character":40},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"error","message":"Expression form not supported","line":109,"character":41,"module":"./input-count.component"}]},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"TuiInputCountOptions"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiNumberFormatSettings","line":114,"character":39}]}],"getMask":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":119,"character":5}]}],"buttonsHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":132,"character":5},"arguments":["class._hide-buttons"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":151,"character":5},"arguments":["attr.data-size"]}]}],"onButtonMouseDown":[{"__symbolic":"method"}],"onFocused":[{"__symbolic":"method"}],"onHovered":[{"__symbolic":"method"}],"onPressed":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"decreaseValue":[{"__symbolic":"method"}],"increaseValue":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"safeUpdateValue":[{"__symbolic":"method"}],"capValue":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"formatNumber":[{"__symbolic":"method"}],"isNotNumber":[{"__symbolic":"method"}]}},"TuiInputCountDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiAbstractTextfieldHost","line":14,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"tui-input-count","providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_HOST","line":9,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountDirective"}}]}]}],"members":{"onValueChange":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"TuiInputCountModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":8},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":18,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiButtonModule","line":19,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldModule","line":20,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldControllerModule","line":21,"character":8},{"__symbolic":"reference","module":"@taiga-ui/kit/directives","name":"TuiValueAccessorModule","line":22,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":23,"character":8}],"declarations":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"}],"exports":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldComponent","line":26,"character":62}]}]}],"members":{}},"TuiInputCountOptions":{"__symbolic":"interface"},"InputCountOptions":{"__symbolic":"interface"},"PASSWORD_ICON_UP":"tuiIconPlus","PASSWORD_ICON_DOWN":"tuiIconMinus","TUI_INPUT_COUNT_DEFAULT_OPTIONS":{"icons":{"up":{"__symbolic":"reference","name":"PASSWORD_ICON_UP"},"down":{"__symbolic":"reference","name":"PASSWORD_ICON_DOWN"}},"appearance":"textfield","hideButtons":false,"min":0,"max":{"__symbolic":"reference","name":"Infinity"},"step":1,"postfix":""},"TUI_INPUT_COUNT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":40,"character":43},"arguments":["Default parameters for input count component",{"__symbolic":"error","message":"Lambda not supported","line":43,"character":17,"module":"./input-count-options"}]},"tuiInputCountOptionsProvider":{"__symbolic":"error","message":"Lambda not supported","line":49,"character":21,"module":"./input-count-options"}},"origins":{"TuiInputCountComponent":"./input-count.component","TuiInputCountDirective":"./input-count.directive","TuiInputCountModule":"./input-count.module","TuiInputCountOptions":"./input-count-options","InputCountOptions":"./input-count-options","PASSWORD_ICON_UP":"./input-count-options","PASSWORD_ICON_DOWN":"./input-count-options","TUI_INPUT_COUNT_DEFAULT_OPTIONS":"./input-count-options","TUI_INPUT_COUNT_OPTIONS":"./input-count-options","tuiInputCountOptionsProvider":"./input-count-options"},"importAs":"@taiga-ui/kit/components/input-count"}
|
|
@@ -3,7 +3,7 @@ import { __decorate, __param } from "tslib";
|
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
|
|
4
4
|
import { NgControl } from '@angular/forms';
|
|
5
5
|
import { AbstractTuiControl, AbstractTuiNullableControl, clamp, isNativeFocused, isPresent, setNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, TUI_IS_MOBILE, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
|
|
6
|
-
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
6
|
+
import { formatNumber, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, tuiMaskedNumberStringToNumber, TuiNumberFormatSettings, TuiPrimitiveTextfieldComponent, TuiSizeL, TuiSizeS, TuiTextfieldSizeDirective, TuiTextMaskOptions, TuiWithOptionalMinMax, } from '@taiga-ui/core';
|
|
7
7
|
import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
|
|
8
8
|
import { Observable } from 'rxjs';
|
|
9
9
|
import { TUI_INPUT_COUNT_OPTIONS } from './input-count-options';
|
|
@@ -17,6 +17,7 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
17
17
|
this.isMobile = isMobile;
|
|
18
18
|
this.options = options;
|
|
19
19
|
this.numberFormat = numberFormat;
|
|
20
|
+
this.unfinishedValue = '';
|
|
20
21
|
this.step = this.options.step;
|
|
21
22
|
this.min = this.options.min;
|
|
22
23
|
this.max = this.options.max;
|
|
@@ -87,6 +88,11 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
87
88
|
this.updatePressed(pressed);
|
|
88
89
|
}
|
|
89
90
|
onValueChange() {
|
|
91
|
+
if (this.isNativeValueNotFinished) {
|
|
92
|
+
this.unfinishedValue = this.nativeValue;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.unfinishedValue = null;
|
|
90
96
|
const capped = this.capValue(this.nativeNumberValue);
|
|
91
97
|
if (this.isNotNumber(capped)) {
|
|
92
98
|
this.updateValue(null);
|
|
@@ -150,11 +156,15 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
150
156
|
return Number.isNaN(capped) || capped < this.min ? null : capped;
|
|
151
157
|
}
|
|
152
158
|
onBlur() {
|
|
153
|
-
|
|
159
|
+
const nativeNumberValue = this.unfinishedValue
|
|
160
|
+
? tuiMaskedNumberStringToNumber(this.unfinishedValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)
|
|
161
|
+
: this.nativeNumberValue;
|
|
162
|
+
this.unfinishedValue = null;
|
|
163
|
+
if (this.isNotNumber(nativeNumberValue)) {
|
|
154
164
|
this.updateValue(null);
|
|
155
165
|
return;
|
|
156
166
|
}
|
|
157
|
-
const value = Math.max(
|
|
167
|
+
const value = Math.max(nativeNumberValue || 0, this.min);
|
|
158
168
|
const formattedValue = this.formatNumber(value);
|
|
159
169
|
this.nativeValue = formattedValue;
|
|
160
170
|
this.updateValue(value);
|
|
@@ -170,6 +180,12 @@ let TuiInputCountComponent = TuiInputCountComponent_1 = class TuiInputCountCompo
|
|
|
170
180
|
isNotNumber(value) {
|
|
171
181
|
return !isPresent(value) || Number.isNaN(value);
|
|
172
182
|
}
|
|
183
|
+
get isNativeValueNotFinished() {
|
|
184
|
+
const { nativeNumberValue } = this;
|
|
185
|
+
return nativeNumberValue < 0
|
|
186
|
+
? nativeNumberValue > this.max
|
|
187
|
+
: nativeNumberValue < this.min;
|
|
188
|
+
}
|
|
173
189
|
};
|
|
174
190
|
TuiInputCountComponent.ctorParameters = () => [
|
|
175
191
|
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
@@ -246,4 +262,4 @@ TuiInputCountComponent = TuiInputCountComponent_1 = __decorate([
|
|
|
246
262
|
__param(7, Inject(TUI_NUMBER_FORMAT))
|
|
247
263
|
], TuiInputCountComponent);
|
|
248
264
|
export { TuiInputCountComponent };
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsY0FBYyxFQUVkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLFFBQVEsRUFDUixRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsR0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRixXQUFXO0FBaUJYLElBQWEsc0JBQXNCLDhCQUFuQyxNQUFhLHNCQUNULFNBQVEsMEJBQWtDO0lBOEIxQyxZQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFVB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U0E3UFksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIGNsYW1wLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBpc1ByZXNlbnQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIGZvcm1hdE51bWJlcixcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpVGV4dE1hc2tPcHRpb25zLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfUExVU19NSU5VU19URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtUZXh0TWFza0NvbmZpZ30gZnJvbSAnYW5ndWxhcjItdGV4dC1tYXNrJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY291bnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jb3VudC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jb3VudC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENvdW50Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoaWRlQnV0dG9ucyA9IHRoaXMub3B0aW9ucy5oaWRlQnV0dG9ucztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwcmVmaXggPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLnBvc3RmaXg7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBlYXJhbmNlOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9TSVpFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZFNpemU6IFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVFVJX1BMVVNfTUlOVVNfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IG1pbnVzVGV4dHMkOiBPYnNlcnZhYmxlPFtzdHJpbmcsIHN0cmluZ10+LFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0NPVU5UX09QVElPTlMpXG4gICAgICAgIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0Q291bnRPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9OVU1CRVJfRk9STUFUKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlckZvcm1hdDogVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGdldE1hc2soYWxsb3dOZWdhdGl2ZTogYm9vbGVhbik6IFRleHRNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1hc2s6IHR1aUNyZWF0ZU51bWJlck1hc2soe1xuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICB0aG91c2FuZFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICAgICAgfSBhcyBUdWlUZXh0TWFza09wdGlvbnMgYXMgdW5rbm93biBhcyBUZXh0TWFza0NvbmZpZztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiAzLjAgUmVtb3ZlIGluIHYuM1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGUtYnV0dG9ucycpXG4gICAgZ2V0IGJ1dHRvbnNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVCdXR0b25zIHx8IHRoaXMuYXBwZWFyYW5jZSA9PT0gJ3RhYmxlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvblVwKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy51cDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkRvd24oKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLmRvd247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBleGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKGlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzZXROYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIG9uSG92ZXJlZChob3ZlcmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZChob3ZlcmVkKTtcbiAgICB9XG5cbiAgICBvblByZXNzZWQocHJlc3NlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXNzZWQocHJlc3NlZCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgodGhpcy5uYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSlcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuICFpc1ByZXNlbnQodmFsdWUpIHx8IE51bWJlci5pc05hTih2YWx1ZSk7XG4gICAgfVxufVxuIl19
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LWNvdW50LyIsInNvdXJjZXMiOlsiaW5wdXQtY291bnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsY0FBYyxFQUVkLE9BQU8sR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5QixRQUFRLEVBQ1IsUUFBUSxFQUNSLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIscUJBQXFCLEdBQ3hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHMUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUMsdUJBQXVCLEVBQXVCLE1BQU0sdUJBQXVCLENBQUM7QUFFcEYsV0FBVztBQWlCWCxJQUFhLHNCQUFzQiw4QkFBbkMsTUFBYSxzQkFDVCxTQUFRLDBCQUFrQztJQWdDMUMsWUFJSSxPQUF5QixFQUNFLGlC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UyxFQUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBc0IsQ0FBQzthQUN4RDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXNCLENBQUM7YUFDeEQ7U0FDSjs7S0FDSixDQUFDO0lBbUNPLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFDVixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBRWhDLFdBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFMUIsV0FBQSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUU1QixXQUFBLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNyQixXQUFBLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0lBRS9CLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7R0FoRHJCLHNCQUFzQixDQXlSbEM7U0F6Ulksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIGNsYW1wLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICBpc1ByZXNlbnQsXG4gICAgc2V0TmF0aXZlRm9jdXNlZCxcbiAgICBUVUlfRk9DVVNBQkxFX0lURU1fQUNDRVNTT1IsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIGZvcm1hdE51bWJlcixcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgdHVpTWFza2VkTnVtYmVyU3RyaW5nVG9OdW1iZXIsXG4gICAgVHVpTnVtYmVyRm9ybWF0U2V0dGluZ3MsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpVGV4dE1hc2tPcHRpb25zLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUVUlfUExVU19NSU5VU19URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtUZXh0TWFza0NvbmZpZ30gZnJvbSAnYW5ndWxhcjItdGV4dC1tYXNrJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtY291bnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jb3VudC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1jb3VudC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0Q291bnRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENvdW50Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHVuZmluaXNoZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGlkZUJ1dHRvbnMgPSB0aGlzLm9wdGlvbnMuaGlkZUJ1dHRvbnM7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5wb3N0Zml4O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9QTFVTX01JTlVTX1RFWFRTKVxuICAgICAgICByZWFkb25seSBtaW51c1RleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DT1VOVF9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dENvdW50T3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQ6IFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRNYXNrKGFsbG93TmVnYXRpdmU6IGJvb2xlYW4pOiBUZXh0TWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXNrOiB0dWlDcmVhdGVOdW1iZXJNYXNrKHtcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlLFxuICAgICAgICAgICAgICAgIGRlY2ltYWxTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgdGhvdXNhbmRTeW1ib2w6IHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBndWlkZTogZmFsc2UsXG4gICAgICAgIH0gYXMgVHVpVGV4dE1hc2tPcHRpb25zIGFzIHVua25vd24gYXMgVGV4dE1hc2tDb25maWc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogMy4wIFJlbW92ZSBpbiB2LjNcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oaWRlLWJ1dHRvbnMnKVxuICAgIGdldCBidXR0b25zSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlQnV0dG9ucyB8fCB0aGlzLmFwcGVhcmFuY2UgPT09ICd0YWJsZSc7XG4gICAgfVxuXG4gICAgZ2V0IGljb25VcCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaWNvbnMudXA7XG4gICAgfVxuXG4gICAgZ2V0IGljb25Eb3duKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy5kb3duO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnByaW1pdGl2ZVRleHRmaWVsZCB8fCB0aGlzLmNvbXB1dGVkRGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC5uYXRpdmVGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgZXhhbXBsZVRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNlZCA/IHRoaXMubmF0aXZlVmFsdWUgOiB0aGlzLmZvcm1hdE51bWJlcih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgbWludXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA8PSB0aGlzLm1pbik7XG4gICAgfVxuXG4gICAgZ2V0IHBsdXNCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmludGVyYWN0aXZlIHx8IChpc1ByZXNlbnQodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZSA+PSB0aGlzLm1heCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8ICF0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0TmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICBvbkhvdmVyZWQoaG92ZXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWQoaG92ZXJlZCk7XG4gICAgfVxuXG4gICAgb25QcmVzc2VkKHByZXNzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQcmVzc2VkKHByZXNzZWQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTmF0aXZlVmFsdWVOb3RGaW5pc2hlZCkge1xuICAgICAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSB0aGlzLm5hdGl2ZVZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuZmluaXNoZWRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmF0aXZlTnVtYmVyVmFsdWUgPSB0aGlzLnVuZmluaXNoZWRWYWx1ZVxuICAgICAgICAgICAgPyB0dWlNYXNrZWROdW1iZXJTdHJpbmdUb051bWJlcihcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMubmF0aXZlTnVtYmVyVmFsdWU7XG5cbiAgICAgICAgdGhpcy51bmZpbmlzaGVkVmFsdWUgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTm90TnVtYmVyKG5hdGl2ZU51bWJlclZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heChuYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSlcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogZm9ybWF0TnVtYmVyKFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuICFpc1ByZXNlbnQodmFsdWUpIHx8IE51bWJlci5pc05hTih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNOYXRpdmVWYWx1ZU5vdEZpbmlzaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7bmF0aXZlTnVtYmVyVmFsdWV9ID0gdGhpcztcblxuICAgICAgICByZXR1cm4gbmF0aXZlTnVtYmVyVmFsdWUgPCAwXG4gICAgICAgICAgICA/IG5hdGl2ZU51bWJlclZhbHVlID4gdGhpcy5tYXhcbiAgICAgICAgICAgIDogbmF0aXZlTnVtYmVyVmFsdWUgPCB0aGlzLm1pbjtcbiAgICB9XG59XG4iXX0=
|