From c60d0e7392fc708e961614d6b756a045de74f458 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Tue, 30 Apr 2019 14:00:07 +0900 Subject: Rename .js/.jsx to .ts/.tsx --- src/shared/utils/dom.js | 108 ----------------------------------------------- src/shared/utils/dom.ts | 108 +++++++++++++++++++++++++++++++++++++++++++++++ src/shared/utils/keys.js | 89 -------------------------------------- src/shared/utils/keys.ts | 89 ++++++++++++++++++++++++++++++++++++++ src/shared/utils/re.js | 6 --- src/shared/utils/re.ts | 6 +++ 6 files changed, 203 insertions(+), 203 deletions(-) delete mode 100644 src/shared/utils/dom.js create mode 100644 src/shared/utils/dom.ts delete mode 100644 src/shared/utils/keys.js create mode 100644 src/shared/utils/keys.ts delete mode 100644 src/shared/utils/re.js create mode 100644 src/shared/utils/re.ts (limited to 'src/shared/utils') diff --git a/src/shared/utils/dom.js b/src/shared/utils/dom.js deleted file mode 100644 index 974d534..0000000 --- a/src/shared/utils/dom.js +++ /dev/null @@ -1,108 +0,0 @@ -const isContentEditable = (element) => { - return element.hasAttribute('contenteditable') && ( - element.getAttribute('contenteditable').toLowerCase() === 'true' || - element.getAttribute('contenteditable').toLowerCase() === '' - ); -}; - -const rectangleCoordsRect = (coords) => { - let [left, top, right, bottom] = coords.split(',').map(n => Number(n)); - return { left, top, right, bottom }; -}; - -const circleCoordsRect = (coords) => { - let [x, y, r] = coords.split(',').map(n => Number(n)); - return { - left: x - r, - top: y - r, - right: x + r, - bottom: y + r, - }; -}; - -const polygonCoordsRect = (coords) => { - let params = coords.split(','); - let minx = Number(params[0]), - maxx = Number(params[0]), - miny = Number(params[1]), - maxy = Number(params[1]); - let len = Math.floor(params.length / 2); - for (let i = 2; i < len; i += 2) { - let x = Number(params[i]), - y = Number(params[i + 1]); - if (x < minx) { - minx = x; - } - if (x > maxx) { - maxx = x; - } - if (y < miny) { - miny = y; - } - if (y > maxy) { - maxy = y; - } - } - return { left: minx, top: miny, right: maxx, bottom: maxy }; -}; - -const viewportRect = (e) => { - if (e.tagName !== 'AREA') { - return e.getBoundingClientRect(); - } - - let mapElement = e.parentNode; - let imgElement = document.querySelector(`img[usemap="#${mapElement.name}"]`); - let { - left: mapLeft, - top: mapTop - } = imgElement.getBoundingClientRect(); - let coords = e.getAttribute('coords'); - let rect = { left: 0, top: 0, right: 0, bottom: 0 }; - switch (e.getAttribute('shape')) { - case 'rect': - case 'rectangle': - rect = rectangleCoordsRect(coords); - break; - case 'circ': - case 'circle': - rect = circleCoordsRect(coords); - break; - case 'poly': - case 'polygon': - rect = polygonCoordsRect(coords); - break; - } - return { - left: rect.left + mapLeft, - top: rect.top + mapTop, - right: rect.right + mapLeft, - bottom: rect.bottom + mapTop, - }; -}; - -const isVisible = (element) => { - let rect = element.getBoundingClientRect(); - let style = window.getComputedStyle(element); - - if (style.overflow !== 'visible' && (rect.width === 0 || rect.height === 0)) { - return false; - } - if (rect.right < 0 && rect.bottom < 0) { - return false; - } - if (window.innerWidth < rect.left && window.innerHeight < rect.top) { - return false; - } - if (element.nodeName === 'INPUT' && element.type.toLowerCase() === 'hidden') { - return false; - } - - let { display, visibility } = window.getComputedStyle(element); - if (display === 'none' || visibility === 'hidden') { - return false; - } - return true; -}; - -export { isContentEditable, viewportRect, isVisible }; diff --git a/src/shared/utils/dom.ts b/src/shared/utils/dom.ts new file mode 100644 index 0000000..974d534 --- /dev/null +++ b/src/shared/utils/dom.ts @@ -0,0 +1,108 @@ +const isContentEditable = (element) => { + return element.hasAttribute('contenteditable') && ( + element.getAttribute('contenteditable').toLowerCase() === 'true' || + element.getAttribute('contenteditable').toLowerCase() === '' + ); +}; + +const rectangleCoordsRect = (coords) => { + let [left, top, right, bottom] = coords.split(',').map(n => Number(n)); + return { left, top, right, bottom }; +}; + +const circleCoordsRect = (coords) => { + let [x, y, r] = coords.split(',').map(n => Number(n)); + return { + left: x - r, + top: y - r, + right: x + r, + bottom: y + r, + }; +}; + +const polygonCoordsRect = (coords) => { + let params = coords.split(','); + let minx = Number(params[0]), + maxx = Number(params[0]), + miny = Number(params[1]), + maxy = Number(params[1]); + let len = Math.floor(params.length / 2); + for (let i = 2; i < len; i += 2) { + let x = Number(params[i]), + y = Number(params[i + 1]); + if (x < minx) { + minx = x; + } + if (x > maxx) { + maxx = x; + } + if (y < miny) { + miny = y; + } + if (y > maxy) { + maxy = y; + } + } + return { left: minx, top: miny, right: maxx, bottom: maxy }; +}; + +const viewportRect = (e) => { + if (e.tagName !== 'AREA') { + return e.getBoundingClientRect(); + } + + let mapElement = e.parentNode; + let imgElement = document.querySelector(`img[usemap="#${mapElement.name}"]`); + let { + left: mapLeft, + top: mapTop + } = imgElement.getBoundingClientRect(); + let coords = e.getAttribute('coords'); + let rect = { left: 0, top: 0, right: 0, bottom: 0 }; + switch (e.getAttribute('shape')) { + case 'rect': + case 'rectangle': + rect = rectangleCoordsRect(coords); + break; + case 'circ': + case 'circle': + rect = circleCoordsRect(coords); + break; + case 'poly': + case 'polygon': + rect = polygonCoordsRect(coords); + break; + } + return { + left: rect.left + mapLeft, + top: rect.top + mapTop, + right: rect.right + mapLeft, + bottom: rect.bottom + mapTop, + }; +}; + +const isVisible = (element) => { + let rect = element.getBoundingClientRect(); + let style = window.getComputedStyle(element); + + if (style.overflow !== 'visible' && (rect.width === 0 || rect.height === 0)) { + return false; + } + if (rect.right < 0 && rect.bottom < 0) { + return false; + } + if (window.innerWidth < rect.left && window.innerHeight < rect.top) { + return false; + } + if (element.nodeName === 'INPUT' && element.type.toLowerCase() === 'hidden') { + return false; + } + + let { display, visibility } = window.getComputedStyle(element); + if (display === 'none' || visibility === 'hidden') { + return false; + } + return true; +}; + +export { isContentEditable, viewportRect, isVisible }; diff --git a/src/shared/utils/keys.js b/src/shared/utils/keys.js deleted file mode 100644 index f024069..0000000 --- a/src/shared/utils/keys.js +++ /dev/null @@ -1,89 +0,0 @@ -const modifiedKeyName = (name) => { - if (name === ' ') { - return 'Space'; - } - if (name.length === 1) { - return name; - } else if (name === 'Escape') { - return 'Esc'; - } - return name; -}; - -const fromKeyboardEvent = (e) => { - let key = modifiedKeyName(e.key); - let shift = e.shiftKey; - if (key.length === 1 && key.toUpperCase() === key.toLowerCase()) { - // make shift false for symbols to enable key bindings by symbold keys. - // But this limits key bindings by symbol keys with Shift (such as Shift+$>. - shift = false; - } - - return { - key: modifiedKeyName(e.key), - shiftKey: shift, - ctrlKey: e.ctrlKey, - altKey: e.altKey, - metaKey: e.metaKey, - }; -}; - -const fromMapKey = (key) => { - if (key.startsWith('<') && key.endsWith('>')) { - let inner = key.slice(1, -1); - let shift = inner.includes('S-'); - let base = inner.slice(inner.lastIndexOf('-') + 1); - if (shift && base.length === 1) { - base = base.toUpperCase(); - } else if (!shift && base.length === 1) { - base = base.toLowerCase(); - } - return { - key: base, - shiftKey: inner.includes('S-'), - ctrlKey: inner.includes('C-'), - altKey: inner.includes('A-'), - metaKey: inner.includes('M-'), - }; - } - return { - key: key, - shiftKey: key.toLowerCase() !== key, - ctrlKey: false, - altKey: false, - metaKey: false, - }; -}; - -const fromMapKeys = (keys) => { - const fromMapKeysRecursive = (remainings, mappedKeys) => { - if (remainings.length === 0) { - return mappedKeys; - } - - let nextPos = 1; - if (remainings.startsWith('<')) { - let ltPos = remainings.indexOf('>'); - if (ltPos > 0) { - nextPos = ltPos + 1; - } - } - - return fromMapKeysRecursive( - remainings.slice(nextPos), - mappedKeys.concat([fromMapKey(remainings.slice(0, nextPos))]) - ); - }; - - return fromMapKeysRecursive(keys, []); -}; - -const equals = (e1, e2) => { - return e1.key === e2.key && - e1.ctrlKey === e2.ctrlKey && - e1.metaKey === e2.metaKey && - e1.altKey === e2.altKey && - e1.shiftKey === e2.shiftKey; -}; - -export { fromKeyboardEvent, fromMapKey, fromMapKeys, equals }; diff --git a/src/shared/utils/keys.ts b/src/shared/utils/keys.ts new file mode 100644 index 0000000..f024069 --- /dev/null +++ b/src/shared/utils/keys.ts @@ -0,0 +1,89 @@ +const modifiedKeyName = (name) => { + if (name === ' ') { + return 'Space'; + } + if (name.length === 1) { + return name; + } else if (name === 'Escape') { + return 'Esc'; + } + return name; +}; + +const fromKeyboardEvent = (e) => { + let key = modifiedKeyName(e.key); + let shift = e.shiftKey; + if (key.length === 1 && key.toUpperCase() === key.toLowerCase()) { + // make shift false for symbols to enable key bindings by symbold keys. + // But this limits key bindings by symbol keys with Shift (such as Shift+$>. + shift = false; + } + + return { + key: modifiedKeyName(e.key), + shiftKey: shift, + ctrlKey: e.ctrlKey, + altKey: e.altKey, + metaKey: e.metaKey, + }; +}; + +const fromMapKey = (key) => { + if (key.startsWith('<') && key.endsWith('>')) { + let inner = key.slice(1, -1); + let shift = inner.includes('S-'); + let base = inner.slice(inner.lastIndexOf('-') + 1); + if (shift && base.length === 1) { + base = base.toUpperCase(); + } else if (!shift && base.length === 1) { + base = base.toLowerCase(); + } + return { + key: base, + shiftKey: inner.includes('S-'), + ctrlKey: inner.includes('C-'), + altKey: inner.includes('A-'), + metaKey: inner.includes('M-'), + }; + } + return { + key: key, + shiftKey: key.toLowerCase() !== key, + ctrlKey: false, + altKey: false, + metaKey: false, + }; +}; + +const fromMapKeys = (keys) => { + const fromMapKeysRecursive = (remainings, mappedKeys) => { + if (remainings.length === 0) { + return mappedKeys; + } + + let nextPos = 1; + if (remainings.startsWith('<')) { + let ltPos = remainings.indexOf('>'); + if (ltPos > 0) { + nextPos = ltPos + 1; + } + } + + return fromMapKeysRecursive( + remainings.slice(nextPos), + mappedKeys.concat([fromMapKey(remainings.slice(0, nextPos))]) + ); + }; + + return fromMapKeysRecursive(keys, []); +}; + +const equals = (e1, e2) => { + return e1.key === e2.key && + e1.ctrlKey === e2.ctrlKey && + e1.metaKey === e2.metaKey && + e1.altKey === e2.altKey && + e1.shiftKey === e2.shiftKey; +}; + +export { fromKeyboardEvent, fromMapKey, fromMapKeys, equals }; diff --git a/src/shared/utils/re.js b/src/shared/utils/re.js deleted file mode 100644 index 7db9091..0000000 --- a/src/shared/utils/re.js +++ /dev/null @@ -1,6 +0,0 @@ -const fromWildcard = (pattern) => { - let regexStr = '^' + pattern.replace(/\*/g, '.*') + '$'; - return new RegExp(regexStr); -}; - -export { fromWildcard }; diff --git a/src/shared/utils/re.ts b/src/shared/utils/re.ts new file mode 100644 index 0000000..7db9091 --- /dev/null +++ b/src/shared/utils/re.ts @@ -0,0 +1,6 @@ +const fromWildcard = (pattern) => { + let regexStr = '^' + pattern.replace(/\*/g, '.*') + '$'; + return new RegExp(regexStr); +}; + +export { fromWildcard }; -- cgit v1.2.3