From 43e20245294bed250ba949be414a1dff3d8d45fb Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Mon, 25 Jul 2016 20:43:35 -0700 Subject: Cleanup --- ext/fg/js/client.js | 10 ++---- ext/fg/js/source-element.js | 76 +++++++++++++++++++++++++++++++++++++++++++++ ext/fg/js/source-image.js | 65 -------------------------------------- ext/fg/js/source-input.js | 69 ---------------------------------------- 4 files changed, 79 insertions(+), 141 deletions(-) create mode 100644 ext/fg/js/source-element.js delete mode 100644 ext/fg/js/source-image.js delete mode 100644 ext/fg/js/source-input.js (limited to 'ext/fg/js') diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index a98f715a..34a1a605 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -211,13 +211,9 @@ class Client { static textSourceFromPoint(point) { const element = document.elementFromPoint(point.x, point.y); if (element !== null) { - switch (element.nodeName) { - case 'IMG': - return new TextSourceImage(element); - case 'INPUT': - case 'BUTTON': - case 'TEXTAREA': - return new TextSourceInput(element); + const names = ['IMG', 'INPUT', 'BUTTON', 'TEXTAREA']; + if (names.indexOf(element.nodeName) !== -1) { + return new TextSourceElement(element); } } diff --git a/ext/fg/js/source-element.js b/ext/fg/js/source-element.js new file mode 100644 index 00000000..3110ed53 --- /dev/null +++ b/ext/fg/js/source-element.js @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2016 Alex Yatskov + * Author: Alex Yatskov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +class TextSourceElement { + constructor(element, length=-1) { + this.element = element; + this.length = length; + } + + clone() { + return new TextSourceElement(this.element, this.length); + } + + text() { + const text = this.textRaw(); + return this.length < 0 ? text : text.substring(0, this.length); + } + + textRaw() { + switch (this.element.nodeName) { + case 'BUTTON': + return this.element.innerHTML; + case 'IMG': + return this.element.getAttribute('alt'); + default: + return this.element.value; + } + } + + setStartOffset(length) { + // NOP + return 0; + } + + setEndOffset(length) { + this.length = length; + return length; + } + + containsPoint(point) { + const rect = this.getRect(); + return point.x >= rect.left && point.x <= rect.right; + } + + getRect() { + return this.element.getBoundingClientRect(); + } + + select() { + // NOP + } + + deselect() { + // NOP + } + + equals(other) { + return other.element && other.textRaw() == this.textRaw(); + } +} diff --git a/ext/fg/js/source-image.js b/ext/fg/js/source-image.js deleted file mode 100644 index 319f25fe..00000000 --- a/ext/fg/js/source-image.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2016 Alex Yatskov - * Author: Alex Yatskov - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -class TextSourceImage { - constructor(image) { - this.img = image; - this.length = -1; - } - - text() { - const text = this.textRaw(); - return this.length < 0 ? text : text.substring(0, this.length); - } - - textRaw() { - return this.img.getAttribute('alt') || ''; - } - - setStartOffset(length) { - // NOP - return 0; - } - - setEndOffset(length) { - this.length = length; - return length; - } - - containsPoint(point) { - const rect = this.getRect(); - return point.x >= rect.left && point.x <= rect.right; - } - - getRect() { - return this.img.getBoundingClientRect(); - } - - select() { - // NOP - } - - deselect() { - // NOP - } - - equals(other) { - return other.img && other.textRaw() == this.textRaw(); - } -} diff --git a/ext/fg/js/source-input.js b/ext/fg/js/source-input.js deleted file mode 100644 index d3c92793..00000000 --- a/ext/fg/js/source-input.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2016 Alex Yatskov - * Author: Alex Yatskov - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -class TextSourceInput { - constructor(input, length=-1) { - this.input = input; - this.length = length; - } - - clone() { - return new TextSourceInput(this.input, this.length); - } - - text() { - const text = this.textRaw(); - return this.length < 0 ? text : text.substring(0, this.length); - } - - textRaw() { - return this.input.nodeName === 'BUTTON' ? this.input.innerHTML : this.input.value; - } - - setStartOffset(length) { - // NOP - return 0; - } - - setEndOffset(length) { - this.length = length; - return length; - } - - containsPoint(point) { - const rect = this.getRect(); - return point.x >= rect.left && point.x <= rect.right; - } - - getRect() { - return this.input.getBoundingClientRect(); - } - - select() { - // NOP - } - - deselect() { - // NOP - } - - equals(other) { - return other.input && other.textRaw() == this.textRaw(); - } -} -- cgit v1.2.3