diff --git a/bin/packages/get-babel-config.js b/bin/packages/get-babel-config.js index cdbce9b51a58ad..e79bc306d07c4c 100644 --- a/bin/packages/get-babel-config.js +++ b/bin/packages/get-babel-config.js @@ -35,17 +35,11 @@ const babelConfigs = { {}, babelDefaultConfig, { - plugins: map( - plugins, - ( plugin ) => overrideOptions( plugin, '@babel/plugin-transform-runtime', { - corejs: false, - } ) - ), + plugins, presets: map( babelDefaultConfig.presets, ( preset ) => overrideOptions( preset, '@babel/preset-env', { modules: 'commonjs', - useBuiltIns: false, } ) ), } @@ -57,7 +51,6 @@ const babelConfigs = { plugins: map( plugins, ( plugin ) => overrideOptions( plugin, '@babel/plugin-transform-runtime', { - corejs: false, useESModules: true, } ) ), @@ -65,7 +58,6 @@ const babelConfigs = { babelDefaultConfig.presets, ( preset ) => overrideOptions( preset, '@babel/preset-env', { modules: false, - useBuiltIns: false, } ) ), } diff --git a/lib/client-assets.php b/lib/client-assets.php index e00c39586cc733..446a7c68409f6d 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -102,63 +102,63 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-url', gutenberg_url( 'build/url/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/url/index.js' ), true ); wp_register_script( 'wp-autop', gutenberg_url( 'build/autop/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/autop/index.js' ), true ); wp_register_script( 'wp-wordcount', gutenberg_url( 'build/wordcount/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/wordcount/index.js' ), true ); wp_register_script( 'wp-dom-ready', gutenberg_url( 'build/dom-ready/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/dom-ready/index.js' ), true ); wp_register_script( 'wp-a11y', gutenberg_url( 'build/a11y/index.js' ), - array( 'wp-dom-ready' ), + array( 'wp-dom-ready', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/a11y/index.js' ), true ); wp_register_script( 'wp-hooks', gutenberg_url( 'build/hooks/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/hooks/index.js' ), true ); wp_register_script( 'wp-i18n', gutenberg_url( 'build/i18n/index.js' ), - array( 'wp-deprecated' ), + array( 'wp-deprecated', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/i18n/index.js' ), true ); wp_register_script( 'wp-is-shallow-equal', gutenberg_url( 'build/is-shallow-equal/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/is-shallow-equal/index.js' ), true ); wp_register_script( 'wp-token-list', gutenberg_url( 'build/token-list/index.js' ), - array( 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/token-list/index.js' ), true ); @@ -167,7 +167,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-api-fetch', gutenberg_url( 'build/api-fetch/index.js' ), - array( 'wp-hooks', 'wp-i18n' ), + array( 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-i18n' ), filemtime( gutenberg_dir_path() . 'build/api-fetch/index.js' ), true ); @@ -175,8 +175,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-api-fetch', gutenberg_get_script_polyfill( array( - '\'Promise\' in window' => 'wp-polyfill-promise', - '\'fetch\' in window' => 'wp-polyfill-fetch', + '\'fetch\' in window' => 'wp-polyfill-fetch', ) ), 'before' @@ -201,35 +200,35 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-deprecated', gutenberg_url( 'build/deprecated/index.js' ), - array( 'wp-hooks' ), + array( 'wp-polyfill-ecmascript', 'wp-hooks' ), filemtime( gutenberg_dir_path() . 'build/deprecated/index.js' ), true ); wp_register_script( 'wp-blob', gutenberg_url( 'build/blob/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/blob/index.js' ), true ); wp_register_script( 'wp-compose', gutenberg_url( 'build/compose/index.js' ), - array( 'wp-element', 'wp-is-shallow-equal', 'lodash' ), + array( 'lodash', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/compose/index.js' ), true ); wp_register_script( 'wp-keycodes', gutenberg_url( 'build/keycodes/index.js' ), - array( 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/keycodes/index.js' ), true ); wp_register_script( 'wp-html-entities', gutenberg_url( 'build/html-entities/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/html-entities/index.js' ), true ); @@ -237,10 +236,11 @@ function gutenberg_register_scripts_and_styles() { 'wp-data', gutenberg_url( 'build/data/index.js' ), array( - 'wp-element', + 'lodash', 'wp-compose', + 'wp-element', 'wp-is-shallow-equal', - 'lodash', + 'wp-polyfill-ecmascript', 'wp-redux-routine', ), filemtime( gutenberg_dir_path() . 'build/data/index.js' ), @@ -264,14 +264,14 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-core-data', gutenberg_url( 'build/core-data/index.js' ), - array( 'wp-data', 'wp-api-fetch', 'wp-url', 'lodash' ), + array( 'wp-data', 'wp-api-fetch', 'wp-polyfill-ecmascript', 'wp-url', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/core-data/index.js' ), true ); wp_register_script( 'wp-dom', gutenberg_url( 'build/dom/index.js' ), - array( 'wp-tinymce', 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript', 'wp-tinymce' ), filemtime( gutenberg_dir_path() . 'build/dom/index.js' ), true ); @@ -285,7 +285,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-block-serialization-spec-parser', gutenberg_url( 'build/block-serialization-spec-parser/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/block-serialization-spec-parser/index.js' ), true ); @@ -301,21 +301,21 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-shortcode', gutenberg_url( 'build/shortcode/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/shortcode/index.js' ), true ); wp_register_script( 'wp-redux-routine', gutenberg_url( 'build/redux-routine/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/redux-routine/index.js' ), true ); wp_register_script( 'wp-date', gutenberg_url( 'build/date/index.js' ), - array( 'moment' ), + array( 'moment', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/date/index.js' ), true ); @@ -357,7 +357,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-element', gutenberg_url( 'build/element/index.js' ), - array( 'react', 'react-dom', 'lodash' ), + array( 'wp-polyfill-ecmascript', 'react', 'react-dom', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/element/index.js' ), true ); @@ -378,6 +378,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', + 'wp-polyfill-ecmascript', 'wp-url', ), filemtime( gutenberg_dir_path() . 'build/components/index.js' ), @@ -401,26 +402,17 @@ function gutenberg_register_scripts_and_styles() { 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', + 'wp-polyfill-ecmascript', 'wp-shortcode', 'lodash', ), filemtime( gutenberg_dir_path() . 'build/blocks/index.js' ), true ); - - wp_add_inline_script( - 'wp-blocks', - gutenberg_get_script_polyfill( - array( - '\'Promise\' in window' => 'wp-polyfill-promise', - ) - ), - 'before' - ); wp_register_script( 'wp-viewport', gutenberg_url( 'build/viewport/index.js' ), - array( 'wp-element', 'wp-data', 'wp-compose', 'lodash' ), + array( 'wp-polyfill-ecmascript', 'wp-element', 'wp-data', 'wp-compose', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/viewport/index.js' ), true ); @@ -437,13 +429,14 @@ function gutenberg_register_scripts_and_styles() { 'wp-blocks', 'wp-components', 'wp-compose', - 'wp-data', 'wp-core-data', + 'wp-data', 'wp-editor', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', + 'wp-polyfill-ecmascript', 'wp-url', 'wp-viewport', ), @@ -453,10 +446,24 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-nux', gutenberg_url( 'build/nux/index.js' ), - array( 'wp-element', 'wp-components', 'wp-compose', 'wp-data', 'wp-i18n', 'lodash' ), + array( + 'wp-element', + 'wp-components', + 'wp-compose', + 'wp-data', + 'wp-i18n', + 'wp-polyfill-ecmascript', + 'lodash', + ), filemtime( gutenberg_dir_path() . 'build/nux/index.js' ), true ); + wp_register_script( + 'wp-plugins', + gutenberg_url( 'build/plugins/index.js' ), + array( 'lodash', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill-ecmascript' ), + filemtime( gutenberg_dir_path() . 'build/plugins/index.js' ) + ); // Loading the old editor and its config to ensure the classic block works as expected. wp_add_inline_script( 'editor', @@ -585,6 +592,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-is-shallow-equal', 'wp-keycodes', 'wp-nux', + 'wp-polyfill-ecmascript', 'wp-tinymce', 'wp-token-list', 'wp-url', @@ -617,6 +625,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-i18n', 'wp-keycodes', 'wp-plugins', + 'wp-polyfill-ecmascript', 'wp-viewport', ), filemtime( gutenberg_dir_path() . 'build/edit-post/index.js' ), @@ -714,13 +723,6 @@ function gutenberg_register_scripts_and_styles() { ); wp_style_add_data( 'wp-block-library-theme', 'rtl', 'replace' ); - wp_register_script( - 'wp-plugins', - gutenberg_url( 'build/plugins/index.js' ), - array( 'lodash', 'wp-element', 'wp-hooks', 'wp-compose' ), - filemtime( gutenberg_dir_path() . 'build/plugins/index.js' ) - ); - if ( defined( 'GUTENBERG_LIVE_RELOAD' ) && GUTENBERG_LIVE_RELOAD ) { $live_reload_url = ( GUTENBERG_LIVE_RELOAD === true ) ? 'http://localhost:35729/livereload.js' : GUTENBERG_LIVE_RELOAD; @@ -834,7 +836,12 @@ function gutenberg_register_vendor_scripts() { ); gutenberg_register_vendor_script( 'wp-polyfill-promise', - 'https://unpkg.com/promise-polyfill@7.0.0/dist/promise' . $suffix . '.js' + 'https://unpkg.com/promise-polyfill@7.0.0/dist/promise' . $suffix . '.js', + array( 'wp-deprecated' ) + ); + wp_add_inline_script( + 'wp-polyfill-promise', + 'wp.deprecated( "wp-polyfill-promise script handle", { plugin: "Gutenberg", version: "4.0" } );' ); gutenberg_register_vendor_script( 'wp-polyfill-formdata', @@ -844,6 +851,10 @@ function gutenberg_register_vendor_scripts() { 'wp-polyfill-node-contains', 'https://unpkg.com/polyfill-library@3.26.0-0/polyfills/Node/prototype/contains/polyfill.js' ); + gutenberg_register_vendor_script( + 'wp-polyfill-ecmascript', + 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.0.0/polyfill' . $suffix . '.js' + ); } /** diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md index 79b5acdc2646e5..dfb37a7b589100 100644 --- a/packages/babel-preset-default/CHANGELOG.md +++ b/packages/babel-preset-default/CHANGELOG.md @@ -1,3 +1,9 @@ +## 3.0.0 (Unreleased) + +## Breaking Change + +- The configured `@babel/preset-env` preset will no longer pass `useBuiltIns: 'usage'` as an option. It is therefore expected that a polyfill serve in its place, if necessary. + ## 2.1.0 (2018-09-05) ### New Feature diff --git a/packages/babel-preset-default/index.js b/packages/babel-preset-default/index.js index d62a0c02dd24f3..a2bfedebe1b370 100644 --- a/packages/babel-preset-default/index.js +++ b/packages/babel-preset-default/index.js @@ -8,7 +8,6 @@ module.exports = function( api ) { targets: { browsers: [ 'extends @wordpress/browserslist-config' ], }, - useBuiltIns: 'usage', } ], isTestEnv && [ '@babel/preset-env', { useBuiltIns: 'usage', @@ -20,7 +19,12 @@ module.exports = function( api ) { pragma: 'createElement', } ], '@babel/plugin-proposal-async-generator-functions', - ! isTestEnv && [ '@babel/plugin-transform-runtime', { corejs: 2 } ], + ! isTestEnv && [ '@babel/plugin-transform-runtime', { + corejs: false, // We polyfill so we don't need core-js. + helpers: true, + regenerator: false, // We polyfill so we don't need regenerator. + useESModules: false, + } ], ].filter( Boolean ), }; }; diff --git a/packages/babel-preset-default/test/__snapshots__/index.js.snap b/packages/babel-preset-default/test/__snapshots__/index.js.snap index 683fe20da4ec3f..5cf000511103d0 100644 --- a/packages/babel-preset-default/test/__snapshots__/index.js.snap +++ b/packages/babel-preset-default/test/__snapshots__/index.js.snap @@ -1,36 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Babel preset default transpilation works properly 1`] = ` -"\\"use strict\\"; - -require(\\"regenerator-runtime/runtime\\"); - -require(\\"core-js/modules/es7.symbol.async-iterator\\"); - -require(\\"core-js/modules/es6.symbol\\"); - -require(\\"core-js/modules/es6.promise\\"); - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"next\\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"throw\\", err); } _next(undefined); }); }; } - -function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } - -function _wrapAsyncGenerator(fn) { return function () { return new _AsyncGenerator(fn.apply(this, arguments)); }; } - -function _AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; var wrappedAwait = value instanceof _AwaitValue; Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { if (wrappedAwait) { resume(\\"next\\", arg); return; } settle(result.done ? \\"return\\" : \\"normal\\", arg); }, function (err) { resume(\\"throw\\", err); }); } catch (err) { settle(\\"throw\\", err); } } function settle(type, value) { switch (type) { case \\"return\\": front.resolve({ value: value, done: true }); break; case \\"throw\\": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== \\"function\\") { this.return = undefined; } } - -if (typeof Symbol === \\"function\\" && Symbol.asyncIterator) { _AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } - -_AsyncGenerator.prototype.next = function (arg) { return this._invoke(\\"next\\", arg); }; - -_AsyncGenerator.prototype.throw = function (arg) { return this._invoke(\\"throw\\", arg); }; - -_AsyncGenerator.prototype.return = function (arg) { return this._invoke(\\"return\\", arg); }; - -function _AwaitValue(value) { this.wrapped = value; } - +"import _asyncToGenerator from \\"@babel/runtime/helpers/asyncToGenerator\\"; +import _awaitAsyncGenerator from \\"@babel/runtime/helpers/awaitAsyncGenerator\\"; +import _wrapAsyncGenerator from \\"@babel/runtime/helpers/wrapAsyncGenerator\\"; describe('Babel preset default', function () { function foo() { return _foo.apply(this, arguments); diff --git a/packages/babel-preset-default/test/index.js b/packages/babel-preset-default/test/index.js index 583326d065152a..7465ce2f73512d 100644 --- a/packages/babel-preset-default/test/index.js +++ b/packages/babel-preset-default/test/index.js @@ -16,6 +16,7 @@ describe( 'Babel preset default', () => { const output = transform( input, { configFile: false, + envName: 'production', presets: [ babelPresetDefault ], } ); diff --git a/packages/components/src/toolbar/style.scss b/packages/components/src/toolbar/style.scss index 8bb56b274b2de0..13d609e3d65584 100644 --- a/packages/components/src/toolbar/style.scss +++ b/packages/components/src/toolbar/style.scss @@ -3,6 +3,7 @@ border: $border-width solid $light-gray-500; background-color: $white; display: flex; + flex-shrink: 0; } div.components-toolbar { diff --git a/packages/editor/src/components/rich-text/format-toolbar/style.scss b/packages/editor/src/components/rich-text/format-toolbar/style.scss index 510b62166ecc70..1e1df05d7c99ae 100644 --- a/packages/editor/src/components/rich-text/format-toolbar/style.scss +++ b/packages/editor/src/components/rich-text/format-toolbar/style.scss @@ -1,5 +1,6 @@ .editor-format-toolbar { - display: inline-flex; + display: flex; + flex-shrink: 0; } .editor-format-toolbar__link-container {