Changeset 3423384
- Timestamp:
- 12/19/2025 06:17:51 AM (3 weeks ago)
- Location:
- inline-context/trunk
- Files:
-
- 2 added
- 3 deleted
- 12 edited
-
ABILITIES-API.md (added)
-
admin-settings.php (modified) (8 diffs)
-
blueprint.json (deleted)
-
build/frontend.asset.php (modified) (1 diff)
-
build/frontend.js (modified) (1 diff)
-
build/index.asset.php (modified) (1 diff)
-
build/index.css (modified) (1 diff)
-
build/style-index.css (modified) (1 diff)
-
changelog.txt (modified) (1 diff)
-
includes/class-inline-context-abilities.php (added)
-
includes/class-inline-context-frontend.php (modified) (1 diff)
-
includes/class-inline-context-rest-api.php (modified) (1 diff)
-
includes/class-inline-context-utils.php (modified) (2 diffs)
-
inline-context.php (modified) (24 diffs)
-
languages/inline-context-nl_NL.mo (deleted)
-
languages/inline-context-nl_NL.po (deleted)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
inline-context/trunk/admin-settings.php
r3405431 r3423384 53 53 ); 54 54 55 // Register animation setting. 56 register_setting( 57 'inline_context_general_settings', 58 'inline_context_enable_animations', 59 array( 60 'type' => 'boolean', 61 'sanitize_callback' => 'rest_sanitize_boolean', 62 'default' => true, 63 ) 64 ); 65 66 // Register link style setting. 67 register_setting( 68 'inline_context_general_settings', 69 'inline_context_link_style', 70 array( 71 'type' => 'string', 72 'sanitize_callback' => 'inline_context_sanitize_link_style', 73 'default' => 'text', 74 ) 75 ); 76 77 // Register icon placement setting. 78 register_setting( 79 'inline_context_general_settings', 80 'inline_context_icon_placement', 81 array( 82 'type' => 'string', 83 'sanitize_callback' => 'inline_context_sanitize_icon_placement', 84 'default' => 'middle', 85 ) 86 ); 87 88 // Register CSS variables setting. 89 register_setting( 90 'inline_context_general_settings', 91 'inline_context_enable_animations', 92 array( 93 'type' => 'boolean', 94 'sanitize_callback' => 'rest_sanitize_boolean', 95 'default' => true, 96 ) 97 ); 98 55 99 // Register CSS variables setting. 56 100 register_setting( … … 85 129 86 130 add_settings_section( 131 'inline_context_pill_section', 132 __( 'Pill Style Settings', 'inline-context' ), 133 'inline_context_pill_section_callback', 134 'inline-context-settings-styling' 135 ); 136 137 add_settings_section( 87 138 'inline_context_note_section', 88 139 __( 'Note Appearance', 'inline-context' ), … … 147 198 'inline-context-settings-styling', 148 199 'inline_context_link_section', 200 array( 201 'key' => $key, 202 'type' => $field['type'], 203 'default' => $field['default'], 204 'description' => $field['description'] ?? '', 205 ) 206 ); 207 } 208 209 // Pill style settings (only applicable when pill style is selected). 210 $pill_fields = array( 211 'pill-border-color' => array( 212 'label' => __( 'Border Color', 'inline-context' ), 213 'default' => '#d4850a', 214 'type' => 'color', 215 'description' => __( 'Color of the border around the link button.', 'inline-context' ), 216 ), 217 'pill-border-width' => array( 218 'label' => __( 'Border Width', 'inline-context' ), 219 'default' => '1.5px', 220 'type' => 'text', 221 'description' => __( 'Thickness of the border. Use 0 for no border.', 'inline-context' ), 222 ), 223 'pill-border-radius' => array( 224 'label' => __( 'Border Radius', 'inline-context' ), 225 'default' => '0.25rem', 226 'type' => 'text', 227 'description' => __( 'Roundness of corners. Higher values create more rounded pills.', 'inline-context' ), 228 ), 229 'pill-padding-y' => array( 230 'label' => __( 'Vertical Padding', 'inline-context' ), 231 'default' => '2px', 232 'type' => 'text', 233 'description' => __( 'Internal spacing at top and bottom of the link button.', 'inline-context' ), 234 ), 235 'pill-padding-x' => array( 236 'label' => __( 'Horizontal Padding', 'inline-context' ), 237 'default' => '8px', 238 'type' => 'text', 239 'description' => __( 'Internal spacing at left and right of the link button.', 'inline-context' ), 240 ), 241 'pill-background' => array( 242 'label' => __( 'Background Color', 'inline-context' ), 243 'default' => '#FFF4E6', 244 'type' => 'color', 245 'description' => __( 'Background color of the link button.', 'inline-context' ), 246 ), 247 'pill-hover-background' => array( 248 'label' => __( 'Hover Background Color', 'inline-context' ), 249 'default' => 'rgba(212, 133, 10, 0.08)', 250 'type' => 'text', 251 'description' => __( 'Background color when hovering. Supports HEX (#FFF0D6), RGB (rgb(255,240,214)), or RGBA with transparency (rgba(212,133,10,0.08)).', 'inline-context' ), 252 ), 253 'pill-hover-border-color' => array( 254 'label' => __( 'Hover Border Color', 'inline-context' ), 255 'default' => '#b87409', 256 'type' => 'color', 257 'description' => __( 'Border color when hovering over the link button.', 'inline-context' ), 258 ), 259 ); 260 261 foreach ( $pill_fields as $key => $field ) { 262 add_settings_field( 263 'inline_context_' . $key, 264 $field['label'], 265 'inline_context_render_field', 266 'inline-context-settings-styling', 267 'inline_context_pill_section', 149 268 array( 150 269 'key' => $key, … … 343 462 344 463 /** 464 * Sanitize link style setting 465 * 466 * @param string $input The input value to sanitize. 467 * @return string The sanitized link style ('text' or 'pill'). 468 */ 469 function inline_context_sanitize_link_style( $input ) { 470 $valid_styles = array( 'text', 'pill' ); 471 return in_array( $input, $valid_styles, true ) ? $input : 'text'; 472 } 473 474 /** 475 * Sanitize icon placement setting 476 * 477 * @param string $input The input value to sanitize. 478 * @return string The sanitized icon placement ('top', 'middle', or 'bottom'). 479 */ 480 function inline_context_sanitize_icon_placement( $input ) { 481 $valid_placements = array( 'top', 'middle', 'bottom' ); 482 return in_array( $input, $valid_placements, true ) ? $input : 'middle'; 483 } 484 485 /** 345 486 * Sanitize CSS variables 346 487 * … … 371 512 */ 372 513 function inline_context_link_section_callback() { 373 echo '<p>' . esc_html__( 'Customize how trigger links appear. These settings apply to both inline and tooltip display modes.', 'inline-context' ) . '</p>'; 514 echo '<p>' . esc_html__( 'Customize how trigger links appear. These settings apply to both inline and tooltip display modes. Note: Some settings apply only to specific link styles.', 'inline-context' ) . '</p>'; 515 } 516 517 /** 518 * Pill style section callback 519 */ 520 function inline_context_pill_section_callback() { 521 echo '<p>' . esc_html__( 'These settings only apply when the "Pill" link style is selected in the General tab.', 'inline-context' ) . '</p>'; 374 522 } 375 523 … … 443 591 if ( ! current_user_can( 'manage_options' ) ) { 444 592 return; 593 } 594 595 // Handle reset to defaults action. 596 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce verified below. 597 if ( isset( $_POST['inline_context_reset_styles'] ) ) { 598 check_admin_referer( 'inline_context_reset_styles' ); 599 600 // Reset CSS variables to defaults. 601 update_option( 'inline_context_css_variables', inline_context_get_default_css_variables() ); 602 603 add_settings_error( 604 'inline_context_messages', 605 'inline_context_reset_success', 606 __( 'Styling settings have been reset to defaults.', 'inline-context' ), 607 'success' 608 ); 445 609 } 446 610 … … 525 689 </p> 526 690 </div> </fieldset> 527 </td> 528 </tr> 529 </table> 530 531 <p class="submit"> 691 </td> 692 </tr> 693 <tr> 694 <th scope="row"> 695 <?php esc_html_e( 'Link Style', 'inline-context' ); ?> 696 </th> 697 <td> 698 <fieldset> 699 <legend class="screen-reader-text"> 700 <span><?php esc_html_e( 'Link Style', 'inline-context' ); ?></span> 701 </legend> 702 <?php 703 $link_style = get_option( 'inline_context_link_style', 'text' ); 704 ?> 705 <label> 706 <input type="radio" name="inline_context_link_style" value="text" <?php checked( $link_style, 'text' ); ?>> 707 <?php esc_html_e( 'Text style (default) - Link appears as regular text with a subtle indicator', 'inline-context' ); ?> 708 </label> 709 <br> 710 <label> 711 <input type="radio" name="inline_context_link_style" value="pill" <?php checked( $link_style, 'pill' ); ?>> 712 <?php esc_html_e( 'Pill style - Link appears as a button-like element with border and background', 'inline-context' ); ?> 713 </label> 714 <p class="description"> 715 <?php esc_html_e( 'Choose how trigger links appear in your content. The pill style makes links more prominent. You can customize the appearance of each style in the Styling tab.', 'inline-context' ); ?> 716 </p> 717 </fieldset> 718 </td> 719 </tr> 720 <tr> 721 <th scope="row"> 722 <?php esc_html_e( 'Icon Placement', 'inline-context' ); ?> 723 </th> 724 <td> 725 <fieldset> 726 <legend class="screen-reader-text"> 727 <span><?php esc_html_e( 'Icon Placement', 'inline-context' ); ?></span> 728 </legend> 729 <?php 730 $icon_placement = get_option( 'inline_context_icon_placement', 'middle' ); 731 ?> 732 <label> 733 <input type="radio" name="inline_context_icon_placement" value="top" <?php checked( $icon_placement, 'top' ); ?>> 734 <?php esc_html_e( 'Top - Icon appears above the text baseline (superscript)', 'inline-context' ); ?> 735 </label> 736 <br> 737 <label> 738 <input type="radio" name="inline_context_icon_placement" value="middle" <?php checked( $icon_placement, 'middle' ); ?>> 739 <?php esc_html_e( 'Middle - Icon aligns with text center (default)', 'inline-context' ); ?> 740 </label> 741 <br> 742 <label> 743 <input type="radio" name="inline_context_icon_placement" value="bottom" <?php checked( $icon_placement, 'bottom' ); ?>> 744 <?php esc_html_e( 'Bottom - Icon appears below the text baseline (subscript)', 'inline-context' ); ?> 745 </label> 746 <p class="description"> 747 <?php esc_html_e( 'Controls the vertical position of both the chevron icon and category icons. This setting applies consistently to all icon types.', 'inline-context' ); ?> 748 </p> 749 </fieldset> 750 </td> 751 </tr> 752 <tr> 753 <th scope="row"><?php esc_html_e( 'Animations', 'inline-context' ); ?></th> 754 <td> 755 <fieldset> 756 <label> 757 <input type="checkbox" name="inline_context_enable_animations" value="1" <?php checked( get_option( 'inline_context_enable_animations', true ) ); ?>> 758 <?php esc_html_e( 'Enable subtle animations when notes appear', 'inline-context' ); ?> 759 </label> 760 <p class="description"> 761 <?php esc_html_e( 'When enabled, notes will smoothly fade and slide in. When disabled, notes appear instantly. Always respects user preference for reduced motion.', 'inline-context' ); ?> 762 </p> 763 </fieldset> 764 </td> 765 </tr> 766 </table> <p class="submit"> 532 767 <input type="submit" name="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Changes', 'inline-context' ); ?>"> 533 768 </p> … … 545 780 <p class="submit"> 546 781 <input type="submit" name="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Changes', 'inline-context' ); ?>"> 782 </p> 783 </form> 784 785 <hr style="margin-top: 40px; margin-bottom: 20px;"> 786 787 <h2><?php esc_html_e( 'Reset Styles', 'inline-context' ); ?></h2> 788 <p><?php esc_html_e( 'Reset all styling options above to their default values.', 'inline-context' ); ?></p> 789 790 <form method="post" action="" onsubmit="return confirm('<?php echo esc_js( __( 'Are you sure you want to reset all styling settings to defaults? This cannot be undone.', 'inline-context' ) ); ?>');"> 791 <?php wp_nonce_field( 'inline_context_reset_styles' ); ?> 792 <input type="hidden" name="inline_context_reset_styles" value="1"> 793 <p class="submit"> 794 <input type="submit" name="submit" class="button button-secondary" value="<?php esc_attr_e( 'Reset to Defaults', 'inline-context' ); ?>"> 795 </p> 796 <p class="description"> 797 <?php esc_html_e( 'This will reset colors, spacing, borders, and all other styling options to the plugin defaults.', 'inline-context' ); ?> 547 798 </p> 548 799 </form> -
inline-context/trunk/build/frontend.asset.php
r3405431 r3423384 1 <?php return array('dependencies' => array(), 'version' => ' bbd9b1ba6f929759984f');1 <?php return array('dependencies' => array(), 'version' => '0f1df57bb142e4f4d350'); -
inline-context/trunk/build/frontend.js
r3405431 r3423384 1 (()=>{"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:i}=Object;let{freeze:r,seal:a,create:l}=Object,{apply:s,construct:c}="undefined"!=typeof Reflect&&Reflect;r||(r=function(e){return e}),a||(a=function(e){return e}),s||(s=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),i=2;i<n;i++)o[i-2]=arguments[i];return e.apply(t,o)}),c||(c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const u=x(Array.prototype.forEach),d=x(Array.prototype.lastIndexOf),m=x(Array.prototype.pop),p=x(Array.prototype.push),f=x(Array.prototype.splice),h=x(String.prototype.toLowerCase),g=x(String.prototype.toString), T=x(String.prototype.match),b=x(String.prototype.replace),y=x(String.prototype.indexOf),A=x(String.prototype.trim),_=x(Object.prototype.hasOwnProperty),E=x(RegExp.prototype.test),S=(w=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c(w,t)});var w;function x(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return s(e,t,o)}}function v(e,o){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h;t&&t(e,null);let r=o.length;for(;r--;){let t=o[r];if("string"==typeof t){const e=i(t);e!==t&&(n(o)||(o[r]=e),t=e)}e[t]=!0}return e}function N(e){for(let t=0;t<e.length;t++)_(e,t)||(e[t]=null);return e}function L(t){const n=l(null);for(const[o,i]of e(t))_(t,o)&&(Array.isArray(i)?n[o]=N(i):i&&"object"==typeof i&&i.constructor===Object?n[o]=L(i):n[o]=i);return n}function C(e,t){for(;null!==e;){const n=i(e,t);if(n){if(n.get)return x(n.get);if("function"==typeof n.value)return x(n.value)}e=o(e)}return function(){return null}}const k=r(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),R=r(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),O=r(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),D=r(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),I=r(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),M=r(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),U=r(["#text"]),z=r(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),P=r(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),H=r(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),F=r(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),W=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),B=a(/<%[\w\W]*|[\w\W]*%>/gm),G=a(/\$\{[\w\W]*/gm),j=a(/^data-[\-\w.\u00B7-\uFFFF]+$/),Y=a(/^aria-[\-\w]+$/),$=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),q=a(/^(?:\w+script|data):/i),X=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),K=a(/^html$/i),V=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var Z=Object.freeze({__proto__:null,ARIA_ATTR:Y,ATTR_WHITESPACE:X,CUSTOM_ELEMENT:V,DATA_ATTR:j,DOCTYPE_NAME:K,ERB_EXPR:B,IS_ALLOWED_URI:$,IS_SCRIPT_OR_DATA:q,MUSTACHE_EXPR:W,TMPLIT_EXPR:G});const J=function(){return"undefined"==typeof window?null:window};var Q=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:J();const o=e=>t(e);if(o.version="3.3.0",o.removed=[],!n||!n.document||9!==n.document.nodeType||!n.Element)return o.isSupported=!1,o;let{document:i}=n;const a=i,s=a.currentScript,{DocumentFragment:c,HTMLTemplateElement:w,Node:x,Element:N,NodeFilter:W,NamedNodeMap:B=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:G,DOMParser:j,trustedTypes:Y}=n,q=N.prototype,X=C(q,"cloneNode"),V=C(q,"remove"),Q=C(q,"nextSibling"),ee=C(q,"childNodes"),te=C(q,"parentNode");if("function"==typeof w){const e=i.createElement("template");e.content&&e.content.ownerDocument&&(i=e.content.ownerDocument)}let ne,oe="";const{implementation:ie,createNodeIterator:re,createDocumentFragment:ae,getElementsByTagName:le}=i,{importNode:se}=a;let ce={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof e&&"function"==typeof te&&ie&&void 0!==ie.createHTMLDocument;const{MUSTACHE_EXPR:ue,ERB_EXPR:de,TMPLIT_EXPR:me,DATA_ATTR:pe,ARIA_ATTR:fe,IS_SCRIPT_OR_DATA:he,ATTR_WHITESPACE:ge,CUSTOM_ELEMENT:Te}=Z;let{IS_ALLOWED_URI:be}=Z,ye=null;const Ae=v({},[...k,...R,...O,...I,...U]);let _e=null;const Ee=v({},[...z,...P,...H,...F]);let Se=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),we=null,xe=null;const ve=Object.seal(l(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Ne=!0,Le=!0,Ce=!1,ke=!0,Re=!1,Oe=!0,De=!1,Ie=!1,Me=!1,Ue=!1,ze=!1,Pe=!1,He=!0,Fe=!1,We=!0,Be=!1,Ge={},je=null;const Ye=v({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const qe=v({},["audio","video","img","source","image","track"]);let Xe=null;const Ke=v({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ve="http://www.w3.org/1998/Math/MathML",Ze="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml";let Qe=Je,et=!1,tt=null;const nt=v({},[Ve,Ze,Je],g);let ot=v({},["mi","mo","mn","ms","mtext"]),it=v({},["annotation-xml"]);const rt=v({},["title","style","font","a","script"]);let at=null;const lt=["application/xhtml+xml","text/html"];let st=null,ct=null;const ut=i.createElement("form"),dt=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ct||ct!==e){if(e&&"object"==typeof e||(e={}),e=L(e),at=-1===lt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,st="application/xhtml+xml"===at?g:h,ye=_(e,"ALLOWED_TAGS")?v({},e.ALLOWED_TAGS,st):Ae,_e=_(e,"ALLOWED_ATTR")?v({},e.ALLOWED_ATTR,st):Ee,tt=_(e,"ALLOWED_NAMESPACES")?v({},e.ALLOWED_NAMESPACES,g):nt,Xe=_(e,"ADD_URI_SAFE_ATTR")?v(L(Ke),e.ADD_URI_SAFE_ATTR,st):Ke,$e=_(e,"ADD_DATA_URI_TAGS")?v(L(qe),e.ADD_DATA_URI_TAGS,st):qe,je=_(e,"FORBID_CONTENTS")?v({},e.FORBID_CONTENTS,st):Ye,we=_(e,"FORBID_TAGS")?v({},e.FORBID_TAGS,st):L({}),xe=_(e,"FORBID_ATTR")?v({},e.FORBID_ATTR,st):L({}),Ge=!!_(e,"USE_PROFILES")&&e.USE_PROFILES,Ne=!1!==e.ALLOW_ARIA_ATTR,Le=!1!==e.ALLOW_DATA_ATTR,Ce=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ke=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Re=e.SAFE_FOR_TEMPLATES||!1,Oe=!1!==e.SAFE_FOR_XML,De=e.WHOLE_DOCUMENT||!1,Ue=e.RETURN_DOM||!1,ze=e.RETURN_DOM_FRAGMENT||!1,Pe=e.RETURN_TRUSTED_TYPE||!1,Me=e.FORCE_BODY||!1,He=!1!==e.SANITIZE_DOM,Fe=e.SANITIZE_NAMED_PROPS||!1,We=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||$,Qe=e.NAMESPACE||Je,ot=e.MATHML_TEXT_INTEGRATION_POINTS||ot,it=e.HTML_INTEGRATION_POINTS||it,Se=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Se.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&dt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Se.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Se.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(Le=!1),ze&&(Ue=!0),Ge&&(ye=v({},U),_e=[],!0===Ge.html&&(v(ye,k),v(_e,z)),!0===Ge.svg&&(v(ye,R),v(_e,P),v(_e,F)),!0===Ge.svgFilters&&(v(ye,O),v(_e,P),v(_e,F)),!0===Ge.mathMl&&(v(ye,I),v(_e,H),v(_e,F))),e.ADD_TAGS&&("function"==typeof e.ADD_TAGS?ve.tagCheck=e.ADD_TAGS:(ye===Ae&&(ye=L(ye)),v(ye,e.ADD_TAGS,st))),e.ADD_ATTR&&("function"==typeof e.ADD_ATTR?ve.attributeCheck=e.ADD_ATTR:(_e===Ee&&(_e=L(_e)),v(_e,e.ADD_ATTR,st))),e.ADD_URI_SAFE_ATTR&&v(Xe,e.ADD_URI_SAFE_ATTR,st),e.FORBID_CONTENTS&&(je===Ye&&(je=L(je)),v(je,e.FORBID_CONTENTS,st)),We&&(ye["#text"]=!0),De&&v(ye,["html","head","body"]),ye.table&&(v(ye,["tbody"]),delete we.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw S('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw S('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ne=e.TRUSTED_TYPES_POLICY,oe=ne.createHTML("")}else void 0===ne&&(ne=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(Y,s)),null!==ne&&"string"==typeof oe&&(oe=ne.createHTML(""));r&&r(e),ct=e}},pt=v({},[...R,...O,...D]),ft=v({},[...I,...M]),ht=function(e){p(o.removed,{element:e});try{te(e).removeChild(e)}catch(t){V(e)}},gt=function(e,t){try{p(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Ue||ze)try{ht(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Tt=function(e){let t=null,n=null;if(Me)e="<remove></remove>"+e;else{const t=T(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===at&&Qe===Je&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=ne?ne.createHTML(e):e;if(Qe===Je)try{t=(new j).parseFromString(o,at)}catch(e){}if(!t||!t.documentElement){t=ie.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=et?oe:o}catch(e){}}const r=t.body||t.documentElement;return e&&n&&r.insertBefore(i.createTextNode(n),r.childNodes[0]||null),Qe===Je?le.call(t,De?"html":"body")[0]:De?t.documentElement:r},bt=function(e){return re.call(e.ownerDocument||e,e,W.SHOW_ELEMENT|W.SHOW_COMMENT|W.SHOW_TEXT|W.SHOW_PROCESSING_INSTRUCTION|W.SHOW_CDATA_SECTION,null)},yt=function(e){return e instanceof G&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof B)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},At=function(e){return"function"==typeof x&&e instanceof x};function _t(e,t,n){u(e,e=>{e.call(o,t,n,ct)})}const Et=function(e){let t=null;if(_t(ce.beforeSanitizeElements,e,null),yt(e))return ht(e),!0;const n=st(e.nodeName);if(_t(ce.uponSanitizeElement,e,{tagName:n,allowedTags:ye}),Oe&&e.hasChildNodes()&&!At(e.firstElementChild)&&E(/<[/\w!]/g,e.innerHTML)&&E(/<[/\w!]/g,e.textContent))return ht(e),!0;if(7===e.nodeType)return ht(e),!0;if(Oe&&8===e.nodeType&&E(/<[/\w]/g,e.data))return ht(e),!0;if(!(ve.tagCheck instanceof Function&&ve.tagCheck(n))&&(!ye[n]||we[n])){if(!we[n]&&wt(n)){if(Se.tagNameCheck instanceof RegExp&&E(Se.tagNameCheck,n))return!1;if(Se.tagNameCheck instanceof Function&&Se.tagNameCheck(n))return!1}if(We&&!je[n]){const t=te(e)||e.parentNode,n=ee(e)||e.childNodes;if(n&&t)for(let o=n.length-1;o>=0;--o){const i=X(n[o],!0);i.__removalCount=(e.__removalCount||0)+1,t.insertBefore(i,Q(e))}}return ht(e),!0}return e instanceof N&&!function(e){let t=te(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});const n=h(e.tagName),o=h(t.tagName);return!!tt[e.namespaceURI]&&(e.namespaceURI===Ze?t.namespaceURI===Je?"svg"===n:t.namespaceURI===Ve?"svg"===n&&("annotation-xml"===o||ot[o]):Boolean(pt[n]):e.namespaceURI===Ve?t.namespaceURI===Je?"math"===n:t.namespaceURI===Ze?"math"===n&&it[o]:Boolean(ft[n]):e.namespaceURI===Je?!(t.namespaceURI===Ze&&!it[o])&&!(t.namespaceURI===Ve&&!ot[o])&&!ft[n]&&(rt[n]||!pt[n]):!("application/xhtml+xml"!==at||!tt[e.namespaceURI]))}(e)?(ht(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!E(/<\/no(script|embed|frames)/i,e.innerHTML)?(Re&&3===e.nodeType&&(t=e.textContent,u([ue,de,me],e=>{t=b(t,e," ")}),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),_t(ce.afterSanitizeElements,e,null),!1):(ht(e),!0)},St=function(e,t,n){if(He&&("id"===t||"name"===t)&&(n in i||n in ut))return!1;if(Le&&!xe[t]&&E(pe,t));else if(Ne&&E(fe,t));else if(ve.attributeCheck instanceof Function&&ve.attributeCheck(t,e));else if(!_e[t]||xe[t]){if(!(wt(e)&&(Se.tagNameCheck instanceof RegExp&&E(Se.tagNameCheck,e)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(e))&&(Se.attributeNameCheck instanceof RegExp&&E(Se.attributeNameCheck,t)||Se.attributeNameCheck instanceof Function&&Se.attributeNameCheck(t,e))||"is"===t&&Se.allowCustomizedBuiltInElements&&(Se.tagNameCheck instanceof RegExp&&E(Se.tagNameCheck,n)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(n))))return!1}else if(Xe[t]);else if(E(be,b(n,ge,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!$e[e])if(Ce&&!E(he,b(n,ge,"")));else if(n)return!1;return!0},wt=function(e){return"annotation-xml"!==e&&T(e,Te)},xt=function(e){_t(ce.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||yt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:_e,forceKeepAttr:void 0};let i=t.length;for(;i--;){const r=t[i],{name:a,namespaceURI:l,value:s}=r,c=st(a),d=s;let p="value"===a?d:A(d);if(n.attrName=c,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,_t(ce.uponSanitizeAttribute,e,n),p=n.attrValue,!Fe||"id"!==c&&"name"!==c||(gt(a,e),p="user-content-"+p),Oe&&E(/((--!?|])>)|<\/(style|title|textarea)/i,p)){gt(a,e);continue}if("attributename"===c&&T(p,"href")){gt(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){gt(a,e);continue}if(!ke&&E(/\/>/i,p)){gt(a,e);continue}Re&&u([ue,de,me],e=>{p=b(p,e," ")});const f=st(e.nodeName);if(St(f,c,p)){if(ne&&"object"==typeof Y&&"function"==typeof Y.getAttributeType)if(l);else switch(Y.getAttributeType(f,c)){case"TrustedHTML":p=ne.createHTML(p);break;case"TrustedScriptURL":p=ne.createScriptURL(p)}if(p!==d)try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),yt(e)?ht(e):m(o.removed)}catch(t){gt(a,e)}}else gt(a,e)}_t(ce.afterSanitizeAttributes,e,null)},vt=function e(t){let n=null;const o=bt(t);for(_t(ce.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)_t(ce.uponSanitizeShadowNode,n,null),Et(n),xt(n),n.content instanceof c&&e(n.content);_t(ce.afterSanitizeShadowDOM,t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=null,r=null,l=null;if(et=!e,et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!At(e)){if("function"!=typeof e.toString)throw S("toString is not a function");if("string"!=typeof(e=e.toString()))throw S("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ie||mt(t),o.removed=[],"string"==typeof e&&(Be=!1),Be){if(e.nodeName){const t=st(e.nodeName);if(!ye[t]||we[t])throw S("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof x)n=Tt("\x3c!----\x3e"),i=n.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?n=i:n.appendChild(i);else{if(!Ue&&!Re&&!De&&-1===e.indexOf("<"))return ne&&Pe?ne.createHTML(e):e;if(n=Tt(e),!n)return Ue?null:Pe?oe:""}n&&Me&&ht(n.firstChild);const s=bt(Be?e:n);for(;r=s.nextNode();)Et(r),xt(r),r.content instanceof c&&vt(r.content);if(Be)return e;if(Ue){if(ze)for(l=ae.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(_e.shadowroot||_e.shadowrootmode)&&(l=se.call(a,l,!0)),l}let d=De?n.outerHTML:n.innerHTML;return De&&ye["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&E(K,n.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+d),Re&&u([ue,de,me],e=>{d=b(d,e," ")}),ne&&Pe?ne.createHTML(d):d},o.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ie=!0},o.clearConfig=function(){ct=null,Ie=!1},o.isValidAttribute=function(e,t,n){ct||mt({});const o=st(e),i=st(t);return St(o,i,n)},o.addHook=function(e,t){"function"==typeof t&&p(ce[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=d(ce[e],t);return-1===n?void 0:f(ce[e],n,1)[0]}return m(ce[e])},o.removeHooks=function(e){ce[e]=[]},o.removeAllHooks=function(){ce={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();document.addEventListener("DOMContentLoaded",()=>{document.body.classList.add("js");const{applyFilters:e}=wp.hooks||{applyFilters:(e,t)=>t},{categories:t={}}=window.inlineContextData||{},n=()=>{const t=window.inlineContextData?.displayMode||"inline";return e("inlineContext.displayMode",t)},o=e("inline_context_revealed_class","wp-inline-context--open"),i=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},r=e("inline_context_allowed_tags",["p","strong","em","a","ol","ul","li","br"]),a=e("inline_context_allowed_attributes",["href","rel","target"]);"function"==typeof Q.addHook&&Q.addHook("afterSanitizeAttributes",e=>{if(e.nodeName&&"a"===e.nodeName.toLowerCase()){const t=e.getAttribute("href")||"";if(/^\s*javascript:/i.test(t)&&e.removeAttribute("href"),/^https?:\/\//i.test(t)){const t=(e.getAttribute("rel")||"").toLowerCase(),n=new Set((t?t.split(/\s+/):[]).concat(["noopener","noreferrer"]));e.setAttribute("rel",Array.from(n).join(" "))}}});const l=t=>{if(!t)return"";const n=e("inline_context_pre_sanitize_html",t),o=Q.sanitize(n,{ALLOWED_TAGS:r,ALLOWED_ATTR:a,ALLOW_ARIA_ATTR:!0,RETURN_TRUSTED_TYPE:!1});return e("inline_context_post_sanitize_html",o)},s=(e,n,o)=>{const i=Object.values(t).find(e=>e.id&&e.id.toString()===n.toString());if(!i)return;const r=e.querySelector(".wp-inline-context-category-icon");r&&r.remove();const a=document.createElement("span");a.className=`wp-inline-context-category-icon dashicons ${o?i.icon_open:i.icon_closed}`,a.style.color=i.color,a.setAttribute("aria-hidden","true"),e.appendChild(a)};for(const e of document.querySelectorAll(".wp-inline-context")){e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false"),e.hasAttribute("role")||e.setAttribute("role","button");const n=e.dataset.categoryId;n&&Object.values(t).find(e=>e.id&&e.id.toString()===n.toString())&&s(e,n,!1)}const c=t=>{if(!e("inline_context_process_links",!0,t))return;const n=t.querySelectorAll("a[href]"),o=window.location.hostname;for(const t of n){const n=t.getAttribute("href");if(n)try{if(n.startsWith("/")||n.startsWith("#")||n.startsWith("?")){const o=e("inline_context_internal_link_target","_self",n,t);"_self"===o?t.removeAttribute("target"):t.setAttribute("target",o);continue}if(new URL(n).hostname===o){const o=e("inline_context_internal_link_target","_self",n,t);"_self"===o?t.removeAttribute("target"):t.setAttribute("target",o)}else{const o=e("inline_context_external_link_target","_blank",n,t);t.setAttribute("target",o);const i=t.getAttribute("rel")||"",r=new Set(i.split(" ").filter(Boolean));r.add("noopener"),r.add("noreferrer"),t.setAttribute("rel",Array.from(r).join(" "))}}catch(e){t.removeAttribute("target")}}},u=e=>{if(!e)return;const n=`tooltip-${e.dataset.anchorId}`;let r=document.getElementById(n);if(r){r.remove(),e.classList.remove(o),e.setAttribute("aria-expanded","false"),e.removeAttribute("aria-describedby"),e._handleOutsideClick&&(document.removeEventListener("click",e._handleOutsideClick),delete e._handleOutsideClick),e._handleEscape&&(document.removeEventListener("keydown",e._handleEscape),delete e._handleEscape);const n=e.dataset.categoryId;return void(n&&Object.values(t).find(e=>e.id&&e.id.toString()===n.toString())&&s(e,n,!1))}const a=e.dataset.inlineContext||"";if(!a)return;if(!e.dataset.anchorId)return;r=document.createElement("div"),r.id=n,r.className="wp-inline-context-tooltip",r.setAttribute("role","tooltip"),r.setAttribute("tabindex","-1"),a.includes("<p>")||a.includes("<strong>")||a.includes("<em>")?(r.innerHTML=l(a),c(r)):r.textContent=i(a);const m=document.createElement("button");m.className="wp-inline-context-tooltip-close",m.setAttribute("aria-label","Close tooltip"),m.innerHTML="×",m.addEventListener("click",t=>{t.stopPropagation(),u(e),e.focus()}),r.appendChild(m),document.body.appendChild(r),d(r,e),e.classList.add(o),e.setAttribute("aria-expanded","true"),e.setAttribute("aria-describedby",n);const p=e.dataset.categoryId;p&&Object.values(t).find(e=>e.id&&e.id.toString()===p.toString())&&s(e,p,!0);const f=t=>{r.contains(t.target)||e.contains(t.target)||u(e)};e._handleOutsideClick=f,setTimeout(()=>{document.addEventListener("click",f)},0);const h=t=>{"Escape"===t.key&&(u(e),e.focus())};e._handleEscape=h,document.addEventListener("keydown",h),setTimeout(()=>{r.focus()},100)},d=(e,t)=>{const n=t.getBoundingClientRect(),o=e.getBoundingClientRect(),i=window.innerWidth,r=window.pageXOffset||document.documentElement.scrollLeft,a=window.pageYOffset||document.documentElement.scrollTop;let l=n.top+a-o.height-10,s=n.left+r+n.width/2-o.width/2;n.top-o.height-10<0?(l=n.bottom+a+10,e.classList.add("wp-inline-context-tooltip--below")):e.classList.add("wp-inline-context-tooltip--above"),s<r+10?(s=r+10,e.classList.add("wp-inline-context-tooltip--left")):s+o.width>r+i-10&&(s=r+i-o.width-10,e.classList.add("wp-inline-context-tooltip--right")),e.style.top=`${l}px`,e.style.left=`${s}px`},m=r=>{if(!r)return;if("tooltip"===n())return void u(r);const a=r.nextElementSibling;if(a?.classList.contains("wp-inline-context-inline")){a.remove(),r.classList.remove(o),r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-describedby"),r.removeAttribute("aria-controls");const e=r.dataset.categoryId;return void(e&&Object.values(t).find(t=>t.id&&t.id.toString()===e.toString())&&s(r,e,!1))}const d=r.dataset.inlineContext||"";if(!d)return;const m=r.dataset.anchorId;if(!m)return;const p=`note-${m}`,f=document.createElement("span"),h=e("inline_context_note_class","wp-inline-context-inline",r);f.className=h,d.includes("<p>")||d.includes("<strong>")||d.includes("<em>")?(f.innerHTML=l(d),c(f)):f.textContent=i(d),f.setAttribute("role","note"),f.setAttribute("tabindex","-1"),f.id=p,r.after(f),r.classList.add(o),r.setAttribute("aria-expanded","true"),r.setAttribute("aria-describedby",p),r.setAttribute("aria-controls",p);const g=r.dataset.categoryId;g&&Object.values(t).find(e=>e.id&&e.id.toString()===g.toString())&&s(r,g,!0),setTimeout(()=>{f.focus()},100)};if(document.body.addEventListener("click",e=>{const t=e.target.closest(".wp-inline-context");t&&(e.preventDefault(),m(t))}),document.body.addEventListener("keydown",e=>{const t=e.target.closest(".wp-inline-context");t&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),m(t)))}),window.inlineContextData?.hoverEnabled&&"tooltip"===n()){let e=null,t=null,n=null,o=null;const i=i=>{const r=`tooltip-${i.dataset.anchorId}`;t&&(clearTimeout(t),t=null),e&&(clearTimeout(e),e=null),document.getElementById(r)?(n=r,o=i):e=setTimeout(()=>{u(i),n=r,o=i,e=null},300)},r=()=>{e&&(clearTimeout(e),e=null),t&&clearTimeout(t),t=setTimeout(()=>{o&&n&&(document.getElementById(n)&&u(o),n=null,o=null),t=null},100)},a=()=>{t&&(clearTimeout(t),t=null)};document.body.addEventListener("mouseenter",e=>{const t=e.target.closest(".wp-inline-context");t?i(t):e.target.closest(".wp-inline-context-tooltip")&&a()},!0),document.body.addEventListener("mouseleave",e=>{(e.target.closest(".wp-inline-context")||e.target.closest(".wp-inline-context-tooltip"))&&r()},!0)}const p=()=>{const e=window.location.hash;if(!e||!e.startsWith("#context-note-"))return;const t=e.substring(1),n=document.querySelector(`[data-anchor-id="${t}"]`);if(n){const e=n.nextElementSibling;e?.classList.contains("wp-inline-context-inline")||m(n),setTimeout(()=>{n.scrollIntoView({behavior:"smooth",block:"center"})},100)}};p(),window.addEventListener("hashchange",p)})})();1 (()=>{"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:i}=Object;let{freeze:r,seal:a,create:l}=Object,{apply:s,construct:c}="undefined"!=typeof Reflect&&Reflect;r||(r=function(e){return e}),a||(a=function(e){return e}),s||(s=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),i=2;i<n;i++)o[i-2]=arguments[i];return e.apply(t,o)}),c||(c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const u=x(Array.prototype.forEach),d=x(Array.prototype.lastIndexOf),m=x(Array.prototype.pop),p=x(Array.prototype.push),f=x(Array.prototype.splice),h=x(String.prototype.toLowerCase),g=x(String.prototype.toString),b=x(String.prototype.match),T=x(String.prototype.replace),y=x(String.prototype.indexOf),A=x(String.prototype.trim),_=x(Object.prototype.hasOwnProperty),E=x(RegExp.prototype.test),w=(S=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c(S,t)});var S;function x(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return s(e,t,o)}}function v(e,o){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h;t&&t(e,null);let r=o.length;for(;r--;){let t=o[r];if("string"==typeof t){const e=i(t);e!==t&&(n(o)||(o[r]=e),t=e)}e[t]=!0}return e}function N(e){for(let t=0;t<e.length;t++)_(e,t)||(e[t]=null);return e}function L(t){const n=l(null);for(const[o,i]of e(t))_(t,o)&&(Array.isArray(i)?n[o]=N(i):i&&"object"==typeof i&&i.constructor===Object?n[o]=L(i):n[o]=i);return n}function C(e,t){for(;null!==e;){const n=i(e,t);if(n){if(n.get)return x(n.get);if("function"==typeof n.value)return x(n.value)}e=o(e)}return function(){return null}}const k=r(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),R=r(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),D=r(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),O=r(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),I=r(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),M=r(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),U=r(["#text"]),z=r(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),P=r(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),H=r(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),F=r(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),W=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),B=a(/<%[\w\W]*|[\w\W]*%>/gm),G=a(/\$\{[\w\W]*/gm),j=a(/^data-[\-\w.\u00B7-\uFFFF]+$/),Y=a(/^aria-[\-\w]+$/),$=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),q=a(/^(?:\w+script|data):/i),X=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),K=a(/^html$/i),V=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var Z=Object.freeze({__proto__:null,ARIA_ATTR:Y,ATTR_WHITESPACE:X,CUSTOM_ELEMENT:V,DATA_ATTR:j,DOCTYPE_NAME:K,ERB_EXPR:B,IS_ALLOWED_URI:$,IS_SCRIPT_OR_DATA:q,MUSTACHE_EXPR:W,TMPLIT_EXPR:G});const J=function(){return"undefined"==typeof window?null:window};var Q=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:J();const o=e=>t(e);if(o.version="3.3.0",o.removed=[],!n||!n.document||9!==n.document.nodeType||!n.Element)return o.isSupported=!1,o;let{document:i}=n;const a=i,s=a.currentScript,{DocumentFragment:c,HTMLTemplateElement:S,Node:x,Element:N,NodeFilter:W,NamedNodeMap:B=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:G,DOMParser:j,trustedTypes:Y}=n,q=N.prototype,X=C(q,"cloneNode"),V=C(q,"remove"),Q=C(q,"nextSibling"),ee=C(q,"childNodes"),te=C(q,"parentNode");if("function"==typeof S){const e=i.createElement("template");e.content&&e.content.ownerDocument&&(i=e.content.ownerDocument)}let ne,oe="";const{implementation:ie,createNodeIterator:re,createDocumentFragment:ae,getElementsByTagName:le}=i,{importNode:se}=a;let ce={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof e&&"function"==typeof te&&ie&&void 0!==ie.createHTMLDocument;const{MUSTACHE_EXPR:ue,ERB_EXPR:de,TMPLIT_EXPR:me,DATA_ATTR:pe,ARIA_ATTR:fe,IS_SCRIPT_OR_DATA:he,ATTR_WHITESPACE:ge,CUSTOM_ELEMENT:be}=Z;let{IS_ALLOWED_URI:Te}=Z,ye=null;const Ae=v({},[...k,...R,...D,...I,...U]);let _e=null;const Ee=v({},[...z,...P,...H,...F]);let we=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Se=null,xe=null;const ve=Object.seal(l(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Ne=!0,Le=!0,Ce=!1,ke=!0,Re=!1,De=!0,Oe=!1,Ie=!1,Me=!1,Ue=!1,ze=!1,Pe=!1,He=!0,Fe=!1,We=!0,Be=!1,Ge={},je=null;const Ye=v({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const qe=v({},["audio","video","img","source","image","track"]);let Xe=null;const Ke=v({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ve="http://www.w3.org/1998/Math/MathML",Ze="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml";let Qe=Je,et=!1,tt=null;const nt=v({},[Ve,Ze,Je],g);let ot=v({},["mi","mo","mn","ms","mtext"]),it=v({},["annotation-xml"]);const rt=v({},["title","style","font","a","script"]);let at=null;const lt=["application/xhtml+xml","text/html"];let st=null,ct=null;const ut=i.createElement("form"),dt=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ct||ct!==e){if(e&&"object"==typeof e||(e={}),e=L(e),at=-1===lt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,st="application/xhtml+xml"===at?g:h,ye=_(e,"ALLOWED_TAGS")?v({},e.ALLOWED_TAGS,st):Ae,_e=_(e,"ALLOWED_ATTR")?v({},e.ALLOWED_ATTR,st):Ee,tt=_(e,"ALLOWED_NAMESPACES")?v({},e.ALLOWED_NAMESPACES,g):nt,Xe=_(e,"ADD_URI_SAFE_ATTR")?v(L(Ke),e.ADD_URI_SAFE_ATTR,st):Ke,$e=_(e,"ADD_DATA_URI_TAGS")?v(L(qe),e.ADD_DATA_URI_TAGS,st):qe,je=_(e,"FORBID_CONTENTS")?v({},e.FORBID_CONTENTS,st):Ye,Se=_(e,"FORBID_TAGS")?v({},e.FORBID_TAGS,st):L({}),xe=_(e,"FORBID_ATTR")?v({},e.FORBID_ATTR,st):L({}),Ge=!!_(e,"USE_PROFILES")&&e.USE_PROFILES,Ne=!1!==e.ALLOW_ARIA_ATTR,Le=!1!==e.ALLOW_DATA_ATTR,Ce=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ke=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,Re=e.SAFE_FOR_TEMPLATES||!1,De=!1!==e.SAFE_FOR_XML,Oe=e.WHOLE_DOCUMENT||!1,Ue=e.RETURN_DOM||!1,ze=e.RETURN_DOM_FRAGMENT||!1,Pe=e.RETURN_TRUSTED_TYPE||!1,Me=e.FORCE_BODY||!1,He=!1!==e.SANITIZE_DOM,Fe=e.SANITIZE_NAMED_PROPS||!1,We=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,Te=e.ALLOWED_URI_REGEXP||$,Qe=e.NAMESPACE||Je,ot=e.MATHML_TEXT_INTEGRATION_POINTS||ot,it=e.HTML_INTEGRATION_POINTS||it,we=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(we.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&dt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(we.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(we.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(Le=!1),ze&&(Ue=!0),Ge&&(ye=v({},U),_e=[],!0===Ge.html&&(v(ye,k),v(_e,z)),!0===Ge.svg&&(v(ye,R),v(_e,P),v(_e,F)),!0===Ge.svgFilters&&(v(ye,D),v(_e,P),v(_e,F)),!0===Ge.mathMl&&(v(ye,I),v(_e,H),v(_e,F))),e.ADD_TAGS&&("function"==typeof e.ADD_TAGS?ve.tagCheck=e.ADD_TAGS:(ye===Ae&&(ye=L(ye)),v(ye,e.ADD_TAGS,st))),e.ADD_ATTR&&("function"==typeof e.ADD_ATTR?ve.attributeCheck=e.ADD_ATTR:(_e===Ee&&(_e=L(_e)),v(_e,e.ADD_ATTR,st))),e.ADD_URI_SAFE_ATTR&&v(Xe,e.ADD_URI_SAFE_ATTR,st),e.FORBID_CONTENTS&&(je===Ye&&(je=L(je)),v(je,e.FORBID_CONTENTS,st)),We&&(ye["#text"]=!0),Oe&&v(ye,["html","head","body"]),ye.table&&(v(ye,["tbody"]),delete Se.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw w('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw w('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ne=e.TRUSTED_TYPES_POLICY,oe=ne.createHTML("")}else void 0===ne&&(ne=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(Y,s)),null!==ne&&"string"==typeof oe&&(oe=ne.createHTML(""));r&&r(e),ct=e}},pt=v({},[...R,...D,...O]),ft=v({},[...I,...M]),ht=function(e){p(o.removed,{element:e});try{te(e).removeChild(e)}catch(t){V(e)}},gt=function(e,t){try{p(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(Ue||ze)try{ht(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},bt=function(e){let t=null,n=null;if(Me)e="<remove></remove>"+e;else{const t=b(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===at&&Qe===Je&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=ne?ne.createHTML(e):e;if(Qe===Je)try{t=(new j).parseFromString(o,at)}catch(e){}if(!t||!t.documentElement){t=ie.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=et?oe:o}catch(e){}}const r=t.body||t.documentElement;return e&&n&&r.insertBefore(i.createTextNode(n),r.childNodes[0]||null),Qe===Je?le.call(t,Oe?"html":"body")[0]:Oe?t.documentElement:r},Tt=function(e){return re.call(e.ownerDocument||e,e,W.SHOW_ELEMENT|W.SHOW_COMMENT|W.SHOW_TEXT|W.SHOW_PROCESSING_INSTRUCTION|W.SHOW_CDATA_SECTION,null)},yt=function(e){return e instanceof G&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof B)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},At=function(e){return"function"==typeof x&&e instanceof x};function _t(e,t,n){u(e,e=>{e.call(o,t,n,ct)})}const Et=function(e){let t=null;if(_t(ce.beforeSanitizeElements,e,null),yt(e))return ht(e),!0;const n=st(e.nodeName);if(_t(ce.uponSanitizeElement,e,{tagName:n,allowedTags:ye}),De&&e.hasChildNodes()&&!At(e.firstElementChild)&&E(/<[/\w!]/g,e.innerHTML)&&E(/<[/\w!]/g,e.textContent))return ht(e),!0;if(7===e.nodeType)return ht(e),!0;if(De&&8===e.nodeType&&E(/<[/\w]/g,e.data))return ht(e),!0;if(!(ve.tagCheck instanceof Function&&ve.tagCheck(n))&&(!ye[n]||Se[n])){if(!Se[n]&&St(n)){if(we.tagNameCheck instanceof RegExp&&E(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(We&&!je[n]){const t=te(e)||e.parentNode,n=ee(e)||e.childNodes;if(n&&t)for(let o=n.length-1;o>=0;--o){const i=X(n[o],!0);i.__removalCount=(e.__removalCount||0)+1,t.insertBefore(i,Q(e))}}return ht(e),!0}return e instanceof N&&!function(e){let t=te(e);t&&t.tagName||(t={namespaceURI:Qe,tagName:"template"});const n=h(e.tagName),o=h(t.tagName);return!!tt[e.namespaceURI]&&(e.namespaceURI===Ze?t.namespaceURI===Je?"svg"===n:t.namespaceURI===Ve?"svg"===n&&("annotation-xml"===o||ot[o]):Boolean(pt[n]):e.namespaceURI===Ve?t.namespaceURI===Je?"math"===n:t.namespaceURI===Ze?"math"===n&&it[o]:Boolean(ft[n]):e.namespaceURI===Je?!(t.namespaceURI===Ze&&!it[o])&&!(t.namespaceURI===Ve&&!ot[o])&&!ft[n]&&(rt[n]||!pt[n]):!("application/xhtml+xml"!==at||!tt[e.namespaceURI]))}(e)?(ht(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!E(/<\/no(script|embed|frames)/i,e.innerHTML)?(Re&&3===e.nodeType&&(t=e.textContent,u([ue,de,me],e=>{t=T(t,e," ")}),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),_t(ce.afterSanitizeElements,e,null),!1):(ht(e),!0)},wt=function(e,t,n){if(He&&("id"===t||"name"===t)&&(n in i||n in ut))return!1;if(Le&&!xe[t]&&E(pe,t));else if(Ne&&E(fe,t));else if(ve.attributeCheck instanceof Function&&ve.attributeCheck(t,e));else if(!_e[t]||xe[t]){if(!(St(e)&&(we.tagNameCheck instanceof RegExp&&E(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&E(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t,e))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&E(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Xe[t]);else if(E(Te,T(n,ge,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!$e[e])if(Ce&&!E(he,T(n,ge,"")));else if(n)return!1;return!0},St=function(e){return"annotation-xml"!==e&&b(e,be)},xt=function(e){_t(ce.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||yt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:_e,forceKeepAttr:void 0};let i=t.length;for(;i--;){const r=t[i],{name:a,namespaceURI:l,value:s}=r,c=st(a),d=s;let p="value"===a?d:A(d);if(n.attrName=c,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,_t(ce.uponSanitizeAttribute,e,n),p=n.attrValue,!Fe||"id"!==c&&"name"!==c||(gt(a,e),p="user-content-"+p),De&&E(/((--!?|])>)|<\/(style|title|textarea)/i,p)){gt(a,e);continue}if("attributename"===c&&b(p,"href")){gt(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){gt(a,e);continue}if(!ke&&E(/\/>/i,p)){gt(a,e);continue}Re&&u([ue,de,me],e=>{p=T(p,e," ")});const f=st(e.nodeName);if(wt(f,c,p)){if(ne&&"object"==typeof Y&&"function"==typeof Y.getAttributeType)if(l);else switch(Y.getAttributeType(f,c)){case"TrustedHTML":p=ne.createHTML(p);break;case"TrustedScriptURL":p=ne.createScriptURL(p)}if(p!==d)try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),yt(e)?ht(e):m(o.removed)}catch(t){gt(a,e)}}else gt(a,e)}_t(ce.afterSanitizeAttributes,e,null)},vt=function e(t){let n=null;const o=Tt(t);for(_t(ce.beforeSanitizeShadowDOM,t,null);n=o.nextNode();)_t(ce.uponSanitizeShadowNode,n,null),Et(n),xt(n),n.content instanceof c&&e(n.content);_t(ce.afterSanitizeShadowDOM,t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=null,r=null,l=null;if(et=!e,et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!At(e)){if("function"!=typeof e.toString)throw w("toString is not a function");if("string"!=typeof(e=e.toString()))throw w("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ie||mt(t),o.removed=[],"string"==typeof e&&(Be=!1),Be){if(e.nodeName){const t=st(e.nodeName);if(!ye[t]||Se[t])throw w("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof x)n=bt("\x3c!----\x3e"),i=n.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?n=i:n.appendChild(i);else{if(!Ue&&!Re&&!Oe&&-1===e.indexOf("<"))return ne&&Pe?ne.createHTML(e):e;if(n=bt(e),!n)return Ue?null:Pe?oe:""}n&&Me&&ht(n.firstChild);const s=Tt(Be?e:n);for(;r=s.nextNode();)Et(r),xt(r),r.content instanceof c&&vt(r.content);if(Be)return e;if(Ue){if(ze)for(l=ae.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(_e.shadowroot||_e.shadowrootmode)&&(l=se.call(a,l,!0)),l}let d=Oe?n.outerHTML:n.innerHTML;return Oe&&ye["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&E(K,n.ownerDocument.doctype.name)&&(d="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+d),Re&&u([ue,de,me],e=>{d=T(d,e," ")}),ne&&Pe?ne.createHTML(d):d},o.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ie=!0},o.clearConfig=function(){ct=null,Ie=!1},o.isValidAttribute=function(e,t,n){ct||mt({});const o=st(e),i=st(t);return wt(o,i,n)},o.addHook=function(e,t){"function"==typeof t&&p(ce[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=d(ce[e],t);return-1===n?void 0:f(ce[e],n,1)[0]}return m(ce[e])},o.removeHooks=function(e){ce[e]=[]},o.removeAllHooks=function(){ce={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();document.addEventListener("DOMContentLoaded",()=>{document.body.classList.add("js"),!1===window.inlineContextData?.animationsEnabled&&document.body.classList.add("wp-inline-context-no-animations");const{applyFilters:e}=wp.hooks||{applyFilters:(e,t)=>t},{categories:t={}}=window.inlineContextData||{},n=()=>{const t=window.inlineContextData?.displayMode||"inline";return e("inlineContext.displayMode",t)},o=e("inline_context_revealed_class","wp-inline-context--open"),i=e=>{if(!e)return"";const t=document.createElement("textarea");return t.innerHTML=e,t.value},r=e("inline_context_allowed_tags",["p","strong","em","a","ol","ul","li","br"]),a=e("inline_context_allowed_attributes",["href","rel","target"]);"function"==typeof Q.addHook&&Q.addHook("afterSanitizeAttributes",e=>{if(e.nodeName&&"a"===e.nodeName.toLowerCase()){const t=e.getAttribute("href")||"";if(/^\s*javascript:/i.test(t)&&e.removeAttribute("href"),/^https?:\/\//i.test(t)){const t=(e.getAttribute("rel")||"").toLowerCase(),n=new Set((t?t.split(/\s+/):[]).concat(["noopener","noreferrer"]));e.setAttribute("rel",Array.from(n).join(" "))}}});const l=t=>{if(!t)return"";const n=e("inline_context_pre_sanitize_html",t),o=Q.sanitize(n,{ALLOWED_TAGS:r,ALLOWED_ATTR:a,ALLOW_ARIA_ATTR:!0,RETURN_TRUSTED_TYPE:!1});return e("inline_context_post_sanitize_html",o)},s=(e,n,o)=>{const i=Object.values(t).find(e=>e.id&&e.id.toString()===n.toString());if(!i)return;const r=e.querySelector(".wp-inline-context-category-icon");r&&r.remove();const a=document.createElement("span");a.className=`wp-inline-context-category-icon dashicons ${o?i.icon_open:i.icon_closed}`,a.style.color=i.color,a.setAttribute("aria-hidden","true"),e.appendChild(a)};for(const e of document.querySelectorAll(".wp-inline-context")){e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false"),e.hasAttribute("role")||e.setAttribute("role","button"),"pill"===(window.inlineContextData?.linkStyle||"text")&&e.classList.add("wp-inline-context--pill");const n=e.dataset.categoryId;n&&Object.values(t).find(e=>e.id&&e.id.toString()===n.toString())&&s(e,n,!1)}const c=t=>{if(!e("inline_context_process_links",!0,t))return;const n=t.querySelectorAll("a[href]"),o=window.location.hostname;for(const t of n){const n=t.getAttribute("href");if(n)try{if(n.startsWith("/")||n.startsWith("#")||n.startsWith("?")){const o=e("inline_context_internal_link_target","_self",n,t);"_self"===o?t.removeAttribute("target"):t.setAttribute("target",o);continue}if(new URL(n).hostname===o){const o=e("inline_context_internal_link_target","_self",n,t);"_self"===o?t.removeAttribute("target"):t.setAttribute("target",o)}else{const o=e("inline_context_external_link_target","_blank",n,t);t.setAttribute("target",o);const i=t.getAttribute("rel")||"",r=new Set(i.split(" ").filter(Boolean));r.add("noopener"),r.add("noreferrer"),t.setAttribute("rel",Array.from(r).join(" "))}}catch(e){t.removeAttribute("target")}}},u=e=>{if(!e)return;const n=`tooltip-${e.dataset.anchorId}`;let r=document.getElementById(n);if(r){r.classList.add("wp-inline-context--closing");const n=!1===window.inlineContextData?.animationsEnabled?0:150;setTimeout(()=>{r.remove()},n),e.classList.remove(o),e.setAttribute("aria-expanded","false"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-controls"),e._handleOutsideClick&&(document.removeEventListener("click",e._handleOutsideClick),delete e._handleOutsideClick),e._handleEscape&&(document.removeEventListener("keydown",e._handleEscape),delete e._handleEscape);const i=e.dataset.categoryId;return void(i&&Object.values(t).find(e=>e.id&&e.id.toString()===i.toString())&&s(e,i,!1))}const a=e.dataset.inlineContext||"";if(!a)return;if(!e.dataset.anchorId)return;r=document.createElement("div"),r.id=n,r.className="wp-inline-context-tooltip",r.setAttribute("role","tooltip"),r.setAttribute("tabindex","-1"),a.includes("<p>")||a.includes("<strong>")||a.includes("<em>")?(r.innerHTML=l(a),c(r)):r.textContent=i(a);const m=document.createElement("button");m.className="wp-inline-context-tooltip-close",m.setAttribute("aria-label","Close tooltip"),m.innerHTML="×",m.addEventListener("click",t=>{t.stopPropagation(),u(e),e.focus()}),r.appendChild(m),document.body.appendChild(r),d(r,e),e.classList.add(o),e.setAttribute("aria-expanded","true"),e.setAttribute("aria-describedby",n),e.setAttribute("aria-controls",n);const p=e.dataset.categoryId;p&&Object.values(t).find(e=>e.id&&e.id.toString()===p.toString())&&s(e,p,!0);const f=t=>{r.contains(t.target)||e.contains(t.target)||u(e)};e._handleOutsideClick=f,setTimeout(()=>{document.addEventListener("click",f)},0);const h=t=>{"Escape"===t.key&&(u(e),e.focus())};e._handleEscape=h,document.addEventListener("keydown",h),setTimeout(()=>{r.focus()},100)},d=(e,t)=>{const n=t.getBoundingClientRect(),o=e.getBoundingClientRect(),i=window.innerWidth,r=window.pageXOffset||document.documentElement.scrollLeft,a=window.pageYOffset||document.documentElement.scrollTop;let l=n.top+a-o.height-10,s=n.left+r+n.width/2-o.width/2;n.top-o.height-10<0?(l=n.bottom+a+10,e.classList.add("wp-inline-context-tooltip--below")):e.classList.add("wp-inline-context-tooltip--above"),s<r+10?(s=r+10,e.classList.add("wp-inline-context-tooltip--left")):s+o.width>r+i-10&&(s=r+i-o.width-10,e.classList.add("wp-inline-context-tooltip--right")),e.style.top=`${l}px`,e.style.left=`${s}px`},m=r=>{if(!r)return;if("tooltip"===n())return void u(r);const a=r.nextElementSibling;if(a?.classList.contains("wp-inline-context-inline")){a.classList.add("wp-inline-context--closing");const e=!1===window.inlineContextData?.animationsEnabled?0:200;setTimeout(()=>{a.remove()},e),r.classList.remove(o),r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-describedby"),r.removeAttribute("aria-controls"),r.removeAttribute("aria-controls");const n=r.dataset.categoryId;return void(n&&Object.values(t).find(e=>e.id&&e.id.toString()===n.toString())&&s(r,n,!1))}const d=r.dataset.inlineContext||"";if(!d)return;const m=r.dataset.anchorId;if(!m)return;const p=`note-${m}`,f=document.createElement("span"),h=e("inline_context_note_class","wp-inline-context-inline",r);f.className=h,d.includes("<p>")||d.includes("<strong>")||d.includes("<em>")?(f.innerHTML=l(d),c(f)):f.textContent=i(d),f.setAttribute("role","note"),f.setAttribute("tabindex","-1"),f.id=p,r.after(f),r.classList.add(o),r.setAttribute("aria-expanded","true"),r.setAttribute("aria-describedby",p),r.setAttribute("aria-controls",p);const g=r.dataset.categoryId;g&&Object.values(t).find(e=>e.id&&e.id.toString()===g.toString())&&s(r,g,!0),setTimeout(()=>{f.focus()},100)};if(document.body.addEventListener("click",e=>{const t=e.target.closest(".wp-inline-context");t&&(e.preventDefault(),m(t))}),document.body.addEventListener("keydown",e=>{const t=e.target.closest(".wp-inline-context");t&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),m(t)))}),window.inlineContextData?.hoverEnabled&&"tooltip"===n()){let e=null,t=null,n=null,o=null;const i=i=>{const r=`tooltip-${i.dataset.anchorId}`;t&&(clearTimeout(t),t=null),e&&(clearTimeout(e),e=null),document.getElementById(r)?(n=r,o=i):e=setTimeout(()=>{u(i),n=r,o=i,e=null},300)},r=()=>{e&&(clearTimeout(e),e=null),t&&clearTimeout(t),t=setTimeout(()=>{o&&n&&(document.getElementById(n)&&u(o),n=null,o=null),t=null},100)},a=()=>{t&&(clearTimeout(t),t=null)};document.body.addEventListener("mouseenter",e=>{const t=e.target.closest(".wp-inline-context");t?i(t):e.target.closest(".wp-inline-context-tooltip")&&a()},!0),document.body.addEventListener("mouseleave",e=>{(e.target.closest(".wp-inline-context")||e.target.closest(".wp-inline-context-tooltip"))&&r()},!0)}const p=()=>{const e=window.location.hash;if(!e||!e.startsWith("#context-note-"))return;const t=e.substring(1),n=document.querySelector(`[data-anchor-id="${t}"]`);if(n){const e=n.nextElementSibling;e?.classList.contains("wp-inline-context-inline")||m(n),setTimeout(()=>{n.scrollIntoView({behavior:"smooth",block:"center"})},100)}};p(),window.addEventListener("hashchange",p)})})(); -
inline-context/trunk/build/index.asset.php
r3405431 r3423384 1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-api-fetch', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-rich-text'), 'version' => ' a3cc157bc89430d38731');1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-api-fetch', 'wp-block-editor', 'wp-components', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-rich-text'), 'version' => '860421c01e7baf229b1d'); -
inline-context/trunk/build/index.css
r3405431 r3423384 1 .wp-reveal-popover{padding:12px}.wp-reveal-linkcontrol{margin-top:8px}.reveal-text{background-color:rgba(255,255,0,.2);cursor:pointer}.components-popover__content{max-height:none!important;overflow:visible!important;padding:12px}.wp-reveal-quill-editor{max-width:90vw;min-height:400px;width: 400px}.wp-reveal-quill-label{color:#1e1e1e;font-size:13px;font-weight:600;margin-bottom:8px}.wp-reveal-quill-help{color:#757575;font-size:12px;font-style:italic;margin-top:8px}.wp-reveal-link-control{background-color:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;margin:12px 0;min-height:250px;overflow:visible;padding:12px;position:relative;z-index:10}.wp-reveal-link-url-wrapper{margin-bottom:12px;position:relative;z-index:1}.wp-reveal-link-url-wrapper .components-base-control__label{color:#1e1e1e;display:block;font-size:11px;font-weight:600;line-height:1.4;margin-bottom:8px;text-transform:uppercase}.wp-reveal-link-url-wrapper .components-base-control__help{color:#757575;font-size:12px;font-style:italic;margin-top:8px}.wp-reveal-link-url-wrapper .block-editor-url-input{position:relative;width:100%}.wp-reveal-link-url-wrapper .block-editor-url-popover{margin-top:4px;max-height:200px;overflow-y:auto;position:relative!important;width:100%}.wp-reveal-quill-actions{margin:8px 0;text-align:center}.wp-reveal-popover .components-flex{margin-top:12px}.wp-reveal-popover .components-button.is-destructive{border-color:#d63638;color:#d63638}.wp-reveal-popover .components-button.is-destructive:hover{background-color:#d63638;color:#fff}.wp-reveal-quill-editor .ql-editor{border:1px solid #949494;border-radius:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.4;max-height:200px;min-height:80px}.wp-reveal-quill-editor .ql-toolbar{background:#f6f7f7;border:1px solid #949494;border-bottom:none;border-radius:2px 2px 0 0;padding:4px 8px}.wp-reveal-quill-editor .ql-container{border-radius:0 0 2px 2px}.wp-reveal-quill-editor .ql-editor.ql-blank:before{color:#757575;font-style:italic}.wp-reveal-quill-editor .ql-toolbar .ql-formats{margin-right:8px}.wp-reveal-quill-editor .ql-toolbar button{border-radius:2px;height:28px;margin:0 1px;width:28px}.wp-reveal-quill-editor .ql-toolbar button:hover{background-color:#e0e0e0}.wp-reveal-quill-editor .ql-toolbar button.ql-active{background-color:#2271b1;color:#fff}.wp-reveal-quill-editor .ql-editor pre.ql-syntax{word-wrap:break-word;background-color:#1e1e1e;border-radius:4px;color:#d4d4d4;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:12px;line-height:1.5;max-height:300px;overflow-x:auto;padding:12px;white-space:pre-wrap}.wp-reveal-quill-editor .ql-toolbar button.ql-code-block{position:relative}.ql-toolbar .ql-code-view{width:auto}.ql-toolbar .ql-code-view:before{color:#444;content:"</>";display:inline-block;font-family:Courier New,Courier,monospace;font-size:12px;font-weight:700;line-height:1;white-space:nowrap}.ql-toolbar .ql-code-view.ql-active:before,.ql-toolbar .ql-code-view:hover:before{color:#06c}.wp-reveal-source-header{align-items:center;background-color:#f0f0f0;border:1px solid #8c8f94;border-bottom:none;border-radius:2px 2px 0 0;display:flex;justify-content:space-between;padding:8px 12px}.wp-reveal-source-header .wp-reveal-source-label{color:#1e1e1e;font-size:12px;font-weight:600}.wp-reveal-source-editor{background-color:#1e1e1e;border:1px solid #8c8f94;border-radius:0 0 2px 2px;border-top:none;box-sizing:border-box;color:#d4d4d4;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.6;max-height:300px;min-height:150px;padding:12px;resize:vertical;width:100%}.wp-reveal-source-editor:focus{outline:2px solid #2271b1;outline-offset:-2px}.wp-reveal-source-editor::-moz-placeholder{color:#858585}.wp-reveal-source-editor::placeholder{color:#858585}.wp-reveal-editor-controls{margin-bottom:8px;margin-top:4px;text-align:right}.wp-inline-context{overflow-wrap:anywhere;white-space:normal;word-break:break-word}.wp-inline-context:after{content:" ";white-space:nowrap}.wp-inline-context-note-search{margin:12px 0}.wp-inline-context-note-search-header{margin-bottom:12px}.wp-inline-context-note-results{background-color:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;max-height:300px;overflow-y:auto;padding:8px}.wp-inline-context-note-empty,.wp-inline-context-note-loading{color:#757575;font-style:italic;padding:24px;text-align:center}.wp-inline-context-note-loading{align-items:center;display:flex;flex-direction:column;gap:8px}.wp-inline-context-note-list{list-style:none;margin:0;padding:0}.wp-inline-context-note-list li{border-bottom:1px solid #e0e0e0}.wp-inline-context-note-list li:last-child{border-bottom:none}.wp-inline-context-note-item{align-items:flex-start;display:flex;flex-direction:column;padding:12px;text-align:left;text-decoration:none;width:100%}.wp-inline-context-note-item:hover{background-color:#f0f0f0}.wp-inline-context-note-item strong{color:#1e1e1e;font-size:13px;margin-bottom:4px}.wp-inline-context-note-excerpt{color:#757575;font-size:12px;line-height:1.4}.wp-inline-context-sidebar-empty{color:#757575;font-style:italic;margin:0;padding:12px 0}.wp-inline-context-sidebar-count{color:#757575;font-size:12px;margin:0 0 12px;padding:0}.wp-inline-context-sidebar-notes{margin:0;padding:0}.wp-inline-context-sidebar-list{counter-reset:note-counter;list-style:none;margin:0;padding:0}.wp-inline-context-sidebar-item{border-bottom:1px solid #e0e0e0;counter-increment:note-counter;margin:0;padding:16px 0}.wp-inline-context-sidebar-item:last-child{border-bottom:none;padding-bottom:0}.wp-inline-context-sidebar-item:before{align-items:center;background-color:#2271b1;border-radius:12px;color:#fff;content:counter(note-counter);display:inline-flex;float:left;font-size:11px;font-weight:600;height:24px;justify-content:center;margin-right:8px;margin-top:2px;min-width:24px;padding:0 6px}.wp-inline-context-sidebar-content{display:flex;flex-direction:column;gap:6px;min-width:0;overflow:hidden}.wp-inline-context-sidebar-category{align-self:flex-start;border-radius:3px;display:inline-block;font-size:11px;font-weight:500;letter-spacing:.3px;padding:3px 8px;text-transform:uppercase;white-space:nowrap}.wp-inline-context-sidebar-link{align-self:flex-start;color:#2271b1;font-size:13px;font-weight:600;line-height:1.4;min-height:auto;padding:0;text-align:left;text-decoration:none;word-break:break-word}.wp-inline-context-sidebar-link:hover{color:#135e96;text-decoration:underline}.wp-inline-context-sidebar-link:focus{box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}.wp-inline-context-sidebar-excerpt{color:#757575;font-size:12px;line-height:1.4;word-break:break-word}@keyframes wp-inline-context-highlight{0%,to{background-color:transparent}50%{background-color:rgba(255,255,0,.3)}}.wp-inline-context-highlight{animation:wp-inline-context-highlight 1s ease-in-out 2}1 .wp-reveal-popover{padding:12px}.wp-reveal-linkcontrol{margin-top:8px}.reveal-text{background-color:rgba(255,255,0,.2);cursor:pointer}.components-popover__content{max-height:none!important;overflow:visible!important;padding:12px}.wp-reveal-quill-editor{max-width:90vw;min-height:400px;width:500px}.wp-reveal-quill-label{color:#1e1e1e;font-size:13px;font-weight:600;margin-bottom:8px}.wp-reveal-quill-help{color:#757575;font-size:12px;font-style:italic;margin-top:8px}.wp-reveal-link-control{background-color:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;margin:12px 0;min-height:250px;overflow:visible;padding:12px;position:relative;z-index:10}.wp-reveal-link-url-wrapper{margin-bottom:12px;position:relative;z-index:1}.wp-reveal-link-url-wrapper .components-base-control__label{color:#1e1e1e;display:block;font-size:11px;font-weight:600;line-height:1.4;margin-bottom:8px;text-transform:uppercase}.wp-reveal-link-url-wrapper .components-base-control__help{color:#757575;font-size:12px;font-style:italic;margin-top:8px}.wp-reveal-link-url-wrapper .block-editor-url-input{position:relative;width:100%}.wp-reveal-link-url-wrapper .block-editor-url-popover{margin-top:4px;max-height:200px;overflow-y:auto;position:relative!important;width:100%}.wp-reveal-quill-actions{margin:8px 0;text-align:center}.wp-reveal-popover .components-flex{margin-top:12px}.wp-reveal-popover .components-flex .components-checkbox-control{align-items:center;display:flex;margin-bottom:0}.wp-reveal-popover .components-flex .components-checkbox-control__input-container{margin-bottom:0;margin-top:0}.wp-reveal-popover .components-flex .components-checkbox-control__label{margin-bottom:0}.wp-reveal-popover .components-button.is-destructive{border-color:#d63638;color:#d63638}.wp-reveal-popover .components-button.is-destructive:hover{background-color:#d63638;color:#fff}.wp-reveal-quill-editor .ql-editor{border:1px solid #949494;border-radius:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.4;max-height:200px;min-height:80px}.wp-reveal-quill-editor .ql-toolbar{background:#f6f7f7;border:1px solid #949494;border-bottom:none;border-radius:2px 2px 0 0;padding:4px 8px}.wp-reveal-quill-editor .ql-container{border-radius:0 0 2px 2px}.wp-reveal-quill-editor .ql-editor.ql-blank:before{color:#757575;font-style:italic}.wp-reveal-quill-editor .ql-toolbar .ql-formats{margin-right:8px}.wp-reveal-quill-editor .ql-toolbar button{border-radius:2px;height:28px;margin:0 1px;width:28px}.wp-reveal-quill-editor .ql-toolbar button:hover{background-color:#e0e0e0}.wp-reveal-quill-editor .ql-editor pre.ql-syntax{word-wrap:break-word;background-color:#1e1e1e;border-radius:4px;color:#d4d4d4;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:12px;line-height:1.5;max-height:300px;overflow-x:auto;padding:12px;white-space:pre-wrap}.wp-reveal-quill-editor .ql-toolbar button.ql-code-block{position:relative}.ql-toolbar .ql-code-view{width:auto}.ql-toolbar .ql-code-view:before{color:#444;content:"</>";display:inline-block;font-family:Courier New,Courier,monospace;font-size:12px;font-weight:700;line-height:1;white-space:nowrap}.ql-toolbar .ql-code-view:hover:before{color:#06c}.ql-toolbar .ql-code-view.ql-active{background-color:#2271b1}.ql-toolbar .ql-code-view.ql-active:before{color:#fff}.wp-reveal-source-header{align-items:center;background-color:#f0f0f0;border:1px solid #8c8f94;border-bottom:none;border-radius:2px 2px 0 0;display:flex;justify-content:space-between;padding:8px 12px}.wp-reveal-source-header .wp-reveal-source-label{color:#1e1e1e;font-size:12px;font-weight:600}.wp-reveal-source-editor{background-color:#1e1e1e;border:1px solid #8c8f94;border-radius:0 0 2px 2px;border-top:none;box-sizing:border-box;color:#d4d4d4;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,Courier New,monospace;font-size:13px;line-height:1.6;max-height:300px;min-height:150px;padding:12px;resize:vertical;width:100%}.wp-reveal-source-editor:focus{outline:2px solid #2271b1;outline-offset:-2px}.wp-reveal-source-editor::-moz-placeholder{color:#858585}.wp-reveal-source-editor::placeholder{color:#858585}.wp-reveal-editor-controls{margin-bottom:8px;margin-top:4px;text-align:right}.wp-inline-context{overflow-wrap:anywhere;white-space:normal;word-break:break-word}.wp-inline-context:after{content:" ";white-space:nowrap}.wp-inline-context-note-search{margin:12px 0}.wp-inline-context-note-search-header{margin-bottom:12px}.wp-inline-context-note-results{background-color:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px;max-height:300px;overflow-y:auto;padding:8px}.wp-inline-context-note-empty,.wp-inline-context-note-loading{color:#757575;font-style:italic;padding:24px;text-align:center}.wp-inline-context-note-loading{align-items:center;display:flex;flex-direction:column;gap:8px}.wp-inline-context-note-list{list-style:none;margin:0;padding:0}.wp-inline-context-note-list li{border-bottom:1px solid #e0e0e0}.wp-inline-context-note-list li:last-child{border-bottom:none}.wp-inline-context-note-item{align-items:flex-start;display:flex;flex-direction:column;padding:12px;text-align:left;text-decoration:none;width:100%}.wp-inline-context-note-item:hover{background-color:#f0f0f0}.wp-inline-context-note-item strong{color:#1e1e1e;font-size:13px;margin-bottom:4px}.wp-inline-context-note-excerpt{color:#757575;font-size:12px;line-height:1.4}.wp-inline-context-sidebar-empty{color:#757575;font-style:italic;margin:0;padding:12px 0}.wp-inline-context-sidebar-count{color:#757575;font-size:12px;margin:0 0 12px;padding:0}.wp-inline-context-sidebar-notes{margin:0;padding:0}.wp-inline-context-sidebar-list{counter-reset:note-counter;list-style:none;margin:0;padding:0}.wp-inline-context-sidebar-item{border-bottom:1px solid #e0e0e0;counter-increment:note-counter;margin:0;padding:16px 0}.wp-inline-context-sidebar-item:last-child{border-bottom:none;padding-bottom:0}.wp-inline-context-sidebar-item:before{align-items:center;background-color:#2271b1;border-radius:12px;color:#fff;content:counter(note-counter);display:inline-flex;float:left;font-size:11px;font-weight:600;height:24px;justify-content:center;margin-right:8px;margin-top:2px;min-width:24px;padding:0 6px}.wp-inline-context-sidebar-content{display:flex;flex-direction:column;gap:6px;min-width:0;overflow:hidden}.wp-inline-context-sidebar-category{align-self:flex-start;border-radius:3px;display:inline-block;font-size:11px;font-weight:500;letter-spacing:.3px;padding:3px 8px;text-transform:uppercase;white-space:nowrap}.wp-inline-context-sidebar-link{align-self:flex-start;color:#2271b1;font-size:13px;font-weight:600;line-height:1.4;min-height:auto;padding:0;text-align:left;text-decoration:none;word-break:break-word}.wp-inline-context-sidebar-link:hover{color:#135e96;text-decoration:underline}.wp-inline-context-sidebar-link:focus{box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}.wp-inline-context-sidebar-excerpt{color:#757575;font-size:12px;line-height:1.4;word-break:break-word}@keyframes wp-inline-context-highlight{0%,to{background-color:transparent}50%{background-color:rgba(255,255,0,.3)}}.wp-inline-context-highlight{animation:wp-inline-context-highlight 1s ease-in-out 2} 2 2 .ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{height:1px;left:-100000px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{word-wrap:break-word;box-sizing:border-box;height:100%;line-height:1.42;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;margin:0;padding:0}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-increment:list-0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow .ql-toolbar:after,.ql-snow.ql-toolbar:after{clear:both;content:"";display:table}.ql-snow .ql-toolbar button,.ql-snow.ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow .ql-toolbar button svg,.ql-snow.ql-toolbar button svg{float:left;height:100%}.ql-snow .ql-toolbar button:active:hover,.ql-snow.ql-toolbar button:active:hover{outline:none}.ql-snow .ql-toolbar input.ql-image[type=file],.ql-snow.ql-toolbar input.ql-image[type=file]{display:none}.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar button.ql-active,.ql-snow .ql-toolbar button:focus,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover{color:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow .ql-toolbar button:hover:not(.ql-active),.ql-snow.ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{margin-bottom:5px;margin-top:5px;padding:5px 10px;white-space:pre-wrap}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;padding:2px 4px;width:24px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{margin-top:-9px;position:absolute;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{border:1px solid #ccc;display:none;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc} -
inline-context/trunk/build/style-index.css
r3405431 r3423384 1 .wp-inline-context{background:none;border:none;color:inherit;cursor:pointer;display:inline;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;margin:0;overflow-wrap:anywhere;padding:0;scroll-margin-top:var(--wp--custom--inline-context--link--scroll-margin,2rem);text-align:inherit;text-decoration:none;transition:color .2s ease;white-space:normal;word-break:break-word}.wp-inline-context:after{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"%23666\"><path d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06z\"/></svg>");background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;height:var(--wp--custom--inline-context--chevron--size,.7em);margin-left:var(--wp--custom--inline-context--chevron--margin-left,.25em);opacity:var(--wp--custom--inline-context--chevron--opacity,.7);text-decoration:none;transition:transform .4s ease,background-image .2s ease;vertical-align: middle;width:var(--wp--custom--inline-context--chevron--size,.7em)}.wp-inline-context:focus:after,.wp-inline-context:hover:after{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"%232271b1\"><path d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06z\"/></svg>");opacity:var(--wp--custom--inline-context--chevron--hover-opacity,1)}.wp-inline-context-category-icon{display:inline-block;font-size:.6em;line-height:0;margin-left:.15em;margin-right:0;position:relative;text-decoration:none;top:-.1em;transition:color .2s ease,transform .2s ease;vertical-align:super}.wp-inline-context:has(.wp-inline-context-category-icon):after{display:none}.wp-inline-context:focus-visible .wp-inline-context-category-icon,.wp-inline-context:hover .wp-inline-context-category-icon{transform:scale(1.15)}.wp-inline-context.wp-inline-context--open .wp-inline-context-category-icon{transform:scale(1)}.wp-inline-context:focus-visible,.wp-inline-context:hover{color:var(--wp--custom--inline-context--link--hover-color,var(--wp--preset--color--primary,#0073aa))}.wp-inline-context-inline{animation:wp-inline-context-reveal .3s ease-out;background:var(--wp--custom--inline-context--note--background,rgba(0,0,0,.04));border:1px solid var(--wp--custom--inline-context--note--border-color,rgba(0,0,0,.08));border-left:var(--wp--custom--inline-context--note--accent-width,3px) solid var(--wp--custom--inline-context--note--accent-color,var(--wp--preset--color--primary,#0073aa));border-radius:var(--wp--custom--inline-context--note--radius,6px);box-shadow:var(--wp--custom--inline-context--note--shadow,0 1px 2px rgba(0,0,0,.05));display:block;font-size:var(--wp--custom--inline-context--note--font-size,.95em);margin:var(--wp--custom--inline-context--note--margin-y,8px) 0;padding:var(--wp--custom--inline-context--note--padding-y,.75em) var(--wp--custom--inline-context--note--padding-x,1em);transform-origin:top left}.wp-inline-context-inline:focus{outline:none}.wp-inline-context-inline:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}@media(prefers-reduced-motion:reduce){.wp-inline-context-inline{animation:none}}.wp-inline-context-noscript-notes{border-top:2px solid #ccc;margin-top:2em;padding-top:1.5em}.wp-inline-context-noscript-notes h2{font-size:1.5em;margin-bottom:1em}.wp-inline-context-noscript-notes ol{padding-left:20px}.wp-inline-context-noscript-notes li{margin-bottom:1.5em;padding-left:5px}.wp-inline-context-noscript-notes .wp-inline-context-back-link{display:inline-block;font-size:1.2em;line-height:1;margin-left:.5em;text-decoration:none}.js .wp-inline-context-noscript-notes{display:none}@media print{.wp-inline-context-inline{animation:none;border:1px solid #ccc;box-shadow:none;display:block!important}.wp-inline-context:after{display:none}}.wp-inline-context-inline>:first-child{margin-top:0}.wp-inline-context-inline>:last-child{margin-bottom:0}.wp-inline-context-tooltip>:first-of-type{margin-top:0}.wp-inline-context-tooltip>:last-of-type{margin-bottom:0}.wp-inline-context-inline a{color:var(--wp--custom--inline-context--note--link-color,inherit);text-decoration-color:var(--wp--custom--inline-context--note--link-underline,currentColor)}.wp-inline-context--open{color:var(--wp--custom--inline-context--link--open-color,var(--wp--preset--color--primary,#0073aa))}.wp-inline-context.wp-inline-context--open:after,.wp-inline-context[aria-expanded=true]:after{transform:rotate(180deg)}.wp-inline-context-tooltip{animation:wp-inline-context-tooltip-reveal .2s ease-out;background:var(--wp--custom--inline-context--note--background,#fff);border:1px solid var(--wp--custom--inline-context--note--border-color,rgba(0,0,0,.15));border-radius:var(--wp--custom--inline-context--note--radius,6px);box-shadow:0 4px 12px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1);color:#1d2327;font-size:var(--wp--custom--inline-context--note--font-size,.95em);line-height:1.5;max-width:400px;min-width:200px;overflow-wrap:break-word;padding:var(--wp--custom--inline-context--note--padding-y,.75em) 2.5em var(--wp--custom--inline-context--note--padding-y,.75em) var(--wp--custom--inline-context--note--padding-x,1em);position:absolute;transform-origin:top center;word-break:break-word;z-index:10000}.wp-inline-context-tooltip:focus{outline:none}.wp-inline-context-tooltip:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1),0 0 0 2px var(--wp--preset--color--primary,#0073aa);outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}@media(prefers-reduced-motion:reduce){.wp-inline-context-tooltip{animation:none}}@media(max-width:768px){.wp-inline-context-tooltip{max-width:calc(100vw - 40px)}}.wp-inline-context-tooltip--above:after{border-top:8px solid var(--wp--custom--inline-context--note--background,#fff);bottom:-8px;filter:drop-shadow(0 2px 1px rgba(0,0,0,.1))}.wp-inline-context-tooltip--above:after,.wp-inline-context-tooltip--below:after{border-left:8px solid transparent;border-right:8px solid transparent;content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0}.wp-inline-context-tooltip--below:after{border-bottom:8px solid var(--wp--custom--inline-context--note--background,#fff);filter:drop-shadow(0 -2px 1px rgba(0,0,0,.1));top:-8px}.wp-inline-context-tooltip-close{align-items:center;background:transparent;border:none;border-radius:4px;color:#757575;cursor:pointer;display:flex;font-size:24px;height:24px;justify-content:center;line-height:1;padding:0;position:absolute;right:.5em;top:.5em;transition:color .2s ease,background .2s ease;width:24px}.wp-inline-context-tooltip-close:focus,.wp-inline-context-tooltip-close:hover{background:rgba(0,0,0,.05);color:#1d2327;outline:none}.wp-inline-context-tooltip-close:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}.wp-inline-context-tooltip>:first-child{margin-top:0}.wp-inline-context-tooltip>:last-child:not(.wp-inline-context-tooltip-close){margin-bottom:0}.wp-inline-context-tooltip a{color:var(--wp--custom--inline-context--note--link-color,#0073aa);text-decoration-color:var(--wp--custom--inline-context--note--link-underline,currentColor)}@keyframes wp-inline-context-tooltip-reveal{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@media print{.wp-inline-context-tooltip{display:none!important}}body:has(.wp-inline-context-tooltip) .wp-inline-context:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}1 .wp-inline-context{background:none;border:none;color:inherit;cursor:pointer;display:inline;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;margin:0;overflow-wrap:anywhere;padding:0;scroll-margin-top:var(--wp--custom--inline-context--link--scroll-margin,2rem);text-align:inherit;text-decoration:none;transition:color .2s ease;white-space:normal;word-break:break-word}.wp-inline-context:after{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"%23666\"><path d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06z\"/></svg>");background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:inline-block;height:var(--wp--custom--inline-context--chevron--size,.7em);margin-left:var(--wp--custom--inline-context--chevron--margin-left,.25em);opacity:var(--wp--custom--inline-context--chevron--opacity,.7);text-decoration:none;transition:transform .4s ease,background-image .2s ease;vertical-align:var(--wp--custom--inline-context--icon-placement,middle);width:var(--wp--custom--inline-context--chevron--size,.7em)}.wp-inline-context:focus:after,.wp-inline-context:hover:after{background-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"%232271b1\"><path d=\"M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06z\"/></svg>");opacity:var(--wp--custom--inline-context--chevron--hover-opacity,1)}.wp-inline-context-category-icon{align-self:var(--wp--custom--inline-context--icon-flex-align,center)!important;display:inline-block!important;float:none!important;font-size:.6em;line-height:1!important;margin-left:.15em;margin-right:0;position:static!important;text-decoration:none;top:auto!important;transition:color .2s ease,transform .2s ease;vertical-align:var(--wp--custom--inline-context--icon-placement,middle)!important}.wp-inline-context:has(.wp-inline-context-category-icon):after{display:none}.wp-inline-context:focus-visible .wp-inline-context-category-icon,.wp-inline-context:hover .wp-inline-context-category-icon{transform:scale(1.15)}.wp-inline-context.wp-inline-context--open .wp-inline-context-category-icon{transform:scale(1)}.wp-inline-context:focus-visible,.wp-inline-context:hover{color:var(--wp--custom--inline-context--link--hover-color,var(--wp--preset--color--primary,#0073aa))}.wp-inline-context--pill{align-items:center;background:var(--wp--custom--inline-context--pill--background,#fff4e6);border:var(--wp--custom--inline-context--pill--border-width,1.5px) solid var(--wp--custom--inline-context--pill--border-color,#d4850a);border-radius:var(--wp--custom--inline-context--pill--border-radius,.25rem);display:inline-flex;gap:.25em;padding:var(--wp--custom--inline-context--pill--padding-y,2px) var(--wp--custom--inline-context--pill--padding-x,8px);transition:background .2s ease,border-color .2s ease,color .2s ease;white-space:nowrap}.wp-inline-context--pill:after{margin-left:0}.wp-inline-context--pill:focus-visible,.wp-inline-context--pill:hover{background:var(--wp--custom--inline-context--pill--hover-background,rgba(212,133,10,.08));border-color:var(--wp--custom--inline-context--pill--hover-border-color,#b87409)}.wp-inline-context--pill:has(.wp-inline-context-category-icon){gap:.15em}.wp-inline-context-inline{animation:wp-inline-context-reveal .3s ease-out;background:var(--wp--custom--inline-context--note--background,rgba(0,0,0,.04));border:1px solid var(--wp--custom--inline-context--note--border-color,rgba(0,0,0,.08));border-left:var(--wp--custom--inline-context--note--accent-width,3px) solid var(--wp--custom--inline-context--note--accent-color,var(--wp--preset--color--primary,#0073aa));border-radius:var(--wp--custom--inline-context--note--radius,6px);box-shadow:var(--wp--custom--inline-context--note--shadow,0 1px 2px rgba(0,0,0,.05));display:block;font-size:var(--wp--custom--inline-context--note--font-size,.95em);margin:var(--wp--custom--inline-context--note--margin-y,8px) 0;padding:var(--wp--custom--inline-context--note--padding-y,.75em) var(--wp--custom--inline-context--note--padding-x,1em);transform-origin:top left}.wp-inline-context-inline:focus{outline:none}.wp-inline-context-inline:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}@media(prefers-reduced-motion:reduce){.wp-inline-context-inline{animation:none}}.wp-inline-context-noscript-notes{border-top:2px solid #ccc;margin-top:2em;padding-top:1.5em}.wp-inline-context-noscript-notes h2{font-size:1.5em;margin-bottom:1em}.wp-inline-context-noscript-notes ol{padding-left:20px}.wp-inline-context-noscript-notes li{margin-bottom:1.5em;padding-left:5px}.wp-inline-context-noscript-notes .wp-inline-context-back-link{display:inline-block;font-size:1.2em;line-height:1;margin-left:.5em;text-decoration:none}.js .wp-inline-context-noscript-notes{display:none}@media print{.wp-inline-context-inline{animation:none;border:1px solid #ccc;box-shadow:none;display:block!important}.wp-inline-context:after{display:none}}.wp-inline-context-inline>:first-child{margin-top:0}.wp-inline-context-inline>:last-child{margin-bottom:0}.wp-inline-context-tooltip>:first-of-type{margin-top:0}.wp-inline-context-tooltip>:last-of-type{margin-bottom:0}.wp-inline-context-inline a{color:var(--wp--custom--inline-context--note--link-color,inherit);text-decoration-color:var(--wp--custom--inline-context--note--link-underline,currentColor)}.wp-inline-context--open{color:var(--wp--custom--inline-context--link--open-color,var(--wp--preset--color--primary,#0073aa))}.wp-inline-context.wp-inline-context--open:after,.wp-inline-context[aria-expanded=true]:after{transform:rotate(180deg)}.wp-inline-context-tooltip{animation:wp-inline-context-tooltip-reveal .2s ease-out;background:var(--wp--custom--inline-context--note--background,#fff);border:1px solid var(--wp--custom--inline-context--note--border-color,rgba(0,0,0,.15));border-radius:var(--wp--custom--inline-context--note--radius,6px);box-shadow:0 4px 12px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1);color:#1d2327;font-size:var(--wp--custom--inline-context--note--font-size,.95em);line-height:1.5;max-width:400px;min-width:200px;overflow-wrap:break-word;padding:var(--wp--custom--inline-context--note--padding-y,.75em) 2.5em var(--wp--custom--inline-context--note--padding-y,.75em) var(--wp--custom--inline-context--note--padding-x,1em);position:absolute;transform-origin:top center;word-break:break-word;z-index:10000}.wp-inline-context-tooltip:focus{outline:none}.wp-inline-context-tooltip:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1),0 0 0 2px var(--wp--preset--color--primary,#0073aa);outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}@media(prefers-reduced-motion:reduce){.wp-inline-context-tooltip{animation:none}}@media(max-width:768px){.wp-inline-context-tooltip{max-width:calc(100vw - 40px)}}.wp-inline-context-tooltip--above:after{border-top:8px solid var(--wp--custom--inline-context--note--background,#fff);bottom:-8px;filter:drop-shadow(0 2px 1px rgba(0,0,0,.1))}.wp-inline-context-tooltip--above:after,.wp-inline-context-tooltip--below:after{border-left:8px solid transparent;border-right:8px solid transparent;content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0}.wp-inline-context-tooltip--below:after{border-bottom:8px solid var(--wp--custom--inline-context--note--background,#fff);filter:drop-shadow(0 -2px 1px rgba(0,0,0,.1));top:-8px}.wp-inline-context-tooltip-close{align-items:center;background:transparent;border:none;border-radius:4px;color:#757575;cursor:pointer;display:flex;font-size:24px;height:24px;justify-content:center;line-height:1;padding:0;position:absolute;right:.5em;top:.5em;transition:color .2s ease,background .2s ease;width:24px}.wp-inline-context-tooltip-close:focus,.wp-inline-context-tooltip-close:hover{background:rgba(0,0,0,.05);color:#1d2327;outline:none}.wp-inline-context-tooltip-close:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px}.wp-inline-context-tooltip>:first-child{margin-top:0}.wp-inline-context-tooltip>:last-child:not(.wp-inline-context-tooltip-close){margin-bottom:0}.wp-inline-context-tooltip a{color:var(--wp--custom--inline-context--note--link-color,#0073aa);text-decoration-color:var(--wp--custom--inline-context--note--link-underline,currentColor)}@keyframes wp-inline-context-tooltip-reveal{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes wp-inline-context-reveal{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes wp-inline-context-hide{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}@keyframes wp-inline-context-tooltip-hide{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-4px)}}.wp-inline-context-inline.wp-inline-context--closing{animation:wp-inline-context-hide .2s ease-in forwards}.wp-inline-context-tooltip.wp-inline-context--closing{animation:wp-inline-context-tooltip-hide .15s ease-in forwards}.wp-inline-context-no-animations .wp-inline-context-inline,.wp-inline-context-no-animations .wp-inline-context-inline.wp-inline-context--closing,.wp-inline-context-no-animations .wp-inline-context-tooltip,.wp-inline-context-no-animations .wp-inline-context-tooltip.wp-inline-context--closing{animation:none!important}@media print{.wp-inline-context-tooltip{display:none!important}}body:has(.wp-inline-context-tooltip) .wp-inline-context:focus-visible{outline:2px solid var(--wp--preset--color--primary,#0073aa);outline-offset:2px} -
inline-context/trunk/changelog.txt
r3405639 r3423384 4 4 For major version highlights, see README.md and readme.txt. 5 5 6 ## Version 2.3.5 - 2.3.8 - November 29, 2025 6 ## Version 2.4.1 - December 19, 2025 7 * IMPROVED: documentation 8 9 ## Version 2.4.0 - December 19, 2025 10 * NEW: Add new pill style 11 * NEW: WordPress 6.9+ Abilities API integration for AI assistant discovery 12 * NEW: Five REST API abilities for AI-powered content enhancement 13 * NEW: `create-note` ability - Create new inline context notes via API 14 * NEW: `search-notes` ability - Search existing notes by title/content 15 * NEW: `get-categories` ability - Retrieve all available categories 16 * NEW: `get-note` ability - Fetch specific note by ID 17 * NEW: `create-inline-note` ability - Create note and get ready-to-embed HTML markup (AI helper) 18 * NEW: Browser-based AI integration (Claude, ChatGPT) with automatic capability discovery 19 * NEW: Comprehensive ABILITIES-API.md documentation with workflows and examples 20 * NEW: Test infrastructure for Abilities API (test-abilities.sh, tests/test-abilities.php) 21 * NEW: AIFeatures component for future in-editor AI UI (currently disabled by default) 22 * IMPROVED: Authentication support via cookie auth (browser) or Application Passwords 23 * IMPROVED: Complete JSON Schema validation for all ability inputs 24 * IMPROVED: Permission callbacks ensure proper WordPress capability checks 25 * IMPROVED: Backward compatible - works on WordPress 6.0+ (Abilities API optional on 6.9+) 26 * IMPROVED: Updated "Tested up to" WordPress 6.9 27 28 ## Version 2.3.5 - 2.3.9 - November 29, 2025 7 29 * Minor fixes, updated documentation and readme.txt, added Dutch translations 8 30 -
inline-context/trunk/includes/class-inline-context-frontend.php
r3405431 r3423384 257 257 'inlineContextData', 258 258 array( 259 'categories' => inline_context_get_categories(), 260 'displayMode' => get_option( 'inline_context_display_mode', 'inline' ), 261 'hoverEnabled' => (bool) get_option( 'inline_context_tooltip_hover', false ), 259 'categories' => inline_context_get_categories(), 260 'displayMode' => get_option( 'inline_context_display_mode', 'inline' ), 261 'linkStyle' => get_option( 'inline_context_link_style', 'text' ), 262 'iconPlacement' => get_option( 'inline_context_icon_placement', 'middle' ), 263 'hoverEnabled' => (bool) get_option( 'inline_context_tooltip_hover', false ), 264 'animationsEnabled' => (bool) get_option( 'inline_context_enable_animations', true ), 262 265 ) 263 266 ); -
inline-context/trunk/includes/class-inline-context-rest-api.php
r3405431 r3423384 13 13 */ 14 14 class Inline_Context_REST_API { 15 15 16 16 17 /** -
inline-context/trunk/includes/class-inline-context-utils.php
r3405431 r3423384 108 108 'link-focus-border-color' => '#2271b1', 109 109 'link-open-color' => '#2271b1', 110 'pill-border-color' => '#d4850a', 111 'pill-border-width' => '1.5px', 112 'pill-border-radius' => '0.25rem', 113 'pill-padding-y' => '2px', 114 'pill-padding-x' => '8px', 115 'pill-background' => '#FFF4E6', 116 'pill-hover-background' => 'rgba(212, 133, 10, 0.08)', 117 'pill-hover-border-color' => '#b87409', 110 118 'note-margin-y' => '8px', 111 119 'note-padding-y' => '12px', … … 145 153 ); 146 154 } 155 156 // Add icon placement setting as CSS variables. 157 // Map setting values to CSS vertical-align values (for inline) and align-self (for flex). 158 $icon_placement = get_option( 'inline_context_icon_placement', 'middle' ); 159 $css_placement_map = array( 160 'top' => 'super', // Superscript position. 161 'middle' => 'middle', // Middle alignment. 162 'bottom' => 'text-bottom', // Bottom of text (doesn't expand line height). 163 ); 164 $css_flex_align_map = array( 165 'top' => 'flex-start', // Align to top of flex container. 166 'middle' => 'center', // Align to center of flex container. 167 'bottom' => 'flex-end', // Align to bottom of flex container. 168 ); 169 $css_placement_value = isset( $css_placement_map[ $icon_placement ] ) ? $css_placement_map[ $icon_placement ] : 'middle'; 170 $css_flex_align_value = isset( $css_flex_align_map[ $icon_placement ] ) ? $css_flex_align_map[ $icon_placement ] : 'center'; 171 172 $css .= sprintf( 173 '--wp--custom--inline-context--icon-placement: %s;', 174 esc_attr( $css_placement_value ) 175 ); 176 $css .= sprintf( 177 '--wp--custom--inline-context--icon-flex-align: %s;', 178 esc_attr( $css_flex_align_value ) 179 ); 180 147 181 $css .= '}'; 148 182 -
inline-context/trunk/inline-context.php
r3405639 r3423384 1 1 <?php 2 2 3 /** 3 4 * Plugin Name: Inline Context 4 5 * Plugin URI: https://wordpress.org/plugins/inline-context/ 5 6 * Description: Add inline expandable context to selected text in the block editor with direct anchor linking. Click to reveal, click again to hide. 6 * Version: 2. 3.87 * Version: 2.4.1 7 8 * Author: Joop Laan 8 9 * Author URI: https://profiles.wordpress.org/joop/ … … 18 19 */ 19 20 20 defined( 'ABSPATH') || exit;21 22 define( 'INLINE_CONTEXT_VERSION', '2.3.8');21 defined('ABSPATH') || exit; 22 23 define('INLINE_CONTEXT_VERSION', '2.4.1'); 23 24 24 25 // Load modular classes. … … 30 31 require_once __DIR__ . '/includes/class-inline-context-rest-api.php'; 31 32 require_once __DIR__ . '/includes/class-inline-context-frontend.php'; 33 require_once __DIR__ . '/includes/class-inline-context-abilities.php'; 32 34 33 35 // Load backward compatibility wrapper functions. … … 35 37 36 38 // Load admin-specific functionality (function-based, loaded conditionally). 37 if ( is_admin()) {39 if (is_admin()) { 38 40 require_once __DIR__ . '/admin-settings.php'; 39 41 } … … 56 58 57 59 // Initialize deletion functionality. 58 $inline_context_deletion = new Inline_Context_Deletion( $inline_context_sync);60 $inline_context_deletion = new Inline_Context_Deletion($inline_context_sync); 59 61 $inline_context_deletion->init(); 60 62 … … 67 69 $inline_context_frontend->init(); 68 70 71 // Initialize Abilities API integration (WordPress 6.9+). 72 // Hook early to ensure abilities are registered before discovery. 73 add_action( 74 'init', 75 function () { 76 global $inline_context_abilities; 77 $inline_context_abilities = new Inline_Context_Abilities(); 78 $inline_context_abilities->init(); 79 }, 80 5 // Early priority to catch wp_abilities_api_init hook. 81 ); 82 69 83 /** 70 84 * Enqueue categories data for block editor … … 76 90 $categories = inline_context_get_categories(); 77 91 78 // Add inline script to make categories available globally. 92 // In-editor AI UI features (Generate with AI button) disabled by default. 93 // Note: Abilities API is always enabled for AI agents (see class-abilities.php). 94 $ai_enabled = false; 95 96 // Add inline script to make data available globally. 97 // Must run BEFORE our inline-context-editor script loads. 79 98 wp_add_inline_script( 80 ' wp-block-editor',99 'inline-context-editor', 81 100 sprintf( 82 'window.inlineContextData = window.inlineContextData || {}; window.inlineContextData.categories = %s;', 83 wp_json_encode( $categories ) 101 'window.inlineContextData = window.inlineContextData || {}; window.inlineContextData.categories = %s; window.inlineContextData.aiEnabled = %s;', 102 wp_json_encode($categories), 103 $ai_enabled ? 'true' : 'false' 84 104 ), 85 105 'before' … … 96 116 add_filter( 97 117 'wp_theme_json_data_default', 98 function ( $theme_json) {118 function ($theme_json) { 99 119 $plugin_theme_json_path = __DIR__ . '/theme.json'; 100 if ( file_exists( $plugin_theme_json_path )) {120 if (file_exists($plugin_theme_json_path)) { 101 121 // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Reading local theme.json file. 102 $plugin_theme_json_data = json_decode( file_get_contents( $plugin_theme_json_path ), true);103 if ( is_array( $plugin_theme_json_data )) {104 $theme_json->update_with( $plugin_theme_json_data);122 $plugin_theme_json_data = json_decode(file_get_contents($plugin_theme_json_path), true); 123 if (is_array($plugin_theme_json_data)) { 124 $theme_json->update_with($plugin_theme_json_data); 105 125 } 106 126 } … … 118 138 function () { 119 139 // Check if migration has already been done. 120 if ( get_option( 'inline_context_categories_migrated' )) {140 if (get_option('inline_context_categories_migrated')) { 121 141 return; 122 142 } 123 143 124 144 // Get the old meta-based categories. 125 $old_categories = get_option( 'inline_context_categories', inline_context_get_default_categories());126 127 if ( ! is_array( $old_categories ) || empty( $old_categories )) {145 $old_categories = get_option('inline_context_categories', inline_context_get_default_categories()); 146 147 if (! is_array($old_categories) || empty($old_categories)) { 128 148 $old_categories = inline_context_get_default_categories(); 129 149 } 130 150 131 151 // Create taxonomy terms from old categories. 132 foreach ( $old_categories as $category_id => $category_data) {152 foreach ($old_categories as $category_id => $category_data) { 133 153 $term_name = $category_data['name'] ?? $category_id; 134 154 135 155 // Check if term already exists. 136 $existing_term = get_term_by( 'slug', $category_id, 'inline_context_category');137 138 if ( ! $existing_term) {156 $existing_term = get_term_by('slug', $category_id, 'inline_context_category'); 157 158 if (! $existing_term) { 139 159 // Create the term. 140 160 $term = wp_insert_term( … … 146 166 ); 147 167 148 if ( ! is_wp_error( $term )) {168 if (! is_wp_error($term)) { 149 169 $term_id = $term['term_id']; 150 170 151 171 // Store the icon and color as term meta. 152 if ( isset( $category_data['icon_closed'] )) {153 update_term_meta( $term_id, 'icon_closed', $category_data['icon_closed']);154 } 155 if ( isset( $category_data['icon_open'] )) {156 update_term_meta( $term_id, 'icon_open', $category_data['icon_open']);157 } 158 if ( isset( $category_data['color'] )) {159 update_term_meta( $term_id, 'color', $category_data['color']);172 if (isset($category_data['icon_closed'])) { 173 update_term_meta($term_id, 'icon_closed', $category_data['icon_closed']); 174 } 175 if (isset($category_data['icon_open'])) { 176 update_term_meta($term_id, 'icon_open', $category_data['icon_open']); 177 } 178 if (isset($category_data['color'])) { 179 update_term_meta($term_id, 'color', $category_data['color']); 160 180 } 161 181 } … … 163 183 // Update existing term meta. 164 184 $term_id = $existing_term->term_id; 165 if ( isset( $category_data['icon_closed'] )) {166 update_term_meta( $term_id, 'icon_closed', $category_data['icon_closed']);167 } 168 if ( isset( $category_data['icon_open'] )) {169 update_term_meta( $term_id, 'icon_open', $category_data['icon_open']);170 } 171 if ( isset( $category_data['color'] )) {172 update_term_meta( $term_id, 'color', $category_data['color']);185 if (isset($category_data['icon_closed'])) { 186 update_term_meta($term_id, 'icon_closed', $category_data['icon_closed']); 187 } 188 if (isset($category_data['icon_open'])) { 189 update_term_meta($term_id, 'icon_open', $category_data['icon_open']); 190 } 191 if (isset($category_data['color'])) { 192 update_term_meta($term_id, 'color', $category_data['color']); 173 193 } 174 194 } … … 176 196 177 197 // Mark migration as complete. 178 update_option( 'inline_context_categories_migrated', true);198 update_option('inline_context_categories_migrated', true); 179 199 } 180 200 ); … … 192 212 array( 193 213 'type' => 'array', 194 'description' => __( 'Post IDs where this note is used', 'inline-context'),214 'description' => __('Post IDs where this note is used', 'inline-context'), 195 215 'single' => true, 196 216 'default' => array(), 197 'sanitize_callback' => function ( $value) {198 if ( ! is_array( $value )) {217 'sanitize_callback' => function ($value) { 218 if (! is_array($value)) { 199 219 return array(); 200 220 } 201 221 // Clean and validate the usage tracking data structure. 202 222 $sanitized = array(); 203 foreach ( $value as $usage_data) {204 if ( is_array( $usage_data ) && isset( $usage_data['post_id'] )) {223 foreach ($value as $usage_data) { 224 if (is_array($usage_data) && isset($usage_data['post_id'])) { 205 225 $sanitized[] = array( 206 'post_id' => absint( $usage_data['post_id']),207 'count' => absint( $usage_data['count'] ?? 1),226 'post_id' => absint($usage_data['post_id']), 227 'count' => absint($usage_data['count'] ?? 1), 208 228 ); 209 229 } … … 217 237 'type' => 'object', 218 238 'properties' => array( 219 'post_id' => array( 'type' => 'integer'),220 'count' => array( 'type' => 'integer'),239 'post_id' => array('type' => 'integer'), 240 'count' => array('type' => 'integer'), 221 241 ), 222 242 ), … … 231 251 array( 232 252 'type' => 'integer', 233 'description' => __( 'Number of times this note is used', 'inline-context'),253 'description' => __('Number of times this note is used', 'inline-context'), 234 254 'single' => true, 235 255 'default' => 0, … … 244 264 array( 245 265 'type' => 'boolean', 246 'description' => __( 'Whether this note is marked as reusable', 'inline-context'),266 'description' => __('Whether this note is marked as reusable', 'inline-context'), 247 267 'single' => true, 248 268 'default' => false, … … 264 284 'rest_prepare_inline_context_note', 265 285 // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed 266 function ( $response, $post, $request) {286 function ($response, $post, $request) { 267 287 $data = $response->get_data(); 268 $data['is_reusable'] = (bool) get_post_meta( $post->ID, 'is_reusable', true);269 $response->set_data( $data);288 $data['is_reusable'] = (bool) get_post_meta($post->ID, 'is_reusable', true); 289 $response->set_data($data); 270 290 return $response; 271 291 }, … … 284 304 'admin_init', 285 305 function () { 286 if ( ! isset( $_GET['inline_context_rebuild'] ) || ! current_user_can( 'manage_options' )) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Admin URL parameter for rebuild action.306 if (! isset($_GET['inline_context_rebuild']) || ! current_user_can('manage_options')) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Admin URL parameter for rebuild action. 287 307 return; 288 308 } … … 298 318 299 319 global $wpdb; 300 foreach ( $all_notes as $note_id) {320 foreach ($all_notes as $note_id) { 301 321 // @codingStandardsIgnoreStart - Direct DB operations intentional for rebuild. 302 322 // Delete from database directly to avoid cache issues. … … 317 337 // @codingStandardsIgnoreEnd 318 338 // Clear the cache for this post. 319 wp_cache_delete( $note_id, 'post_meta');339 wp_cache_delete($note_id, 'post_meta'); 320 340 } // Scan all posts and pages to rebuild usage data. 321 341 $all_posts = get_posts( 322 342 array( 323 'post_type' => array( 'post', 'page'),343 'post_type' => array('post', 'page'), 324 344 'post_status' => 'any', 325 345 'posts_per_page' => -1, … … 329 349 // Build usage data structure: note_id => [['post_id' => X, 'count' => Y], ...]. 330 350 $all_usage_data = array(); 331 foreach ( $all_posts as $post) {351 foreach ($all_posts as $post) { 332 352 // Get note IDs from content and count occurrences. 333 preg_match_all( '/data-note-id="(\d+)"/i', $post->post_content, $matches);334 $notes_raw = ! empty( $matches[1] ) ? array_map( 'intval', $matches[1]) : array();353 preg_match_all('/data-note-id="(\d+)"/i', $post->post_content, $matches); 354 $notes_raw = ! empty($matches[1]) ? array_map('intval', $matches[1]) : array(); 335 355 336 356 // Count occurrences of each note. 337 357 $notes_counts = array(); 338 foreach ( $notes_raw as $note_id) {339 if ( ! isset( $notes_counts[ $note_id ] )) {340 $notes_counts[ $note_id] = 0;341 } 342 $notes_counts[ $note_id]++;358 foreach ($notes_raw as $note_id) { 359 if (! isset($notes_counts[$note_id])) { 360 $notes_counts[$note_id] = 0; 361 } 362 $notes_counts[$note_id]++; 343 363 } 344 364 345 365 // Accumulate usage data for each note. 346 foreach ( $notes_counts as $note_id => $count) {347 if ( ! isset( $all_usage_data[ $note_id ] )) {348 $all_usage_data[ $note_id] = array();349 } 350 351 $all_usage_data[ $note_id][] = array(366 foreach ($notes_counts as $note_id => $count) { 367 if (! isset($all_usage_data[$note_id])) { 368 $all_usage_data[$note_id] = array(); 369 } 370 371 $all_usage_data[$note_id][] = array( 352 372 'post_id' => $post->ID, 353 373 'count' => $count, … … 357 377 358 378 // Now save all the accumulated usage data. 359 foreach ( $all_usage_data as $note_id => $used_in) {360 update_post_meta( $note_id, 'used_in_posts', $used_in);379 foreach ($all_usage_data as $note_id => $used_in) { 380 update_post_meta($note_id, 'used_in_posts', $used_in); 361 381 362 382 // Recalculate total usage count. 363 383 $total_count = 0; 364 foreach ( $used_in as $usage_data) {384 foreach ($used_in as $usage_data) { 365 385 $total_count += $usage_data['count'] ?? 1; 366 386 } 367 update_post_meta( $note_id, 'usage_count', $total_count);387 update_post_meta($note_id, 'usage_count', $total_count); 368 388 } 369 389 … … 375 395 'rebuilt' => '1', 376 396 ), 377 admin_url( 'edit.php')397 admin_url('edit.php') 378 398 ) 379 399 ); … … 390 410 // @codingStandardsIgnoreStart - Checking URL parameters for display-only admin notices. 391 411 // Display rebuild success notice. 392 if ( isset( $_GET['rebuilt'] ) && '1' === $_GET['rebuilt'] && isset( $_GET['post_type'] ) && 'inline_context_note' === $_GET['post_type']) {412 if (isset($_GET['rebuilt']) && '1' === $_GET['rebuilt'] && isset($_GET['post_type']) && 'inline_context_note' === $_GET['post_type']) { 393 413 echo '<div class="notice notice-success is-dismissible">'; 394 echo '<p><strong>' . esc_html__( 'Success!', 'inline-context') . '</strong> ';395 echo esc_html__( 'Usage data has been rebuilt for all inline context notes.', 'inline-context');414 echo '<p><strong>' . esc_html__('Success!', 'inline-context') . '</strong> '; 415 echo esc_html__('Usage data has been rebuilt for all inline context notes.', 'inline-context'); 396 416 echo '</p>'; 397 417 echo '</div>'; 398 418 } 399 419 400 // Display transient admin notices (for post save validations).401 $screen = get_current_screen();402 if ( $screen && isset( $_GET['post'] ) && 'inline_context_note' === $screen->id) {403 $post_id = intval( $_GET['post']);404 $notices = get_transient( 'inline_context_admin_notice_' . $post_id);405 // @codingStandardsIgnoreEnd.406 if ( $notices) {407 foreach ( $notices as $notice) {420 // Display transient admin notices (for post save validations). 421 $screen = get_current_screen(); 422 if ($screen && isset($_GET['post']) && 'inline_context_note' === $screen->id) { 423 $post_id = intval($_GET['post']); 424 $notices = get_transient('inline_context_admin_notice_' . $post_id); 425 // @codingStandardsIgnoreEnd. 426 if ($notices) { 427 foreach ($notices as $notice) { 408 428 $type = 'error' === $notice['type'] ? 'error' : 'warning'; 409 echo '<div class="notice notice-' . esc_attr( $type) . ' is-dismissible">';410 echo '<p>' . esc_html( $notice['message']) . '</p>';429 echo '<div class="notice notice-' . esc_attr($type) . ' is-dismissible">'; 430 echo '<p>' . esc_html($notice['message']) . '</p>'; 411 431 echo '</div>'; 412 432 } 413 delete_transient( 'inline_context_admin_notice_' . $post_id);433 delete_transient('inline_context_admin_notice_' . $post_id); 414 434 } 415 435 } -
inline-context/trunk/readme.txt
r3421558 r3423384 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 2. 3.87 Stable tag: 2.4.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 117 117 118 118 == Screenshots == 119 120 1. Editor popover for adding inline context with category selection 121 2. Modal window for writing an inline context note 122 3. Search interface for inserting reusable notes 123 4. Inline context note on the frontend (default expanded mode) 124 5. Tooltip version of the inline note on the frontend 125 6. Notes Library in the admin area showing usage count and linked posts 119 1. Inline context note link with pill style 120 2. Inline context note link with pill style expanded 121 3. Inline context note link with pill style as tooltip 122 4. Editor popover for adding inline context with category selection 123 5. Modal window for writing an inline context note 124 6. Search interface for inserting reusable notes 125 7. Inline context note on the frontend (default expanded mode) 126 8. Tooltip version of the inline note on the frontend 127 9. Notes Library in the admin area showing usage count and linked posts
Note: See TracChangeset
for help on using the changeset viewer.