{
  "version": 3,
  "sources": ["../../../../src/blocks/legacy-widget/edit/control.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * An API for creating and loading a widget control (a <div class=\"widget\">\n * element) that is compatible with most third party widget scripts. By not\n * using React for this, we ensure that we have complete control over the DOM\n * and do not accidentally remove any elements that a third party widget script\n * has attached an event listener to.\n *\n * @property {Element} element The control's DOM element.\n */\nexport default class Control {\n\t/**\n\t * Creates and loads a new control.\n\t *\n\t * @access public\n\t * @param {Object}   params\n\t * @param {string}   params.id\n\t * @param {string}   params.idBase\n\t * @param {Object}   params.instance\n\t * @param {Function} params.onChangeInstance\n\t * @param {Function} params.onChangeHasPreview\n\t * @param {Function} params.onError\n\t */\n\tconstructor( {\n\t\tid,\n\t\tidBase,\n\t\tinstance,\n\t\tonChangeInstance,\n\t\tonChangeHasPreview,\n\t\tonError,\n\t} ) {\n\t\tthis.id = id;\n\t\tthis.idBase = idBase;\n\t\tthis._instance = instance;\n\t\tthis._hasPreview = null;\n\t\tthis.onChangeInstance = onChangeInstance;\n\t\tthis.onChangeHasPreview = onChangeHasPreview;\n\t\tthis.onError = onError;\n\n\t\t// We can't use the real widget number as this is calculated by the\n\t\t// server and we may not ever *actually* save this widget. Instead, use\n\t\t// a fake but unique number.\n\t\tthis.number = ++lastNumber;\n\n\t\tthis.handleFormChange = debounce(\n\t\t\tthis.handleFormChange.bind( this ),\n\t\t\t200\n\t\t);\n\t\tthis.handleFormSubmit = this.handleFormSubmit.bind( this );\n\n\t\tthis.initDOM();\n\t\tthis.bindEvents();\n\t\tthis.loadContent();\n\t}\n\n\t/**\n\t * Clean up the control so that it can be garbage collected.\n\t *\n\t * @access public\n\t */\n\tdestroy() {\n\t\tthis.unbindEvents();\n\t\tthis.element.remove();\n\t\t// TODO: How do we make third party widget scripts remove their event\n\t\t// listeners?\n\t}\n\n\t/**\n\t * Creates the control's DOM structure.\n\t *\n\t * @access private\n\t */\n\tinitDOM() {\n\t\tthis.element = el( 'div', { class: 'widget open' }, [\n\t\t\tel( 'div', { class: 'widget-inside' }, [\n\t\t\t\t( this.form = el( 'form', { class: 'form', method: 'post' }, [\n\t\t\t\t\t// These hidden form inputs are what most widgets' scripts\n\t\t\t\t\t// use to access data about the widget.\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-id',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-id',\n\t\t\t\t\t\tvalue: this.id ?? `${ this.idBase }-${ this.number }`,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'id_base',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'id_base',\n\t\t\t\t\t\tvalue: this.idBase ?? this.id,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-width',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-width',\n\t\t\t\t\t\tvalue: '250',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-height',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-height',\n\t\t\t\t\t\tvalue: '200',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget_number',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget_number',\n\t\t\t\t\t\tvalue: this.idBase ? this.number.toString() : '',\n\t\t\t\t\t} ),\n\t\t\t\t\t( this.content = el( 'div', { class: 'widget-content' } ) ),\n\t\t\t\t\t// Non-multi widgets can be saved via a Save button.\n\t\t\t\t\tthis.id &&\n\t\t\t\t\t\tel(\n\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclass: 'button is-primary',\n\t\t\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__( 'Save' )\n\t\t\t\t\t\t),\n\t\t\t\t] ) ),\n\t\t\t] ),\n\t\t] );\n\t}\n\n\t/**\n\t * Adds the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tbindEvents() {\n\t\t// Prefer jQuery 'change' event instead of the native 'change' event\n\t\t// because many widgets use jQuery's event bus to trigger an update.\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).on( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.addEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tunbindEvents() {\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).off( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.removeEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Fetches the widget's form HTML from the REST API and loads it into the\n\t * control's form.\n\t *\n\t * @access private\n\t */\n\tasync loadContent() {\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { form, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t} );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\n\t\t\t\t// If we don't have an instance, perform a save right away. This\n\t\t\t\t// happens when creating a new Legacy Widget block.\n\t\t\t\tif ( ! this.instance.hash ) {\n\t\t\t\t\tconst { instance } = await encodeWidget( {\n\t\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\t\tnumber: this.number,\n\t\t\t\t\t\tformData: serializeForm( this.form ),\n\t\t\t\t\t} );\n\t\t\t\t\tthis.instance = instance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Trigger 'widget-added' when widget is ready. This event is what\n\t\t\t// widgets' scripts use to initialize, attach events, etc. The event\n\t\t\t// must be fired using jQuery's event bus as this is what widget\n\t\t\t// scripts expect. If jQuery is not loaded, do nothing - some\n\t\t\t// widgets will still work regardless.\n\t\t\tif ( window.jQuery ) {\n\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t$( document ).trigger( 'widget-added', [ $( this.element ) ] );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when a multi widget's form is changed. Non-multi widgets\n\t * are saved manually.\n\t *\n\t * @access private\n\t */\n\thandleFormChange() {\n\t\tif ( this.idBase ) {\n\t\t\tthis.saveForm();\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when the control's form is manually submitted.\n\t *\n\t * @access private\n\t * @param {Event} event\n\t */\n\thandleFormSubmit( event ) {\n\t\tevent.preventDefault();\n\t\tthis.saveForm();\n\t}\n\n\t/**\n\t * Serialize the control's form, send it to the REST API, and update the\n\t * instance with the encoded instance that the REST API returns.\n\t *\n\t * @access private\n\t */\n\tasync saveForm() {\n\t\tconst formData = serializeForm( this.form );\n\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id, formData );\n\t\t\t\tthis.content.innerHTML = form;\n\n\t\t\t\tif ( window.jQuery ) {\n\t\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t\t$( document ).trigger( 'widget-updated', [\n\t\t\t\t\t\t$( this.element ),\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { instance, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t\tformData,\n\t\t\t\t} );\n\t\t\t\tthis.instance = instance;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tget instance() {\n\t\treturn this._instance;\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tset instance( instance ) {\n\t\tif ( this._instance !== instance ) {\n\t\t\tthis._instance = instance;\n\t\t\tthis.onChangeInstance( instance );\n\t\t}\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access public\n\t */\n\tget hasPreview() {\n\t\treturn this._hasPreview;\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access private\n\t */\n\tset hasPreview( hasPreview ) {\n\t\tif ( this._hasPreview !== hasPreview ) {\n\t\t\tthis._hasPreview = hasPreview;\n\t\t\tthis.onChangeHasPreview( hasPreview );\n\t\t}\n\t}\n}\n\nlet lastNumber = 0;\n\nfunction el( tagName, attributes = {}, content = null ) {\n\tconst element = document.createElement( tagName );\n\tfor ( const [ attribute, value ] of Object.entries( attributes ) ) {\n\t\telement.setAttribute( attribute, value );\n\t}\n\tif ( Array.isArray( content ) ) {\n\t\tfor ( const child of content ) {\n\t\t\tif ( child ) {\n\t\t\t\telement.appendChild( child );\n\t\t\t}\n\t\t}\n\t} else if ( typeof content === 'string' ) {\n\t\telement.innerText = content;\n\t}\n\treturn element;\n}\n\nasync function saveWidget( id, formData = null ) {\n\tlet widget;\n\tif ( formData ) {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'PUT',\n\t\t\tdata: {\n\t\t\t\tform_data: formData,\n\t\t\t},\n\t\t} );\n\t} else {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'GET',\n\t\t} );\n\t}\n\treturn { form: widget.rendered_form };\n}\n\nasync function encodeWidget( { idBase, instance, number, formData = null } ) {\n\tconst response = await apiFetch( {\n\t\tpath: `/wp/v2/widget-types/${ idBase }/encode`,\n\t\tmethod: 'POST',\n\t\tdata: {\n\t\t\tinstance,\n\t\t\tnumber,\n\t\t\tform_data: formData,\n\t\t},\n\t} );\n\treturn {\n\t\tinstance: response.instance,\n\t\tform: response.form,\n\t\tpreview: response.preview,\n\t};\n}\n\nfunction isEmptyHTML( html ) {\n\tconst element = document.createElement( 'div' );\n\telement.innerHTML = html;\n\treturn isEmptyNode( element );\n}\n\nfunction isEmptyNode( node ) {\n\tswitch ( node.nodeType ) {\n\t\tcase node.TEXT_NODE:\n\t\t\t// Text nodes are empty if it's entirely whitespace.\n\t\t\treturn node.nodeValue.trim() === '';\n\t\tcase node.ELEMENT_NODE:\n\t\t\t// Elements that are \"embedded content\" are not empty.\n\t\t\t// https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0\n\t\t\tif (\n\t\t\t\t[\n\t\t\t\t\t'AUDIO',\n\t\t\t\t\t'CANVAS',\n\t\t\t\t\t'EMBED',\n\t\t\t\t\t'IFRAME',\n\t\t\t\t\t'IMG',\n\t\t\t\t\t'MATH',\n\t\t\t\t\t'OBJECT',\n\t\t\t\t\t'SVG',\n\t\t\t\t\t'VIDEO',\n\t\t\t\t].includes( node.tagName )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Elements with no children are empty.\n\t\t\tif ( ! node.hasChildNodes() ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Elements with children are empty if all their children are empty.\n\t\t\treturn Array.from( node.childNodes ).every( isEmptyNode );\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\nfunction serializeForm( form ) {\n\treturn new window.URLSearchParams(\n\t\tArray.from( new window.FormData( form ) )\n\t).toString();\n}\n"],
  "mappings": "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",
  "names": ["apiFetch"]
}
