(window.yoastWebpackJsonp=window.yoastWebpackJsonp||[]).push([[20],{0:function(e,t){e.exports=window.lodash},1:function(e,t,n){e.exports=n(22)()},155:function(e,t){e.exports=window.wp.isShallowEqual},22:function(e,t,n){"use strict";var s=n(23),o=n(24),r=n(25);e.exports=function(){function e(e,t,n,s,i,a){a!==r&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=s,n.PropTypes=n,n}},229:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:0;return parseInt(e,10)||t}},4:function(e,t){e.exports=window.wp.element},648:function(e,t,n){"use strict";var s=r(n(649)),o=r(n(656));function r(e){return e&&e.__esModule?e:{default:e}}(0,s.default)(),(0,o.default)()},649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(3),o=n(231),r=a(n(650)),i=a(n(653));function a(e){return e&&e.__esModule?e:{default:e}}var u={hasDuration:{type:"boolean"},days:{type:"string"},hours:{type:"string"},minutes:{type:"string"},description:{type:"array",source:"children",selector:".schema-how-to-description"},jsonDescription:{type:"string"},steps:{type:"array"},additionalListCssClasses:{type:"string"},unorderedList:{type:"boolean"},durationText:{type:"string"},defaultDurationText:{type:"string"}};t.default=function(){(0,o.registerBlockType)("yoast/how-to-block",{title:(0,s.__)("Yoast How-to","wordpress-seo"),description:(0,s.__)("Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.","wordpress-seo"),icon:"editor-ol",category:"yoast-structured-data-blocks",keywords:[(0,s.__)("How-to","wordpress-seo"),(0,s.__)("How to","wordpress-seo"),(0,s.__)("Schema","wordpress-seo"),(0,s.__)("SEO","wordpress-seo"),(0,s.__)("Structured Data","wordpress-seo-premium")],example:{attributes:{steps:[{id:r.default.generateId("how-to-step"),name:[],text:[]},{id:r.default.generateId("how-to-step"),name:[],text:[]}]}},supports:{multiple:!1},attributes:u,edit:function(e){var t=e.attributes,n=e.setAttributes,s=e.className;return t.steps&&0!==t.steps.length||(t.steps=[{id:r.default.generateId("how-to-step"),name:[],text:[]}]),wp.element.createElement(r.default,{attributes:t,setAttributes:n,className:s})},save:function(e){var t=e.attributes;return wp.element.createElement(r.default.Content,t)},deprecated:[{attributes:u,save:i.default.v11_4},{attributes:u,save:i.default.v8_2}]})}},650:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t=r.length)&&r[o].name===n&&r[o].text===s){r[o]={id:r[o].id,name:e,text:t,jsonName:S(e),jsonText:S(t)};var i=p.default.getImageSrc(t);i&&(r[o].jsonImageSrc=i),this.props.setAttributes({steps:r})}}},{key:"insertStep",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=this.props.attributes.steps?this.props.attributes.steps.slice():[];null===e&&(e=r.length-1),r.splice(e+1,0,{id:t.generateId("how-to-step"),name:n,text:s,jsonName:"",jsonText:""}),this.props.setAttributes({steps:r}),o?setTimeout(this.setFocus.bind(this,e+1+":name")):(0,l.speak)((0,u.__)("New step added","wordpress-seo"))}},{key:"swapSteps",value:function(e,t){var n=this.props.attributes.steps?this.props.attributes.steps.slice():[],s=n[e];n[e]=n[t],n[t]=s,this.props.setAttributes({steps:n});var r=this.state.focus.split(":"),i=o(r,2),a=i[0],u=i[1];a===""+e&&this.setFocus(t+":"+u),a===""+t&&this.setFocus(e+":"+u)}},{key:"removeStep",value:function(e){var t=this.props.attributes.steps?this.props.attributes.steps.slice():[];t.splice(e,1),this.props.setAttributes({steps:t});var n="description";t[e]?n=e+":name":t[e-1]&&(n=e-1+":text"),this.setFocus(n)}},{key:"setFocus",value:function(e){e!==this.state.focus&&this.setState({focus:e})}},{key:"setFocusToStep",value:function(e,t){this.setFocus(e+":"+t)}},{key:"moveStepUp",value:function(e){this.swapSteps(e,e-1)}},{key:"moveStepDown",value:function(e){this.swapSteps(e,e+1)}},{key:"getSteps",value:function(){var e=this;if(!this.props.attributes.steps)return null;var t=this.state.focus.split(":"),n=o(t,2),s=n[0],r=n[1];return this.props.attributes.steps.map(function(t,n){return wp.element.createElement(p.default,{key:t.id,step:t,index:n,onChange:e.changeStep,insertStep:e.insertStep,removeStep:e.removeStep,onFocus:e.setFocusToStep,subElement:r,onMoveUp:e.moveStepUp,onMoveDown:e.moveStepDown,isFirst:0===n,isLast:n===e.props.attributes.steps.length-1,isSelected:s===""+n,isUnorderedList:e.props.attributes.unorderedList})})}},{key:"formatDuration",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(""===e)return"";var n=e.replace(/^[0]+/,"");return""===n?0:null!==t?Math.min(Math.max(0,parseInt(n,10)),t):Math.max(0,parseInt(n,10))}},{key:"getAddStepButton",value:function(){return wp.element.createElement(b,{icon:"insert",onClick:this.onAddStepButtonClick,className:"schema-how-to-add-step"},(0,u.__)("Add step","wordpress-seo"))}},{key:"addCSSClasses",value:function(e){this.props.setAttributes({additionalListCssClasses:e})}},{key:"toggleListType",value:function(e){this.props.setAttributes({unorderedList:e})}},{key:"getListTypeHelp",value:function(e){return e?(0,u.__)("Showing step items as an unordered list","wordpress-seo"):(0,u.__)("Showing step items as an ordered list.","wordpress-seo")}},{key:"focusDescription",value:function(){this.setFocus("description")}},{key:"onChangeDescription",value:function(e){this.props.setAttributes({description:e,jsonDescription:S(e)})}},{key:"addDuration",value:function(){var e=this;this.props.setAttributes({hasDuration:!0}),setTimeout(function(){return e.daysInput.current.focus()})}},{key:"removeDuration",value:function(){var e=this;this.props.setAttributes({hasDuration:!1}),setTimeout(function(){e.addDurationButton.current instanceof C||e.addDurationButton.current.focus()})}},{key:"onChangeDays",value:function(e){var t=this.formatDuration(e.target.value);this.props.setAttributes({days:(0,c.toString)(t)})}},{key:"onChangeHours",value:function(e){var t=this.formatDuration(e.target.value,23);this.props.setAttributes({hours:(0,c.toString)(t)})}},{key:"onChangeMinutes",value:function(e){var t=this.formatDuration(e.target.value,59);this.props.setAttributes({minutes:(0,c.toString)(t)})}},{key:"getDuration",value:function(){var e=this.props.attributes;return e.hasDuration?wp.element.createElement("fieldset",{className:"schema-how-to-duration"},wp.element.createElement("span",{className:"schema-how-to-duration-flex-container",role:"presentation"},wp.element.createElement("legend",{className:"schema-how-to-duration-legend"},e.durationText||this.getDefaultDurationText()),wp.element.createElement("span",{className:"schema-how-to-duration-time-input"},wp.element.createElement("label",{htmlFor:"schema-how-to-duration-days",className:"screen-reader-text"},(0,u.__)("days","wordpress-seo")),wp.element.createElement("input",{id:"schema-how-to-duration-days",className:"schema-how-to-duration-input",type:"number",value:e.days,onChange:this.onChangeDays,placeholder:"DD",ref:this.daysInput}),wp.element.createElement("label",{htmlFor:"schema-how-to-duration-hours",className:"screen-reader-text"},(0,u.__)("hours","wordpress-seo")),wp.element.createElement("input",{id:"schema-how-to-duration-hours",className:"schema-how-to-duration-input",type:"number",value:e.hours,onChange:this.onChangeHours,placeholder:"HH"}),wp.element.createElement("span",{"aria-hidden":"true"},":"),wp.element.createElement("label",{htmlFor:"schema-how-to-duration-minutes",className:"screen-reader-text"},(0,u.__)("minutes","wordpress-seo")),wp.element.createElement("input",{id:"schema-how-to-duration-minutes",className:"schema-how-to-duration-input",type:"number",value:e.minutes,onChange:this.onChangeMinutes,placeholder:"MM"}),wp.element.createElement(b,{className:"schema-how-to-duration-delete-button",icon:"trash",label:(0,u.__)("Delete total time","wordpress-seo"),onClick:this.removeDuration})))):wp.element.createElement(b,{onClick:this.addDuration,className:"schema-how-to-duration-button",ref:this.addDurationButton,icon:"insert"},(0,u.__)("Add total time","wordpress-seo"))}},{key:"getSidebar",value:function(e,t,n){return n===this.getDefaultDurationText()&&(n=""),wp.element.createElement(v,null,wp.element.createElement(g,{title:(0,u.__)("Settings","wordpress-seo"),className:"blocks-font-size"},wp.element.createElement(N,{label:(0,u.__)("CSS class(es) to apply to the steps","wordpress-seo"),value:t,onChange:this.addCSSClasses,help:(0,u.__)("Optional. This can give you better control over the styling of the steps.","wordpress-seo")}),wp.element.createElement(N,{label:(0,u.__)("Describe the duration of the instruction:","wordpress-seo"),value:n,onChange:this.setDurationText,help:(0,u.__)("Optional. Customize how you want to describe the duration of the instruction","wordpress-seo"),placeholder:this.getDefaultDurationText()}),wp.element.createElement(k,{label:(0,u.__)("Unordered list","wordpress-seo"),checked:e||!1,onChange:this.toggleListType,help:this.getListTypeHelp})))}},{key:"render",value:function(){var e=this.props,t=e.attributes,n=["schema-how-to",e.className].filter(function(e){return e}).join(" "),s=["schema-how-to-steps",t.additionalListCssClasses].filter(function(e){return e}).join(" ");return wp.element.createElement("div",{className:n},this.getDuration(),wp.element.createElement(w,{tagName:"p",className:"schema-how-to-description",value:t.description,isSelected:"description"===this.state.focus,unstableOnFocus:this.focusDescription,onChange:this.onChangeDescription,placeholder:(0,u.__)("Enter a description","wordpress-seo"),keepPlaceholderOnFocus:!0}),wp.element.createElement("ul",{className:s},this.getSteps()),wp.element.createElement("div",{className:"schema-how-to-buttons"},this.getAddStepButton()),this.getSidebar(t.unorderedList,t.additionalListCssClasses,t.durationText))}}],[{key:"generateId",value:function(e){return e+"-"+(new Date).getTime()}},{key:"getStepsContent",value:function(e){return e?e.map(function(e){return wp.element.createElement(p.default.Content,s({},e,{key:e.id}))}):null}},{key:"Content",value:function(e){var n=e.steps,s=e.hasDuration,o=e.days,r=e.hours,i=e.minutes,a=e.description,u=e.unorderedList,l=e.additionalListCssClasses,c=e.className,p=e.durationText,m=e.defaultDurationText,f=["schema-how-to",c].filter(function(e){return e}).join(" "),h=["schema-how-to-steps",l].filter(function(e){return e}).join(" "),w=(0,d.default)({days:o,hours:r,minutes:i});return wp.element.createElement("div",{className:f},s&&"string"==typeof w&&w.length>0&&wp.element.createElement("p",{className:"schema-how-to-total-time"},wp.element.createElement("span",{className:"schema-how-to-duration-time-text"},p||m," "),w+". "),wp.element.createElement(x,{tagName:"p",className:"schema-how-to-description",value:a}),u?wp.element.createElement("ul",{className:h},t.getStepsContent(n)):wp.element.createElement("ol",{className:h},t.getStepsContent(n)))}}]),t}();t.default=T,T.propTypes={attributes:i.default.object.isRequired,setAttributes:i.default.func.isRequired,className:i.default.string},T.defaultProps={className:""}},651:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:0;return parseInt(e,10)||t}},653:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=r(n(654)),o=r(n(655));function r(e){return e&&e.__esModule?e:{default:e}}t.default={v8_2:s.default,v11_4:o.default}},654:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t0&&wp.element.createElement("p",{className:"schema-how-to-total-time"},(0,o.__)("Time needed:","wordpress-seo")," ",v+". "),wp.element.createElement("p",{className:"schema-how-to-description"},p)," ",d?wp.element.createElement("ul",{className:w},t):wp.element.createElement("ol",{className:w},t))}l.propTypes={attributes:r.default.object}},655:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t0&&wp.element.createElement("p",{className:"schema-how-to-total-time"},wp.element.createElement("span",{className:"schema-how-to-duration-time-text"},f||h," "),y+". "),wp.element.createElement("p",{className:"schema-how-to-description"},c)," ",p?wp.element.createElement("ul",{className:v},b):wp.element.createElement("ol",{className:v},b))}u.propTypes={attributes:o.default.object.isRequired}},656:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n(3),o=n(231),r=a(n(657)),i=a(n(659));function a(e){return e&&e.__esModule?e:{default:e}}var u={questions:{type:"array"},additionalListCssClasses:{type:"string"}};t.default=function(){(0,o.registerBlockType)("yoast/faq-block",{title:(0,s.__)("Yoast FAQ","wordpress-seo"),description:(0,s.__)("List your Frequently Asked Questions in an SEO-friendly way. You can only use one FAQ block per post.","wordpress-seo"),icon:"editor-ul",category:"yoast-structured-data-blocks",keywords:[(0,s.__)("FAQ","wordpress-seo"),(0,s.__)("Frequently Asked Questions","wordpress-seo"),(0,s.__)("Schema","wordpress-seo"),(0,s.__)("SEO","wordpress-seo"),(0,s.__)("Structured Data","wordpress-seo-premium")],example:{attributes:{questions:[{id:r.default.generateId("faq-question"),question:[],answer:[]},{id:r.default.generateId("faq-question"),question:[],answer:[]},{id:r.default.generateId("faq-question"),question:[],answer:[]}]}},supports:{multiple:!1},attributes:u,edit:function(e){var t=e.attributes,n=e.setAttributes,s=e.className;return t.questions&&0!==t.questions.length||(t.questions=[{id:r.default.generateId("faq-question"),question:[],answer:[]}]),wp.element.createElement(r.default,{attributes:t,setAttributes:n,className:s})},save:function(e){var t=e.attributes;return wp.element.createElement(r.default.Content,t)},deprecated:[{attributes:u,save:i.default.v13_1}]})}},657:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t=r.length)&&r[o].question===n&&r[o].answer===s){r[o]={id:r[o].id,question:e,answer:t,jsonQuestion:h(e),jsonAnswer:h(t)};var i=l.default.getImageSrc(t);i&&(r[o].jsonImageSrc=i),this.props.setAttributes({questions:r})}}},{key:"insertQuestion",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=this.props.attributes.questions?this.props.attributes.questions.slice():[];null===e&&(e=r.length-1),r.splice(e+1,0,{id:t.generateId("faq-question"),question:n,answer:s,jsonQuestion:"",jsonAnswer:""}),this.props.setAttributes({questions:r}),o?setTimeout(this.setFocus.bind(this,"question",e)):(0,u.speak)((0,a.__)("New question added","wordpress-seo"))}},{key:"swapQuestions",value:function(e,t){var n=this.props.attributes.questions?this.props.attributes.questions.slice():[],s=n[e];n[e]=n[t],n[t]=s,this.props.setAttributes({questions:n});var r=this.state.focus.split(":"),i=o(r,2),a=i[0],u=i[1];a===""+e?this.setFocus(u,t):a===""+t&&this.setFocus(u,e)}},{key:"moveQuestionUp",value:function(e){this.swapQuestions(e,e-1)}},{key:"moveQuestionDown",value:function(e){this.swapQuestions(e,e+1)}},{key:"removeQuestion",value:function(e){var t=this.props.attributes.questions?this.props.attributes.questions.slice():[];t.splice(e,1),this.props.setAttributes({questions:t});var n=0;t[e]?n=e:t[e-1]&&(n=e-1),this.setFocus("question",n)}},{key:"setFocus",value:function(e,t){var n=t+":"+e;n!==this.state.focus&&this.setState({focus:n})}},{key:"getAddQuestionButton",value:function(){return wp.element.createElement(d,{icon:"insert",onClick:this.onAddQuestionButtonClick,className:"schema-faq-add-question"},(0,a.__)("Add question","wordpress-seo"))}},{key:"getQuestions",value:function(){var e=this,t=this.props.attributes;if(!t.questions)return null;var n=this.state.focus.split(":"),s=o(n,2),r=s[0],i=s[1];return t.questions.map(function(n,s){return wp.element.createElement(l.default,{index:s,key:n.id,attributes:n,insertQuestion:e.insertQuestion,removeQuestion:e.removeQuestion,onChange:e.changeQuestion,onFocus:e.setFocus,isSelected:r===""+s,subElement:i,onMoveUp:e.moveQuestionUp,onMoveDown:e.moveQuestionDown,isFirst:0===s,isLast:s===t.questions.length-1})})}},{key:"render",value:function(){var e=["schema-faq",this.props.className].filter(function(e){return e}).join(" ");return wp.element.createElement("div",{className:e},wp.element.createElement("div",null,this.getQuestions()),wp.element.createElement("div",{className:"schema-faq-buttons"},this.getAddQuestionButton()))}}],[{key:"generateId",value:function(e){return e+"-"+(new Date).getTime()}},{key:"Content",value:function(e){var t=e.questions,n=e.className,o=t?t.map(function(e,t){return wp.element.createElement(w,s({key:t},e))}):null,r=["schema-faq",n].filter(function(e){return e}).join(" ");return wp.element.createElement("div",{className:r},o)}}]),t}();t.default=v,v.propTypes={attributes:i.default.object.isRequired,setAttributes:i.default.func.isRequired,className:i.default.string},v.defaultProps={className:""}},658:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n