-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make videos responsive #1658
Make videos responsive #1658
Conversation
Embeds are now sandboxed. This broke our responsive video trick. We should restore this in some way. This PR is a work in progress.
Do all embeds need to be sandboxed? If the provider returns an iframe (no scripts), we can skip sandboxing? |
¯_(ツ)_/¯ The key here should be code simplicity. The way the embeds work right now, seems to be ⭐️ ⭐️ ⭐️ ⭐️ ⭐️ right now. Outside of a little CSS to normalize the extra margins, it feels solid to me. |
Right now, the iframe does not load any stylesheets, and it doesn't pick up the parent document's styles either (this is on purpose, as it messes with calculating sizes). We construct a complete html document for the iframe content, so we can have that load whatever stylesheets we need, or we could pass raw CSS to the sandbox component and have it render inline... Which would be preferred? |
Whether it's passed raw as inline styles or loaded as a stylesheet doesn't matter much to me. Which ever is easier. Given that we want to ambiguate between video and not video, perhaps we could apply that as a classname, and scope the video CSS to the class. That way we could load a single stylesheet for all? |
To me, the cleanest way would be a single embed stylesheet, and pass a class name to sandbox which gets applied to the body. Sound ok? |
👍 👍 |
See also #1688 which fixes the resizing logic of the iframe to account for any margins inside. |
Taking a look at this again... It's probably simpler to have this css inline in the document we generate, and set a class on body to show which type of embed it is, rather than including extra stylesheets, because of the stuff we have to do to calculate paths to CSS files. I'll start taking a look at this, it shouldn't be too much work. |
This approach triggers a problem with the resizing sandbox... setting height and width to 100% means they get set to 0 wide and 0 tall, because that's how the sandbox starts out. And the sandbox never shows any content, because the content is set to 100% of the parent, and so never gets bigger and makes the sandbox grow. I'm looking into it more. |
Further into this... the problem I'm running against is that video iframes have a width and height set. That makes the sandbox resize to those dimensions, which is great, but to get the video to be responsive, it has to be 100%, but the height is already set, so it gets squashed. If we have height and width set to 100%, that takes on the dimensions of the container, which is 0x0 (because there's no content initially and it has to resize). This all works fine with images because the image itself contains the size metadata, but videos do not. I'm thinking we need some video-aware rules that scale for the width, and set the height based on a 16:9 ratio. This is what Vimeo advises, and they have example CSS to do it (which of course doesn't work for us because our container resizes itself!) but we can pass through the content type to the sandbox and have the height calculation work differently for videos. |
I have this working now in #1921 |
Closing this in favor of #1921 as I've ported the fixes. Thanks Nicola! |
* Use string-array instead of plurals tag in strings.xml See https://github.com/GlotPress/GlotPress-WP/blob/master/gp-includes/formats/format-android.php * Update string files * Update scripts to minimize changes in git diff and keep the same context for android * Exclude strings from tests * Fix lint errors * Bump version to 1.17.1 * Update gutenberg ref following 1.17 merge to gutenberg master * Update gutenberg ref * Remove declaration on bridge of unused methods. * Added bridge code for gutenberg to request a native fullscreen preview for for an image from a URL on iOS. * Updating bundle and gutenberg reference. * Updated release notes. * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update GB reference. * Updating bundle after catching up branch and gutenberg submodule. * Update gutenberg ref * Update release notes. * Update UI test * Pass postType as initial prop on iOS * Pass postType down to Editor * Allow Android to set the post type * Updating gutenberg reference. * Removed duplicate line from merge. * updafe test files and iOS version for running locally with xcode 11 * Update gutenberg ref * Update gutenberg ref * Update aztec to version that support reversed and start on lists. * Update Gutenberg to version where list settings are active in native. * update block list check and capabilities * replace double click on android * fix block insertion timeout * update branch with develop * Update gutenberg ref * Update package.json and JS bundle for 1.18.0 release * Update Gutenberg * Update Gutenberg * update gutenberg ref * Update GB-reference. * Update release notes. * revert caps to iPhone Simulator * Update Gutenberg ref * Update Release notes * Update gutenberg/ reference * Update bundles * Update GB reference. * Fix spacing * Add static method to Media class to create instance using mimeType * Add flag to track when appending multiple selected media items as blocks * Introduce mediaSelectionCancelled method in WPAndroidGlueCode * Set flag to append blocks when multiple = false is not respected * Only use appendUploadMediaFiles plural version * Update gutenberg ref * Update to latest Gutenberg master * Patch jsdom to implement Element.closest() * Bring back changes on package.json from 1.7.1 * Add docstring to the function * Return null as per https://dom.spec.whatwg.org/#dom-element-closest * Update Aztec version. * Update GB reference. * Update gutenberg ref * Update RELEASE-NOTES.txt * Update GB reference * Improve code block style * Update GB reference. * Update gutenberg ref * Update Media mimeType truncation to use enum names * Add Javadoc for mAppendsMultipleSelectedToSiblingBlocks flag * Set appends to sibling blocks flag explicitly for all requests * Add clarifying comment for special block append handling * Remove singular (unused) appendMedia method * Update GB reference. * Update GB reference to master. * Set appends to sibling blocks flag explicitly for other media pick * Update GB reference. * Update GB reference. * Use lowercase for Media mimeType truncation * Update Gutenberg * Update Gutenberg * Update Gutenberg ref - after fix for caption alignment * Update bundles * Point to aztecVersion hash which supports list with start and reverse attribute * Update bundle and gutenberg ref - fix disappearing image * Update GB reference. * Update GB reference. * Update GB reference. * Update Gutenberg * Update Gutenberg ref * Update GB reference * Update GB reference. * Only enable page templates on dev builds * Update aztec version * Update aztec version * Add colors for gallery block * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update GB reference. * Update Gutenberg ref * Update Aztec version to 1.14.0 * Make sure if the textColor is changed the default text color is updated. * Use Slider from react-native-community lib (#1620) * Use Slider from react-native-community lib * Update slider version * Add function to read npm version * Rengenerate yarn.lock * Bump node version * Update readNPMVersion function * Use Slider from fork * Update Slider commit * Use Slider from wordpress-mobile fork * Add react-native-slider podspec * Improve babel config * Correct settings.gradle * Correct project.pbxproj * Update ref * Bump * Update ref * Update ref to gutenberg master * Update ref to gutenberg quick fix * Update ref to gutenberg master * Update Aztec editor version. * Update to iOS 13 * Update Xcode version. * Use iOS 12 for tests. * Fix typo * Update Aztec to fix CI error with xcode 10 * Use iOS 12.2 * Update Appium version. * Update to appium 1.15.1 * Update to Appium 1.15.1 only in iOS * Update caps. * Add Gallery Block (#1498) * WIP - initial-html.js for gallery testing * Add parent app media mock for Android * Update gutenberg reference * Update gutenberg reference * Comment out line setting mPendingMediaUploadCallback to null * Update gutenberg reference * Generate bundles * Update gutenberg ref * Generate bundles * Generate bundles * Add some color-studio colors for gallery * Update gutenberg reference * Generate bundle * WIP update ref * Update gutenberg reference * Update gutenberg submodule * Generate bundles * Add $gray-40 color * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Restore demo content * Restore anonymous implementation of GutenbergBridgeJS2Parent * Update gutenberg reference * Generate bundles * Bump up Aztec version on iOS Example app * Update gb ref * Generate bundles * Update gutenberg ref * Update gutenberg ref (#1646) * Add release notes for Gallery (#1658) * Make sure we use iPhone 11 (iOS 13) for build and run tests * Pooint aztecVersion to develop * Update Appium for Android tests too. * Set Appium to 1.15.0 * Update aztec version to 1.3.36 * Update appium to 1.16.0-rc.1 * Update Aztec iOS to 1.14.1 * Update GB reference. * Activate preformat block on android platform (#1615) * Updates package.json and JS bundle for 1.19.0 release. * Update to shorten git commands Make the git commands a little easier to copy by taking out `$` from the start of the lines. This also matches with the other commands on the page which do not start with `$`. * Update Unit Tests headings in Getting Started documentation The heading "Test" should be "Unit Tests". The heading "Writing and Running Tests" should be "Writing and Running Unit Tests". https://github.com/wordpress-mobile/gutenberg-mobile/blob/develop/src/index.test.js * Update gutenberg reference * Update gutenberg reference * Update gutenberg ref * Updating bundles. * Feat: Navigation Down in InnerBlocks (#1379) * Add ref to gutenberg repo * Fix e2e tests * Update ref to gutenberg master * Update Gutenberg ref * Remove empty line between checkboxes * Updating release notes to show video settings in 1.19 * Updating gutenberg reference to latest 1.19 release change on gutenberg master branch * Update gutenberg ref * Sass Transformer: Also look for partials Add support for [SASS partials](https://sass-lang.com/guide), as is already present [upstream](https://github.com/kristerkari/react-native-sass-transformer/blob/52884dd59582856fa17e2b2e8ca9efc37d412387/index.js#L41-L42). This should fix the issue introduced by #19159, and discussed there. * Single quotes * Also update sass-transformer-inside-gb.js * Update release notes * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update Gutenberg ref * Update gutenberg ref * Update gutenberg ref * Bundles up to date with merged code from develop * Add ref to gutenberg repo * Update ref * Update ref * Update ref * Upgrade the SVG lib to fix #1703 * Upgrade the Video lib to fix #1705 * Upgrade the Slider lib to use node_modules in local npm build * Update ref * Upgrade the SVG lib ref * Upgrade the Video lib ref * Upgrade the Slider lib ref * Update ref * Brings back gb master to normal (#1722) * Fix/Bring back master to normal (#1724) * Update Gutenberg ref * Update Gutenberg ref Co-authored-by: Tugdual de Kerviler <dekervit@gmail.com> Co-authored-by: Matt Chowning <mchowning@gmail.com> Co-authored-by: etoledom <etoledom@icloud.com> Co-authored-by: Sérgio Estêvão <sergioestevao@gmail.com> Co-authored-by: Cameron Voell <cameronvoell@gmail.com> Co-authored-by: Jorge Bernal <jbernal@gmail.com> Co-authored-by: Javon Davis <JavonDavis@users.noreply.github.com> Co-authored-by: Maxime Biais <maxime@bia.is> Co-authored-by: Gerardo Pacheco <gerardo.pacheco@automattic.com> Co-authored-by: Matthew Kevins <mkevins@users.noreply.github.com> Co-authored-by: Stefanos Togoulidis <stefanostogoulidis@gmail.com> Co-authored-by: Marko Savic <savicmarko1985@gmail.com> Co-authored-by: Luke Walczak <lukasz.walczak.pwr@gmail.com> Co-authored-by: Pinar Olguc <pinarolguc@gmail.com> Co-authored-by: Sheri Bigelow <sheri@designsimply.com> Co-authored-by: jbinda <jakub.binda@gmail.com> Co-authored-by: Bernie Reiter <ockham@raz.or.at>
* Use string-array instead of plurals tag in strings.xml See https://github.com/GlotPress/GlotPress-WP/blob/master/gp-includes/formats/format-android.php * Update string files * Update scripts to minimize changes in git diff and keep the same context for android * Exclude strings from tests * Fix lint errors * Bump version to 1.17.1 * Update gutenberg ref following 1.17 merge to gutenberg master * Update gutenberg ref * Remove declaration on bridge of unused methods. * Added bridge code for gutenberg to request a native fullscreen preview for for an image from a URL on iOS. * Updating bundle and gutenberg reference. * Updated release notes. * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update GB reference. * Updating bundle after catching up branch and gutenberg submodule. * Update gutenberg ref * Update release notes. * Update UI test * Pass postType as initial prop on iOS * Pass postType down to Editor * Allow Android to set the post type * Updating gutenberg reference. * Removed duplicate line from merge. * updafe test files and iOS version for running locally with xcode 11 * Update gutenberg ref * Update gutenberg ref * Update aztec to version that support reversed and start on lists. * Update Gutenberg to version where list settings are active in native. * update block list check and capabilities * replace double click on android * fix block insertion timeout * update branch with develop * Update gutenberg ref * Update package.json and JS bundle for 1.18.0 release * Update Gutenberg * Update Gutenberg * update gutenberg ref * Update GB-reference. * Update release notes. * revert caps to iPhone Simulator * Update Gutenberg ref * Update Release notes * Update gutenberg/ reference * Update bundles * Update GB reference. * Fix spacing * Add static method to Media class to create instance using mimeType * Add flag to track when appending multiple selected media items as blocks * Introduce mediaSelectionCancelled method in WPAndroidGlueCode * Set flag to append blocks when multiple = false is not respected * Only use appendUploadMediaFiles plural version * Update gutenberg ref * Update to latest Gutenberg master * Patch jsdom to implement Element.closest() * Bring back changes on package.json from 1.7.1 * Add docstring to the function * Return null as per https://dom.spec.whatwg.org/#dom-element-closest * Update Aztec version. * Update GB reference. * Update gutenberg ref * Update RELEASE-NOTES.txt * Update GB reference * Improve code block style * Update GB reference. * Update gutenberg ref * Update Media mimeType truncation to use enum names * Add Javadoc for mAppendsMultipleSelectedToSiblingBlocks flag * Set appends to sibling blocks flag explicitly for all requests * Add clarifying comment for special block append handling * Remove singular (unused) appendMedia method * Update GB reference. * Update GB reference to master. * Set appends to sibling blocks flag explicitly for other media pick * Update GB reference. * Update GB reference. * Use lowercase for Media mimeType truncation * Update Gutenberg * Update Gutenberg * Update Gutenberg ref - after fix for caption alignment * Update bundles * Point to aztecVersion hash which supports list with start and reverse attribute * Update bundle and gutenberg ref - fix disappearing image * Update GB reference. * Update GB reference. * Update GB reference. * Update Gutenberg * Update Gutenberg ref * Update GB reference * Update GB reference. * Only enable page templates on dev builds * Update aztec version * Update aztec version * Add colors for gallery block * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update GB reference. * Update Gutenberg ref * Update Aztec version to 1.14.0 * Make sure if the textColor is changed the default text color is updated. * Use Slider from react-native-community lib (#1620) * Use Slider from react-native-community lib * Update slider version * Add function to read npm version * Rengenerate yarn.lock * Bump node version * Update readNPMVersion function * Use Slider from fork * Update Slider commit * Use Slider from wordpress-mobile fork * Add react-native-slider podspec * Improve babel config * Correct settings.gradle * Correct project.pbxproj * Update ref * Bump * Update ref * Update ref to gutenberg master * Update ref to gutenberg quick fix * Update ref to gutenberg master * Update Aztec editor version. * Update to iOS 13 * Update Xcode version. * Use iOS 12 for tests. * Fix typo * Update Aztec to fix CI error with xcode 10 * Use iOS 12.2 * Update Appium version. * Update to appium 1.15.1 * Update to Appium 1.15.1 only in iOS * Update caps. * Add Gallery Block (#1498) * WIP - initial-html.js for gallery testing * Add parent app media mock for Android * Update gutenberg reference * Update gutenberg reference * Comment out line setting mPendingMediaUploadCallback to null * Update gutenberg reference * Generate bundles * Update gutenberg ref * Generate bundles * Generate bundles * Add some color-studio colors for gallery * Update gutenberg reference * Generate bundle * WIP update ref * Update gutenberg reference * Update gutenberg submodule * Generate bundles * Add $gray-40 color * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Generate bundles * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Update gutenberg reference * Restore demo content * Restore anonymous implementation of GutenbergBridgeJS2Parent * Update gutenberg reference * Generate bundles * Bump up Aztec version on iOS Example app * Update gb ref * Generate bundles * Update gutenberg ref * Update gutenberg ref (#1646) * Add release notes for Gallery (#1658) * Make sure we use iPhone 11 (iOS 13) for build and run tests * Pooint aztecVersion to develop * Update Appium for Android tests too. * Set Appium to 1.15.0 * Update aztec version to 1.3.36 * Update appium to 1.16.0-rc.1 * Update Aztec iOS to 1.14.1 * Update GB reference. * Activate preformat block on android platform (#1615) * Updates package.json and JS bundle for 1.19.0 release. * Update to shorten git commands Make the git commands a little easier to copy by taking out `$` from the start of the lines. This also matches with the other commands on the page which do not start with `$`. * Update Unit Tests headings in Getting Started documentation The heading "Test" should be "Unit Tests". The heading "Writing and Running Tests" should be "Writing and Running Unit Tests". https://github.com/wordpress-mobile/gutenberg-mobile/blob/develop/src/index.test.js * Update gutenberg reference * Update gutenberg reference * Update gutenberg ref * Updating bundles. * Feat: Navigation Down in InnerBlocks (#1379) * Add ref to gutenberg repo * Fix e2e tests * Update ref to gutenberg master * Update Gutenberg ref * Remove empty line between checkboxes * Updating release notes to show video settings in 1.19 * Updating gutenberg reference to latest 1.19 release change on gutenberg master branch * Update gutenberg ref * Sass Transformer: Also look for partials Add support for [SASS partials](https://sass-lang.com/guide), as is already present [upstream](https://github.com/kristerkari/react-native-sass-transformer/blob/52884dd59582856fa17e2b2e8ca9efc37d412387/index.js#L41-L42). This should fix the issue introduced by #19159, and discussed there. * Single quotes * Also update sass-transformer-inside-gb.js * Update release notes * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update gutenberg ref * Update Gutenberg ref * Update gutenberg ref * Update gutenberg ref * Bundles up to date with merged code from develop * Add ref to gutenberg repo * Update ref * Update ref * Update ref * Upgrade the SVG lib to fix #1703 * Upgrade the Video lib to fix #1705 * Upgrade the Slider lib to use node_modules in local npm build * Update ref * Upgrade the SVG lib ref * Upgrade the Video lib ref * Upgrade the Slider lib ref * Update ref * Brings back gb master to normal (#1722) * Fix/Bring back master to normal (#1724) * Update Gutenberg ref * Update Gutenberg ref Co-authored-by: Tugdual de Kerviler <dekervit@gmail.com> Co-authored-by: Matt Chowning <mchowning@gmail.com> Co-authored-by: etoledom <etoledom@icloud.com> Co-authored-by: Sérgio Estêvão <sergioestevao@gmail.com> Co-authored-by: Cameron Voell <cameronvoell@gmail.com> Co-authored-by: Jorge Bernal <jbernal@gmail.com> Co-authored-by: Javon Davis <JavonDavis@users.noreply.github.com> Co-authored-by: Maxime Biais <maxime@bia.is> Co-authored-by: Gerardo Pacheco <gerardo.pacheco@automattic.com> Co-authored-by: Matthew Kevins <mkevins@users.noreply.github.com> Co-authored-by: Stefanos Togoulidis <stefanostogoulidis@gmail.com> Co-authored-by: Marko Savic <savicmarko1985@gmail.com> Co-authored-by: Luke Walczak <lukasz.walczak.pwr@gmail.com> Co-authored-by: Pinar Olguc <pinarolguc@gmail.com> Co-authored-by: Sheri Bigelow <sheri@designsimply.com> Co-authored-by: jbinda <jakub.binda@gmail.com> Co-authored-by: Bernie Reiter <ockham@raz.or.at>
Embeds are now sandboxed. This broke our responsive video trick. We should restore this in some way. This PR is a work in progress.
In order to finish the work here, we need to inject a few styles into the embed iframe. I could use help with this.
The following CSS should be injected in all embeds:
The following CSS should additionally be injected into all video embeds:
The CSS in the first commit assumes the above styles are present, and positions the caption accordingly: