| 1 |
(()=>{"use strict";const e={n:t=>{const i=t&&t.__esModule?()=>t.default:()=>t;return e.d(i,{a:i}),i},d:(t,i)=>{if(Array.isArray(i))for(var n=0;n<i.length;){var a=i[n++],s=i[n++];e.o(t,a)?0===s&&n++:0===s?Object.defineProperty(t,a,{enumerable:!0,value:i[n++]}):Object.defineProperty(t,a,{enumerable:!0,get:s})}else for(var a in i)e.o(i,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:i[a]})},o:(e,t)=>Object.hasOwn(e,t)},t=window.wp.editor,i=window.wp.plugins,n=window.wp.i18n,a=window.wp.element,s=window.wp.components,o=window.wp.primitives,r=window.ReactJSXRuntime;var c=(0,r.jsx)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(o.Path,{d:"m11.3 17.2-5-5c-.1-.1-.1-.3 0-.4l2.3-2.3-1.1-1-2.3 2.3c-.7.7-.7 1.8 0 2.5l5 5H7.5v1.5h5.3v-5.2h-1.5v2.6zm7.5-6.4-5-5h2.7V4.2h-5.2v5.2h1.5V6.8l5 5c.1.1.1.3 0 .4l-2.3 2.3 1.1 1.1 2.3-2.3c.6-.7.6-1.9-.1-2.5z"})});const l=window.wp.data,d=window.wp.notices,u=window.wp.apiFetch;var p=e.n(u);const m=window.wp.url;let _=!1;const h=()=>{_||(console.warn("[AI] Client ability execution is unavailable. Falling back to REST."),_=!0)},w=(e,t,i)=>{if("GET"===i||"DELETE"===i)return{path:null==t?`/wp-abilities/v1/abilities/${e}/run`:(0,m.addQueryArgs)(`/wp-abilities/v1/abilities/${e}/run`,{input:t}),method:i};const n={path:`/wp-abilities/v1/abilities/${e}/run`,method:"POST"};return void 0!==t&&(n.data={input:t}),n};function b(e){const t=window.aiProviderData??{hasProvider:!1,connectorsUrl:""};if(t.hasProvider)return!0;const{connectorsUrl:i}=t;return(0,l.dispatch)(d.store).createErrorNotice((0,n.__)("This feature requires an AI Connector to function properly.","ai"),{id:e,isDismissible:!0,actions:i?[{label:(0,n.__)("Manage Connectors","ai"),url:i}]:[]}),!1}const g=window.wp.wordcount;const f=window.wp.hooks,y="yoast-seo/editor",x={apply:(e,{metaKey:t,meta:i,editPost:n})=>{n({meta:{...i,[t]:e}})},read:(e,{metaKey:i})=>{const n=e(t.store).getEditedPostAttribute("meta");return n?.[i]??""}},v={"yoast-seo":{apply:(e,{metaKey:t,meta:i,editPost:n})=>{try{const t=(0,l.dispatch)(y);t?.updateData?.({description:e})}catch{}n({meta:{...i,[t]:e}})},read:(e,{metaKey:t})=>{try{const t=e(y);if("function"==typeof t?.getSnippetEditorDescription)return t.getSnippetEditorDescription()??""}catch{}return x.read(e,{metaKey:t})}}},D="ai_meta_description_error";function C(){const e=window.aiMetaDescriptionData,i=e?.metaKey??"wpai_meta_description",s=e?.seoPlugin??null,o=Boolean(s),r=(0,a.useMemo)(()=>function(e){const t=(0,f.applyFilters)("ai.metaDescription.seoAdapters",v);return e&&t[e]||x}(s),[s]),{editPost:c}=(0,l.useDispatch)(t.store),{removeNotice:u,createErrorNotice:m}=(0,l.dispatch)(d.store),[_,y]=(0,a.useState)(!1),[C,j]=(0,a.useState)(null),S=(0,a.useCallback)(()=>b(D),[]),{postId:P,content:T,title:E,meta:A,currentDescription:N}=(0,l.useSelect)(e=>{const n=e(t.store),a=n.getEditedPostAttribute("meta");return{postId:n.getCurrentPostId(),content:n.getEditedPostContent(),title:n.getEditedPostAttribute("title"),meta:a,currentDescription:r.read(e,{metaKey:i})}},[r,i]),k=e?.minContentLength??250,M=!function(e,t){return function(e){return(0,g.count)(e,"characters_excluding_spaces")}(e)>=t}(T,k),G=(0,n.sprintf)(/* translators: %d: minimum number of characters required. */ /* translators: %d: minimum number of characters required. */ |
| 2 |
(0,n.__)("Meta Description generation will be available when the post content has at least %d characters.","ai"),k),B=(0,a.useCallback)(async()=>{if(b(D)){y(!0),j(null),u(D);try{const e={content:T,title:E,post_id:P},t=await async function(e,t,i){try{const i=await(async()=>{try{const{ready:e}=await import("@wordpress/core-abilities");return await e,await import("@wordpress/abilities")}catch{return null}})();if("function"==typeof i?.executeAbility)return await i.executeAbility(e,t);h()}catch(e){if(console.error(e),!(e=>{if(!e||"object"!=typeof e)return!1;const t="message"in e&&"string"==typeof e.message?e.message:"",i="code"in e&&"string"==typeof e.code?e.code:"";return"ability_not_found"===i||t.includes("Ability not found")||t.includes("missing callback")||"ability_invalid_input"===i})(e))throw e;h()}const n=i?.method??"POST";return await p()({...w(e,t,n),...i?.signal?{signal:i.signal}:{}})}("ai/meta-description",e);t?.description?j(t.description):m((0,n.__)("No meta description suggestion was generated.","ai"),{id:D,isDismissible:!0})}catch(e){const t="string"==typeof e?e:e?.message??(0,n.__)("Failed to generate meta description.","ai");m(t,{id:D,isDismissible:!0})}finally{y(!1)}}},[T,E,P,u,m]),z=(0,a.useCallback)(e=>{r.apply(e,{metaKey:i,meta:A,editPost:c})},[r,c,i,A]),K=(0,a.useCallback)(()=>{j(null)},[]);return{isGenerating:_,suggestion:C,currentDescription:N,metaKey:i,hasSeoPlugin:o,isContentTooShort:M,tooShortLabel:G,ensureProviderAvailable:S,generateDescription:B,applyDescription:z,clearSuggestion:K}}function j({count:e}){let t="ai-meta-description__char-count";return t+=e>=140&&e<=160?` ${t}--in-range`:` ${t}--out-of-range`,(0,r.jsx)("span",{className:t,"aria-label":(0,n.sprintf)(/* translators: %d: character count */ /* translators: %d: character count */ |
| 4 |
(0,n.__)("%d characters","ai"),e)})}const S=window.wp.a11y,P=window.wp.compose;function T({text:e,disabled:t}){const{ref:i,hasCopied:o}=function({text:e,announcement:t,timeout:i=4e3}){const[n,s]=(0,a.useState)(null),o=(0,a.useRef)(),r=(0,P.useCopyToClipboard)(e,()=>{t&&(0,S.speak)(t),s("function"==typeof e?e():e),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{s(null)},i)});(0,a.useEffect)(()=>()=>{o.current&&clearTimeout(o.current)},[]);const c="function"==typeof e?e():e;return{ref:r,hasCopied:null!==n&&n===c&&n.length>0}}({text:e,announcement:(0,n.__)("Meta description copied to clipboard.","ai")}),c=t||o;return(0,r.jsx)(s.Button,{ref:c?void 0:i,variant:"tertiary",disabled:c,accessibleWhenDisabled:!0,__next40pxDefaultSize:!0,children:o?(0,n.__)("Copied!","ai"):(0,n.__)("Copy to clipboard","ai")})}function E({isGenerating:e,suggestion:t,editableText:i,isContentTooShort:o,tooShortLabel:c,onEditableTextChange:l,onGenerate:d,onApply:u,onClose:p}){(0,a.useEffect)(()=>{t?.text&&l(t.text)},[t,l]);let m=t?(0,n.__)("Regenerate","ai"):(0,n.__)("Generate","ai");return e&&(m=(0,n.__)("Generating…","ai")),(0,r.jsx)(s.Modal,{title:(0,n.__)("Meta Description","ai"),onRequestClose:p,className:"ai-meta-description-modal",size:"medium",focusOnMount:"firstContentElement",children:(0,r.jsxs)("div",{className:"ai-meta-description-modal__content",children:[o&&(0,r.jsx)(s.Notice,{status:"warning",isDismissible:!1,children:c}),(0,r.jsxs)("div",{className:"ai-meta-description-modal__editor",children:[(0,r.jsx)(s.TextareaControl,{label:(0,n.__)("Meta description","ai"),hideLabelFromVision:!0,value:i,onChange:l,rows:3,help:(0,n.__)("Aim for 140–160 characters for optimal display in search results.","ai"),disabled:e}),(0,r.jsx)(j,{count:i.length})]}),(0,r.jsxs)("div",{className:"ai-meta-description-modal__actions",children:[(0,r.jsx)(s.Button,{variant:"primary",onClick:()=>{u(i),p()},accessibleWhenDisabled:!0,disabled:e||!!i&&0===i.trim().length,__next40pxDefaultSize:!0,children:(0,n.__)("Apply","ai")}),(0,r.jsx)(s.Button,{variant:"secondary",label:o?c:m,showTooltip:!0,onClick:d,disabled:e||o,isBusy:e,accessibleWhenDisabled:!0,__next40pxDefaultSize:!0,children:m}),(0,r.jsx)(T,{text:i,disabled:e||0===i.trim().length}),(0,r.jsx)(s.Button,{variant:"tertiary",isDestructive:!0,onClick:p,className:"ai-meta-description-modal__cancel",__next40pxDefaultSize:!0,children:(0,n.__)("Cancel","ai")})]})]})})}function A(){const{isGenerating:e,suggestion:t,currentDescription:i,isContentTooShort:o,tooShortLabel:l,ensureProviderAvailable:d,generateDescription:u,applyDescription:p,clearSuggestion:m}=C(),[_,h]=(0,a.useState)(!1),[w,b]=(0,a.useState)(""),g=(0,a.useRef)(!1),f=(0,a.useRef)(!1),y=i&&i.trim().length>0;return(0,r.jsxs)("div",{className:"ai-meta-description-panel",children:[y?(0,r.jsxs)("div",{className:"ai-meta-description-panel__display",children:[(0,r.jsx)("p",{className:"ai-meta-description-panel__text",children:i}),(0,r.jsx)(j,{count:i.length}),(0,r.jsxs)("div",{className:"ai-meta-description-panel__actions",children:[(0,r.jsx)(s.Button,{variant:"link",size:"compact",onClick:()=>{m(),b(i),h(!0)},ref:e=>{g.current&&e&&(e.focus(),g.current=!1)},children:(0,n.__)("Edit description","ai")}),(0,r.jsx)(s.Button,{icon:c,label:o?l:(0,n.__)("Regenerate meta description","ai"),showTooltip:!0,onClick:async()=>{b(i),d()&&(h(!0),await u())},disabled:e||o,size:"compact",accessibleWhenDisabled:!0})]})]}):(0,r.jsx)(s.Button,{variant:"secondary",label:o?l:(0,n.__)("Generate Meta Description","ai"),onClick:async()=>{if(b(i),!y){if(!d())return;return h(!0),await u(),void(g.current=!0)}h(!0)},disabled:e||o,isBusy:e,ref:e=>{!y&&f.current&&e&&(e.focus(),f.current=!1)},accessibleWhenDisabled:!0,__next40pxDefaultSize:!0,className:"ai-meta-description-panel__generate-button",children:e?(0,n.__)("Generating…","ai"):(0,n.__)("Generate Meta Description","ai")}),o&&!y&&(0,r.jsx)("p",{className:"ai-meta-description__hint components-base-control__help",style:{color:"#757575"},children:l}),_&&(0,r.jsx)(E,{isGenerating:e,suggestion:t,editableText:w,isContentTooShort:o,tooShortLabel:l,onEditableTextChange:b,onGenerate:u,onApply:e=>{p(e),0===e.trim().length&&(g.current=!1,f.current=!0)},onClose:()=>{m(),h(!1)}})]})}const N=window.aiMetaDescriptionData;(0,i.registerPlugin)("ai-meta-description",{render:()=>N?.enabled?(0,r.jsx)(t.PluginDocumentSettingPanel,{name:"ai-meta-description",title:(0,n.__)("Meta Description","ai"),className:"ai-meta-description-settings-panel",children:(0,r.jsx)(A,{})}):null})})(); |