Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 1x 1x 1x 1x 1x | import { traverseUpDomWithSlots } from './traverse-up-dom.js' /** * Check whether the element is translatable * * It respects the `translate` global attribute: * * > The translate attribute is an enumerated attribute that is used to * > specify whether an element's attribute values and the values of its * > Text node children are to be translated when the page is localized, * > or whether to leave them unchanged. * * The translate will apply to all elements, including non-HTML elements * @see https://html.spec.whatwg.org/multipage/dom.html#attr-translate * @param {Element} element - t * @returns {boolean} true if element is translatable, false otherwise */ export function isElementTranslatable (element) { // the vast majority of element are HTMLElement, so validating it first is good if (element instanceof HTMLElement) { return element.translate } if (element == null) { return false } for (const node of traverseUpDomWithSlots(element)) { const value = translateValue(node) if (value != null) { return value } } return true } /** * @param {Element} element - target element, may have `translate` attribute defined or not * @returns {boolean | null} null if translateValue is invalid, true if translate is enabled, false otherwise */ function translateValue (element) { if (element instanceof HTMLElement) { return element.translate } const translateValue = element.getAttribute('translate') if (translateValue === '' || translateValue === 'yes') { return true } else if (translateValue === 'no') { return false } return null } |