Skip to content
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

Show preview of WordPress embed in editor #25370

Merged
merged 9 commits into from
Sep 24, 2020

Conversation

ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Sep 16, 2020

Description

Fixes: #25344
Fixes: #21945
Fixes: #21029

Great description in this issue about the root of the problem in this issue: #25344

How has this been tested?

Locally

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@ntsekouras ntsekouras added [Type] Bug An existing feature does not function as intended [Block] Embed Affects the Embed Block labels Sep 16, 2020
@ntsekouras ntsekouras self-assigned this Sep 16, 2020
@github-actions
Copy link

github-actions bot commented Sep 16, 2020

Size Change: -31.7 kB (2%)

Total Size: 1.17 MB

Filename Size Change
build/a11y/index.js 1.14 kB +2 B (0%)
build/annotations/index.js 3.52 kB -1 B
build/api-fetch/index.js 3.35 kB +17 B (0%)
build/block-directory/index.js 8.53 kB +124 B (1%)
build/block-editor/index.js 128 kB +492 B (0%)
build/block-editor/style-rtl.css 11.1 kB -2 B (0%)
build/block-editor/style.css 11.1 kB -1 B
build/block-library/editor-rtl.css 8.6 kB +11 B (0%)
build/block-library/editor.css 8.6 kB +11 B (0%)
build/block-library/index.js 135 kB +389 B (0%)
build/block-serialization-default-parser/index.js 1.78 kB +2 B (0%)
build/blocks/index.js 47.5 kB -53 B (0%)
build/components/index.js 167 kB -34.4 kB (20%) 🎉
build/components/style-rtl.css 15.5 kB +3 B (0%)
build/components/style.css 15.5 kB +2 B (0%)
build/compose/index.js 9.42 kB -3 B (0%)
build/core-data/index.js 12 kB -1 B
build/data/index.js 8.43 kB +1 B
build/date/index.js 31.9 kB -2 B (0%)
build/dom/index.js 4.42 kB -20 B (0%)
build/edit-navigation/index.js 10.4 kB +14 B (0%)
build/edit-post/index.js 306 kB +18 B (0%)
build/edit-post/style-rtl.css 6.24 kB +5 B (0%)
build/edit-post/style.css 6.23 kB +5 B (0%)
build/edit-site/index.js 20.2 kB +625 B (3%)
build/edit-site/style-rtl.css 3.51 kB +211 B (6%) 🔍
build/edit-site/style.css 3.51 kB +209 B (5%) 🔍
build/edit-widgets/index.js 17.5 kB +544 B (3%)
build/edit-widgets/style-rtl.css 2.8 kB +5 B (0%)
build/edit-widgets/style.css 2.8 kB +4 B (0%)
build/editor/index.js 45.5 kB +167 B (0%)
build/editor/style-rtl.css 3.8 kB +2 B (0%)
build/editor/style.css 3.8 kB +2 B (0%)
build/format-library/index.js 7.49 kB +2 B (0%)
build/html-entities/index.js 621 B -1 B
build/i18n/index.js 3.55 kB +1 B
build/is-shallow-equal/index.js 709 B -2 B (0%)
build/list-reusable-blocks/index.js 3.02 kB +1 B
build/notices/index.js 1.69 kB -1 B
build/plugins/index.js 2.44 kB +2 B (0%)
build/rich-text/index.js 13.7 kB -1 B
build/url/index.js 4.06 kB -1 B
build/viewport/index.js 1.74 kB -1 B
build/warning/index.js 1.13 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/autop/index.js 2.72 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-library/style-rtl.css 7.6 kB 0 B
build/block-library/style.css 7.59 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/data-controls/index.js 1.27 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/element/index.js 4.45 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 1.74 kB 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.12 kB 0 B
build/nux/index.js 3.27 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/primitives/index.js 1.34 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/server-side-render/index.js 2.61 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this!

Can you conceive a test for this?

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Sep 17, 2020

