Skip to content

Commit

Permalink
♻️ Extract CSS module (ampproject#21007)
Browse files Browse the repository at this point in the history
* Extract CSS module

Extracts CSS specific functions from `src/dom.js` into `src/css.js`.

* Fix build

* Move assertIsName into css module

* Move test
  • Loading branch information
jridgewell authored and Noran Azmy committed Mar 22, 2019
1 parent 13db695 commit f99eb3b
Show file tree
Hide file tree
Showing 29 changed files with 236 additions and 188 deletions.
2 changes: 1 addition & 1 deletion build-system/dep-check-config.js
Expand Up @@ -86,7 +86,7 @@ exports.rules = [
'src/sanitizer.js->third_party/caja/html-sanitizer.js',
'extensions/amp-viz-vega/**->third_party/vega/vega.js',
'extensions/amp-viz-vega/**->third_party/d3/d3.js',
'src/dom.js->third_party/css-escape/css-escape.js',
'src/css.js->third_party/css-escape/css-escape.js',
'src/shadow-embed.js->third_party/webcomponentsjs/ShadowCSS.js',
'third_party/timeagojs/timeago.js->' +
'third_party/timeagojs/timeago-locales.js',
Expand Down
4 changes: 3 additions & 1 deletion build-system/eslint-rules/no-import-rename.js
Expand Up @@ -44,9 +44,11 @@ const imports = {
'setStyle',
'setStyles',
],
'src/dom': [
'src/css': [
'escapeCssSelectorIdent',
'escapeCssSelectorNth',
],
'src/dom': [
'scopedQuerySelector',
'scopedQuerySelectorAll',
],
Expand Down
2 changes: 1 addition & 1 deletion build-system/eslint-rules/query-selector.js
Expand Up @@ -146,7 +146,7 @@ module.exports = function(context) {
context.report({
node: expression,
message: 'Each selector value must be escaped by ' +
'escapeCssSelectorIdent in src/dom.js',
'escapeCssSelectorIdent in src/css.js',
});
}

Expand Down
6 changes: 0 additions & 6 deletions build-system/tasks/presubmit-checks.js
Expand Up @@ -816,12 +816,6 @@ const forbiddenTermsSrcInclusive = {
'extensions/amp-bind/0.1/bind-expr-impl.js',
],
},
'scopeSelectorForTesting': {
message: 'scopeSelector is not intended to be used outside of dom.js',
whitelist: [
'src/dom.js',
],
},
'[^.]loadPromise': {
message: 'Most users should use BaseElement…loadPromise.',
whitelist: [
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-access/0.1/amp-access-server-jwt.js
Expand Up @@ -25,7 +25,7 @@ import {
} from '../../../src/url';
import {dev, user, userAssert} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {fetchDocument} from '../../../src/document-fetcher';
import {getMode} from '../../../src/mode';
import {isArray} from '../../../src/types';
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-access/0.1/amp-access-server.js
Expand Up @@ -18,7 +18,7 @@ import {AccessClientAdapter} from './amp-access-client';
import {Services} from '../../../src/services';
import {dev, devAssert} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {fetchDocument} from '../../../src/document-fetcher';
import {isExperimentOn} from '../../../src/experiments';
import {isProxyOrigin, removeFragment} from '../../../src/url';
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-date-picker/0.1/amp-date-picker.js
Expand Up @@ -27,7 +27,6 @@ import {Services} from '../../../src/services';
import {batchFetchJsonFor} from '../../../src/batched-json';
import {
closestAncestorElementBySelector,
escapeCssSelectorIdent,
isRTL,
iterateCursor,
scopedQuerySelector,
Expand All @@ -40,6 +39,7 @@ import {createSingleDatePicker} from './single-date-picker';
import {dashToCamelCase} from '../../../src/string';
import {dev, user, userAssert} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/css';
import {once} from '../../../src/utils/function';
import {requireExternal} from '../../../src/module';

Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-form/0.1/amp-form.js
Expand Up @@ -37,7 +37,6 @@ import {
ancestorElementsByTag,
childElementByAttr,
createElementWithAttributes,
escapeCssSelectorIdent,
iterateCursor,
removeElement,
tryFocus,
Expand All @@ -46,6 +45,7 @@ import {createCustomEvent} from '../../../src/event-helper';
import {createFormDataWrapper} from '../../../src/form-data-wrapper';
import {deepMerge, dict} from '../../../src/utils/object';
import {dev, devAssert, user, userAssert} from '../../../src/log';
import {escapeCssSelectorIdent} from '../../../src/css';
import {
formOrNullForElement,
getFormAsObject,
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-gwd-animation/0.1/amp-gwd-animation-impl.js
Expand Up @@ -16,13 +16,13 @@
import {createCustomEvent} from '../../../src/event-helper';
import {dev, user} from '../../../src/log';
import {dict, hasOwn} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/css';
import {installServiceInEmbedScope} from '../../../src/service';
import {
escapeCssSelectorIdent,
scopedQuerySelector,
waitForBodyPromise,
waitForChild,
} from '../../../src/dom';
import {installServiceInEmbedScope} from '../../../src/service';
import {toArray} from '../../../src/types';

/**
Expand Down
Expand Up @@ -33,13 +33,13 @@ import {
closest,
closestAncestorElementBySelector,
elementByTag,
escapeCssSelectorIdent,
scopedQuerySelector,
scopedQuerySelectorAll,
} from '../../../src/dom';
import {clamp} from '../../../src/utils/math';
import {dev, devAssert, user, userAssert} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getData, isLoaded, listen} from '../../../src/event-helper';
import {
getElementServiceForDoc,
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-story/0.1/amp-story.js
Expand Up @@ -75,7 +75,6 @@ import {
childElementByTag,
childElements,
closest,
escapeCssSelectorIdent,
matches,
removeElement,
scopedQuerySelectorAll,
Expand All @@ -89,6 +88,7 @@ import {
import {debounce} from '../../../src/utils/rate-limit';
import {dev, devAssert, user} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/css';
import {findIndex} from '../../../src/utils/array';
import {getDetail} from '../../../src/event-helper';
import {getMode} from '../../../src/mode';
Expand Down
4 changes: 2 additions & 2 deletions extensions/amp-story/0.1/animation.js
Expand Up @@ -29,12 +29,12 @@ import {
} from '../../amp-animation/0.1/web-animation-types';
import {assertDoesNotContainDisplay, setStyles} from '../../../src/style';
import {dev, devAssert, user, userAssert} from '../../../src/log';
import {escapeCssSelectorIdent} from '../../../src/css';
import {map, omit} from '../../../src/utils/object';
import {
escapeCssSelectorIdent,
scopedQuerySelector,
scopedQuerySelectorAll,
} from '../../../src/dom';
import {map, omit} from '../../../src/utils/object';
import {timeStrToMillis, unscaledClientRect} from './utils';

/** const {string} */
Expand Down
3 changes: 2 additions & 1 deletion extensions/amp-story/0.1/page-advancement.js
Expand Up @@ -15,8 +15,9 @@
*/
import {Services} from '../../../src/services';
import {VideoEvents} from '../../../src/video-interface';
import {closest, escapeCssSelectorIdent} from '../../../src/dom';
import {closest} from '../../../src/dom';
import {dev, user} from '../../../src/log';
import {escapeCssSelectorIdent} from '../../../src/css';
import {hasTapAction, timeStrToMillis} from './utils';
import {listenOnce} from '../../../src/event-helper';
import {map} from '../../../src/utils/object';
Expand Down
3 changes: 2 additions & 1 deletion extensions/amp-story/0.1/progress-bar.js
Expand Up @@ -16,9 +16,10 @@
import {POLL_INTERVAL_MS} from './page-advancement';
import {Services} from '../../../src/services';
import {dev, devAssert} from '../../../src/log';
import {escapeCssSelectorNth, scopedQuerySelector} from '../../../src/dom';
import {escapeCssSelectorNth} from '../../../src/css';
import {hasOwn, map} from '../../../src/utils/object';
import {scale, setImportantStyles} from '../../../src/style';
import {scopedQuerySelector} from '../../../src/dom';


/**
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-story/1.0/amp-story.js
Expand Up @@ -85,7 +85,6 @@ import {
childElements,
closest,
createElementWithAttributes,
escapeCssSelectorIdent,
isRTL,
scopedQuerySelectorAll,
} from '../../../src/dom';
Expand All @@ -99,6 +98,7 @@ import {
import {debounce} from '../../../src/utils/rate-limit';
import {dev, devAssert, user} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {escapeCssSelectorIdent} from '../../../src/css';
import {findIndex} from '../../../src/utils/array';
import {getConsentPolicyState} from '../../../src/consent';
import {getDetail} from '../../../src/event-helper';
Expand Down
6 changes: 3 additions & 3 deletions extensions/amp-story/1.0/animation.js
Expand Up @@ -28,13 +28,13 @@ import {
} from '../../amp-animation/0.1/web-animation-types';
import {assertDoesNotContainDisplay, setStyles} from '../../../src/style';
import {dev, devAssert, user, userAssert} from '../../../src/log';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getPresetDef, setStyleForPreset} from './animation-presets';
import {map, omit} from '../../../src/utils/object';
import {
escapeCssSelectorIdent,
scopedQuerySelector,
scopedQuerySelectorAll,
} from '../../../src/dom';
import {getPresetDef, setStyleForPreset} from './animation-presets';
import {map, omit} from '../../../src/utils/object';
import {timeStrToMillis, unscaledClientRect} from './utils';

/** const {string} */
Expand Down
3 changes: 2 additions & 1 deletion extensions/amp-story/1.0/page-advancement.js
Expand Up @@ -24,11 +24,12 @@ import {AdvancementMode} from './story-analytics';
import {Services} from '../../../src/services';
import {TAPPABLE_ARIA_ROLES} from '../../../src/service/action-impl';
import {VideoEvents} from '../../../src/video-interface';
import {closest, escapeCssSelectorIdent, matches} from '../../../src/dom';
import {closest, matches} from '../../../src/dom';
import {dev, user} from '../../../src/log';
import {
embeddedComponentSelectors,
} from './amp-story-embedded-component';
import {escapeCssSelectorIdent} from '../../../src/css';
import {hasTapAction, timeStrToMillis} from './utils';
import {listenOnce} from '../../../src/event-helper';

Expand Down
3 changes: 2 additions & 1 deletion extensions/amp-story/1.0/progress-bar.js
Expand Up @@ -16,9 +16,10 @@
import {POLL_INTERVAL_MS} from './page-advancement';
import {Services} from '../../../src/services';
import {dev, devAssert} from '../../../src/log';
import {escapeCssSelectorNth, scopedQuerySelector} from '../../../src/dom';
import {escapeCssSelectorNth} from '../../../src/css';
import {hasOwn, map} from '../../../src/utils/object';
import {scale, setImportantStyles} from '../../../src/style';
import {scopedQuerySelector} from '../../../src/dom';


/**
Expand Down
12 changes: 6 additions & 6 deletions extensions/amp-video-docking/0.1/amp-video-docking.js
Expand Up @@ -41,17 +41,17 @@ import {
} from '../../../src/event-helper';
import {dev, devAssert, user, userAssert} from '../../../src/log';
import {dict} from '../../../src/utils/object';
import {
escapeCssSelectorIdent,
isRTL,
removeElement,
scopedQuerySelector,
} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getInternalVideoElementFor} from '../../../src/utils/video';
import {getServiceForDoc} from '../../../src/service';
import {htmlFor, htmlRefs} from '../../../src/static-template';
import {installStylesForDoc} from '../../../src/style-installer';
import {isFiniteNumber} from '../../../src/types';
import {
isRTL,
removeElement,
scopedQuerySelector,
} from '../../../src/dom';
import {layoutRectLtwh, moveLayoutRect} from '../../../src/layout-rect';
import {mapRange} from '../../../src/utils/math';
import {once} from '../../../src/utils/function';
Expand Down
2 changes: 1 addition & 1 deletion extensions/amp-web-push/0.1/amp-web-push-config.js
Expand Up @@ -16,7 +16,7 @@

import {CONFIG_TAG, SERVICE_TAG, TAG} from './vars';
import {dev, user, userAssert} from '../../../src/log';
import {escapeCssSelectorIdent} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getServiceForDoc} from '../../../src/service';
import {parseUrlDeprecated} from '../../../src/url';

Expand Down
Expand Up @@ -16,7 +16,7 @@

import {NotificationPermission, StorageKeys} from './vars';
import {WindowMessenger} from './window-messenger';
import {escapeCssSelectorIdent} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getMode} from '../../../src/mode';
import {
parseQueryString,
Expand Down
3 changes: 2 additions & 1 deletion extensions/amp-web-push/0.1/web-push-service.js
Expand Up @@ -21,9 +21,10 @@ import {Services} from '../../../src/services';
import {WebPushWidgetVisibilities} from './amp-web-push-widget';
import {WindowMessenger} from './window-messenger';
import {dev, user} from '../../../src/log';
import {escapeCssSelectorIdent, openWindowDialog} from '../../../src/dom';
import {escapeCssSelectorIdent} from '../../../src/css';
import {getMode} from '../../../src/mode';
import {installStylesForDoc} from '../../../src/style-installer';
import {openWindowDialog} from '../../../src/dom';
import {parseQueryString, parseUrlDeprecated} from '../../../src/url';

/** @typedef {{
Expand Down

0 comments on commit f99eb3b

Please sign in to comment.