{"version":3,"file":"character-DXiz_YZO.js","sources":["../../../app/javascript/controllers/compose/models/character.js"],"sourcesContent":["class Character {\n static fromPiece(piece) {\n return new Character(piece?.string?.charAt(0) || '')\n }\n\n static fromKeyboardEvent(event) {\n return new Character(event.key)\n }\n\n constructor(key) {\n this.key = key\n }\n\n get isWhitespace() {\n return this.key === ' '\n }\n\n get isEmptySpace() {\n return this.key === ''\n }\n\n get isZeroWidthNonJoinerSpace() {\n return this.key.charCodeAt(0) === 8204\n }\n\n get isLineFeed() {\n return this.key.charCodeAt(0) === 10\n }\n\n get isOpeningBrace() {\n return this.key === '{'\n }\n\n get isAstrix() {\n return this.key === '*'\n }\n\n get isClosingBrace() {\n return this.key === '}'\n }\n\n get isAtSymbol() {\n return this.key === '@'\n }\n\n get isForwardSlash() {\n return this.key === '\\/'\n }\n}\n\nclass KeyboardKey {\n static fromKeyboardEvent(event) {\n return new KeyboardKey(event)\n }\n\n constructor(event) {\n this.key = event.key\n this.event = event\n }\n\n get isHotkey() {\n return this.activateBold\n || this.activateItalic\n || this.activateLink\n || this.isShiftEnter\n || this.isEnter\n || this.isPasting\n || this.isEscape\n }\n\n get length() {\n return this.key.length\n }\n\n get isEscape() {\n return this.key === 'Escape'\n }\n\n get activateBold() {\n return (this.event.metaKey || this.event.ctrlKey) && this.key === 'b'\n }\n\n get activateItalic() {\n return (this.event.metaKey || this.event.ctrlKey) && this.key === 'i'\n }\n\n get activateLink() {\n return (this.event.metaKey || this.event.ctrlKey) && this.key === 'k'\n }\n\n get isPasting() {\n return (this.event.metaKey || this.event.ctrlKey) && this.key === 'v'\n }\n\n get isShiftEnter() {\n return this.isShift && this.isEnter\n }\n\n get isShift() {\n return this.event.shiftKey || this.key === 'Shift'\n }\n\n get isEnter() {\n return this.key === 'Enter'\n }\n\n get isArrow() {\n return ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(this.key)\n }\n\n get isLeftArrow() {\n return this.key === 'ArrowLeft'\n }\n\n get isRightArrow() {\n return this.key === 'ArrowRight'\n }\n\n get isVerticalArrow() {\n return this.isUpArrow || this.isDownArrow\n }\n\n get isUpArrow() {\n return this.key === 'ArrowUp'\n }\n\n get isDownArrow() {\n return this.key === 'ArrowDown'\n }\n\n get isWhitespace() {\n return this.key === ' '\n }\n\n get hasAnyModifier() {\n return this.event.metaKey || this.event.ctrlKey\n }\n\n get isTab() {\n return this.key === 'Tab'\n }\n\n get isBackspace() {\n return this.key === 'Backspace'\n }\n\n get isAlphanumeric() {\n if(this.isShift) {\n return this.key !== 'Shift' && !this.isPunctuation\n }\n\n return /^[A-Za-z0-9]$/i.test(this.key) && !this.isPunctuation && !this.isWhitespace && !this.hasAnyModifier && !this.isArrow\n }\n\n get isAlphabetic() {\n return /^[a-zA-Z]$/i.test(this.key)\n }\n\n get isNumeric() {\n return /^[0-9]$/.test(this.key) && this.length === 1\n }\n\n get isPunctuation() {\n return /^[.,:;!?]$/i.test(this.key)\n }\n}\n\nexport { Character, KeyboardKey }\n"],"names":["Character","piece","_a","event","key","KeyboardKey"],"mappings":"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"}