primeng 11.1.0 → 11.2.3
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/README.md +1 -0
- package/api/confirmaeventtype.d.ts +5 -0
- package/api/filtermatchmode.d.ts +4 -0
- package/api/filterservice.d.ts +4 -0
- package/api/primeng-api.metadata.json +1 -1
- package/api/public_api.d.ts +1 -0
- package/api/translation.d.ts +4 -0
- package/autocomplete/autocomplete.d.ts +8 -1
- package/autocomplete/primeng-autocomplete.metadata.json +1 -1
- package/avatar/primeng-avatar.metadata.json +1 -1
- package/bundles/primeng-api.umd.js +56 -6
- package/bundles/primeng-api.umd.js.map +1 -1
- package/bundles/primeng-api.umd.min.js +1 -1
- package/bundles/primeng-api.umd.min.js.map +1 -1
- package/bundles/primeng-autocomplete.umd.js +86 -17
- package/bundles/primeng-autocomplete.umd.js.map +1 -1
- package/bundles/primeng-autocomplete.umd.min.js +1 -1
- package/bundles/primeng-autocomplete.umd.min.js.map +1 -1
- package/bundles/primeng-avatar.umd.js +1 -1
- package/bundles/primeng-avatar.umd.min.js +1 -1
- package/bundles/primeng-avatar.umd.min.js.map +1 -1
- package/bundles/primeng-calendar.umd.js +6 -0
- package/bundles/primeng-calendar.umd.js.map +1 -1
- package/bundles/primeng-calendar.umd.min.js +1 -1
- package/bundles/primeng-calendar.umd.min.js.map +1 -1
- package/bundles/primeng-cascadeselect.umd.js +8 -5
- package/bundles/primeng-cascadeselect.umd.js.map +1 -1
- package/bundles/primeng-cascadeselect.umd.min.js +2 -2
- package/bundles/primeng-cascadeselect.umd.min.js.map +1 -1
- package/bundles/primeng-colorpicker.umd.js.map +1 -1
- package/bundles/primeng-colorpicker.umd.min.js.map +1 -1
- package/bundles/primeng-confirmdialog.umd.js +11 -8
- package/bundles/primeng-confirmdialog.umd.js.map +1 -1
- package/bundles/primeng-confirmdialog.umd.min.js +1 -1
- package/bundles/primeng-confirmdialog.umd.min.js.map +1 -1
- package/bundles/primeng-contextmenu.umd.js +2 -2
- package/bundles/primeng-contextmenu.umd.js.map +1 -1
- package/bundles/primeng-contextmenu.umd.min.js +1 -1
- package/bundles/primeng-contextmenu.umd.min.js.map +1 -1
- package/bundles/primeng-dialog.umd.js +1 -1
- package/bundles/primeng-dialog.umd.min.js +1 -1
- package/bundles/primeng-dialog.umd.min.js.map +1 -1
- package/bundles/primeng-dom.umd.js +3 -0
- package/bundles/primeng-dom.umd.js.map +1 -1
- package/bundles/primeng-dom.umd.min.js +1 -1
- package/bundles/primeng-dom.umd.min.js.map +1 -1
- package/bundles/primeng-dropdown.umd.js +1 -1
- package/bundles/primeng-dropdown.umd.js.map +1 -1
- package/bundles/primeng-dropdown.umd.min.js +1 -1
- package/bundles/primeng-dropdown.umd.min.js.map +1 -1
- package/bundles/primeng-dynamicdialog.umd.js +1 -1
- package/bundles/primeng-dynamicdialog.umd.min.js +1 -1
- package/bundles/primeng-dynamicdialog.umd.min.js.map +1 -1
- package/bundles/primeng-inputmask.umd.js +5 -2
- package/bundles/primeng-inputmask.umd.js.map +1 -1
- package/bundles/primeng-inputmask.umd.min.js +1 -1
- package/bundles/primeng-inputmask.umd.min.js.map +1 -1
- package/bundles/primeng-inputnumber.umd.js +16 -2
- package/bundles/primeng-inputnumber.umd.js.map +1 -1
- package/bundles/primeng-inputnumber.umd.min.js +1 -1
- package/bundles/primeng-inputnumber.umd.min.js.map +1 -1
- package/bundles/primeng-knob.umd.js +1 -1
- package/bundles/primeng-knob.umd.js.map +1 -1
- package/bundles/primeng-knob.umd.min.js +1 -1
- package/bundles/primeng-knob.umd.min.js.map +1 -1
- package/bundles/primeng-lightbox.umd.js +1 -1
- package/bundles/primeng-lightbox.umd.min.js +1 -1
- package/bundles/primeng-lightbox.umd.min.js.map +1 -1
- package/bundles/primeng-listbox.umd.js +133 -34
- package/bundles/primeng-listbox.umd.js.map +1 -1
- package/bundles/primeng-listbox.umd.min.js +1 -1
- package/bundles/primeng-listbox.umd.min.js.map +1 -1
- package/bundles/primeng-multiselect.umd.js +146 -32
- package/bundles/primeng-multiselect.umd.js.map +1 -1
- package/bundles/primeng-multiselect.umd.min.js +2 -2
- package/bundles/primeng-multiselect.umd.min.js.map +1 -1
- package/bundles/primeng-sidebar.umd.js.map +1 -1
- package/bundles/primeng-sidebar.umd.min.js.map +1 -1
- package/bundles/primeng-slider.umd.js +1 -0
- package/bundles/primeng-slider.umd.js.map +1 -1
- package/bundles/primeng-slider.umd.min.js +1 -1
- package/bundles/primeng-slider.umd.min.js.map +1 -1
- package/bundles/primeng-table.umd.js +117 -16
- package/bundles/primeng-table.umd.js.map +1 -1
- package/bundles/primeng-table.umd.min.js +1 -1
- package/bundles/primeng-table.umd.min.js.map +1 -1
- package/bundles/primeng-tabview.umd.js +25 -3
- package/bundles/primeng-tabview.umd.js.map +1 -1
- package/bundles/primeng-tabview.umd.min.js +1 -1
- package/bundles/primeng-tabview.umd.min.js.map +1 -1
- package/bundles/primeng-treetable.umd.js +1 -1
- package/bundles/primeng-treetable.umd.js.map +1 -1
- package/bundles/primeng-treetable.umd.min.js +1 -1
- package/bundles/primeng-treetable.umd.min.js.map +1 -1
- package/bundles/primeng-virtualscroller.umd.js +3 -2
- package/bundles/primeng-virtualscroller.umd.js.map +1 -1
- package/bundles/primeng-virtualscroller.umd.min.js +1 -1
- package/bundles/primeng-virtualscroller.umd.min.js.map +1 -1
- package/calendar/primeng-calendar.metadata.json +1 -1
- package/cascadeselect/cascadeselect.d.ts +3 -3
- package/cascadeselect/primeng-cascadeselect.metadata.json +1 -1
- package/colorpicker/colorpicker.d.ts +1 -1
- package/confirmdialog/confirmdialog.d.ts +3 -2
- package/confirmdialog/primeng-confirmdialog.metadata.json +1 -1
- package/dialog/primeng-dialog.metadata.json +1 -1
- package/dom/primeng-dom.metadata.json +1 -1
- package/dropdown/primeng-dropdown.metadata.json +1 -1
- package/dynamicdialog/primeng-dynamicdialog.metadata.json +1 -1
- package/esm2015/api/confirmaeventtype.js +7 -0
- package/esm2015/api/filtermatchmode.js +5 -1
- package/esm2015/api/filterservice.js +39 -3
- package/esm2015/api/primengconfig.js +9 -5
- package/esm2015/api/public_api.js +2 -1
- package/esm2015/api/translation.js +1 -1
- package/esm2015/autocomplete/autocomplete.js +105 -22
- package/esm2015/avatar/avatar.js +1 -1
- package/esm2015/calendar/calendar.js +7 -1
- package/esm2015/cascadeselect/cascadeselect.js +9 -6
- package/esm2015/colorpicker/colorpicker.js +1 -1
- package/esm2015/confirmdialog/confirmdialog.js +14 -11
- package/esm2015/contextmenu/contextmenu.js +3 -3
- package/esm2015/dialog/dialog.js +1 -1
- package/esm2015/dom/domhandler.js +4 -1
- package/esm2015/dropdown/dropdown.js +2 -2
- package/esm2015/dynamicdialog/dynamicdialog.js +1 -1
- package/esm2015/inputmask/inputmask.js +6 -3
- package/esm2015/inputnumber/inputnumber.js +13 -3
- package/esm2015/knob/knob.js +2 -2
- package/esm2015/lightbox/lightbox.js +1 -1
- package/esm2015/listbox/listbox.js +134 -42
- package/esm2015/multiselect/multiselect.js +149 -42
- package/esm2015/sidebar/sidebar.js +1 -1
- package/esm2015/slider/slider.js +2 -1
- package/esm2015/table/table.js +127 -17
- package/esm2015/tabview/tabview.js +18 -4
- package/esm2015/treetable/treetable.js +2 -2
- package/esm2015/virtualscroller/virtualscroller.js +4 -3
- package/fesm2015/primeng-api.js +58 -7
- package/fesm2015/primeng-api.js.map +1 -1
- package/fesm2015/primeng-autocomplete.js +104 -21
- package/fesm2015/primeng-autocomplete.js.map +1 -1
- package/fesm2015/primeng-avatar.js +1 -1
- package/fesm2015/primeng-calendar.js +6 -0
- package/fesm2015/primeng-calendar.js.map +1 -1
- package/fesm2015/primeng-cascadeselect.js +8 -5
- package/fesm2015/primeng-cascadeselect.js.map +1 -1
- package/fesm2015/primeng-colorpicker.js.map +1 -1
- package/fesm2015/primeng-confirmdialog.js +13 -10
- package/fesm2015/primeng-confirmdialog.js.map +1 -1
- package/fesm2015/primeng-contextmenu.js +2 -2
- package/fesm2015/primeng-contextmenu.js.map +1 -1
- package/fesm2015/primeng-dialog.js +1 -1
- package/fesm2015/primeng-dom.js +3 -0
- package/fesm2015/primeng-dom.js.map +1 -1
- package/fesm2015/primeng-dropdown.js +1 -1
- package/fesm2015/primeng-dropdown.js.map +1 -1
- package/fesm2015/primeng-dynamicdialog.js +1 -1
- package/fesm2015/primeng-inputmask.js +5 -2
- package/fesm2015/primeng-inputmask.js.map +1 -1
- package/fesm2015/primeng-inputnumber.js +12 -2
- package/fesm2015/primeng-inputnumber.js.map +1 -1
- package/fesm2015/primeng-knob.js +1 -1
- package/fesm2015/primeng-knob.js.map +1 -1
- package/fesm2015/primeng-lightbox.js +1 -1
- package/fesm2015/primeng-listbox.js +133 -41
- package/fesm2015/primeng-listbox.js.map +1 -1
- package/fesm2015/primeng-multiselect.js +148 -41
- package/fesm2015/primeng-multiselect.js.map +1 -1
- package/fesm2015/primeng-sidebar.js.map +1 -1
- package/fesm2015/primeng-slider.js +1 -0
- package/fesm2015/primeng-slider.js.map +1 -1
- package/fesm2015/primeng-table.js +126 -16
- package/fesm2015/primeng-table.js.map +1 -1
- package/fesm2015/primeng-tabview.js +17 -3
- package/fesm2015/primeng-tabview.js.map +1 -1
- package/fesm2015/primeng-treetable.js +1 -1
- package/fesm2015/primeng-treetable.js.map +1 -1
- package/fesm2015/primeng-virtualscroller.js +3 -2
- package/fesm2015/primeng-virtualscroller.js.map +1 -1
- package/inputmask/inputmask.d.ts +2 -1
- package/inputmask/primeng-inputmask.metadata.json +1 -1
- package/inputnumber/inputnumber.d.ts +3 -1
- package/inputnumber/primeng-inputnumber.metadata.json +1 -1
- package/knob/primeng-knob.metadata.json +1 -1
- package/lightbox/primeng-lightbox.metadata.json +1 -1
- package/listbox/listbox.d.ts +7 -1
- package/listbox/primeng-listbox.metadata.json +1 -1
- package/multiselect/multiselect.d.ts +8 -1
- package/multiselect/primeng-multiselect.metadata.json +1 -1
- package/package.json +1 -1
- package/resources/components/avatar/avatar.css +3 -2
- package/resources/components/dialog/dialog.css +2 -0
- package/resources/components/virtualscroller/virtualscroller.css +2 -16
- package/resources/themes/arya-blue/theme.css +26 -38
- package/resources/themes/arya-green/theme.css +26 -38
- package/resources/themes/arya-orange/theme.css +26 -38
- package/resources/themes/arya-purple/theme.css +26 -38
- package/resources/themes/bootstrap4-dark-blue/theme.css +26 -38
- package/resources/themes/bootstrap4-dark-purple/theme.css +26 -38
- package/resources/themes/bootstrap4-light-blue/theme.css +26 -38
- package/resources/themes/bootstrap4-light-purple/theme.css +26 -38
- package/resources/themes/fluent-light/theme.css +26 -38
- package/resources/themes/luna-amber/theme.css +26 -38
- package/resources/themes/luna-blue/theme.css +26 -38
- package/resources/themes/luna-green/theme.css +26 -38
- package/resources/themes/luna-pink/theme.css +26 -38
- package/resources/themes/md-dark-deeppurple/theme.css +89 -69
- package/resources/themes/md-dark-indigo/theme.css +89 -69
- package/resources/themes/md-light-deeppurple/theme.css +293 -273
- package/resources/themes/md-light-indigo/theme.css +293 -273
- package/resources/themes/mdc-dark-deeppurple/theme.css +89 -69
- package/resources/themes/mdc-dark-indigo/theme.css +89 -69
- package/resources/themes/mdc-light-deeppurple/theme.css +293 -273
- package/resources/themes/mdc-light-indigo/theme.css +293 -273
- package/resources/themes/nova/theme.css +26 -38
- package/resources/themes/nova-accent/theme.css +26 -38
- package/resources/themes/nova-alt/theme.css +26 -38
- package/resources/themes/rhea/theme.css +26 -38
- package/resources/themes/saga-blue/theme.css +26 -38
- package/resources/themes/saga-green/theme.css +26 -38
- package/resources/themes/saga-orange/theme.css +26 -38
- package/resources/themes/saga-purple/theme.css +26 -38
- package/resources/themes/vela-blue/theme.css +26 -38
- package/resources/themes/vela-green/theme.css +26 -38
- package/resources/themes/vela-orange/theme.css +26 -38
- package/resources/themes/vela-purple/theme.css +26 -38
- package/sidebar/sidebar.d.ts +1 -1
- package/slider/primeng-slider.metadata.json +1 -1
- package/table/primeng-table.metadata.json +1 -1
- package/table/table.d.ts +12 -0
- package/tabview/primeng-tabview.metadata.json +1 -1
- package/tabview/tabview.d.ts +6 -2
- package/treetable/primeng-treetable.metadata.json +1 -1
- package/virtualscroller/primeng-virtualscroller.metadata.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/components/inputnumber/inputnumber.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","INPUTNUMBER_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","InputNumber","multi","el","cd","this","showButtons","format","buttonLayout","incrementButtonIcon","decrementButtonIcon","step","onInput","EventEmitter","onFocus","onBlur","onKeyDown","onModelChange","onModelTouched","groupChar","prefixChar","suffixChar","_modeOption","_useGroupingOption","defineProperty","prototype","_localeOption","localeOption","updateConstructParser","_localeMatcherOption","localeMatcherOption","modeOption","_currencyOption","currencyOption","_currencyDisplayOption","currencyDisplayOption","useGroupingOption","_minFractionDigitsOption","minFractionDigitsOption","_maxFractionDigitsOption","maxFractionDigitsOption","_prefixOption","prefixOption","_suffixOption","suffixOption","ngOnInit","constructParser","initialized","getOptions","localeMatcher","style","mode","currency","currencyDisplay","useGrouping","minimumFractionDigits","minFractionDigits","maximumFractionDigits","maxFractionDigits","numberFormat","Intl","NumberFormat","locale","numerals","arguments","length","concat","__spread","reverse","index","Map","map","d","_numeral","RegExp","join","_decimal","getDecimalExpression","_group","getGroupingExpression","_minusSign","getMinusSignExpression","_currency","getCurrencyExpression","_suffix","getSuffixExpression","_prefix","getPrefixExpression","_index","get","escapeRegExp","text","replace","formatter","trim","charAt","prefix","split","suffix","formatValue","formattedValue","toString","parseValue","filteredText","parsedValue","isNaN","repeat","event","interval","dir","_this","clearTimer","timer","setTimeout","spin","currentValue","input","nativeElement","newValue","validateValue","maxlength","updateInput","updateModel","handleOnInput","onUpButtonMouseDown","focus","preventDefault","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyDown","keyCode","onUpButtonKeyUp","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","onUserInput","isSpecialChar","target","lastValue","onInputKeyDown","shiftKey","altKey","selectionStart","selectionEnd","inputValue","newValueStr","which","isNumeralChar","setAttribute","deleteChar","decimalCharIndex","search","lastIndex","test","slice","setSelectionRange","updateValue","deleteRange","emit","onInputKeyPress","code","char","String","fromCharCode","isDecimalSign","isMinusSign","insert","onPaste","data","clipboardData","window","getData","filteredData","sign","minusCharIndex","insertText","resolvedOptions","operation","start","end","initCursor","valueLength","onInputClick","resetRegex","valueStr","insertedValueStr","isValueChanged","originalEvent","min","max","currentLength","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","onInputFocus","focused","onInputBlur","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","val","disabled","clearInterval","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","providers","encapsulation","ViewEncapsulation","None","host","[class.p-inputwrapper-filled]","[class.p-inputwrapper-focus]","ElementRef","ChangeDetectorRef","Input","ViewChild","Output","NgModule","imports","CommonModule","InputTextModule","ButtonModule","exports","declarations"],"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 __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 (_) 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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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: n === \"return\" } : 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\nimport {NgModule,Component,ChangeDetectionStrategy, Input, ElementRef, ViewChild, OnInit, EventEmitter, Output, forwardRef, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumber),\n multi: true\n};\n@Component({\n selector: 'p-inputNumber',\n template: `\n <span [ngClass]=\"{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}\"\n [ngStyle]=\"style\" [class]=\"styleClass\">\n <input #input [ngClass]=\"'p-inputnumber-input'\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" pInputText [value]=\"formattedValue()\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\" [attr.id]=\"inputId\"\n [attr.size]=\"size\" [attr.name]=\"name\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [attr.required]=\"required\" [attr.aria-valumin]=\"min\" [attr.aria-valuemax]=\"max\"\n (input)=\"onUserInput($event)\" (keydown)=\"onInputKeyDown($event)\" (keypress)=\"onInputKeyPress($event)\" (paste)=\"onPaste($event)\" (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n <span class=\"p-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\">\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" [disabled]=\"disabled\"\n (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" [disabled]=\"disabled\"\n (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n </span>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [INPUTNUMBER_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./inputnumber.css'],\n host: {\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused'\n }\n})\nexport class InputNumber implements OnInit,ControlValueAccessor {\n\n @Input() showButtons: boolean = false;\n\n @Input() format: boolean = true;\n\n @Input() buttonLayout: string = \"stacked\";\n\n @Input() disabled: boolean;\n\n @Input() inputId: string;\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() placeholder: string;\n\n @Input() size: number;\n\n @Input() maxlength: number;\n\n @Input() tabindex: string;\n\n @Input() title: string;\n\n @Input() ariaLabel: string;\n\n @Input() ariaRequired: boolean;\n\n @Input() name: string;\n\n @Input() required: boolean;\n\n @Input() autocomplete: string;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() incrementButtonClass: string;\n\n @Input() decrementButtonClass: string;\n\n @Input() incrementButtonIcon: string = 'pi pi-angle-up';\n\n @Input() decrementButtonIcon: string = 'pi pi-angle-down';\n\n @Input() step: number = 1;\n\n @Input() inputStyle: any;\n\n @Input() inputStyleClass: string;\n\n @ViewChild('input') input: ElementRef;\n\n @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n @Output() onKeyDown: EventEmitter<any> = new EventEmitter();\n\n value: number;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n focused: boolean;\n\n initialized: boolean;\n\n groupChar: string = '';\n\n prefixChar: string = '';\n\n suffixChar: string = '';\n\n isSpecialChar: boolean;\n\n timer: any;\n\n lastValue: string;\n\n _numeral: any;\n\n numberFormat: any;\n\n _decimal: any;\n\n _group: any;\n\n _minusSign: any;\n\n _currency: any;\n\n _prefix: any;\n\n _suffix: any;\n\n _index: any;\n\n _localeOption: string;\n\n _localeMatcherOption: string;\n\n _modeOption: string = \"decimal\";\n\n _currencyOption: string;\n\n _currencyDisplayOption: string;\n\n _useGroupingOption: boolean = true;\n\n _minFractionDigitsOption: number;\n\n _maxFractionDigitsOption: number;\n\n _prefixOption: string;\n\n _suffixOption: string;\n\n @Input() get locale(): string {\n return this._localeOption;\n }\n\n set locale(localeOption: string) {\n this._localeOption = localeOption;\n this.updateConstructParser();\n }\n\n @Input() get localeMatcher(): string {\n return this._localeMatcherOption;\n }\n\n set localeMatcher(localeMatcherOption: string) {\n this._localeMatcherOption = localeMatcherOption;\n this.updateConstructParser();\n }\n\n @Input() get mode(): string {\n return this._modeOption;\n }\n\n set mode(modeOption: string) {\n this._modeOption = modeOption;\n this.updateConstructParser();\n }\n\n @Input() get currency(): string {\n return this._currencyOption;\n }\n\n set currency(currencyOption: string) {\n this._currencyOption = currencyOption;\n this.updateConstructParser();\n }\n\n @Input() get currencyDisplay(): string {\n return this._currencyDisplayOption;\n }\n\n set currencyDisplay(currencyDisplayOption: string) {\n this._currencyDisplayOption = currencyDisplayOption;\n this.updateConstructParser();\n }\n\n @Input() get useGrouping(): boolean {\n return this._useGroupingOption;\n }\n\n set useGrouping(useGroupingOption: boolean) {\n this._useGroupingOption = useGroupingOption;\n this.updateConstructParser();\n }\n\n @Input() get minFractionDigits(): number {\n return this._minFractionDigitsOption;\n }\n\n set minFractionDigits(minFractionDigitsOption: number) {\n this._minFractionDigitsOption = minFractionDigitsOption;\n this.updateConstructParser();\n }\n\n @Input() get maxFractionDigits(): number {\n return this._maxFractionDigitsOption;\n }\n\n set maxFractionDigits(maxFractionDigitsOption: number) {\n this._maxFractionDigitsOption = maxFractionDigitsOption;\n this.updateConstructParser();\n }\n\n @Input() get prefix(): string {\n return this._prefixOption;\n }\n\n set prefix(prefixOption: string) {\n this._prefixOption = prefixOption;\n this.updateConstructParser();\n }\n\n @Input() get suffix(): string {\n return this._suffixOption;\n }\n\n set suffix(suffixOption: string) {\n this._suffixOption = suffixOption;\n this.updateConstructParser();\n }\n\n constructor(public el: ElementRef, private cd: ChangeDetectorRef) { }\n\n ngOnInit() {\n this.constructParser();\n\n this.initialized = true;\n }\n\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits\n };\n }\n\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, {useGrouping: false}).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._decimal = this.getDecimalExpression();\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = d => index.get(d);\n }\n\n updateConstructParser() {\n if (this.initialized) {\n this.constructParser();\n }\n }\n\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n return new RegExp(`[${formatter.format(1.1).trim().replace(this._numeral, '')}]`, 'g');\n }\n\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: true});\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n return new RegExp(`[${this.groupChar}]`, 'g');\n }\n\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n }\n\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, {style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay});\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._decimal, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`,'g');\n }\n\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay});\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar||'')}`, 'g');\n }\n\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,\n minimumFractionDigits: 0, maximumFractionDigits: 0});\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar||'')}`, 'g');\n }\n\n formatValue(value) {\n if (value != null) {\n if (value === '-') { // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n }\n\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-') // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n }\n\n repeat(event, interval, dir) {\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n }\n\n spin(event, dir) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n return;\n }\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n\n onUpButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n\n onUpButtonMouseUp() {\n this.clearTimer();\n }\n\n onUpButtonMouseLeave() {\n this.clearTimer();\n }\n\n onUpButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, 1);\n }\n }\n\n onUpButtonKeyUp() {\n this.clearTimer();\n }\n\n onDownButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n\n onDownButtonMouseUp() {\n this.clearTimer();\n }\n\n onDownButtonMouseLeave() {\n this.clearTimer();\n }\n\n onDownButtonKeyUp() {\n this.clearTimer();\n }\n\n onDownButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, -1);\n }\n }\n\n onUserInput(event) {\n if (this.isSpecialChar) {\n event.target.value = this.lastValue;\n }\n this.isSpecialChar = false;\n }\n\n onInputKeyDown(event) {\n this.lastValue = event.target.value;\n if (event.shiftKey || event.altKey) {\n this.isSpecialChar = true;\n return;\n }\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n if (event.altKey) {\n event.preventDefault();\n }\n\n switch (event.which) {\n //up\n case 38:\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n //down\n case 40:\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n //left\n case 37:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n break;\n\n //right\n case 39:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n break;\n\n //enter\n case 13:\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n break;\n\n //backspace\n case 8: {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n let deleteChar = inputValue.charAt(selectionStart - 1);\n let decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n\n if (this.isNumeralChar(deleteChar)) {\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n }\n else if (decimalCharIndex > 0 && decimalCharIndex === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n // del\n case 46:\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n let deleteChar = inputValue.charAt(selectionStart);\n let decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n\n if (this.isNumeralChar(deleteChar)) {\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n }\n else if (decimalCharIndex > 0 && decimalCharIndex === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n\n default:\n break;\n }\n\n this.onKeyDown.emit(event);\n }\n\n onInputKeyPress(event) {\n event.preventDefault();\n let code = event.which || event.keyCode;\n let char = String.fromCharCode(code);\n const isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n }\n\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n if (data) {\n let filteredData = this.parseValue(data);\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n }\n\n isMinusSign(char) {\n if (this._minusSign.test(char)) {\n this._minusSign.lastIndex = 0;\n return true;\n }\n\n return false;\n }\n\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n return true;\n }\n\n return false;\n }\n\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n let inputValue = this.input.nativeElement.value.trim();\n const decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n const minusCharIndex = inputValue.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n }\n else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n }\n\n insertText(value, text, start, end) {\n let textSplit = text.split('.');\n\n if (textSplit.length == 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n this._decimal.lastIndex = 0;\n return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));\n }\n else if ((end - start) === value.length) {\n return this.formatValue(text);\n }\n else if (start === 0) {\n return text + value.slice(end);\n }\n else if (end === value.length) {\n return value.slice(0, start) + text;\n }\n else {\n return value.slice(0, start) + text + value.slice(end);\n }\n }\n\n deleteRange(value, start, end) {\n let newValueStr;\n\n if ((end - start) === value.length)\n newValueStr = '';\n else if (start === 0)\n newValueStr = value.slice(end);\n else if (end === value.length)\n newValueStr = value.slice(0, start);\n else\n newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n }\n\n initCursor() {\n let selectionStart = this.input.nativeElement.selectionStart;\n let inputValue = this.input.nativeElement.value;\n let valueLength = inputValue.length;\n let index = null;\n\n let char = inputValue.charAt(selectionStart);\n if (this.isNumeralChar(char)) {\n return;\n }\n\n //left\n let i = selectionStart - 1;\n while (i >= 0) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i;\n break;\n }\n else {\n i--;\n }\n }\n\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n }\n else {\n i = selectionStart + 1;\n while (i < valueLength) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i;\n break;\n }\n else {\n i++;\n }\n }\n\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index, index);\n }\n }\n }\n\n onInputClick() {\n this.initCursor();\n }\n\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n return true;\n }\n\n return false;\n }\n\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n }\n\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.input.nativeElement.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n this.updateInput(newValue, insertedValueStr, operation);\n }\n\n this.handleOnInput(event, currentValue, newValue);\n }\n\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.onInput.emit({ originalEvent: event, value: newValue });\n }\n }\n\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n }\n\n validateValue(value) {\n if (this.min !== null && value < this.min) {\n return this.min;\n }\n\n if (this.max !== null && value > this.max) {\n return this.max;\n }\n\n if (value === '-') { // Minus sign\n return null;\n }\n\n return value;\n }\n\n updateInput(value, insertedValueStr, operation) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.input.nativeElement.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (currentLength === 0) {\n this.input.nativeElement.value = newValue;\n this.input.nativeElement.setSelectionRange(0, 0);\n this.initCursor();\n const prefixLength = (this.prefixChar || '').length;\n const selectionEnd = prefixLength + insertedValueStr.length;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n if (this.maxlength && this.maxlength < newValue.length) {\n return;\n }\n\n this.input.nativeElement.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single')\n this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n else if (operation === 'delete-single')\n this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n else if (operation === 'delete-range' || operation === 'spin')\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n }\n else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += (-1 * diff) + 1;\n }\n\n this._group.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.input.nativeElement.setAttribute('aria-valuenow', value);\n }\n\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n\n onInputBlur(event) {\n this.focused = false;\n\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n this.onBlur.emit(event);\n }\n\n formattedValue() {\n return this.formatValue(this.value);\n }\n\n updateModel(event, value) {\n if (this.value !== value) {\n this.value = value;\n this.onModelChange(value);\n }\n\n this.onModelTouched();\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n get filled() {\n return (this.value != null && this.value.toString().length > 0)\n }\n\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule,InputTextModule, ButtonModule],\n exports: [InputNumber],\n declarations: [InputNumber]\n})\nexport class InputNumberModule { }\n"]}
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/app/components/inputnumber/inputnumber.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","INPUTNUMBER_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","InputNumber","multi","el","cd","this","showButtons","format","buttonLayout","incrementButtonIcon","decrementButtonIcon","step","onInput","EventEmitter","onFocus","onBlur","onKeyDown","onModelChange","onModelTouched","groupChar","prefixChar","suffixChar","_modeOption","_useGroupingOption","defineProperty","prototype","_localeOption","localeOption","updateConstructParser","_localeMatcherOption","localeMatcherOption","modeOption","_currencyOption","currencyOption","_currencyDisplayOption","currencyDisplayOption","useGroupingOption","_minFractionDigitsOption","minFractionDigitsOption","_maxFractionDigitsOption","maxFractionDigitsOption","_prefixOption","prefixOption","_suffixOption","suffixOption","_disabled","disabled","focused","timer","clearTimer","ngOnInit","constructParser","initialized","getOptions","localeMatcher","style","mode","currency","currencyDisplay","useGrouping","minimumFractionDigits","minFractionDigits","maximumFractionDigits","maxFractionDigits","numberFormat","Intl","NumberFormat","locale","numerals","arguments","length","concat","__spread","reverse","index","Map","map","d","_numeral","RegExp","join","_decimal","getDecimalExpression","_group","getGroupingExpression","_minusSign","getMinusSignExpression","_currency","getCurrencyExpression","_suffix","getSuffixExpression","_prefix","getPrefixExpression","_index","get","escapeRegExp","text","replace","formatter","trim","charAt","prefix","split","suffix","formatValue","formattedValue","toString","parseValue","filteredText","parsedValue","isNaN","repeat","event","interval","dir","_this","setTimeout","spin","currentValue","input","nativeElement","newValue","validateValue","maxlength","updateInput","updateModel","handleOnInput","onUpButtonMouseDown","focus","preventDefault","onUpButtonMouseUp","onUpButtonMouseLeave","onUpButtonKeyDown","keyCode","onUpButtonKeyUp","onDownButtonMouseDown","onDownButtonMouseUp","onDownButtonMouseLeave","onDownButtonKeyUp","onDownButtonKeyDown","onUserInput","isSpecialChar","target","lastValue","onInputKeyDown","shiftKey","altKey","selectionStart","selectionEnd","inputValue","newValueStr","which","isNumeralChar","setAttribute","deleteChar","decimalCharIndex","search","lastIndex","test","slice","setSelectionRange","updateValue","deleteRange","emit","onInputKeyPress","code","char","String","fromCharCode","isDecimalSign","isMinusSign","insert","onPaste","data","clipboardData","window","getData","filteredData","sign","minusCharIndex","insertText","resolvedOptions","operation","start","end","initCursor","valueLength","onInputClick","resetRegex","valueStr","insertedValueStr","isValueChanged","originalEvent","min","max","currentLength","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","onInputFocus","onInputBlur","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","val","clearInterval","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","providers","encapsulation","ViewEncapsulation","None","host","[class.p-inputwrapper-filled]","[class.p-inputwrapper-focus]","ElementRef","ChangeDetectorRef","Input","ViewChild","Output","NgModule","imports","CommonModule","InputTextModule","ButtonModule","exports","declarations"],"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 __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 (_) 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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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: n === \"return\" } : 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\nimport {NgModule,Component,ChangeDetectionStrategy, Input, ElementRef, ViewChild, OnInit, EventEmitter, Output, forwardRef, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport const INPUTNUMBER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputNumber),\n multi: true\n};\n@Component({\n selector: 'p-inputNumber',\n template: `\n <span [ngClass]=\"{'p-inputnumber p-component': true,'p-inputnumber-buttons-stacked': this.showButtons && this.buttonLayout === 'stacked',\n 'p-inputnumber-buttons-horizontal': this.showButtons && this.buttonLayout === 'horizontal', 'p-inputnumber-buttons-vertical': this.showButtons && this.buttonLayout === 'vertical'}\"\n [ngStyle]=\"style\" [class]=\"styleClass\">\n <input #input [ngClass]=\"'p-inputnumber-input'\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" pInputText [value]=\"formattedValue()\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\" [attr.id]=\"inputId\"\n [attr.size]=\"size\" [attr.name]=\"name\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [attr.required]=\"required\" [attr.aria-valumin]=\"min\" [attr.aria-valuemax]=\"max\"\n (input)=\"onUserInput($event)\" (keydown)=\"onInputKeyDown($event)\" (keypress)=\"onInputKeyPress($event)\" (paste)=\"onPaste($event)\" (click)=\"onInputClick()\"\n (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n <span class=\"p-inputnumber-button-group\" *ngIf=\"showButtons && buttonLayout === 'stacked'\">\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" [disabled]=\"disabled\"\n (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" [disabled]=\"disabled\"\n (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n </span>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-up': true}\" [class]=\"incrementButtonClass\" [icon]=\"incrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n (mousedown)=\"this.onUpButtonMouseDown($event)\" (mouseup)=\"onUpButtonMouseUp()\" (mouseleave)=\"onUpButtonMouseLeave()\" (keydown)=\"onUpButtonKeyDown($event)\" (keyup)=\"onUpButtonKeyUp()\"></button>\n <button type=\"button\" pButton [ngClass]=\"{'p-inputnumber-button p-inputnumber-button-down': true}\" [class]=\"decrementButtonClass\" [icon]=\"decrementButtonIcon\" *ngIf=\"showButtons && buttonLayout !== 'stacked'\" [disabled]=\"disabled\"\n (mousedown)=\"this.onDownButtonMouseDown($event)\" (mouseup)=\"onDownButtonMouseUp()\" (mouseleave)=\"onDownButtonMouseLeave()\" (keydown)=\"onDownButtonKeyDown($event)\" (keyup)=\"onDownButtonKeyUp()\"></button>\n </span>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [INPUTNUMBER_VALUE_ACCESSOR],\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./inputnumber.css'],\n host: {\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focused'\n }\n})\nexport class InputNumber implements OnInit,ControlValueAccessor {\n\n @Input() showButtons: boolean = false;\n\n @Input() format: boolean = true;\n\n @Input() buttonLayout: string = \"stacked\";\n\n @Input() inputId: string;\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() placeholder: string;\n\n @Input() size: number;\n\n @Input() maxlength: number;\n\n @Input() tabindex: string;\n\n @Input() title: string;\n\n @Input() ariaLabel: string;\n\n @Input() ariaRequired: boolean;\n\n @Input() name: string;\n\n @Input() required: boolean;\n\n @Input() autocomplete: string;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() incrementButtonClass: string;\n\n @Input() decrementButtonClass: string;\n\n @Input() incrementButtonIcon: string = 'pi pi-angle-up';\n\n @Input() decrementButtonIcon: string = 'pi pi-angle-down';\n\n @Input() step: number = 1;\n\n @Input() inputStyle: any;\n\n @Input() inputStyleClass: string;\n\n @ViewChild('input') input: ElementRef;\n\n @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n @Output() onKeyDown: EventEmitter<any> = new EventEmitter();\n\n value: number;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n focused: boolean;\n\n initialized: boolean;\n\n groupChar: string = '';\n\n prefixChar: string = '';\n\n suffixChar: string = '';\n\n isSpecialChar: boolean;\n\n timer: any;\n\n lastValue: string;\n\n _numeral: any;\n\n numberFormat: any;\n\n _decimal: any;\n\n _group: any;\n\n _minusSign: any;\n\n _currency: any;\n\n _prefix: any;\n\n _suffix: any;\n\n _index: any;\n\n _localeOption: string;\n\n _localeMatcherOption: string;\n\n _modeOption: string = \"decimal\";\n\n _currencyOption: string;\n\n _currencyDisplayOption: string;\n\n _useGroupingOption: boolean = true;\n\n _minFractionDigitsOption: number;\n\n _maxFractionDigitsOption: number;\n\n _prefixOption: string;\n\n _suffixOption: string;\n\n _disabled: boolean;\n\n @Input() get locale(): string {\n return this._localeOption;\n }\n\n set locale(localeOption: string) {\n this._localeOption = localeOption;\n this.updateConstructParser();\n }\n\n @Input() get localeMatcher(): string {\n return this._localeMatcherOption;\n }\n\n set localeMatcher(localeMatcherOption: string) {\n this._localeMatcherOption = localeMatcherOption;\n this.updateConstructParser();\n }\n\n @Input() get mode(): string {\n return this._modeOption;\n }\n\n set mode(modeOption: string) {\n this._modeOption = modeOption;\n this.updateConstructParser();\n }\n\n @Input() get currency(): string {\n return this._currencyOption;\n }\n\n set currency(currencyOption: string) {\n this._currencyOption = currencyOption;\n this.updateConstructParser();\n }\n\n @Input() get currencyDisplay(): string {\n return this._currencyDisplayOption;\n }\n\n set currencyDisplay(currencyDisplayOption: string) {\n this._currencyDisplayOption = currencyDisplayOption;\n this.updateConstructParser();\n }\n\n @Input() get useGrouping(): boolean {\n return this._useGroupingOption;\n }\n\n set useGrouping(useGroupingOption: boolean) {\n this._useGroupingOption = useGroupingOption;\n this.updateConstructParser();\n }\n\n @Input() get minFractionDigits(): number {\n return this._minFractionDigitsOption;\n }\n\n set minFractionDigits(minFractionDigitsOption: number) {\n this._minFractionDigitsOption = minFractionDigitsOption;\n this.updateConstructParser();\n }\n\n @Input() get maxFractionDigits(): number {\n return this._maxFractionDigitsOption;\n }\n\n set maxFractionDigits(maxFractionDigitsOption: number) {\n this._maxFractionDigitsOption = maxFractionDigitsOption;\n this.updateConstructParser();\n }\n\n @Input() get prefix(): string {\n return this._prefixOption;\n }\n\n set prefix(prefixOption: string) {\n this._prefixOption = prefixOption;\n this.updateConstructParser();\n }\n\n @Input() get suffix(): string {\n return this._suffixOption;\n }\n\n set suffix(suffixOption: string) {\n this._suffixOption = suffixOption;\n this.updateConstructParser();\n }\n\n\n @Input() get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(disabled: boolean) {\n if (disabled)\n this.focused = false;\n\n this._disabled = disabled;\n \n if (this.timer)\n this.clearTimer();\n }\n\n constructor(public el: ElementRef, private cd: ChangeDetectorRef) { }\n\n ngOnInit() {\n this.constructParser();\n\n this.initialized = true;\n }\n\n getOptions() {\n return {\n localeMatcher: this.localeMatcher,\n style: this.mode,\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n minimumFractionDigits: this.minFractionDigits,\n maximumFractionDigits: this.maxFractionDigits\n };\n }\n\n constructParser() {\n this.numberFormat = new Intl.NumberFormat(this.locale, this.getOptions());\n const numerals = [...new Intl.NumberFormat(this.locale, {useGrouping: false}).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n this._numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n this._decimal = this.getDecimalExpression();\n this._group = this.getGroupingExpression();\n this._minusSign = this.getMinusSignExpression();\n this._currency = this.getCurrencyExpression();\n this._suffix = this.getSuffixExpression();\n this._prefix = this.getPrefixExpression();\n this._index = d => index.get(d);\n }\n\n updateConstructParser() {\n if (this.initialized) {\n this.constructParser();\n }\n }\n\n escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n getDecimalExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n return new RegExp(`[${formatter.format(1.1).trim().replace(this._numeral, '')}]`, 'g');\n }\n\n getGroupingExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: true});\n this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);\n return new RegExp(`[${this.groupChar}]`, 'g');\n }\n\n getMinusSignExpression() {\n const formatter = new Intl.NumberFormat(this.locale, {useGrouping: false});\n return new RegExp(`[${formatter.format(-1).trim().replace(this._numeral, '')}]`, 'g');\n }\n\n getCurrencyExpression() {\n if (this.currency) {\n const formatter = new Intl.NumberFormat(this.locale, {style: 'currency', currency: this.currency, currencyDisplay: this.currencyDisplay});\n return new RegExp(`[${formatter.format(1).replace(/\\s/g, '').replace(this._numeral, '').replace(this._decimal, '').replace(this._group, '')}]`, 'g');\n }\n\n return new RegExp(`[]`,'g');\n }\n\n getPrefixExpression() {\n if (this.prefix) {\n this.prefixChar = this.prefix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay});\n this.prefixChar = formatter.format(1).split('1')[0];\n }\n\n return new RegExp(`${this.escapeRegExp(this.prefixChar||'')}`, 'g');\n }\n\n getSuffixExpression() {\n if (this.suffix) {\n this.suffixChar = this.suffix;\n }\n else {\n const formatter = new Intl.NumberFormat(this.locale, {style: this.mode, currency: this.currency, currencyDisplay: this.currencyDisplay,\n minimumFractionDigits: 0, maximumFractionDigits: 0});\n this.suffixChar = formatter.format(1).split('1')[1];\n }\n\n return new RegExp(`${this.escapeRegExp(this.suffixChar||'')}`, 'g');\n }\n\n formatValue(value) {\n if (value != null) {\n if (value === '-') { // Minus sign\n return value;\n }\n\n if (this.format) {\n let formatter = new Intl.NumberFormat(this.locale, this.getOptions());\n let formattedValue = formatter.format(value);\n if (this.prefix) {\n formattedValue = this.prefix + formattedValue;\n }\n\n if (this.suffix) {\n formattedValue = formattedValue + this.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n }\n\n parseValue(text) {\n let filteredText = text\n .replace(this._suffix, '')\n .replace(this._prefix, '')\n .trim()\n .replace(/\\s/g, '')\n .replace(this._currency, '')\n .replace(this._group, '')\n .replace(this._minusSign, '-')\n .replace(this._decimal, '.')\n .replace(this._numeral, this._index);\n\n if (filteredText) {\n if (filteredText === '-') // Minus sign\n return filteredText;\n\n let parsedValue = +filteredText;\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n }\n\n repeat(event, interval, dir) {\n let i = interval || 500;\n\n this.clearTimer();\n this.timer = setTimeout(() => {\n this.repeat(event, 40, dir);\n }, i);\n\n this.spin(event, dir);\n }\n\n spin(event, dir) {\n let step = this.step * dir;\n let currentValue = this.parseValue(this.input.nativeElement.value) || 0;\n let newValue = this.validateValue(currentValue + step);\n if (this.maxlength && this.maxlength < this.formatValue(newValue).length) {\n return;\n }\n\n this.updateInput(newValue, null, 'spin');\n this.updateModel(event, newValue);\n\n this.handleOnInput(event, currentValue, newValue);\n }\n\n onUpButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, 1);\n event.preventDefault();\n }\n\n onUpButtonMouseUp() {\n this.clearTimer();\n }\n\n onUpButtonMouseLeave() {\n this.clearTimer();\n }\n\n onUpButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, 1);\n }\n }\n\n onUpButtonKeyUp() {\n this.clearTimer();\n }\n\n onDownButtonMouseDown(event) {\n this.input.nativeElement.focus();\n this.repeat(event, null, -1);\n event.preventDefault();\n }\n\n onDownButtonMouseUp() {\n this.clearTimer();\n }\n\n onDownButtonMouseLeave() {\n this.clearTimer();\n }\n\n onDownButtonKeyUp() {\n this.clearTimer();\n }\n\n onDownButtonKeyDown(event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.repeat(event, null, -1);\n }\n }\n\n onUserInput(event) {\n if (this.isSpecialChar) {\n event.target.value = this.lastValue;\n }\n this.isSpecialChar = false;\n }\n\n onInputKeyDown(event) {\n this.lastValue = event.target.value;\n if (event.shiftKey || event.altKey) {\n this.isSpecialChar = true;\n return;\n }\n\n let selectionStart = event.target.selectionStart;\n let selectionEnd = event.target.selectionEnd;\n let inputValue = event.target.value;\n let newValueStr = null;\n\n if (event.altKey) {\n event.preventDefault();\n }\n\n switch (event.which) {\n //up\n case 38:\n this.spin(event, 1);\n event.preventDefault();\n break;\n\n //down\n case 40:\n this.spin(event, -1);\n event.preventDefault();\n break;\n\n //left\n case 37:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n break;\n\n //right\n case 39:\n if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n break;\n\n //enter\n case 13:\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n break;\n\n //backspace\n case 8: {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n let deleteChar = inputValue.charAt(selectionStart - 1);\n let decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n\n if (this.isNumeralChar(deleteChar)) {\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionStart - 1, selectionStart - 1);\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n }\n else if (decimalCharIndex > 0 && decimalCharIndex === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n // del\n case 46:\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n let deleteChar = inputValue.charAt(selectionStart);\n let decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n\n if (this.isNumeralChar(deleteChar)) {\n if (this._group.test(deleteChar)) {\n this._group.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n }\n else if (this._decimal.test(deleteChar)) {\n this._decimal.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionStart + 1, selectionStart + 1);\n }\n else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n }\n else if (decimalCharIndex > 0 && decimalCharIndex === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';\n }\n else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n this.updateValue(event, newValueStr, null, 'delete-back-single');\n }\n else {\n newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, null, 'delete-range');\n }\n break;\n\n default:\n break;\n }\n\n this.onKeyDown.emit(event);\n }\n\n onInputKeyPress(event) {\n event.preventDefault();\n let code = event.which || event.keyCode;\n let char = String.fromCharCode(code);\n const isDecimalSign = this.isDecimalSign(char);\n const isMinusSign = this.isMinusSign(char);\n\n if ((48 <= code && code <= 57) || isMinusSign || isDecimalSign) {\n this.insert(event, char, { isDecimalSign, isMinusSign });\n }\n }\n\n onPaste(event) {\n event.preventDefault();\n let data = (event.clipboardData || window['clipboardData']).getData('Text');\n if (data) {\n let filteredData = this.parseValue(data);\n if (filteredData != null) {\n this.insert(event, filteredData.toString());\n }\n }\n }\n\n isMinusSign(char) {\n if (this._minusSign.test(char)) {\n this._minusSign.lastIndex = 0;\n return true;\n }\n\n return false;\n }\n\n isDecimalSign(char) {\n if (this._decimal.test(char)) {\n this._decimal.lastIndex = 0;\n return true;\n }\n\n return false;\n }\n\n insert(event, text, sign = { isDecimalSign: false, isMinusSign: false }) {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n let inputValue = this.input.nativeElement.value.trim();\n const decimalCharIndex = inputValue.search(this._decimal);\n this._decimal.lastIndex = 0;\n const minusCharIndex = inputValue.search(this._minusSign);\n this._minusSign.lastIndex = 0;\n let newValueStr;\n\n if (sign.isMinusSign) {\n if (selectionStart === 0) {\n newValueStr = inputValue;\n if (minusCharIndex === -1 || selectionEnd !== 0) {\n newValueStr = this.insertText(inputValue, text, 0, selectionEnd);\n }\n\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n this.updateValue(event, inputValue, text, 'insert');\n }\n else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, 'insert');\n }\n }\n else {\n const maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if ((selectionStart + text.length - (decimalCharIndex + 1)) <= maxFractionDigits) {\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n else {\n newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);\n this.updateValue(event, newValueStr, text, operation);\n }\n }\n }\n\n insertText(value, text, start, end) {\n let textSplit = text.split('.');\n\n if (textSplit.length == 2) {\n const decimalCharIndex = value.slice(start, end).search(this._decimal);\n this._decimal.lastIndex = 0;\n return (decimalCharIndex > 0) ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : (value || this.formatValue(text));\n }\n else if ((end - start) === value.length) {\n return this.formatValue(text);\n }\n else if (start === 0) {\n return text + value.slice(end);\n }\n else if (end === value.length) {\n return value.slice(0, start) + text;\n }\n else {\n return value.slice(0, start) + text + value.slice(end);\n }\n }\n\n deleteRange(value, start, end) {\n let newValueStr;\n\n if ((end - start) === value.length)\n newValueStr = '';\n else if (start === 0)\n newValueStr = value.slice(end);\n else if (end === value.length)\n newValueStr = value.slice(0, start);\n else\n newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n }\n\n initCursor() {\n let selectionStart = this.input.nativeElement.selectionStart;\n let inputValue = this.input.nativeElement.value;\n let valueLength = inputValue.length;\n let index = null;\n\n let char = inputValue.charAt(selectionStart);\n if (this.isNumeralChar(char)) {\n return;\n }\n\n //left\n let i = selectionStart - 1;\n while (i >= 0) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i;\n break;\n }\n else {\n i--;\n }\n }\n\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index + 1, index + 1);\n }\n else {\n i = selectionStart + 1;\n while (i < valueLength) {\n char = inputValue.charAt(i);\n if (this.isNumeralChar(char)) {\n index = i;\n break;\n }\n else {\n i++;\n }\n }\n\n if (index !== null) {\n this.input.nativeElement.setSelectionRange(index, index);\n }\n }\n }\n\n onInputClick() {\n this.initCursor();\n }\n\n isNumeralChar(char) {\n if (char.length === 1 && (this._numeral.test(char) || this._decimal.test(char) || this._group.test(char) || this._minusSign.test(char))) {\n this.resetRegex();\n return true;\n }\n\n return false;\n }\n\n resetRegex() {\n this._numeral.lastIndex = 0;\n this._decimal.lastIndex = 0;\n this._group.lastIndex = 0;\n this._minusSign.lastIndex = 0;\n }\n\n updateValue(event, valueStr, insertedValueStr, operation) {\n let currentValue = this.input.nativeElement.value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = this.parseValue(valueStr);\n this.updateInput(newValue, insertedValueStr, operation);\n }\n\n this.handleOnInput(event, currentValue, newValue);\n }\n\n handleOnInput(event, currentValue, newValue) {\n if (this.isValueChanged(currentValue, newValue)) {\n this.onInput.emit({ originalEvent: event, value: newValue });\n }\n }\n\n isValueChanged(currentValue, newValue) {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n let parsedCurrentValue = (typeof currentValue === 'string') ? this.parseValue(currentValue) : currentValue;\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n }\n\n validateValue(value) {\n if (this.min !== null && value < this.min) {\n return this.min;\n }\n\n if (this.max !== null && value > this.max) {\n return this.max;\n }\n\n if (value === '-') { // Minus sign\n return null;\n }\n\n return value;\n }\n\n updateInput(value, insertedValueStr, operation) {\n insertedValueStr = insertedValueStr || '';\n\n let inputValue = this.input.nativeElement.value;\n let newValue = this.formatValue(value);\n let currentLength = inputValue.length;\n\n if (currentLength === 0) {\n this.input.nativeElement.value = newValue;\n this.input.nativeElement.setSelectionRange(0, 0);\n this.initCursor();\n const prefixLength = (this.prefixChar || '').length;\n const selectionEnd = prefixLength + insertedValueStr.length;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n let selectionStart = this.input.nativeElement.selectionStart;\n let selectionEnd = this.input.nativeElement.selectionEnd;\n if (this.maxlength && this.maxlength < newValue.length) {\n return;\n }\n\n this.input.nativeElement.value = newValue;\n let newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = this.parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${this.groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${this.groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single')\n this.input.nativeElement.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n else if (operation === 'delete-single')\n this.input.nativeElement.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n else if (operation === 'delete-range' || operation === 'spin')\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else if (operation === 'delete-back-single') {\n let prevChar = inputValue.charAt(selectionEnd - 1);\n let nextChar = inputValue.charAt(selectionEnd);\n let diff = currentLength - newLength;\n let isGroupChar = this._group.test(nextChar);\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n }\n else if (!isGroupChar && this.isNumeralChar(prevChar)) {\n selectionEnd += (-1 * diff) + 1;\n }\n\n this._group.lastIndex = 0;\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n this.input.nativeElement.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n this.input.nativeElement.setAttribute('aria-valuenow', value);\n }\n\n onInputFocus(event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n\n onInputBlur(event) {\n this.focused = false;\n\n let newValue = this.validateValue(this.parseValue(this.input.nativeElement.value));\n this.input.nativeElement.value = this.formatValue(newValue);\n this.input.nativeElement.setAttribute('aria-valuenow', newValue);\n this.updateModel(event, newValue);\n\n this.onBlur.emit(event);\n }\n\n formattedValue() {\n return this.formatValue(this.value);\n }\n\n updateModel(event, value) {\n if (this.value !== value) {\n this.value = value;\n this.onModelChange(value);\n }\n\n this.onModelTouched();\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n get filled() {\n return (this.value != null && this.value.toString().length > 0)\n }\n\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule,InputTextModule, ButtonModule],\n exports: [InputNumber],\n declarations: [InputNumber]\n})\nexport class InputNumberModule { }\n"]}
|
@@ -193,7 +193,7 @@
|
|
193
193
|
Knob.decorators = [
|
194
194
|
{ type: core.Component, args: [{
|
195
195
|
selector: 'p-knob',
|
196
|
-
template: "\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size\" [style.height]=\"size\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n ",
|
196
|
+
template: "\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size + 'px'\" [style.height]=\"size + 'px'\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n ",
|
197
197
|
providers: [KNOB_VALUE_ACCESSOR],
|
198
198
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
199
199
|
encapsulation: core.ViewEncapsulation.None,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"primeng-knob.umd.js","sources":["../../src/app/components/knob/knob.ts","../../src/app/components/knob/primeng-knob.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Knob),\n multi: true\n};\n\n@Component({\n selector: 'p-knob',\n template: `\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size\" [style.height]=\"size\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n `,\n providers: [KNOB_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./knob.css']\n})\nexport class Knob {\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() severity: string;\n\n @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n @Input() valueTemplate: string = \"{value}\";\n\n @Input() name: string;\n\n @Input() size: number = 100;\n\n @Input() step: number = 1;\n\n @Input() min: number = 0;\n\n @Input() max: number = 100;\n\n @Input() strokeWidth: number = 14;\n\n @Input() disabled: boolean;\n\n @Input() showValue: boolean = true;\n\n @Input() readonly: boolean = false;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n radius: number = 40;\n\n midX: number = 50;\n\n midY: number = 50;\n\n minRadians: number = 4 * Math.PI / 3;\n\n maxRadians: number = -Math.PI / 3;\n \n value: number = null;\n\n windowMouseMoveListener: any;\n\n windowMouseUpListener: any;\n\n windowTouchMoveListener: any;\n\n windowTouchEndListener: any;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n mapRange(x, inMin, inMax, outMin, outMax) {\n return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n }\n\n onClick(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n }\n }\n\n updateValue(offsetX, offsetY) {\n let dx = offsetX - this.size / 2;\n let dy = this.size / 2 - offsetY;\n let angle = Math.atan2(dy, dx);\n let start = -Math.PI / 2 - Math.PI / 6;\n this.updateModel(angle, start);\n }\n\n updateModel(angle, start) {\n let mappedValue;\n if (angle > this.maxRadians)\n mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n else if (angle < start)\n mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n else\n return;\n\n let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n this.value = newValue;\n this.onModelChange(this.value);\n this.onChange.emit(this.value);\n }\n\n onMouseDown(event) {\n if (!this.disabled && !this.readonly) {\n this.windowMouseMoveListener = this.onMouseMove.bind(this)\n this.windowMouseUpListener = this.onMouseUp.bind(this)\n window.addEventListener('mousemove', this.windowMouseMoveListener);\n window.addEventListener('mouseup', this.windowMouseUpListener);\n event.preventDefault();\n }\n }\n\n onMouseUp(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('mousemove', this.windowMouseMoveListener);\n window.removeEventListener('mouseup', this.windowMouseUpListener);\n this.windowMouseUpListener = null;\n this.windowMouseMoveListener = null;\n event.preventDefault();\n }\n }\n\n onTouchStart(event) {\n if (!this.disabled && !this.readonly) {\n this.windowTouchMoveListener = this.onTouchMove.bind(this);\n this.windowTouchEndListener = this.onTouchEnd.bind(this);\n window.addEventListener('touchmove', this.windowTouchMoveListener);\n window.addEventListener('touchend', this.windowTouchEndListener);\n event.preventDefault();\n }\n }\n\n onTouchEnd(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('touchmove', this.windowTouchMoveListener);\n window.removeEventListener('touchend', this.windowTouchEndListener);\n this.windowTouchMoveListener = null;\n this.windowTouchEndListener = null;\n event.preventDefault();\n }\n }\n\n onMouseMove(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n event.preventDefault();\n }\n }\n\n onTouchMove(event) {\n if (!this.disabled && !this.readonly && event.touches.length == 1) {\n const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n this.updateValue(offsetX, offsetY);\n }\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n containerClass() {\n return {\n 'p-knob p-component': true,\n 'p-disabled': this.disabled\n };\n }\n\n rangePath() {\n return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n }\n\n valuePath() {\n return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n }\n\n zeroRadians() {\n if (this.min > 0 && this.max > 0)\n return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n else\n return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n valueRadians() {\n return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n minX() {\n return this.midX + Math.cos(this.minRadians) * this.radius;\n }\n\n minY() {\n return this.midY - Math.sin(this.minRadians) * this.radius;\n }\n\n maxX() {\n return this.midX + Math.cos(this.maxRadians) * this.radius;\n }\n\n maxY() {\n return this.midY - Math.sin(this.maxRadians) * this.radius;\n }\n\n zeroX() {\n return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n }\n\n zeroY() {\n return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n }\n\n valueX() {\n return this.midX + Math.cos(this.valueRadians()) * this.radius;\n }\n\n valueY() {\n return this.midY - Math.sin(this.valueRadians()) * this.radius;\n }\n\n largeArc() {\n return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n }\n\n sweep() {\n return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n }\n\n valueToDisplay() {\n return this.valueTemplate.replace(\"{value}\", this._value.toString());\n }\n\n get _value(): number {\n return this.value != null ? this.value : this.min;\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Knob],\n declarations: [Knob]\n})\nexport class KnobModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NG_VALUE_ACCESSOR","forwardRef","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","ChangeDetectorRef","ElementRef","Input","Output","NgModule","CommonModule"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"primeng-knob.umd.js","sources":["../../src/app/components/knob/knob.ts","../../src/app/components/knob/primeng-knob.ts"],"sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Knob),\n multi: true\n};\n\n@Component({\n selector: 'p-knob',\n template: `\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size + 'px'\" [style.height]=\"size + 'px'\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n `,\n providers: [KNOB_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./knob.css']\n})\nexport class Knob {\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() severity: string;\n\n @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n @Input() valueTemplate: string = \"{value}\";\n\n @Input() name: string;\n\n @Input() size: number = 100;\n\n @Input() step: number = 1;\n\n @Input() min: number = 0;\n\n @Input() max: number = 100;\n\n @Input() strokeWidth: number = 14;\n\n @Input() disabled: boolean;\n\n @Input() showValue: boolean = true;\n\n @Input() readonly: boolean = false;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n radius: number = 40;\n\n midX: number = 50;\n\n midY: number = 50;\n\n minRadians: number = 4 * Math.PI / 3;\n\n maxRadians: number = -Math.PI / 3;\n \n value: number = null;\n\n windowMouseMoveListener: any;\n\n windowMouseUpListener: any;\n\n windowTouchMoveListener: any;\n\n windowTouchEndListener: any;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n mapRange(x, inMin, inMax, outMin, outMax) {\n return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n }\n\n onClick(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n }\n }\n\n updateValue(offsetX, offsetY) {\n let dx = offsetX - this.size / 2;\n let dy = this.size / 2 - offsetY;\n let angle = Math.atan2(dy, dx);\n let start = -Math.PI / 2 - Math.PI / 6;\n this.updateModel(angle, start);\n }\n\n updateModel(angle, start) {\n let mappedValue;\n if (angle > this.maxRadians)\n mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n else if (angle < start)\n mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n else\n return;\n\n let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n this.value = newValue;\n this.onModelChange(this.value);\n this.onChange.emit(this.value);\n }\n\n onMouseDown(event) {\n if (!this.disabled && !this.readonly) {\n this.windowMouseMoveListener = this.onMouseMove.bind(this)\n this.windowMouseUpListener = this.onMouseUp.bind(this)\n window.addEventListener('mousemove', this.windowMouseMoveListener);\n window.addEventListener('mouseup', this.windowMouseUpListener);\n event.preventDefault();\n }\n }\n\n onMouseUp(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('mousemove', this.windowMouseMoveListener);\n window.removeEventListener('mouseup', this.windowMouseUpListener);\n this.windowMouseUpListener = null;\n this.windowMouseMoveListener = null;\n event.preventDefault();\n }\n }\n\n onTouchStart(event) {\n if (!this.disabled && !this.readonly) {\n this.windowTouchMoveListener = this.onTouchMove.bind(this);\n this.windowTouchEndListener = this.onTouchEnd.bind(this);\n window.addEventListener('touchmove', this.windowTouchMoveListener);\n window.addEventListener('touchend', this.windowTouchEndListener);\n event.preventDefault();\n }\n }\n\n onTouchEnd(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('touchmove', this.windowTouchMoveListener);\n window.removeEventListener('touchend', this.windowTouchEndListener);\n this.windowTouchMoveListener = null;\n this.windowTouchEndListener = null;\n event.preventDefault();\n }\n }\n\n onMouseMove(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n event.preventDefault();\n }\n }\n\n onTouchMove(event) {\n if (!this.disabled && !this.readonly && event.touches.length == 1) {\n const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n this.updateValue(offsetX, offsetY);\n }\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n containerClass() {\n return {\n 'p-knob p-component': true,\n 'p-disabled': this.disabled\n };\n }\n\n rangePath() {\n return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n }\n\n valuePath() {\n return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n }\n\n zeroRadians() {\n if (this.min > 0 && this.max > 0)\n return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n else\n return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n valueRadians() {\n return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n minX() {\n return this.midX + Math.cos(this.minRadians) * this.radius;\n }\n\n minY() {\n return this.midY - Math.sin(this.minRadians) * this.radius;\n }\n\n maxX() {\n return this.midX + Math.cos(this.maxRadians) * this.radius;\n }\n\n maxY() {\n return this.midY - Math.sin(this.maxRadians) * this.radius;\n }\n\n zeroX() {\n return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n }\n\n zeroY() {\n return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n }\n\n valueX() {\n return this.midX + Math.cos(this.valueRadians()) * this.radius;\n }\n\n valueY() {\n return this.midY - Math.sin(this.valueRadians()) * this.radius;\n }\n\n largeArc() {\n return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n }\n\n sweep() {\n return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n }\n\n valueToDisplay() {\n return this.valueTemplate.replace(\"{value}\", this._value.toString());\n }\n\n get _value(): number {\n return this.value != null ? this.value : this.min;\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Knob],\n declarations: [Knob]\n})\nexport class KnobModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NG_VALUE_ACCESSOR","forwardRef","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","ChangeDetectorRef","ElementRef","Input","Output","NgModule","CommonModule"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("primeng/knob",["exports","@angular/core","@angular/common","@angular/forms"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).primeng=t.primeng||{},t.primeng.knob={}),t.ng.core,t.ng.common,t.ng.forms)}(this,(function(t,e,i,n){"use strict";var o={provide:n.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return s})),multi:!0},s=function(){function t(t,i){this.cd=t,this.el=i,this.valueColor="var(--primary-color, Black)",this.rangeColor="var(--surface-d, LightGray)",this.textColor="var(--text-color-secondary, Black)",this.valueTemplate="{value}",this.size=100,this.step=1,this.min=0,this.max=100,this.strokeWidth=14,this.showValue=!0,this.readonly=!1,this.onChange=new e.EventEmitter,this.radius=40,this.midX=50,this.midY=50,this.minRadians=4*Math.PI/3,this.maxRadians=-Math.PI/3,this.value=null,this.onModelChange=function(){},this.onModelTouched=function(){}}return t.prototype.mapRange=function(t,e,i,n,o){return(t-e)*(o-n)/(i-e)+n},t.prototype.onClick=function(t){this.disabled||this.readonly||this.updateValue(t.offsetX,t.offsetY)},t.prototype.updateValue=function(t,e){var i=t-this.size/2,n=this.size/2-e,o=Math.atan2(n,i),s=-Math.PI/2-Math.PI/6;this.updateModel(o,s)},t.prototype.updateModel=function(t,e){var i;if(t>this.maxRadians)i=this.mapRange(t,this.minRadians,this.maxRadians,this.min,this.max);else{if(!(t<e))return;i=this.mapRange(t+2*Math.PI,this.minRadians,this.maxRadians,this.min,this.max)}var n=Math.round((i-this.min)/this.step)*this.step+this.min;this.value=n,this.onModelChange(this.value),this.onChange.emit(this.value)},t.prototype.onMouseDown=function(t){this.disabled||this.readonly||(this.windowMouseMoveListener=this.onMouseMove.bind(this),this.windowMouseUpListener=this.onMouseUp.bind(this),window.addEventListener("mousemove",this.windowMouseMoveListener),window.addEventListener("mouseup",this.windowMouseUpListener),t.preventDefault())},t.prototype.onMouseUp=function(t){this.disabled||this.readonly||(window.removeEventListener("mousemove",this.windowMouseMoveListener),window.removeEventListener("mouseup",this.windowMouseUpListener),this.windowMouseUpListener=null,this.windowMouseMoveListener=null,t.preventDefault())},t.prototype.onTouchStart=function(t){this.disabled||this.readonly||(this.windowTouchMoveListener=this.onTouchMove.bind(this),this.windowTouchEndListener=this.onTouchEnd.bind(this),window.addEventListener("touchmove",this.windowTouchMoveListener),window.addEventListener("touchend",this.windowTouchEndListener),t.preventDefault())},t.prototype.onTouchEnd=function(t){this.disabled||this.readonly||(window.removeEventListener("touchmove",this.windowTouchMoveListener),window.removeEventListener("touchend",this.windowTouchEndListener),this.windowTouchMoveListener=null,this.windowTouchEndListener=null,t.preventDefault())},t.prototype.onMouseMove=function(t){this.disabled||this.readonly||(this.updateValue(t.offsetX,t.offsetY),t.preventDefault())},t.prototype.onTouchMove=function(t){if(!this.disabled&&!this.readonly&&1==t.touches.length){var e=this.el.nativeElement.children[0].getBoundingClientRect(),i=t.targetTouches.item(0),n=i.clientX-e.left,o=i.clientY-e.top;this.updateValue(n,o)}},t.prototype.writeValue=function(t){this.value=t,this.cd.markForCheck()},t.prototype.registerOnChange=function(t){this.onModelChange=t},t.prototype.registerOnTouched=function(t){this.onModelTouched=t},t.prototype.setDisabledState=function(t){this.disabled=t,this.cd.markForCheck()},t.prototype.containerClass=function(){return{"p-knob p-component":!0,"p-disabled":this.disabled}},t.prototype.rangePath=function(){return"M "+this.minX()+" "+this.minY()+" A "+this.radius+" "+this.radius+" 0 1 1 "+this.maxX()+" "+this.maxY()},t.prototype.valuePath=function(){return"M "+this.zeroX()+" "+this.zeroY()+" A "+this.radius+" "+this.radius+" 0 "+this.largeArc()+" "+this.sweep()+" "+this.valueX()+" "+this.valueY()},t.prototype.zeroRadians=function(){return this.min>0&&this.max>0?this.mapRange(this.min,this.min,this.max,this.minRadians,this.maxRadians):this.mapRange(0,this.min,this.max,this.minRadians,this.maxRadians)},t.prototype.valueRadians=function(){return this.mapRange(this._value,this.min,this.max,this.minRadians,this.maxRadians)},t.prototype.minX=function(){return this.midX+Math.cos(this.minRadians)*this.radius},t.prototype.minY=function(){return this.midY-Math.sin(this.minRadians)*this.radius},t.prototype.maxX=function(){return this.midX+Math.cos(this.maxRadians)*this.radius},t.prototype.maxY=function(){return this.midY-Math.sin(this.maxRadians)*this.radius},t.prototype.zeroX=function(){return this.midX+Math.cos(this.zeroRadians())*this.radius},t.prototype.zeroY=function(){return this.midY-Math.sin(this.zeroRadians())*this.radius},t.prototype.valueX=function(){return this.midX+Math.cos(this.valueRadians())*this.radius},t.prototype.valueY=function(){return this.midY-Math.sin(this.valueRadians())*this.radius},t.prototype.largeArc=function(){return Math.abs(this.zeroRadians()-this.valueRadians())<Math.PI?0:1},t.prototype.sweep=function(){return this.valueRadians()>this.zeroRadians()?0:1},t.prototype.valueToDisplay=function(){return this.valueTemplate.replace("{value}",this._value.toString())},Object.defineProperty(t.prototype,"_value",{get:function(){return null!=this.value?this.value:this.min},enumerable:!1,configurable:!0}),t}();s.decorators=[{type:e.Component,args:[{selector:"p-knob",template:'\n <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">\n <svg viewBox="0 0 100 100" [style.width]="size" [style.height]="size" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"\n (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">\n <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>\n <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>\n <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>\n </svg>\n </div>\n ',providers:[o],changeDetection:e.ChangeDetectionStrategy.OnPush,encapsulation:e.ViewEncapsulation.None,styles:["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-fill-mode:forwards;animation-name:dash-frame;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}"]}]}],s.ctorParameters=function(){return[{type:e.ChangeDetectorRef},{type:e.ElementRef}]},s.propDecorators={styleClass:[{type:e.Input}],style:[{type:e.Input}],severity:[{type:e.Input}],valueColor:[{type:e.Input}],rangeColor:[{type:e.Input}],textColor:[{type:e.Input}],valueTemplate:[{type:e.Input}],name:[{type:e.Input}],size:[{type:e.Input}],step:[{type:e.Input}],min:[{type:e.Input}],max:[{type:e.Input}],strokeWidth:[{type:e.Input}],disabled:[{type:e.Input}],showValue:[{type:e.Input}],readonly:[{type:e.Input}],onChange:[{type:e.Output}]};var a=function(){};a.decorators=[{type:e.NgModule,args:[{imports:[i.CommonModule],exports:[s],declarations:[s]}]}],t.KNOB_VALUE_ACCESSOR=o,t.Knob=s,t.KnobModule=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("primeng/knob",["exports","@angular/core","@angular/common","@angular/forms"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).primeng=t.primeng||{},t.primeng.knob={}),t.ng.core,t.ng.common,t.ng.forms)}(this,(function(t,e,i,n){"use strict";var o={provide:n.NG_VALUE_ACCESSOR,useExisting:e.forwardRef((function(){return s})),multi:!0},s=function(){function t(t,i){this.cd=t,this.el=i,this.valueColor="var(--primary-color, Black)",this.rangeColor="var(--surface-d, LightGray)",this.textColor="var(--text-color-secondary, Black)",this.valueTemplate="{value}",this.size=100,this.step=1,this.min=0,this.max=100,this.strokeWidth=14,this.showValue=!0,this.readonly=!1,this.onChange=new e.EventEmitter,this.radius=40,this.midX=50,this.midY=50,this.minRadians=4*Math.PI/3,this.maxRadians=-Math.PI/3,this.value=null,this.onModelChange=function(){},this.onModelTouched=function(){}}return t.prototype.mapRange=function(t,e,i,n,o){return(t-e)*(o-n)/(i-e)+n},t.prototype.onClick=function(t){this.disabled||this.readonly||this.updateValue(t.offsetX,t.offsetY)},t.prototype.updateValue=function(t,e){var i=t-this.size/2,n=this.size/2-e,o=Math.atan2(n,i),s=-Math.PI/2-Math.PI/6;this.updateModel(o,s)},t.prototype.updateModel=function(t,e){var i;if(t>this.maxRadians)i=this.mapRange(t,this.minRadians,this.maxRadians,this.min,this.max);else{if(!(t<e))return;i=this.mapRange(t+2*Math.PI,this.minRadians,this.maxRadians,this.min,this.max)}var n=Math.round((i-this.min)/this.step)*this.step+this.min;this.value=n,this.onModelChange(this.value),this.onChange.emit(this.value)},t.prototype.onMouseDown=function(t){this.disabled||this.readonly||(this.windowMouseMoveListener=this.onMouseMove.bind(this),this.windowMouseUpListener=this.onMouseUp.bind(this),window.addEventListener("mousemove",this.windowMouseMoveListener),window.addEventListener("mouseup",this.windowMouseUpListener),t.preventDefault())},t.prototype.onMouseUp=function(t){this.disabled||this.readonly||(window.removeEventListener("mousemove",this.windowMouseMoveListener),window.removeEventListener("mouseup",this.windowMouseUpListener),this.windowMouseUpListener=null,this.windowMouseMoveListener=null,t.preventDefault())},t.prototype.onTouchStart=function(t){this.disabled||this.readonly||(this.windowTouchMoveListener=this.onTouchMove.bind(this),this.windowTouchEndListener=this.onTouchEnd.bind(this),window.addEventListener("touchmove",this.windowTouchMoveListener),window.addEventListener("touchend",this.windowTouchEndListener),t.preventDefault())},t.prototype.onTouchEnd=function(t){this.disabled||this.readonly||(window.removeEventListener("touchmove",this.windowTouchMoveListener),window.removeEventListener("touchend",this.windowTouchEndListener),this.windowTouchMoveListener=null,this.windowTouchEndListener=null,t.preventDefault())},t.prototype.onMouseMove=function(t){this.disabled||this.readonly||(this.updateValue(t.offsetX,t.offsetY),t.preventDefault())},t.prototype.onTouchMove=function(t){if(!this.disabled&&!this.readonly&&1==t.touches.length){var e=this.el.nativeElement.children[0].getBoundingClientRect(),i=t.targetTouches.item(0),n=i.clientX-e.left,o=i.clientY-e.top;this.updateValue(n,o)}},t.prototype.writeValue=function(t){this.value=t,this.cd.markForCheck()},t.prototype.registerOnChange=function(t){this.onModelChange=t},t.prototype.registerOnTouched=function(t){this.onModelTouched=t},t.prototype.setDisabledState=function(t){this.disabled=t,this.cd.markForCheck()},t.prototype.containerClass=function(){return{"p-knob p-component":!0,"p-disabled":this.disabled}},t.prototype.rangePath=function(){return"M "+this.minX()+" "+this.minY()+" A "+this.radius+" "+this.radius+" 0 1 1 "+this.maxX()+" "+this.maxY()},t.prototype.valuePath=function(){return"M "+this.zeroX()+" "+this.zeroY()+" A "+this.radius+" "+this.radius+" 0 "+this.largeArc()+" "+this.sweep()+" "+this.valueX()+" "+this.valueY()},t.prototype.zeroRadians=function(){return this.min>0&&this.max>0?this.mapRange(this.min,this.min,this.max,this.minRadians,this.maxRadians):this.mapRange(0,this.min,this.max,this.minRadians,this.maxRadians)},t.prototype.valueRadians=function(){return this.mapRange(this._value,this.min,this.max,this.minRadians,this.maxRadians)},t.prototype.minX=function(){return this.midX+Math.cos(this.minRadians)*this.radius},t.prototype.minY=function(){return this.midY-Math.sin(this.minRadians)*this.radius},t.prototype.maxX=function(){return this.midX+Math.cos(this.maxRadians)*this.radius},t.prototype.maxY=function(){return this.midY-Math.sin(this.maxRadians)*this.radius},t.prototype.zeroX=function(){return this.midX+Math.cos(this.zeroRadians())*this.radius},t.prototype.zeroY=function(){return this.midY-Math.sin(this.zeroRadians())*this.radius},t.prototype.valueX=function(){return this.midX+Math.cos(this.valueRadians())*this.radius},t.prototype.valueY=function(){return this.midY-Math.sin(this.valueRadians())*this.radius},t.prototype.largeArc=function(){return Math.abs(this.zeroRadians()-this.valueRadians())<Math.PI?0:1},t.prototype.sweep=function(){return this.valueRadians()>this.zeroRadians()?0:1},t.prototype.valueToDisplay=function(){return this.valueTemplate.replace("{value}",this._value.toString())},Object.defineProperty(t.prototype,"_value",{get:function(){return null!=this.value?this.value:this.min},enumerable:!1,configurable:!0}),t}();s.decorators=[{type:e.Component,args:[{selector:"p-knob",template:'\n <div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="style">\n <svg viewBox="0 0 100 100" [style.width]="size + \'px\'" [style.height]="size + \'px\'" (click)="onClick($event)" (mousedown)="onMouseDown($event)" (mouseup)="onMouseUp($event)"\n (touchstart)="onTouchStart($event)" (touchend)="onTouchEnd($event)">\n <path [attr.d]="rangePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="rangeColor" class="p-knob-range"></path>\n <path [attr.d]="valuePath()" [attr.stroke-width]="strokeWidth" [attr.stroke]="valueColor" class="p-knob-value"></path>\n <text *ngIf="showValue" [attr.x]="50" [attr.y]="57" text-anchor="middle" [attr.fill]="textColor" class="p-knob-text" [attr.name]="name">{{valueToDisplay()}}</text>\n </svg>\n </div>\n ',providers:[o],changeDetection:e.ChangeDetectionStrategy.OnPush,encapsulation:e.ViewEncapsulation.None,styles:["@keyframes dash-frame{to{stroke-dashoffset:0}}.p-knob-range{fill:none;transition:stroke .1s ease-in}.p-knob-value{animation-fill-mode:forwards;animation-name:dash-frame;fill:none}.p-knob-text{font-size:1.3rem;text-align:center}"]}]}],s.ctorParameters=function(){return[{type:e.ChangeDetectorRef},{type:e.ElementRef}]},s.propDecorators={styleClass:[{type:e.Input}],style:[{type:e.Input}],severity:[{type:e.Input}],valueColor:[{type:e.Input}],rangeColor:[{type:e.Input}],textColor:[{type:e.Input}],valueTemplate:[{type:e.Input}],name:[{type:e.Input}],size:[{type:e.Input}],step:[{type:e.Input}],min:[{type:e.Input}],max:[{type:e.Input}],strokeWidth:[{type:e.Input}],disabled:[{type:e.Input}],showValue:[{type:e.Input}],readonly:[{type:e.Input}],onChange:[{type:e.Output}]};var a=function(){};a.decorators=[{type:e.NgModule,args:[{imports:[i.CommonModule],exports:[s],declarations:[s]}]}],t.KNOB_VALUE_ACCESSOR=o,t.Knob=s,t.KnobModule=a,Object.defineProperty(t,"__esModule",{value:!0})}));
|
2
2
|
//# sourceMappingURL=primeng-knob.umd.min.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/app/components/knob/knob.ts"],"names":["KNOB_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","Knob","multi","cd","el","this","valueColor","rangeColor","textColor","valueTemplate","size","step","min","max","strokeWidth","showValue","readonly","onChange","EventEmitter","radius","midX","midY","minRadians","Math","PI","maxRadians","value","onModelChange","onModelTouched","prototype","mapRange","x","inMin","inMax","outMin","outMax","onClick","event","disabled","updateValue","offsetX","offsetY","dx","dy","angle","atan2","start","updateModel","mappedValue","newValue","round","emit","onMouseDown","windowMouseMoveListener","onMouseMove","bind","windowMouseUpListener","onMouseUp","window","addEventListener","preventDefault","removeEventListener","onTouchStart","windowTouchMoveListener","onTouchMove","windowTouchEndListener","onTouchEnd","touches","length","rect","nativeElement","children","getBoundingClientRect","touch","targetTouches","item","clientX","left","clientY","top","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","val","containerClass","p-knob p-component","p-disabled","rangePath","minX","minY","maxX","maxY","valuePath","zeroX","zeroY","largeArc","sweep","valueX","valueY","zeroRadians","valueRadians","_value","cos","sin","abs","valueToDisplay","replace","toString","Object","defineProperty","Component","args","selector","template","providers","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","ChangeDetectorRef","ElementRef","Input","Output","NgModule","imports","CommonModule","exports","declarations"],"mappings":"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","sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Knob),\n multi: true\n};\n\n@Component({\n selector: 'p-knob',\n template: `\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size\" [style.height]=\"size\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n `,\n providers: [KNOB_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./knob.css']\n})\nexport class Knob {\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() severity: string;\n\n @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n @Input() valueTemplate: string = \"{value}\";\n\n @Input() name: string;\n\n @Input() size: number = 100;\n\n @Input() step: number = 1;\n\n @Input() min: number = 0;\n\n @Input() max: number = 100;\n\n @Input() strokeWidth: number = 14;\n\n @Input() disabled: boolean;\n\n @Input() showValue: boolean = true;\n\n @Input() readonly: boolean = false;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n radius: number = 40;\n\n midX: number = 50;\n\n midY: number = 50;\n\n minRadians: number = 4 * Math.PI / 3;\n\n maxRadians: number = -Math.PI / 3;\n \n value: number = null;\n\n windowMouseMoveListener: any;\n\n windowMouseUpListener: any;\n\n windowTouchMoveListener: any;\n\n windowTouchEndListener: any;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n mapRange(x, inMin, inMax, outMin, outMax) {\n return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n }\n\n onClick(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n }\n }\n\n updateValue(offsetX, offsetY) {\n let dx = offsetX - this.size / 2;\n let dy = this.size / 2 - offsetY;\n let angle = Math.atan2(dy, dx);\n let start = -Math.PI / 2 - Math.PI / 6;\n this.updateModel(angle, start);\n }\n\n updateModel(angle, start) {\n let mappedValue;\n if (angle > this.maxRadians)\n mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n else if (angle < start)\n mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n else\n return;\n\n let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n this.value = newValue;\n this.onModelChange(this.value);\n this.onChange.emit(this.value);\n }\n\n onMouseDown(event) {\n if (!this.disabled && !this.readonly) {\n this.windowMouseMoveListener = this.onMouseMove.bind(this)\n this.windowMouseUpListener = this.onMouseUp.bind(this)\n window.addEventListener('mousemove', this.windowMouseMoveListener);\n window.addEventListener('mouseup', this.windowMouseUpListener);\n event.preventDefault();\n }\n }\n\n onMouseUp(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('mousemove', this.windowMouseMoveListener);\n window.removeEventListener('mouseup', this.windowMouseUpListener);\n this.windowMouseUpListener = null;\n this.windowMouseMoveListener = null;\n event.preventDefault();\n }\n }\n\n onTouchStart(event) {\n if (!this.disabled && !this.readonly) {\n this.windowTouchMoveListener = this.onTouchMove.bind(this);\n this.windowTouchEndListener = this.onTouchEnd.bind(this);\n window.addEventListener('touchmove', this.windowTouchMoveListener);\n window.addEventListener('touchend', this.windowTouchEndListener);\n event.preventDefault();\n }\n }\n\n onTouchEnd(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('touchmove', this.windowTouchMoveListener);\n window.removeEventListener('touchend', this.windowTouchEndListener);\n this.windowTouchMoveListener = null;\n this.windowTouchEndListener = null;\n event.preventDefault();\n }\n }\n\n onMouseMove(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n event.preventDefault();\n }\n }\n\n onTouchMove(event) {\n if (!this.disabled && !this.readonly && event.touches.length == 1) {\n const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n this.updateValue(offsetX, offsetY);\n }\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n containerClass() {\n return {\n 'p-knob p-component': true,\n 'p-disabled': this.disabled\n };\n }\n\n rangePath() {\n return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n }\n\n valuePath() {\n return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n }\n\n zeroRadians() {\n if (this.min > 0 && this.max > 0)\n return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n else\n return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n valueRadians() {\n return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n minX() {\n return this.midX + Math.cos(this.minRadians) * this.radius;\n }\n\n minY() {\n return this.midY - Math.sin(this.minRadians) * this.radius;\n }\n\n maxX() {\n return this.midX + Math.cos(this.maxRadians) * this.radius;\n }\n\n maxY() {\n return this.midY - Math.sin(this.maxRadians) * this.radius;\n }\n\n zeroX() {\n return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n }\n\n zeroY() {\n return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n }\n\n valueX() {\n return this.midX + Math.cos(this.valueRadians()) * this.radius;\n }\n\n valueY() {\n return this.midY - Math.sin(this.valueRadians()) * this.radius;\n }\n\n largeArc() {\n return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n }\n\n sweep() {\n return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n }\n\n valueToDisplay() {\n return this.valueTemplate.replace(\"{value}\", this._value.toString());\n }\n\n get _value(): number {\n return this.value != null ? this.value : this.min;\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Knob],\n declarations: [Knob]\n})\nexport class KnobModule { }\n"]}
|
1
|
+
{"version":3,"sources":["../../src/app/components/knob/knob.ts"],"names":["KNOB_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","Knob","multi","cd","el","this","valueColor","rangeColor","textColor","valueTemplate","size","step","min","max","strokeWidth","showValue","readonly","onChange","EventEmitter","radius","midX","midY","minRadians","Math","PI","maxRadians","value","onModelChange","onModelTouched","prototype","mapRange","x","inMin","inMax","outMin","outMax","onClick","event","disabled","updateValue","offsetX","offsetY","dx","dy","angle","atan2","start","updateModel","mappedValue","newValue","round","emit","onMouseDown","windowMouseMoveListener","onMouseMove","bind","windowMouseUpListener","onMouseUp","window","addEventListener","preventDefault","removeEventListener","onTouchStart","windowTouchMoveListener","onTouchMove","windowTouchEndListener","onTouchEnd","touches","length","rect","nativeElement","children","getBoundingClientRect","touch","targetTouches","item","clientX","left","clientY","top","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","val","containerClass","p-knob p-component","p-disabled","rangePath","minX","minY","maxX","maxY","valuePath","zeroX","zeroY","largeArc","sweep","valueX","valueY","zeroRadians","valueRadians","_value","cos","sin","abs","valueToDisplay","replace","toString","Object","defineProperty","Component","args","selector","template","providers","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","ChangeDetectorRef","ElementRef","Input","Output","NgModule","imports","CommonModule","exports","declarations"],"mappings":"ycAIaA,EAA2B,CACpCC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,YAAW,WAAM,OAAAC,KAC9BC,OAAO,gBAgFP,SAAAD,EAAoBE,EAA+BC,GAA/BC,KAAAF,GAAAA,EAA+BE,KAAAD,GAAAA,EApD1CC,KAAAC,WAAqB,8BAErBD,KAAAE,WAAqB,8BAErBF,KAAAG,UAAoB,qCAEpBH,KAAAI,cAAwB,UAIxBJ,KAAAK,KAAe,IAEfL,KAAAM,KAAe,EAEfN,KAAAO,IAAc,EAEdP,KAAAQ,IAAc,IAEdR,KAAAS,YAAsB,GAItBT,KAAAU,WAAqB,EAErBV,KAAAW,UAAoB,EAEnBX,KAAAY,SAA8B,IAAIC,EAAAA,aAE5Cb,KAAAc,OAAiB,GAEjBd,KAAAe,KAAe,GAEff,KAAAgB,KAAe,GAEfhB,KAAAiB,WAAqB,EAAIC,KAAKC,GAAK,EAEnCnB,KAAAoB,YAAsBF,KAAKC,GAAK,EAEhCnB,KAAAqB,MAAgB,KAUhBrB,KAAAsB,cAA0B,aAE1BtB,KAAAuB,eAA2B,oBAI3B3B,EAAA4B,UAAAC,SAAA,SAASC,EAAGC,EAAOC,EAAOC,EAAQC,GAC9B,OAAQJ,EAAIC,IAAUG,EAASD,IAAWD,EAAQD,GAASE,GAG/DjC,EAAA4B,UAAAO,QAAA,SAAQC,GACChC,KAAKiC,UAAajC,KAAKW,UACxBX,KAAKkC,YAAYF,EAAMG,QAASH,EAAMI,UAI9CxC,EAAA4B,UAAAU,YAAA,SAAYC,EAASC,GACjB,IAAIC,EAAKF,EAAUnC,KAAKK,KAAO,EAC3BiC,EAAMtC,KAAKK,KAAO,EAAI+B,EACtBG,EAAQrB,KAAKsB,MAAMF,EAAID,GACvBI,GAASvB,KAAKC,GAAK,EAAID,KAAKC,GAAK,EACrCnB,KAAK0C,YAAYH,EAAOE,IAG5B7C,EAAA4B,UAAAkB,YAAA,SAAYH,EAAOE,GACf,IAAIE,EACJ,GAAIJ,EAAQvC,KAAKoB,WACbuB,EAAc3C,KAAKyB,SAASc,EAAOvC,KAAKiB,WAAYjB,KAAKoB,WAAYpB,KAAKO,IAAKP,KAAKQ,SACnF,CAAA,KAAI+B,EAAQE,GAGb,OAFAE,EAAc3C,KAAKyB,SAASc,EAAQ,EAAIrB,KAAKC,GAAInB,KAAKiB,WAAYjB,KAAKoB,WAAYpB,KAAKO,IAAKP,KAAKQ,KAItG,IAAIoC,EAAW1B,KAAK2B,OAAOF,EAAc3C,KAAKO,KAAOP,KAAKM,MAAQN,KAAKM,KAAON,KAAKO,IACnFP,KAAKqB,MAAQuB,EACb5C,KAAKsB,cAActB,KAAKqB,OACxBrB,KAAKY,SAASkC,KAAK9C,KAAKqB,QAG5BzB,EAAA4B,UAAAuB,YAAA,SAAYf,GACHhC,KAAKiC,UAAajC,KAAKW,WACxBX,KAAKgD,wBAA0BhD,KAAKiD,YAAYC,KAAKlD,MACrDA,KAAKmD,sBAAwBnD,KAAKoD,UAAUF,KAAKlD,MACjDqD,OAAOC,iBAAiB,YAAatD,KAAKgD,yBAC1CK,OAAOC,iBAAiB,UAAWtD,KAAKmD,uBACxCnB,EAAMuB,mBAId3D,EAAA4B,UAAA4B,UAAA,SAAUpB,GACDhC,KAAKiC,UAAajC,KAAKW,WACxB0C,OAAOG,oBAAoB,YAAaxD,KAAKgD,yBAC7CK,OAAOG,oBAAoB,UAAWxD,KAAKmD,uBAC3CnD,KAAKmD,sBAAwB,KAC7BnD,KAAKgD,wBAA0B,KAC/BhB,EAAMuB,mBAId3D,EAAA4B,UAAAiC,aAAA,SAAazB,GACJhC,KAAKiC,UAAajC,KAAKW,WACxBX,KAAK0D,wBAA0B1D,KAAK2D,YAAYT,KAAKlD,MACrDA,KAAK4D,uBAAyB5D,KAAK6D,WAAWX,KAAKlD,MACnDqD,OAAOC,iBAAiB,YAAatD,KAAK0D,yBAC1CL,OAAOC,iBAAiB,WAAYtD,KAAK4D,wBACzC5B,EAAMuB,mBAId3D,EAAA4B,UAAAqC,WAAA,SAAW7B,GACFhC,KAAKiC,UAAajC,KAAKW,WACxB0C,OAAOG,oBAAoB,YAAaxD,KAAK0D,yBAC7CL,OAAOG,oBAAoB,WAAYxD,KAAK4D,wBAC5C5D,KAAK0D,wBAA0B,KAC/B1D,KAAK4D,uBAAyB,KAC9B5B,EAAMuB,mBAId3D,EAAA4B,UAAAyB,YAAA,SAAYjB,GACHhC,KAAKiC,UAAajC,KAAKW,WACxBX,KAAKkC,YAAYF,EAAMG,QAASH,EAAMI,SACtCJ,EAAMuB,mBAId3D,EAAA4B,UAAAmC,YAAA,SAAY3B,GACR,IAAKhC,KAAKiC,WAAajC,KAAKW,UAAoC,GAAxBqB,EAAM8B,QAAQC,OAAa,CAC/D,IAAMC,EAAOhE,KAAKD,GAAGkE,cAAcC,SAAS,GAAGC,wBACzCC,EAAQpC,EAAMqC,cAAcC,KAAK,GACjCnC,EAAUiC,EAAMG,QAAUP,EAAKQ,KAC/BpC,EAAUgC,EAAMK,QAAUT,EAAKU,IACrC1E,KAAKkC,YAAYC,EAASC,KAIlCxC,EAAA4B,UAAAmD,WAAA,SAAWtD,GACPrB,KAAKqB,MAAQA,EACbrB,KAAKF,GAAG8E,gBAGZhF,EAAA4B,UAAAqD,iBAAA,SAAiBC,GACb9E,KAAKsB,cAAgBwD,GAGzBlF,EAAA4B,UAAAuD,kBAAA,SAAkBD,GACd9E,KAAKuB,eAAiBuD,GAG1BlF,EAAA4B,UAAAwD,iBAAA,SAAiBC,GACbjF,KAAKiC,SAAWgD,EAChBjF,KAAKF,GAAG8E,gBAGZhF,EAAA4B,UAAA0D,eAAA,WACI,MAAO,CACHC,sBAAsB,EACtBC,aAAcpF,KAAKiC,WAI3BrC,EAAA4B,UAAA6D,UAAA,WACI,MAAO,KAAKrF,KAAKsF,OAAM,IAAItF,KAAKuF,OAAM,MAAMvF,KAAKc,OAAM,IAAId,KAAKc,OAAM,UAAUd,KAAKwF,OAAM,IAAIxF,KAAKyF,QAGxG7F,EAAA4B,UAAAkE,UAAA,WACI,MAAO,KAAK1F,KAAK2F,QAAO,IAAI3F,KAAK4F,QAAO,MAAM5F,KAAKc,OAAM,IAAId,KAAKc,OAAM,MAAMd,KAAK6F,WAAU,IAAI7F,KAAK8F,QAAO,IAAI9F,KAAK+F,SAAQ,IAAI/F,KAAKgG,UAG3IpG,EAAA4B,UAAAyE,YAAA,WACI,OAAIjG,KAAKO,IAAM,GAAKP,KAAKQ,IAAM,EACpBR,KAAKyB,SAASzB,KAAKO,IAAKP,KAAKO,IAAKP,KAAKQ,IAAKR,KAAKiB,WAAYjB,KAAKoB,YAElEpB,KAAKyB,SAAS,EAAGzB,KAAKO,IAAKP,KAAKQ,IAAKR,KAAKiB,WAAYjB,KAAKoB,aAG1ExB,EAAA4B,UAAA0E,aAAA,WACI,OAAOlG,KAAKyB,SAASzB,KAAKmG,OAAQnG,KAAKO,IAAKP,KAAKQ,IAAKR,KAAKiB,WAAYjB,KAAKoB,aAGhFxB,EAAA4B,UAAA8D,KAAA,WACI,OAAOtF,KAAKe,KAAOG,KAAKkF,IAAIpG,KAAKiB,YAAcjB,KAAKc,QAGxDlB,EAAA4B,UAAA+D,KAAA,WACI,OAAOvF,KAAKgB,KAAOE,KAAKmF,IAAIrG,KAAKiB,YAAcjB,KAAKc,QAGxDlB,EAAA4B,UAAAgE,KAAA,WACI,OAAOxF,KAAKe,KAAOG,KAAKkF,IAAIpG,KAAKoB,YAAcpB,KAAKc,QAGxDlB,EAAA4B,UAAAiE,KAAA,WACI,OAAOzF,KAAKgB,KAAOE,KAAKmF,IAAIrG,KAAKoB,YAAcpB,KAAKc,QAGxDlB,EAAA4B,UAAAmE,MAAA,WACI,OAAO3F,KAAKe,KAAOG,KAAKkF,IAAIpG,KAAKiG,eAAiBjG,KAAKc,QAG3DlB,EAAA4B,UAAAoE,MAAA,WACI,OAAO5F,KAAKgB,KAAOE,KAAKmF,IAAIrG,KAAKiG,eAAiBjG,KAAKc,QAG3DlB,EAAA4B,UAAAuE,OAAA,WACI,OAAO/F,KAAKe,KAAOG,KAAKkF,IAAIpG,KAAKkG,gBAAkBlG,KAAKc,QAG5DlB,EAAA4B,UAAAwE,OAAA,WACI,OAAOhG,KAAKgB,KAAOE,KAAKmF,IAAIrG,KAAKkG,gBAAkBlG,KAAKc,QAG5DlB,EAAA4B,UAAAqE,SAAA,WACI,OAAO3E,KAAKoF,IAAItG,KAAKiG,cAAgBjG,KAAKkG,gBAAkBhF,KAAKC,GAAK,EAAI,GAG9EvB,EAAA4B,UAAAsE,MAAA,WACI,OAAO9F,KAAKkG,eAAiBlG,KAAKiG,cAAgB,EAAI,GAG1DrG,EAAA4B,UAAA+E,eAAA,WACI,OAAOvG,KAAKI,cAAcoG,QAAQ,UAAWxG,KAAKmG,OAAOM,aAG7DC,OAAAC,eAAI/G,EAAA4B,UAAA,SAAM,KAAV,WACI,OAAqB,MAAdxB,KAAKqB,MAAgBrB,KAAKqB,MAAQrB,KAAKO,8DAlQrDqG,EAAAA,UAASC,KAAA,CAAC,CACPC,SAAU,SACVC,SAAU,k0BAUVC,UAAW,CAACzH,GACZ0H,gBAAiBC,EAAAA,wBAAwBC,OACzCC,cAAeC,EAAAA,kBAAkBC,iSAxBwDC,EAAAA,yBAAmBC,EAAAA,kDA6B3GC,EAAAA,qBAEAA,EAAAA,wBAEAA,EAAAA,0BAEAA,EAAAA,0BAEAA,EAAAA,yBAEAA,EAAAA,6BAEAA,EAAAA,oBAEAA,EAAAA,oBAEAA,EAAAA,oBAEAA,EAAAA,mBAEAA,EAAAA,mBAEAA,EAAAA,2BAEAA,EAAAA,wBAEAA,EAAAA,yBAEAA,EAAAA,wBAEAA,EAAAA,wBAEAC,EAAAA,gBAwNL,iCALCC,EAAAA,SAAQd,KAAA,CAAC,CACNe,QAAS,CAACC,EAAAA,cACVC,QAAS,CAAClI,GACVmI,aAAc,CAACnI","sourcesContent":["import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, forwardRef, ChangeDetectorRef, ElementRef, Output, EventEmitter} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const KNOB_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Knob),\n multi: true\n};\n\n@Component({\n selector: 'p-knob',\n template: `\n <div [ngClass]=\"containerClass()\" [class]=\"styleClass\" [ngStyle]=\"style\">\n <svg viewBox=\"0 0 100 100\" [style.width]=\"size + 'px'\" [style.height]=\"size + 'px'\" (click)=\"onClick($event)\" (mousedown)=\"onMouseDown($event)\" (mouseup)=\"onMouseUp($event)\"\n (touchstart)=\"onTouchStart($event)\" (touchend)=\"onTouchEnd($event)\">\n <path [attr.d]=\"rangePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"rangeColor\" class=\"p-knob-range\"></path>\n <path [attr.d]=\"valuePath()\" [attr.stroke-width]=\"strokeWidth\" [attr.stroke]=\"valueColor\" class=\"p-knob-value\"></path>\n <text *ngIf=\"showValue\" [attr.x]=\"50\" [attr.y]=\"57\" text-anchor=\"middle\" [attr.fill]=\"textColor\" class=\"p-knob-text\" [attr.name]=\"name\">{{valueToDisplay()}}</text>\n </svg>\n </div>\n `,\n providers: [KNOB_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./knob.css']\n})\nexport class Knob {\n\n @Input() styleClass: string;\n\n @Input() style: any;\n\n @Input() severity: string;\n\n @Input() valueColor: string = \"var(--primary-color, Black)\";\n\n @Input() rangeColor: string = \"var(--surface-d, LightGray)\";\n\n @Input() textColor: string = \"var(--text-color-secondary, Black)\";\n\n @Input() valueTemplate: string = \"{value}\";\n\n @Input() name: string;\n\n @Input() size: number = 100;\n\n @Input() step: number = 1;\n\n @Input() min: number = 0;\n\n @Input() max: number = 100;\n\n @Input() strokeWidth: number = 14;\n\n @Input() disabled: boolean;\n\n @Input() showValue: boolean = true;\n\n @Input() readonly: boolean = false;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n radius: number = 40;\n\n midX: number = 50;\n\n midY: number = 50;\n\n minRadians: number = 4 * Math.PI / 3;\n\n maxRadians: number = -Math.PI / 3;\n \n value: number = null;\n\n windowMouseMoveListener: any;\n\n windowMouseUpListener: any;\n\n windowTouchMoveListener: any;\n\n windowTouchEndListener: any;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) { }\n\n mapRange(x, inMin, inMax, outMin, outMax) {\n return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;\n }\n\n onClick(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n }\n }\n\n updateValue(offsetX, offsetY) {\n let dx = offsetX - this.size / 2;\n let dy = this.size / 2 - offsetY;\n let angle = Math.atan2(dy, dx);\n let start = -Math.PI / 2 - Math.PI / 6;\n this.updateModel(angle, start);\n }\n\n updateModel(angle, start) {\n let mappedValue;\n if (angle > this.maxRadians)\n mappedValue = this.mapRange(angle, this.minRadians, this.maxRadians, this.min, this.max);\n else if (angle < start)\n mappedValue = this.mapRange(angle + 2 * Math.PI, this.minRadians, this.maxRadians, this.min, this.max);\n else\n return;\n\n let newValue = Math.round((mappedValue - this.min) / this.step) * this.step + this.min;\n this.value = newValue;\n this.onModelChange(this.value);\n this.onChange.emit(this.value);\n }\n\n onMouseDown(event) {\n if (!this.disabled && !this.readonly) {\n this.windowMouseMoveListener = this.onMouseMove.bind(this)\n this.windowMouseUpListener = this.onMouseUp.bind(this)\n window.addEventListener('mousemove', this.windowMouseMoveListener);\n window.addEventListener('mouseup', this.windowMouseUpListener);\n event.preventDefault();\n }\n }\n\n onMouseUp(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('mousemove', this.windowMouseMoveListener);\n window.removeEventListener('mouseup', this.windowMouseUpListener);\n this.windowMouseUpListener = null;\n this.windowMouseMoveListener = null;\n event.preventDefault();\n }\n }\n\n onTouchStart(event) {\n if (!this.disabled && !this.readonly) {\n this.windowTouchMoveListener = this.onTouchMove.bind(this);\n this.windowTouchEndListener = this.onTouchEnd.bind(this);\n window.addEventListener('touchmove', this.windowTouchMoveListener);\n window.addEventListener('touchend', this.windowTouchEndListener);\n event.preventDefault();\n }\n }\n\n onTouchEnd(event) {\n if (!this.disabled && !this.readonly) {\n window.removeEventListener('touchmove', this.windowTouchMoveListener);\n window.removeEventListener('touchend', this.windowTouchEndListener);\n this.windowTouchMoveListener = null;\n this.windowTouchEndListener = null;\n event.preventDefault();\n }\n }\n\n onMouseMove(event) {\n if (!this.disabled && !this.readonly) {\n this.updateValue(event.offsetX, event.offsetY);\n event.preventDefault();\n }\n }\n\n onTouchMove(event) {\n if (!this.disabled && !this.readonly && event.touches.length == 1) {\n const rect = this.el.nativeElement.children[0].getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n this.updateValue(offsetX, offsetY);\n }\n }\n\n writeValue(value: any) : void {\n this.value = value;\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n containerClass() {\n return {\n 'p-knob p-component': true,\n 'p-disabled': this.disabled\n };\n }\n\n rangePath() {\n return `M ${this.minX()} ${this.minY()} A ${this.radius} ${this.radius} 0 1 1 ${this.maxX()} ${this.maxY()}`;\n }\n\n valuePath() {\n return `M ${this.zeroX()} ${this.zeroY()} A ${this.radius} ${this.radius} 0 ${this.largeArc()} ${this.sweep()} ${this.valueX()} ${this.valueY()}`;\n }\n\n zeroRadians() {\n if (this.min > 0 && this.max > 0)\n return this.mapRange(this.min, this.min, this.max, this.minRadians, this.maxRadians);\n else\n return this.mapRange(0, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n valueRadians() {\n return this.mapRange(this._value, this.min, this.max, this.minRadians, this.maxRadians);\n }\n\n minX() {\n return this.midX + Math.cos(this.minRadians) * this.radius;\n }\n\n minY() {\n return this.midY - Math.sin(this.minRadians) * this.radius;\n }\n\n maxX() {\n return this.midX + Math.cos(this.maxRadians) * this.radius;\n }\n\n maxY() {\n return this.midY - Math.sin(this.maxRadians) * this.radius;\n }\n\n zeroX() {\n return this.midX + Math.cos(this.zeroRadians()) * this.radius;\n }\n\n zeroY() {\n return this.midY - Math.sin(this.zeroRadians()) * this.radius;\n }\n\n valueX() {\n return this.midX + Math.cos(this.valueRadians()) * this.radius;\n }\n\n valueY() {\n return this.midY - Math.sin(this.valueRadians()) * this.radius;\n }\n\n largeArc() {\n return Math.abs(this.zeroRadians() - this.valueRadians()) < Math.PI ? 0 : 1;\n }\n\n sweep() {\n return this.valueRadians() > this.zeroRadians() ? 0 : 1;\n }\n\n valueToDisplay() {\n return this.valueTemplate.replace(\"{value}\", this._value.toString());\n }\n\n get _value(): number {\n return this.value != null ? this.value : this.min;\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Knob],\n declarations: [Knob]\n})\nexport class KnobModule { }\n"]}
|