diff --git a/extensions/amp-bind/0.1/bind-impl.js b/extensions/amp-bind/0.1/bind-impl.js index 9ce5ce0b7ef6..d720b4789136 100644 --- a/extensions/amp-bind/0.1/bind-impl.js +++ b/extensions/amp-bind/0.1/bind-impl.js @@ -3,7 +3,6 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; import {Deferred} from '#core/data-structures/promise'; import {Signals} from '#core/data-structures/signals'; import {isAmp4Email} from '#core/document/format'; -import {iterateCursor} from '#core/dom'; import {whenUpgradedToCustomElement} from '#core/dom/amp-element-helpers'; import {escapeCssSelectorIdent} from '#core/dom/css-selectors'; import {closestAncestorElementBySelector} from '#core/dom/query'; @@ -705,7 +704,7 @@ export class Bind { // created elements. Should do what does. const elements = this.ampdoc.getBody().querySelectorAll('AMP-BIND-MACRO'); const macros = /** @type {!Array} */ ([]); - iterateCursor(elements, (element) => { + elements.forEach((element) => { const argumentNames = (element.getAttribute('arguments') || '') .split(',') .map((s) => s.trim()); diff --git a/extensions/amp-date-picker/0.1/amp-date-picker.js b/extensions/amp-date-picker/0.1/amp-date-picker.js index 00eec5a9b8e4..d4c56247daa9 100644 --- a/extensions/amp-date-picker/0.1/amp-date-picker.js +++ b/extensions/amp-date-picker/0.1/amp-date-picker.js @@ -3,7 +3,7 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; import {Keys_Enum} from '#core/constants/key-codes'; import {FiniteStateMachine} from '#core/data-structures/finite-state-machine'; import {Deferred} from '#core/data-structures/promise'; -import {isRTL, iterateCursor, tryFocus} from '#core/dom'; +import {isRTL, tryFocus} from '#core/dom'; import {escapeCssSelectorIdent} from '#core/dom/css-selectors'; import {Layout_Enum, isLayoutSizeDefined} from '#core/dom/layout'; import { @@ -1310,7 +1310,7 @@ export class AmpDatePicker extends AMP.BaseElement { */ parseElementTemplates_(templates) { const parsed = []; - iterateCursor(templates, (template) => + templates.forEach((template) => parsed.push(this.parseElementTemplate_(template)) ); return parsed; diff --git a/extensions/amp-form/0.1/amp-form-textarea.js b/extensions/amp-form/0.1/amp-form-textarea.js index 1c91851583df..aae0fe567250 100644 --- a/extensions/amp-form/0.1/amp-form-textarea.js +++ b/extensions/amp-form/0.1/amp-form-textarea.js @@ -1,5 +1,5 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; -import {iterateCursor, removeElement} from '#core/dom'; +import {removeElement} from '#core/dom'; import {computedStyle, px, setStyle} from '#core/dom/style'; import {toArray} from '#core/types/array'; import {throttle} from '#core/types/function'; @@ -170,10 +170,10 @@ export function getHasOverflow(element) { /** * Attempt to resize all textarea elements - * @param {!IArrayLike} elements + * @param {!NodeList} elements */ function resizeTextareaElements(elements) { - iterateCursor(elements, (element) => { + elements.forEach((element) => { if ( element.tagName != 'TEXTAREA' || !element.hasAttribute(AMP_FORM_TEXTAREA_EXPAND_ATTR) diff --git a/extensions/amp-form/0.1/amp-form.js b/extensions/amp-form/0.1/amp-form.js index 2f538e626c42..84eaa43ba543 100644 --- a/extensions/amp-form/0.1/amp-form.js +++ b/extensions/amp-form/0.1/amp-form.js @@ -523,7 +523,7 @@ export class AmpForm { const validityElements = this.form_.querySelectorAll( '.user-valid, .user-invalid' ); - iterateCursor(validityElements, (element) => { + validityElements.forEach((element) => { element.classList.remove('user-valid'); element.classList.remove('user-invalid'); }); @@ -531,7 +531,7 @@ export class AmpForm { const messageElements = this.form_.querySelectorAll( '.visible[validation-for]' ); - iterateCursor(messageElements, (element) => { + messageElements.forEach((element) => { element.classList.remove('visible'); }); @@ -1401,7 +1401,7 @@ export class AmpForm { maybeFillField(field, key); } else if (formControls.length) { const fields = /** @type {!NodeList} */ (formControls); - iterateCursor(fields, (field) => maybeFillField(field, key)); + fields.forEach((field) => maybeFillField(field, key)); } }); } @@ -1434,7 +1434,7 @@ export class AmpForm { */ function checkUserValidityOnSubmission(form) { const elements = form.querySelectorAll('input,select,textarea,fieldset'); - iterateCursor(elements, (element) => checkUserValidity(element)); + elements.forEach((element) => checkUserValidity(element)); return checkUserValidity(form); } @@ -1477,7 +1477,7 @@ function removeValidityStateClasses(form) { const elements = form.querySelectorAll( `.${escapeCssSelectorIdent(validityState)}` ); - iterateCursor(elements, (element) => { + elements.forEach((element) => { dev().assertElement(element).classList.remove(validityState); }); } @@ -1620,8 +1620,7 @@ export class AmpFormService { /** * Install submission handler on all forms in the document. - * @param {?IArrayLike} forms - * @template T + * @param {NodeList} forms * @private */ installSubmissionHandlers_(forms) { @@ -1629,7 +1628,7 @@ export class AmpFormService { return; } - iterateCursor(forms, (form, index) => { + forms.forEach((form, index) => { const existingAmpForm = formOrNullForElement(form); if (!existingAmpForm) { new AmpForm(form, `amp-form-${index}`); diff --git a/extensions/amp-fx-collection/0.1/amp-fx-collection.js b/extensions/amp-fx-collection/0.1/amp-fx-collection.js index 0ea2fde2037c..728f22b01607 100644 --- a/extensions/amp-fx-collection/0.1/amp-fx-collection.js +++ b/extensions/amp-fx-collection/0.1/amp-fx-collection.js @@ -1,5 +1,4 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; -import {iterateCursor} from '#core/dom'; import {tryCallback} from '#core/error'; import {listen} from '#utils/event-helper'; @@ -49,7 +48,7 @@ export class AmpFxCollection { */ scan_() { const elements = this.ampdoc_.getRootNode().querySelectorAll('[amp-fx]'); - iterateCursor(elements, (element) => { + elements.forEach((element) => { if (this.seen_.includes(element)) { return; } diff --git a/extensions/amp-inline-gallery/0.1/amp-inline-gallery-slide.js b/extensions/amp-inline-gallery/0.1/amp-inline-gallery-slide.js index dfa03dd31aa5..22d9352d1f03 100644 --- a/extensions/amp-inline-gallery/0.1/amp-inline-gallery-slide.js +++ b/extensions/amp-inline-gallery/0.1/amp-inline-gallery-slide.js @@ -1,6 +1,5 @@ import {Layout_Enum} from '#core/dom/layout'; import {htmlFor} from '#core/dom/static-template'; -import {toArray} from '#core/types/array'; import {isExperimentOn} from '#experiments'; @@ -85,23 +84,17 @@ export class AmpInlineGallerySlide extends AMP.BaseElement { const attributionSlot = dom.querySelector( '.i-amphtml-inline-gallery-slide-persistent-slot' ); - const childNodesArray = toArray(this.element.childNodes); - childNodesArray - .filter((n) => { - return n.hasAttribute && n.getAttribute('slot') === 'caption'; - }) - .forEach((node) => captionSlot.appendChild(node)); - childNodesArray - .filter((n) => { - return !n.hasAttribute || !n.hasAttribute('slot'); - }) - .forEach((node) => contentSlot.appendChild(node)); - childNodesArray - .filter((n) => { - return n.hasAttribute && n.getAttribute('slot') === 'attribution'; - }) - .forEach((node) => attributionSlot.appendChild(node)); + this.element.childNodes.forEach((node) => { + const slot = node.getAttribute?.('slot'); + if (slot === 'caption') { + captionSlot.appendChild(node); + } else if (slot === 'attribution') { + attributionSlot.appendChild(node); + } else if (slot == null) { + contentSlot.appendChild(node); + } + }); this.element.appendChild(dom); } diff --git a/extensions/amp-inline-gallery/0.1/amp-inline-gallery.js b/extensions/amp-inline-gallery/0.1/amp-inline-gallery.js index 2228f3edd455..29e2d761d343 100644 --- a/extensions/amp-inline-gallery/0.1/amp-inline-gallery.js +++ b/extensions/amp-inline-gallery/0.1/amp-inline-gallery.js @@ -1,4 +1,3 @@ -import {iterateCursor} from '#core/dom'; import {Layout_Enum} from '#core/dom/layout'; import {scopedQuerySelector, scopedQuerySelectorAll} from '#core/dom/query'; import {toArray} from '#core/types/array'; @@ -92,14 +91,14 @@ class AmpInlineGallery extends AMP.BaseElement { * @private */ updateProgress_(total, index, offset, slides) { - iterateCursor( - scopedQuerySelectorAll(this.element, CHILDREN_FOR_PROGRESS_SELECTOR), - (el) => { - el.getImpl().then((pagination) => { - pagination.updateProgress(total, index, offset, slides); - }); - } - ); + scopedQuerySelectorAll( + this.element, + CHILDREN_FOR_PROGRESS_SELECTOR + ).forEach((el) => { + el.getImpl().then((pagination) => { + pagination.updateProgress(total, index, offset, slides); + }); + }); } /** @@ -137,14 +136,11 @@ class AmpInlineGallery extends AMP.BaseElement { const detail = getDetail(event); const index = detail['index']; - iterateCursor( - scopedQuerySelectorAll(this.element, CAROUSEL_SELECTOR), - (el) => { - el.getImpl().then((carousel) => { - carousel.goToSlide(index, {smoothScroll: true}); - }); - } - ); + scopedQuerySelectorAll(this.element, CAROUSEL_SELECTOR).forEach((el) => { + el.getImpl().then((carousel) => { + carousel.goToSlide(index, {smoothScroll: true}); + }); + }); } } diff --git a/extensions/amp-inputmask/0.1/amp-inputmask.js b/extensions/amp-inputmask/0.1/amp-inputmask.js index 2e7551be81bb..ce606dcd8377 100644 --- a/extensions/amp-inputmask/0.1/amp-inputmask.js +++ b/extensions/amp-inputmask/0.1/amp-inputmask.js @@ -1,5 +1,4 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; -import {iterateCursor} from '#core/dom'; import {listen} from '#utils/event-helper'; @@ -33,7 +32,7 @@ export class AmpInputmaskService { const maskElements = this.ampdoc .getRootNode() .querySelectorAll('input[mask]'); - iterateCursor(maskElements, (element) => { + maskElements.forEach((element) => { if (TextMask.isMasked(element)) { return; } diff --git a/extensions/amp-lightbox-gallery/0.1/service/lightbox-manager-impl.js b/extensions/amp-lightbox-gallery/0.1/service/lightbox-manager-impl.js index 00a0c238f141..87e6bfda2920 100644 --- a/extensions/amp-lightbox-gallery/0.1/service/lightbox-manager-impl.js +++ b/extensions/amp-lightbox-gallery/0.1/service/lightbox-manager-impl.js @@ -1,6 +1,5 @@ import {AmpEvents_Enum} from '#core/constants/amp-events'; import {CommonSignals_Enum} from '#core/constants/common-signals'; -import {iterateCursor} from '#core/dom'; import { childElement, childElementByAttr, @@ -153,7 +152,7 @@ export class LightboxManager { .getRootNode() .querySelectorAll('[lightbox],[data-lightbox]'); const processLightboxElement = this.processLightboxElement_.bind(this); - iterateCursor(matches, processLightboxElement); + matches.forEach(processLightboxElement); }); } diff --git a/extensions/amp-link-rewriter/0.1/scope.js b/extensions/amp-link-rewriter/0.1/scope.js index b28959cb9bc8..2ca4e42bb524 100644 --- a/extensions/amp-link-rewriter/0.1/scope.js +++ b/extensions/amp-link-rewriter/0.1/scope.js @@ -1,4 +1,3 @@ -import {iterateCursor} from '#core/dom'; import {closestAncestorElementBySelector} from '#core/dom/query'; /** @@ -18,7 +17,7 @@ export function getScopeElements(ampDoc, configOpts) { selection = doc.querySelectorAll(cssSelector); } - iterateCursor(selection, (element) => { + selection.forEach((element) => { if (hasAttributeValues(element, configOpts)) { filteredSelection.push(element); } diff --git a/extensions/amp-mustache/0.1/amp-mustache.js b/extensions/amp-mustache/0.1/amp-mustache.js index c5d58d8be3d4..47e9ac2201ab 100644 --- a/extensions/amp-mustache/0.1/amp-mustache.js +++ b/extensions/amp-mustache/0.1/amp-mustache.js @@ -1,4 +1,4 @@ -import {iterateCursor, templateContentClone} from '#core/dom'; +import {templateContentClone} from '#core/dom'; import {user} from '#utils/log'; @@ -85,7 +85,7 @@ export class AmpMustache extends BaseTemplate { */ processNestedTemplates_(content) { const templates = content.querySelectorAll('template'); - iterateCursor(templates, (nestedTemplate, index) => { + templates.forEach((nestedTemplate, index) => { const nestedTemplateKey = `__AMP_NESTED_TEMPLATE_${index}`; this.nestedTemplates_[nestedTemplateKey] = nestedTemplate./*OK*/ outerHTML; diff --git a/extensions/amp-mustache/0.2/amp-mustache.js b/extensions/amp-mustache/0.2/amp-mustache.js index e980e07af72a..0c2b59bb7084 100644 --- a/extensions/amp-mustache/0.2/amp-mustache.js +++ b/extensions/amp-mustache/0.2/amp-mustache.js @@ -1,4 +1,4 @@ -import {iterateCursor, templateContentClone} from '#core/dom'; +import {templateContentClone} from '#core/dom'; import {Purifier} from '#purifier'; @@ -88,7 +88,7 @@ export class AmpMustache extends BaseTemplate { */ processNestedTemplates_(content) { const templates = content.querySelectorAll('template'); - iterateCursor(templates, (template, index) => { + templates.forEach((template, index) => { const key = `__AMP_NESTED_TEMPLATE_${index}`; // Store the nested template markup, keyed by index. diff --git a/extensions/amp-story-auto-ads/0.1/story-ad-ui.js b/extensions/amp-story-auto-ads/0.1/story-ad-ui.js index fb316620f537..dccd2f8fde6e 100644 --- a/extensions/amp-story-auto-ads/0.1/story-ad-ui.js +++ b/extensions/amp-story-auto-ads/0.1/story-ad-ui.js @@ -1,4 +1,4 @@ -import {createElementWithAttributes, iterateCursor} from '#core/dom'; +import {createElementWithAttributes} from '#core/dom'; import {map} from '#core/types/object'; import {getWin} from '#core/window'; @@ -77,7 +77,7 @@ export function getStoryAdMetaTags(doc) { */ export function getStoryAdMetadataFromDoc(metaTags) { const vars = map(); - iterateCursor(metaTags, (tag) => { + metaTags.forEach((tag) => { const {content, name} = tag; if (name.startsWith(CTA_META_PREFIX)) { const key = name.split('amp-')[1]; @@ -98,7 +98,7 @@ export function getStoryAdMetadataFromDoc(metaTags) { */ export function getStoryAdMacroTags(metaTags) { const result = map(); - iterateCursor(metaTags, (tag) => { + metaTags.forEach((tag) => { const {content, name} = tag; // If the meta tag name is not alphanumerical, we would ignore it. if (/^[a-zA-Z0-9\-_]+$/.test(name)) { diff --git a/extensions/amp-story/1.0/amp-story-grid-layer.js b/extensions/amp-story/1.0/amp-story-grid-layer.js index 5606ddd15653..1ab88483d446 100644 --- a/extensions/amp-story/1.0/amp-story-grid-layer.js +++ b/extensions/amp-story/1.0/amp-story-grid-layer.js @@ -103,7 +103,7 @@ export class AmpStoryGridLayer extends AmpStoryBaseLayer { SUPPORTED_CSS_GRID_ATTRIBUTES_SELECTOR ); - Array.prototype.forEach.call(elementsToUpgradeStyles, (element) => { + elementsToUpgradeStyles.forEach((element) => { this.setCssGridStyles_(element); }); } diff --git a/extensions/amp-story/1.0/amp-story-page.js b/extensions/amp-story/1.0/amp-story-page.js index e555b175ad3a..48a5ba39b194 100644 --- a/extensions/amp-story/1.0/amp-story-page.js +++ b/extensions/amp-story/1.0/amp-story-page.js @@ -10,7 +10,6 @@ */ import {CommonSignals_Enum} from '#core/constants/common-signals'; import {Deferred} from '#core/data-structures/promise'; -import {iterateCursor} from '#core/dom'; import {whenUpgradedToCustomElement} from '#core/dom/amp-element-helpers'; import * as Preact from '#core/dom/jsx'; import {Layout_Enum} from '#core/dom/layout'; @@ -389,7 +388,7 @@ export class AmpStoryPage extends AMP.BaseElement { * play videos from an inactive page. */ delegateVideoAutoplay() { - iterateCursor(this.element.querySelectorAll('amp-video'), delegateAutoplay); + this.element.querySelectorAll('amp-video').forEach(delegateAutoplay); } /** @private */ @@ -413,7 +412,7 @@ export class AmpStoryPage extends AMP.BaseElement { */ markMediaElementsWithPreload_() { const mediaSet = this.element.querySelectorAll('amp-audio, amp-video'); - Array.prototype.forEach.call(mediaSet, (mediaItem) => { + mediaSet.forEach((mediaItem) => { mediaItem.setAttribute('preload', 'auto'); }); } @@ -738,18 +737,15 @@ export class AmpStoryPage extends AMP.BaseElement { ); const mediaSet = []; - iterateCursor(scopedQuerySelectorAll(this.element, selector), (el) => + scopedQuerySelectorAll(this.element, selector).forEach((el) => mediaSet.push(el) ); if (fie) { - iterateCursor( - scopedQuerySelectorAll( - fie.win.document.body, - selector.replace(/amp-story-grid-layer/g, '') - ), - (el) => mediaSet.push(el) - ); + scopedQuerySelectorAll( + fie.win.document.body, + selector.replace(/amp-story-grid-layer/g, '') + ).forEach((el) => mediaSet.push(el)); } return mediaSet; @@ -1420,7 +1416,7 @@ export class AmpStoryPage extends AMP.BaseElement { } } - Array.prototype.forEach.call(videoEls, (videoEl) => { + videoEls.forEach((videoEl) => { this.unlisteners_.push( listen(videoEl, 'playing', () => this.debounceToggleLoadingSpinner_(false) diff --git a/extensions/amp-story/1.0/amp-story.js b/extensions/amp-story/1.0/amp-story.js index 0a23929633fc..6a2088aa7bc5 100644 --- a/extensions/amp-story/1.0/amp-story.js +++ b/extensions/amp-story/1.0/amp-story.js @@ -2439,7 +2439,7 @@ export class AmpStory extends AMP.BaseElement { 'amp-story-cta-layer a' ); - Array.prototype.forEach.call(ctaAnchorEls, (ctaAnchorEl) => { + ctaAnchorEls.forEach((ctaAnchorEl) => { ctaAnchorEl.setAttribute('data-vars-story-page-id', pageId); ctaAnchorEl.setAttribute('data-vars-story-page-index', pageIndex); }); diff --git a/extensions/amp-story/1.0/sources.js b/extensions/amp-story/1.0/sources.js index c0829065c60d..a798b5a7c92b 100644 --- a/extensions/amp-story/1.0/sources.js +++ b/extensions/amp-story/1.0/sources.js @@ -34,7 +34,7 @@ export class Sources { * @private */ applyTracksToElement_(element) { - Array.prototype.forEach.call(this.trackEls_, (trackEl) => { + this.trackEls_.forEach((trackEl) => { const track = document.createElement('track'); track.id = trackEl.id; track.kind = trackEl.kind; @@ -65,9 +65,7 @@ export class Sources { element.setAttribute('src', this.srcAttr_); } - Array.prototype.forEach.call(this.srcEls_, (srcEl) => - element.appendChild(srcEl) - ); + this.srcEls_.forEach((srcEl) => element.appendChild(srcEl)); if (element.changedSources) { element.changedSources(); } diff --git a/extensions/amp-story/1.0/utils.js b/extensions/amp-story/1.0/utils.js index 48ef45fc7740..824e035a1f7f 100644 --- a/extensions/amp-story/1.0/utils.js +++ b/extensions/amp-story/1.0/utils.js @@ -299,7 +299,7 @@ export function setTextBackgroundColor(element) { TEXT_BACKGROUND_COLOR_SELECTOR ); - Array.prototype.forEach.call(elementsToUpgradeStyles, (el) => { + elementsToUpgradeStyles.forEach((el) => { const color = el.getAttribute(TEXT_BACKGROUND_COLOR_ATTRIBUTE_NAME); setStyle(el, 'background-color', color); }); diff --git a/extensions/amp-subscriptions/0.1/crypto-handler.js b/extensions/amp-subscriptions/0.1/crypto-handler.js index 13111e646987..13acdb667d84 100644 --- a/extensions/amp-subscriptions/0.1/crypto-handler.js +++ b/extensions/amp-subscriptions/0.1/crypto-handler.js @@ -1,4 +1,3 @@ -import {iterateCursor} from '#core/dom'; import {toArray} from '#core/types/array'; import {tryParseJson} from '#core/types/object/json'; import {padStart} from '#core/types/string'; @@ -111,7 +110,7 @@ export class CryptoHandler { .getRootNode() .querySelectorAll('script[ciphertext]'); const promises = []; - iterateCursor(encryptedSections, (encryptedSection) => { + encryptedSections.forEach((encryptedSection) => { const text = encryptedSection.textContent.replace(/\s+/g, ''); const contentBuffer = base64Decode(text).buffer; const iv = contentBuffer.slice(0, 12); diff --git a/extensions/amp-truncate-text/0.1/amp-truncate-text.js b/extensions/amp-truncate-text/0.1/amp-truncate-text.js index 7d5f3d1bbd39..99f7cba85c96 100644 --- a/extensions/amp-truncate-text/0.1/amp-truncate-text.js +++ b/extensions/amp-truncate-text/0.1/amp-truncate-text.js @@ -1,4 +1,3 @@ -import {iterateCursor} from '#core/dom'; import { closestAncestorElementBySelector, realChildNodes, @@ -126,18 +125,15 @@ export class AmpTruncateText extends AMP.BaseElement { '.i-amphtml-truncate-persistent-slot' ); - iterateCursor(this.element.querySelectorAll('[slot="collapsed"]'), (el) => { + this.element.querySelectorAll('[slot="collapsed"]').forEach((el) => { this.collapsedSlot_.appendChild(el); }); - iterateCursor(this.element.querySelectorAll('[slot="expanded"]'), (el) => { + this.element.querySelectorAll('[slot="expanded"]').forEach((el) => { this.expandedSlot_.appendChild(el); }); - iterateCursor( - this.element.querySelectorAll('[slot="persistent"]'), - (el) => { - this.persistentSlot_.appendChild(el); - } - ); + this.element.querySelectorAll('[slot="persistent"]').forEach((el) => { + this.persistentSlot_.appendChild(el); + }); realChildNodes(this.element).forEach((node) => { defaultSlot.appendChild(node); }); diff --git a/extensions/amp-video/0.1/video-cache.js b/extensions/amp-video/0.1/video-cache.js index d66dc7b8cc51..d01202c70ef4 100644 --- a/extensions/amp-video/0.1/video-cache.js +++ b/extensions/amp-video/0.1/video-cache.js @@ -1,8 +1,4 @@ -import { - createElementWithAttributes, - iterateCursor, - removeElement, -} from '#core/dom'; +import {createElementWithAttributes, removeElement} from '#core/dom'; import {matches} from '#core/dom/query'; import {toArray} from '#core/types/array'; @@ -210,8 +206,7 @@ function maybeReplaceSrcWithSourceElement(videoEl, win) { // Remove all existing sources as they are never supposed to play for a video // that has a src, cf https://html.spec.whatwg.org/#concept-media-load-algorithm - const sourceEls = videoEl.querySelectorAll('source'); - iterateCursor(sourceEls, (el) => removeElement(el)); + videoEl.querySelectorAll('source').forEach(removeElement); videoEl.insertBefore(sourceEl, videoEl.firstChild); } diff --git a/src/service/ampdoc-impl.js b/src/service/ampdoc-impl.js index 213699af6f66..e4e60c56648b 100644 --- a/src/service/ampdoc-impl.js +++ b/src/service/ampdoc-impl.js @@ -8,7 +8,7 @@ import { getDocumentVisibilityState, removeDocumentVisibilityChangeListener, } from '#core/document/visibility'; -import {iterateCursor, rootNodeFor, waitForBodyOpenPromise} from '#core/dom'; +import {rootNodeFor, waitForBodyOpenPromise} from '#core/dom'; import {isEnumValue} from '#core/types'; import {map} from '#core/types/object'; import {parseQueryString} from '#core/types/string/url'; @@ -356,7 +356,7 @@ export class AmpDoc { const metaEls = dev() .assertElement(this.win.document.head) .querySelectorAll('meta[name]'); - iterateCursor(metaEls, (metaEl) => { + metaEls.forEach((metaEl) => { const name = metaEl.getAttribute('name'); const content = metaEl.getAttribute('content'); if (!name || content === null) { diff --git a/src/shadow-embed.js b/src/shadow-embed.js index 77178909bb99..946eb65c8f6f 100644 --- a/src/shadow-embed.js +++ b/src/shadow-embed.js @@ -1,4 +1,3 @@ -import {iterateCursor} from '#core/dom'; import {escapeCssSelectorIdent} from '#core/dom/css-selectors'; import {setInitialDisplay, setStyle} from '#core/dom/style'; import { @@ -52,7 +51,7 @@ export function createShadowRoot(hostElement) { Object.defineProperty(shadowRoot, 'styleSheets', { get: function () { const items = []; - iterateCursor(shadowRoot.childNodes, (child) => { + shadowRoot.childNodes.forEach((child) => { if (child.tagName === 'STYLE') { items.push(child.sheet); } diff --git a/src/utils/dom-writer.js b/src/utils/dom-writer.js index 766bf05ca84b..c4d6d5b35ccb 100644 --- a/src/utils/dom-writer.js +++ b/src/utils/dom-writer.js @@ -1,5 +1,5 @@ import {devAssert} from '#core/assert'; -import {iterateCursor, removeElement} from '#core/dom'; +import {removeElement} from '#core/dom'; import {childElementsByTag} from '#core/dom/query'; import {Services} from '#service'; @@ -330,8 +330,5 @@ export class DomWriterBulk { * @param {!Element} parent */ export function removeNoScriptElements(parent) { - const noscriptElements = childElementsByTag(parent, 'noscript'); - iterateCursor(noscriptElements, (element) => { - removeElement(element); - }); + childElementsByTag(parent, 'noscript').forEach(removeElement); }