Plugin Directory

Changeset 3423384


Ignore:
Timestamp:
12/19/2025 06:17:51 AM (3 weeks ago)
Author:
joop
Message:

Version 2.4.1

Location:
inline-context/trunk
Files:
2 added
3 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • inline-context/trunk/admin-settings.php

    r3405431 r3423384  
    5353    );
    5454
     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
    5599    // Register CSS variables setting.
    56100    register_setting(
     
    85129
    86130    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(
    87138        'inline_context_note_section',
    88139        __( 'Note Appearance', 'inline-context' ),
     
    147198            'inline-context-settings-styling',
    148199            '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',
    149268            array(
    150269                'key'         => $key,
     
    343462
    344463/**
     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 */
     469function 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 */
     480function 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/**
    345486 * Sanitize CSS variables
    346487 *
     
    371512 */
    372513function 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 */
     520function 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>';
    374522}
    375523
     
    443591    if ( ! current_user_can( 'manage_options' ) ) {
    444592        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        );
    445609    }
    446610
     
    525689                                </p>
    526690                            </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">
    532767                    <input type="submit" name="submit" class="button button-primary" value="<?php esc_attr_e( 'Save Changes', 'inline-context' ); ?>">
    533768                </p>
     
    545780                <p class="submit">
    546781                    <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' ); ?>
    547798                </p>
    548799            </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="&times;",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="&times;",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}
    22.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  
    44For major version highlights, see README.md and readme.txt.
    55
    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
    729* Minor fixes, updated documentation and readme.txt, added Dutch translations
    830
  • inline-context/trunk/includes/class-inline-context-frontend.php

    r3405431 r3423384  
    257257            'inlineContextData',
    258258            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 ),
    262265            )
    263266        );
  • inline-context/trunk/includes/class-inline-context-rest-api.php

    r3405431 r3423384  
    1313 */
    1414class Inline_Context_REST_API {
     15
    1516
    1617    /**
  • inline-context/trunk/includes/class-inline-context-utils.php

    r3405431 r3423384  
    108108            'link-focus-border-color' => '#2271b1',
    109109            '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',
    110118            'note-margin-y'           => '8px',
    111119            'note-padding-y'          => '12px',
     
    145153            );
    146154        }
     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
    147181        $css .= '}';
    148182
  • inline-context/trunk/inline-context.php

    r3405639 r3423384  
    11<?php
     2
    23/**
    34 * Plugin Name: Inline Context
    45 * Plugin URI: https://wordpress.org/plugins/inline-context/
    56 * 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.8
     7 * Version: 2.4.1
    78 * Author: Joop Laan
    89 * Author URI: https://profiles.wordpress.org/joop/
     
    1819 */
    1920
    20 defined( 'ABSPATH' ) || exit;
    21 
    22 define( 'INLINE_CONTEXT_VERSION', '2.3.8' );
     21defined('ABSPATH') || exit;
     22
     23define('INLINE_CONTEXT_VERSION', '2.4.1');
    2324
    2425// Load modular classes.
     
    3031require_once __DIR__ . '/includes/class-inline-context-rest-api.php';
    3132require_once __DIR__ . '/includes/class-inline-context-frontend.php';
     33require_once __DIR__ . '/includes/class-inline-context-abilities.php';
    3234
    3335// Load backward compatibility wrapper functions.
     
    3537
    3638// Load admin-specific functionality (function-based, loaded conditionally).
    37 if ( is_admin() ) {
     39if (is_admin()) {
    3840    require_once __DIR__ . '/admin-settings.php';
    3941}
     
    5658
    5759// 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);
    5961$inline_context_deletion->init();
    6062
     
    6769$inline_context_frontend->init();
    6870
     71// Initialize Abilities API integration (WordPress 6.9+).
     72// Hook early to ensure abilities are registered before discovery.
     73add_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
    6983/**
    7084 * Enqueue categories data for block editor
     
    7690        $categories = inline_context_get_categories();
    7791
    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.
    7998        wp_add_inline_script(
    80             'wp-block-editor',
     99            'inline-context-editor',
    81100            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'
    84104            ),
    85105            'before'
     
    96116        add_filter(
    97117            'wp_theme_json_data_default',
    98             function ( $theme_json ) {
     118            function ($theme_json) {
    99119                $plugin_theme_json_path = __DIR__ . '/theme.json';
    100                 if ( file_exists( $plugin_theme_json_path ) ) {
     120                if (file_exists($plugin_theme_json_path)) {
    101121                    // 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);
    105125                    }
    106126                }
     
    118138    function () {
    119139        // Check if migration has already been done.
    120         if ( get_option( 'inline_context_categories_migrated' ) ) {
     140        if (get_option('inline_context_categories_migrated')) {
    121141            return;
    122142        }
    123143
    124144        // 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)) {
    128148            $old_categories = inline_context_get_default_categories();
    129149        }
    130150
    131151        // Create taxonomy terms from old categories.
    132         foreach ( $old_categories as $category_id => $category_data ) {
     152        foreach ($old_categories as $category_id => $category_data) {
    133153            $term_name = $category_data['name'] ?? $category_id;
    134154
    135155            // 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) {
    139159                // Create the term.
    140160                $term = wp_insert_term(
     
    146166                );
    147167
    148                 if ( ! is_wp_error( $term ) ) {
     168                if (! is_wp_error($term)) {
    149169                    $term_id = $term['term_id'];
    150170
    151171                    // 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']);
    160180                    }
    161181                }
     
    163183                // Update existing term meta.
    164184                $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']);
    173193                }
    174194            }
     
    176196
    177197        // Mark migration as complete.
    178         update_option( 'inline_context_categories_migrated', true );
     198        update_option('inline_context_categories_migrated', true);
    179199    }
    180200);
     
    192212            array(
    193213                'type'              => 'array',
    194                 'description'       => __( 'Post IDs where this note is used', 'inline-context' ),
     214                'description'       => __('Post IDs where this note is used', 'inline-context'),
    195215                'single'            => true,
    196216                'default'           => array(),
    197                 'sanitize_callback' => function ( $value ) {
    198                     if ( ! is_array( $value ) ) {
     217                'sanitize_callback' => function ($value) {
     218                    if (! is_array($value)) {
    199219                        return array();
    200220                    }
    201221                    // Clean and validate the usage tracking data structure.
    202222                    $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'])) {
    205225                            $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),
    208228                            );
    209229                        }
     
    217237                            'type'       => 'object',
    218238                            'properties' => array(
    219                                 'post_id' => array( 'type' => 'integer' ),
    220                                 'count'   => array( 'type' => 'integer' ),
     239                                'post_id' => array('type' => 'integer'),
     240                                'count'   => array('type' => 'integer'),
    221241                            ),
    222242                        ),
     
    231251            array(
    232252                'type'              => 'integer',
    233                 'description'       => __( 'Number of times this note is used', 'inline-context' ),
     253                'description'       => __('Number of times this note is used', 'inline-context'),
    234254                'single'            => true,
    235255                'default'           => 0,
     
    244264            array(
    245265                'type'              => 'boolean',
    246                 'description'       => __( 'Whether this note is marked as reusable', 'inline-context' ),
     266                'description'       => __('Whether this note is marked as reusable', 'inline-context'),
    247267                'single'            => true,
    248268                'default'           => false,
     
    264284    'rest_prepare_inline_context_note',
    265285    // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
    266     function ( $response, $post, $request ) {
     286    function ($response, $post, $request) {
    267287        $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);
    270290        return $response;
    271291    },
     
    284304    'admin_init',
    285305    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.
    287307            return;
    288308        }
     
    298318
    299319        global $wpdb;
    300         foreach ( $all_notes as $note_id ) {
     320        foreach ($all_notes as $note_id) {
    301321            // @codingStandardsIgnoreStart - Direct DB operations intentional for rebuild.
    302322            // Delete from database directly to avoid cache issues.
     
    317337            // @codingStandardsIgnoreEnd
    318338            // Clear the cache for this post.
    319             wp_cache_delete( $note_id, 'post_meta' );
     339            wp_cache_delete($note_id, 'post_meta');
    320340        } // Scan all posts and pages to rebuild usage data.
    321341        $all_posts = get_posts(
    322342            array(
    323                 'post_type'      => array( 'post', 'page' ),
     343                'post_type'      => array('post', 'page'),
    324344                'post_status'    => 'any',
    325345                'posts_per_page' => -1,
     
    329349        // Build usage data structure: note_id => [['post_id' => X, 'count' => Y], ...].
    330350        $all_usage_data = array();
    331         foreach ( $all_posts as $post ) {
     351        foreach ($all_posts as $post) {
    332352            // 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();
    335355
    336356            // Count occurrences of each note.
    337357            $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]++;
    343363            }
    344364
    345365            // 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(
    352372                    'post_id' => $post->ID,
    353373                    'count'   => $count,
     
    357377
    358378        // 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);
    361381
    362382            // Recalculate total usage count.
    363383            $total_count = 0;
    364             foreach ( $used_in as $usage_data ) {
     384            foreach ($used_in as $usage_data) {
    365385                $total_count += $usage_data['count'] ?? 1;
    366386            }
    367             update_post_meta( $note_id, 'usage_count', $total_count );
     387            update_post_meta($note_id, 'usage_count', $total_count);
    368388        }
    369389
     
    375395                    'rebuilt'   => '1',
    376396                ),
    377                 admin_url( 'edit.php' )
     397                admin_url('edit.php')
    378398            )
    379399        );
     
    390410        // @codingStandardsIgnoreStart - Checking URL parameters for display-only admin notices.
    391411        // 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']) {
    393413            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');
    396416            echo '</p>';
    397417            echo '</div>';
    398418        }
    399419
    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) {
    408428                    $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>';
    411431                    echo '</div>';
    412432                }
    413                 delete_transient( 'inline_context_admin_notice_' . $post_id );
     433                delete_transient('inline_context_admin_notice_' . $post_id);
    414434            }
    415435        }
  • inline-context/trunk/readme.txt

    r3421558 r3423384  
    55Tested up to: 6.9
    66Requires PHP: 7.4
    7 Stable tag: 2.3.8
     7Stable tag: 2.4.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    117117
    118118== 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
     1191. Inline context note link with pill style
     1202. Inline context note link with pill style expanded
     1213. Inline context note link with pill style as tooltip
     1224. Editor popover for adding inline context with category selection
     1235. Modal window for writing an inline context note
     1246. Search interface for inserting reusable notes
     1257. Inline context note on the frontend (default expanded mode)
     1268. Tooltip version of the inline note on the frontend
     1279. Notes Library in the admin area showing usage count and linked posts
Note: See TracChangeset for help on using the changeset viewer.