It's not complete. The problem here is that the responsiveness of the iframe at front-ent, is handled from themes. Tested with many default themes like 2020 etc..

In the editor is not and now it has bigger height, leaving a gap between the iframe and the caption. Aside the incorrect view, if you click the gap and throws an error.

I have made some experiments, one of which and IMO the best one, is to attach a load event to the rendered iframe and set proper height. I haven't been successful yet, but I'll try it a bit more tomorrow.

Any ideas for this are welcome. :)

--Update
Got inspiration from 2020 theme handling.

@ntsekouras ntsekouras marked this pull request as ready for review September 18, 2020 10:41
@ntsekouras
Copy link
Contributor Author

ntsekouras commented Sep 18, 2020

Can you conceive a test for this?

Actually all embedding tests are mocked (their response). One reason for this should be not to have to handle the case this PR handles, to attach listeners etc for iframe content loading.. @mcsf

@ntsekouras ntsekouras changed the title WIP: show preview of WordPress embed in editor Show preview of WordPress embed in editor Sep 18, 2020
packages/block-library/src/embed/wp-embed-preview.js Outdated Show resolved Hide resolved
const doc = new DOMParser().parseFromString( html, 'text/html' );
doc.querySelector( 'iframe' ).removeAttribute( 'style' );
doc.querySelector( 'blockquote' ).style.display = 'none';
if ( this.node.current ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In terms of life cycle, is this the right place to do this?

What about using callback refs like:

function processContents( ref ) {
  if ( ref ) {
    ref.querySelector( ... ).style.display = 'none';
  ...
}

<div ref={ processContents }>...</div>

*
* @param {WPSyntheticEvent} event Message event.
*/
resizeWPembeds( { data: { secret, message, value } = {} } ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all reads a bit like dark magic. :) I had never come across this height signalling before.

I'm not too confident to approve the change.

In any case, providing some context and linking to adequate prior art would be nice.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right! I've updated the jsdoc.

@paaljoachim
Copy link
Contributor

paaljoachim commented Sep 19, 2020

I test this locally and it is showing a nice progress!
There are just a few things I notice at the moment.
The caption toolbar is seen as part of the embed preview as if it is an image block.
Clicking the edit icon and then clicking the embed button will for a while show the old embed preview and suddenly it will show the new.

@ntsekouras
Copy link
Contributor Author

@paaljoachim

The caption toolbar is seen as part of the embed preview as if it is an image block.
Can you elaborate on that?

Clicking the edit icon and then clicking the embed button will for a while show the old embed preview and suddenly it will show the new.

You're right here, it needs fixing. I'll look into it

@paaljoachim
Copy link
Contributor

paaljoachim commented Sep 21, 2020

Hey @ntsekouras
Adding the embed this is the result that I see:
Screen Shot 2020-09-21 at 11 20 26

As if the embed was an image block.
I am using this link: https://make.wordpress.org/core/2020/06/29/updating-jquery-version-shipped-with-wordpress/

With http:https://localhost:8888/
With the default Twenty Twenty theme installed.
Gutenberg plugin 9.0 activated.

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Sep 21, 2020

@paaljoachim I fixed the edit problem now.

Regarding your screenshot, I don't see anything weird there.. A caption should exist there, if that is what concerns you.
Can you create a youtube embed for example? Do you see something different in toolbars etc?

@paaljoachim
Copy link
Contributor

paaljoachim commented Sep 21, 2020

It sounds like you are saying that the caption should be there for a WP embed.
I thought it was a bug. That the caption below the WP embed was not supposed to be there.

In that case what I thought was a bug is just a feature. Then it is working fine.

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's merge this. :)

@ntsekouras ntsekouras merged commit 0c18a7f into master Sep 24, 2020
@ntsekouras ntsekouras deleted the fix/wp-embed-preview-in-editor branch September 24, 2020 10:30
@github-actions github-actions bot added this to the Gutenberg 9.1 milestone Sep 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Embed Affects the Embed Block [Type] Bug An existing feature does not function as intended
Projects
None yet
3 participants