UNPKG

14.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["@wordpress/block-library/src/embed/edit.js"],"names":["isFromWordPress","createUpgradedEmbedBlock","getClassNames","fallback","EmbedControls","EmbedLoading","EmbedPlaceholder","EmbedPreview","kebabCase","toLower","__","sprintf","Component","Fragment","getEmbedEditComponent","title","icon","responsive","arguments","switchBackToURLInput","bind","setUrl","getAttributesFromPreview","setAttributesFromPreview","getResponsiveHelp","toggleResponsive","handleIncomingPreview","state","editingURL","url","props","attributes","preview","allowResponsive","upgradedBlock","onReplace","prevProps","hasPreview","undefined","hadPreview","previewChanged","html","switchedPreview","switchedURL","cannotEmbed","fetching","resubmitWithoutTrailingSlash","setState","prevState","replace","event","preventDefault","setAttributes","type","providerName","provider_name","providerNameSlug","className","checked","newAllowResponsive","caption","isSelected","themeSupportsResponsive","tryAgain","label","target","value"],"mappings":"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","sourcesContent":["/**\n * Internal dependencies\n */\nimport { isFromWordPress, createUpgradedEmbedBlock, getClassNames, fallback } from './util';\nimport EmbedControls from './embed-controls';\nimport EmbedLoading from './embed-loading';\nimport EmbedPlaceholder from './embed-placeholder';\nimport EmbedPreview from './embed-preview';\n\n/**\n * External dependencies\n */\nimport { kebabCase, toLower } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Component, Fragment } from '@wordpress/element';\n\nexport function getEmbedEditComponent( title, icon, responsive = true ) {\n\treturn class extends Component {\n\t\tconstructor() {\n\t\t\tsuper( ...arguments );\n\t\t\tthis.switchBackToURLInput = this.switchBackToURLInput.bind( this );\n\t\t\tthis.setUrl = this.setUrl.bind( this );\n\t\t\tthis.getAttributesFromPreview = this.getAttributesFromPreview.bind( this );\n\t\t\tthis.setAttributesFromPreview = this.setAttributesFromPreview.bind( this );\n\t\t\tthis.getResponsiveHelp = this.getResponsiveHelp.bind( this );\n\t\t\tthis.toggleResponsive = this.toggleResponsive.bind( this );\n\t\t\tthis.handleIncomingPreview = this.handleIncomingPreview.bind( this );\n\n\t\t\tthis.state = {\n\t\t\t\teditingURL: false,\n\t\t\t\turl: this.props.attributes.url,\n\t\t\t};\n\n\t\t\tif ( this.props.preview ) {\n\t\t\t\tthis.handleIncomingPreview();\n\t\t\t}\n\t\t}\n\n\t\thandleIncomingPreview() {\n\t\t\tconst { allowResponsive } = this.props.attributes;\n\t\t\tthis.setAttributesFromPreview();\n\t\t\tconst upgradedBlock = createUpgradedEmbedBlock(\n\t\t\t\tthis.props,\n\t\t\t\tthis.getAttributesFromPreview( this.props.preview, allowResponsive )\n\t\t\t);\n\t\t\tif ( upgradedBlock ) {\n\t\t\t\tthis.props.onReplace( upgradedBlock );\n\t\t\t}\n\t\t}\n\n\t\tcomponentDidUpdate( prevProps ) {\n\t\t\tconst hasPreview = undefined !== this.props.preview;\n\t\t\tconst hadPreview = undefined !== prevProps.preview;\n\t\t\tconst previewChanged = prevProps.preview && this.props.preview && this.props.preview.html !== prevProps.preview.html;\n\t\t\tconst switchedPreview = previewChanged || ( hasPreview && ! hadPreview );\n\t\t\tconst switchedURL = this.props.attributes.url !== prevProps.attributes.url;\n\n\t\t\tif ( switchedPreview || switchedURL ) {\n\t\t\t\tif ( this.props.cannotEmbed ) {\n\t\t\t\t\t// We either have a new preview or a new URL, but we can't embed it.\n\t\t\t\t\tif ( ! this.props.fetching ) {\n\t\t\t\t\t\t// If we're not fetching the preview, then we know it can't be embedded, so try\n\t\t\t\t\t\t// removing any trailing slash, and resubmit.\n\t\t\t\t\t\tthis.resubmitWithoutTrailingSlash();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.handleIncomingPreview();\n\t\t\t}\n\t\t}\n\n\t\tresubmitWithoutTrailingSlash() {\n\t\t\tthis.setState( ( prevState ) => ( {\n\t\t\t\turl: prevState.url.replace( /\\/$/, '' ),\n\t\t\t} ), this.setUrl );\n\t\t}\n\n\t\tsetUrl( event ) {\n\t\t\tif ( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\tconst { url } = this.state;\n\t\t\tconst { setAttributes } = this.props;\n\t\t\tthis.setState( { editingURL: false } );\n\t\t\tsetAttributes( { url } );\n\t\t}\n\n\t\t/***\n\t\t * Gets block attributes based on the preview and responsive state.\n\t\t *\n\t\t * @param {string} preview The preview data.\n\t\t * @param {boolean} allowResponsive Apply responsive classes to fixed size content.\n\t\t * @return {Object} Attributes and values.\n\t\t */\n\t\tgetAttributesFromPreview( preview, allowResponsive = true ) {\n\t\t\tconst attributes = {};\n\t\t\t// Some plugins only return HTML with no type info, so default this to 'rich'.\n\t\t\tlet { type = 'rich' } = preview;\n\t\t\t// If we got a provider name from the API, use it for the slug, otherwise we use the title,\n\t\t\t// because not all embed code gives us a provider name.\n\t\t\tconst { html, provider_name: providerName } = preview;\n\t\t\tconst providerNameSlug = kebabCase( toLower( '' !== providerName ? providerName : title ) );\n\n\t\t\tif ( isFromWordPress( html ) ) {\n\t\t\t\ttype = 'wp-embed';\n\t\t\t}\n\n\t\t\tif ( html || 'photo' === type ) {\n\t\t\t\tattributes.type = type;\n\t\t\t\tattributes.providerNameSlug = providerNameSlug;\n\t\t\t}\n\n\t\t\tattributes.className = getClassNames( html, this.props.attributes.className, responsive && allowResponsive );\n\n\t\t\treturn attributes;\n\t\t}\n\n\t\t/***\n\t\t * Sets block attributes based on the preview data.\n\t\t */\n\t\tsetAttributesFromPreview() {\n\t\t\tconst { setAttributes, preview } = this.props;\n\t\t\tconst { allowResponsive } = this.props.attributes;\n\t\t\tsetAttributes( this.getAttributesFromPreview( preview, allowResponsive ) );\n\t\t}\n\n\t\tswitchBackToURLInput() {\n\t\t\tthis.setState( { editingURL: true } );\n\t\t}\n\n\t\tgetResponsiveHelp( checked ) {\n\t\t\treturn checked ? __( 'This embed will preserve its aspect ratio when the browser is resized.' ) : __( 'This embed may not preserve its aspect ratio when the browser is resized.' );\n\t\t}\n\n\t\ttoggleResponsive() {\n\t\t\tconst { allowResponsive, className } = this.props.attributes;\n\t\t\tconst { html } = this.props.preview;\n\t\t\tconst newAllowResponsive = ! allowResponsive;\n\n\t\t\tthis.props.setAttributes(\n\t\t\t\t{\n\t\t\t\t\tallowResponsive: newAllowResponsive,\n\t\t\t\t\tclassName: getClassNames( html, className, responsive && newAllowResponsive ),\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\trender() {\n\t\t\tconst { url, editingURL } = this.state;\n\t\t\tconst { caption, type, allowResponsive } = this.props.attributes;\n\t\t\tconst { fetching, setAttributes, isSelected, className, preview, cannotEmbed, themeSupportsResponsive, tryAgain } = this.props;\n\n\t\t\tif ( fetching ) {\n\t\t\t\treturn (\n\t\t\t\t\t<EmbedLoading />\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// translators: %s: type of embed e.g: \"YouTube\", \"Twitter\", etc. \"Embed\" is used when no specific type exists\n\t\t\tconst label = sprintf( __( '%s URL' ), title );\n\n\t\t\t// No preview, or we can't embed the current URL, or we've clicked the edit button.\n\t\t\tif ( ! preview || cannotEmbed || editingURL ) {\n\t\t\t\treturn (\n\t\t\t\t\t<EmbedPlaceholder\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tonSubmit={ this.setUrl }\n\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\tcannotEmbed={ cannotEmbed }\n\t\t\t\t\t\tonChange={ ( event ) => this.setState( { url: event.target.value } ) }\n\t\t\t\t\t\tfallback={ () => fallback( url, this.props.onReplace ) }\n\t\t\t\t\t\ttryAgain={ tryAgain }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<EmbedControls\n\t\t\t\t\t\tshowEditButton={ preview && ! cannotEmbed }\n\t\t\t\t\t\tthemeSupportsResponsive={ themeSupportsResponsive }\n\t\t\t\t\t\tblockSupportsResponsive={ responsive }\n\t\t\t\t\t\tallowResponsive={ allowResponsive }\n\t\t\t\t\t\tgetResponsiveHelp={ this.getResponsiveHelp }\n\t\t\t\t\t\ttoggleResponsive={ this.toggleResponsive }\n\t\t\t\t\t\tswitchBackToURLInput={ this.switchBackToURLInput }\n\t\t\t\t\t/>\n\t\t\t\t\t<EmbedPreview\n\t\t\t\t\t\tpreview={ preview }\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\tcaption={ caption }\n\t\t\t\t\t\tonCaptionChange={ ( value ) => setAttributes( { caption: value } ) }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t/>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\t};\n}\n"]}
\No newline at end of file