UNPKG

truly-ui

Version:

Web Components for Desktop Applications.

83 lines 13.1 kB
export class CurrencyManager { constructor(htmlInputElement) { this.htmlInputElement = htmlInputElement; } setCursorAt(position) { if (this.htmlInputElement.setSelectionRange) { this.htmlInputElement.focus(); this.htmlInputElement.setSelectionRange(position, position); } else if (this.htmlInputElement.createTextRange) { const textRange = this.htmlInputElement.createTextRange(); textRange.collapse(true); textRange.moveEnd('character', position); textRange.moveStart('character', position); textRange.select(); } } updateValueAndCursor(newRawValue, oldLength, selectionStart) { this.rawValue = newRawValue; const newLength = newRawValue.length; selectionStart = selectionStart - (oldLength - newLength); this.setCursorAt(selectionStart); } get canInputMoreNumbers() { const haventReachedMaxLength = !(this.rawValue.length >= this.htmlInputElement.maxLength && this.htmlInputElement.maxLength >= 0); const selectionStart = this.inputSelection.selectionStart; const selectionEnd = this.inputSelection.selectionEnd; const haveNumberSelected = !!(selectionStart !== selectionEnd && this.htmlInputElement.value.substring(selectionStart, selectionEnd).match(/[^0-9\u0660-\u0669\u06F0-\u06F9]/)); const startWithZero = (this.htmlInputElement.value.substring(0, 1) === '0'); return haventReachedMaxLength || haveNumberSelected || startWithZero; } get inputSelection() { let selectionStart = 0; let selectionEnd = 0; if (typeof this.htmlInputElement.selectionStart === 'number' && typeof this.htmlInputElement.selectionEnd === 'number') { selectionStart = this.htmlInputElement.selectionStart; selectionEnd = this.htmlInputElement.selectionEnd; } else { const range = document.selection.createRange(); if (range && range.parentElement() === this.htmlInputElement) { const lenght = this.htmlInputElement.value.length; const normalizedValue = this.htmlInputElement.value.replace(/\r\n/g, '\n'); const startRange = this.htmlInputElement.createTextRange(); startRange.moveToBookmark(range.getBookmark()); const endRange = this.htmlInputElement.createTextRange(); endRange.collapse(false); if (startRange.compareEndPoints('StartToEnd', endRange) > -1) { selectionStart = selectionEnd = lenght; } else { selectionStart = -startRange.moveStart('character', -lenght); selectionStart += normalizedValue.slice(0, selectionStart).split('\n').length - 1; if (startRange.compareEndPoints('EndToEnd', endRange) > -1) { selectionEnd = lenght; } else { selectionEnd = -startRange.moveEnd('character', -lenght); selectionEnd += normalizedValue.slice(0, selectionEnd).split('\n').length - 1; } } } } return { selectionStart: selectionStart, selectionEnd: selectionEnd }; } get rawValue() { return this.htmlInputElement && this.htmlInputElement.value; } set rawValue(value) { this._storedRawValue = value; if (this.htmlInputElement) { this.htmlInputElement.value = value; } } get storedRawValue() { return this._storedRawValue; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kubWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL2lucHV0L2RpcmVjdGl2ZXMvY3VycmVuY3kvY3VycmVuY3kubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFxQixnQkFBcUI7UUFBckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFLO0lBQzFDLENBQUM7SUFFRCxXQUFXLENBQUUsUUFBZ0I7UUFDM0IsSUFBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUc7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBRSxRQUFRLEVBQUUsUUFBUSxDQUFFLENBQUM7U0FDL0Q7YUFBTSxJQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUc7WUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFELFNBQVMsQ0FBQyxRQUFRLENBQUUsSUFBSSxDQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBRSxXQUFXLEVBQUUsUUFBUSxDQUFFLENBQUM7WUFDM0MsU0FBUyxDQUFDLFNBQVMsQ0FBRSxXQUFXLEVBQUUsUUFBUSxDQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFFLFdBQW1CLEVBQUUsU0FBaUIsRUFBRSxjQUFzQjtRQUNsRixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQ3JDLGNBQWMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxTQUFT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QUFDLENBQUMsRUFBRzt3QkFDOUQsWUFBWSxHQUFHLE1BQU0sQ0FBQztxQkFDdkI7eUJBQU07d0JBQ0wsWUFBWSxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBRSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUUsQ0FBQzt3QkFDM0QsWUFBWSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBRSxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO3FCQUNuRjtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxPQUFPO1lBQ0wsY0FBYyxFQUFFLGNBQWM7WUFDOUIsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBRSxLQUFhO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTdCLElBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFHO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEN1cnJlbmN5TWFuYWdlciB7XG5cbiAgcHJpdmF0ZSBfc3RvcmVkUmF3VmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBodG1sSW5wdXRFbGVtZW50OiBhbnkgKSB7XG4gIH1cblxuICBzZXRDdXJzb3JBdCggcG9zaXRpb246IG51bWJlciApOiB2b2lkIHtcbiAgICBpZiAoIHRoaXMuaHRtbElucHV0RWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSApIHtcbiAgICAgIHRoaXMuaHRtbElucHV0RWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5odG1sSW5wdXRFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKCBwb3NpdGlvbiwgcG9zaXRpb24gKTtcbiAgICB9IGVsc2UgaWYgKCB0aGlzLmh0bWxJbnB1dEVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlICkge1xuICAgICAgY29uc3QgdGV4dFJhbmdlID0gdGhpcy5odG1sSW5wdXRFbGVtZW50LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgdGV4dFJhbmdlLmNvbGxhcHNlKCB0cnVlICk7XG4gICAgICB0ZXh0UmFuZ2UubW92ZUVuZCggJ2NoYXJhY3RlcicsIHBvc2l0aW9uICk7XG4gICAgICB0ZXh0UmFuZ2UubW92ZVN0YXJ0KCAnY2hhcmFjdGVyJywgcG9zaXRpb24gKTtcbiAgICAgIHRleHRSYW5nZS5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWYWx1ZUFuZEN1cnNvciggbmV3UmF3VmFsdWU6IHN0cmluZywgb2xkTGVuZ3RoOiBudW1iZXIsIHNlbGVjdGlvblN0YXJ0OiBudW1iZXIgKTogdm9pZCB7XG4gICAgdGhpcy5yYXdWYWx1ZSA9IG5ld1Jhd1ZhbHVlO1xuICAgIGNvbnN0IG5ld0xlbmd0aCA9IG5ld1Jhd1ZhbHVlLmxlbmd0aDtcbiAgICBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0IC0gKG9sZExlbmd0aCAtIG5ld0xlbmd0aCk7XG4gICAgdGhpcy5zZXRDdXJzb3JBdCggc2VsZWN0aW9uU3RhcnQgKTtcbiAgfVxuXG4gIGdldCBjYW5JbnB1dE1vcmVOdW1iZXJzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhdmVudFJlYWNoZWRNYXhMZW5ndGggPSAhKHRoaXMucmF3VmFsdWUubGVuZ3RoID49IHRoaXMuaHRtbElucHV0RWxlbWVudC5tYXhMZW5ndGggJiYgdGhpcy5odG1sSW5wdXRFbGVtZW50Lm1heExlbmd0aCA+PSAwKTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaW5wdXRTZWxlY3Rpb24uc2VsZWN0aW9uU3RhcnQ7XG4gICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gdGhpcy5pbnB1dFNlbGVjdGlvbi5zZWxlY3Rpb25FbmQ7XG4gICAgY29uc3QgaGF2ZU51bWJlclNlbGVjdGVkID0gISEoc2VsZWN0aW9uU3RhcnQgIT09IHNlbGVjdGlvbkVuZCAmJlxuICAgIHRoaXMuaHRtbElucHV0RWxlbWVudC52YWx1ZS5zdWJzdHJpbmcoIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQgKS5tYXRjaCggL1teMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XS8gKSk7XG4gICAgY29uc3Qgc3RhcnRXaXRoWmVybyA9ICh0aGlzLmh0bWxJbnB1dEVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKCAwLCAxICkgPT09ICcwJyk7XG4gICAgcmV0dXJuIGhhdmVudFJlYWNoZWRNYXhMZW5ndGggfHwgaGF2ZU51bWJlclNlbGVjdGVkIHx8IHN0YXJ0V2l0aFplcm87XG4gIH1cblxuICBnZXQgaW5wdXRTZWxlY3Rpb24oKTogYW55IHtcbiAgICBsZXQgc2VsZWN0aW9uU3RhcnQgPSAwO1xuICAgIGxldCBzZWxlY3Rpb25FbmQgPSAwO1xuXG4gICAgaWYgKCB0eXBlb2YgdGhpcy5odG1sSW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdGhpcy5odG1sSW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZCA9PT0gJ251bWJlcicgKSB7XG4gICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMuaHRtbElucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICAgIHNlbGVjdGlvbkVuZCA9IHRoaXMuaHRtbElucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gKDxhbnk+ZG9jdW1lbnQpLnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuXG4gICAgICBpZiAoIHJhbmdlICYmIHJhbmdlLnBhcmVudEVsZW1lbnQoKSA9PT0gdGhpcy5odG1sSW5wdXRFbGVtZW50ICkge1xuICAgICAgICBjb25zdCBsZW5naHQgPSB0aGlzLmh0bWxJbnB1dEVsZW1lbnQudmFsdWUubGVuZ3RoO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmh0bWxJbnB1dEVsZW1lbnQudmFsdWUucmVwbGFjZSggL1xcclxcbi9nLCAnXFxuJyApO1xuICAgICAgICBjb25zdCBzdGFydFJhbmdlID0gdGhpcy5odG1sSW5wdXRFbGVtZW50LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgICBzdGFydFJhbmdlLm1vdmVUb0Jvb2ttYXJrKCByYW5nZS5nZXRCb29rbWFyaygpICk7XG4gICAgICAgIGNvbnN0IGVuZFJhbmdlID0gdGhpcy5odG1sSW5wdXRFbGVtZW50LmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgICBlbmRSYW5nZS5jb2xsYXBzZSggZmFsc2UgKTtcblxuICAgICAgICBpZiAoIHN0YXJ0UmFuZ2UuY29tcGFyZUVuZFBvaW50cyggJ1N0YXJ0VG9FbmQnLCBlbmRSYW5nZSApID4gLTEgKSB7XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25FbmQgPSBsZW5naHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSAtc3RhcnRSYW5nZS5tb3ZlU3RhcnQoICdjaGFyYWN0ZXInLCAtbGVuZ2h0ICk7XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQgKz0gbm9ybWFsaXplZFZhbHVlLnNsaWNlKCAwLCBzZWxlY3Rpb25TdGFydCApLnNwbGl0KCAnXFxuJyApLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICBpZiAoIHN0YXJ0UmFuZ2UuY29tcGFyZUVuZFBvaW50cyggJ0VuZFRvRW5kJywgZW5kUmFuZ2UgKSA+IC0xICkge1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gbGVuZ2h0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25FbmQgPSAtc3RhcnRSYW5nZS5tb3ZlRW5kKCAnY2hhcmFjdGVyJywgLWxlbmdodCApO1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kICs9IG5vcm1hbGl6ZWRWYWx1ZS5zbGljZSggMCwgc2VsZWN0aW9uRW5kICkuc3BsaXQoICdcXG4nICkubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0aW9uU3RhcnQ6IHNlbGVjdGlvblN0YXJ0LFxuICAgICAgc2VsZWN0aW9uRW5kOiBzZWxlY3Rpb25FbmRcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHJhd1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbElucHV0RWxlbWVudCAmJiB0aGlzLmh0bWxJbnB1dEVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZXQgcmF3VmFsdWUoIHZhbHVlOiBzdHJpbmcgKSB7XG4gICAgdGhpcy5fc3RvcmVkUmF3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICggdGhpcy5odG1sSW5wdXRFbGVtZW50ICkge1xuICAgICAgdGhpcy5odG1sSW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0b3JlZFJhd1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlZFJhd1ZhbHVlO1xuICB9XG59XG4iXX0=